কিছু বর্ণমালা বৃষ্টি করুন


54

বর্ণমালা বৃষ্টি

কাজটি:

মূল ভিত্তি হ'ল ইনপুট স্ট্রিংটি মুদ্রণ করা এবং তারপরে (কেস-সংবেদনশীল) বর্ণমালায় (0-ইনডেক্সড) অবস্থানের উপর ভিত্তি করে প্রতিটি অক্ষর উল্লম্বভাবে পুনরাবৃত্তি করা A-ZA0 স্থানে থাকে তাই পুনরাবৃত্তি হয় না, eপজিশনে 4 তাই 4 বার পুনরাবৃত্তি হয়, P15 পজিশনে থাকে তাই 15 বার পুনরাবৃত্তি হয়, 0 বার পুনরাবৃত্তি !হয় না A-Zইত্যাদি।

স্বচ্ছতার জন্য, ব্যাপ্তির বাইরে যে কোনও কিছু B-Zb-zযেমন উদাহরণস্বরূপ বা বিশেষ অক্ষরগুলির পুনরাবৃত্তি হবে না এবং এইভাবে কেবল প্রথম লাইনে প্রদর্শিত হবে।

এটি , তাই প্রতিটি ভাষার সংক্ষিপ্ত সমাধানটিই বিজয়ী।

ইনপুট:

  • ইনপুটটি 326 থেকে 126 পর্যন্ত স্ট্যান্ডার্ড মুদ্রণযোগ্য ASCII অক্ষর সেটগুলিতে থাকবে ~
  • ইনপুট স্ট্রিংটি 1 অক্ষর দীর্ঘ বা দীর্ঘ হবে।
  • এখানে কোনও শীর্ষস্থানীয় বা পিছনের সাদা স্থান থাকবে না।
  • আপনি স্ট্রিং হিসাবে ইনপুট নিতে পারেন ( "hello") বা অক্ষরের তালিকা ( ["h", "e", "l", "l", "o"])

উদাহরণ:

দেওয়ার ইনপুট aaaa:

aaaa

দেওয়ার ইনপুট abcda:

abcda
 bcd
  cd
   d

এর ইনপুট Programming Puzzles & Code Golf!, দেয়:

Programming Puzzles & Code Golf!
Progr mming Puzzles   Code Golf
Progr mming Puzzles   Code Golf
Progr mming Puzzles    ode Golf
Progr mming Puzzles    o e Golf
Progr mming Puzzl s    o   Golf
Progr mming Puzzl s    o   Gol
Pro r mmin  Puzzl s    o    ol
Pro r mmin  Puzzl s    o    ol
Pro r mm n  Puzzl s    o    ol
Pro r mm n  Puzzl s    o    ol
Pro r mm n  Puzzl s    o    ol
Pro r mm n  Puzz  s    o    o
Pro r    n  Puzz  s    o    o
Pro r       Puzz  s    o    o
Pr  r       Puzz  s
 r  r        uzz  s
 r  r        uzz  s
             uzz  s
             uzz
             uzz
              zz
              zz
              zz
              zz
              zz

এর ইনপুট ~|[abc<0>cba]|~, দেয়:

~|[abc<0>cba]|~
    bc   cb
     c   c

নোট:

  • স্ট্যান্ডার্ড লুফোলস প্রযোজ্য
  • আউটপুট করতে স্ট্রিং একটি তালিকা, কিন্তু:
  • বহিরাগত ট্রেইলিং নিউলাইনগুলি অনুমোদিত নয় (একক \nচূড়ান্ত লাইনে গ্রহণযোগ্য)
  • আউটপুট করতে অক্ষরের তালিকার তালিকা এতক্ষণ যেমন বলে মনে হচ্ছে অক্ষর বৃষ্টি হচ্ছে হতে
  • কোন শীর্ষস্থানীয় নিউলাইন
  • আমাদের নরডিক ব্যবহারকারীদের যাদের "এজেড" বর্ণমালায় কয়েকটি অতিরিক্ত অক্ষর রয়েছে তাদের বিনা দ্বিধায় সমর্থন করুন, তবে এটি চ্যালেঞ্জের অংশ নয়

2
একটি একক নেতৃস্থানীয় \n গ্রহণযোগ্য?
লিন

@ লিন, কোনও শীর্ষস্থানীয় নিউলাইনস নয়, প্রথম লাইনে ইনপুট স্ট্রিং / চরিত্রের তালিকা হওয়া উচিত - আমি পোস্টটি আপডেট করব!
স্ট্রাস্টার

18
এফডাব্লুআইডাব্লু, আমার মনে হয় তারা বৃষ্টির চেয়ে
আইকনগুলির

@ কায়ারডকয়েনেরিংহিংহিং প্রায় উত্সবময় শোনায়
পিওরফেরেট

