পাঠ্যের তির্যক রেখা আঁকুন


46

শব্দের তালিকার একটি ইনপুট দেওয়া হয়, বর্ণগুলি তাদের বর্ণগুলি দিয়ে তির্যকভাবে সাজানো হয়:

p
 r
  o
p  g
 u  r
  z  a
a  z  m
 n  l  m
  d  e  i
c     s  n
 o        g
  d
g  e
 o
  l
   f

(উপরেরটি ইনপুটটির জন্য আউটপুট হওয়া উচিত programming puzzles and code golf))

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

ইনপুটটি শব্দের একক স্ট্রিং হিসাবে প্রদান করা যেতে পারে, ঠিক এক স্থান দ্বারা পৃথক করা, বা শব্দের তালিকা / অ্যারে। শব্দগুলি কেবল ছোট হাতের অক্ষর দ্বারা রচিত a-zহবে এবং সর্বদা কমপক্ষে একটি অক্ষর দীর্ঘ হবে।

আউটপুটটি একটি একক স্ট্রিং, রেখার একটি অ্যারে বা অক্ষরের অ্যারের অ্যারে হতে পারে। একক পেছনের নতুন লাইন ব্যতীত শীর্ষস্থানীয় বা পিছনের সাদা অংশের অনুমতি নেই।

আরও পরীক্ষার মামলা:

a bcd efgh i j

a


b
 c
  d
e
 f
  g
i  h


j

x

x

verylongword short

v
 e
  r
s  y
 h  l
  o  o
   r  n
    t  g
        w
         o
          r
           d

যেহেতু এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জিতবে!


আমার মনে হয় 5 মিনিটের মধ্যে আমার এটির জন্য পাইথন প্রোগ্রাম তৈরি করতে সক্ষম হওয়া উচিত, তবে এটি সর্বদা ব্যর্থ হয় বলে মনে হয় ...; _;
হাইপারনিউটারিনো

বাহ, দেখে মনে হচ্ছে অনেকগুলি চ্যালেঞ্জ আপাতদৃষ্টিতে টার্টল্ডের জন্য ডিজাইন করা হয়েছে
ধ্বংসাত্মক লেবু

টার্মিনাল অব্যাহতি কোড অনুমোদিত? :)
ক্রোমিয়াম

উত্তর:


17

ভিম, 85, 76, 66 , 52 কীস্ট্রোক / বাইট

আমি যখন প্রথম এই চ্যালেঞ্জটির দিকে চেয়েছিলাম তখন আমি ভেবেছিলাম "এটি ভিমের জন্য উপযুক্ত!" এবং তারপরে যখন আমি চেষ্টা করেছিলাম তখন সব কিছু ভুল হয়ে গেছে। এটি এখানে, এটি অদৃশ্য হকি গৌরব:

:se ve=all|s/ /\r\r\r/g
qqGo<esc>?\<.\S
lDjP@qq@qG?.
jdG

অনলাইনে চেষ্টা করে দেখুন, (বেশিরভাগ) পিছনের সামঞ্জস্যপূর্ণ ভি ইন্টারপ্লেটারকে ধন্যবাদ।

ব্যাখ্যা:

প্রথমে আমি ভেবেছিলাম আমি খুব সুন্দর এই 37 বাইট সংস্করণটি করতে পারি:

:se ve=all
qq:g/\S\S/norm ^lDjP
@qq@q

দুর্ভাগ্যক্রমে, এটি এত সহজ নয়। আসুন একে একে লাইন ধরে রাখুন:

:se ve=all

এটি 'ভার্চুয়াল সম্পাদনা' নামে একটি বৈশিষ্ট্য সক্ষম করে। এটি কার্সারটিকে এমন কলামগুলিতে সরাতে দেয় যা এখনও বিদ্যমান নেই। এই উত্তরটি ছাড়া এটি মূলত অসম্ভব।

এখন আমাদের শব্দগুলি বিভিন্ন লাইনে আলাদা করতে হবে। সুতরাং আমরা প্রতিটি স্থান 3 টি নতুন লাইনের সাথে প্রতিস্থাপন করব। যেহেতু এটি একটি প্রাক্তন কমান্ড তাই আমরা :se ve=allএকটি বার দিয়ে দুটি পৃথক করে আমাদের শেষ প্রাক্তন কমান্ডের সাথে এক সাথে এটি পরিচালনা করতে পারি ।

|s/ /\r\r\r/g

