স্বয়ংক্রিয় বাক্স প্রসারকারী


16

ভূমিকা

কখনও কখনও, আমার বাক্সগুলিতে কোনও কিছু ফিট করার পক্ষে এটি খুব ছোট। আমি আপনাকে একটি বক্স প্রসারণ করতে হবে! সুতরাং, এই চ্যালেঞ্জের মধ্যে একটি বাক্সকে কী একটি বাক্স বানায়।

 OOOO
O    O
O    O
O    O
 OOOO

বাক্সের কোণগুলি সর্বদা ফাঁকা থাকে। বাক্সটি নিজেই একই চরিত্রের বাইরে তৈরি করা যেতে পারে। এই অক্ষরটি কোনও স্থান ছাড়াই যে কোনও মুদ্রণযোগ্য ASCII অক্ষর হতে পারে । সুতরাং, এই চরিত্রগুলি:

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

উপরের বক্সটির পাশের দৈর্ঘ্য 4, 3 । আপনি ধরে নিতে পারেন যে পাশের দৈর্ঘ্য সর্বদা ইতিবাচক । এর অর্থ হ'ল এটি হ'ল সবচেয়ে ছোট বাক্স:

 #
# #
 #

একটি বাক্স প্রসারিত করার জন্য, আপনাকে প্রতিটি পাশের দৈর্ঘ্য বৃদ্ধি করতে হবে। উপরের উদাহরণ সহ ধাপে ধাপে এর মধ্য দিয়ে চলুন। আমরা প্রথমে বাক্সের উপরের দিকটি গ্রহণ করি যা হ'ল:

 OOOO

আমরা একে একে প্রসারিত করি, তাই আমরা পাই:

 OOOOO

এটি এখন বক্সের উপরের এবং নীচের অংশ। এর পরে, আমরা বাম এবং ডানদিকে পাশাপাশি একই করব:

O
O
O

হয়ে:

O
O
O
O

এখন আমরা বাক্সটিকে পুনরায় সংশ্লেষ করি, যার ফলস্বরূপ:

 OOOOO
O     O
O     O
O     O
O     O
 OOOOO

কাজটি

একটি বাক্স দেওয়া হয়েছে, এটি ১ দ্বারা প্রসারিত করুন multiple বাক্সটি একাধিক লাইনে বা একটি অ্যারেতে দেওয়া যেতে পারে।

পরীক্ষার মামলা

 OOOO          OOOOO
O    O    >   O     O
 OOOO         O     O
               OOOOO

 XXXXXX        XXXXXXX
X      X  >   X       X
X      X      X       X
 XXXXXX       X       X
               XXXXXXX

 ~             ~~
~ ~       >   ~  ~
 ~            ~  ~
               ~~

এটি , তাই সর্বনিম্ন পরিমাণ বাইটের সাথে জমা দেওয়া!


1
বাক্সে এটির আগে একটি নতুন লাইন থাকতে পারে?
রিলে

@ রিলে হ্যাঁ, এটি অনুমোদিত:
আদনান

1
বাক্সটি ফাঁকা জায়গায় প্যাড করা যেতে পারে?
ফাঁস নুন

@ লিক্যনুন হ্যাঁ, আপনি এটি করতে পারেন।
আদনান

উত্তর:


4

ভি , 6 5 বাইট

yêpjÄ

এটি অনলাইন চেষ্টা করুন!

এটি আসলে এটি হওয়া উচিতের চেয়ে বেশি বাইট। এটি হওয়া উচিত ছিল:

äêjÄ

