এটি বৃষ্টির অক্ষর করুন


31

এই চ্যাট মিনি চ্যালেঞ্জ দ্বারা অনুপ্রাণিত ।

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

এটি সম্ভবত কিছুটা বিভ্রান্তিকর, সুতরাং এখানে একটি উদাহরণ দেওয়া হয়েছে (সেই সিএমসি থেকে নেওয়া):

Hello World

          d
H
       o
  llo

         l
      W
 e
        r

কীভাবে Hএক স্থান নীচে, dশূন্য নীচে এবং lloসমস্ত একসাথে লাইন হওয়ার ক্ষেত্রে কীভাবে তা লক্ষ্য করুন। r, সুদূরতম ডাউন এ 9, কিন্তু এখনও কম উপর থেকে দূরে স্ট্রিং দৈর্ঘ্যের তুলনায় হয়। এটি কেবলমাত্র একটি উদাহরণ, ইনপুট দেওয়ার জন্য আরও কয়েক ডজন সম্ভাবনা রয়েছে Hello World

অন্যান্য উদাহরণ হতে পারে:

test

t
 e
  s
   t


PP&CG

  & G
 P

P  C

  • ইনপুট এবং আউটপুট যে কোনও সুবিধাজনক পদ্ধতি দ্বারা দেওয়া যেতে পারে ।
  • ইনপুটটি গ্যারান্টিযুক্ত খালি নয় (অর্থাত্ আপনি কখনই ""ইনপুট হিসাবে পাবেন না )।
  • আপনি এটি STDOUT এ মুদ্রণ করতে পারেন বা কোনও ফাংশন ফলাফল হিসাবে এটি ফিরিয়ে দিতে পারেন।
  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য।
  • কোনও পরিমাণ বহিরাগত শ্বেত স্পেস গ্রহণযোগ্য, যতক্ষণ না অক্ষর যথাযথভাবে সাজায় (যেমন, একটি আয়তক্ষেত্র হিসাবে প্যাড নির্দ্বিধায়)।
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।

2
ভেবেছি শিরোনামটি পড়লে এটি অ্যানিমেশনটিতে জড়িত হবে। আমাদের কি এর একটি অ্যানিমেটেড সংস্করণ রয়েছে?
শেগি

@ শেগি এটি নয় যে আমি দেখেছি বা সন্ধান করতে সক্ষম হয়েছি।
অ্যাডমবর্কবার্ক

"যে কোনও পরিমাণ বহিরাগত শ্বেত স্পেস গ্রহণযোগ্য" - এর মধ্যে কি সাদা স্থানের একটি শীর্ষস্থানীয় লাইন অন্তর্ভুক্ত রয়েছে?
জোনাথন অ্যালান

আমি জানি আমাদের ম্যাট্রিক্স কোডের উপর ভিত্তি করে একটি রয়েছে, তবে ভাগ্য those 2 টি কীওয়ার্ড সহ এটি সন্ধান করুন! আইডিয়াটি স্যান্ডবক্স করলে আপনার কি আপত্তি আছে?
শেগি

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

উত্তর:


5

আর , 104 বাইট

function(s){m=matrix(" ",l<-nchar(s),l)
m[cbind(1:l,sample(l,l,T))]=el(strsplit(s,""))
write(m,1,l,,"")}

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

স্ট্রিং হিসাবে ইনপুট; stdout লিখেছেন।


আপনি scan(,'')একগুচ্ছ কলগুলি ব্যবহার করে এবং বাসা বেঁধে বাঁচাতে পারবেন তবে সত্যি বলতে আমি ফাংশনটির পদ্ধতির পক্ষে যথেষ্ট পছন্দ করি, এটি অন্যটি ন্যূনতম লাভের জন্য ঘৃণ্য। কিছু ধারণা স্ফুলিপ্ত হতে পারে, যদিও। এটি অনলাইন চেষ্টা করুন!
অপরাধমূলকভাবে

