কোয়ান্টাম ড্রোনকার্ডের পদচারণা


69

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

সবিস্তার বিবরণী

প্রশ্নে মাতাল ব্যক্তি একটি বর্গ গ্রিড দখল করে এবং ভন নিউম্যান (প্লাস-শেপ) পাড়া ব্যবহার করে এটি একটি 3-রাষ্ট্রীয় সেলুলার অটোমেটন হিসাবে বিবেচিত হতে পারে যা এই সাধারণ নিয়মগুলি অনুসরণ করে:

  • Emptyযায় Awakeযদি এতে ঠিক একটি সংলগ্ন Awake, এবং অন্যথায় যায়Empty
  • Awake যায় Sleeping
  • Sleeping যায় Sleeping

বোর্ডের প্রাথমিক অবস্থা হ'ল একক এর Awakeচারপাশে অসীম ক্ষেত্র দ্বারা বেষ্টিত Empty

চ্যালেঞ্জ

একটি অব্যবহৃত পূর্ণসংখ্যা দেওয়া n, nপদক্ষেপের পরে মাতালদের একটি ASCII উপস্থাপনা তৈরি করুন । প্রতিটি রাজ্যকে আলাদা আলাদা চরিত্রের দ্বারা প্রতিনিধিত্ব করা উচিত এবং সমাধানগুলিতে কোন বর্ণের অর্থ কোন রাজ্যের তা বোঝানো উচিত। যদি আপনি এর জন্য স্পেস ব্যবহার করেন তবে আপনাকে Emptyকোনও লাইনের শেষে তাদের রান অন্তর্ভুক্ত করার দরকার নেই।

এটি , তাই সংক্ষিপ্ত উত্তর জেতে। স্ট্যান্ডার্ড লুফোলগুলি প্রয়োগ করা হয়, শীর্ষস্থানীয় এবং পিছনের সাদা অংশের অনুমতি দেওয়া হয়, স্ট্রিং অ্যারে / 2 ডি চর অ্যারে আউটপুট অনুমোদিত হয় ইত্যাদি etc.

উদাহরণ

এই উদাহরণগুলি ব্যবহার জন্য Empty, @জন্য Awake, এবং #জন্য Sleeping

n=0
@

n = 1
 @
@#@
 @

n = 2
  @
  #
@###@
  #
  @

n = 3
   @
  @#@
 @ # @
@#####@
 @ # @
  @#@
   @

n=6

      @
      # 
    @###@
     @#@  
  @  ###  @
  #@# # #@#
@###########@
  #@# # #@#
  @  ###  @
     @#@
    @###@
      #
      @

n=10
          @
          #
        @###@
         @#@
         ###
        # # #
       #######
      #  ###  #
  @  ##  ###  ##  @
  #@# ### # ### #@#
@###################@
  #@# ### # ### #@#
  @  ##  ###  ##  @
      #  ###  #
       #######
        # # #
         ###
         @#@
        @###@
          #
          @

আকর্ষণীয় নোট

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


1
আপনার ক্ষেত্রেটি n=10সঠিক কিনা তা যাচাই করতে আপনি পরীক্ষা করতে পারেন ? আমি কয়েকটি পদ্ধতির চেষ্টা করেছি এবং সেগুলি সকলেই একই (ভুল) উত্তর পেয়েছে, তাই আমি কেবল এটি নিশ্চিত করতে চাই। এটি কিছুটা দূরে দেখাচ্ছে তবে আমি জানি না।
হাইপারনিউটারিনো


1
এক-মাত্রিক চর অ্যারে অনুমোদিত?
জোনাথন ফ্রেচ

4
দুর্দান্ত প্রথম চ্যালেঞ্জ, বিটিডাব্লু!
লুইস মেন্ডো

1
@ পিএম 2 রিং বৈধ। একটি অদ্ভুত অ্যারের হিসাবে আমার বইতে একটি দেশীয় অজগর অ্যারে গণনা করা হয়েছে
স্টেল্লেটেডহেক্সাহেড্রন

উত্তর:


34

ওল্ফ্রাম ভাষা (গণিত) , 92 91 বাইট a