:( জাস্ট নর্ডিক?
ASCII- কেবল

উত্তর:


22

6502 মেশিন কোড (সি 64), 113 বাইট

00 C0 20 FD AE 20 9E AD 85 FB 20 A3 B6 A0 00 84 FC B1 22 99 6F C1 C9 41 90 14 
C9 5B B0 04 E9 40 B0 0E C9 C1 90 08 C9 DB B0 04 E9 C0 B0 02 A9 00 99 6F C0 C5 
FC 30 02 85 FC C8 C4 FB D0 D3 A9 00 99 6F C1 A0 C1 A9 6F 20 1E AB A9 0D 20 D2 
FF A6 FC D0 01 60 C6 FC A0 00 B9 6F C1 F0 E6 BE 6F C0 D0 07 A9 20 99 6F C1 D0 
05 CA 8A 99 6F C0 C8 D0 E7

স্ক্রিনশট

অনলাইন ডেমো

ব্যবহার: sys49152,"[string]" যেমন sys49152,"Programming Puzzles & Code Golf!"

গুরুত্বপূর্ণ: প্রোগ্রামটি যদি ডিস্ক থেকে লোড করা হয় (অনলাইন ডেমোর মতো), newপ্রথমে একটি কমান্ড জারি করুন ! এটি প্রয়োজনীয় কারণ কোনও মেশিন প্রোগ্রাম লোড করা কিছু সি 64 বেসিক পয়েন্টারকে ট্র্যাশ করে।

দ্রষ্টব্য: সি 64 হ'ল ছোট হাতের অক্ষর ছাড়াই একটি মোডে ডিফল্টরূপে - একটি মিশ্র-কেস স্ট্রিং প্রবেশ করতে সক্ষম হতে, প্রথমে SHIFT+ টিপে ছোট লোকেস মোডে স্যুইচ করুন CBM


ব্যাখ্যা

এখানে একটি মন্তব্য বিচ্ছিন্ন তালিকা:

         00 C0       .WORD $C000        ; load address
.C:c000  20 FD AE    JSR $AEFD          ; consume comma
.C:c003  20 9E AD    JSR $AD9E          ; evaluate expression
.C:c006  85 FB       STA $FB            ; store string length
.C:c008  20 A3 B6    JSR $B6A3          ; free string
.C:c00b  A0 00       LDY #$00           ; initialize counter
.C:c00d  84 FC       STY $FC            ; and number of "extra" lines
.C:c00f   .copyloop:                    
.C:c00f  B1 22       LDA ($22),Y        ; load next character
.C:c011  99 6F C1    STA .outbuf,Y      ; store to buffer
.C:c014  C9 41       CMP #$41           ; compare with 'a'
.C:c016  90 14       BCC .zerocount     ; smaller -> no repetition
.C:c018  C9 5B       CMP #$5B           ; compare with 'z'
.C:c01a  B0 04       BCS .checkupper    ; larger -> check for uppercase
.C:c01c  E9 40       SBC #$40           ; subtract 'a' ('a' - 1 and carry)
.C:c01e  B0 0E       BCS .cl_storecount ; and jump to store in repeat count
.C:c020   .checkupper:                  
.C:c020  C9 C1       CMP #$C1           ; compare with 'A'
.C:c022  90 08       BCC .zerocount     ; smaller -> no repetition
.C:c024  C9 DB       CMP #$DB           ; compare with 'Z'
.C:c026  B0 04       BCS .zerocount     ; larger -> no repetition
.C:c028  E9 C0       SBC #$C0           ; subtract 'A' ('A' - 1 and carry)
.C:c02a  B0 02       BCS .cl_storecount ; and jump to store in repeat count
.C:c02c   .zerocount:                   
.C:c02c  A9 00       LDA #$00           ; store 0 ...
.C:c02e   .cl_storecount:               
.C:c02e  99 6F C0    STA .repcount,Y    ; ... in repeat count
.C:c031  C5 FC       CMP $FC            ; compare with number of extra lines
.C:c033  30 02       BMI .cl_next       ; smaller -> go on with loop
.C:c035  85 FC       STA $FC            ; repeat count to number of extra lines
.C:c037   .cl_next:                     
.C:c037  C8          INY                ; next
.C:c038  C4 FB       CPY $FB            ; compare with string length
.C:c03a  D0 D3       BNE .copyloop      ; not yet reached? -> repeat
.C:c03c  A9 00       LDA #$00           ; terminate string in buffer
.C:c03e  99 6F C1    STA .outbuf,Y      ; with 0 byte
.C:c041   .outloop:                     
.C:c041  A0 C1       LDY #>.outbuf      ; output ...
.C:c043  A9 6F       LDA #<.outbuf      ; ...
.C:c045  20 1E AB    JSR $AB1E          ; ... string
.C:c048  A9 0D       LDA #$0D           ; and output ...
.C:c04a  20 D2 FF    JSR $FFD2          ; ... newline
.C:c04d  A6 FC       LDX $FC            ; load extra line count
.C:c04f  D0 01       BNE .ol_step       ; not zero -> go on
.C:c051  60          RTS                ; WE ARE DONE HERE ;)
.C:c052   .ol_step:                     
.C:c052  C6 FC       DEC $FC            ; decrease extra line count
.C:c054  A0 00       LDY #$00           ; initialize counter
.C:c056   .eraseloop:                   
.C:c056  B9 6F C1    LDA .outbuf,Y      ; load next character from buffer
.C:c059  F0 E6       BEQ .outloop       ; 0 byte? -> end of string, output
.C:c05b  BE 6F C0    LDX .repcount,Y    ; load repeat count for this characer
.C:c05e  D0 07       BNE .el_step       ; not 0 yet? -> jump to decrement
.C:c060  A9 20       LDA #$20           ; load code for space
.C:c062  99 6F C1    STA .outbuf,Y      ; store in current string position
.C:c065  D0 05       BNE .el_next       ; and jump to next loop iteration
.C:c067   .el_step:                     
.C:c067  CA          DEX                ; decrease repeat count ...
.C:c068  8A          TXA                ; ... and ...
.C:c069  99 6F C0    STA .repcount,Y    ; ... store back
.C:c06c   .el_next:                     
.C:c06c  C8          INY                ; increase counter ...
.C:c06d  D0 E7       BNE .eraseloop     ; and jump back to loop

.C:c06f   .repcount:
.C:c06f              .RES $100          ; 256 bytes for repeat count
.C:c16f   .outbuf:
.C:c16f              .RES $100          ; 256 bytes as buffer for output

3
c64 মেশিন কোড। আমি অভিভূত.
Dschoni

@ ডিসকোনি ধন্যবাদ, তবে এটি এখনও সহজ কোড (এবং এটি আমার জন্য মজাদার!) - সত্যিকারের চিত্তাকর্ষক সি 64 এর কাজের জন্য আপনার ডেমো দৃশ্যের দিকে নজর দেওয়া উচিত;)
ফেলিক্স প্যালম্যান

