একটি গ্লাইডার রাখুন!


17

এই:

এখানে চিত্র বর্ণনা লিখুন

একটি গ্লাইডার

কনওয়ের গেম অফ লাইফে, গ্লাইডার একটি বিখ্যাত প্যাটার্ন যা দ্রুত বোর্ড জুড়ে চলে। আজকের চ্যালেঞ্জের জন্য, আমরা একটি ASCII আর্ট গেম অফ লাইফ বোর্ড আঁকতে যাচ্ছি এবং এটিতে একটি গ্লাইডার স্থাপন করব।

আমরা যে বোর্ডটি দিয়ে শুরু করছি তা হ'ল:

|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|

এই বোর্ডটি সম্পূর্ণ পাইপ |এবং আন্ডারস্কোর দ্বারা গঠিত _এবং 10x10 হয়। আপনাকে অবশ্যই এমন একটি প্রোগ্রাম বা ফাংশন লিখতে হবে যা দুটি x 'x' এবং 'y' পূর্ণসংখ্যার জন্য লাগে এবং এই একই বোর্ডটিকে সেই স্থানাঙ্কগুলিতে গ্লাইডার দিয়ে আউটপুট দেয়। উদাহরণস্বরূপ, যদি আপনার অবস্থানে গ্লাইডার থাকে (1, 1)(0-ইনডেক্সড), আপনাকে অবশ্যই নিম্নলিখিত ফলাফলগুলি আউটপুট করতে পারেন:

|_|_|_|_|_|_|_|_|_|_|
|_|_|*|_|_|_|_|_|_|_|
|_|_|_|*|_|_|_|_|_|_|
|_|*|*|*|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|

আপনি ধরে নিতে পারেন যে গ্লাইডারটি কখনই সীমার বাইরে রাখা যায় না, তাই এক্স এবং y উভয়ই সর্বদা পরিসীমাতে থাকবে [0-7]। আপনি স্থানাঙ্ক 1-ইনডেক্স করাও চয়ন করতে পারেন, তবে আপনাকে অবশ্যই আপনার উত্তরে এটি নির্দিষ্ট করতে হবে। এই ক্ষেত্রে, ইনপুটগুলি সর্বদা [1-8]সীমার মধ্যে থাকবে। এখানে কয়েকটি উদাহরণ রয়েছে (সমস্ত 0-সূচকযুক্ত):

0, 0:
|_|*|_|_|_|_|_|_|_|_|
|_|_|*|_|_|_|_|_|_|_|
|*|*|*|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|

7, 7:
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|*|_|
|_|_|_|_|_|_|_|_|_|*|
|_|_|_|_|_|_|_|*|*|*|

7, 4:
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|*|_|
|_|_|_|_|_|_|_|_|_|*|
|_|_|_|_|_|_|_|*|*|*|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|

5, 2:
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|*|_|_|_|
|_|_|_|_|_|_|_|*|_|_|
|_|_|_|_|_|*|*|*|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|_|_|

যথারীতি, আপনি আপনার আইও কোনও যুক্তিসঙ্গত ফর্ম্যাটে নিতে পারেন। এতে অন্তর্ভুক্ত রয়েছে তবে নিউলাইনস, স্ট্রিংগুলির একটি অ্যারে, স্ট্রিংগুলির একটি 2 ডি অ্যারে বা একটি ফাইল / এসটিডিআউটে লিখনের সাথে সীমাবদ্ধ নয়। এক্স এবং ওয়াইয়ের মধ্যে কী অর্ডার নেওয়া উচিত তাও আপনি চয়ন করতে পারেন ।

যেহেতু এটি , তাই মানক লুফোলগুলি নিষিদ্ধ করা হয়েছে, এবং আপনি যে সংক্ষিপ্ততম কোডটি তৈরি করতে পারেন!


আমরা কোন কোণটি গ্লাইডারের অবস্থান চিহ্নিত করতে পারি?
স্টিফেন

@ স্টেফেনস না, স্থানাঙ্কগুলি সনাক্ত করতে হবে যেখানে গ্লাইডারের উপরের বাম কোণটি শুরু হয়।
DJMcMayhem