Print@@@CellularAutomaton[{7049487784884,{3,{a={0,3,0},3-2a/3,a}},{1,1}},{j={{1}},0},{j#}]&

ম্যাথমেটিকার বিল্টিন ব্যবহার করার জন্য একটি নিখুঁত চ্যালেঞ্জ CellularAutomaton!

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

খালি = 0, জাগ্রত = 1, ঘুমন্ত = 2

প্রথম 256 টি পুনরাবৃত্তির অ্যানিমেশন (সাদা = খালি, ধূসর = জাগ্রত, কালো = ঘুমন্ত):

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

ব্যাখ্যা

CellularAutomaton[ ... ]

CellularAutomatonনির্দিষ্টকরণের সাথে চালান ...

{7049487784884,{3,{a={0,3,0},3-2a/3,a}},{1,1}}

ভন নিউম্যান পাড়ার সাথে 3-রঙের সর্বাত্মক নিয়ম 7049487784884 প্রয়োগ করুন ...

{j={{1}},0}

মাঝখানে একক 1 দিয়ে একটি বোর্ডে, 0 এর পটভূমি সহ ...

{j#}

পুনরাবৃত্তি <input>বার ( {j#}মূল্যায়ন {{{#}}})। সীমানার বাইরে কোনও সেল ব্যাকগ্রাউন্ডের মতো না হলে অ্যারেটি স্বয়ংক্রিয়ভাবে প্রসারিত হয়

7049487784884

এই নিয়ম বেস -3 নম্বর থেকে আসে 220221220221220221220221220, যার মানে "সব পরিবর্তন 1বা 2করার 2, এবং পরিবর্তন 0করার জন্য 1যদি এবং কেবল যদি সেখানে একটি বিজোড় সংখ্যা 1গুলি এটি প্রায়।"

Print@@@

অ্যারে মুদ্রণ করুন।

"'বিজোড় 1s' এর আধা-প্রমাণ 'ঠিক এক 1' এর সমতুল্য :

এই 5x5 গ্রিড পিক্সেল বিবেচনা করুন। সাদা একটি 0বা একটি 2ঘর (অ-জাগ্রত পিক্সেল) এবং ধূসর একটি 1ঘর।

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

যদি কোনও 1ঘর প্রায় তিনটি 0কোষ তৈরি করা হয় তবে গ্রিডটি দেখতে অবশ্যই এটির মতো: এটি 1একটি ইউ-আকারে (বা একটি ঘোরানো সংস্করণ) নিম্নরূপে সাজানো তিনটি রয়েছে :

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

এই সেলুলার অটোমেটনের স্ব-মিলের কারণে, সেলুলার অটোমেটনে প্রদর্শিত যে কোনও প্যাটার্নটি অবশ্যই তির্যকটিতে প্রদর্শিত হবে (প্রবর্তন করে)। তবে, এই প্যাটার্নটি তির্যকভাবে প্রতিসম নয়। অর্থাৎ এটি তির্যকটিতে ঘটতে পারে না এবং সেলুলার অটোমেটনে কোথাও উপস্থিত হতে পারে না।

জাগ্রত / ঘুম সমতুল্য

নোট করুন যে কোনও 0ঘরটি ঠিক এক বা তিনটি 2কোষ এবং বিশ্রাম 0কোষ দ্বারা বেষ্টিত হতে পারে না , যেহেতু এটি বোঝায় যে কয়েক ধাপ আগে কোষটির এক বা তিনটি 1কোষের প্রতিবেশী ছিল - এবং অবশ্যই এটি 1ইতিমধ্যে (দ্বন্দ্ব) হয়ে উঠেছে । অতএব, এটা মধ্যে পার্থক্য উপেক্ষা করার ঠিক আছে 1এবং 2এবং রাষ্ট্র 'সব পরিবর্তন 1করতে 1, এবং একটি 0একটি থেকে 1যদি এবং কেবল এটা অশূন্য প্রতিবেশীদের একটি বিজোড় সংখ্যা হয়েছে থাকে।'

ফলস্বরূপ সেলুলার অটোমেটন প্রকৃতপক্ষে আসলটির সাথে সমান, কেবলমাত্র "জাগ্রত" এবং "ঘুমন্ত" মাতালদের মধ্যে কোনও তফাত নেই difference এই প্যাটার্নটি OEIS A169707 এ বর্ণিত হয়েছে ।

Print@@@CellularAutomaton[{750,{2,{a={0,2,0},2-a/2,a}},{1,1}},{j={{1}},0},{j#}]&

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

প্রথম 16 টি পুনরাবৃত্তির সাথে পাশাপাশি তুলনা:

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

টানা দু'বার পুনরাবৃত্তি যুক্ত করা একটি ফলাফল দেয় যা চ্যালেঞ্জের চশমা (94 বাইট) অনুসরণ করে:

Print@@@Plus@@CellularAutomaton[{750,{2,{a={0,2,0},2-a/2,a}},{1,1}},{{{1}},0},{Ramp@{#-1,#}}]&

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


11

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

x=input()
o=c={x+x*1j}
R=range(x-~x)
exec"n=[C+k for k in-1j,1j,-1,1for C in c];n={k for k in n if(k in o)<2-n.count(k)};o|=c;c=n;"*x
print[[`(X+Y*1jin c)+(X+Y*1jin o|c)`for Y in R]for X in R]

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

জনাব এক্সকডার
-9 বাইটসকে জনাথনের আউটপুট ফর্ম্যাট ব্যবহার করে
-১১ বাইট ধন্যবাদ লিন
-৩ বাইট ধন্যবাদ ওভসকে ধন্যবাদ


একটি সম্পূর্ণ প্রোগ্রামে স্যুইচ করা যেখানে আপনি exec9 টি বাইট সংরক্ষণ করতে পারবেন এবং …for k in 0,1,2,3for…আরও একটি সংরক্ষণ করে: লিংক
লিন

1
আসলে, n=[C+k for k in-1j,1j,-1,1for C in c]আরও একটি বাইট সংরক্ষণ!
লিন

1
... ঠিক আছে, আমি স্বীকার করতে হবে X+Y*1jinএমন কিছু যা আমি সত্যই সম্ভব বলে মনে করি নি: পি
ইটিএইচ প্রডাকশন

1
@ ইথ প্রডাকশনগুলি আমি এটির কাজ করার আশা করিনি তবে আমি "হেই আপনি কোনও সনাক্তকারী / কীওয়ার্ডের আগে একটি সংখ্যা পরে স্পেসগুলি সরিয়ে ফেলতে পারেন তাই যদি এটি লোভের সাথে মেলে তবে এটি জটিল সংখ্যার সাথে কাজ করবে?: ডি পাইথন আশ্চর্যজনক: পি
হাইপারনিউট্রিনো

10

সি, 360 354 343 319

#define A(i,b,e)for(int i=b;i<e;++i)
#define B(b,e)A(r,b,e){A(c,b,e)
#define W(n)(n<0?-(n):n)
#define C(r,c)b[W(r)*s+W(c)]
#define D C(r,c)

q(n){char N,s=n+2,(*b)[2]=calloc(s,2*s);C(0,0)
[1]=1;A(g,0,n+1){B(0,s)*D=D[1];}B(0,g+2){N=(*C
(r-1,c)+*C(r+1,c)+*C(r,c-1)+*C(r,c+1))&1;D[1]=
*D?2:N;}}}B(2-s,s-1)putchar(*D+32);puts("");}}

অ- #defineলাইনের পরে থাকা নিউলাইনগুলি কেবল এখানে উপস্থাপনের জন্য, যাতে সেগুলি গণনা করা হয় না। আমি একটি মোড়কের ফাংশন অন্তর্ভুক্ত করেছি, সুতরাং যদি ফাংশনটি গণনা করা হয় না এবং আপনি ধরে nনেন যে অন্য কোথাও থেকে আসে .6 (313) । q(10)আউটপুট:

          !          
          "          
        !"""!        
         !"!         
         """         
        " " "        
       """""""       
      "  """  "      
  !  ""  """  ""  !  
  "!" """ " """ "!"  
!"""""""""""""""""""!
  "!" """ " """ "!"  
  !  ""  """  ""  !  
      "  """  "      
       """""""       
        " " "        
         """         
         !"!         
        !"""!        
          "          
          !          

ব্যবহার খালি জন্য, "ঘুমিয়ে পড়েছেন, আর জন্য !জাগ্রত জন্য।

এটি এর মতো কাজ করে:

  • A(i,b,e)"∀i∈ [বি, ই)।", B(b,e)হ'ল "∈রি [বি, ই) ∀c∈ [বি, ই)।"

  • দেখুন যে n প্রজন্মের পরে বোর্ডটি 2 এন + 1 বর্গ হয়।

  • বোর্ডের প্রতিসাম্যের কারণে, এটি কেবল নীচের ডান চতুষ্কোণকে অনুকরণ করা প্রয়োজন, সুতরাং আমরা পরবর্তী প্রতিবেশী অনুসন্ধানের জন্য একটি এন + 1 বর্গ ম্যাট্রিক্স 1 সারি এবং প্যাডিংয়ের কলামের জন্য বরাদ্দ করি (সুতরাং এন + 2)।

  • এর সাথে বরাদ্দকরণ callocআমাদের একযোগে উচ্চতা দ্বারা প্রস্থকে গুণিত করতে দেয় এবং বোর্ডটি 0খালি করে ফেলতে দেয় (খালি)।

  • কোনও ঘর যখন তার স্থানাঙ্কগুলি ( Cএবং D) দ্বারা অনুসন্ধান করা হয়, তখন Wএটি স্থানাঙ্কগুলি স্বয়ংক্রিয়ভাবে আয়নাতে সারি এবং কলামের ( ) এর পরম মান ব্যবহার করে ।

  • বোর্ডটি বর্তমান এবং পূর্ববর্তী প্রজন্মের প্রতিনিধিত্বকারী জোড় সংখ্যার অ্যারের হিসাবে সংরক্ষণ করা হয় is প্রশ্নের পূর্ণসংখ্যাগুলি charতাই আমরা এড়াতে পারি sizeof

  • প্রজন্মটি প্রায়শই সন্ধান করত (প্রতিবেশী পরীক্ষার দ্বারা) অতীত প্রজন্ম, সুতরাং এটি জোড়ের সূচক 0 এ রাখা হয়েছে যাতে এটির সাথে অ্যাক্সেস করা যায় *

  • প্রতিটি প্রজন্মের ( g) এ, বর্তমান প্রজন্ম Bলুপ ব্যবহার করে পূর্ববর্তী প্রজন্মের অনুলিপি করা হয় , তারপরে নতুন প্রজন্মটি পুরানো থেকে উত্পন্ন হয়।

  • প্রতিটি ঘর 0খালি, 1জাগ্রত এবং 2ঘুমানোর জন্য ব্যবহার করে প্রতিনিধিত্ব করা হয় । প্রতিবেশীদের গণনা করা প্রকৃতপক্ষে ঘরের 4 টি প্রতিবেশী স্থানান্তরিত হয়ে & ঘুমানোর জন্য Nব্যবহার করে পতাকা ( ) হিসাবে একত্রে অর্ডার করা হয় এমন কক্ষের কম 4 টি বিটে সেট বিটের সংখ্যার গণনা ছিল 16। তবে পর্যবেক্ষণ করে যে এক বিজোড় সংখ্যক প্রতিবেশী ঠিক 1 প্রতিবেশীর সমতুল্য, আমরা 1 দিয়ে কেবল একটি মুখোশ ব্যবহার করে কয়েকটি অক্ষর সংরক্ষণ করতে পারি।

  • শেষে, বোর্ডটি সম্পূর্ণ নিখুঁত মান স্থানাঙ্ক ট্রিক, মাইনাস প্যাডিং ব্যবহার করে নীচের ডান কোয়াড্রেন্টের উপরে পুনরাবৃত্তি করে পূর্ণ মুদ্রণ করা হয় যাতে আমরা বোর্ডে বাইরের প্যাডিং প্রিন্ট না করি। এ কারণেই Bলুপটিতে একটি খোলার কোঁকড়ানো বন্ধনী অন্তর্ভুক্ত রয়েছে কারণ বাইরের লুপে আমাদের অতিরিক্ত নিউলাইন স্টেটমেন্ট রয়েছে।

  • এএসসিআইআই কোডগুলি সুবিধামতভাবে কোনও স্থানে 0 + 32 (খালি), 2 + 32 (ঘুমন্ত) থেকে "এবং 1 + 32 (জাগ্রত) ম্যাপ করে !

সব মিলিয়ে আমি মনে করি সমস্যার চমৎকার কাঠামোর কারণে এটি একটি আশ্চর্যজনকভাবে পঠনযোগ্য গল্ফ।


কি দারুন. ক্ষুদ্র জিনিস, কিন্তু আমি মনে করি আপনি গুণ এবং বদল আনতে প্রতিস্থাপন আরো কয়েকটি বাইট সংরক্ষণ করতে পারবেন putchar(10)সঙ্গেputs("")
undercat

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


@ জোনাথনফ্রেচ: ধন্যবাদ, যোগ করা হয়েছে। আমি ভুলে গিয়েছিলাম যে প্রতিবেশীদের গণনা একটি ন্যান্ড ব্যবহার করতে পারে।
জন পূর্দি

@ জোনাথনফ্রেচ: দুঃখিত, আমি অনুমান করি যে এটি অস্পষ্ট ছিল। &~একটি NAND নয়, আমি বোঝানো আমি কখনও কখনও মনে যে !(a &~ b)পদ a NAND (NOT b), যদিও এই ক্ষেত্রে যৌক্তিক !, bitwise হিসাবে একই নয় ~, কারণ আমরা উপর নির্ভর করছি 0বা 1ফল !
জন পুরে

6

এমএটিএল , 39 বাইট

QtE:=&*G:"tt0=w1Y6Z+Xj1=*w|gJ*+]Q|U31+c

এটি প্রদর্শিত হয়

  • Emptyহিসাবে (স্থান)
  • Awake যেমন #
  • Sleepingযেমন !

এটি অনলাইন চেষ্টা করুন! আপনিASCII শিল্প বা গ্রাফিকভাবে (পরিবর্তিত কোড) বৃদ্ধির প্যাটার্নটিও দেখতে পারেন।

ব্যাখ্যা

কোড জটিল নম্বরগুলি ব্যবহার করে 0, 1, jতিনটি রাজ্যে প্রতিনিধিত্ব করতে: খালি, প্রাক্কালে যথাক্রমে ঘুমের।

Q         % Implicitly input n. Add 1
tE        % Duplicate and multiply by 2
:         % Range [1 2 ... 2*n]
=         % Test for equalty. Gives [0 ... 0 1 0... 0], with 1 at position n
&*        % Matrix of all pairwise products. Gives square matrix of size 2*n
          % filled with 0, except a 1 at position (n,n). This is the grid
          % where the walk will take place, initiallized with an awake cell
          % (value 1). The grid is 1 column and row too large (which saves a
          % byte)
G:"       % Do n times
  tt      %   Duplicate current grid state twice
  0=      %   Compare each entry with 0. Gives true for empty cells, false
          %   for the rest
  w       %   Swap: moves copy of current grid state to top
  1Y6     %   Push 3×3 matrix with Von Neumann's neighbourhood
  Z+      %   2D convolution, maintaining size
  Xj      %   Real part
  1=      %   Compare each entry with 1. This gives true for cells that
          %   have exactly 1 awake neighbour
  *       %   Multiply, element-wise. This corresponds to logical "and": 
          %   cells that are currently empty and have exactly one awake
          %   neighbour. These become 1, that is, awake
  w       %   Swap: moves copy of current grid state to top
  |g      %   Absolute value, convert to logical: gives true for awake or
          %   sleeping cells, false for empty cells
  J*+     %   Mulltiply by j and add, element-wise. This sets awake and 
          %   sleeping cells to sleeping. The grid is now in its new state
]         % End
Q         % Add 1, element-wise. Transforms empty, awake, sleeping 
          % respectively from 0, 1, j into 1, 2, 1+j
|U        % Abolute value and square, element-wose. Empty, awake, sleeping 
          % respectively give 1, 4, 2
31+c      % Add 31 element-wise and convert to char. Empty, awake, sleeping 
          % respectively give characters ' ' (codepoint 32), '#' (codepoint 
          % 35) and '!' (codepoint 33). Implicitly display

5

বেফুঞ্জ, 384 304 বাইট

&:00p->55+,000g->>00g30p:40p\:50p\5>>40g!50g!*vv0g05g04p03-<
@,+55_^#`g00:+1$_^>p:4+4g5%2-50g+5#^0#+p#1<v03_>30g:!#v_:1>^
#v_>$99g,1+:00g`^ ^04+g04-2%5g4:\g05\g04\p<>g!45*9+*3+v>p:5-
 >\50p\40p\30p:#v_>>0\99g48*`!>v >30g:1-30^>>**\!>#v_>v^9 9<
$0\\\\0$        >\99g88*-!+\:4->#^_\>1-!48>^       >$3>48*+^

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

বেফুঞ্জে এই ধরণের জিনিসটি প্রয়োগ করার চেষ্টা করার সাথে সমস্যা হ'ল সীমিত মেমরির আকার (ডেটা এবং কোড উভয়ের জন্য 2000 বাইট)। সুতরাং আমাকে একটি অ্যালগরিদম ব্যবহার করতে হয়েছে যা পূর্ববর্তী গণনার উল্লেখ ছাড়াই কোনও প্রদত্ত স্থানাঙ্কের জন্য সঠিক চরিত্রের গণনা করে। এটি মাতাল ব্যক্তি সেই পর্যায়ে পৌঁছানোর জন্য সমস্ত সম্ভাব্য পথগুলি পুনরাবৃত্তভাবে সময়ের সাথে পিছনে তাকিয়ে এটি অর্জন করে।

দুর্ভাগ্যক্রমে এটি কোনও বিশেষ দক্ষ সমাধান নয়। এটি কাজ করে, তবে এটি অবিশ্বাস্যরূপে ধীর হয় এবং এটি এন এর মান আরও বৃহত্তর ধীর হয়ে যায় । সুতরাং এটি প্রায় 127 (বেফুঞ্জের 7-বিট মেমরি সেল সীমা) পর্যন্ত কোনও এন এর পক্ষে সম্ভাব্যভাবে কাজ করতে পারে, বাস্তবে আপনি অবশ্যই ফলাফলের জন্য অপেক্ষা করতে আগ্রহী হারাবেন। টিআইও-তে, এটি প্রায় 6০ (সর্বোত্তম) এর চেয়ে বেশি কিছুতে second০ সেকেন্ডের সময়সীমাটি হিট করবে। একটি সংকলক আরও অনেক ভাল করবে, তবে তারপরেও আপনি সম্ভবত 10 এর চেয়ে বেশি যেতে চাইবেন না।

তবুও, আমি ভেবেছিলাম এটি জমা দেওয়ার উপযুক্ত কারণ এটি বেফুঞ্জে একটি পুনরাবৃত্ত "ফাংশন" এর বাস্তবে বেশ দুর্দান্ত প্রদর্শন।


4

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

def f(n):k=n-~n;N=k*k;A=[0]*N;A[N/2]=2;exec"A=[[2*([j%k>0and A[j-1],j%k<k-1and A[j+1],j/k>0and A[j-k],j/k<k-1and A[j+k]].count(2)==1),1,1][v]for j,v in enumerate(A)];"*n;print[map(str,A)[k*x:][:k]for x in range(k)]

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

ব্যাখ্যা

ব্যবহার 0জন্য empty, 1জন্য sleepingএবং 2জন্য awake। দ্বি-মাত্রিক অক্ষর (এক দৈর্ঘ্যের স্ট্রিং) তালিকা মুদ্রণ করে।
একটি ফাংশন সংজ্ঞা দেয় যা অ-নেতিবাচক পূর্ণসংখ্যায় নিয়ে যায় n। পছন্দসই অবস্থায় পৌঁছা না হওয়া পর্যন্ত সেলুলার অটোমেটনের ধারাবাহিকভাবে অগ্রসর হয়। শেষ অবধি, অভ্যন্তরীণ পূর্ণসংখ্যার মান এবং প্রকৃত অক্ষরের মধ্যে রূপান্তর প্রয়োগ করা হয়।


4

লুয়া , 251 242 239 238 বাইট

কিছু অতিরিক্ত নেতৃস্থানীয় হোয়াইটস্পেসের ব্যয়ে অ্যারে ইনিশিয়ালাইজারটি সহজ করে -8 বাইট।
-1 বাইট এ পরিবর্তন c=i==2+...and print(s)করে c=i~=2+...or print(s)
প্রথমে একটি সম্পূর্ণ স্ট্রিং তৈরি করে এবং শেষে একবার মুদ্রণ করে -3 বাইট।
-1 বাইট হিসাবে পুনরায় লিখে জনাথন ফ্রেচকে ধন্যবাদ জানাইor(g(...)==1 andor(1==g(...)and

function g(x,y)return(a[x]or{})[y]or 0 end a={{1}}for i=2,2+...do n={}s=""for x=-i,i do n[x]=n[x]or{}q=a[x]or{}for y=-i,i do n[x][y]=q[y]and 0or(1==g(x+1,y)+g(x,y+1)+g(x-1,y)+g(x,y-1)and 1)s=s..(q[y]or" ")end s=s.."\n"end a=n end print(s)

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

খালি = স্থান
জাগ্রত = 1
ঘুমন্ত =0

কমান্ড লাইন থেকে ইনপুট নেয় এবং stdout এ মুদ্রণ করে।

যেমন রাজ্যের প্রতিনিধিত্ব করে false/ nil, 1এবং 0অভ্যন্তরীণভাবে, সনাক্ত "খালি" কোনো কোড দরকার নেই এবং "ঠিক এক জাগ্রত" চেক শুধু একটি যোগে করা যাবে।


আমার মনে হয় or(g(...)==1 andহতে পারে or(1==g(...)and
জোনাথন ফ্রেচ

4

4

জেলি , 39 29 বাইট

-,1ṙ@€Sµ+Z
‘ṬŒḄ×þ`µÇ׬Ḃ+Ḃ+µ³¡

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

ব্যবহার করে 0, 1এবং 2খালি জাগ্রত এবং ঘুমানোর জন্য। লিঙ্কে পাদচরণ এই পরিবর্তিত , @এবং #

  • এর ṬŒḄপরিবর্তে -1 বাইট ব্যবহার করে ḤḶ=¹
  • -পরিবর্তে ব্যবহার করে -2 বাইট 1N¤অপ্রয়োজনীয়ও করে তোলে ।
  • এর Sপরিবর্তে -1 বাইট ব্যবহার করে +/
  • Ḃ+Ḃ+পরিবর্তে ব্যবহার করে -6 বাইট %3=1+=1Ḥ$+2ঘুমের পরিবর্তে এখন ব্যবহার করে 3

ব্যাখ্যা আসছে ...


4

এপিএল (ডায়ালগ ক্লাসিক) , 38 বাইট

((2∘∧⌈2|⍉∘g∘⍉+g3+/0,,∘0)(⌽0,⍉)⍣4)⍣⎕⍪1

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

এরিক আউটগল্ফারের সমাধানের ভিত্তিতে

⍪1 1 যুক্ত 1x1 ম্যাট্রিক্স

eval'ed ইনপুট

( )⍣⎕ যে অনেক বার প্রয়োগ

  • (⌽0,⍉)⍣40 এর সাথে ঘিরে, যা 4 বার করুন: ট্রান্সপোজ ( ), বাম দিকে 0 টি যুক্ত করুন ( 0,), অনুভূমিকভাবে বিপরীত করুন ( )

  • g←3+/0,,∘0 এমন একটি ফাংশন যা অনুভূমিক ত্রিগুণগুলির সমষ্টি করে, এটি কল করে g

  • ⍉∘g∘⍉এমন একটি ফাংশন যা উল্লম্ব ট্রিপলগুলির সমষ্টি করে - এটি gস্থানান্তরের অধীনে

  • 2 | ⍉∘g∘⍉ + g←3+/0,,∘0 দুটি যোগফলের যোগফল 2

  • এর মধ্যে বৃহত্তর ...

  • 2∘∧ 2 এর এলসিএম এবং আসল ম্যাট্রিক্স - 0 এবং 2 গুলি সংরক্ষণের সময় এটি 1 সেকেন্ডকে 2 এস রূপান্তরিত করে


3

পার্ল 5 , 192 + 1 ( -n) = 193 বাইট

for$i(1..2*$_+1){push@a,[()x$_]}$a[$_][$_]=1;map{@b=();for$i(0..$#a){map$b[$i][$_]=$a[$i][$_]?2:$a[$i-1][$_]+($_&&$a[$i][$_-1])+$a[$i+1][$_]+$a[$i][$_+1]==1?1:0,0..$#a}@a=@b}1..$_;say@$_ for@a

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

শূন্যের জন্য 0, জাগ্রত হওয়ার জন্য 1 এবং ঘুমানোর জন্য 2 ব্যবহার করে।


3

রুবি , 164 153 বাইট

->n{(r=([e=' ']*(l=2*n+1)<<"
")*l)[n+n*l+=1]=a=?@
n.times{r=r.map.with_index{|c,i|c==a ??#:c==e ?r.values_at(i-1,i+1,i-l,i+l).one?{|v|v==a}?a:e:c}}
r*""}

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

শূন্যতার জন্য "", জাগরণের জন্য "@", এবং ঘুমানোর জন্য "#" ব্যবহার করুন (উদাহরণস্বরূপ)। আমি পরিবর্তে সংখ্যা ব্যবহার করে 6 বাইট সংরক্ষণ করতে পারি, আমি মনে করি, তবে এটি দেখতে আরও ভাল দেখাচ্ছে।


2

পিপ , 69 61 বাইট

60 বাইট কোডের, -lপতাকা জন্য +1 ।

YZG2*a+1y@a@a:1LaY{y@a@b?2oN(y@(a+_)@(b+B)MP[0o0v0])=1}MC#yy

nকমান্ড-লাইন আর্গুমেন্ট হিসাবে গ্রহণ করে । ব্যবহার 0, খালি জন্য 1জাগ্রত জন্য, এবং 2ঘুমন্ত জন্য। (চ্যালেঞ্জের উদাহরণগুলির মতো ভাল ASCII- আর্ট পেতে, ফাইনালের yসাথে প্রতিস্থাপন করুন " @#"@y।)

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

ব্যাখ্যা

সেটআপ:

YZG2*a+1y@a@a:1

                 Implicit: a is 1st cmdline arg; o is 1; v is -1
 ZG2*a+1         Square grid (i.e. nested list) of 0's, with side length 2*a+1
Y                Yank into y variable
        y@a@a:1  Set the element at coordinates (a,a) to 1

প্রধান লুপ:

LaY{...}MC#y

La            Loop (a) times:
          #y  Len(y) (i.e. 2*a+1)
   {   }MC    Map this function to the coordinate pairs in a 2*a+1 by 2*a+1 grid
  Y           and yank the resulting nested list back into y

ফাংশন বডি যেখানে:

y@a@b?2oN(y@(a+_)@(b+B)MP[0o0v0])=1

                                     The function args, representing the coords of the
                                     current cell, are a and b
y@a@b?                               Is the cell at these coords 0 or nonzero?
      2                              If nonzero (1 or 2), make it 2
                                     Else, if zero, we need to check the neighbors
                         [0o0v0]     List of [0; 1; 0; -1; 0]
                       MP            Map this function to each adjacent pair of values--
                                     i.e. call it four times with args (0; 1), (1; 0),
                                     (0; -1), and (-1; 0)
          y                           Index into the grid using
           @(a+_)                     a + the 1st item in the pair as the row and
                 @(b+B)               b + the 2nd item in the pair as the column
                                     The result of MP is a list of the values of the cells
                                     in the Von Neumann neighborhood
       oN(                      )    Get the number of 1's in that list
                                 =1  and test if it equals 1
                                     If so, the new value of this cell is 1; if not, it's 0

লুপের পরে, আমরা কেবল অটোপ্রিন্ট করি y-lপতাকা মানে হল যে নেস্টেড তালিকা প্রতিটি সারির বিষয়বস্তু concatenating এবং নতুন লাইন দিয়ে সারি পৃথক ছাপা হয়।


2

জাভা (ওপেনজেডিকে 8) , 220 বাইট

n->{int s=n*2+3,i=0,x,y;char[][]a=new char[s][s],b;for(a[s/2][s--/2]=61;i++<n;a=b)for(b=new char[s+1][s+1],x=0;++x<s;)for(y=0;++y<s;)b[x][y]=a[x][y]>32?'0':(a[x][y-1]+a[x][y+1]+a[x-1][y]+a[x+1][y])%8==5?61:' ';return a;}

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

দ্রষ্টব্য: ফিরে আসা অ্যারেতে একটি সীমানা বা '\0'অক্ষর রয়েছে। যেহেতু বিমানটি অসীম হওয়ার কথা, তাই কেবল সীমান্ত ব্যবহার করা হয়।

চরিত্রের ম্যাপিং:

  • খালি: (স্থান)
  • জাগো: =
  • ঘুমন্ত: 0

সংরক্ষণ

  • 29 বাইট জোনাথন এসকে ধন্যবাদ রক্ষা করেছে
  • অন্যদের সাথে চরিত্রের অদল-বদল করে এবং "প্রাইমস এবং মডিউলার গাণিতিকের সাথে ম্যাজিক করে" জোনাথন এসকে আরও 9 টি বাইটস ধন্যবাদ জানায়


ধন্যবাদ @ জনাথনস আমি আমার- @চেকটি উন্নত করার জন্য সত্যই শক্তিশালী ছিলাম এবং আপনি কীটি পেয়েছিলেন! খুশী হলাম। char-Cast আমার কাছ থেকে মোট ভুল ছিল।
অলিভিয়ার

1
প্রাইমস এবং মডিউলার পাটিগণিতের সাথে যাদু করে 220 বাইট
জোনাথন এস

এটা কিছু খুব সুন্দর চিন্তা!
অলিভিয়ার

1
ধন্যবাদ! আমি সবেমাত্র একটি সুন্দর সংস্করণ পেয়েছি যা 220 বাইট, বিভিন্ন মডুলাস।
জোনাথন এস

2

পাইথন, 199 192 বাইট

এই কোডটি পাইথন 2 এবং পাইথন 3 উভয়টিতে চলে তবে এটি অ্যারে হ্যান্ডলিং করতে জনপ্রিয় তৃতীয় পক্ষের নম্পি লাইব্রেরি ব্যবহার করে।

from numpy import*
def f(n):
 m=2*n+1;g=zeros((m+2,)*2,'i');g[n+1,n+1]=1
 while n:a=g[1:-1,1:-1];a[:]=(a<1)*(sum(g[r:r+m,c:c+m]&1for r,c in((0,1),(1,0),(1,2),(2,1)))==1)+(a>0)*2;n-=1
 return g

খালি = 0
জাগ্রত = 1
ঘুমন্ত = 2

print(f(6)) আউটপুট

[[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 2 0 0 0 0 0 0 0]
 [0 0 0 0 0 1 2 2 2 1 0 0 0 0 0]
 [0 0 0 0 0 0 1 2 1 0 0 0 0 0 0]
 [0 0 0 1 0 0 2 2 2 0 0 1 0 0 0]
 [0 0 0 2 1 2 0 2 0 2 1 2 0 0 0]
 [0 1 2 2 2 2 2 2 2 2 2 2 2 1 0]
 [0 0 0 2 1 2 0 2 0 2 1 2 0 0 0]
 [0 0 0 1 0 0 2 2 2 0 0 1 0 0 0]
 [0 0 0 0 0 0 1 2 1 0 0 0 0 0 0]
 [0 0 0 0 0 1 2 2 2 1 0 0 0 0 0]
 [0 0 0 0 0 0 0 2 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]

আপনি যদি সুন্দর প্রিন্টিং চান তবে আপনি এটিকে কল করতে পারেন:

n=6;print('\n'.join(''.join(' @#'[v]for v in u)for u in f(n)))

যা প্রশ্নের একই বর্ণগুলি ব্যবহার করে মুদ্রণ করে।


আমি জানি না যে কোনও পূর্ণসংখ্যার ম্যাট্রিক্সকে আউটপুট করার অনুমতি দেওয়া হয়েছে কিনা [e]ach state should be represented by a different character( যেমন আমি characterএকটি পূর্ণসংখ্যার চেয়ে প্রকৃত ASCII চরিত্র হিসাবে ব্যাখ্যা করি )।
জোনাথন ফ্রেচ

@ জোনাথানফ্রেচ ফেয়ার কল আমি ওপিকে জিজ্ঞাসা করব।
প্রধানমন্ত্রী 2Ring
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.