এখন বাফারটি এর মতো দেখাচ্ছে:

Programming


Puzzles


and


code-golf

এখানেই মজা শুরু হয়। আমরা এর সাথে প্রচলিত পুনরাবৃত্ত ম্যাক্রো সেট আপ করেছি: qqএবং তারপরে এটিকে কল করুন:

G               " Move to the last line
 o<esc>         " Append an extra newline

?               " Search backwards for
 \<.            " Any character at the beginning of a word
    \S          " Followed by a non-space character
l               " Move one character to the right
 D              " Delete eveything until the end of this line
  j             " Move down one line
   P            " Paste what we just deleted

তারপরে আমরা এর সাথে পুনরাবৃত্ত ম্যাক্রো শেষ করি @qq@q। এই মুহুর্তে, আমাদের সমস্ত ত্রিভুজ রয়েছে, আমাদের কেবল একটু পরিষ্কার করতে হবে।

G                   " Move to the last line
 ?.                 " Search backwards for any character
j                   " Move down one line
 dG                 " Delete until the end of the buffer

বাহ, জাভাস্ক্রিপ্ট (বর্তমানে) ভিমের চেয়ে কম orter আজকাল এটি বেশ বিরল ঘটনা ...
ETH প্রোডাকশন

পুনঃটুইট :)
ডিজেএমসিএমহেম

6

টার্টলিড , 28 26 বাইট

ওহ আমার, আমি গল্ফিংয়ের জন্য বিশেষভাবে ডিজাইন করা কোনও ভাষায় মারতে দেখছি। এটি একটি মহান দিন.

!_4[*.[ rd+.]ul[ ul]r;_+]_

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

ব্যাখ্যা

(লেখার অর্থ গ্রিডে ঘরে লেখার জন্য, পয়েন্ট পয়েন্ট বলতে বোঝায় ইনপুটটিতে চরটি পয়েন্টারটি নির্দেশ করে)

!                         Take string input into variable
 _                        Normally conditional, with >1 input (there will be), write ' '
  4                       set register to 4
   [*                   ] until the current cell is *
     .                    Write pointed char, initially first char
      [     ]             Until space is written on cell
        rd+.              move right, down, string pointer++, write pointed char
             ul[ ul]      Move back up to the top of the word
                    r;    Move right, down 4 (because this is register value)
                      _+  write * if end of input, else ' ', increment string pointer
                        _ will always write ' ', since it will always point at start char

স্থান নোট

ইনপুটটিরও পিছনের স্থান প্রয়োজন। অজগর হিসাবে একটি তালিকা নিতে পারে তা দেখে এটি অনেকটা টার্টলিয়ডের একটি তালিকা নেওয়ার মতো


5

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