2
the glider is a famous pattern that slowly traverses across the boar.। ধীরে ধীরে? এটি জিওএল-তে দ্রুততম তির্যক চলমান বস্তু। এটি আলোর গতিতে 1/4 পৌঁছে যায়।
ক্রিস্টোফ

1
@ ক্রিসটফ, ভাল বিষয়, আমরা পর্যবেক্ষণ করতে পারি যে এর দৈর্ঘ্যটি ভ্রমণের দিক থেকে সংকোচনের মতো বলে মনে হচ্ছে না, তবে আপেক্ষিক গতিতে এর ভর পরিমাপ করার কোনও উপায় আমি জানি না।
উইসনেম

উত্তর:



5

ভি , 31 , 30 বাইট

10O±°_|ÀGjjÀ|3r*kr*kh.Í*ü_/|&

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

Hexdump:

00000000: 3130 4fb1 b05f 7c1b c047 6a6a c07c 3372  10O.._|..Gjj.|3r
00000010: 2a6b 722a 6b68 2ecd 2afc 5f2f 7c26       *kr*kh..*._/|&

এটি প্রোগ্রাম আর্গুমেন্ট এবং 1-ইনডেক্স হিসাবে ইনপুট নেয়।

ব্যাখ্যা:

10O                         " On the following 10 lines, insert:
   ±°_                      "   10 '_' characters
      |                     "   And a '|'
       <esc>                " Return to normal mode
            ÀG              " Go to the a'th line
              jj            " Move down two lines
                À|          " Go to the b'th column
                  3r*       " and replace the next 3 characters with asterisks
                     k      " Move up a line
                      r*    " And replace this char with an asterisk
                        kh  " Move up a line and to the left
                          . " And repeat the last change we performed (replace with asterisk)
                            "
Í                           " On every line, substitute:
 *                          "   An asterisk
  ü                         "   OR
   _                        "   An underscore
    /                       " With:
     |&                     "   A bar followed by the matched pattern

দুটি প্রশ্ন: কী? এবং কিভাবে?
পিওরফেরেট

1
পিওফেরেটের দুটি উত্তর: গল্ফ ভাষা, বিজ্ঞান (বা তিনি ভি এক্সডি লিখেছেন)
ক্রিস্টোফার

1
পছন্দ করেছেন
ডিজেএমসিএমহেম

2

জেলি , 37 35 বাইট

ȷ2b1
Ḍ+“£Æßæç‘Ṭ+¢s⁵j3;0$€Fṭ0ị“_*¶|”

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

কিভাবে এটা কাজ করে

ȷ2b1                             - the literal [1,1,1,1,...,1,1,1] with 100 elements
Ḍ+“£Æßæç‘Ṭ+¢s⁵j3;0$€Fṭ0ị“_*¶|”   - input (x,y)
Ḍ                                - convert (x,y) to 10*x+y
 +                               - add, to get the five "*" positions,
  “£Æßæç‘                        - the literal [2,13,21,22,23]
         Ṭ                       - return an array with those positions as truthy elements
          +¢                    - Now we format: pad to length 100 with the above literal
            s⁵j3                 - add newlines (represented by 3) to each set of 10
                ;0$€F            - add pipes (represented by 0) to each
                     ṭ0          - add a 0 to the beginning
                       ị“_*¶|”   - index into the string “_*¶|”

1
আপনি কীভাবে আপনার প্রোগ্রামগুলি টাইপ / উত্পন্ন করেন?
রোবটকালেব

1
@ রবোটকালেব: সাধারণত জেলি কোডেপেজ থেকে অনুলিপি-আটকানো । আমি তাদের টিআইও নেক্সাসে চালিত করি যখন আমার প্রধান মেশিনে নেই, এবং আমার প্রধান কম্পিউটারে জেলি সংগ্রহস্থলটির একটি ক্লোন ।
ফায়ার ফ্লেম 241

2

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

আরও গল্ফ হবে।

def f(x,y):r,x=[list('|_'*10+'|')for i in[1]*10],x*2;r[y][x+3]=r[y+1][x+5]=r[y+2][x+1]=r[y+2][x+3]=r[y+2][x+5]='*';print'\n'.join(''.join(i)for i in r)

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


