উল্লম্ব শব্দ সহ একটি স্ট্রিং মুদ্রণ করুন


12

আপনার কাজটি হ'ল আসকি অক্ষরগুলির একটি ইনপুট স্ট্রিং নেওয়া এবং স্প্রিংগুলিকে স্পেস দ্বারা পৃথক করে উল্লম্ব শব্দের একটি সিরিজ হিসাবে আউটপুট করা। নীচে একটি উদাহরণ দেখানো হয়েছে:

স্ট্রিং দেওয়া:

Hello, World! My name is Foo.

আউটপুটটি হওয়া উচিত:

H W M n i F
e o y a s o
l r   m   o
l l   e   .
o d
, !

10 টি বোনাস পয়েন্ট দেওয়া হবে যদি আপনার প্রোগ্রামটি সঠিকভাবে স্ট্রিংগুলি পরিচালনা করে যা টার্মিনালের চারপাশে মোড়ানো দরকার, যা আমরা 80 টি অক্ষর সেট করব।

50 প্রোগ্রাম যদি আপনার প্রোগ্রামটিও বিপরীত করতে পারে!



3
@ মানাটওয়ার্ক: আমি মনে করি এটি এটি। যদিও এটি অভিন্ন নয় - এবং আমি যুক্তি দিতে পারি যে আমার সমস্যাটি কিছুটা সহজ।
ফু ব্যারিগানো

এটি 100% অভিন্ন নয়, তবে এটি সদৃশ হিসাবে গণনা করার জন্য যথেষ্ট কাছে: এটিকে অভিন্ন করার জন্য হ্রাস কেবল প্রতিটি স্থানকে দুটি নতুন লাইনের সাথে প্রতিস্থাপন করছে।
পিটার টেলর

1
@ পিটারটেলর: বেশ নয় Not আমার সমস্যাটির মূল স্ট্রিংয়ে নিউলাইনগুলিকে সম্মান করার কোনও প্রয়োজন নেই। এই সমস্যাটির জন্য নতুন লাইনগুলিকে স্পেসে রূপান্তর করতে হবে এবং স্পেসগুলি দুটি নতুন লাইনে রূপান্তরিত করা উচিত। এটি একেবারে তুচ্ছ হ্রাস নয়।
ফু ব্যারিগানো

উত্তর:


10

জে, 15

|:>'\S+| 'rxall

ব্যবহার:

   |:>'\S+| 'rxall 'Hello, World! My name is Foo.'
H W M n i F
e o y a s o
l r   m   o
l l   e   .
o d        
, !        

5

জাভাস্ক্রিপ্ট - 228 172 145 126

A=prompt().split(" "),B="",N=A;for(y=0;y<N.length;y++){for(i=0;i<N.length;i++){if(A[i][y]){B+=A[i][y];}else{B+=" ";}}B+="\n";}

আমার প্রথম কোড গল্ফ :)


এটি আপনার প্রথম প্রয়াসের জন্য দুর্দান্ত!
ফু ব্যারিগানো

আপনার কোডটি যতটা সম্ভব সংক্ষিপ্ত করার চেষ্টা করা উচিত, উদাহরণস্বরূপ, স্পেসগুলি সরিয়ে ফেলুন, "Input ?"প্রোগ্রামের আচরণে প্রকৃতপক্ষে প্রভাব ফেলবে না, এটিকেও সরান।
এমনিআইপ

স্থির বাগ। প্রত্যাশার মতো কাজ করা উচিত :)
উওল ভ্যানিলিবার লুৎজ

1
এখন সঠিকভাবে কাজ করে। তবে কিছু ছোটখাটো জিনিস: ভেরিয়েবল এন এর দরকার নেই, অ্যারের lengthদুটি বার জিজ্ঞাসা করার পরিবর্তে সঞ্চয় করুন , কিছু অর্থহীন ধনুর্বন্ধনী, কিছু অপ্রয়োজনীয় অর্ধপরিবাহ। A=prompt().split(" "),B="";for(y=0;y<(l=A.length);y++){for(i=0;i<l;i++)if(A[i][y])B+=A[i][y];else B+="_";B+="\n"}alert(B)। ( আইও মেটা প্রশ্নের জাভাস্ক্রিপ্ট স্ট্যান্ডার্ডগুলিতে বেশিরভাগ সম্মত মতামতটি ছিল যে রিফিলের অন্তর্নিহিত আউটপুটটির উপর নির্ভর করা সঠিক হিসাবে বিবেচনা করা উচিত নয়।)
মানটওয়ার্ক