তবে এটি একটি অজানা বাগ আছে। :(

ব্যাখ্যা:

yê     "yank this colum
  p    "paste what we just yanked
   j   "move down to line 2
    Ä  "and duplicate this line

অন্য একজন কী করে?
কনর ও'ব্রায়েন

@ কনরোও ব্রায়ান äহ'ল ডুপ্লিকেট অপারেটর (মূলত "y" এবং "পি" একত্রে একটি বাইটে) তাই äê"সদৃশ কলাম"
ডিজেএমসিএমহেম

11

ভিম, 7 বাইট

♥GYPjYp

যেখানে Control কন্ট্রোল-ভি।

           The cursor starts on the first non-whitespace character of the first line.
♥G         Enter visual block mode and go to bottom of document.
  YP       Duplicate this column.
    j      Move down to the second line of the file.
     Yp    Duplicate this line.

এখানে চিত্র বর্ণনা লিখুন


YPধারাবাহিকতার জন্য উভয় সময় কেন ব্যবহার করবেন না ?
নীল

pঅ্যানিমেশনটি রেকর্ড করার সময় আমি দুর্ঘটনাক্রমে আঘাত করেছি , সুতরাং উত্তরটি প্রতিলিপি করার সময় আমি এটির সাথে আটকে গেলাম। এটা কোন ব্যাপার? >: _>;
লিন

আমি কেবল অসঙ্গতিটি বিজোড় পেয়েছি তবে আপনার ব্যাখ্যাটি আমার পছন্দ হয়েছে।
নীল

এটি ঠিক আমার ভী উত্তর হিসাবে একই জিনিস, শুধু যে আমি এক বাইট ম্যাপিং তৈরি করতে ঘটেছে <C-v> Gএবং YP। এটা আমার ভাষা সস্তা মনে করে তোলে। : /
ডিজেএমসিএমহেম

এইচএম, কন্ট্রোল-ভি আমার ফোনে হৃদয় হিসাবে প্রদর্শিত হচ্ছে ... ❤
বিটা ডেকে

6

জাভাস্ক্রিপ্ট (ES6), 57 53 52 বাইট

s=>s.replace(/^.(.)/gm,s="$&$1").replace(/(\n.*)/,s)

ব্যাখ্যা: প্রথম রেজিএক্সপেক্স দ্বিতীয় কলামটিকে নকল করে এবং দ্বিতীয় রেজিএক্সপেক্স দ্বিতীয় সারিতে সদৃশ হয়, এইভাবে বাক্সটিকে পছন্দসই আকারে বিস্তৃত করে। সম্পাদনা করুন: মার্টিনেন্ডার to এর জন্য 4 টি বাইট সংরক্ষণ করা ♦


6

পাইথন, 49 42 বাইট

নামবিহীন ল্যাম্বদা:

Xnor থেকে -7

lambda s:[t[:2]+t[1:]for t in s[:2]+s[1:]]

পূর্ববর্তী সংস্করণ:

D=lambda s:s[:2]+s[1:]
lambda s:D(list(map(D,s)))

ডি একটি ক্রিয়াকলাপ যা ক্রমের দ্বিতীয় আইটেমটিকে নকল করে।


1
ফাংশন পুনরায় ব্যবহার করার ব্যাপারে চালাক, কিন্তু এটা শুধু কোড পুনরাবৃত্তি খাটো বলে মনে হয়: lambda L:[s[:2]+s[1:]for s in L[:2]+L[1:]]
xnor

পূর্ববর্তী সংস্করণটির জন্য সাইড নোট: আমি মনে করি map(D,D(s))পরিবর্তে 43 দেবে
Sp3000

5

রেটিনা , 20 বাইট

বাইট গণনাটি আইএসও 8859-1 এনকোডিং ধরেছে।

1`¶
¶$%'¶
%2=`.
$&$&

এটি অনলাইন চেষ্টা করুন! (বেশ কয়েকটি অতিরিক্ত লাইন রয়েছে যা পরীক্ষার স্যুট সক্ষম করে যেখানে পরীক্ষার কেসগুলি দুটি লাইনফিড দ্বারা পৃথক করা হয়))

ব্যাখ্যা

1`¶
¶$%'¶

1এমন একটি সীমা যা রেটিনাটিকে কেবলমাত্র প্রথম ম্যাচের সন্ধানে বিকল্প প্রয়োগ করতে সীমাবদ্ধ করে। একটি একক লাইনফিডের সাথে মেলে, তাই আমাদের কেবল প্রথম লাইনের শেষে লাইনফিডটি প্রতিস্থাপনের বিষয়টি বিবেচনা করা উচিত। এটি এর সাথে প্রতিস্থাপন করা হয় ¶$%'¶, যেখানে $%'ম্যাচের পরে সম্পূর্ণ লাইন সন্নিবেশ করা হয় (একটি রেটিনা-নির্দিষ্ট প্রতিস্থাপন উপাদান)। সুতরাং, এটি দ্বিতীয় লাইনের সদৃশ হয়।

%2=`.
$&$&

