এলোমেলোভাবে কুমড়ো প্যাচ


12

আমি জন্মদিনের পার্টিতে অন্য দিন কুমড়োর প্যাচ দিয়ে যাচ্ছিলাম, এবং খেয়াল করলাম কুমড়োর দ্রাক্ষালতাগুলি ঘূর্ণি, লুপ এবং অফশুট দিয়ে একটি নিফটি প্যাটার্ন তৈরি করছে। আমরা এখানে কিছু ASCII শিল্পের সাথে অনুকরণ করতে যাচ্ছি।

          (())
            \
   p--q      p-----q
  /    \    /       \
(())    b--d       (())

লাইন নির্মাণ বিধি

  • কেবলমাত্র একটি মূল লতা রয়েছে যা কেবলমাত্র \ / - p q b dঅক্ষর দ্বারা গঠিত ।
  • লতা কেবল পর্দা জুড়ে বাম থেকে ডানে ভ্রমণ করে। অন্য কথায়, ধরুন আপনি একটি পিঁপড়ে ছিলেন বাম-সর্বাধিক লতাযুক্ত চরিত্রের শুরু থেকে। আপনি যখন প্রধান লতাতে পরবর্তী সংলগ্ন চরিত্রের দিকে অগ্রসর হচ্ছেন, আপনাকে অবশ্যই একটি কলাম ডানদিকে নিয়ে যেতে হবে - বাম দিকে কখনও নয়।
  • লতা যখন দিক পরিবর্তন করে, তখন একটি p q b dঅক্ষরের একটি লুপ অনুকরণ করতে হয়। pপূর্ব উত্তর-পূর্ব ভ্রমণ আঙ্গুরের যোগ দেয় তখন qদক্ষিণ-পূর্ব পূর্ব জন্য, bদক্ষিণ-পূর্ব থেকে পূর্ব, এবং dপূর্ব থেকে উত্তরপূর্বে। নোট করুন যে বর্ণটির "লুপ" অনুভূমিক দ্রাক্ষালতার সাথে সংযোগ স্থাপন করে এবং বর্ণটির "স্টেম "টি তির্যকের সাথে সংযুক্ত হয়।
  • দ্রাক্ষালতার শুরু অবশ্যই একটি pবা b(আপনার পছন্দ, এলোমেলো হতে হবে না) হতে হবে এবং অনুভূমিকভাবে শুরু হবে। দ্রাক্ষালতার শেষটি অবশ্যই একটি qবা d(আপনার পছন্দ, এলোমেলো হতে হবে না) হতে হবে এবং আনুভূমিকভাবে শেষ হতে হবে।
  • নোট করুন যে লুপগুলি অন্য লুপগুলির সাথে সাথে সংলগ্নভাবে স্থাপন করা যেতে পারে (যেমন, pdদ্রাক্ষালতার একটি বৈধ সাবস্ট্রিং) তবে এটি পরে কুমড়োগুলি রাখা আরও জটিল করে তুলতে পারে। আপনি সর্বদা - / \একটি লুপের পরে অবিলম্বে একটি পেতে চাইতে পারেন (যেমন আমি আমার উদাহরণগুলিতে করেছি), তবে এটির প্রয়োজন নেই।

কুমড়ো বিধি

  • কুমড়ো সম্পূর্ণরূপে তৈরি করা হয় (())(এই সঠিক স্ট্রিং)।
  • প্রধান লতা থেকে, কুমড়ো অফশুট দ্বারা সংযুক্ত করা হয়। এই অফশুটগুলি কেবল p q b dলুপগুলির সাথে সংযুক্ত থাকতে পারে , অবিকল এক \বা /দৈর্ঘ্যে এবং কুমড়োর সাথে সংযুক্ত করা যায় যাতে অফশুটের "শেষ" মাঝখানে থাকে।
  • তারা মূল দ্রাক্ষালতার উপরে বা নীচে সংযোগ করতে পারে।
  • অফশুটগুলি "বামে" যেতে সংযোগ করতে পারে।
  • অফশুট প্রতি মাত্র একটি কুমড়ো সংযুক্ত করতে পারে এবং লুপ প্রতি কেবল একটি অফশুট।

লক্ষ্যহীনতা

  • অনুভূমিকভাবে ভ্রমণ করার সময়, লতাটি অনুভূমিকভাবে চালিয়ে যাওয়ার 50% সম্ভাবনা, উত্তর-পূর্ব দিকে ঘুরানোর 25% সম্ভাবনা এবং দক্ষিণ-পূর্ব দিকে পরিবর্তনের 25% সম্ভাবনা থাকে।
  • তির্যকভাবে ভ্রমণ করার সময়, দ্রাক্ষালতার অনুভূমিক বাঁক হওয়ার 90% সম্ভাবনা এবং তির্যকভাবে চালিয়ে যাওয়ার 10% সম্ভাবনা থাকে।
  • পাম্পিনগুলির ইনপুট সংখ্যাকে সমর্থন করার জন্য পর্যাপ্ত মোড় অবশ্যই থাকতে হবে, যদিও আরও ঘুরিয়ে দেওয়া অনুমোদিত।
  • লতাটি তৈরি হয়ে গেলে, কুমড়ো এলোমেলোভাবে কোনও কোণে রাখা যেতে পারে যা ইতিমধ্যে কুমড়ো দ্বারা দখল করা হয়নি।
  • কুমড়ো লতা বা অন্যান্য কুমড়োকে ওভারল্যাপ করতে পারে না।