c!t&n:q3_*ts_b+5M4$XdZ!cZ{Zv

ইনপুটটি স্ট্রিংগুলির একটি সেল অ্যারে, masচ্ছিক বিভাজক হিসাবে কমা সহ:

{'programming' 'puzzles' 'and' 'code' 'golf'}

অথবা

{'programming', 'puzzles', 'and', 'code', 'golf'}

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন: 1 , 2 , 3 , 4

ব্যাখ্যা

একটি উদাহরণ হিসাবে নিম্নলিখিত ইনপুট বিবেচনা করুন:

{'aaaa' 'bb' 'ccc'}

%কোডের যে কোনও সময়ে মন্তব্য প্রতীক .োকানো আপনি আংশিক ফলাফল (স্ট্যাক সামগ্রী) দেখতে পারেন । উদাহরণস্বরূপ, চতুর্থ ফাংশন ( ) এর পরে স্ট্যাকের সামগ্রীগুলি দেখুন&n

c        % Input cell array of strings implicitly. Convert to 2D char array,
         % right-padding with spaces
         % STACK: ['aaaa'; 'bb  '; 'ccc']
!        % Transpose
         % STACK: ['abc'
                   'abc'
                   'a c'
                   'a  ']
t        % Duplicate
         % STACK: ['abc'
                   'abc'
                   'a c'
                   'a  '],
                  ['abc'
                   'abc'
                   'a c'
                   'a  '],
&n       % Number of rows and of columns
         % STACK: ['abc'
                   'abc'
                   'a c'
                   'a  '], 4, 3
:q       % Range, subtract 1
         % STACK: ['abc'
                   'abc'
                   'a c'
                   'a  '], 4, [0 1 2]
3_*      % Multiply by -3
         % STACK: ['abc'
                   'abc'
                   'a c'
                   'a  '], 4, [0 -3 -6]
ts_      % Duplicate, sum, negate
         % STACK: ['abc'
                   'abc'
                   'a c'
                   'a  '], 4, [0 -3 -6], 9
b        % Bubble up in stack
         % STACK: ['abc'
                   'abc'
                   'a c'
                   'a  '], [0 -3 -6], 9, 4
+        % Add
         % STACK: ['abc'
                   'abc'
                   'a c'
                   'a  '], [0 -3 -6], 13
5M       % Push second input of last function again
         % STACK: ['abc'
                   'abc'
                   'a c'
                   'a  '], [0 -3 -6], 13, 4
4$Xd     % Buld numerical sparse matrix from the above four arguments. The
         % columns of the first input argument will be the diagonals of the
         % result, with indices given bu the second input (negative is below
         % main diagonal). The matrix size is the third and fourth arguments
         % STACK: [97  0  0  0
                    0 97  0  0
                    0  0 97  0
                   98  0  0 97
                    0 98  0  0
                    0  0 32  0
                   99  0  0 32
                    0 99  0  0
                    0  0 99  0
                    0  0  0 32
                    0  0  0  0
                    0  0  0  0
                    0  0  0  0]
Z!c      % Convert from sparse to full, and then to char. Character 0 is
         % displayed as space
         % STACK: ['a   '
                   ' a  '
                   '  a '
                   'b  a'
                   ' b  '
                   '    '
                   'c   '
                   ' c  '
                   '  c '
                   '    '
                   '    '
                   '    '
                   '    ']
Z{       % Split into cell array, with each row in a cell
         % STACK: {'a   ', ' a  ', '  a ', 'b  a', ' b  ', '    ', 'c   ', ' c  ', '  c ', '   ', '   ', '   ', '   '}
Zv       % Deblank: remove trailing space from each string. Implicitly display,
         % each string on a different line. Empty strings do not generate
         % a newline
         % STACK: {'a   ', ' a', '  a', 'b  a', ' b', '', 'c', ' c', '  c', '', '', '', ''}

4

জাভাস্ক্রিপ্ট (ES6), 118 109 84 বাইট

শব্দের একটি অ্যারে হিসাবে ইনপুট নেয়। অক্ষরের অ্যারেগুলির একটি অ্যারে প্রদান করে।

s=>s.map((w,y)=>[...w].map((c,x)=>(a[p=y*3+x]=a[p]||Array(x).fill(' '))[x]=c),a=[])&&a

বিকল্প সংস্করণ, 109 বাইট

একটি স্ট্রিং প্রদান করে।


2

কমন লিস্প, 673 668 597 বাইট

ভয়ানক সমাধান, আমি জানি। কিছুটা ঘুমানোর পরে আমি সম্ভবত এটি আরও সম্পাদনা করব।

(defun f(&rest z)(let((l)(a 0)(s)(o)(b)(c 0))(loop(setf b(length l))(setf l"")(loop for w in z for i from 0 do(if(>(+(length w)(* i 3))c)(setf c(+(length w)(* i 3))))(setf s(+(* i -3)a))(when(and(>= s 0)(< s(length w)))(setf o(format nil"~v@{~a~:*~}"s" "))(if(and(>=(- s 3)0)(not(equal i(-(length z)1))))(setf o(subseq o(- s 2))))(setf l(concatenate'string o(string(char w s))l)))(when(>= s(length w))(setf l(concatenate'string"   "l))))(if(<=(length l)b)(setf l(concatenate'string(format nil"~v@{~a~:*~}"(- b(length l)-1)" ")l)))(print(string-right-trim" "l))(if(>= b c)(return))(setf a(1+ a)))))

ব্যবহার:

* (f "ppcg" "is" "pretty" "ok")

"p" 
" p" 
"  c" 
"i  g" 
" s" 
"" 
"p" 
" r" 
"  e" 
"o  t" 
" k  t" 
"     y" 
""
NIL

এটি প্রদত্ত তালিকার প্রতিটি শব্দের উপরে লুপ করে এবং বর্তমান লাইনে উপযুক্ত অক্ষর যুক্ত করে। আমার সাবপার ব্যবহারের দ্বারা উপযুক্ত প্যাডিং সরবরাহ করা হয় format

দ্রষ্টব্য: আমি কমন লিস্পে নতুন, তবে আমি বুঝতে পারি যে এটি প্রচুর উন্নতি করতে পারে।


2
> :( "ppcg ... ঠিক আছে" !?
ধ্বংসাত্মক লেবু

2

সি #, 336 বাইট:

Golfed:

string D(string[]s){int x=0,y=0,r=0,q=2*(s.Max().Length+s.Length)+1;var a=new char[q, q];for(int i=0;i<s.Length;i++){y=r;for(int j=0;j<s[i].Length;j++){a[y,x]=s[i][j];x+=1;y+=1;}x=0;r+=3;}var o="";for(x=0;x<q;x++){var t="";for(y=0;y<q;y++)t+=a[x,y];o+=t==string.Join("",Enumerable.Repeat('\0',q))?"":(t.TrimEnd('\0')+"\r\n");}return o;}

Ungolfed:

public string D(string[] s)
{
  int x = 0, y = 0, r = 0, q = 2 * (s.Max().Length + s.Length) + 1;
  var a = new char[q, q];
  for (int i = 0; i < s.Length; i++)
  {
    y = r;
    for (int j = 0; j < s[i].Length; j++)
    {
      a[y, x] = s[i][j];
      x += 1;
      y += 1;
    }
    x = 0;
    r +=3;
  }
  var o = "";
  for (x = 0; x < q; x++)
  {
    var t = "";
    for (y = 0; y < q; y++)
      t += a[x, y];
    o += t == string.Join("", Enumerable.Repeat('\0', q)) ? "" : (t.TrimEnd('\0') + "\r\n");
  }
  return o;
}

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

  var codeGolf = new DrawDiagonalLinesOfText();
  Console.WriteLine(codeGolf.E(new string[] { "programming", "puzzles", "and", "code", "golf" }));
  Console.WriteLine(codeGolf.E(new string[] { "a", "bcd", "efgh", "i", "j" }));
  Console.WriteLine(codeGolf.E(new string[] { "verylongword", "short" }));

p
 r
  o
p  g
 u  r
  z  a
a  z  m
 n  l  m
  d  e  i
c     s  n
 o        g
  d
g  e
 o
  l
   f


a
b
 c
  d
e
 f
  g
i  h
j


v
 e
  r
s  y
 h  l
  o  o
   r  n
    t  g
        w
         o
          r
           d

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

@ ডুরকনব উফ, দুঃখিত ... স্থির, কেবল আমার জন্য 2 বাইট ব্যয় :)
পিট আর্দেন

1
একটি কম্পাইল Func<string[], string>করুন এবং 297 বাইট জন্য বিভিন্ন অন্যান্য পরিবর্তন s=>{int i=0,x=0,y=0,r=0,l=s.Length,q=2*(s.Max().Length+l)+1,j;var a=new char[q,q];for(;i<l;i++){y=r;for(j=0;j<s[i].Length;)a[y++,x++]=s[i][j++];x=0;r+=3;}var o="";for(;x<q;x++){var t="";for(y=0;y<q;)t+=a[x,y++];o+=t==string.Join("",Enumerable.Repeat('\0',q))?"":(t.TrimEnd('\0')+"\n");}return o;};তবে আপনি 18 বাইট যোগ করতে হবেusing System.Linq;
TheLethalCoder

@ দ্য লেথলকোডার ধন্যবাদ, তবে আমি সত্যিই আপনার সম্পূর্ণ সমাধানটি নিতে চাই না :)
পিট আর্ডেন

এটা তোলে খনি তার পুলিশের নয় আমি শুধু কাপড় একদল মুখ golfed অর্থাত thwe চলন্ত iএবং jint- এ ঘোষণা করতে একেবারে শীর্ষে থাকা এবং কিছু চলন্ত ++তাই তারা পরিবর্তনশীল শেষ ব্যবহারের উপর ব্যবহার করা হয়
TheLethalCoder

2

পাইথন 2, 146 বাইট

s=input()
k=max(map(len,s))
a=[k*[' ']for x in range(k+len(s)*3+3)]
for x in range(len(s)):
 for y in range(len(s[x])):a[x*3+y][y]=s[x][y]
print a

নোট: গত দুই লাইনের জন্য indentations হয় <space>এবং <tab>যা এক বাইট সংরক্ষণ যেহেতু আমি ডাবল ইন্ডেন্ট প্রয়োজন হবে না।

ইনপুটটি এর মতো স্ট্রিংগুলির অ্যারে হিসাবে প্রবেশ করতে হবে: ["hello", "world"]বা ['hello', 'world']। আউটপুট হ'ল অক্ষরের অ্যারে is

এটি করার আরও ভাল উপায় সম্ভবত আছে ...

সম্পাদনা করুন ডোরকনবকে ধন্যবাদ অনুপস্থিত নিকটবর্তী স্কয়ার বন্ধনীটি দেখানোর জন্য। আমি এটি *k...তৃতীয় লাইনে রেখেছি ।


তৃতীয় লাইনে আপনার কোডটিতে একটি বাক্য গঠন ত্রুটি রয়েছে; দুটি উন্মুক্ত বন্ধনী আছে তবে একটি মাত্র বন্ধনী। তবে আমি এটি ঠিক করেছি (হয় অতিরিক্ত ক্লোজিং বন্ধনী যুক্ত করে বা অতিরিক্ত খোলার বন্ধনীটি সরিয়ে দিয়ে), প্রোগ্রামটি চালানোর সময় একটি ত্রুটি দেয়।
ডোরকনবব

এটি এখন লাইনগুলির শেষ প্রান্তে এবং আউটপুটটির শেষে হোয়াইটস্পেসের আউটপুট প্রদর্শিত হবে যা চ্যালেঞ্জের নির্দিষ্টকরণের দ্বারা অনুমোদিত নয়।
ডুরকনব


ধন্যবাদ আপনি কি আমার সমস্ত উত্তর দিয়ে যাচ্ছেন এবং গল্ফ করছেন? : পি
হাইপারনিউট্রিনো

1

গণিত, 146 বাইট

P=PadRight;T=Transpose;R=Riffle;Select[Rest@T@P@MapIndexed[""~Table~#2~Join~#1&,T@P@R[Characters/@#~R~{},{},3]]//.{0->"",{x__,""}->{x}},#!={""}&]&

আমি এই বাইকাউন্টে হতাশ, তবে ওহ ভাল।

একটি বেনামী ফাংশন সংজ্ঞায়িত করে যা শব্দের একটি তালিকা নেয় (উদাহরণস্বরূপ {"this","that","these"}) এবং অক্ষরের একটি দ্বি-মাত্রিক অ্যারে প্রদান করে। গ্রিড ফর্মটি দেখতে, //Gridশেষে একটি যুক্ত করুন ।

স্ট্রিংগুলিকে একটি অ্যারেতে রূপান্তরিত করে, অতিরিক্ত লাইন যুক্ত করে, অ্যারে স্থানান্তর করে, প্রয়োজনীয় শিফ্টগুলি পূর্বে প্রস্তুত করে, আবার পুনরায় স্থানান্তর করে।

উদাহরণ ফলাফল (গ্রিড হিসাবে ফর্ম্যাট করা): উদাহরণ ফলাফল


1

জেলি , 24 বাইট

z⁶j€⁾  µJ’⁶ẋ;"z⁶œr€⁶Yœr⁷

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

কিভাবে?

z⁶j€⁾  µJ’⁶ẋ;"z⁶œr€⁶Yœr⁷ - Main link: a list of strings
z                        - transpose with filler...
 ⁶                       -     space character
  j€                     - join €ach with
    ⁾                    -     two spaces
       µ                 - monadic chain separation, call the result x
        J                - range(length(x)) [1,2,...,x]
         ’               - decrement (vectorises) [0,1,...x-1]
           ẋ             - repeat (vectorises)
          ⁶              - a space ['', ' ',...,'x spaces']
             "           - zip with
            ;            - concatenation (prefixes with the space strings)
              z          - transpose with filler...
               ⁶         -     space character
                œr€⁶     - trim spaces from the right of €ach
                    Y    - join with line feeds
                     œr⁷ - trim line feeds from the right
                         - implicit print

1

পাইথন 2, 182 বাইট

def f(s):
 M=max(map(len,s));p=' '*M;L=[p]+s+M*[p];r='';k=0
 while k/M<len(s)*3+M:
  i=k%M;w=k/M-i+1;r+=(L[(w/3+1)*(w%3==1)]+p)[i];k+=1
  if i==M-1:r=r.rstrip()+'\n'
 return r.strip()

কিছুটা লম্বা, তবে ইতিবাচক দিক থেকে এটি প্রতিটি লাইনে কোনও পেছনের সাদা স্থান এবং স্ট্রিং কোনও সাদা স্থান বা শেষে ফিরে আসে না এমন স্ট্রিং দেয়; সীমাবদ্ধতা যা অন্য কিছু এন্ট্রি পালন করে না।

শব্দের একটি তালিকা ফাংশনে প্রেরণ করা হয়; কিছু 'ফাঁকা' এই তালিকার সাথে সংযুক্ত করা হয় এবং তারপরে অ্যালগরিদম একটি সারি, কলাম জোড়া একটি শব্দের নাম্বারে, অক্ষরসংখ্যার প্রসারিত তালিকায় মানচিত্রযুক্ত করে। (এটি অন্যান্য সমাধানে দেখা সাধারণ কৌশলটির বিপরীত কিছুটা)।

যদি আমরা শেষ ব্যতীত সমস্ত লাইনে সাদা স্থান অনুসরণ করার অনুমতি দিই, তবে আমরা কিছুটা আরও ভাল করতে পারি (163 বাইট):

def f(s):
 M=max(map(len,s));p=' '*M;L=[p]+s+M*[p];r='';k=0
 while k/M<len(s)*3+M:i=k%M;w=k/M-i+1;r+=(L[(w/3+1)*(w%3==1)]+p)[i]+'\n'*(i==M-1);k+=1
 return r.strip()

1

কিউ / কেডিবি +, 130 109 94 90 86 84 বাইট

সমাধান:

f:{-1(+)a rtrim(til(#)E){raze(x#" "),y,\:"  "}'E:(+)(a:{(max(#:)each x)$x})" "vs x;}

উদাহরণ:

q)f "programming puzzles and code golf"
p          
 r         
  o        
p  g       
 u  r      
  z  a     
a  z  m    
 n  l  m   
  d  e  i  
c     s  n 
 o        g
  d        
g  e       
 o         
  l        
   f 
q)f "a bcd efgh i j"
a   


b   
 c  
  d 
e   
 f  
  g 
i  h


j  
q)f (),"x"
x
q)f "verylongword short"
v           
 e          
  r         
s  y        
 h  l       
  o  o      
   r  n     
    t  g    
        w   
         o  
          r 
           d

ব্যাখ্যা (অবরুদ্ধ):

মূল সূচকটি হ'ল ইনপুট স্ট্রিং থেকে সমান দৈর্ঘ্যের স্ট্রিংগুলির একটি গুচ্ছ তৈরি করা, সেগুলি ফ্লিপ করুন (ঘোরান), তারপরে এমন কিছু দেখতে উপযুক্ত সাদা স্থান যুক্ত করুন:

"p  p  a  c  g   "
" r  u  n  o  o  "
"  o  z  d  d  l "
"   g  z     e  f"
"    r  l        "
"     a  e       "
"      m  s      "
"       m        "
"        i       "
"         n      "
"          g     "

যা আবার উল্টানো হয় এবং স্ট্যাডআউটে মুদ্রিত হয়।

ধারণাটির এক লাইন বাই লাইন ব্রেকডাউন করা হয়েছে:

A:"programming puzzles and code golf"; // original input
B:" " vs A;                            // split on " "
C:max count each B;                    // find length of the longest string
D:C$B;                                 // pad each string to this length
E:flip D;                              // flip (rotate) string
F:{raze(x#" "),y,\:"  "};              // appends each char with "  " and prepends an increasing number of " "
G:(til count E)F'E;                    // execute function F with each pair of 0..n and item in list E
H:max count each rtrim G;              // find longest string (ignoring right whitespace)
I:H$G;                                 // pad each of the strings to this length
J:flip I;                              // flip to get result
-1 J;                                  // print to stdout, swallow return value

নোট:

কিছু সত্য (11) সহজে বাইটগুলি শেভ করার কয়েকটি উপায় যদি আমরা সত্যিই এটি করতে চাই:

  • f:একটি বেনাম ফাংশন হিসাবে ফেলে রেখে এবং 2 বাইট সংরক্ষণ করতে পারে
  • ড্রপ দ্বারা 3 বাইট বাঁচাতে পারে -1এবং ;এবং স্ট্রিং একটি তালিকা ফেরার বদলে stdout- এ মুদ্রণের
  • আমরা স্পেস-বিভাজিত স্ট্রিংয়ের পরিবর্তে স্ট্রিংয়ের তালিকায় পাস করলে 6 বাইট সংরক্ষণ করতে পারি

সম্পাদনা:

  • -11 বাইট, rtrimপ্যাড থেকে সর্বোচ্চ দৈর্ঘ্য সন্ধান করতে ব্যবহার করুন , Cভেরিয়েবল সংরক্ষণের জন্য প্রয়োজনীয় অপসারণ
  • -15 বাইটস, max count eachল্যাম্বডা ফাংশনের জন্য স্যুইচ আউট aযা একবার তৈরি হয় এবং দুবার ব্যবহৃত হয়
  • -4 বাইট, razeএকটি সংরক্ষণ করতে ল্যাম্বডা ফাংশনে সরানোraze each
  • -4 বাইট, হোয়াইটস্পেস যোগ করে এমন কোর ল্যাম্বডা ফাংশন সরল করে তুলেছে
  • -2 বাইট, (+)শর্টহ্যান্ড হিসাবে ব্যবহার করুনflip

1

কাঠকয়লা , 16 9 বাইট

WS«P↘ιM³↓

আমার প্রথম কাঠকয়লা উত্তর। পরামর্শের জন্য এবং ব্যবহার করার পরিবর্তে এবং (ঝাঁপ দাও) লাইনের শুরুতে (এবং তিনটি নীচে) ফিরে যেতে @ ডিএলসকে ধন্যবাদ জানাই

এটি অনলাইনে (ভার্বোজ) চেষ্টা করুন বা এটি অনলাইনে চেষ্টা করুন (খাঁটি)

ব্যাখ্যা:

এখনও পরবর্তী ইনপুট-স্ট্রিং থাকা অবস্থায় লুপ:

While(InputString()){ ... }
WS« ...

কার্সারটিকে নীচে-ডানদিকে না নিয়েই এই স্ট্রিংটি মুদ্রণ করুন:

Multiprint(:DownRight, i);
P↘ι

এবং তারপরে পরবর্তী পুনরাবৃত্তির জন্য তিনটি অবস্থান নীচে সরান:

Move(3, :Down);
M³↓

যখন চ্যালেঞ্জটিতে অ্যারের সমন্বিত একটি একক ইনপুট প্রয়োজন হয় তখন চারকোল ব্যর্থ হয় কারণ প্রতিটি শব্দকে পৃথক ইনপুট হিসাবে গ্রহণ করে ইনপুট স্ট্রিংটি বিভক্ত করে। তবে চারকোলে θভেরিয়েবলটি প্রথম ইনপুট উপস্থাপন করে, তাই আমি কেবল পরীক্ষার ইনপুটটিকে সেই শিরোনামের মধ্যে পরিবর্তনশীলটিকে নির্ধারণ করি এবং তারপরে বাকী কোডটি লিখি, যাতে আপনি αভেরিয়েবলটি থেকে মুক্তি পেতে পারেন এবং এর বিভক্ত আইটেমগুলিতে পুনরাবৃত্তি করতে পারেন θএটি অনলাইন চেষ্টা করুন! (শীর্ষস্থানীয় জায়গাগুলির কারণে অ-প্রতিদ্বন্দ্বিতা))
চার্লি

কমপক্ষে, আমি এখানে কৌশলটি ব্যবহার করার সময় কেউ অভিযোগ করেনি । :-)
চার্লি

@ কার্লোস আলেজো যখন আমি বিদ্যমান চারকোলের উত্তরগুলির অনুপ্রেরণার সন্ধান করছিলাম তখন আমি সত্যিই আপনার উত্তরটি পেলাম। :)
কেভিন ক্রুজসসেন

আইডি কে, আমি সাধারণত যে পদ্ধতিটি ব্যবহার করি তা হ'ল শেষে কেবল স্ট্রিং + খালি স্ট্রিং, যদি কোনও মাল্টলাইন হয় তবে পাইথন অ্যারে হিসাবে ইনপুট
ASCII-

@ কার্লোস আলেজো বেশ কিছুক্ষণ হয়ে গেছে তবে কিছুক্ষণ ভাঙতে আমি খালি লাইন দিয়ে এখন একাধিক লাইন ব্যবহার করেছি (এবং একই সাথে 7 বাইট গল্ফ করেছেন)। নীলের একটি উত্তরে এটি ব্যবহার করা দেখেছি এবং আমি এখন দেখি এএসসিআইআই কেবল একই জিনিসটি প্রস্তাব করেছে (কোনওভাবে সেই মন্তব্যটি মিস করেছে)।
কেভিন ক্রুইজসেন

1

জাপট -Rx, 17 16 13 বাইট

শব্দের একটি অ্যারে হিসাবে ইনপুট নেয়। যদি প্রতিটি লাইনে শ্বেত স্পেস অনুসরণ করার অনুমতি দেওয়া হয় তবে চারকোল সমাধানের সাথে যুক্ত হওয়ার জন্য শেষ 4 টি অক্ষর মুছে ফেলা যেতে পারে।

yÈmú3)iYçÃmx1

এটি ব্যবহার করে দেখুন বা সমস্ত পরীক্ষার কেস চালান


ব্যাখ্যা

y                 :Transpose
 È                :Map each word at 0-based index Y
  m               :  Map each character
   ú3             :    Right pad with spaces to length 3
     )            :  End mapping
      i           :  Prepend
       Yç         :   Space repeated Y times
         Ã        :End mapping and transpose
          m       :Map
           x1     :  Trim right
                  :Implicitly join with newlines, trim and output

1

K4 , 58 বাইট

সমাধান:

+(|/{0+/|\|~^x}@'x)$x:(2-(!c)+3*#x)$"  "/:'$+(c:|/#:'x)$x:

উদাহরণ:

q)k)+(|/{0+/|\|~^x}@'x)$x:(2-(!c)+3*#x)$"  "/:'$+(c:|/#:'x)$x:("programming";"puzzles";"and";"code";"golf")
"p          "
" r         "
"  o        "
"p  g       "
" u  r      "
"  z  a     "
"a  z  m    "
" n  l  m   "
"  d  e  i  "
"c     s  n "
" o        g"
"  d        "
"g  e       "
" o         "
"  l        "
"   f       "
q)k)+(|/{0+/|\|~^x}@'x)$x:(2-(!c)+3*#x)$"  "/:'$+(c:|/#:'x)$x:(,"a";"bcd";"efgh";,"i";,"j")
"a   "
"    "
"    "
"b   "
" c  "
"  d "
"e   "
" f  "
"  g "
"i  h"
"    "
"    "
"j   "
q)k)+(|/{0+/|\|~^x}@'x)$x:(2-(!c)+3*#x)$"  "/:'$+(c:|/#:'x)$x:("verylongword";"short")
"v           "
" e          "
"  r         "
"s  y        "
" h  l       "
"  o  o      "
"   r  n     "
"    t  g    "
"        w   "
"         o  "
"          r "
"           d"

ব্যাখ্যা:

ডান-প্যাড স্ট্রিংগুলি যাতে সেগুলি একই দৈর্ঘ্য হয়, ট্রান্সপোজ হয়, সাথে যোগ হয় " ", বাম-প্যাডটি তৈরি করে তির্যকগুলি তৈরি করা হয়, তারপরে ডান-প্যাড দৈর্ঘ্য সংশোধন করতে এবং ফিরে স্থানান্তরিত করতে। স্ট্রিংগুলির একটি তালিকা নেয় এবং স্ট্রিংগুলির একটি তালিকা প্রদান করে। সম্ভবত গল্ফযোগ্য তবে এখনও আমার কিউ / কেডিবি + সমাধানের চেয়ে কম।

+(|/{0+/|\|~^x}@'x)$x:(2-(!c)+3*#x)$"  "/:'$+(c:|/#:'x)$x:
                                                        x:      / save as variable x
                                                       $        / pad
                                             (        )         / do this together
                                                  #:'x          / count (#:) each (') x
                                                |/              / max
                                              c:                / save as variable c
                                            +                   / flip / transpose
                                           $                    / string ($)
                                    "  "/:'                     / join each with "  "
                                   $                            / pad
                      (           )                             / do this together
                                #x                              / count (#) x
                              3*                                / multiply by 3
                             +                                  / add to
                         (  )                                   / do this together
                          !c                                    / range 0..c
                       2-                                       / subtract from 2
                    x:                                          / save as x:
                   $                                            / pad
 (                )                                             / do all this together
    {         }@'x                                              / apply (@) lambda {} to each x
            ^x                                                  / null (^) x (" " is considered null)
           ~                                                    / not
          |                                                     / reverse
        |\                                                      / max (|) scan (\), maxs
     0+/                                                        / sum (+) over (/) starting with 0
  |/                                                            / max (|) over (/), max
+                                                               / transpose


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