যদি আমরা এগুলি পেতে থাকি তবে আমরা একটি জাভাস্ক্রিপ্ট সি 64 এমুলেটরটির লিঙ্কগুলি সেট আপ করতে চাই যাতে লোকেরা তাদের চালানো দেখতে পারে।
trlkly

1
@trlkly আমার জমাতে এই জাতীয় লিঙ্ক আছে, "অনলাইন ডেমো" এ ক্লিক করুন;)
ফেলিক্স প্যালম্যান

14

05 এ বি 1 ই , 13 12 বাইট

,εDlAsk×}ζ»,

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

ব্যাখ্যা

,             # print input
 ε      }     # apply to each char in input
  D           # duplicate
   l          # convert to lower case
    Ask       # get index of current char in the lower case alphabet
       ×      # repeat the char that many times
         ζ    # transpose with space as filler
          »,  # join on newlines and print

32
ছোট হাতের বর্ণমালায় চরের সূচি পেতে হবে? শুধু Askতার জন্য
ঊরীয়েল

8

পাইথ, 12 10 9 বাইট

.tm+*xGr0

পরীক্ষা স্যুট.

ব্যাখ্যা:

.tm+*xGr0dddQ   Expanded program with autofilled input variable
  m      dddQ    For each character d in the input:
       r0d     get its lowercase variant
     xG        and return its 0-based index in the alphabet 
                   (-1 if not found, for special chars)
                (empty string for A/a and special characters)
    *     d    that many of the corresponding character
   +       d   and one more for good measure (because x is 0-indexed)
.t             Transpose it and fill blanks with spaces

12 বাইট:

j.t*VmxGr0d

(নতুন লাইনের সাথে)

পরীক্ষা স্যুট.

ব্যাখ্যা:

j.t*VmxGr0d
QQ              Expanded program with autofilled input variable
Q               print the input verbatim
     m    dQ    For each character d in the input:
        r0      get its lowercase variant
      xG        and return its 0-based index in the alphabet 
                    (-1 if not found, for special chars)
   *V       Q   multiply the corresponding characters in (the second autofilled input)
                 by their alphabet indices we just calculated
                 (empty string for A/a and special characters)
 .t             Transpose it and fill blanks with spaces
j               Join the result on newlines

আউটপুট অক্ষরগুলির তালিকার একটি তালিকা হতে পারে, যতক্ষণ মনে হচ্ছে এটি অক্ষরগুলির বৃষ্টি হচ্ছে - সুতরাং আপনার প্রয়োজন নেইj
জনাব এক্সকোডার

আহ, ঠিক বলেছেন! আমি এটি রাখছিলাম কারণ 12-বাইট সংস্করণটি একটি লাইন ভারব্যাটিম মুদ্রণ করছিল এবং আমি এর মতো ফর্ম্যাটগুলি মিশ্রিত করতে পারি না এবং আমি ভুলে গিয়েছিলাম যে এখন সবকিছু ট্রান্সপোজে রয়েছে তা আমি মুছে ফেলতে পারি। ধন্যবাদ!
স্টিভেন এইচ।

8

পাইথন 3 , 83 বাইট

f=lambda s,k=65:[*{*s}-{' '}]and[s]+f([[' ',c][91>ord(c.upper())>k]for c in s],k+1)

এটি অনলাইন চেষ্টা করুন! অক্ষরের একটি তালিকা নেয়। অক্ষরের তালিকার একটি তালিকা ফেরত দেয়।

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

f=lambda s,k=65:s.strip()and s+'\n'+f(''.join([' ',c][91>ord(c.upper())>k]for c in s),k+1)

এটি অনলাইন চেষ্টা করুন! একটি স্ট্রিং লাগে। একটি স্ট্রিং প্রদান করে।


7

গণিত, 115 89 বাইট

এটা তোলে যেমন লাগে inputএকটি অক্ষরের তালিকা [{"a", "b", "c", "d", "a"}] এবং আউটপুট অক্ষরের তালিকার একটি তালিকা

