এল-শেপড ট্রোমিনোস দিয়ে 2 ^ N বাই 2 ^ N গ্রিড টাইলিং করুন


14

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

আপনি যদি ইতিমধ্যে এটি জানেন না তবে আমি প্রমাণটি আপনার কাছে রেখে দেব। এটি নিয়ে আলোচনা করার মতো অনেকগুলি সংস্থান রয়েছে।

আপনার কাজটি এখানে এমন একটি প্রোগ্রাম লিখতে হবে যা এন এর জন্য একটি মান নেয়, পাশাপাশি গ্রিড স্পেসের স্থানাঙ্কগুলি খালি ছেড়ে দেয় এবং ফলস্বরূপ ট্রোমিনো টাইল্ড গ্রিডের একটি ASCII প্রতিনিধিত্ব মুদ্রণ করে।

চরিত্রটি Oখালি জায়গাটি পূর্ণ করবে এবং আমাদের ট্রোমিনোটির 4 টি ঘূর্ণন এইরকম দেখাবে:

|
+-

 |
-+

-+
 |

+-
|

(হ্যাঁ, এটি দ্ব্যর্থক হতে পারে যা +কোনটি -এবং |নির্দিষ্ট ব্যবস্থাগুলির সাথে যায় তবে এটি ঠিক আছে ok)

আপনার প্রোগ্রামটি অবশ্যই কমপক্ষে N = 8 (256 × 256 গ্রিডের জন্য) এন = 0 এর জন্য (1 × 1 গ্রিডের জন্য) কাজ করবে। এটি x এবং y মান দেওয়া হবে যা এর জন্য স্থানাঙ্ক O:

  • এক্স অনুভূমিক অক্ষ। x = 1 হ'ল বাম গ্রিড প্রান্ত, x = 2 এন হ'ল গ্রিড প্রান্ত।
  • y হ'ল উল্লম্ব অক্ষ। y = 1 শীর্ষ গ্রিড প্রান্ত, y = 2 এন নীচের গ্রিড প্রান্ত।

এক্স এবং y উভয়ই সর্বদা [1, 2 N ] এর মধ্যে থাকে।

সুতরাং প্রদত্ত এন, এক্স এবং ওয়াইয়ের জন্য আপনার প্রোগ্রামটি অবশ্যই 2 এন × 2 এন গ্রিড প্রিন্ট করতে হবে , সম্পূর্ণরূপে এল-আকারের ট্রোমিনোস দিয়ে টাইল্ড করা উচিত, এক্স, ওয়াই গ্রিড স্থানাঙ্ক বাদে যা হবে একটি O

উদাহরণ

যদি এন = 0 হয়, তবে x এবং y উভয়ই 1 হতে হবে আউটপুট সহজ

O

যদি এন = 1, এক্স = 1, এবং y = 2 হয় তবে আউটপুট হবে

-+
O|

এন = 2, এক্স = 3, ওয়াই = 2:

+--+
||O|
|+-|
+--+

এন = 2, এক্স = 4, ওয়াই = 1:

+-|O
||+-
|+-|
+--+

N = 3, x = 3, y = 6 (যেমন এই পৃষ্ঠায় চিত্র ):

+--++--+
|+-||-+|
||+--+||
+-|-+|-+
+--+||-+
||O|-+||
|+-||-+|
+--++--+

বিস্তারিত

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

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী। টাইব্রেকার আগের পোস্ট। ( হ্যান্ড বাইট কাউন্টার। )

উত্তর:


2

হাস্কেল, 250 240 236 বাইট