আমি মনে করি (-1 বাইট) এর sample(l,,T)পরিবর্তে sample(l,l,T)পর্যাপ্ততা রয়েছে।
রবিন রাইডার

4

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

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

a=>a.map((_,y)=>a.map((c,x)=>Math.random()<.5|!a[y+1]?(a[x]=' ',c):' '))

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


আমি মনে করি আপনি বার্ষিক অভিব্যক্তি অবহেলা না করে আপনি একটি বাইট সংরক্ষণ করতে পারেন।
অরথপ্লেক্স

2
@ অরথপ্লেক্স এটি কাজ করবে না কারণ (0|'A') === (0|undefined)এবং শেষ অক্ষরে উপস্থিত অক্ষরের আর নিশ্চয়তা দেওয়া হবে না। (সুতরাং, মূলত, এটি |!a[y+1]পুরোপুরি সরিয়ে ফেলার মতোই ))
আর্নল্ড

গুগল বলেছে যে Math.random()[0, 1) তে একটি নম্বর ফেরত দেয়, তাই Math.random()<.5হয়ে উঠতে পারে না Math.random()>0?
nedla2004

@ nedla2004 তত্ত্বের ক্ষেত্রে, হ্যাঁ। অনুশীলনে, আমি মনে করি এটি খুব সম্ভবত যে PRNG এর বাস্তবায়ন (গুলি) সম্ভবত ঠিক ফেরত আসতে পারে না ( যথেষ্ট পরিমাণ 0 বন্ধ করে দিন যাতে সমস্ত কনফিগারেশন আসলে ঘটার সুযোগ পায়)। যেহেতু আমরা কোনও ভাষা এর প্রয়োগের মাধ্যমে সংজ্ঞায়িত করি, তাই ব্যক্তিগতভাবে আমি এটি অবৈধ বলে মনে করি। 0 0
আরনাউল্ড

আপনি কোন প্ল্যাটফর্মের জন্য আপনার জাভাস্ক্রিপ্ট তৈরি করেছেন? যেহেতু চ্যালেঞ্জটির স্বতন্ত্রতার প্রয়োজনীয়তা রয়েছে এবং এটি একটি সর্বোচ্চ ইনপুট নির্দিষ্ট করে না, তাই এটি সত্যই গুরুত্বপূর্ণ, কারণ বেশিরভাগ প্ল্যাটফর্মটি এমন একটি math.random()বাস্তবায়ন ব্যবহার করে যা একটি অভ্যন্তরীণ রাষ্ট্র রয়েছে এবং এইভাবে অনন্য আউটপুট উত্পন্ন করতে পারে না।
ফেরিবিগ


4


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

@ কনর, আপনি 0|:]{.~"+_2-#?@##নিজের উত্তরের আচরণ পরিবর্তন না করেই 17 বাইটের জন্য করতে পারেন ।
জোনাহ

1
@ জোনাঃ হ্যাঁ, ঠিক আছে। আমি এটি উপলব্ধি করেছিলাম এবং আরও 17 বাইট সমাধান রয়েছে।
গ্যালেন ইভানভ

4

জাপট , 8 বাইট

@ শেগি থেকে -1 বাইট

y_iUÊö ç

y_iUÊö ç        Full Program. Implicit input U
y_              transpose and map each row in U (Call it X)
  i             Insert at the beginning of X:
       ç        " " repeated ↓ many times
   UÊö          random integer in [0, length of U] 
                implicit transpose back and output

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



lol @ শেগি আমি কিছুক্ষণ আগে একই উত্তর পেয়েছি, আমি কেবল একটি ব্যাখ্যা যুক্ত করছি। যাইহোক ধন্যবাদ গ:
লুইস ফিলিপ দে জেসুস মুনোজ

3

এপিএল (ডায়ালগ ইউনিকোড) , 16 বাইট এসবিসিএস

বেনামে ট্যাসিট প্রিফিক্স ফাংশন

⍉∘↑⊢↑¨⍨∘-∘?≢⍴1+≢

 স্ট্রিং দৈর্ঘ্য

1+ একজন এতে যুক্ত হয়েছে

≢⍴ "দৈর্ঘ্য" এর অনুলিপি

∘? 1 পরিসীমা এলোমেলো পূর্ণসংখ্যা… সেগুলি, এবং তারপরে ...

∘- ত্যাগ করুন এবং তারপর…

⊢↑¨⍨ প্রতিটি অক্ষর থেকে অনেকগুলি উপাদান নিয়ে যান, ফাঁকা স্থান দিয়ে বাম দিকে প্যাড করুন

∘↑ ম্যাট্রিক্সে স্ট্রিংগুলির তালিকা মিশ্রণ করুন, ডানদিকে ফাঁকা স্থানের সাথে প্যাডিং করুন

 TRANSPOSE

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



2

জেলি , 10 বাইট

³LŻX⁶x;)z⁶

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

      )    | For each input character