Thread[PadRight[Table[#,Max@Position[Alphabet[]/."a"->#,#|ToLowerCase@#]]&/@#]/. 0->" "]&

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

মিশা লাভরভ থেকে -26 বাইট

-20 বায়ার ব্যবহারকারীর থেকে 20529 বাইট

তবে যদি আপনি পরীক্ষার ক্ষেত্রে আউটপুটটি দেখতে চান তবে এটি (128 বাইট) কোডটি
অনলাইনে চেষ্টা করে দেখুন!


ভবিষ্যতের পাঠকদের জন্য: এই অংশটি "এই উত্তরটি কেবল ম্যাথমেটিকায় ... ইন স্ক্রিপ্ট মোড , এটি শুধুমাত্র ASCII এবং বিশেষ অক্ষর যা হওয়া ASCII রূপান্তরিত করা হয়েছে (যেমন, বুঝতে -> (3 বাইটস) \[Infinity](11 বাইট))।
ব্যবহারকারী 202729

@ ব্যবহারকারী 202729 ঠিক আছে, আমি আপনার মন্তব্যটি পড়তে লোকদের সম্পাদনা করব এবং সম্বোধন করব
han ধন্যবাদ

ম্যাথমেটিকা ​​(স্ক্রিপ্ট মোড) এর জন্য গল্ফ পরামর্শ: \[Infinity](11 বাইট) Infinity(8 বাইট) বা \:221e(6 বাইট) দ্বারা প্রতিস্থাপন করা যেতে পারে । শেষটি হ'ল নাম ব্যতীত বিশেষ অক্ষরের ডিফল্ট উপস্থাপনা। (যদিও এটি মূল অংশ নয়)
ব্যবহারকারী 202729

আমরা Infinityপুরোপুরি এড়াতে পারি । সমস্যাযুক্ত অংশটি If[(d=Min@Position[Alphabet[],If[UpperCaseQ@#,ToLowerCase@#,#]])==∞,1,d]এবং আমরা এটিতে পরিবর্তন করতে পারি Max@Position[Alphabet[]/."a"->#,#|ToLowerCase@#]। (তালিকার সন্ধানে {#,b,c,d,...,y,z}, আমরা #কমপক্ষে একবার খুঁজে পাওয়ার নিশ্চয়তা পেয়েছি ))
মিশা লাভরভ

পছন্দ করেছেন ঠিক কর!
J42161217

6

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

5 অ্যাডমকে ধন্যবাদ বাইটস সংরক্ষণ করেছে

⍉∘↑⊢⍴¨⍨127|⎕A819⌶⍨∘1

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

কিভাবে?

⍴¨⍨ - প্রতিটি চর দৈর্ঘ্য আকার

    1⌈ - কমপক্ষে একটি বা

    ⎕A⍳819⌶⍨∘1 - বর্ণমালায় বড় আকারের চরের সূচি

        27| - মডুলো 27

- একটি ম্যাট্রিক্স সমতল

- এবং স্থানান্তর



@ আদম ধন্যবাদ! আপডেট হয়েছে
উরিল


5

পাইথন, 105 103 বাইট

2 টি বাইট সংরক্ষিত হয়েছে @ টিফিল্ডকে ধন্যবাদ

lambda s:'\n'.join(''.join((' '+l)[i<1or 91>ord(l.upper())>i+64]for l in s)for i in range(26)).rstrip()

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



@ফিল্ড চমৎকার ধরা, ধন্যবাদ!
ঊরীয়েল

5

পাইথন 2 , 111 106 99 98 97 87 93 বাইট

s=input()
i=65
while s.strip():print s;s=''.join([' ',c][91>ord(c.upper())>i]for c in s);i+=1

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


whileexecকয়েকটি বাইট সংরক্ষণ করার জন্য প্রতিস্থাপন করা যেতে পারে , iআরও একটি বাঁচাতে 87
রড

ওপি বলছে বহির্মুখী ট্রিলিং নিউলাইনগুলিকে অনুমতি দেওয়া হয় না তবে ইনপুটটি না থাকে zবা না থাকে যখন আপনার কোড সেগুলি বেশ কয়েকটি প্রিন্ট করে Z
লিন

@ লিন ফিক্সড, আমি execপরিবর্তনটি ডাবল-চেক করতে ভুলে
গিয়েছি

5

সি # (.নেট কোর) , 162 বাইট

s=>{string A="abcdefghijklmnopqrstuvwxyz",r=s;for(int i=-1;++i<s.Max(A.IndexOf);)r+='\n'+string.Concat(s.Select(c=>A.IndexOf(char.ToLower(c))>i?c:' '));return r;}

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


2
পিপিসিজিতে আপনাকে স্বাগতম এবং প্রথম প্রথম উত্তর। আপনি কয়েকটি কৌশল ব্যবহার করে আপনার কোড সংক্ষিপ্ত করতে পারেন। আপনার কোডটির আরও গল্ফযুক্ত সংস্করণ এখানে : এটি চেষ্টা করুন অনলাইনে!
ইয়ান এইচ।

মন্তব্যের জন্য ধন্যবাদ, আমি ধরে নিয়েছি যে আমার কোডটি নিজেই সম্পাদনযোগ্য হবে, তাই আমি এই অনুমানের ভিত্তিতে এটি তৈরি করেছি! মন্তব্য এবং পরামর্শ দেওয়ার জন্য ধন্যবাদ।
নেজোসান

2
আপনি যদি সি # তে গল্ফ করবেন সে সম্পর্কে আরও কিছু কৌশল পেতে চান তবে এই পোস্টটি একবার দেখুন বা বিদ্যমান সি # উত্তরগুলিতে একবার দেখুন। শুভ গল্ফিং!
ইয়ান এইচ।


1
হাই, পিপিসিজিতে আপনাকে স্বাগতম! দুর্দান্ত প্রথম উত্তর, বিশেষত এখন এটি গল্ফ হয়েছে। আমার কাছ থেকে +1 BTW, এটি বর্তমানে 180 বাইট, তাই না 162. প্রয়োজনীয় আমদানি using System.Linq;দুর্ভাগ্যবশত বাইট গোনা জুড়তে বাধ্যতামূলক (অথবা আপনি পরিবর্তন করা উচিত Maxকরতে System.Linq.Maxএবং Selectকরতে System.Linq.Max, সহজভাবে বেশী হবে যা using System.Linq;একবার।) আবার স্বাগত জানাই, এবং আপনার থাকার ভোগ করেন। ওহ, এবং আমি @ আইএনএইচ দেখতে পাচ্ছি। ইতিমধ্যে সি # তে গল্ফ করার টিপস উল্লেখ করেছেন। <সমস্ত ভাষা> এ গল্ফ করার টিপসগুলি পড়তে আগ্রহী হতে পারে।
কেভিন ক্রুজসেন


4

পার্ল 5 , 43 বাইট

41 বাইট কোড + 2 এর জন্য -nl

$c=A;print,s/$c|[^a-z]/ /gi,$c++while/\S/

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


1
[_0-9] অক্ষরের জন্য লুপ, সম্ভবত s/["-$c]/ /giএবং -lপ্রয়োজন নেই
নাহুয়েল ফিউইলুল

@ নাহুয়েলফৌইলুল আহ, হ্যাঁ, আমি পরীক্ষার ক্ষেত্রে খুব দ্রুত ছিলাম। এগুলি ওপিতে যুক্ত করা উচিত! :) ধন্যবাদ! +4 :(
ডম হেস্টিংস

আমার পরামর্শটি 32 থেকে 126 (Z এর চেয়ে বেশি নন আলফা) কোনও অক্ষরের জন্য কাজ করে না
নাহুয়েল ফুইলুল

@ নাহুয়েলফিউলুল সমস্ত প্রয়োজনীয়তার সাথে সংক্ষিপ্ততর উপায় খুঁজে পাচ্ছে না ... আমি খেলতে থাকব ...
ডম হেস্টিংস

4

জাভাস্ক্রিপ্ট (ES6), 87 78 76 বাইট

-9 বাইট ধন্যবাদ @RickHitchcock
-2 ধন্যবাদ বাইট @Neil

f=(s,i=10)=>s.trim()&&s+`
`+f(s.replace(/./g,c=>parseInt(c,36)>i?c:" "),i+1)

স্ট্রিং হিসাবে ইনপুট নেয় এবং একটি ট্রেলিং করা নতুন লাইনের সাথে ফিরে আসে।

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


76 বাইট (এক নতুন লাইনের পিছনে): f=(s,i=10)=>s.trim()&&s+'newline'+f(s.replace(/./g,c=>parseInt(c,36)-i?c:" "),i+1)
রিক হিচকক

@ রিক হিচকক যা সংখ্যার ইনপুট স্ট্রিংয়ের জন্য অসীম লুপ বলে মনে হচ্ছে: এটি অনলাইনে চেষ্টা করুন! । ধাপে ধাপে পরিবর্তনের ধারণাটি sসত্যিই দুর্দান্ত।
জাস্টিন মেরিনার 15

আহ, ভাল কথা। এটি 2 বাইটের দামের সাথে নির্ধারণ করা যেতে পারে:parseInt(c,36)-i>0
রিক হিচকক

1
@ রিক হিচকক আপনি কি parseInt(c,36)>i2 বাইট সংরক্ষণের পরিবর্তে ব্যবহার করতে পারবেন না ?
নিল

@ নীল, দুহ জাস্টিন: নীল কি বলেছে। :)
রিক হিচকক

4

আর, 118 114 বাইট

function(a)while(grepl("[^ ]",a)){F=F+1;cat(a,"\n");for(j in c("[^a-zA-Z]",letters[F],LETTERS[F]))a=gsub(j," ",a)}

এই 4 বাইট বন্ধের জন্য @ জিউজ্পেকে ধন্যবাদ

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

সংক্ষিপ্ত ব্যাখ্যা:

function(a)
    while(grepl("[^ ]",a)){ #As long as the string is not just spaces.
        F=F+1 #Increment letter counter (F is FALSE, hence 0 by default)
        cat(a,"\n") #Print string
        for(j in c("[^a-zA-Z]",letters[F],LETTERS[F])) #Get rid of non-letters, and the current letter in lower and upper case
             a=gsub(j," ",a)
    }

ওহহ, অপেক্ষা করুন, সম্ভাব্য সমস্যা: যদি aসমস্ত শূন্যস্থান থাকে তবে এটি কোনও কিছুই মুদ্রণ করবে না ... তবে আপনি এই whileশর্তটি পরিবর্তন করতে পারবেন grepl()|!Fযা এখনও আপনার মূল উত্তরের চেয়ে একটি বাইট ছোট।
জিউসেপ

4

আর , 125 123 বাইট

প্ল্যানাপাস দ্বারা আউটগল্ফড

for(i in 1:max(p<-pmax(1,match(tolower(S<-el(strsplit(scan(,""),''))),letters),na.rm=T)))cat(ifelse(p<i," ",S),'\n',sep='')

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

একক পেছনের নতুন লাইনের সাহায্যে প্রিন্ট করুন এবং পড়ুন stdin()

আসুন এটি ভেঙে দিন:

S <- el(strsplit(scan,""))            # split the string to characters

m <- match(tolower(S),letters)        # 1-based index in letters (lowercase a-z)
p <- pmax(1,m,na.rm=T)                # parallel max, replaces NA (non-alphabet) or 0 with 1
for(i in 1:max(p)){                   # iterate
 cat(                                 # print
  ifelse(p<1,' ',S),                  # the corresponding letter in S if p>=1, space otherwise
  '\n',sep='')                        # newline, and no spaces between chars
}

বিকল্প উত্তর, 106 বাইট

function(S)for(i in 1:max(p<-pmax(1,match(tolower(S),letters),na.rm=T)))cat(ifelse(p<i,' ',S),'\n',sep='')

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

ফাংশন; স্টাডাউট প্রিন্ট করে তবে মূলত আমার উপরের প্রতিক্রিয়াগুলি স্ট্রিংকে বিভক্ত করার পরিবর্তে অক্ষরের একটি তালিকা গ্রহণ করতে পোর্ট করে, তাই আমার মনে হয় এটি "প্রতারণা"। প্লেন, রেজেনেক্সের সাথে প্ল্যানাপাসের অ্যাপ্রোচ বেশ ঝরঝরে!



3

জাপট , 15 14 11 10 বাইট

জাপটের নতুন স্ট্রিং প্যাডিং পদ্ধতিগুলির সাথে খেলার প্রথম সুযোগ যাতে এখনও উন্নতির অবকাশ থাকে।

y_ùZInZu c

চেষ্টা করে দেখুন


ব্যাখ্যা

স্ট্রিং এর অন্তর্নিহিত ইনপুট U

y_

Uএকটি ফাংশনের প্রতিটি কলাম পাস করুন , যেখানে Zবর্তমান উপাদান (বা চিঠি, এই ক্ষেত্রে)।

InZu c

Zবড় হাতের ( u) রূপান্তর করুন , এর চারকোড ( c) এবং ( u) 64 ( I) বিয়োগ করুন ।

ùZ

Zযতক্ষণ না এটি দৈর্ঘ্যে পৌঁছায় ততক্ষণ নিজের সাথে শুরু করুন Pad


বিকল্প

y_ùZ9aZn36

চেষ্টা করে দেখুন


তবে আপনি একটি খ সংরক্ষণ করতে পরিবর্তন ùZকরতে পারবেন না p... কিছু মনে করবেন না, এটি সত্যই চালাক ...
ETH প্রোডাকশন

@ ইথ প্রডাকশনস: আমি কয়েকটি চেষ্টা করেছি p( সম্পাদনা ইতিহাসে 1 টিও হতে পারে) তবে ùশেষ পর্যন্ত আমি জিতেছি।
শেগি

3

হাস্কেল , 137 136 127 119 বাইট

import Data.Char
p c=last$0:[k|k<-[0..25],k+65==ord(toUpper c)]
f s=[[last$c:[' '|i>p c]|c<-s]|i<-[0..maximum$map p s]]

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

বেশ লম্বা তবে এটিকে আরও ছোট করার কোনও উপায় আমি ভাবতে পারি না। আমার মনে হয় যদি তবে-এর সিনট্যাক্সের চেয়ে আরও কিছুটা ছোট হতে হবে তবে আমি এটি দেখতে পাচ্ছি না।

সম্পাদনা: একটি বাইট শেভ করতে আমাকে সহায়তা করার জন্য @ স্ট্রিস্টস্টারকে ধন্যবাদ! toUpperআমদানি ব্যয়ের কারণে আমি প্রথমে ব্যবহার করিনি Data.Charতবে আমি ভুলে গিয়েছিলাম যে এটির ordচেয়ে আরও খাটো providesfromEnum

সম্পাদনা 2: @ লাইকনি আপনাকে আরও 6 টি বাইট শেভ করার জন্য এবং আমি এখন ঠিক করা একটি বাগ সনাক্ত করার জন্য ধন্যবাদ। আমি 25 এর পরিবর্তে 26 ব্যবহার করেছি কারণ আমি ভুলে গিয়েছিলাম যে হাস্কেল অ্যারেগুলি অন্তর্ভুক্ত। তারপর আমি আমি ব্যবহার করতে পারে খেয়াল lastপরিবর্তে headযা আমাকে ব্যবহার করতে সম্ভব হবে 0:বদলে ++[0]

সম্পাদনা 3: লাইকোনি আবার ধন্যবাদ 8 বাইট জন্য। আমি আসলে জায়গা সম্পর্কে ভুলে গিয়েছিলাম। কিছু কারণে সাব্লাইম টেক্সট এগুলি ছাড়াই বাইরে চলে যায় এবং আমি এটি সরিয়ে দিতে ভুলে গেছি। আমি অবহিত ছিলাম না যে লাইনের তালিকাগুলির তালিকা অনুমোদিত ছিল, আমার নিয়মগুলি আরও মনোযোগ সহকারে পড়া উচিত ছিল।


1
এজেডের পাশাপাশি অ্যাজেড এবং তারপরে মোডিং পরীক্ষা করা এড়াতে আপনি কি ইনপুটটি ছোট করতে পারেন?
স্ট্রাস্টার

@ স্ট্রিস্টস্টার হ্যাশেল ইন টু লোয়ার এবং টু আপ ফাংশনগুলির জন্য ডেটা আমদানি করা প্রয়োজন har চার এটি সংরক্ষণের চেয়ে বেশি চর ব্যয় করে। টিআইও
ব্যবহারকারী 1472751

1
আপনি হাসকেলে গল্ফ করার টিপসটি একবার দেখতে চান । যেমন if i>p c then ' ' else cছোট করা যেতে পারে last$c:[' '|i>p c]
লাইকনি

আরও দুটি জিনিস: [k | লাইনের একটি তালিকাতে একটি অপ্রয়োজনীয় স্থান রয়েছে এবং তা ফেরত দেওয়ার অনুমতি রয়েছে, সুতরাং আপনার দরকার নেই unlines। অবশেষে, আপনি আমাদের হাস্কেল চ্যাট রুমে আগ্রহী হতে পারেন ।
লাইকনি

3

এক্সেল ভিবিএ, 110 বাইট

বেনামে ভিবিই ইমিডিয়েট উইন্ডো ফাংশন যা প্রত্যাশিত প্রকারের Variant\Stringপরিসীমা থেকে ইনপুট নেয় [A1]এবং এটি ভিবিই তাত্ক্ষণিক উইন্ডোতে বর্ণমালা বৃষ্টি করতে এটি ব্যবহার করে।

?[A1]:For i=1To 26:For j=1To[Len(A1)]:c=Mid([A1],j,1):d=Asc(UCase(c)):?IIf((d>64+i)*(d<91),c," ");:Next:?:Next

নমুনা I / O

[A1]="qwertyuiop[]ASDFGHJKL:'zxcvbnm,./"
?[A1]:For i=1To 26:For j=1To[Len(A1)]:c=Mid([A1],j,1):d=Asc(UCase(c)):?IIf((d>64+i)*(d<91),c," ");:Next:?:Next
qwertyuiop[]ASDFGHJKL:'zxcvbnm,./
qwertyuiop   SDFGHJKL  zxcvbnm   
qwertyuiop   SDFGHJKL  zxcv nm   
qwertyuiop   SDFGHJKL  zx v nm   
qwertyuiop   S FGHJKL  zx v nm   
qw rtyuiop   S FGHJKL  zx v nm   
qw rtyuiop   S  GHJKL  zx v nm   
qw rtyuiop   S   HJKL  zx v nm   
qw rtyuiop   S    JKL  zx v nm   
qw rtyu op   S    JKL  zx v nm   
qw rtyu op   S     KL  zx v nm   
qw rtyu op   S      L  zx v nm   
qw rtyu op   S         zx v nm   
qw rtyu op   S         zx v n    
qw rtyu op   S         zx v      
qw rtyu  p   S         zx v      
qw rtyu      S         zx v      
 w rtyu      S         zx v      
 w  tyu      S         zx v      
 w  tyu                zx v      
 w   yu                zx v      
 w   y                 zx v      
 w   y                 zx        
     y                 zx        
     y                 z         
                       z 

পাশবিক!!! এটি ?A1:...
আপনিও বানাতে

@ এলএস_ᴅᴇᴠ, দুর্ভাগ্যক্রমে, যেহেতু []ইঙ্গিত করে যে অন্তর্ভুক্ত স্ট্রিংটি কোনও কার্য বুকের মধ্যে / অন / কোনও অবজেক্টের কাছে মূল্যায়ন করা উচিত, [A1]কলটি কমতে পারে না A1- কারণ এটি পরিসীমা থেকে প্রাথমিক ইনপুট গ্রহণ এবং মুদ্রণ করবে না [A1]; বরং এটি কেবল একটি খালি লাইন ছেড়ে যাবে এবং পরবর্তী সমস্ত লাইন মুদ্রিত হবে
টেলর স্কট

ওপস, আপনি ঠিক বলেছেন ... এটি খেয়াল করেনি!
LS_ᴅᴇᴠ

3

পিএইচপি, 69 78 77 85 + 1 বাইট

for($c=A;!$c[1]&&~trim($s=&$argn);$s=eregi_replace("[^".++$c."-Z]"," ",$s))echo"$s
";

পিএইচপি <7 প্রয়োজন। পাইপ হিসাবে চালনা করুন-nR বা এটি অনলাইনে চেষ্টা করুন


@ শেগি ধন্যবাদ নির্দেশ করার জন্য ধন্যবাদ। এটি এখন সম্পূর্ণ।
টাইটাস

জন্য +1 $c=A;!$c[1];$c++। সুন্দর! দুঃখজনকভাবে extraneous trailing newlines are not allowed (single \n on final line is acceptable)। সুতরাং এটি ধারণ করে না এমন সমস্ত স্ট্রিংয়ের জন্য ব্যর্থ z
ক্রিস্টোফ

1
@ ক্রিসটফ স্থির হয়েছে
টাইটাস

3

বাশ + সেড, 37

sed -rne"/^ *$/q;p;s/\W|"{a..z}/\ /gi

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


দেখে মনে হচ্ছে এটি বর্ণমালায় 1-অনেক বেশি বার অক্ষরগুলি পুনরাবৃত্তি করছে
স্ট্রিস্টার

@ স্ট্রিস্টস্টার আমি মনে করি এটি এখন ঠিক হয়ে গেছে।
ডিজিটাল ট্রমা

2

সি (জিসিসি) , 189 বাইট

#define F for(q=c,p=s;*p;++p,++q)
char*p,*q,s[99],c[99];main(h){gets(s);F{*q=*p>64&&*p<91?*p-65:*p>96&&*p<123?*p-97:0;h=h>*q?h:*q;}for(puts(s);h--;){F{putchar(*q?--*q,*p:32);}putchar(10);}}

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


এর puts("");পরিবর্তে চেষ্টা করুনputchar(10)
কনার ও'ব্রায়ান


2

রুবি, 70 67 74 বাইট

f=->s{puts s;(?b..?z).each{|c|s.gsub! /[^#{c}-z]/i,' ';puts s if s=~/\S/}}

কিছু প্যারেন বাদ দেওয়া হতে পারে তা নির্দেশ করার জন্য @ টুক্কাএক্সকে ধন্যবাদ (-৩ বাইট)

দুর্ভাগ্যক্রমে আমাকে তখন 7 বাইট যুক্ত করতে হয়েছিল কারণ আসল সংস্করণ "জেড" হ্যান্ডেল করতে ব্যর্থ হয়েছিল।

এটিকে কল করা:

f.call('The quick brown fox jumps over the lazy dog!')
The quick brown fox jumps over the lazy dog!
The quick brown fox jumps over the l zy dog
The quick  rown fox jumps over the l zy dog
The qui k  rown fox jumps over the l zy dog
The qui k  rown fox jumps over the l zy  og
Th  qui k  rown fox jumps ov r th  l zy  og
Th  qui k  rown  ox jumps ov r th  l zy  og
Th  qui k  rown  ox jumps ov r th  l zy  o
T   qui k  rown  ox jumps ov r t   l zy  o
T   qu  k  rown  ox jumps ov r t   l zy  o
T   qu  k  rown  ox  umps ov r t   l zy  o
T   qu     rown  ox  umps ov r t   l zy  o
T   qu     rown  ox  umps ov r t     zy  o
T   qu     rown  ox  u ps ov r t     zy  o
T   qu     row   ox  u ps ov r t     zy  o
T   qu     r w    x  u ps  v r t     zy
T   qu     r w    x  u  s  v r t     zy
T    u     r w    x  u  s  v r t     zy
T    u       w    x  u  s  v   t     zy
T    u       w    x  u     v   t     zy
     u       w    x  u     v         zy
             w    x        v         zy
             w    x                  zy
                  x                  zy
                                     zy
                                     z

ল্যাম্বদা সংজ্ঞাতে প্রথম বন্ধনীগুলি সরানো যেতে পারে। +1 টি।
ইয়াতসি

2

ওরাকল এসকিউএল, 186 বাইট

ধরে নিন স্ট্রিংটি tকলামের কোনও টেবিলে থাকবে v:

WITH a(s,l)AS(SELECT v,64 FROM t UNION ALL SELECT REGEXP_REPLACE(s,'[^'||CHR(l+1)||'-Z]',' ',1,0,'i'),l+1 FROM a WHERE l<90)SELECT LISTAGG(RTRIM(s),CHR(10))WITHIN GROUP(ORDER BY l)FROM a

এসকিউএল ফিডল

ওরাকল 11 জি আর 2 স্কিমা সেটআপ :

CREATE TABLE t ( v ) AS
SELECT '~|[abc<0>cba]|~' FROM DUAL
/

প্রশ্ন 1 :

WITH a(s,l)AS(
  SELECT v,64 FROM t
UNION ALL
  SELECT REGEXP_REPLACE(s,'[^'||CHR(l+1)||'-Z]',' ',1,0,'i'),l+1
  FROM a
  WHERE l<90
)
SELECT LISTAGG(RTRIM(s),CHR(10))WITHIN GROUP(ORDER BY l)
FROM a

ফলাফল :

|      LISTAGG(RTRIM(S),CHR(10))WITHINGROUP(ORDERBYL) |
|-----------------------------------------------------|
| ~|[abc<0>cba]|~                                     |
|    abc   cba                                        |
|     bc   cb                                         |
|      c   c                                          |


2

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

p c=sum[length[a..c]|a:e<-["B[","b{"],[c]<e]
f s=[[last$c:[' '|i>p c]|c<-s]|i<-[0..maximum$p<$>s]]

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

উদাহরণ ব্যবহার: f "[Abc]"লাইনের একটি তালিকা উৎপাদ: ["[Abc]"," bc "," c "]putStr.unlines.f $ "[Abc]"সুন্দর-মুদ্রিত আউটপুট জন্য ব্যবহার করুন :

[কখগ]
  খ্রিস্টপূর্ব
   গ

আংশিক দ্বারা অনুপ্রাণিত এখন সরাসরি উপর ভিত্তি করে user1472751 এর মধ্যে Haskell উত্তর


পূর্ববর্তী পদ্ধতি ( 100 99 বাইট)

f s=[h|i<-[0..26],h<-[[(c:concat[c<$[a..c]|[a,e]<-["B[","b{"],c<e]++cycle" ")!!i|c<-s]],any(>' ')h]

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


2

পাওয়ারশেল , 122 127 বাইট

param($a)$a;(1..25|%{$i=$_;(-join([char[]]$a|%{(' ',$_)[$_-match'[a-z]'-and[math]::Max(0,($_-bor32)-96-$i)]})).TrimEnd()})-ne''

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

পাওয়ারশেল কীভাবে [char]এবং এর মধ্যে গতিশীলরূপে কাস্ট করতে পারে তার জন্য সংক্ষিপ্ত ধন্যবাদ [int], তবে বহির্মুখী শ্বেত স্পেস অপসারণের কারণে এবং কোনও স্থান বা চরিত্রের আউটপুট নির্ধারণ করতে পারে তার গণনার জন্য দীর্ঘ।

বিটক্র্যাকারকে ধন্যবাদ বুগফিক্স।


দুর্ভাগ্যক্রমে, এটি ~|[abc<0>cba]|~পরীক্ষার ক্ষেত্রে ব্যর্থ । এটি ব্যবহার করে দেখুন:param($a)$a;(1..25|%{$i=$_;(-join([char[]]$a|%{(' ',$_)[$_-match'[a-z]'-and[math]::Max(0,($_-bor32)-96-$i)]})).TrimEnd()})-ne''
বেটক্র্যাকার

@ বিটক্র্যাকার ভাল ক্যাচ এটি তুলনা পরিচালনা করার জন্য একটি চতুর উপায়। ধন্যবাদ!
অ্যাডমবর্কবার্ক

2

জাভা 8, 151 147 144 143 139 বাইট

s->{String x="\n"+s;for(int i=64,t;++i<91;)for(char c:x.toCharArray())s+=(t=c&~32)>64&t<91&t>i|c<11?c:" ";return s.replaceAll("\\s+$","");}

ব্যাখ্যা:

এখানে চেষ্টা করুন।

s->{                   // Method with String as both parameter and return-type
  String x="\n"+s;     //  Temp-String (equal to leading new-line + input)
  for(int i=64,        //  Index-integer `i` (starting at 64)
          t;           //  Temp-integer
      ++i<91;)         //  Loop (1) from 'A' (65) to 'Z' (90) (inclusive)
    for(char c:x.toCharArray())
                       //   Inner loop (2) over the character of the array
      s+=(t=c&~32)>64  //    If the current character as uppercase is larger than 'A'
         &t<91         //    and smaller or equal to 'Z'
         &t>i          //    and larger than the current index
         |c<11?        //    or the current character is a new-line
          c            //     Append the current character to `s`
         :             //    Else:
          " ";         //     Append a space to `s` instead
                       //   End of inner loop (2) (implicit / single-line body)
                       //  End of loop (1) (implicit / single-line body)
  return s             //  Return the result,
    .replaceAll("\\s+$",""); 
                       //   after we've removed all trailing spaces and new-lines
}                      // End of method

2

q , 42 37 বাইট

{(+)max[m]$(m:1+mod[.Q.a?(_)x]26)#'x}

-5 স্ট্রিস্টারে ধন্যবাদ!


পুরানো সমাধান + ব্যাখ্যা:

{(+)max[m]$'(m:1+mod[.Q.a?lower x;26])#'x}


{                                        }  / lambda func
                     .Q.a?lower x           / get lowercase of input (ignores non-alpha values) and find (?) their index in "a...z" (.Q.a). non-alpha values return `26`
                 mod[.Q.a?lower x;26]       / get mod 26 of each index, this returns 0 where index is 26
            (m:1+mod[.Q.a?lower x;26])      / add 1 and assign to m
            (m:1+mod[.Q.a?lower x;26])#'x   / m and x conform, so we can take (#) m copies of each (') x at corresponding indices
    max[m]$'(m:1+mod[.Q.a?lower x;26])#'x   / get max of m, and pad each ($') of right-side list to that length
 (+)                                        / transpose the char matrix

1
{(+)max[m]$(m:1+mod[.Q.a?(_)x]26)#'x}37 এর জন্য, প্রশ্নটি তৈরি করার সময় আমি কীভাবে এটি সমাধান করেছি তা স্মরণে রাখতে পারছি না, যদিও সম্ভবত খুব অনুরূপ!
স্ট্রিস্টার

@ স্ট্রিস্টস্টার, ধন্যবাদ! আপডেট করা হয়েছে। কে এর সম্পর্কে জানতাম না _, আমি lowerকিউ ইন্টারপ্রেটারে টাইপ করে পেয়েছি k){$[~t&77h>t:abs@@x;.z.s'x;19<t;.z.s@. x;~t in 10 11h;'`type;_x]}। সুতরাং আমার উত্তর কি হা হা
স্ক্রোল

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