বিটার স্নোফ্লেক


12

চ্যালেঞ্জ

শীতকালীন 15/16 মরসুমে প্রথম স্তরের বরফ প্রাপ্ত অনেক জায়গার সাথে দ্রুত এগিয়ে চলেছে, তাই আমরা কেন তুষার মেশিনগুলি ছিন্ন করে না এবং নিজেদেরকে কিছু বরফ কোড করি না?

nSTDIN- এর মাধ্যমে একটি পূর্ণসংখ্যা দেওয়া , স্তরের একটি বিসির তুষারফলক (নীচে বর্ণিত হিসাবে) আউটপুট করুন n

বিটার স্নোফ্লেক

স্নোফ্লেকটি 0 টি স্তরে একক এক্স দিয়ে শুরু হয়:

x

তারপরে, প্রতিটি কোণে আপনি এই আকারগুলির একটি যুক্ত করুন:

x
xx

আপনি উপরের আকৃতিটি উপরের ডান কোণে যুক্ত করুন। নীচে ডান কোণে, 90 ° ঘড়ির কাঁটার দিকে, নীচে বাম দিকে, 180 ° ঘড়ির কাঁটার দিকে এবং উপরের বাম দিকে, 270 27 ঘড়ির কাঁটার দিকে ঘোরান।

আপনি যদি এটি করেন তবে আপনি নীচের আকারটি পাবেন:

 x x
xx xx
  x
xx xx
 x x

আকারগুলির ওরিয়েন্টেশন নোট করুন। বহন করে আমরা প্রতিটি কোণায় আরও বেশি আকার যুক্ত করি, উপরের বর্ণিত ওরিয়েন্টেশন নিয়মগুলি ব্যবহার করে, স্তরের ২ পেতে ডায়াগ্রামে:

  x x x
 xxxxxxx
xx x x xx
 xxx xxx
xx  x  xx
 xxx xxx
xx x x xx
 xxxxxxx
  x x x

নোট করুন যে আকারগুলি কেবল xদুটি বা ততোধিক উন্মুক্ত দিকগুলির সাথে যুক্ত করা হয় (যা উপরের কোণে উল্লেখ করা হয়)।

এল-আকারগুলি 1 এর nবেশি মানের মানগুলির জন্য ওভারল্যাপ হতে পারে For উদাহরণস্বরূপ:

যদি স্তর 0 হয়:

x x

তারপরে অবশ্যই স্তর 1 এ ওভারল্যাপ থাকতে হবে (একটি দিয়ে নির্দেশিত o, oআপনার আউটপুটটিতে অন্তর্ভুক্ত করবেন না ):

 x o x
xxxoxxx
  x x
xxxoxxx
 x o x 

আপনার কাজটি হ'ল বিটার স্নোফ্লেকের এই ASCII প্রতিনিধিত্বকে আউটপুট করা।

বোনাস

সংক্ষিপ্ততম প্রোগ্রামের জন্য একটি 50 টি রেপ বোনাস থাকবে যা nনেতিবাচক হলে n*-1চিত্র হিসাবে বা গ্রাফিকভাবে স্ক্রিনে স্নোফ্লেকে (স্তরে ) আউটপুট দেয় ।

অনুগ্রহ এবং মূল কাজের জন্য আপনার আলাদা একটি প্রোগ্রাম থাকতে পারে।

জয়লাভ

বাইটের মধ্যে সংক্ষিপ্ততম প্রোগ্রামটি জিতেছে।


4
একটি গামা স্নোফ্লেক এটির 3 ডি সংস্করণ।
কনর ও'ব্রায়েন

1
@ সিও'বাʀɪᴇɴ ভালই তা অনুসরণের চ্যালেঞ্জের জন্য একটি ধারণা;)
বিটা ডেকে ২

আপনি কি 2 or more exposed sidesনিয়মটি পরিষ্কার করতে পারেন ? ধরে নেওয়া যাক কেন্দ্র 0,0তারপর 1,1, 1,-1, -1,-1, -1,1সব 2 উদ্ভাসিত পক্ষের (পক্ষই অন্যান্য 4 পয়েন্ট প্রতি মুখোমুখি) আছে। ইনফিলিং এড়ানোর জন্য এটি কি 3+ ওপেন সাইড হওয়া উচিত নয়? অথবা পর্যায়ক্রমে এটির প্রসার কেবলমাত্র যদি তার 0 বা 1 প্রতিবেশী (কার্ডিনাল) থাকে।
জোনাথন লিচ-পেপিন

উপরের মত, এটি কেন্দ্রের চারপাশে 'বর্গাকার' কোণে n = 2 এর মতো ক্ষেত্রে অতিরিক্ত বৃদ্ধি হতে পারে (এটি শীর্ষ নয়, তবে এটি ডাব্লু, এনডাব্লু, এন পার্শ্বে প্রকাশিত হয়েছে (শীর্ষে বাম)।
জোনাথন লেচ-পেপিন

উত্তর:


8

সিজেম, 88 83 82 বাইট

1]]{{0f+zW%}8*{YYb_m*{~W$m>fm>}%z:z8Ybff=__1m>\1fm>]:zWf%(\:..|}4*..|}q~*" x"ff=N*

এটি এখানে পরীক্ষা করুন।

আমি মনে করি যে কোণগুলি কোথায় আছে তা আমি কীভাবে সনাক্ত করব তাতে আমি অনেক কিছু সঞ্চয় করতে পারি। তবে অন্তত আমি জানি যে পরবর্তী পুনরাবৃত্তিগুলি দেখতে কেমন:

এন = 3 :

   x x x x   
  xxxxxxxxx  
 xx x x x xx 
xx xxxxxxx xx
 xxx x x xxx 
xx xxx xxx xx
 xxx  x  xxx 
xx xxx xxx xx
 xxx x x xxx 
xx xxxxxxx xx
 xx x x x xx 
  xxxxxxxxx  
   x x x x   

এন = 4:

    x x x x x    
   xxxxxxxxxxx   
  xx x x x x xx  
 xx xxxxxxxxx xx 
xx xx x x x xx xx
 xxx xxxxxxx xxx 
xx xxx x x xxx xx
 xxx xxx xxx xxx 
xx xxx  x  xxx xx
 xxx xxx xxx xxx 
xx xxx x x xxx xx
 xxx xxxxxxx xxx 
xx xx x x x xx xx
 xx xxxxxxxxx xx 
  xx x x x x xx  
   xxxxxxxxxxx   
    x x x x x    

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


1

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

প্রতিটি কোণে আকারগুলি রাখে না, তবে স্থানাঙ্কগুলির উপর ভিত্তি করে কোনও অক্ষর স্নোফ্লেকে রয়েছে কিনা তা নির্ধারণ করে।

প্রথমে একটি কোণ তৈরি করা হয়েছে, এবং তারপরে পুরো তুষারকণায় প্রায় মিরর করা।

i=input()
d=2*i+1
s=[x[:]for x in[[0]*d]*d]
s[0][0]=1
if i:s[1][1]=1
for j in range(2,d):
 for v in range(j+1):s[j][v]=s[v][j]=(j+v)%3!=1and j+v<d+i if v>j/2 else j%2==1or j%4+v%2in[0,3]
for l in[l[:0:-1]+l for l in s[:0:-1]+s]:print''.join(['X'if n else' 'for n in l])
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.