³L         | Length of original input
  Ż        | 0..length
   X       | Random number from that list
    ⁶x     | That number of spaces
       ;   | Concatenate to the character
        z⁶ | Finally transpose with space as filler

আমরা ফাঁকা স্থানগুলির একটি শীর্ষস্থানীয় লাইন আউটপুট করতে পারি, সুতরাং 9 বাইট (যদিও আমি মনে করি যে এখানে 8 থাকতে পারে ...)
জোনাথন অ্যালান

@ জোনাথন অ্যালান কি এই পরিসরের সমান হবে না 0..(length - 1)? প্রশ্নটি 0 এবং স্ট্রিংয়ের দৈর্ঘ্যের মধ্যে নির্দিষ্ট করে। নাকি আমি কিছু মিস করছি?
নিক কেনেডি

ওহ হ্যাঁ, আমি অন্তর্ভুক্তি-নেস সম্পর্কে ভুলে গিয়েছিলাম - যখন আমি তিনদিন আগে যখন হোয়াইটস্পেসের শীর্ষস্থানীয় সম্পর্কে জিজ্ঞাসা করতাম তখন আমি নিশ্চিত যে আমার 9 টি ছিল, এবং আমি মনে করি যে এটি আমার উপরে প্রস্তাবিত ছিল না ... hmm
জোনাথন অ্যালান


2

পিএইচপি , 88 বাইট

for($o='';$i<$l=strlen($argn);$o[$i+$l*rand(0,$l)]=$argn[$i++]);echo chunk_split($o,$l);

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

অথবা পিএইচপি এর ক্রিপ্টোগ্রাফিক র্যান্ডম পূর্ণসংখ্যার ফাংশন ব্যবহার করে 94 বাইট

for($o='';$i<$l=strlen($argn);$o[$i+$l*random_int(0,$l)]=$argn[$i++]);echo chunk_split($o,$l);

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

STDINআউটপুট থেকে ইনপুট STDOUT। হিসাবে চালান:

$ echo Hello World|php -nF rain.php
   l  W    
  l        

 e      r d

H      o   

         l 


    o 

-1 বাইট (জায়গার পরিবর্তে খালি স্ট্রিং) এবং +1 বাইট (নিয়মের পাশে ভুল) কেবলমাত্র @ এএসসিআইআই-তে!


আপনি যদি <?phpএটি ?>বন্ধ করে থাকেন তবে এটির অনুমতি নেই কিনা তা অবাক করে দিন । $oখালি স্ট্রিং হলে এটি ঠিক আছে বলে মনে হয়
ASCII- কেবল

@ এএসসিআইআই, আপনি ঠিক বলেছেন, খালি স্ট্রিংটিও কাজ করবে (আরও কিছু অভিযোগ করার সাথে)। আমি নিশ্চিত না যে ট্যাগগুলি বন্ধ করে এবং পুনরায় খোলার বিষয়ে রায় দেওয়া হয়েছে, আমি আপ এবং আপ থাকাকালীন এটি আপডেট করব। ধন্যবাদ!
640 কেবি