1
( if(A[i][y]){B+=A[i][y];}else{B+=" ";}B+=(x=A[i][y])?x:" "
অরক্ষিত

5

এপিএল, 22

{⍉⊃⍵⊂⍨1+0,+\2≠/⍵=' '}

ব্যাখ্যা

{              ⍵=' '}   A. check which chars are spaces           
            2≠/         B. of that vector, which consecutive pairs are different  
          +\            C. compute the partial sums                           
      1+0,              D. insert 0 at the front and add 1 to every item
   ⍵⊂⍨                     use this vector to split the original string
 ⍉⊃                        disclose into a matrix and transpose

    'W o w   S u c h   D o g e'
A.   0 0 0 1 0 0 0 0 1 0 0 0 0
B.    0 0 1 1 0 0 0 1 1 0 0 0
C.    0 0 1 2 2 2 2 3 4 4 4 4
D.  1 1 1 2 3 3 3 3 4 5 5 5 5

উদাহরণ

      {⍉⊃⍵⊂⍨1+0,+\2≠/⍵=' '} 'Hello, World! My name is Foo.'
H W M n i F
e o y a s o
l r   m   o
l l   e   .
o d        
, !        

3

রুবি, 91 87

s=gets.split
puts s.map{|x|x.ljust(s.map(&:size).max,' ').split''}.transpose.map &:join

হুরারে, আমি পার্লকে মারলাম! : ডি

রুবি, 150 - 50 বোনাস = 100

s=$<.read
n=s.index"
"
s=s.split n ?'
':' '
o=s.map{|x|x.ljust(s.map(&:size).max,' ').split''}.transpose.map &:join
puts n ?o.map(&:strip).join(' '):o

এটি কেবল নতুন লাইনের জন্য সনাক্ত করে এবং যদি সনাক্ত হয় তবে বিশেষ হ্যান্ডলিংয়ের প্রয়োগ করে।

এটি চালান

ruby transposegolf.rb < transposegolfinput.txt

3

জাভাস্ক্রিপ্ট 184 149 123

var a=s.split(" "),b="",c;for(c in a)b+="<div style='float:left'>"+a[c].split("").join("<br>")+"</div>";document.write(b);

উদাহরণস্বরূপ স্ট্রিং সংজ্ঞায়িত সহ:

var s = "Hello, World! My name is Foo.";
var a=s.split(" "),b="",c;for(c in a)b+="<div style='float:left'>"+a[c].split("").join("<br>")+"</div>";document.write(b);

আপনি দ্বিতীয় বিবৃতিটি আপনার ব্রাউজার কনসোলে অনুলিপি করতে পারেন।

Unminified:

var res = "Hello, World! My name is Foo.";
var t=res.split(" ");
var s ="";
for (var word in t){
    s+="<div style='float:left'>" + t[word].split("").join("<br />") + "</div>";
}
document.write(s);

জেএসফিডাল লিংক: http://jsfiddle.net/FzMvK/

আমার প্রথম কোড গল্ফ পোস্ট: পি


খুব সুন্দরভাবে সম্পন্ন হয়েছে
ফু ব্যারিগানো

উল্টাপাল্টা সমর্থন করার জন্য @ ফুবরিয়ানো উত্তর আপডেট করেছেন
রোননডেক্স

@FooBarrigno আপডেট করা উত্তর, বিপরীত সমর্থন সরানো এবং বাইট গণনা হ্রাস করতে সম্পূর্ণরূপে যুক্তি পরিবর্তন করেছে
রোননডেক্স

চতুর, আমি এটি পছন্দ করি। আপনি কি কেবল float:rightবিপরীতে পরিবর্তন করতে পারবেন না ?
ড্যানি

2
"বিপরীত" অর্থ কী তা নির্ভর করে। প্রথম অক্ষরটি যদি নীচে থাকা উচিত তবে এটি কাজ করবে না। যদি এটি কেবল শব্দগুলির বিপরীত হয় তবে তা হ্যাঁ করা উচিত
রোননডেক্স

2

পার্ল - 92 97

$_=<>;chop;@x=split$";do{print((substr$_,$q,1or$").$")for@x;$q++,print$/}while/@{['\S'x$q]}/

কাজটি বেশ সোজা পদ্ধতিতে করে।


বিবৃতি সংশোধনকারীদের অভিব্যক্তিগুলির চারপাশে প্রথম বন্ধনের দরকার নেই ।
manatwork

নোট করুন যে whileএখানে ব্যবহৃত হিসাবে বিবৃতি সংশোধক হয়।
manatwork

তাই কি? এটি কি do{}while()লুপ নয়?
এমনিআইপ

নাঃ। doনিজেই অন্য কিছু নেই, কেবল একটি ব্লক। whileএকটি পৃথক জিনিস।
manatwork

2

কে, 33