এখানে, %প্রতি-লাইন মোড, সুতরাং প্রতিটি লাইন পৃথকভাবে প্রক্রিয়া করা হয়, এবং লাইনগুলি পরে আবার যুক্ত হয়। 2=এছাড়াও একটি সীমা। এটির অর্থ "বিকল্পটি কেবলমাত্র দ্বিতীয় ম্যাচে প্রয়োগ করুন"। ম্যাচটি নিজেই একটি একক অক্ষর এবং প্রতিস্থাপন এটি নকল করে। অতএব, এই পর্যায়ে দ্বিতীয় কলামটি নকল করে।


5

হাস্কেল, 24 বাইট

f(a:b:c)=a:b:b:c
f.map f

দ্বিতীয় সারি এবং কলামটি নকল করার রুটও-এর ধারণা ব্যবহার করে । map fপ্রতিটি সারির এই আছে, এবং f.তারপর সারি এই আছে।


4

পাওয়ারশেল ভি 2 +, 57 53 52 বাইট

param($n)($n-replace'^.(.)','$&$1')[0,1+1..$n.count]

নীলের জাভাস্ক্রিপ্ট উত্তরের সাথে সামান্য মিল । প্রথম প্রতিস্থাপনটি রেখার শুরু এবং পরবর্তী দুটি অক্ষরের সাথে মেলে এবং তাদের প্রথম অক্ষর এবং দ্বিতীয়-চরিত্রের সাথে প্রতিস্থাপন করে - দুবার। দ্বিতীয় প্রতিস্থাপনের পরিবর্তে, দ্বিতীয় রেখার সদৃশ করার জন্য অ্যারে-ইনডেক্সিংয়ের জন্য এটি অদলবদল হয়। স্ট্রিংগুলির অ্যারে হিসাবে ইনপুট নেয়। ফলস্বরূপ অ্যারে স্লাইসগুলি পাইপলাইনে রেখে যায় এবং মুদ্রণ জড়িত।

মার্টিনকে ধন্যবাদ 4 বাইট সংরক্ষণ করা।

কিছু উদাহরণ:

PS C:\Tools\Scripts\golfing> .\automatic-box-expander.ps1 ' oooo ','o    o',' oooo '
 ooooo 
o     o
o     o
 ooooo 

PS C:\Tools\Scripts\golfing> .\automatic-box-expander.ps1 ' # ','# #',' # '
 ## 
#  #
#  #
 ## 

2
@ মার্টিন ইন্দ্রা হ্যাঁ, ধন্যবাদ, হে ওয়াইজ রেজেক্স-সেনসি।
অ্যাডমবর্কবর্ক

4

ব্র্যাচল্যাগ , 28 26 বাইট

2 বাইট ধন্যবাদ ফ্যাটালাইজ করার জন্য।

{bB,?~c[A:C]hl2,A:Bc.}:1a.

এটি অনলাইন চেষ্টা করুন!



@ ফ্যাটালাইজ আমি কখনই জানতাম না যে আপনি এটি সেভাবেই করতে পারেন ...
লিকি নুন

3

এমএটিএল , 12 বাইট

tZy"@:2hSY)!

ইনপুটটি 2D চর অ্যারে, সারি বিভাজক হিসাবে সেমিকোলন সহ। উদাহরণস্বরূপ, প্রথম পরীক্ষার ক্ষেত্রে ইনপুট রয়েছে

[' OOOO ';'O    O';' OOOO ']

এটি অনলাইন চেষ্টা করুন! পরীক্ষার মামলা 1 , 2 , 3

ব্যাখ্যা

কোড নিম্নলিখিতটি দু'বার করে: অ্যারের দ্বিতীয় সারিতে পুনরাবৃত্তি করুন এবং স্থানান্তর করুন।

একটি m× nঅ্যারের দ্বিতীয় সারির পুনরাবৃত্তি করতে , ভেক্টরটি [1 2 2 3 ... m]সারি সূচক হিসাবে ব্যবহৃত হয়। এই ভেক্টরটি নিম্নরূপ উত্পাদিত হয়েছে: পরিসর [1 2 3 ... m], অন্য সংযুক্ত করুন 2, সাজান।

t       % Take input implicitly. Duplicate
Zy      % Size of input as a two-element array [r, c]
"       % For each of r and c
  @     %   Push r in first iteration (or c in the second)
  :     %   Generate range [1 2 3 ... r] (or [1 2 3 ... c])
  2hS   %   Append another 2 and sort
  Y)    %   Apply as row index
  !     %   Transpose
        % End for. Display implicitly