নোট করুন যে এই চ্যালেঞ্জের নিয়মগুলিতে বলা হয়েছে যে "সমস্ত সম্ভাব্য আউটপুটগুলিতে আবার একটি অ-শূন্য সম্ভাবনা থাকতে হবে", পিএইচপি randফাংশন দিয়ে এটি সম্ভব নয় , কারণ আপনার একটি ইনপুট পাঠ্য থাকতে পারে যা অভ্যন্তরের আকারের চেয়ে বেশি এলোমেলো প্রয়োজন বীজ র‌্যান্ড ব্যবহার করে, সুতরাং প্রযুক্তিগতভাবে আপনার উত্তর সমস্ত পরিস্থিতিতে এই শর্তটি পূরণ করতে ব্যর্থ হয়
ফেরিবিগ

@ ফেরিবিগ আমি সম্মত হলাম যে পিএইচপি / লিবিসি পিএইচসি / লিবিসি randখুব বেশি কার্যকর নয়, তবে পিএইচপি (7.1+) এর সমস্ত সমর্থিত / উত্পাদনের সংস্করণগুলি mt_randএলোমেলো সংখ্যা জেনারেশনের জন্য অভ্যন্তরীণভাবে মের্সেন টুইস্টার আরএনডি ( ) ব্যবহার করে। আপনার উদ্বেগ কি এই চ্যালেঞ্জের জন্য যথেষ্ট এলোমেলো নয়?
640KB

mt_randএছাড়াও অভ্যন্তরীণভাবে সিউডো র্যান্ডম নম্বর সিস্টেম ব্যবহার করে এবং এর সীমাবদ্ধতাও রয়েছে। ধরে নিই যে পিএইচপি 64৪ বিট সংখ্যার সাথে সংকলিত হয়েছে (এবং বীজ, এই সম্পূর্ণ পরিসীমাটির জন্য ব্যবহৃত randবা mt_randগ্রহণ করে) ১৩ টি অক্ষরের দৈর্ঘ্য বা তার চেয়ে কম পর্যন্ত শব্দগুলির অনন্য আউটপুট তৈরি করতে পারে। আপনি আমাকে জিজ্ঞাসা করলে খুব সীমাবদ্ধ
ফেরিবিগ

1

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

↑Eθ◧ι⊕‽Lθ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। সম্পাদনা করুন: কেবলমাত্র ASCII- এর জন্য 1 বাইট সংরক্ষণ করা হয়েছে ব্যাখ্যা:

  θ         Input string
 E          Map over characters
        θ   Input string
       L    Length
      ‽     Random value
     ⊕      Incremented
    ι       Current character
   ◧        Padded to length
↑           Print rotated

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


পরিবর্তে মুদ্রণ কাজ করবে যদি অবাক?
ASCII- কেবল

1

05 এ বি 1 ই (উত্তরাধিকার) , 9 বাইট

εIgÝΩú}ζ»

স্ট্রিং বা অক্ষরের তালিকা হিসাবে ইনপুট করুন (হয় ঠিক আছে)।

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

অনেক ধীর 9-বাইট বিকল্প:

gDÝsãΩúζ»

অক্ষরের তালিকা হিসাবে ইনপুট করুন।

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

উভয়ই 05AB1E এর উত্তরাধিকার সংস্করণ ব্যবহার করুন, যেহেতু নতুন সংস্করণটির €Sআগে একটি স্পষ্ট প্রয়োজনζ ...

ব্যাখ্যা:

ε       # Map each character in the (implicit) input to:
 Ig     #  Take the length of the input
   Ý    #  Create a list in the range [0, input-length]
    Ω   #  Pop and push a random integer from this list
     ú  #  Pad the current character with that many leading spaces
      # After the map: zip/transpose; swapping rows/columns (with space as default filler)
  »     # Then join all strings by newlines (and it output implicitly as result)