যদি আপনি পাইথন 3 এ স্যুইচ করতে ইচ্ছুক হন তবে আপনি কলটির [*'|_'*10+'|']পরিবর্তে 3 বাইট সংরক্ষণ করতে পারবেন list()
L3viathan

2

পার্ল 6 , 88 বাইট

->\x,\y{(^10 »*»i X+ ^10).map:{<|* |_>[$_!=
(1-2i|2-i|0|1|2)+x+y*i+2i]~"|
"x(.re==9)}}
  • জটিল নম্বরগুলি স্থানাঙ্কগুলির প্রতিনিধিত্ব করতে ব্যবহৃত হয়।

  • ^10 »*» i X+ ^10 শূন্য থেকে নয়টি পর্যন্ত পূর্ণসংখ্যার উপাদান সহ সমস্ত জটিল সংখ্যার গ্রিড তৈরি করে।

  • স্ট্রিংগুলির একটি তালিকা প্রদান করে, প্রতিটিতে একটি করে রেখা থাকে।


মজার বিষয়, আমি জানতাম না যে পার্ল নন-এএসসিআইআই ব্যবহার করে। কি করে »? এটি কীভাবে এনকোড করা আছে?
ডিজেএমসিএমহেম

1
এটি কেবল ইউটিএফ -8 এ এনকোডযুক্ত ইউনিকোডের রাইট পয়েন্টিং গিলিট, ইউ +00 বিবি পার্ল 6 এ এটি পাশাপাশি দুটি অ্যাঙ্গেল বন্ধনী হিসাবে লেখা যেতে পারে >>, তবে গিলমেট হিসাবে এটি একই সংখ্যার বাইট তাই গল্ফিংয়ের জন্য আমি পরেরটিকে পছন্দ করি কারণ এটি সামান্য শ্রেণিবদ্ধ IMHO দেখায়। এটি যা করে, এটি চারপাশে থাকা অপারেটরটিকে একটি "হাইপারোপরেটর" হিসাবে রূপান্তর করে যা উভয় পাশের তালিকাগুলি বা মানগুলিতে যুগলভাবে প্রযোজ্য। এখানে, এটা পরিসীমা প্রতিটি উপাদান দ্বিগুণ করে 0-9দ্বারা i, দান 0, i, 2i, ..., 9i
শন

1

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

r=[0..9]
x#y=['|':(r>>=(\i->[last$'_':['*'|elem(i-x,j-y)$zip[1,2,0,1,2][0,1,2,2,2]],'|']))|j<-r]

দুটি পূর্ণসংখ্যার ( xএবং y) নেয় এবং এর একটি তালিকা Stringঅর্থাত্ 2D ধরণের তালিকা প্রদান করে [[Char]]


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

import System.Environment

main :: IO ()
main = do
    args <- getArgs
    let (x, y) = (read $ args !! 0, read $ args !! 1)
    mapM_ putStrLn (x#y)


1

গণিত, 115 113 বাইট by

x(a="|_"~Table~10~Table~10;(a[[##]]="|*")&@@(#+x)&/@({{0,1,2,2,2},{1,2,0,1,2}});""<>Riffle[#<>"|"&/@a,"\n"])

কোথায়

এটি {row, col}ফর্ম্যাটে ইনপুট নেয় এবং এটি 1-ইনডেক্সড হয় তবে বাইটস যুক্ত না করে 0-সূচকে পরিণত হতে পারে।

কিছু নোট:

  1. \n একটি নতুন লাইনের চরিত্র, 1 বাইট লাগে।
  2. হয় \[Function], 3 বাইট লাগে
  3. হয় \[Transpose], 3 বাইট লাগে

নোট যে "স্ট্রিং এর অ্যারে", তাই আমি ঠিক অপসারণ করতে পারেন অনুমতি দেওয়া হয় Riffle, দেয়

গণিত, 98 97 বাইট

x(a="|_"~Table~10~Table~10;(a[[##]]="|*")&@@(#+x)&/@({{0,1,2,2,2},{1,2,0,1,2}});#<>"|"&/@a)

1

জাভা 8, 165 144 বাইট

x->y->{String r="";for(int i=0,j;++i<11;r+="\n")for(r+="|",j=0;++j<11;)r+=(i==x&j==y+1)|(i==x+1&j==y+2)|(i==x+2&j>=y&j<y+3)?"*|":"_|";return r;}

ব্যাখ্যা:

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

x->y->{                  // Method with two integer parameters and String return-type
  String r="";           //  Result-String
  for(int i=0,j;++i<11;  //  Loop (1) over the rows
     r+="\n|")           //    And after each iteration add a new-line to the result-String
    for(r+="|",          //   Start by appending "|" at the start of the line
      j=0;++j<11;        //   Loop (2) over the columns
      r+=(i==x&j==y+1)|(i==x+1&j==y+2)|(i==x+2&j>=y&j<y+3)?
                         //    If this coordinate should contain a '*'
        "*|"             //     Append "*|"
       :                 //    Else:
        "_|"             //     Append "_|"
    );                   //   End of loop (2)
                         //  End of loop (1) (implicit / single-line body)
  return r;              //  Return the result-String
}                        // End of method

1
আপনার উত্তরের চেয়ে ব্যাখ্যার আলাদা কোড আছে? প্রথম অ্যাসাইনমেন্ট দেখুন।
কম্পুট্রোনিয়াম

@ কমপোট্রোনিয়াম ওফস, লক্ষ্য করার জন্য ধন্যবাদ, স্থির বাই-কাউন্টটি সঠিক ছিল, ব্যাখ্যাটি সঠিক ছিল, টিআইও-লিংকটি সঠিক ছিল, তবে প্রকৃত উত্তরটি এখনও পুরানো
ভুলটি ছিল

1

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

x=>y=>eval('for(i=0,o="";i<101;o+=((d=i-x-y*10)==1|d==12|d>19&d<23?"|*":"|_")+(++i%10?"":`|\n`))o')

কারিরিংয়ের মাধ্যমে ইনপুট নেয়: f(5)(2)x = 5, y = 2 এর জন্য। স্থানাঙ্কগুলি শূন্য-সূচকযুক্ত।

পরীক্ষার স্নিপেট

f=
x=>y=>eval('for(i=0,o="";i<101;o+=((d=i-x-y*10)==1|d==12|d>19&d<23?"|*":"|_")+(++i%10?"":`|\n`))o')

xi.oninput=yi.oninput=_=>O.innerHTML=f(xi.value)(yi.value)
O.innerHTML=f(xi.value=5)(yi.value=2)
<style>*{font-family:Consolas;}input{width:2.5em;}</style>
x: <input id="xi" type="number" min="0" max="7">,
y: <input id="yi" type="number" min="0" max="7">
<pre id="O">


0

এসওজিএল , 23 বাইট

LIΖ|_ΟL∙.«."¾'┼ΞΧ⌠²‘5nž

দ্রষ্টব্য: এটি ইনপুটটি 1-সূচকযুক্ত হওয়ার প্রত্যাশা করে

ব্যাখ্যা:

LI                       push 11
  Ζ|_                    push "|" and "_"
     Ο                   make an altrenates string [with 11 separators, which are "|" and parts "_"]
      L∙                 get an array of 10 of those
        .«               take input and multiply by 2 (x pos)
          .              take input (y pos)
           "¾'┼ΞΧ⌠²‘     push "_|*|__|_|**|*|*" - the glider in the map
                    5n   split into an array with items of length 5
                      ž  replace in the 1st [grid] array at positions [inp1*2, inp2] to 2nd array [glider]


0

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

UO²¹χ|_J×N²N“ "}IyE%%mLBMφ/”

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


আমি হতাশ হয়েছি যে কাঠকয়লা খুব ভাল নয় ... কেবলমাত্র ASCII;)
বিটা ডেকে

একটি সংকুচিত বাইট সংরক্ষণ |_করার জন্য \nআপনি আগেরটি সরাতে পারেন । (আমি গ্লাইডার মুদ্রণের বিভিন্ন উপায়ে চেষ্টা করেছি কিন্তু কোনও বাইট সংরক্ষণ করেনি))
নীল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.