c=cycle
z o(#)(x,y)=zipWith o(1#x)(2#y)
f n x y=unlines$(z(+)(\m w->[c[0,m]!!div(w-1)(2^(n-k))|k<-[1..n]])(x,y),"O")%n
(_,x)%0=[x]
((p:o),x)%k=z(++)(\_ q->((o,x):c[(c[3-q],[" |-+| +--+ |+-|"!!(4*p+q)])])!!abs(p-q)%(k-1))=<<[(0,1),(2,3)]

এটি সমস্যার সূক্ষ্ম সমাধানটি নিবিড়ভাবে অনুসরণ করে। বিন্দুতে চিহ্নটি 0 থেকে 3 পর্যন্ত সংখ্যার ক্রম দ্বারা প্রতিনিধিত্ব করা হয় যা নির্দেশ করে কোন কোয়াড্রেন্ট প্রতিটি জুম স্তরে পয়েন্টটি ধরে রাখে; এটি প্রাথমিকভাবে z (+) দিয়ে শুরু হওয়া অভিব্যক্তি দ্বারা গণনা করা হয়। অপারেটর (%) চারটি চতুর্ভুজের জন্য একক চিত্রের সাথে চিত্রগুলি একত্রিত করে। "+ - |" চিহ্নের সাথে আঁকা মাঝখানে কাছাকাছি চিহ্ন চিহ্নযুক্ত চিহ্নিত চতুষ্কোণক অঙ্কন করে অচিহ্নযুক্ত চতুষ্কোণীর জন্য চিত্রগুলি তৈরি করা হয় কেন্দ্রীয় এল টাইল তৈরি করার উপযুক্ত হিসাবে।

মজার ব্যবসা: গল্ফ কারণে, subexpression

\m w->[c[0,m]!!div(w-1)(2^(n-k))|k<-[1..n]]

(যা সংখ্যার জন্য বিট সিকোয়েন্স আরও কম সংখ্যক গণনা করা হয়) হাস্যকরভাবে অদক্ষ --- এটি নির্ধারণ করে যে ডাব্লু / 2 ^ পি বিজোড় বা এমনকি কোনও তালিকার (ডাব্লু / 2 ^ পি) তম উপাদানটি অনুসন্ধান করে।

সম্পাদনা করুন: বিট গণনাটি ইনলাইন করে এবং একটি / / তারপর / অন্য কোনও সূচীকরণ ক্রিয়াকলাপের পরিবর্তে 10 বাইট সংরক্ষণ করা হয়েছে।

সম্পাদনা 2: কোনও অপারেটরে ফাংশনটি স্যুইচ করে আরও চারটি বাইট সংরক্ষণ করা হয়েছে। @ আরন্ডোমরা, রেস চলছে!

ডেমো:

λ> putStr $ f 4 5 6
+--++--++--++--+
|+-||-+||+-||-+|
||+--+||||+--+||
+-|+-|-++-|-+|-+
+-||-+-++--+||-+
||+-O||||-+|-+||
|+-||-+|-+|||-+|
+--++--+||-++--+
+--++-|-+|-++--+
|+-|||+--+|||-+|
||+-|+-||-+|-+||
+-||+--++--+||-+
+-|+-|-++-|-+|-+
||+--+||||+--+||
|+-||-+||+-||-+|
+--++--++--++--+

8

সি, 399 বাইট

char*T=" |-+ | +-| ",*B;w;f(N,x,y,m,n,F,h,k,i,j){w=B?F=0,w:1<<N|1;char b[N?w*w:6];for(k=w;k--;)b[k*w-1]=10;B=!B?F=1,m=0,n=0,x--,y--,b:B;if(N>1){h=1<<N-1;i=x>--h,j=y>h;while(++k<4)if(k%2-i||k/2-j)f(N-1,!(k%2)*h,!(k/2)*h,m+k%2*(h+1),n+k/2*(h+1));f(1,h&i,h&j,m+h,n+h);h++;f(N-1,x-h*i,y-h*j,m+h*i,n+h*j);}else while(++k<4)B[w*(n+k/2)+m+k%2]=T[5*x+2*y+k];if(F)B[y*w+x]=79,B[w*w-w-1]=0,puts(N?B:"O"),B=0;}

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

আমরা একটি ফাংশন সংজ্ঞায়িত করি fযা 10 টি আর্গুমেন্ট নেয়, তবে আপনার কেবল এটির সাথে কল করতে হবে f(N, X, Y)। আউটপুট stdout যায়।

এখানে একটি পঠনযোগ্য সংস্করণ:

char*T=" |-+ | +-| ",*B;
w;
f(N,x,y,m,n,F,h,k,i,j){
    w=B?F=0,w:1<<N|1;
    char b[N?w*w:6];
    for(k=w;k--;)
        b[k*w-1]=10;
    B=!B?F=1,m=0,n=0,x--,y--,b:B;
    if(N>1){
        h=1<<N-1;
        i=x>--h,j=y>h;
        while(++k<4)
            if(k%2-i||k/2-j)
                f(N-1,!(k%2)*h,!(k/2)*h,m+k%2*(h+1),n+k/2*(h+1));
        f(1,h&i,h&j,m+h,n+h);
        h++;
        f(N-1,x-h*i,y-h*j,m+h*i,n+h*j);
    }
    else
        while(++k<4)
            B[w*(n+k/2)+m+k%2]=T[5*x+2*y+k];
    if(F)B[y*w+x]=79,B[w*w-w-1]=0,puts(N?B:"O"),B=0;
}

এর জন্য আউটপুট একটি স্বাদ f(3, 2, 7):

+--++--+
|+-||-+|
||+--+||
+-|-+|-+
+--+||-+
|-+|-+||
|O|||-+|
+--++--+

গ্রিডটি পূরণ করার জন্য এটি মোটামুটি সহজ পুনরাবৃত্তির অ্যালগরিদম। আমি অ্যালগরিদম অঙ্কন ট্রোমিনোসগুলির একটি অ্যানিমেশন আপলোড করতে পারি যেহেতু আমার মনে হয় এটি বেশ ঝরঝরে। যথারীতি, বিনা দ্বিধায় প্রশ্ন জিজ্ঞাসা করুন এবং আমার কোডটি ভেঙে দিলে আমাকে চিৎকার করুন!

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


8

পাইথন 3, 276 265 237 বাইট

আমার প্রথম পাইথন গল্ফ তাই আমি নিশ্চিত যে উন্নতির জন্য অনেক জায়গা আছে।

def f(n,x,y,c='O'):
 if n<1:return c
 *t,l,a='x|-+-|',2**~-n;p=(a<x)+(a<y)*2
 for i in 0,1,2,3:t+=(p-i and f(n-1,1+~i%2*~-a,1+~-a*(1-i//2),l[p+i])or f(n-1,1+~-x%a,1+~-y%a,c)).split(),
 u,v,w,z=t;return'\n'.join(map(''.join,zip(u+w,v+z)))

@ এক্সনোরকে 10 বাইট সংরক্ষণ করা হয়েছে এবং @ এসপি 3000 এর জন্য আরও 6 টি বাইট ধন্যবাদ।

ফাংশনটি একটি স্ট্রিং দেয়। ব্যবহারের উদাহরণ:

>>>print(f(3,3,6))    
+--++--+
|+-||-+|
||+--+||
+-|-+|-+
+--+||-+
||O|-+||
|+-||-+|
+--++--+

1
পাইথন গল্ফিংয়ে প্রথম দুর্দান্ত একটি রান! কিছু চটজলদি চারস্যাভস। আপনি আগে জায়গা কাটা করতে পারেন if p!=i; ভিতরে তালিকার .join()প্রয়োজন নেই []; (1-i%2)হিসাবে করা যেতে পারে ~i%2; আপনি t,l,a=[],...হিসাবে লিখতে পুনরাবৃত্তিযোগ্য আনপ্যাকিং ব্যবহার করতে পারেন *t,l,a=...; if n==0যেমন চেক করা যাবে if n<1কারণ nকরতে পারেন নেতিবাচক হতে; চূড়ান্ত "\n".joinসম্ভবত প্রতিটি উপাদান মুদ্রণ দ্বারা সম্পন্ন করা যেতে পারে, যেহেতু সাধারণ নিয়ম ফিরে আসার জায়গায় মুদ্রণের অনুমতি দেয়; ননজারো মানগুলি সত্যবাদী হওয়ায় if p!=iএটি হতে পারে if p-i
xnor

@ এক্সনর টিপসের জন্য ধন্যবাদ! অন্তর্ভুক্ত খালি তালিকা পেতে আনপ্যাকিং করা খুব ঝরঝরে। আমি মুদ্রণের পরিবর্তে রিটার্ন ব্যবহার করি কারণ fএটি পুনরাবৃত্তির কাজ। আমাকে প্রকৃতপক্ষে split()প্রতিটি স্ব-কলের পরে আউটপুট ফর্ম্যাটিংটি ফিরিয়ে আনতে হবে।
এলোমেলো

আরো কয়েকটি: শেষ লাইন হিসেবে লেখা যেতে পারে A,B,C,D=t;return'\n'.join(map("".join,zip(A+C,B+D))), t+=[...]দ্বিতীয় গত লাইনে হিসেবে লেখা যেতে পারে t+=...,(ক তালিকার পরিবর্তে একটি tuple যোগ) এবং আমি নিশ্চিত যদি এই এক কাজ কিন্তু নই A if B else Cহিসেবে লেখা যেতে পারে B and A or C(এছাড়াও উপর দ্বিতীয়-শেষ লাইন) তবে কেবলমাত্র যদি এ কখনই মিথ্যা না হয় (যা আমি মনে করি না?)
Sp3000

4

জাভাস্ক্রিপ্ট (ES6) 317 414

গল্ফ অনেক কাজ, কিন্তু এখনও বেশ দীর্ঘ।

T=(b,x,y)=>
  (F=(d,x,y,f,t=[],q=y<=(d>>=1)|0,
      b=d?x>d
       ?q
         ?F(d,x-d,y,0,F(d,1,1,2))
         :F(d,1,d,2,F(d,x-d,y-d))
       :F(d,1,d,1-q,F(d,1,1,q)):0,
      r=d?(x>d
         ?F(d,d,d,1-q,F(d,d,1,q))
         :q
           ?F(d,x,y,1,F(d,d,1,2))
           :F(d,d,d,2,F(d,x,y-d))
      ).map((x,i)=>x.concat(b[i])):[[]]
    )=>(r[y-1][x-1]='|+-O'[f],r.concat(t))
  )(1<<b,x,y,3).join('\n').replace(/,/g,'')

পরীক্ষার জন্য স্নিপেট চালান (ইউনিকোড ব্লক অক্ষর ব্যবহার করে আরও ভাল লাগছে - তবে আরও কিছুটা দীর্ঘ)


1

আইডিএল 8.3+, 293 বাইট

এটি অনেক দীর্ঘ, আমি এটি কেটে দেওয়ার চেষ্টা করছি তবে আমি এখনও সেখানে পৌঁছতে পারি নি।

function t,n,x,y
m=2^n
c=['|','+','-']
b=replicate('0',m,m)
if m eq 1 then return,b
h=m/2
g=h-1
k=[1:h]
o=x gt h
p=y gt h
q=o+2*p
if m gt 2then for i=0,1 do for j=0,1 do b[i*h:i*h+g,j*h:j*h+g]=t(n-1,i+2*j eq q?x-i*h:k[i-1],i+2*j eq q?y-j*h:k[j-1])
b[g+[1-o,1-o,o],g+[p,1-p,1-p]]=c
return,b
end

আউটপুট:

IDL> print,t(1,1,2)
- +
0 |
IDL> print,t(2,3,2)
+ - - +
| | 0 |
| + - |
+ - - +
IDL> print,t(2,4,1)
+ - | 0
| | + -
| + - |
+ - - +
IDL> print,t(3,3,6)
+ - - + + - - +
| + - | | - + |
| | + - - + | |
+ - | - + | - +
+ - - + | | - +
| | 0 | - + | |
| + - | | - + |
+ - - + + - - +

এবং, আহ ... শুধু মজা করার জন্য ...

IDL> print,t(6,8,9)
+ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - +
| + - | | - + | | + - | | - + | | + - | | - + | | + - | | - + | | + - | | - + | | + - | | - + | | + - | | - + | | + - | | - + |
| | + - - + | | | | + - - + | | | | + - - + | | | | + - - + | | | | + - - + | | | | + - - + | | | | + - - + | | | | + - - + | |
+ - | + - | - + + - | - + | - + + - | + - | - + + - | - + | - + + - | + - | - + + - | - + | - + + - | + - | - + + - | - + | - +
+ - | | + - - + + - - + | | - + + - | | + - - + + - - + | | - + + - | | + - - + + - - + | | - + + - | | + - - + + - - + | | - +
| | + - | + - | | - + | - + | | | | + - | + - | | - + | - + | | | | + - | + - | | - + | - + | | | | + - | + - | | - + | - + | |
| + - | | | + - - + | | | - + | | + - | | | + - - + | | | - + | | + - | | | + - - + | | | - + | | + - | | | + - - + | | | - + |
+ - - + + - | - + | - + + - - + + - - + + - | - + | - + + - - + + - - + + - | + - | - + + - - + + - - + + - | - + | - + + - - +
+ - - + + - | 0 | | - + + - - + + - - + + - - + | | - + + - - + + - - + + - | | + - - + + - - + + - - + + - - + | | - + + - - +
| + - | | | + - - + | | | - + | | + - | | - + | - + | | | - + | | + - | | | + - | + - | | - + | | + - | | - + | - + | | | - + |
| | + - | + - | | - + | - + | | | | + - - + | | | - + | - + | | | | + - | + - | | | + - - + | | | | + - - + | | | - + | - + | |
+ - | | + - - + + - - + | | - + + - | - + | - + + - - + | | - + + - | | + - - + + - | + - | - + + - | - + | - + + - - + | | - +
+ - | + - | - + + - | - + | - + + - - + | | - + + - | - + | - + + - | + - | - + + - | | + - - + + - - + | | - + + - | - + | - +
| | + - - + | | | | + - - + | | | - + | - + | | | | + - - + | | | | + - - + | | | | + - | + - | | - + | - + | | | | + - - + | |
| + - | | - + | | + - | | - + | - + | | | - + | | + - | | - + | | + - | | - + | | + - | | | + - - + | | | - + | | + - | | - + |
+ - - + + - - + + - - + + - - + | | - + + - - + + - - + + - - + + - - + + - - + + - - + + - | - + | - + + - - + + - - + + - - +
+ - - + + - - + + - - + + - | - + | - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + | | - + + - - + + - - + + - - +
| + - | | - + | | + - | | | + - - + | | | - + | | + - | | - + | | + - | | - + | | + - | | - + | - + | | | - + | | + - | | - + |
| | + - - + | | | | + - | + - | | - + | - + | | | | + - - + | | | | + - - + | | | | + - - + | | | - + | - + | | | | + - - + | |
+ - | + - | - + + - | | + - - + + - - + | | - + + - | - + | - + + - | + - | - + + - | - + | - + + - - + | | - + + - | - + | - +
+ - | | + - - + + - | + - | - + + - | - + | - + + - - + | | - + + - | | + - - + + - - + | | - + + - | - + | - + + - - + | | - +
| | + - | + - | | | + - - + | | | | + - - + | | | - + | - + | | | | + - | + - | | - + | - + | | | | + - - + | | | - + | - + | |
| + - | | | + - | + - | | - + | | + - | | - + | - + | | | - + | | + - | | | + - - + | | | - + | | + - | | - + | - + | | | - + |
+ - - + + - | | + - - + + - - + + - - + + - - + | | - + + - - + + - - + + - | - + | - + + - - + + - - + + - - + | | - + + - - +
+ - - + + - | + - | - + + - - + + - - + + - | - + | - + + - - + + - - + + - - + | | - + + - - + + - - + + - | - + | - + + - - +
| + - | | | + - - + | | | - + | | + - | | | + - - + | | | - + | | + - | | - + | - + | | | - + | | + - | | | + - - + | | | - + |
| | + - | + - | | - + | - + | | | | + - | + - | | - + | - + | | | | + - - + | | | - + | - + | | | | + - | + - | | - + | - + | |
+ - | | + - - + + - - + | | - + + - | | + - - + + - - + | | - + + - | - + | - + + - - + | | - + + - | | + - - + + - - + | | - +
+ - | + - | - + + - | - + | - + + - | + - | - + + - | - + | - + + - - + | | - + + - | - + | - + + - | + - | - + + - | - + | - +
| | + - - + | | | | + - - + | | | | + - - + | | | | + - - + | | | - + | - + | | | | + - - + | | | | + - - + | | | | + - - + | |
| + - | | - + | | + - | | - + | | + - | | - + | | + - | | - + | - + | | | - + | | + - | | - + | | + - | | - + | | + - | | - + |
+ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + | | - + + - - + + - - + + - - + + - - + + - - + + - - + + - - +
+ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - | - + | - + + - - + + - - + + - - + + - - + + - - + + - - + + - - +
| + - | | - + | | + - | | - + | | + - | | - + | | + - | | | + - - + | | | - + | | + - | | - + | | + - | | - + | | + - | | - + |
| | + - - + | | | | + - - + | | | | + - - + | | | | + - | + - | | - + | - + | | | | + - - + | | | | + - - + | | | | + - - + | |
+ - | + - | - + + - | - + | - + + - | + - | - + + - | | + - - + + - - + | | - + + - | - + | - + + - | + - | - + + - | - + | - +
+ - | | + - - + + - - + | | - + + - | | + - - + + - | + - | - + + - | - + | - + + - - + | | - + + - | | + - - + + - - + | | - +
| | + - | + - | | - + | - + | | | | + - | + - | | | + - - + | | | | + - - + | | | - + | - + | | | | + - | + - | | - + | - + | |
| + - | | | + - - + | | | - + | | + - | | | + - | + - | | - + | | + - | | - + | - + | | | - + | | + - | | | + - - + | | | - + |
+ - - + + - | + - | - + + - - + + - - + + - | | + - - + + - - + + - - + + - - + | | - + + - - + + - - + + - | - + | - + + - - +
+ - - + + - | | + - - + + - - + + - - + + - | + - | - + + - - + + - - + + - | - + | - + + - - + + - - + + - - + | | - + + - - +
| + - | | | + - | + - | | - + | | + - | | | + - - + | | | - + | | + - | | | + - - + | | | - + | | + - | | - + | - + | | | - + |
| | + - | + - | | | + - - + | | | | + - | + - | | - + | - + | | | | + - | + - | | - + | - + | | | | + - - + | | | - + | - + | |
+ - | | + - - + + - | + - | - + + - | | + - - + + - - + | | - + + - | | + - - + + - - + | | - + + - | - + | - + + - - + | | - +
+ - | + - | - + + - | | + - - + + - | + - | - + + - | - + | - + + - | + - | - + + - | - + | - + + - - + | | - + + - | - + | - +
| | + - - + | | | | + - | + - | | | + - - + | | | | + - - + | | | | + - - + | | | | + - - + | | | - + | - + | | | | + - - + | |
| + - | | - + | | + - | | | + - | + - | | - + | | + - | | - + | | + - | | - + | | + - | | - + | - + | | | - + | | + - | | - + |
+ - - + + - - + + - - + + - | | + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + | | - + + - - + + - - + + - - +
+ - - + + - - + + - - + + - | + - | - + + - - + + - - + + - - + + - - + + - - + + - - + + - | - + | - + + - - + + - - + + - - +
| + - | | - + | | + - | | | + - - + | | | - + | | + - | | - + | | + - | | - + | | + - | | | + - - + | | | - + | | + - | | - + |
| | + - - + | | | | + - | + - | | - + | - + | | | | + - - + | | | | + - - + | | | | + - | + - | | - + | - + | | | | + - - + | |
+ - | + - | - + + - | | + - - + + - - + | | - + + - | - + | - + + - | + - | - + + - | | + - - + + - - + | | - + + - | - + | - +
+ - | | + - - + + - | + - | - + + - | - + | - + + - - + | | - + + - | | + - - + + - | + - | - + + - | - + | - + + - - + | | - +
| | + - | + - | | | + - - + | | | | + - - + | | | - + | - + | | | | + - | + - | | | + - - + | | | | + - - + | | | - + | - + | |
| + - | | | + - | + - | | - + | | + - | | - + | - + | | | - + | | + - | | | + - | + - | | - + | | + - | | - + | - + | | | - + |
+ - - + + - | | + - - + + - - + + - - + + - - + | | - + + - - + + - - + + - | | + - - + + - - + + - - + + - - + | | - + + - - +
+ - - + + - | + - | - + + - - + + - - + + - | - + | - + + - - + + - - + + - | + - | - + + - - + + - - + + - | - + | - + + - - +
| + - | | | + - - + | | | - + | | + - | | | + - - + | | | - + | | + - | | | + - - + | | | - + | | + - | | | + - - + | | | - + |
| | + - | + - | | - + | - + | | | | + - | + - | | - + | - + | | | | + - | + - | | - + | - + | | | | + - | + - | | - + | - + | |
+ - | | + - - + + - - + | | - + + - | | + - - + + - - + | | - + + - | | + - - + + - - + | | - + + - | | + - - + + - - + | | - +
+ - | + - | - + + - | - + | - + + - | + - | - + + - | - + | - + + - | + - | - + + - | - + | - + + - | + - | - + + - | - + | - +
| | + - - + | | | | + - - + | | | | + - - + | | | | + - - + | | | | + - - + | | | | + - - + | | | | + - - + | | | | + - - + | |
| + - | | - + | | + - | | - + | | + - | | - + | | + - | | - + | | + - | | - + | | + - | | - + | | + - | | - + | | + - | | - + |
+ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - +

0

রুবি রেভ 1, 288

নামবিহীন লাম্বদা আক্ষরিক হিসাবে। পরীক্ষার প্রোগ্রামে দেখানো হয়েছে (ল্যাম্বডা আক্ষরিক ->(n,a,b){...})

g=
->(n,a,b){
$x=a-1
$y=b-1
$a=Array.new(m=2**n){"|"*m}
def t(u,v,m,r,f)
(m/=2)==1?$a[v+1-r/2%2][u,2]='-+-'[r%2,2]:0
if m>1 
4.times{|i|i==r ?t(u+m/2,v+m/2,m,r,0):t(u+i%2*m,v+i/2*m,m,3-i,0)}
f>0?t(u+r%2*m,v+r/2*m,m,2*$x/m&1|$y*4/m&2,1):0
end
end
t(0,0,m,2*$x/m|$y*4/m,1) 
$a[$y][$x]='O'
$a
}

n=gets.to_i
a=gets.to_i
b=gets.to_i
puts(g.call(n,a,b))

রুবি রেভ 0, 330 অসম্পূর্ণ

বর্তমানে আমি কেবলমাত্র গল্ফিংয়ের দাবি করছি তা হল মন্তব্য, অপ্রয়োজনীয় নিউলাইন এবং ইনডেন্টগুলি বাদ দেওয়া।

এটি আমার প্রথম যথাযথ অ্যালগরিদমকে রুবিতে এনকোড করা হয়েছে এবং এটি কঠোর পরিশ্রম। আমি নিশ্চিত যে অপসারণের চেয়ে কমপক্ষে 50 টি অক্ষর রয়েছে তবে আমি আপাতত যথেষ্ট করেছি। কিছু বাস্তব ভয়াবহতা রয়েছে, উদাহরণস্বরূপ ইনপুট। এটি সম্ভবত কোনও প্রোগ্রামের পরিবর্তে কোনও ফাংশন বা ল্যাম্বদা দ্বারা স্থির করা যেতে পারে তবে অভ্যন্তরীণ ফাংশনটিt ল্যাম্বদা তবে ট্রামিনোসকে আঁকানো ফাংশনটিতে এখনও বৈশ্বিক চলকগুলিতে অ্যাক্সেস প্রয়োজন। আমি এটির জন্য সিনট্যাক্সটি বের করতে হবে।

আমার উত্তরের একটি বৈশিষ্ট্য যা অন্যের মধ্যে উপস্থিত নেই, তা হ'ল আমি |অক্ষরের সাথে একটি অ্যারের স্ট্রিমাইজ করি । তার মানে আমি কেবল একই লাইনে একে অপরের পাশে থাকা +-বা আঁকতে হবে -+

m=2**gets.to_i                                         #get n and store 2**n in m
$x=gets.to_i-1                                         #get x and y, and...
$y=gets.to_i-1                                         #convert from 1-indexed to 0-indexed
$a=Array.new(m){"|"*m}                                 #array of m strings length m, initialized with "|"

def t(u,v,m,r,f)                                       #u,v=top left of current field. r=0..3= quadrant containing O. f=flag to continue surrounding O
  m/=2
  if m==1 then $a[v+1-r/2%2][u,2] ='-+-'[r%2,2];end    #if we are at char level, insert -+ or +- (array already initialized with |'s)
  if m>1 then                                          #at higher level, 4 recursive calls to draw trominoes of next size down 
    4.times{|i| i==r ? t(u+m/2,v+m/2,m,r,0):t(u+i%2*m,v+i/2*m,m,3-i,0)}
    f>0?t(u+r%2*m,v+r/2*m,m,2*$x/m&1|$y*4/m&2,1):0     #then one more call to fill in the empty quadrant (this time f=1)
  end
end

$a[$y][$x]='O'                                         #fill in O
t(0,0,m,2*$x/m&1|$y*4/m&2,1)                           #start call. 2*x/m gives 0/1 for left/right quadrant, similarly 4*y/m gives 0/2 for top/bottom 

puts $a                                                #dump array to stdout, elements separated by newlines.

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