ল্যাংটনের পিঁপড়া এএসসিআইআই আর্ট।


22

ল্যাংটনের পিঁপড়ার পথ আঁকুন ।

বিবরণ

একটি প্লেনের স্কোয়ারগুলি কালো বা সাদা বিভিন্ন ধরণের বর্ণযুক্ত। আমরা নির্বিচারে একটি বর্গক্ষেত্রকে "পিঁপড়ে" হিসাবে চিহ্নিত করি। পিঁপড়া লাগে প্রতিটি পদক্ষেপে চারটি মূল দিকের যেকোন পথে ভ্রমণ করতে পারে। পিপড়া নীচের নিয়ম অনুসারে চলে:

  • একটি সাদা স্কোয়ারে, 90 ° ডানদিকে ঘুরুন, বর্গের রঙ ফ্লিপ করুন, এক একক এগিয়ে যান
  • একটি কালো স্কোয়ারে, 90 ° বাম দিকে ঘুরুন, স্কোয়ারের রঙ ফ্লিপ করুন, এক একক এগিয়ে যান

বিশেষ উল্লেখ

  • ইনপুট: 0 এবং 725 (সমেত) এর মধ্যে একটি পূর্ণসংখ্যা N।
  • আউটপুট: একটি 17 বাই 17 গ্রিড যা পিঁপড়ার "পাথ" উপস্থাপন করে N পদক্ষেপ হিসাবে।

বিধি

  • পিপড়া ডান মুখোমুখি শুরু (3 ঘন্টা ')।
  • পিপড়া গ্রিডের কেন্দ্রে শুরু হয়।
  • _#@যথাক্রমে সাদা স্কোয়ার, কালো স্কোয়ার এবং পিঁপড়ে ব্যবহার করুন ।
  • গ্রিড শুরুতে সম্পূর্ণ সাদা।
  • আপনি একটি সম্পূর্ণ প্রোগ্রাম বা একটি ব্যাখ্যা করা ভাষায় কোনও ফাংশন তৈরি করতে পারেন।
  • স্টিডিন বা যুক্তি দ্বারা ইনপুট।

উদাহরণ

আপডেট: কেসের এন = 450 আউটপুটটি ভুল ছিল।

এন = 0

_________________
_________________
_________________
_________________
_________________
_________________
_________________
_________________
________@________
_________________
_________________
_________________
_________________
_________________
_________________
_________________
_________________

এন = 1

_________________
_________________
_________________
_________________
_________________
_________________
_________________
_________________
________#________
________@________
_________________
_________________
_________________
_________________
_________________
_________________
_________________

এন = 450

_________________
_________________
___________##____
____##______##___
___#__##___##_#__
__###_#@#__#__#__
__#_#_#_#__#_#___
_____###___#_____
_____#___________
_____#__###______
___#_#_#__#_#_#__
__#__#_#____###__
__#_##__##___#___
___##______##____
____##___________
_________________
_________________

@ জোয়ি: হ্যাঁ "সম্পূর্ণ প্রোগ্রাম বা ফাংশন শেষ করুন argument যুক্তি বা
স্ট্ডিন

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

@ জোয়ী: নোট করুন যে প্রথম ধাপে পিপড়াটি প্রথমে ডানদিকে ঘুরে (বর্তমানে উত্তরের দিকে) এবং তারপরে অগ্রসর হয়। আপনি কি নিশ্চিত যে এটিকে আমলে নিচ্ছেন?
এলেভেক্স

@ জোয়ি: হ্যাঁ, আমি পূর্ববর্তী মন্তব্যে দক্ষিণ বোঝাতে চেয়েছি এবং আপনি ঠিক বলেছেন, শেষ উদাহরণটি বিভিন্ন এন এর জন্য ছিল: - / (উদাহরণ বিভাগটি আপডেট করা হয়েছে)।
ইলেভেক্স

উত্তর:


10

গল্ফস্ক্রিপ্ট - 67 টি অক্ষর

~17.'_'*n+*\153:|;{|/()[124^.2/6+:6.1&17*)\2&(*|+:|;]@++}*|/();'@'@

হলভাবোর পাইথন দ্রবণটি এর সাথে সর্বাধিক সাদৃশ্যপূর্ণ, তাই আমি কেবলমাত্র মূল পার্থক্যগুলি বর্ণনা করব।

বোর্ডটি অ্যারের পরিবর্তে স্ট্রিং হিসাবে সংরক্ষণ করা হয়। এটি তাই আমরা কম অক্ষর সহ বোর্ডে একটি মান আপডেট করতে পারি (যেমন স্ট্রিং সর্বদা সমতল হয়), এবং তাই এটি পছন্দসই আউটপুট বিন্যাসে পাওয়া সহজ।

পিঁপড়ার অবস্থান সূত্র ((d&1)*17+1)*((d&2)-1)(যেমন .1&17*)\2&(*) দ্বারা বৃদ্ধি করা হয় , যেখানে d দিক হয় the আমরা ভেরিয়েবলটি ব্যবহার করি 6যাতে আমরা সূচনাটি এড়িয়ে যেতে পারি।


1
ওহউ, এখন আমি গল্ফস্ক্রিপ্ট নুব লাগছে।
আআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআ

:6- তাই হিপস্টার। আমি আপনার কোডটি ডিবাগ করতে ঘৃণা করব :-)
জন ডিভোরাক

