কিছু ফুল বাড়ান!


11

বসন্তটি সম্প্রতি এসেছিল এবং প্রায় সেই সময়টি যখন ফুল ফুটতে শুরু করে। সুতরাং আমি চাই আপনি তাদের বৃদ্ধিতে সহায়তা করুন।

তোমার কাজ:

দুটি নম্বর দেওয়া m, এবং n, আউটপুট mফুল এলোমেলোভাবে একটি n*nগ্রিডে রাখা।

একটি একক ফুল এর মতো দেখাচ্ছে:

&
|

একটি ফুলের অবস্থান এটি যেখানে দ্বারা সংজ্ঞায়িত করা &হয়। এলোমেলোভাবে দুটি ফুল রাখার সময়, দু'জন একই জায়গায় থাকতে পারে না। যদি একটি ফুলের &অন্য ফুলের ওভারল্যাপ হয় তবে |প্রদর্শন করুন &। ফুলের নীচের সারিটিতে কোনওটি নাও থাকতে পারে &

ইনপুটটি কোনও স্ট্যান্ডার্ড পদ্ধতির মাধ্যমে কোনও সংখ্যা বা স্ট্রিং হিসাবে হতে পারে।

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

নোট যে ইনপুট সবসময় কার্যকর থাকবে, আপনি সবসময় আইনত মাপসই সক্ষম হবে mমধ্যে ফুল nদ্বারা nগ্রিড।

পরীক্ষার কেস:

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

পরীক্ষার মামলার ইনপুট ফর্মটিতে দেওয়া হয় m, n

Input: 2, 2
Output:

&&
||
--------------
Input: 6, 3
Output:

&&&
&&&
|||

নোট করুন যে Output:পরীক্ষার ক্ষেত্রে শব্দের পরে নতুন লাইন optionচ্ছিক ।

অন্যান্য পরীক্ষার মামলা:

  1. 1, 10
  2. 0, 100
  3. 5, 8
  4. 6, 3

কোড গল্ফ তাই সংক্ষিপ্ততম কোড জয়!

এই চ্যালেঞ্জটি তৈরি করার জন্য এবং এটি সিক্রেট সান্তার উপহার বাক্সে পোস্ট করার জন্য কমরেডস্পার্কলপোনিকে ধন্যবাদ! স্যান্ডবক্স পোস্ট


2
আপনি যখন "এলোমেলোভাবে" বলছেন, প্রতিটি সম্ভাব্য ফলাফলের কি সমান সম্ভাবনা থাকা দরকার?
xnor

উত্তর:


5

জেলি , 33 বাইট

²‘;⁹R¤ṬṖs⁸×’¤Ẋ€ṙ2B¤F€ZḄị“&|& ”s⁸Y

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

কিভাবে?

²‘;⁹R¤ṬṖs⁸×’¤Ẋ€ṙ2B¤F€ZḄị“&|& ”s⁸Y - Main link: n, m        e.g. 3, 2
²                                 - square n                    9
 ‘                                - increment                   10
     ¤                            - nilad followed by link(s) as a nilad:
   ⁹                              -     link's right argument   2
    R                             -     range                   [1,2]
  ;                               - concatenate                 [10,1,2]
      Ṭ                           - untruth (1s at indexes)     [1,1,0,0,0,0,0,0,0,1]
       Ṗ                          - pop                         [1,1,0,0,0,0,0,0,0]
            ¤                     - nilad followed by link(s) as a nilad:
         ⁸                        -     link's left argument    3
           ’                      -     decrement               2
          ×                       -     multiply                6
        s                         - split into chunks           [[1,1,0,0,0,0],[0,0,0]]
             Ẋ€                   - shuffle €ach       (maybe:) [[0,1,0,0,1,0],[0,0,0]]
                  ¤               - nilad followed by link(s) as a nilad:
                2B                -     2 in binary             [1,0]
               ṙ                  - rotate (vectorises)         [[[0,0,0],[0,1,0,0,1,0]],[[0,1,0,0,1,0],[0,0,0]]]
                   F€             - flatten €ach                [[0,0,0,0,1,0,0,1,0],[0,1,0,0,1,0,0,0,0]]
                     Z            - transpose                   [[0,0],[0,1],[0,0],[0,0],[1,1],[0,0],[0,0],[1,0],[0,0]]
                      Ḅ           - from binary (vectorises)    [0,1,0,0,3,0,0,2,0]
                        “&|& ”    - literal                     ['&','|','&',' ']
                       ị          - index into                  [' ','&',' ',' ','&',' ',' ','|',' ']
                               ⁸  - link's left argument        3
                              s   - split into chunks           [[' ','&',' '],[' ','&',' '],[' ','|',' ']]
                                Y - join with newlines          [' ','&',' ','\n',' ','&',' ','\n',' ','|',' ']
                                  - implicit print

আমার মন
ক্রিস্টোফার

আপনি এর অর্থ অদলবদল হয়নি mএবং nঅথবা আপনি কেন square m? wth একটি নীলাদ হয় ?
তিতাস

এই 33 অক্ষরগুলি কি কেবলমাত্র 33 বাইট?
তিতাস