চ্যালেঞ্জ

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

ইনপুট

কোনও একক nসংখ্যার যেকোন সুবিধাজনক বিন্যাসে প্যাচটিতে কুমড়ো সংখ্যা উপস্থাপন করে । কোডের ব্রিভিটির জন্য, আপনি ধরে নিতে পারেন ইনপুটটি 0 < n < 256

আউটপুট

ফলাফলের কুমড়ো প্যাচটি হয় স্ক্রিনে মুদ্রিত / প্রদর্শিত বা স্ট্রিং / স্ট্রিং-অ্যারে / ইত্যাদি হিসাবে ফিরে এসেছে।

বিধি

  • এটি তাই গল্ফিংয়ের জন্য সমস্ত নিয়মাবলী প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জেতে।
  • "র্যান্ডম" এর আমাদের মানক সংজ্ঞাটি ব্যবহার করুন ।
  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা ফাংশন গ্রহণযোগ্য।
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • শীর্ষস্থানীয় এবং পূর্ববর্তী সাদা স্থান / নিউলাইনগুলি সমস্ত সম্পূর্ণ completelyচ্ছিক।

উদাহরণ

ইনপুট করতে n = 3, এখানে উপরে বিধি (ফাঁকা নতুন লাইন দিয়ে আলাদা) নিম্নলিখিত একটি কুমড়া প্যাচ কিছু বৈধ উদাহরণ।

          (())
            \
   p--q      p-----q
  /    \    /       \
(())    b--d       (())

(()) (())
  \   /
   b-q (())
      \ /
       b-q

p-----------------------q (())
                       / \ /
                     (()) b-q
                           /
                         (())

n = 3ব্যাখ্যা সহ ইনপুটটির জন্য এখানে কিছু INVALID উদাহরণ রয়েছে #

    (()) (())
     /    /
p---q----q
 \
(())
# The vine continued horizontally after a loop was placed.

(()(())
  \ /
   p---q
        \
       (())
# The pumpkins are both overlapping and sprouting from the same loop.

p----------------q
 \      \         \
(())   (())      (())
# The pumpkin is attached to the middle of the vine, not at a loop.

7
এবং এখন এটিকে সিনট্যাক্স হিসাবে ব্যবহার করে একটি 2 ডি ভাষা ডিজাইন করুন। :)
মার্টিন এন্ডার

উত্তর:


1

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

nইনপুট হিসাবে নেয়

সর্বদা কোণার 'বাহিরের' উপর পাম্পপিন রাখুন (এলোমেলোভাবে বাম / ডান)

লতা তৈরি হওয়ার সময় কুমড়ো যুক্ত হয় এবং পর্যাপ্ত কুমড়ো থাকাকালীন লতা থামে।

r=lambda:__import__('random').random()
s=1
v=[s]*4
U=[-9]
D=[-9]
i=input()
while len(U)+len(D)<i+2:s=[[0,1][r()<.9],[[0,2][r()<.5],1][r()<.5],[2,1][r()<.9]][s];exec['',[['','U+=[len(v)]'][U[-1]<len(v)-7],'',['','D+=[len(v)]'][D[-1]<len(v)-7]][v[-1]-s+1]][r()<.8];v+=[s]*[1,2][v[-1]!=s]
v+=[1]*5
m=M=s=0
for i in v:s+=i-1;m=[m,s][m>s];M=[M,s][M<s]
R=[[' ']*(M-m+5)for x in v]
m=-m+2
R[2][m]='p'
for x in range(3,len(v)-3):X=v[x-1];R[x][m]='/d p-b q\\'[v[x]*3+X];m+=v[x]-1
R[-3][m]='q'
M=[len(a)-len(a.lstrip())for a in map(''.join,R)]
R=map(list,zip(*R))
B,L,a='-/U'
K="\\"*4
W="""exec("for p in "+a+"[1:]:x=M[p];b=r()<.5;exec('R[x"+B+"1][p'+['+1]=\\""+L+"\\"','-1]=\\""+K+"\\"'][b]);i=p-[0,3][b];l='(';exec('R[x"+B+"2][i]=l;i+=1;'*2+'l=\\")\\";')*2")"""
exec W+";B,a='+D';L,K=K,L;"+W
for x in R:print''.join(map(str,x))

উদাহরণ:

n=4

                (())   
                 /     
                p---q  
 (())          /       
   \       p--d        
  p-q     /    \       
     \   /    (())     
      b-d              
       \               
      (())             

n=20

                            (())                                                                                             
                              \                                                                                              
                            p--q                                                                                             
                           /    \                                                                                            
                          /      b--q                                                                                        
           (())     p----d      /    \                                                                                       
  (())       \     /          (())    b-q (())                                                                               
    \         p---d                      \  \                                                                                
  p--q       /     \                      b--q                                                                               
      \     /     (())                   /    \                        (())                                           (())   
       b---d                           (())    b-q                       \                                             /     
        \                                         \          (())         p-q                                         p---q  
       (())                                        \           \         /   \                                       /       
                                                    b-----------q     p-d     b-q                            (())p--d        
                                                                 \   /       /   \                            / /    \       
                                                                  b-d      (())   b-q   (())  (())   p-q     p-d    (())     
                                                                   /                 \   /      \   /   \   /                
                                                                 (())                 b-q        p-d     b-d                 
                                                                                       \ \      /         \                  
                                                                                      (())b----d         (())                
                                                                                              /                              
                                                                                            (())                             

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