g          # Get the length of the (implicit) input-list
 D         # Duplicate this length
  Ý        # Create a list in the range [0, input-length]
   sã      # Take the cartesian product of this list that many times
     Ω     # Pop and push a random list from this list of lists of integers
      ú    # Pad the characters in the (implicit) input-list with that many spaces
       ζ   # Zip/transpose; swapping rows/columns (with space as default filler)
        »  # Then join all strings by newlines (and it output implicitly as result)

এর লাইন ধরে ভাবছিলাম gD¸s∍ÝδΩকিন্তু এটি আরও দীর্ঘ ... এবং ওও ... এটি নতুন 05AB1E তেও কাজ করে না;)।
ম্যাজিক অক্টোপাস উরন


1

জুলিয়া, 69 বাইট

f(s)=(n=length(s);z=fill(' ',n,n);for i=1:n z[rand(1:n),i]=s[i]end;z)

এটি একটি ফাংশন সংজ্ঞায়িত fকরে এমন একটি গ্রহণ Stringবা Vector{Char}এবং আয় একটিMatrix{Char}

Ungolfed:

function f(s)
    n = length(s)
    z = fill(' ', n, n)  # an n×n matrix of spaces
    for i = 1:n
        # set a random entry in the ith column to the ith character in s
        z[rand(1:n),i] = s[i] 
    end
    z
end

উদাহরণ:

julia> f("test")
4×4 Array{Char,2}:
 't'  ' '  ' '  ' '
 ' '  ' '  ' '  ' '
 ' '  'e'  ' '  't'
 ' '  ' '  's'  ' '

এটি অবশ্যই আরও ভাল হতে পারে; আমার গল্ফ দক্ষতা বেশ মরিচা।

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



1

পাওয়ারশেল , 108 102 98 বাইট

-4 বাইট মজির ধন্যবাদ

$a=1..($z=($y=$args|% t*y).count)|%{random $z}
1..$z|%{-join($y|%{" $_"[$a[$i++%$z]-eq+$r]});$r++}

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

মূলত 1..lengthপ্রতিটি চরিত্রের জন্য এলোমেলো রেখার অবস্থানগুলি পেতে একবারে স্ট্রিংটির পুনরাবৃত্তি , এবং দ্বিতীয় বার এই সূচকগুলি ব্যবহার করে প্রতিটি লাইন তৈরি করতে হবে। এক ঝাড়ুতে কীভাবে এটি করবেন তা নির্ধারণ করা হচ্ছে যেখানে বড় বাইট সঞ্চয় রয়েছে।



0

স্মাইলব্যাসিক 3, 62 বাইট

LINPUT T$L=LEN(T$)CLS
FOR I=0TO L-1LOCATE,RND(L+1)?T$[I];
NEXT


0

পাইথন - 92 বাইট

import random
lambda s:map(None,*[(random.randrange(len(s))*' '+c).ljust(len(s))for c in s])

আপনাকেimport random
মিল্কিওয়ে 90

@ মিল্কিওয়ে 90 ডি'ওহ
মালটিসেন

1
from random import*পরিবর্তে ব্যবহার করে আপনি 1 বাইট সংরক্ষণ করতে পারেন ।
অরথপ্লেক্স

আমি মনে করি map(None,...পাইথন 3 এ কাজ করে না, সুতরাং আপনার শিরোনামে পাইথন 2 নির্দিষ্ট করা উচিত।
অরথপ্লেক্স



0

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

import random as r;x=input();R=range(len(x));c=[r.choice(R) for i in R];y=[' '*c[i]+x[i]+' '*(len(x)-c[i]) for i in R];R=range(len(y));print('\n'.join([''.join(r) for r in [[y[i][j] for i in R] for j in R]]))

এলোমেলো পছন্দগুলির তালিকা তৈরি করে, তারপরে প্রতিটি এলোমেলো পছন্দ অনুসারে নির্দিষ্ট সূচি ব্যতীত ফাঁকা স্থান সহ কলামগুলির একটি তালিকা তৈরি করে। কলামগুলি সারিগুলিতে স্থানান্তরিত হয় এবং তাদের মধ্যে নতুন লাইনের সাথে মুদ্রিত হয়।

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

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