{" "/:',:''x@'/:!max@#:'x:" "\:x}

ইনপুট এবং আউটপুট উদাহরণ:

k){" "/:',:''x@'/:!max@#:'x:" "\:x}"Hello, World! My name is Foo."
"H W M n i F"
"e o y a s o"
"l r   m   o"
"l l   e   ."
"o d        "
", !        "

করছেন "সেখানে হতে অনুমিত?
ড। বেলিসারিয়াস

@ বিলেসারিয়াস এটি কীভাবে স্ট্রিকে কে-তে উপস্থাপন করা হয়। আপনি যদি বিশেষত stdout এ লিখতে চান তবে আপনি {-1@" "/:',:''x@'/:!max@#:'x:" "\:x;}(37 অক্ষর) দিয়ে করতে পারেন , যা আউটপুট ছাড়াই উত্পাদন করতে পারে"
tmartin

4
ঠিক আছে, আমি মনে করি আউটপুটটি প্রয়োজনীয় হওয়া উচিত, ভাষার সাথে সাথে
ডাঃ বেলিসারিয়াস

2

পাইথন:

স্টিং প্রক্রিয়া করার জন্য কোডের একটি লাইন:

import sys
m = "Hello, World! My name is Foo."

map(lambda y: sys.stdout.write(' '.join(y)+'\n'), zip(*map(lambda x: x.ljust(max(map(len,m.split()))), m.split())))

2

পাইথন ২.7, 108 103

আমি নিশ্চিত এটি আরও গল্ফ করা যেতে পারে, তবে পাইথনের প্রাথমিক সমাধান এখানে।

w=raw_input().split();m=max(map(len,w));i=0
while i<m:print" ".join(map(lambda x:x.ljust(m)[i],w));i+=1

উন্নতি:

  • বিভক্ত ("") => বিভক্ত ()
  • কিছু অতিরিক্ত স্থান সরিয়েছে

চমৎকার কাজ! আপনি যদি শুরু i=mকরে 0 পর্যন্ত লুপ করেন তবে আপনি 100 এর জন্য আরও 3 টি অক্ষর শেভ করতে পারেন
DLosc

2

এফ #, 187

let o=Console.ReadLine()
let s=o.Split(' ')
let m=s|>Seq.map String.length|>Seq.max
for l=0 to m-1 do
 for w in s|>Seq.map(fun x->x.PadRight(m,' ').[l])do printf"%c "w
 printfn"%s"""

2

রুবি, 63

$F.map(&:size).max.times{|i|puts$F.map{|s|s[i]||' '}.join' '}

অ্যালগরিদম খুব সোজা; শুধুমাত্র গল্ফড কোডটি 61 বাইট দীর্ঘ, আরও 2 বাইট -naবিকল্পগুলির জন্য এটির কাজ করা দরকার। থেকে ruby -h:

-n   assume 'while gets(); ... end' loop around your script
-a   autosplit mode with -n or -p (splits $_ into $F)

নমুনা রান:

$ echo 'This sentence is false' | ruby -na cols.rb
T s i f
h e s a
i n   l
s t   s
  e   e
  n    
  c    
  e

2

পাইথন 2.7 - 137 112 বাইট

s=raw_input().split()
for c in range(max(map(len,s))):
 for w in s:
    try:print w[c],
    except:print' ',
 print''

অন্য কেউ ইতিমধ্যে এটি আরও ভাল করেছেন, তবে আমি সম্ভবত এটি এড়াতে পারি। দীর্ঘতম cঅক্ষরের সমান দৈর্ঘ্য (পরবর্তী অংশের সূচী ত্রুটিগুলি এড়াতে) যতক্ষণ না ইনপুটটিতে প্রতিটি শব্দের সাথে স্পেস যুক্ত করে, তারপরে cপ্রতিটি স্ট্রিংয়ের দৈর্ঘ্যে 0 থেকে যায় তখন প্রতিটি শব্দের th অক্ষর মুদ্রণ করে ।

আমি এটি করার আরও ভাল উপায় নিয়ে এসেছি এবং 25 বাইট কেটে ফেলেছি। সূচীর ত্রুটি এড়াতে ফাঁকা স্ট্রিংগুলির সাথে প্যাডিংয়ের পরিবর্তে আমি সরাসরি ত্রুটিটি পরিচালনা করি! যখনই মুদ্রণ কিছুই আছে, আমি তার জায়গায় একটি একক স্থান মুদ্রণ try:print w[c],, except:print' ',। আমি আরও মনে রেখেছিলাম যে মুদ্রণ বিবৃতি এবং একটি স্ট্রিং আক্ষরিকের মধ্যে আমার কোনও জায়গার দরকার নেই, যা একটি বাইট সংরক্ষণ করেছিল।

দ্রষ্টব্য যে পাইথন 2 আপনাকে ট্যাব এবং স্পেসগুলি মিশ্রিত করতে দেয় এবং এগুলিকে পৃথক স্তরযুক্ত ইন্ডেন্টেশন হিসাবে বিবেচনা করে। এসই এর মার্কডাউন ইন্টারপ্রেটার একটি ট্যাব চরিত্রকে চারটি স্পেস সহ প্রতিস্থাপন করে, তবে প্রথমটি বাদে এই প্রোগ্রামটির প্রতিটি লাইনে ইন্ডেন্টেশনের ঠিক এক বাইট থাকে।

বিন্যাস সাল থেকে বেশ সহজ ছিল print 'something',কপি করে প্রিন্ট 'something 'বদলে 'something\n'। আমি প্রতিটি চরিত্রের জন্য এটি করেছি, এবং printআমার যেখানে প্রয়োজন নতুন লাইনটি পেতে খালি বিবৃতি ব্যবহার করেছি।


2

সি, 111 110 95 90 বাইট

এই সমাধানটি টার্মিনালে কার্সারটি সরানোর জন্য ভিটি -100 নিয়ন্ত্রণ কোড ব্যবহার করে

main(int _,char**v){char*s=*++v;printf("^[7");while(*s)' '==*s?(s++,printf("^[8^[[2C^[7")):printf("%c^[[B^H",*s++);}

^[ক্রম একক হওয়া ASCII চট্টগ্রাম সিটি কর্পোরেশন চরিত্র, যে এখানে প্রদর্শন করা যাবে না জন্য একটি স্থানধারক হয়।

  • ^[7 বর্তমান পয়েন্টার অবস্থান সংরক্ষণ করে
  • ^[8 কার্সার অবস্থানটি সংরক্ষিত অবস্থানে পুনরুদ্ধার করে
  • ^[[2C 2 পদক্ষেপ ডান সরানো
  • ^[[B 1 ধাপ নিচে সরানো

সম্পাদন করা 1:^[[D (1 টি পা বাম), VT-100 কোড একটি ব্যাকস্পেস দ্বারা প্রতিস্থাপিত হয়েছে (হিসাবে দেখানো ^Hএখানে, কিন্তু শুধুমাত্র এক হওয়া ASCII গৃহস্থালি); "স্পেস দ্বারা বিচ্ছিন্ন" নির্দেশকেও ভুলে গিয়েছিল, এখন ঠিক করা

সম্পাদনা 2:

এর forপরিবর্তে whileএবং এর 32পরিবর্তে একটি লুপ ব্যবহার করে 7 টি অক্ষর সংরক্ষণ করা হয়েছে ' ':

main(int _,char**v){printf("^[7");for(char*s=*++v;*s;s++)32==*s?printf("^[8^[[2C^[7"):printf("%c^[[B^H",*s);}

আরও 8 জন অক্ষরকে কম কল করে সংরক্ষণ করা হয়েছে printf: টের্নারি ?:অপারেটরটি এখন printfপরামিতিগুলিতে ব্যবহৃত হয়

main(int _,char**v){printf("^[7");for(char*s=*++v;*s;s++)printf(32==*s?"^[8^[[2C^[7":"%c^[[B^H",*s);}

3 সম্পাদনা করুন:

পেয়েছেন স্থানীয় পরিবর্তনশীল পরিত্রাণ s, সাথে সরাসরি কাজ argvওরফে v। এটি সম্পূর্ণ জঘন্য। তবে ৪ টি চর বাঁচিয়েছে। এছাড়াও প্রতিস্থাপিত ==সঙ্গে ^এবং সেইজন্য সুইচড ?:operands, 1 এর আরও বেশি গৃহস্থালির কাজ সংরক্ষণ করুন।

main(int c,char**v){printf("^[7");for(v++;**v;)printf(32^*(*v)++?"%c^[[B^H":"^[8^[[2C^[7",**v);}

ব্যবহার

$ gcc transpose.c -o transpose --std=c99
$ ./transpose 'Hello, World! My name is Foo.'
H W M n i F
e o y a s o
l r   m   o
l l   e   .
o d
, !

আন-গল্ফ করা সংস্করণ (প্রথম সংস্করণ)

main (int _,char**v) {
    char*s=*++v; // init s with the address of the first letter
    printf("^[7"); // save the current cursor position
    while(*s) 
        ' '==*s ? ( /* if current char is a space */
            s++,printf("^[8^[[2C^[7") /* return to the saved location, move right, save position */
        ) : /* kind of else */
            printf("%c^[[B^H",*s++); /* print the current char, move down, move left */
}

আন-গল্ফ করা সংস্করণ (শেষ সংস্করণ)

main(int c,char**v) {
    printf("^[7");
    for(v++;**v;) /* v++: make v point to argv[1] */
        printf(     
            32^*(*v)++? /* test if **v is different from ' ', and make *v point to
                           the next char */
                "%c^[[B^H":         
                "^[8^[[2C^[7",      
            **v); /* this undefined behaviour (using *v and (*v)++ in the same expression)
                     works as "expected" with gcc 4.7.2 */
} 

1
অ-গল্ফযুক্ত সংস্করণটি সন্দেহজনকভাবে বেফুঞ্জের মতো দেখাচ্ছে । :)
DLosc

2

আমি দীর্ঘদিন আগে এই প্রশ্নের উত্তর দিয়েছি । এটি সাইটটিতে আমার প্রথম অবদানের মধ্যে একটি ছিল। আমি সম্প্রতি এটি আবার পেরিয়ে এসেছিলাম এবং একরকম বিব্রত হয়ে পড়েছিলাম। 112 বাইট ?! অগ্রহণীয়। সুতরাং আমি এটিকে অন্য শট দিয়েছি:

পাইথন 3 - 92 বাইট

s=input().split()
print('\n'.join(map(' '.join,zip(*[a.ljust(max(map(len,s)))for a in s]))))

আমি প্রথম উত্তরটি পোস্ট করার পরে 109 দিনের মধ্যে, আমি ভাবতে চাই যে আমি অনেক দূর এসেছি। এমনকি পাইথন 3 ওভার 2.7 1 ব্যবহার করার মতো কিছু আমার কাছে ঘটত না। এই কোডটি 100 বাইটের নিচে নেমে যাওয়ার সাথে সাথে আমার আত্মা অবশেষে বিশ্রাম নিতে পারে এবং আমি পরবর্তী জীবনে যেতে পারি।

ব্যাখ্যা

s=input().split()

এটি থেকে একটি লাইন পায় stdinএবং এটি সাদা স্থানের অক্ষরগুলিতে বিভক্ত করে একটি তালিকা তৈরি করে। ইনপুটটিতে থাকা কেবলমাত্র শ্বেতস্থানটি হ'ল ফাঁকা স্থান, তাই এই লাইনটি শব্দের একটি তালিকা পায়।

ভিতরে থেকে দ্বিতীয় লাইনটি বের করা যাক:

                                           max(map(len,s))

mapআর্গুমেন্ট হিসাবে একটি ফাংশন এবং একটি পুনরাবৃত্তযোগ্য লাগে। এটি পুনরাবৃত্তিযোগ্য প্রতিটি উপাদান ফাংশন প্রয়োগ করে, এবং ফলাফলের একটি নতুন পুনরাবৃত্তি ফেরত। এখানে, আমি প্রতিটি ইনপুট শব্দের দৈর্ঘ্য সহ একটি পুনরাবৃত্তযোগ্য তৈরি করি। maxএকটি পুনরাবৃত্তযোগ্য থেকে সর্বোচ্চ মান পায়। এটি আমাদেরকে ইনপুটটির দীর্ঘতম শব্দ বলে মনে করে।

                                  [a.ljust(              )for a in s]

একটি তালিকা বোঝার অনুরূপ map। এটি একটি পুনরাবৃত্তযোগ্য প্রতিটি উপাদানকে কিছু করে এবং ফলাফলগুলি একটি তালিকা দেয়। ইনপুট প্রতিটি শব্দের জন্য, আমি that_word.ljust(কিছু কোড করি )ljust"বাম ন্যায়সঙ্গত" এর জন্য সংক্ষিপ্ত। এটি একটি আর্গুমেন্ট হিসাবে একটি পূর্ণসংখ্যার লাগে এবং এটি দীর্ঘ না হওয়া পর্যন্ত স্ট্রিংয়ের মধ্যে স্পেস যুক্ত করে।

                             zip(*                                    )

এটি একটি ঝরঝরে কৌশল। এই প্রসঙ্গে, এর *অর্থ "এই পুনরাবৃত্তিকে একাধিক যুক্তি হিসাবে আনজিপ করুন"। এইভাবে, একটি ম্যাট্রিক্স স্থানান্তরzip করতে ব্যবহার করা যেতে পারে (যেমন -> )। একমাত্র বিধিনিষেধটি হ'ল ম্যাট্রিক্সের সমস্ত সারি একই দৈর্ঘ্য হতে হবে বা সমস্ত সারি থেকে থাকা উপাদানগুলি রয়েছে তবে সংক্ষিপ্ততমটি মেলাতে কেটে যায়।zip(*[(1,2),(3,4)])[(1,3),(2,4)]

                map(' '.join,                                          )

আমরা ইতিমধ্যে জানি কি mapকরে। এখানে কেবলমাত্র নতুন জিনিসটি এটি joinএকটি পুনরাবৃত্ত স্ট্রিং নেয় এবং এর সাথে সংযুক্ত ডিলিমিটারটি ব্যবহার করে এটি একটি একক স্ট্রিং তৈরি করে। উদাহরণস্বরূপ, 'a'.join(['I', 'can', 'play', 'the', 'saxophone'])2 হয়ে যায় Iacanaplayatheasaxophone

print('\n'.join(                                                        ))

এটি joinস্ট্রিংগুলির একটি গোছা নেয় এবং সেগুলি নিউলাইনগুলি দ্বারা পৃথক করে। যা কিছু বাকি আছে তা করার printজন্য stdoutএবং আমরা শেষ করেছি!

সব একসঙ্গে এখন:

print('\n'.join(map(' '.join,zip(*[a.ljust(max(map(len,s)))for a in s]))))

ইনপুট থেকে দীর্ঘতম শব্দের দৈর্ঘ্য সন্ধান করুন, প্রতিটি শব্দের সাথে একই দৈর্ঘ্য হওয়া পর্যন্ত স্পেস যুক্ত করুন, zip(*3 টি ট্রিক দিয়ে ট্রান্সপোজ করুন , joinপ্রতিটি অক্ষরকে joinফাঁকে ফাঁকে ফাঁকে আলাদা করুন , আবার নতুন লাইনের সাথে প্রতিটি সারি আলাদা করতে, এবং মুদ্রণ! 92 বাইট প্রোগ্রামের একমাত্র নন-ইনপুট-হ্যান্ডলিং লাইনের পক্ষে খারাপ নয়।


১. print()এর বন্ধনীগুলিতে ব্যয় করা অতিরিক্ত অক্ষরগুলি আমি raw_input()-> থেকে পড়ে যাওয়া 4 টি অক্ষর দ্বারা ছাড়িয়ে গেছে input()
২. আমি আসলে স্যাক্সোফোন খেলতে পারি না।
)। আপনাকে স্বাগতম.


2
কেন এটি সিডব্লিউ আমার কোনও ধারণা নেই। আমি দুর্ঘটনাক্রমে বোতামটি আঘাত করতে পারি। আচ্ছা ভালো.
আন্ডারগ্রাউন্ডোমোনাইল

আপনি পরিবর্তন print("\n".join(...))করতে পারেন *map(print,...),এটি অনলাইন চেষ্টা করুন!
জো কিং

2

05 এ বি 1 ই , 8 -20 -21 ( 30 29 বাইট - 50 বোনাস) স্কোর করুন :

|Dgi#ζεSðý}»}ë¹ε2ô€¬}ζJεðÜ}ðý

এটি অনলাইনে চেষ্টা করুন (নিয়মিত একক-লাইন ইনপুট)।
এটি অনলাইনে চেষ্টা করুন (মাল্টি-লাইন বিপরীত ইনপুট)।

ব্যাখ্যা:

|                     # Take the input split on newlines:
                      #  i.e. 'This is a test' → ['This is a test']
                      #  i.e. 'T i a t\nh s   e\ni     s\ns     t'
                      #    → ['T i a t','h s   e','i     s','s     t']
 Dg                   #  Duplicate this list, and take the length
                      #   i.e. ['This is a test'] → 1
                      #   i.e. ['T i a t','h s   e','i     s','s     t'] → 4
   i         }        # If the length is exactly 1:
    ¹                 #  Take the input again 
     #                #  Split the input-string by spaces
                      #   i.e. 'This is a test' → ['This','is','a','test']
      ζ               #  Zip with space-filler: Swap all rows and columns
                      #   i.e. ['This','is','a','test'] → ['Tiat','hs e','i  s','s  t']
       ε   }          #  For each item:
        S             #   Convert the item to a list of characters
                      #    i.e. 'Tiat' → ['T','i','a','t']
         ðý           #   Join them by a single space
                      #    i.e. ['T','i','a','t'] → 'T i a t'
            »         #  Join the result by newlines (and output implicitly)
    ë                 # Else:
     ε    }           #  For each item:
      2ô              #   Split it into chunks of two characters
                      #    i.e. 'h s   e' → ['h ','s ','  ','e']
        €¬            #   Take the head (first character) of each:
                      #    i.e. ['h ','s ','  ','e'] → ['h','s',' ','e']
           ζ          #  Zip with space-filler: Swap all rows and columns
                      #   i.e. [['T','i','a','t'],['h','s',' ','e'],['i',' ',' ','s'],['s',' ',' ','t']]
                      #     → [['T','h','i','s'],['i','s',' ',' '],['a',' ',' ',' '],['t','e','s','t']]
            J         #  Join each inner list to a single string
                      #   i.e. [['T','h','i','s'],['i','s',' ',' '],['a',' ',' ',' '],['t','e','s','t']]
                      #     → ['This','is  ','a   ','test']
             ε  }     #  For each item:
              ðÜ      #   Remove any trailing spaces
                      #    i.e. 'is  ' → 'is'
                 ðý   #  Join the items by a single space (and output implicitly)

আসল 8-বাইট উত্তর:

#ζεSðý}»

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

ব্যাখ্যা:

#           # Split the input-string by spaces
            #  i.e. 'This is a test' → ['This','is','a','test']
 ζ          # Zip with space-filler: Swap all rows and columns
            #  i.e. ['This','is','a','test'] → ['Tiat','hs e','i  s','s  t']
  ε   }     # For each item:
   S        #  Convert the item to a list of characters
            #   i.e. 'Tiat' → ['T','i','a','t']
    ðý      #  Join them by a single space
            #   i.e. ['T','i','a','t'] → 'T i a t'
       »    # Join the result by newlines (and output implicitly)

1

গণিত 49

স্পষ্টতই ম্যাথমেটিকা ​​এই জন্য সেরা নয়:

Grid[PadRight@Characters@StringSplit@s^T]/. 0->" "

গণিত গ্রাফিক্স

দ্রষ্টব্য ^T(স্থানান্তর) কেবল একটি চর (আমি এখন সঠিক চর কোডটি পাই না)


1

জাভাস্ক্রিপ্ট, 141

a=prompt().split(' '),c=0,d=a.map(function(a){b=a.length;c=c<b?b:c});for(j=0;j<c;j++){b='';for(i in a)b+=a[i][j]?a[i][j]:' ';console.log(b);}

নমুনা

hello, world! this is code golf

hwticg
eohsoo
lri dl
lls ef
od    
,! 

1

গল্ফস্ক্রিপ্ট [৪১ বাইট]

' '%:x{.,x{,}%$-1=-abs' '*+}%zip{' '*}%n*

কিভাবে এটা কাজ করে:

' '%:x          split text into words and store array in 'x'
{               for each word in the array:
    .,              from word's length
    x{,}%$-1=-      substract the length of the longest word in 'x'
    abs             get absolute value (maybe there is a shorter way?)
    ' '*+           add corresponding number of spaces
}%
zip{' '*}%      transpose array of words and add spaces between letters
n*              join words with a new line character

আপনি এখানে অনলাইন ডেমো দেখতে পাবেন ।

পিএস: এটি আমার প্রথম গল্ফস্ক্রিপ্ট কোড, সুতরাং আমাকে কঠোরভাবে বিচার করবেন না;)



1

বাশ + কোর্টিলস, 54

eval paste `printf " <(fold -w1<<<%s)" $@`|expand -t2

আউটপুট:

/ ./transpose.sh হ্যালো, ওয়ার্ল্ড! আমার নাম ফু।
এইচডব্লিউএম এন এফ
eoyaso
lrmo
lle
আদ্যাশক্তি       
,!       
$ 

একটি আপডেটের জন্য পরামর্শ: কমান্ড প্রতিস্থাপনের জন্য ব্যাকটিকগুলি হ্রাস করা হয়। $()কমান্ড প্রতিস্থাপনের জন্য কনস্ট্রাক্ট ব্যবহার করা এখন সাধারণ পদ্ধতি।
ইয়োকাই

@ ইয়োকাই - এটি কোড-গল্ফ - এখানে আমরা কোডের দৈর্ঘ্যের জন্য মানদণ্ড করছি এবং মান / সেরা-অনুশীলনের সম্মতির জন্য নয়। কোডগলফ.স্ট্যাকেক্সেঞ্জঞ্জ.com
ডিজিটাল ট্রমা

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

1

এপিএল: 18

⍉↑1↓¨a⊂⍨' '=a←' ',

ব্যাখ্যা:

একটি ← '', স্ট্রিংয়ের সামনে একটি স্থান রেখে একটিকে বরাদ্দ করুন

'' = স্পেস সন্ধান করে, একটি বুলিয়ান উত্পাদন করে

1 ¨ 1a⊂⍨ বুলিয়ানটিতে 1 টি রয়েছে এমন শুরু করে সাবস্ট্রিংগুলি তৈরি করুন এবং প্রত্যেকটির প্রথম উপাদানটি ড্রপ করুন (তাই স্থান)

↑ the ফলাফলের সাবস্ট্রিংগুলি থেকে ম্যাট্রিক্স তৈরি করুন এবং এটিটি তির্যক বরাবর বিপরীত করুন




0

পাইথন 2.7 - 119 106

1 - 166 নিন lists তালিকাগুলি বিপরীত হওয়াতে আমি যেভাবে চাইছি তাতে পপ কাজ করা দরকার ছিল তবে এটি অপব্যয় বলে মনে হয়েছিল। এবং যখন আমি মজাদার জন্য একটি একক বোঝার মধ্যে একত্রিত করার চেষ্টা করেছি, তখন পপ জিনিসগুলি খারাপ করে দিয়েছে।

w=raw_input().split(' ');l=max([len(l) for l in w]);
q=[list(p)[::-1]for p in w]+[['\n']*l]
t=[' '+(v.pop() if v else' ')for i in range(l)for v in q]
print ''.join(t)

2 - 119 নিন So সুতরাং আমি সাধারণ তালিকা সূচকে পরিবর্তিত হয়েছি। এখনও বিশৃঙ্খল মনে হলেও বিশেষত স্পেস এবং নতুন লাইনের প্যাডিং।

w=raw_input().split(' ');l=max([len(l)for l in w]);print''.join([' '+(v+' '*l)[i]for i in range(l)for v in w+['\n'*l]])

3 নিন - @grc ধন্যবাদ

w=raw_input().split();l=max(map(len,w));print''.join(' '+(v+' '*l)[i]for i in range(l)for v in w+['\n'*l])

2
[len(l)for l in w]সংক্ষিপ্ত যাবে map(len,w), .split(' ')থেকে .split(), এবং .join([...])করতে .join(...)
grc

আমি আপনার কোডটি খুব বেশি বিবরণে যেতে পারি নি তাই এটি কাজ নাও করতে পারে তবে: "তালিকাগুলি উল্টানো আমার যেভাবে চাইছিল পপ কাজ করার জন্য প্রয়োজন ছিল" আপনি কি v.pop(0)পরিবর্তে প্রথম উপাদানটি পপ করতে পারবেন না? সর্বশেষ?
আন্ডারগ্রাউন্ডোমোনাইল

0

পাইথন 3, 124

a=input().split()
l=max(map(len,a))
print("\n".join(" ".join(c[i] for c in [i+" "*(l-len(i)) for i in a]) for i in range(l)))

0

হাস্কেল, ১১২

Golfed:

import Data.List
r s=unlines$transpose$p$words s
p w=m(\s->s++replicate(maximum(m l w)-l s)' ')w
m=map
l=length

ব্যাখ্যা:

import Data.List

-- Break on spaces, then pad, then transpose, then join with newlines
r s=unlines$transpose$p$words s

-- Pads each String in a list of String to have the same length as the longest String
p w=m(\s->s++replicate(maximum(m l w)-l s)' ')w

-- Aliases to save space
m=map
l=length

উদাহরণ:

*Main Data.List> putStrLn $ r "Hello Doge"
HD
eo
lg
le
o

0

জাভাস্ক্রিপ্ট, 139 (কনসোল.লগ আউটপুট সহ 156)

s=" ",b="",a=prompt().split(s),l=0;for(var i in a){m=a[i].length;l=(l<m)?m:l;}for(i=0;i<l;i++){for(var j in a)b+=((x=a[j][i])?x:s)+s;b+="\n"}console.log(b);

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



0

পাইথ, 8 বাইট

jbjL\ Cc

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

অনেকটাই অকপট. উদ্ধৃতিতে আবদ্ধ ইনপুট নেয়, যেমন"Hello World"

jbjL\ CcQ
---------
       cQ    Chop the input Q on spaces
      C      Matrix transpose
  jL\        Join each element by spaces,
             i.e. interleave spaces between the characters of each element
jb           Join by newlines

1
Cসংক্ষিপ্ত প্রবেশের দৈর্ঘ্যে কাটা হয়, সুতরাং এটি কাজ করে নাএখানে একটি দ্রুত ফিক্স যা 8 বাইটও।
hakr14

0

এপিএল (এনএআরএস), cha৯ টি চর, ১৫৮ বাইট

{m←⌈/↑∘⍴¨z←(' '≠⍵)⊂,⍵⋄v←∊m{⍵\⍨∊(k⍴1)(0⍴⍨⍺-k←↑⍴⍵)}¨z⋄((2×↑⍴z)⍴1 0)\[2]⍉(↑⍴z)m⍴v}

পরীক্ষা:

  f←{m←⌈/↑∘⍴¨z←(' '≠⍵)⊂,⍵⋄v←∊m{⍵\⍨∊(k⍴1)(0⍴⍨⍺-k←↑⍴⍵)}¨z⋄((2×↑⍴z)⍴1 0)\[2]⍉(↑⍴z)m⍴v}
  f 'Hello, World! My name is Foo.'
H W M n i F 
e o y a s o 
l r   m   o 
l l   e   . 
o d         
, !         

পুরানো ফাংশনে আউটপুট নিখুঁত নয়:

  {⍪¨(' '≠⍵)⊂,⍵}'Hello, World! My name is Foo.'
 H  W  M  n  i  F 
 e  o  y  a  s  o 
 l  r     m     o 
 l  l     e     . 
 o  d             
 ,  !
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.