2

এসইডি 69 19 (14 -1 for -r) 15

s/.(.)/&\1/;2p   

1
তুমি কি করতে পার না /.\(.\)/\0\1;2p?
নীল

@ নীল আমি এটির জন্য সমস্ত দিকে তাকিয়েছি 2p, আমি অনুভব করেছি যে এটি করার একটি উপায় আছে তবে আমি এটি খুঁজে পেলাম না। ধন্যবাদ!
রিলে

আর-ফ্লাইটের জন্য আপনি যখন 1 বাইট যুক্ত করেন ততক্ষণ 3-বাইট সাশ্রয় না করে ততক্ষণ অংশটির প্রয়োজন হয় না। এছাড়াও, যেহেতু আপনি কোডটির প্রথম সংস্করণ সম্পাদনা করেছেন, তাই শেষে ব্যাখ্যাটি এখন বৈধ নয়।
শৈশুমারা

@ নীল যখন আমার \0অনুভূতিটি দেখেছিল তখন আমার চোখ বিশ্বাস করতে পারল না , যেহেতু তারা ১ থেকে শুরু করেছে The জিএনইউ সিডের অনলাইন ম্যানুয়াল এতে কিছুই বলে না। তবে, ব্যবহার &করা আমি সমতুল্য এবং খাটো মনে করি।
শৈশুমারা

@ সেশৌমারা আহ, সেই রেজিপ এক্স সংস্করণ সূক্ষ্মতা ... কোনটি \0তখন ব্যবহার করে ?
নিল

1

সিজেম , 14 বাইট

q~{~\_@]z}2*N*

আমার এমএটিএল উত্তরের অনুরূপ , তবে দ্বিতীয়টির পরিবর্তে দ্বিতীয়-শেষ সারিতে পুনরাবৃত্তি করে।

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

q                e# Read input
 ~               e# Interpret as an array
  {      }2*     e# Do this twice
   ~             e# Dump array contents onto the stack
    \            e# Swap top two elements
     _           e# Duplicate
      @          e# Rotate
       ]         e# Pack into an array again
        z        e# Zip
            N*   e# Join by newlines. Implicitly display

1

কে, 15 বাইট