9

রুবি 1.9, 104 টি অক্ষর

f=->z{l=[*[r=1]*17,2]*17;c=152;z.times{c+=r=(r*r>1?r/18:-r*18)*l[c]*=-1};l[c]=0;l.map{|a|putc"@_
#"[a]}}

ফাংশন আর্গুমেন্টের মাধ্যমে ইনপুট।

  • (146 -> 142) ইনলাইন করা m
  • (142 -> 140) এর r*r>1পরিবর্তে চেক করুনr.abs>1
  • (142 -> 128) String#scanআউটপুট উত্পন্ন করতে ব্যবহার করুন । একটি পরিবর্তন করা ==হয়েছে>
  • (128 -> 125) অপ্রচলিত ভেরিয়েবল সরানো হয়েছে
  • (125 -> 122) String#trশর্তসাপেক্ষে প্রতিস্থাপন করুন
  • (122 -> 122) এখন আপডেট হওয়া উদাহরণগুলির মতো একই আউটপুট উত্পন্ন করে
  • (122 -> 111) পিপীলিকার পথ উৎপন্ন করার সময় অক্ষরের পরিবর্তে ইনস ব্যবহার করুন।
  • (111 -> 109) বন্ধনীগুলি সংরক্ষণ করতে কিছু এক্সপ্রেশন পুনরায় অর্ডার করুন
  • (109 -> 108) কোড এখন একটি ফাংশন
  • (108 -> 104) প্রতিটি চরিত্র পৃথকভাবে মুদ্রণ করুন

কার্যাবলী হয় অনুমতি।
এভেলেক্স

@ এলেভেক্স: ফাংশনটিতে কোনও স্ট্রিং ফিরে আসতে হবে, না এটির আউটপুট দিতে হবে?
ভেন্টোরো

আউটপুট।
এলেভেক্স

6

পাইথন, 123

এন = ইনপুট ()
D = এক্স = 152
ছ = (17 * [95] [10]) * 17
যখন n: d + = g [x] / 2; g [x] ^ = 124; এক্স + = (1, -18, -1,18) [ডি% 4]; এন- = 1
ছ [X] = 64
প্রিন্ট "% গ" * 306% tuple (ছ)

Http://golf.shinh.org/p.rb?Langtons+Ant থেকে আমার পাইথন সমাধানটির জন্য কেবল একটি হালকা কাজ ।


5

গল্ফস্ক্রিপ্ট 96 94 89

আমার প্রিয় ঘৃণ্য ভাষাটি আবার একগুচ্ছ আধা-পঠনযোগ্য বাছাইযোগ্য বার্টেকোড সহ ফিরে এসেছে।

89 সংস্করণ, আমি অবশেষে @ কে আউটপুট লুপের সাথে সংহত করতে পেরেছি।

~289[0:c]*145:b;{.b>\b<)!..c++(4%:c[1 17-1-17]=b+:b;@++}@*{{(b(:b!.++'_#@@'1/=\}17*n\}17*

94 সংস্করণ:

~306[0:c]*152:b;{.b<\b>(!..c++(4%:c[1 18-1-18]=b+:b;\++}@*{{('_#'1/=\}17*(;n\}17*].b<\b>(;'@'\

মন্তব্য করেছে:

               #Initialization.
~                  #Parse input.
306[0:c]*          #Make array of 306 0s, set c to 0 in the middle of that operation.
152:b;             #Set b to 152, remove 152 from the stack.
                   #b is a value for the ant's position, c for its rotation.

               #Run the algorithm.
{                  #Start of block.
    .b<\b>(        #Split the array at index b into before, after and value at b.
    !..            #Not the value and make 2 copies of it.
    c++            #Add the 2 copies to c.
    (4%:c          #Subtract 1, modulus by 4 and save the result to c.
    [1 18-1-18]=   #Define an array and take element number c.
    b+:b;          #Add b to the value, save result to b, remove result from stack.
    \++            #Reform the array.
}@*                #Switch the input to the top of the stack and run the block input times.

               #Convert array of 1s and 0s to the correct characters.
{                  #Start of block.
    {              #Start of block.
        ('_#'1/=   #Take the first array element, convert it to either '_' or '#'.
        \          #Switch the array to the top of the stack.
    }17*           #Execute block 17 times.
    (;n\           #Discard the 18th element of the line, write a lineshift.
}17*               #Execute block 17 times.

               #Insert the @.
]                  #Put everything in an array.
.b<\b>(            #Split the array at index b into before, after and value at b.
;'@'\              #Ditch the value at b, write a @ and shift it into place.

সম্পাদনা করুন, আমি পাশাপাশি একটি বড় সংস্করণ তৈরি করতে পারি, এখানে 59 * 59 এবং 10500 পুনরাবৃত্তি চলে:

~59:a.*[0:c]*1741:b;{.b>\b<)!..c++(4%:c[1 a-1-59]=b+:b;@++}@*{{(b(:b!.++'_#@@'1/=\}a*n\}a*

___________________________________________________________
___________________________________________________________
_________________________##__##____________________________
________________________#__@_###___________________________
_______________________###__#_#_#__________________________
_______________________#####_#__##_________________________
________________________#___##_##_#________________________
_________________________###___#__##_______________________
__________________________#___##_##_#______________________
___________________________###___#__##_____________________
____________________________#___##_##_#__##________________
_____________________________###___#__##__##_______________
______________________________#___##_##__##___#____________
________________________####___###___#___#__###____________
_______________________#____#___#___##_####___#____________
______________________###____#___#_#______#_##_#___________
______________________###____#_##_____#_##__#_##___________
_______________________#____#___##_#_#_____##______________
_______________________#_#______#_#####__#___#_____________
______________________#___#####__________##_######_________
______________________###__##__#_##_#_#_#___##_#_##________
____________________##__#_#######_#___#__###____##_#_______
___________________#__#__######_##___#__#_##___#___#_______
__________________#____#_#_##_#__######_#######___#________
__________________#_####_##_#_####____##__##_#_##_#________
___________________#____####___#__#_######_##____###_______
______________________#___#_##_#_###_#__##__##___###_______
_________________________#######____#__##_##_#_____#_______
_________________####__##_##__####_##_##_##__#_____#_______
________________#____#_#___###_##_###____#_####____#_______
_______________###_______###_#_#_#####____#_#______#_______
_______________#_#___###_####_##_#___##_###_##_____#_______
_____________________##_##__####____####_#_#_#_____#_______
________________#____#__##___###__###_____###______#_______
________________##___##_###_####__#______###___##__#_______
________________##_#_####_____#___#__#_##_###_##___#_______
_______________####_##___##_####__#_#__#__#__###___#_______
_______________#_##_###__#_#_##_#_#_____#_#_____#_#________
___________________#_#__#____##_##__#_#__###_##____________
___________________##_#____#__#####_#____#____#__#_#_______
__________________#_##_#__#____##_##_#__###______###_______
________________#_#___#__#__#__#__###___##__##____#________
_______________###_#_#####_######_###_#######_#_##_________
_______________#_#_#____#####___##__#####_#####____________
_________________#__##___#______#__#_##__###_###___________
______________####___#####_#########___#_#_________________
_________##____#__#_____###_#_#___#_###__###_______________
________#__#__####_##___###_##___###_##_____##_____________
_______###____#_##_#_#####___#____#__#__##_###_____________
_______#_#####_#_#___##__##_____#____#___#__#______________
___________######_####__##_#___#__##__#_#_##_______________
_________##______#_###_##__####___#___###__________________
__________#__#_#####__#___#_##___#__#__#___________________
__________##_###_#######_____#_____#_##____________________
_________#_#__##_##______#___##____#_______________________
________#__#_####________###__##__#________________________
________#_##_###____________##__##_________________________
_________##________________________________________________
__________##_______________________________________________

5

উইন্ডোজ পাওয়ারশেল, 119 118

for($p,$n,$g=144,+"$args"+,1*289;$n--){$d+=$g[$p]*=-1
$p+='B0@R'[$d%4]-65}$g[$p]=0
-join'@_#'[$g]-replace'.{17}',"$&
"

4

পিএইচপি, 350 309 307 312 174 161 166 159 151 149 147 144 143

<?$p=144;while($i=$argv[1]--){$g[$p]=$a=2-$g[$p];$d+=--$a;$p+=(1-($d&2))*(1+16*($d&1));}while($i++<288)echo$i%17?$i!=$p?$g[$i]?"#": _:"@":"\n";

Ungolfed

$p = 144; // Set initial pointer

while($i = $argv[1]--){ // Ends at -1
    $g[$p] = $a = 2 - $g[$p]; // Either returns true (2) or false(0)

    $d += --$a; // Adds 1 (2-1) or removes 1 (0-1) from the direction

    $p += (1 - ($d & 2)) * (1 + 16 * ($d & 1));
}

while($i++ < 288)
    echo $i % 17? $i != $p? $g[$i]? "#" : @_ : "@" : "\n"; // Prints the correct character

350 -> 309: () লুপগুলির সাথে বিভিন্ন সংকোচনের কৌশলগুলিও সঠিক আউটপুট দেখানোর জন্য আপডেট হয়েছে।
309 -> 307: মূল () লুপের জন্য কিছুক্ষণ () লুপে রূপান্তরিত।
307 -> 312: আরজিভি ব্যবহার করতে এটি পরিবর্তন করতে ভুলে গেছেন।
312 -> 174: অন্য উত্তরের উপর ভিত্তি করে পুনরায় তৈরি করা হয়েছে।
174 -> 161: আর পুরো অ্যারে ডিফল্ট হয় না।
161 -> 166: আরগভি আবার জিতেছে।
166 -> 159: আরগভি [1] পুনরায় সংজ্ঞায়িত করার দরকার নেই।
159 -> 151: আর কোনও ডিফল্ট নেই, পিএইচপি এটি স্বয়ংক্রিয়ভাবে করে।
151 -> 149: প্রথম বন্ধনীর একটি সেট সরানো হয়েছে, ক্রমের ক্রমটি প্রয়োজনীয়তা সরিয়ে দেয়।
149 -> 147: () লুপের জন্য সর্বশেষটি সংক্ষিপ্ত করে, ধনুর্বন্ধনী প্রয়োজন নেই।
147 -> 144:() লুপের জন্য শেষ এখন কিছুক্ষণ () লুপ।
144 -> 143: একটি অক্ষর সংরক্ষণ করতে অস্থায়ী পরিবর্তনশীল ব্যবহার করা হয়েছে।


আমি দেখতে পেয়েছি আপনি আমার গ্রিড এবং দিকনির্দেশ ট্রিকস ব্যবহার করেছেন এবং এটি আপনার কোড থেকে ১৩৮ টি অক্ষর অপসারণ করেছে, দুর্দান্ত!
প্যাট্রিকভিএল

4

সি, 166 162

এখানে সি থেকে আমার ডেলফি-পদ্ধতির একটি অনুবাদ, সি কীভাবে কমপ্যাক্ট হতে পারে তা দেখিয়ে। আমি শর্তাধীন নতুন লাইনের কৌশলটি এফআরডিডিডিওয়াই থেকে ধার করেছি (ধন্যবাদ সাথী!):

g[289]={0},a=144,d,i,N;main(){scanf("%d",&N);while(N--)g[a]=2-g[a],d+=g[a]-1,a+=(1-(d&2))*(1+d%2*16);for(g[a]=1;i<289;)printf("%s%c",i++%17?"":"\n","_@#"[g[i]]);}

অভিযুক্ত, মন্তব্য করা সংস্করণটি এর মতো দেখাচ্ছে:

g[289]={0}, // g: The grid is initially completely white. (size=17*17=289)
a=144, // a: Ant position starts at the center of the grid (=8*17+8=144)
d, // Assume 0=d: Ant start 'd'irection faces right (=0, see below)
i,
N;
main(){
  scanf("%d",&N);
  while(N--)
    // Flip the color of the square:
    g[a]=2-g[a],
    // Turn 90° right if at an '_' space, 90° left otherwise :
    d+=g[a]-1,
    // Move one unit forward;
    //   For this, determine the step size, using the two least significant bits of d.
    //   This gives the following relation :
    //     00 = 0 =  90° = right =   1
    //     01 = 1 = 180° = down  =  17
    //     10 = 2 = 270° = left  = - 1
    //     11 = 3 =   0° = up    = -17
    //   (d and 2) gives 0 or 2, translate that to 1 or -1
    //   (d and 1) gives 0 or 1, translate that to 1 or 17
    //   Multiply the two to get an offset 1, 17, -1 or -17 :
    a+=(1-(d&2))*(1+d%2*16);
  // Place the ant and print the grid :
  for(g[a]=1;i<289;)
    printf("%s%c",i++%17?"":"\n","_@#"[g[i]]); // 0 > '_', 1='@', 2 > '#'
}

+1 টি। আমি কৌশলগুলি পছন্দ করি "_@#"[g[i]]এবংa+=(1-(d&2))*(1+(16*(d&1)))
fR0DDY

(1+d%2*16)কয়েক অক্ষর সাশ্রয়।
নাব্ব

@ ন্যাব: প্রকৃতপক্ষে, এটি 4 টি অক্ষর বাঁচায়, পরামর্শের জন্য ধন্যবাদ!
প্যাট্রিকভিএল

4

ডেলফি, 217

var g,a:PByte;i,d,Word;begin g:=AllocMem(306);a:=g+153;Read(i);for n:=1to i do begin a^:=2-a^;d:=d-1+a^;a:=a+(1-2and d)*(1+17*(1and d))end;a^:=1;for n:=1to 306do if n mod 18=0then WriteLn else Write('_@#'[1+g[n]])end.

ইন্টেন্টেড এবং মন্তব্য করা কোডটি এইভাবে পড়ে:

var
  g,a:PByte;
  i,d,n:Int32;
begin
  g:=AllocMem(306); // g: The grid is initially completely white. (size=18*17=306)
  // Assume 0=d: Ant start 'd'irection faces right (=0, see below)
  a:=g+153; // a: Ant position starts at the center of the grid (=8*18+9=153)
  Read(i);
  for n:=1to i do
  begin
    // Flip the color of the square;
    a^:=2-a^;
    // Turn 90° right if at an '_' space, 90° left otherwise;
    d:=d-1+a^;
    // Move one unit forward;
    //   For this, determine the step size, using the two least significant bits of d.
    //   This gives the following relation :
    //     00 = 0 =  90° = right =   1
    //     01 = 1 = 180° = down  =  18
    //     10 = 2 = 270° = left  = - 1
    //     11 = 3 =   0° = up    = -18
    //   (d and 2) gives 0 or 2, translate that to 1 or -1
    //   (d and 1) gives 0 or 1, translate that to 1 or 18
    //   Multiply the two to get an offset 1, 18, -1 or -18 :
    a:=a+(1-2and d)*(1+17*(1and d))
  end;
  // Place the ant and print the grid :
  a^:=1; // 0 > '_', 1='@', 2 > '#'
  for i:=1to 306do
    if i mod 18=0then // we insert & abuse column 0 for newlines only (saves a begin+end pair)
      WriteLn
    else
      Write('_@#'[1+g[i]])
end.

ইনপুট:

450

আউটপুট:

_________________
_________________
___________##____
____##______##___
___#__##___##_#__
__###_#@#__#__#__
__#_#_#_#__#_#___
_____###___#_____
_____#___________
_____#__###______
___#_#_#__#_#_#__
__#__#_#____###__
__#_##__##___#___
___##______##____
____##___________
_________________
_________________

@ পেট্রিক: উদাহরণটি ভুল ছিল, দয়া করে আপডেটগুলি দেখুন। (এবং মনে হচ্ছে আপনি 451 ধাপ আউটপুট করেছেন :))।
এলেভেক্স

@ এলেভেক্স: ধন্যবাদ আমি চার অক্ষরের জন্য 'এন = 0' কেসটি ঠিক করেছি ... এখন আমি তাদের আবার জিততে চাই! ;-)
প্যাট্রিকভিএল

@ এলেভেক্স: পিএস: 3 ঘন্টা আগে আপনার ত্রুটি চিহ্নিত করার জন্য +1 নেই কেবলমাত্র একটি নম্র মন্তব্য দিয়ে আমার ভুল হতে পারে? ;)
প্যাট্রিকভিএল

@ পেট্রিক: আমি <200 তবে ঠিক আছে ... :) এর জন্য অপেক্ষা
করছিলাম

@ ইলেভেক্স: এলওএল, সেখানে পৌঁছে ... (ইতিমধ্যে ২৩৮ এর নিচে)
প্যাট্রিকভিএল

3

সি 195 অক্ষর

x=144,T,p=1,i,N[289]={0},a[]={-17,1,17,-1};c(t){p=(p+t+4)%4;x+=a[p];}main(){scanf("%d",&T);while(T--)N[x]=(N[x]+1)%2,c(N[x]?1:-1);for(;i<289;i++)printf("%s%c",i%17?"":"\n",i-x?N[i]?'#':'_':'@');}

http://www.ideone.com/Dw3xW

আমি এটি 725 এর জন্য পেয়েছি।

_________________
_________________
___________##____
____##______##___
___#___##__##_#__
__###____#_#__#__
__#_#_#__#_#_#___
______###____#__@
_______###__#__#_
_____#_#____#___#
___#_#_#_##____#_
__#__#_#_#_#_###_
__#_##_#_____####
___##_#____#_####
____###___####_#_
_______#__#__##__
________####_____

p+=t+4;x+=a[p%4];পরিবর্তে p=(p+t+4)%4;x+=a[p];তিনটি অক্ষর সংরক্ষণ করে Using
জোয়ি

3

সেড, 481 অক্ষর

#n
1{s/.*/_________________/;h;H;H;H;G;G;G;G;s/^\(.\{152\}\)_/\1@/;s/$/;r/;ta;};x;:a;/;r/br;/;d/bd;/;l/bl;/;u/bu;:w;y/rdlu/dlur/;bz;:b;y/rdlu/urdl/;bz;:r;s/@\(.\{17\}\)_/#\1@/;tw;s/@\(.\{17\}\)#/#\1!/;tw;s/_\(.\{17\}\)!/@\1_/;tb;s/#\(.\{17\}\)!/!\1_/;tb;:d;s/_@/@#/;tw;s/#@/!#/;tw;s/!_/_@/;tb;s/!#/_!/;tb;:l;s/_\(.\{17\}\)@/@\1#/;tw;s/#\(.\{17\}\)@/!\1#/;tw;s/!\(.\{17\}\)_/_\1@/;tb;s/!\(.\{17\}\)#/_\1!/;tb;:u;s/@_/#@/;tw;s/@#/#!/;tw;s/_!/@_/;tb;s/#!/!_/;tb;:z;h;${s/!/@/;s/;.//p}

প্রথম লাইনটি সরিয়ে এবং সাথে চালিয়ে 478 চরগুলিতে কমে যেতে পারে -n

ইনপুট জন্য এন লাইন প্রয়োজন, যেমন। যখন চালানো

seq 450 | sed -f ant.sed

আউটপুট:

_________________
_________________
___________##____
____##______##___
___#__##___##_#__
__###_#@#__#__#__
__#_#_#_#__#_#___
_____###___#_____
_____#___________
_____#__###______
___#_#_#__#_#_#__
__#__#_#____###__
__#_##__##___#___
___##______##____
____##___________
_________________
_________________

3

পার্ল, 110 টি অক্ষর

$p=144;$p+=(1,-17,-1,17)[($d+=($f[$p]^=2)+1)%4]for 1..<>;$f[$p]=1;print$_%17?'':$/,qw(_ @ #)[$f[$_]]for 0..288

নম্বরটি STDIN এর প্রথম লাইন থেকে পড়া হয়। বাকি ইনপুট উপেক্ষা করা হয়।

সামান্য আরও পঠনযোগ্য:

$p=144;
$p += (1,-17,-1,17)[($d+=($f[$p]^=2)+1) % 4] for 1..<>;
$f[$p]=1;
print $_%17 ? '' : $/, qw(_ @ #)[$f[$_]] for 0..288

সম্পাদনাগুলি

  • (112 → 111)$d মডিউল -4 মান সহ আপডেট করার দরকার নেই ।

  • (111 → 110) এখন $dইনক্রিমেন্টটি ইনলাইন করতে পারে

সংযোজন (109 টি অক্ষর)

আপনি যদি N=0ব্যর্থতার বিশেষ ক্ষেত্রে (এটি @পিপড়ার চরিত্রটিকে আউটপুট দেয় না ) খুশি হন তবে আমরা এটির একটি চরিত্র ছোট করতে পারি । অন্য সমস্ত ইনপুট সঠিকভাবে কাজ করে:

$p+=(1,-17,-1,17)[($d+=($f{$p+0}^=2)+1)%4]for 1..<>;$f{$p}=1;print$_%17-9?'':$/,qw(_ @ #)[$f{$_}]for-144..144

পার্থক্যগুলি %fহ'ল আমরা এখন পরিবর্তে ব্যবহার করি @fতাই আমরা নেতিবাচক সূচকগুলি ব্যবহার করতে পারি, এবং আমরা এর -144..144পরিবর্তে পুনরাবৃত্তি করি 0..288। এটি আরম্ভ করার সংরক্ষণ করে $p


1

গণিত, ৯৯ টি চর

a@_=d=1;a@Nest[#+(d*=(a@#*=-1)I)&,9-9I,Input[]]=0;Grid@Array["@"[_,"#"][[a[#2-# I]]]&,17{1,1}]

1

> <>, 122 বাইট

সামান্য থ্রেড নেक्रोমেন্সির ঝুঁকিতে, আমি ভেবেছিলাম> <<> এ উত্তর লেখা আকর্ষণীয় চ্যালেঞ্জ হবে ...

1&f8r\
1-:?!\r:@@:@$:@@:@g:2*1+&+4%:&}1$-@p{:3$-5gaa*-$@+@5gaa*-+r
2}p70\~
a7+=?\:@@:@g4+5go$1+:
o053.>~1+:64*=?;a
dedc_#@

এই প্রোগ্রামটি মৃত্যুদন্ড কার্যকর করার আগে স্ট্যাকের উপস্থিত গণনা করার পদক্ষেপের সংখ্যা প্রত্যাশা করে।

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