স্ল্যাশ সহ একটি র্যান্ডম ওয়াক আঁকুন


14

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা ইতিবাচক পূর্ণসংখ্যক এন (স্টিডিন / কমান্ড লাইন / ফাংশন আর্গের মাধ্যমে) নেয় এবং স্ল্যাশগুলির বাইরে টানা N পদক্ষেপের দুটি দ্বিমাত্রিক র্যান্ডম ওয়াকের একটি স্ট্রিং প্রতিনিধিত্ব প্রিন্ট করে বা প্রদান করে: / \(প্লাস স্পেস এবং ব্যবধান জন্য newlines)।

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

এখানে এন = for এর জন্য এলোমেলো পদক্ষেপ রয়েছে Notice

এন = 6 এলোমেলো হাঁটার উদাহরণ

স্ল্যাশগুলির সাহায্যে এটি আঁকতে আমাদের মূলত পুরো জিনিসটি 45 ° ঘড়ির কাঁটার দিকে ঘোরানো দরকার। অক্ষ এবং শুরু এবং শেষ পয়েন্টগুলি স্ল্যাশ সংস্করণে আঁকা হয় না।

/
\
 \
 /\

এর মতো আরও জটিল পদচারণা (এন = 20, যদিও বলার উপায় নেই):

এন = 20 এলোমেলো হাঁটার উদাহরণ

এটি হয়ে উঠবে:

     /
/\/ /\
\/\/
/\/
\/

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

সর্বনিম্ন এবং সর্বাধিক স্ল্যাশের উপরে বা নীচে কোনও খালি রেখা থাকা উচিত নয় (এক বিকল্প alচ্ছিক নতুন লাইন বাদে) এবং বামে এবং ডানদিকের স্ল্যাশগুলির আগে বা পরে কখনই ফাঁকা ফাঁকা কলাম থাকতে হবে না।

সুতরাং এন = 1 এর জন্য আউটপুট সর্বদা /বা \, তবে কখনও এর মতো হয় না:

   
 / 

ট্রেলিং স্পেসগুলি যতক্ষণ না ডানদিকের স্ল্যাশের কলামটি অতিক্রম না করে ততক্ষণ অনুমতি দেওয়া হয়।

সবচেয়ে কম বাইটস সহ জমাটি জয়লাভ করে। এখানে একটি হ্যান্ড বাইট কাউন্টার।


সুতরাং এটি সম্ভব (বিরল হলেও) যে আউটপুটটি একটি একক স্ল্যাশ হতে পারে এমনকি এন = 20?
ডেভএলগার

2
পুনঃটুইট যদিও আপনার প্রোগ্রামটি যদি এমনটি করে তবে আমি কিছু প্রত্যাশা করতে পারি তা খুব ভুল।
ক্যালভিনের শখ

উত্তর:


3

পাইথ, 74 বাইট

K0VQJO2=GO2 XH,-ZJ-KG@"\/"xJG-=ZtyJ-=KtyG;=YmrhSdheSdCHjbclhYsmh@XkH\ k.xY

উরি জারফাতীর উত্তরের আরও একটি অনুকূল অনুবাদ।


1
আমি একটি ভাল পাইথ সমাধান পেয়েছি: "\ - অবশ্যই, এলোমেলোতা নেই, তবে এটি প্রতিবারই একটি বৈধ পদচারণা!
theonlygusti

@ থিওনলিগুস্টি এর পরে আমার আরও একটি ভাল সমাধান পাওয়া যাবে: \\।
orlp

এটি পাবেন না ...
theonlygusti

পাইথ-এ থিওনলিগুস্টি ব্যাকস্ল্যাশ একটি 1 টি চরিত্রের ধ্রুবক শুরু করে। ওহ অপেক্ষা করুন, কিছুই নয়, এক্সডি কম নয়
orp

5

পাইথন 2, 300 285 257 246 236 বাইট

জিনিস বন্ধ লাথি কিছু। এটি আরও নীচে সঙ্কুচিত করা উচিত। মাল্টেসেনকে 10 বাইট শেভ করার জন্য ধন্যবাদ

from random import*
N=input()
x=y=0;G={}
exec'n=randrange(4);l=n<2;u=n&1;G[(x-l,y-u)]="\\/"[l^u];x-=2*l-1;y-=2*u-1;'*N
f=lambda i:range(min(x[i]for x in G),max(x[i]for x in G)+1)
for i in f(0):print"".join(G.get((i,j)," ")for j in f(1))

পরিদর্শন করা (x, y) টিপলসের একটি অভিধান জি-তে ওয়াক আউটপুট তৈরি করে, যাবার সাথে সাথে আমাদের অবস্থান আপডেট করে। প্রতিটি এলোমেলো পদক্ষেপ n উভয়ই u / d (u) এবং l / r (l) উভয়ই হয়।



1
আপনার সাথে একটি অনেক সঞ্চয় করতে পারেন "".joinj in f(1)লুপ এবং সরাসরি মুদ্রণ।
মাল্টেসেন

1

পিএইচপি 5.5 - 209 বাইট

<?for(;$X[]=$x+=1-2*$l,$Y[]=$y+=1-2*$u,$i++<$argv[1];){$m[$y-$u=$n&1][$x-$l=($n=rand(0,3))<2]='\\/'[$u^$l];}for($y=min($Y);$y<max($Y);$y++){for($x=min($X);$x<max($X);$x++)$s.=$m[$y][$x]?:' ';$s.="\n";}echo$s;

Ungolfed:

<?
for (; $X[] = $x += 1 - 2 * $l, $Y[] = $y += 1 - 2 * $u, $i++ < $argv[1];) {
    $m[$y - $u = $n & 1][$x - $l = ($n = rand(0, 3)) < 2] = '\\/'[$u ^ $l];
}
for ($y = min($Y); $y < max($Y); $y++) {
    for ($x = min($X); $x < max($X); $x++) {
        $s .= $m[$y][$x] ? : ' ';
    }
    $s .= "\n";
}
echo $s;

স্ক্র্যাচ থেকে পিএইচপি উত্তরের উপর কাজ করা শুরু হয়েছিল, তবে চূড়ান্ত কোডটি @ উরি জারফাতির কাজের সাথে সাদৃশ্যপূর্ণ তাই এটি পোস্ট করার মতো সত্যিকারের নার্ভ আমার ছিল না। সমাপ্ত পোর্টিং এর পরিবর্তে কয়েকটি পরিবর্তনের সাথে উত্তরটি বলেছে। আউটপুট লুপের নূন্যতম / সর্বাধিক নির্ধারণ করতে x / y মানগুলিতে $Xএবং $Yঅ্যারেগুলিতে চাপ দেয়।

ব্যবহার:

php golf.php 200

1

পাইথ - 89

এটি মূলত উরি জারফাতির উত্তরের একটি অনুবাদ, যদিও আমি কিছু অপ্টিমাইজেশন করেছি।

KZVQJO4=G<J2=b.&J1 XH,-KG-Zb@"\\/".|Gb-=KtyG-=Ztyb)LrhSm@dbHheSm@kbHFNy0jkm?@H,Nb},NbHdy1

ব্যাখ্যা শীঘ্রই আসছে।

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

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