2{+x@&1+1=!#x}/

অক্ষরের ম্যাট্রিক্স হিসাবে ইনপুট নেয়:

  b: (" OOOO ";"O    O";" OOOO ")
(" OOOO "
 "O    O"
 " OOOO ")

একটি ফাংশন দু'বার প্রয়োগ করুন ( 2{…}/যা 0 থেকে শুরু করে রেঞ্জের 1 ( ) সমান অবস্থানের তালিকার 1 টি) এর বর্ধিত রান-দৈর্ঘ্যের ডিকোড ( ) দ্বারা +ইনডেক্সড ডান আর্গুমেন্টের ট্রান্সপোজ ( ) দেয় gives ( ) সঠিক আর্গুমেন্টের বাইরের মাত্রার আকার (x@&1+1=!#x )।

ধাপে ধাপে,

  #b
3
  !#b
0 1 2
  1=!#b
0 1 0
  1+1=!#b
1 2 1
  &1+1=!#b
0 1 1 2
  b@&1+1=!#b
(" OOOO "
 "O    O"
 "O    O"
 " OOOO ")
  +b@&1+1=!#b
(" OO "
 "O  O"
 "O  O"
 "O  O"
 "O  O"
 " OO ")
  2{+x@&1+1=!#x}/b
(" OOOOO "
 "O     O"
 "O     O"
 " OOOOO ")

ওকে দিয়ে এখানে চেষ্টা করে দেখুন ।


1

এপিএল, 17 15 বাইট

{⍉⍵⌿⍨1+2=⍳≢⍵}⍣2

টেস্ট:

      smallbox largebox
┌───┬──────┐
│ # │ OOOO │
│# #│O    O│
│ # │O    O│
│   │O    O│
│   │ OOOO │
└───┴──────┘
      {⍉⍵⌿⍨1+2=⍳≢⍵}⍣2 ¨ smallbox largebox
┌────┬───────┐
│ ## │ OOOOO │
│#  #│O     O│
│#  #│O     O│
│ ## │O     O│
│    │O     O│
│    │ OOOOO │
└────┴───────┘

ব্যাখ্যা:

             ⍣2   run the following function 2 times:
{           }     stretch the box vertically and transpose
         ⍳≢⍵      indices of rows of box
       2=         bit-vector marking the 2nd row
  ⍵/⍨1+           replicate the 2nd row twice, all other rows once
 ⍉                transpose

এপিএল প্রতীক মোনাডিক mat ম্যাট্রিক্স ট্রান্সপোজ, যা 90 ডিগ্রি ঘোরার মতো নয় as
জন

1
@ জন: অবশ্যই। আমি যা ভাবি তার চেয়ে বেশি ক্লান্ত হয়ে পড়েছি। আসলে 90 ডিগ্রি ঘোরানো হবে ⌽⍉বা ⊖⍉, তবে এক্ষেত্রে এটি কোনও ব্যাপার নয়।
মেরিনাস

0

লিস্টশার্প , 326 বাইট

STRG a=READ[<here>+"\\a.txt"]
ROWS p=ROWSPLIT a BY ["\r\n"]
ROWS p=GETLINES p [1 TO p LENGTH-1]
ROWS p=p+p[1]+p[0]
STRG o=p[0]
ROWS y=EXTRACT COLLUM[2] FROM p SPLIT BY [""]
ROWS x=EXTRACT COLLUM[3] FROM p SPLIT BY [""]
[FOREACH NUMB IN 1 TO o LENGTH-1 AS i]
ROWS m=COMBINE[m,x] WITH [""]
ROWS m=COMBINE[y,m,y] WITH [""]
SHOW=m

আমার অবশ্যই ফাংশনগুলির বাসা বাঁধতে হবে, তবে এটি খুব ভালভাবে কাজ করে

আপনি যদি ব্যাখ্যা চান মন্তব্য


0

জাভাস্ক্রিপ্ট, 160 146 141 বাইট

s=>{a=s[1];r="";l=s.split("\n");m=l.length;n=l[0].length;for(i=0;i<=m;i++){for(j=0;j<=n;j++)r+=!(i%m)&&j%n||i%m&&!(j%n)?a:" ";r+="\n"}return r}

0

ডায়ালগ এপিএল , 14 বাইট

(1 2,1↓⍳)¨∘⍴⌷⊢

(

1 2, {1, 2} এ সংশোধন করা হয়েছে

1↓ একটি উপাদান থেকে বাদ পড়েছে

সূচকগুলি

প্রতিটি

এর

{সারি-গণনা, কলাম-গণনা

ইনডেক্স

যুক্তি

যেমন

 XX
X  X
 XX

সূচকগুলি আমরা খুঁজে পাই; সারিগুলির জন্য {1, 2, 3, এবং কলামগুলির জন্য {1, 2, 3, 4।। এখন আমরা elements 2, 3} এবং {2, 3, 4 get পেতে প্রাথমিক উপাদানগুলি ছেড়ে দিই এবং তারপরে {1, 2, 2, 3} এবং {1, 2, 2 প্রদান করে {1, 2 with দিয়ে প্রিপেন্ড করি 3, 4} অবশেষে, আমরা এক সাথে সারি 2 এবং কলাম 2 দ্বিগুণ করে সারি এবং কলামগুলি নির্বাচন করতে এটি ব্যবহার করি।

অনলাইনে চেষ্টা করুন!


0

রুবি, 46 বাইট

->a{a.map{|r|r.insert(2,r[1])}.insert(2,a[1])}

খুব সোজা সমাধান, লাইনগুলির অ্যারের হিসাবে ইনপুট গ্রহণ করা। আমি সদৃশ insertগুলি পছন্দ করি না , তাই এটি গল্ফ চেষ্টা করবে।


0

সি #, 127 124 বাইট

s=>{int n=s.Count-1,i=0;s[0]=s[n]=s[0].Insert(1,s[0][1]+"");s.Insert(1,s[1]);for(;i++<n;)s[i]=s[i].Insert(1," ");return s;};

সংকলন a Func<List<string>, List<string>>

ফর্ম্যাট সংস্করণ:

s =>
{
    int n = s.Count - 1, i = 0;

    s[0] = s[n] = s[0].Insert(1, s[0][1] + "");

    s.Insert(1, s[1]);

    for (; i++ < n;)
        s[i] = s[i].Insert(1, " ");

    return s;
};
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.