1
@ টিটাস আমি অর্থগুলি অদলবদল করিনি, আমি ইনপুট অর্ডারটি বদলালাম (এবং এর ফলে ব্যাখ্যাটি বিশৃঙ্খলা করিয়ে দিয়েছি), তাই এটি ধরার জন্য ধন্যবাদ। একটি নীলাদ, (যেমন একটি মোনাড বা ডায়াডের বিপরীতে বা ...) এমন একটি ফাংশন যা কোনও ইনপুট নেয় না এবং একটি মান দেয় - যেমন একটি ধ্রুবক একটি নীলাদ, যেমন কোনও ফাংশন বা প্রোগ্রামের একক ইনপুট। এগুলি সত্যই 33 টি বাইট - অক্ষরগুলি 256 বাইটের জেলি ব্যবহার করে যা শিরোনামের বাইট শব্দের সাথে যুক্ত হয় just
জোনাথন অ্যালান

আপনি প্রায় আমাকে হারিয়েছেন rotate। দারূন কাজ; চমৎকার ভাঙ্গন!
তিতাস

4

পিএইচপি (> = 7.1), 135 131 128 116 110 109 বাইট

for([,$m,$n]=$argv,$z=$q=$n*$n;$q;)echo" |&"[$m&&rand(0,--$z-$n)<$m?$s[$q]=2+!$m--:$s[$q+$n]/2],"
"[--$q%$n];

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়; এটি দিয়ে চালান -nrবা এটি অনলাইনে পরীক্ষা করুন

ভাঙ্গন

for([,$m,$n]=$argv,     # import arguments
    $z=$q=$n*$n;        # $q = number of total fields, $z-$n = available for flowers
    $q;                 # loop $q down to 0
)   
    echo" |&"[              # print:
        $m&&rand(0,--$z-$n)<$m  # if (probability $m/($z-$n)), decrement $z
            ?$s[$q]=2+!$m--     # then index 2 (flower), set $s[$q], decrement $m
            :$s[$q+$n]/2        # else if flower above, then 1 (stalk), else 0 (space)
        ],
        "\n"[--$q%$n]           # print newline every $n characters
    ;

1
আপনি ঠিক পতাকাটির জন্য বাইটস যুক্ত করেছেন?
ক্রিস্টোফার

@ খ্রিস্টোফার -rবিনামূল্যে ; এটি পিএইচপি কে কমান্ড লাইন আর্গুমেন্ট থেকে কোড চালনা করতে বলে। -nডিফল্ট সেটিংসে পিএইচপি পুনরায় সেট করে।
তিতাস

1
@ জোনাথান অ্যালান সেখানে উপস্থিত সংস্করণটি আপনার পূর্ববর্তী দর্শনের উপর নির্ভর করে বলে মনে হচ্ছে; সম্ভবত একটি কুকি।
তিতাস

3

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

from random import*
n,m=input()
b=[1]*m+[0]*(n*~-n-m)
shuffle(b)
for r in range(n):print''.join(' &|'[f^-s]for s,f in zip([0]*n+b,b+[0]*n)[r*n:r*n+n])

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

কিভাবে?

লাগে input()stdin থেকে tuple প্রদান করেছেন (একটি কমা মত দশমিক পূর্ণসংখ্যার স্ট্রিং পৃথক unpacks 3,6মধ্যে) nএবং m

একটি n*(n-1)অর্ডারযুক্ত , একটি মাত্রিক দীর্ঘ "ফুলের বর্ণের" তৈরি করে, bএকত্র করে:
- [1]বারবার বারে "ফুল" যুক্ত একটি তালিকা m; এবং
- একটি "স্পেস" [0]বারবার বারযুক্ত একটি তালিকা n*~-n-m*।

* ট্যাডপোল অপারেটর ~( ~x=-1-x) n*~-n-mআরও সাধারণ চেহারার জায়গায় 2 বাইট সংরক্ষণ করে n*(n-1)-m

শ্যাফেলস ( randomএর shuffleফাংশন ব্যবহার করে) n*(n-1)পজিশনের মধ্যে এলোমেলোভাবে ফুল এবং স্পেস রাখার জন্য এই ফুলটি ছড়িয়ে পড়ে ।

0-সূচকযুক্ত সারিগুলির মধ্য দিয়ে পদক্ষেপ rএবং printsপ্রতিটি পরিবর্তে এক মাত্রিক এক থেকে দ্বিমাত্রিক ফ্লাওয়ারবেড তৈরি করার জন্য ...

চূড়ান্ত দ্বিমাত্রিক ( n*n) ফুলের sফুলের মাথার ডালপালা রয়েছে, ফুলের মাথার নীচে এক সারি f, যদি দেখাতে কেবল কোনও ফুলের মাথা না থাকে head এই XORing (করে এটা করা যায় ^) fসঙ্গে -sযেখানে fএবং sআছে 1s এবং 0আগে ও দৈর্ঘ্য 3 স্ট্রিং মধ্যে সূচক ফলাফলের ব্যবহার থেকে গুলি ' &|':

f   s   f^-s   ' &|'[f^-s]
0   0    0     ' '
0   1   -1     '|'  < negative indexing used here
1   0    1     '&'
1   1   -2     '&'  < ...and here.

পেতে fএবং ফাংশন এক এক মাত্রিক কেয়ারী দুটি অনুলিপি, সঙ্গে ব্যবহার করা হয় trailing স্থান (ফুল মাথা) এবং সঙ্গে এক নেতৃস্থানীয় স্থান (ডালপালা)। পুরো জিনিসটি প্রতিটি সারির জন্য তৈরি করা হয় (বাইট সংরক্ষণ করতে) এবং প্রয়োজনীয় সারিটি ব্যবহার করে বিচ্ছিন্ন করে দেওয়া হয় ।szipnn[r*n:r*n+n]



2

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

from random import*
n,m=input();d=n*n-n
s=''
while d+n:b=0<random()*d<m;m-=b;d-=1;s+=' |&'[-b|(s[~n:-n]=='&')]+'\n'[d%n:]
print s

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

একবারে আউটপুট স্ট্রিংয়ের একটি অক্ষর উত্পন্ন করে। এলোমেলোভাবে চয়ন করে যে বর্তমান ঘরটি একটি ফুল কিনা তার সম্ভাব্যতার সাথে mঅবশিষ্ট জায়গাগুলির সংখ্যা দ্বারা ভাগ করে নেওয়া ফুলের সংখ্যার সমান । প্রতিটি nঅক্ষর একটি নতুন লাইন যুক্ত করে । একটি ফাঁকা ঘর একটি স্টেম দিয়ে পূর্ণ হয় |যদি nশেষ থেকে প্রতীকটি হয় &


1

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

for([,$b,$s]=$argv;$i<$s**2;)echo${+$i}="| &"[(rand(1,$s**2-$s-$i)>$b?0:$b--)>0?2:${$i-$s}!="&"],"\n"[++$i%$s];

অনলাইন সংস্করণ

-1 একটি শারীরিক নিউলাইন জন্য বাইট

একটি সমাধান 115 বাইট সর্বাধিক ব্যবহার

for([,$b,$s]=$argv;$i<$s**2;)echo${+$i}="&| "[rand(1,max($s**2-$s-$i,1))>$b?1+(${$i-$s}!="&"):!$b--],"\n"[++$i%$s];

137 বাইটস সহ এইভাবে স্ট্রিংয়ের প্রথম অংশটি পরিবর্তন করে

for([,$b,$s]=$argv,$a=str_shuffle(($p=str_pad)($p("",$b,_),$s**2-$s));$i<$s**2;)echo$a[$i]<_?" |"[$a[$i-$s]==_&$i>=$s]:"&","\n"[++$i%$s];

1

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

f=(n,m,a=[...(` `.repeat(n)+`
`).repeat(n)],r=Math.random()*-~n*~-n|0)=>m?(a[r]==` `?a[m--,r]=`&`:0,f(n,m,a)):a.map((c,i)=>c==` `&&a[i+~n]==`&`?`|`:c).join``
<div oninput=o.textContent=f(n.value,m.value)><input id=n type=number min=2 value=2><input id=m type=number min=1><pre id=o>

ব্যাখ্যা: ফুলের প্লাস নিউলাইনলাইনগুলির গ্রিড উপস্থাপন করে এমন একটি অ্যারে তৈরি করে। অনাকাঙ্ক্ষিতভাবে এলোমেলোভাবে খালি স্কোয়ারগুলি অনুসন্ধান করে যাতে পছন্দসই সংখ্যক ফুলের আগমন না হওয়া পর্যন্ত ফুল রাখতে হবে। অবশেষে ফুলের ডালগুলি উত্পন্ন হয় যেখানে তাদের জন্য জায়গা রয়েছে।


N = 2 এবং m = 3 এ কোনও কারণে এটি ত্রুটি ছুঁড়ে দেয়।
শেগি

@ শেগি কারণ এটি কেবলমাত্র 2 টি ফুলের জন্য জায়গা।
নীল

আহ, আমি এটিকে ভুলভাবে পড়ছিলাম was দুঃক্ষিত।
শেগি

1

কাঠকয়লা , 27 বাইট

Nθ↷FN«J‽θ‽⊖θW⁼KK&J‽θ‽⊖θ&¬KK

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

Nθ

ইনপুট n

ডিফল্ট মুদ্রণ দিকটি নীচের দিকে পরিবর্তন করুন।

FN«

ইনপুট mএবং লুপ যে অনেক বার।

J‽θ‽⊖θ

গ্রিডে এলোমেলো স্থানে যান।

W⁼KK&J‽θ‽⊖θ

যদি ইতিমধ্যে কোনও ফুল থাকে তবে উপযুক্ত স্থান না পাওয়া পর্যন্ত এলোমেলোভাবে স্থানে লাফিয়ে থাকুন।

&

ফুলের মাথা মুদ্রণ করুন।

¬KK

ইতিমধ্যে নীচে ফুলের মাথা না থাকলে ডাঁটা প্রিন্ট করুন।

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