এএসসিআইআই জিগস ধাঁধা


27

এটি একটি 3x3ASCII জিগস ধাঁধা:

 _____ _____ _____
|    _|     |_    |
|   (_   _   _)   |
|_   _|_( )_|_   _|
| (_) |_   _| (_) |
|  _   _) (_   _  |
|_( )_|_   _|_( )_|
|    _| (_) |_    |
|   (_       _)   |
|_____|_____|_____|

এটি একটি 3x3ASCII জিগস ধাঁধা:

 _____ _____ _____
|     |_   _|     |
|  _   _) (_   _  |
|_( )_|_   _|_( )_|
|    _| (_) |_    |
|   (_   _   _)   |
|_   _|_( )_|_   _|
| (_) |_   _| (_) |
|      _) (_      |
|_____|_____|_____|

একটি ASCII জিগস ধাঁধার প্রতিটি লাইন (প্রান্তের কেসগুলি অর্থাৎ অক্ষরে অক্ষরে টুকরা বাদ দিয়ে) নিম্নলিখিত প্যাটার্ন নিয়ে গঠিত:

   _           _           _
 _( )_ _   _ _( )_ _   _ _( )_
|_   _| (_) |_   _| (_) |_   _|
 _) (_   _   _) (_   _   _) (_
|_   _|_( )_|_   _|_( )_|_   _| ...
  (_)         (_)         (_)

2 ইন্টিজার দেওয়া Hএবং Wযেখানে Hউচ্চতা (উল্লম্ব পরিমাণ) এবং Wপ্রস্থ (অনুভূমিক পরিমাণ) এবং Hএবং Wহয় >1আউটপুট একটি সম্ভাব্য HxWহওয়া ASCII জিগস পাজল।

উদাহরণ

পরীক্ষার মামলা ১

ইনপুট: 2, 4

আউটপুট:

 _____ _____ _____ _____
|     |_   _|     |_    |
|  _   _) (_   _   _)   |
|_( )_|_   _|_( )_|_   _|
|    _| (_) |_   _| (_) |
|   (_       _) (_      |
|_____|_____|_____|_____|

পরীক্ষার মামলা 2

ইনপুট: 4, 4

আউটপুট:

 _____ _____ _____ _____
|     |_   _|     |_    |
|  _   _) (_   _   _)   |
|_( )_|_   _|_( )_|_   _|
|    _| (_) |_   _| (_) |
|   (_   _   _) (_   _  |
|_   _|_( )_|_   _|_( )_|
| (_) |_   _| (_) |_    |
|  _   _) (_   _   _)   |
|_( )_|_   _|_( )_|_   _|
|    _| (_) |_   _| (_) |
|   (_       _) (_      |
|_____|_____|_____|_____|

পরীক্ষার মামলা 3

ইনপুট: 3, 5

আউটপুট:

 _____ _____ _____ _____ _____
|     |_   _|     |_   _|     |
|  _   _) (_   _   _) (_   _  |
|_( )_|_   _|_( )_|_   _|_( )_|
|    _| (_) |_   _| (_) |_    |
|   (_   _   _) (_   _   _)   |
|_   _|_( )_|_   _|_( )_|_   _|
| (_) |_   _| (_) |_   _| (_) |
|      _) (_       _) (_      |
|_____|_____|_____|_____|_____|

টেস্ট কেস 4

ইনপুট: 2, 2

আউটপুট:

 _____ _____
|    _|     |
|   (_   _  |
|_   _|_( )_|
| (_) |_    |
|      _)   |
|_____|_____|

ব্যাখ্যা

  • প্রতিটি ধাঁধা পিসের জন্য উচ্চতা এবং প্রস্থকে ছোট বা নীচে ছোট করা উচিত নয়।
  • সঙ্গে Hএবং Wএক তার চেয়ে অনেক বেশী হচ্ছে ক্ষুদ্রতম সম্ভব মাত্রা হয় 2x2(আইও 4 দেখুন)।
  • আপনি একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন থাকতে পারে।
  • ইনপুটটি H1 ম এবং 2 তম সহ 2 টি লাইন হবে Wযদি আপনি কোনও ফাংশন ব্যবহার করে থাকেন তবে সেগুলি পরামিতিগুলিতে রাখতে পারেন।
  • স্টডআউট আউটপুট (বা অনুরূপ কিছু)।
  • এটি কোড-গল্ফ তাই বাইট জিতে সংক্ষিপ্ত উত্তর।

টুকরাগুলির ট্যাবগুলি কি অন্যদিকে যেতে হবে?
জাগারব

আমার কি এলোমেলোভাবে আউটপুট করা উচিত বা আমি প্রতিবার কেবল একটি ধাঁধা আউটপুট দিতে পারি? যদি এলোমেলোভাবে হয়, সমস্ত ধাঁধা একত্রে পাওয়া উচিত?
ব্যবহারকারী48538

@ জাগারব হ্যাঁ, আমি জিগস ধাঁধাতে প্রতিটি লাইন অনুসরণ করে বেসিক প্যাটার্নে সম্পাদনা করেছি
বোবাস_পেট

@ জাইবিন ১০১১ আপনাকে কেবল একটি সম্ভাব্য "এএসসিআইআই জিগস ধাঁধা" আউটপুট করতে হবে তাই কেবল 1
ইনপুটটির

1
প্রথম প্রচেষ্টাটি দেখে মনে হচ্ছে এটি প্রায় কোনও মেগাবাইটে শেষ হতে চলেছে। দুর্দান্ত প্রশ্ন।
এলপেড্রো

উত্তর:


6

জাভাস্ক্রিপ্ট (ES6) 272 277 271

বাগ ফিক্স সম্পাদনা করুন

2 টি সম্পাদনা 2 টি 6 টি বাইট THX @ L.Serné সংরক্ষণ করেছেন é

আবার 3 বাগ ঠিক করুন

(w,h,z=(s,q=3,i=h)=>'|  '.slice(0,q)+s.repeat(w).substr(i%2*6+q,w*6-q-~-q)+`  |
`.slice(~q))=>eval("t=z(' _____',0,0)+z('|_   _|     ',2,--h)+z(b=' _) (_   _  ')+z(c='|_   _|_( )_',0);for(a='|_   _| (_) ';--h;)t+=z(a,2)+z(b)+z(c,0)")+z(a,2)+z(' _) (_      ')+z('|_____',1)

কম গল্ফড

(w,h,
  z=(s,q=3,i=h)=>'|  '.slice(0,q)+s.repeat(w).substr(i%2*6+q,w*6-q-~-q)+'  |\n'.slice(~q),
  a='|_   _| (_) ',
  b=' _) (_   _  ',
  c='|_   _|_( )_',
  t=z(' _____',0,0)+z('|_   _|     ',2,--h)+z(b)+z(c,0)
)=>{
  for(;--h;)
    t+=z(a,2)+z(b)+z(c,0);
  return t+z(a,2)+z(' _) (_      ')+z('|_____',1)
}

পরীক্ষা

F=
(w,h,z=(s,q=3,i=h)=>'|  '.slice(0,q)+s.repeat(w).substr(i%2*6+q,w*6-q-~-q)+`  |
`.slice(~q))=>eval("t=z(' _____',0,0)+z('|_   _|     ',2,--h)+z(b=' _) (_   _  ')+z(c='|_   _|_( )_',0);for(a='|_   _| (_) ';--h;)t+=z(a,2)+z(b)+z(c,0)")+z(a,2)+z(' _) (_      ')+z('|_____',1)

function update() {
  var w=+W.value,h=+H.value
  O.textContent=F(w,h)
}

update()
W<input id=W value=2 oninput='update()' type=number min=2>
H<input id=H value=2 oninput='update()' type=number min=2>
<pre id=O></pre>


খুব সুন্দর! Golfed সংস্করণ আমাকে কষ্ট দিচ্ছেন, যদিও: Nx2 কাজ করে না (যেমন 3x2 উৎপাদনের undefined | | ( ) |: _ | | (_) | | _____ | _____ | _____ | এবং উপরের-ডানদিকে একটি বিজোড় উচ্চতা ফলাফল জমা দেওয়ার টুকরোটি তার শীর্ষ সীমানাটি হারিয়েছে L দেখে মনে হচ্ছে গল্ফ-ল্যাশনে কিছু হারিয়ে গেছে Edit সম্পাদনা করুন: "বিজোড় উচ্চতা" বাগ গল্ফযুক্ত এবং নন-গল্ফ কোড উভয়েরই ফলাফল
বেনস জোফুল

@ বেনস জোফুল শেষ গল্ফের পরে পর্যাপ্ত পরীক্ষা নয়। এখন স্থির
edc65

আপনি সর্বশেষ যুক্তি (টি) এবং চতুর্থ যুক্তি (ক) এর ঘোষণাকে লুপের জন্য স্থানান্তরিত করতে পারেন (এবং খ এবং গ এর ঘোষণাকে for(t=z(' _____',0,0)+z('|_ _| ',2,--h)+z(b=' _) (_ _ ')+z(c='|_ _|_( )_',0);--h;a='|_ _| (_) ')টির মতো ঘোষণার অভ্যন্তরে নিয়ে যেতে পারেন: এটি 4 টি কমা সংরক্ষণ করে, তাই আপনি শেষ করতে পারেন) । শুধুমাত্র 273 অক্ষর সম্পাদনা করুন: পরীক্ষা স্নিপেট এখনও bugged হয় ...
লুক

@ এল.সার্নি কীভাবে বুগ হয়েছে? আপনি এর জন্য রাখতে পারবেন না t=..., এটি h == 2 এর জন্য ব্যর্থ হয়। আমি ঠিক আজই এটি ঠিক করেছি।
edc65

1
এনপি, আমি আপনার কোডটি undefinedনিয়েছিলাম aএবং লুপটির শেষ অংশে ঘোষিত হওয়ার কারণটি প্রকাশ পেয়েছে for। আমি কোডটি কিছুটা পরিবর্তন করেছি এবং এটি দিয়েই শেষ করেছি। অন্য 2 বি সেভের জন্য আপনাকে এটিকে একীভূত করতে সক্ষম করতে হবে। (w,h,z=(s,q=3,i=h)=>'| '.slice(0,q)+s.repeat(w).substr(i%2*6+q,w*6-2*q+1)+' |\n'.slice(~q),a='|_ _| (_) ')=>{for(t=z(' _____',0,0)+z('|_ _| ',2,--h)+z(b=' _) (_ _ ')+z(c='|_ _|_( )_',0);--h;)t+=z(a,2)+z(b)+z(c,0);return t+z(a,2)+z(' _) (_ ')+z('|_____',1)}(276 বি)
লুক

5

পাইথন, 513 বাইট

def r(m,n):
 r=3*m
 c=6*n
 l=3-(n%2)*3
 z=[1,2,3,4,5,0]
 p=zip
 return"\n".join("".join(" |_()"[[[((j%6,i%3)in[(1,0),(5,0)])*2or((j%6,i%3)in[(0,1),(0,0)])or((j%4,i%6)in[(1,1),(1,2),(3,4),(3,5)])*2or((i%6,j%12)in p(z,[10,2,10,4,8,4]))*4or((i%6,j%12)in p(z,[8,4,8,2,10,2]))*3,1,0][j in[0,c]or((j,i%6)in p([1,1,2,2],[1,2]*2)+p([c-1,c-1,c-2,c-2],[1+l,2+l]*2)or(i,j%12)in[(1,8),(1,9),(1,10),(2,8),(2,9),(2,10),(r-1,9)]or(i,j%12)==(r-1,3+6*(m%2)))*2],2*(j%6>0)or i>0][i in[0,r]]]for j in range(c+1))for i in range(r+1))

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

char_codes = " |_()"
def base(row, col):
    if col % 6 in [5] and row % 3 in [0, 2]:
        return 1
    if col % 6 in [0, 4] and row % 3 in [2]:
        return 2
    return 0

def underscores(row, col):
    if col % 4 in [0] and row % 6 in [0, 1] or col % 4 in [2] and row % 6 in [3, 4]:
        return 2
    return 0

def parentheses(row, col):
    if (row % 6, col % 12) in [(0, 9), (1, 1), (2, 9), (3, 3), (4, 7), (5, 3)]:
        return 4
    if (row % 6, col % 12) in [(0, 7), (1, 3), (2, 7), (3, 1), (4, 9), (5, 1)]:
        return 3
    return 0

def value(row, col):
    return base(row, col) + underscores(row, col) + parentheses(row, col)

def new_value(last_row, last_col, row, column):
    if row in [0, last_row]:
        return 2*(column % 6 > 0) or row>0
    if column in [0, last_col]:
        return 1
    if column in [1,2] and row % 6 in [1, 2]:
        return 0
    if column in [last_col - 1, last_col - 2] and row % 6 in [[4,5],[1,2]][last_col%12>0]:
        return 0
    if row in [1, 2] and column % 12 in [8,9,10]:
        return 0
    if row == last_row - 1 and column % 12 == 9:
        return 0
    return value(row - 1, column - 1)

def puzzle(rows, cols):
    last_row = rows * 3
    last_col = cols * 6
    return "\n".join("".join(new_value(last_row, last_col, row, col) for col in range(last_col + 1)) for row in range(last_row + 1))

নিদর্শনগুলি নিজের মতো লাগে

আমরা এটিকে সংখ্যার 6 থেকে সারি মোড 3 এবং কলামগুলির সাথে পূর্ণসংখ্যার থেকে দেখার সারণী হিসাবে দেখতে পারি

 012345
0     |
1
2_   _|

 0123
0_
1_
2
3  _
4  _
5

 0123456789AB
0       ( )
1 ) (
2       ( )
3 ( )
4       ) (
5 ( )

বিভিন্ন ধরণের সংমিশ্রণের এই কৌশলটি এখানে আমার পক্ষে সত্যিই কাজ করে নি কারণ এগুলি প্রকাশ করা যথেষ্ট জটিল ( আমি নির্বিশেষে এটিকে রাখছি কারণ এটি আমার এক মিনিট সময় নিয়েছিল এবং এটি আগ্রহী হতে পারে।


1
আপনি সেমিকোলন দ্বারা বিভক্ত 1 টি লাইনে পুরো জিনিসটি রেখে 7 বাইট সংরক্ষণ করতে সক্ষম হবেন
ব্লু

@ ব্লু থ্যাঙ্কস সাথী, আমার শেষ গল্ফের কিছুক্ষণ পরে গেছে এবং আমি কিছু কৌশল ভুলে গেছি।
16:59 এ ওয়ালেপ করুন

2

গণিত, 384 বাইট

(m=#~Mod~2&;a=#~Array~Y&;s=(h="   _  ")[o="|_( )_",z="|_   _",w=" _) (_",z,p="| (_) "];l="|  _  "[o,"|    _",u="|   (_",z,p];r=h[o,q="|_    ",t=" _)   ",z,p];{X,Y}=#;a[" _____"&]<>" \n"<>Join[{a[If[#<Y,z,q]["|     "][[m@#]]&]},Table[Which[y<2,l,y<Y,s,0<1,r][[Mod[x+3y,6]]],{x,3,3X-1},{y,1,Y}],{a[If[#<2,"|     "[u],"      "[If[#<Y,w,t]]][[m[X+#]]]&],a["|_____"&]}]~Riffle~"|\n"<>"|")&

অজ্ঞাত ক্রিয়াকলাপটি একটি অর্ডারযুক্ত জোড় সংখ্যাকে তার যুক্তি হিসাবে গ্রহণ করা এবং উপযুক্ত নিউলাইনযুক্ত স্ট্রিং ফিরিয়ে দেওয়া। স্পেস এবং নতুন লাইনের সাথে যুক্ত:

(m = Mod[#1, 2] &; a = Array[#1, Y] &; 
 s = (h = "   _  ")[o = "|_( )_", z = "|_   _", w = " _) (_", z, p = "| (_) "];
 l = "|  _  "[o, "|    _", u = "|   (_", z, p]; 
 r = h[o, q = "|_    ", t = " _)   ", z, p];
 {X, Y} = #1; 
 a[" _____" &] <> " \n" <>
 Riffle[
   Join[
     {a[If[#1 < Y, z, q]["|     "][[m[#1]]] &]}, 
     Table[
       Which[y < 2, l, y < Y, s, 0 < 1, r][[Mod[x + 3 y, 6]]],
       {x, 3, 3 X - 1}, {y, 1, Y}
     ],
     {a[If[#1 < 2, "|     "[u], "      "[If[#1 < Y, w, t]]][[m[X + #1]]] &],
     a["|_____" &]}
   ], "|\n"
 ] <> "|") &

2

ব্যাচ, 562 528 বাইট

@echo off
set t=!  !
set w=%2
set a= _) (_!_   _! (_) !        _  !_( )_!_   _ _) (_
call:d "!     !_   _" 2 " _____ _____" 4
for /l %%j in (2,1,%1)do call:t
call:d "!_____!_____" 1 "%a:~18,6%%a:~-6%" 3
exit/b
:t
set a=%a:~24%%a:~0,24%
call:d "%a:~6,6%%a:~30,6%" 1 "%a:~0,6%%a:~24,6%" 3
call:c "%a:~12,6%%a:~36,6%" 2
exit/b
:d
call:c %3 %4
:c
set s=
for /l %%i in (%w%,-2,1)do call set s=%~1%%s%%&if %%i==1 call set s=%%s:~6%%
if %2 lss 4 set s=%s%!&call set s=%%t:~0,%2%%%%s:~%2,-%2%%%%t:~-%2%%
echo %s:!=^|%

গল্ফিংয়ের বিরুদ্ধে প্রতিরোধী হিসাবে প্রমাণিত, পুনরাবৃত্তিটি মুছে ফেলার জন্য অনেকগুলি বাইট ব্যয় করতে থাকে, উদাহরণস্বরূপ, আমি ম্যানুয়ালি লাইন নম্বর মোড 3 এ পাস করি কারণ এটি গণনা করা খুব ব্যয়বহুল। সম্পাদনা: তদ্ব্যতীত, আমি অজান্তেই |প্রতি তৃতীয় লাইনে অতিরিক্ত গল্ফ দিয়েছি যা ভুল। এটি স্থির করা আসলে আমাকে 2 বাইট (আমার মূল সংস্করণে 4 বাইট) সঞ্চয় করেছে। ব্যাখ্যা: aজিগসের বিভিন্ন বিট রয়েছে। :tফাংশন অদলবদল তাদের তিন সারি প্রতিটি সেট উপর, তারপর প্রয়োজনীয় সাবস্ট্রিং যা চায়ের :cফাংশন তারপর জোড়ায় জোড়ায় পুনরাবৃত্তি কিন্তু প্রথম কলামটি মোছার যদি wবিজোড় হয়। বাম এবং ডান প্রান্তের কেসগুলি পরে সারি আউটপুট হওয়ার আগে পরিচালনা করা হয়। অন্য প্রান্তের ক্ষেত্রে হ'ল প্রথম সারির ক্ষেত্রে !এর পরিবর্তে স্থানগুলিতে গুলি পরিবর্তন করা হয়|গুলি (কোডগুলি এড়িয়ে যায় |কারণ তারা ব্যাচে পরিচালনা করতে চতুর)।


2

বেফুঞ্জ, 263 243 বাইট

|_   _| (_)
 _) (_   _
|_   _|_( )_

|
|
|_____
 _____
>&:08p3*28p&:18p6*38pv
@#!`g82:,_v0+55+1p84:<_
\g82+g84<| `g83:+1,g\%*6-g852+*6/3+2g84\++%3+2\!:g84*4p85:!!+*`0%6\!*`
6/08g+2%^>>::::48g3/2%2*`\48g3/18g+2%!2*+38g\`*!48g3%0`*\::6/2%!48g\`\

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

এই কাজ এক্স উপর iterating হয়, এলাকার Y স্থানাঙ্ক আমরা আউটপুট করতে চান, এবং ম্যাপিং ঐ এক্স , Y মান U , V ধাঁধা ধরণ (playfield প্রথম তিন লাইন সঞ্চিত) এ স্থানাঙ্ক। নিম্নলিখিত মুল সূত্রগুলি সহ এই ম্যাপিংটি অর্জন করা হয়েছে:

u = (x+(y+2)/3*6) % 12
v = (y+2)%3 + (y==0)

তোমার দর্শন লগ করা তুল্য প্রয়োজন 6 প্রতি 3 সারি পুষিয়ে করা প্রতি 12 কলাম পুনরাবৃত্তি, বরং। বনাম পুনরাবৃত্তি তুল্য প্রতি 3 সারি, কিন্তু আমরা যোগ y==0মান তাই খুব প্রথম সারিতে বিশেষ স্থান ধার্য রেন্ডার করা পারেন। তবে, প্রান্তগুলি পরিচালনা করতে আমাদের একটি অতিরিক্ত বুলিয়ান মান, প্রবর্তন করতে হবে যা বিভিন্ন প্রান্তের অবস্থানের জন্য সত্য, এবং সূত্রগুলি নীচে সামঞ্জস্য করে:

u = (x+(y+2)/3*6) % (e?6:12)
v = (y+2)%3 + (y==0) + e*4

এভাবে যদি আমরা কোনো কিনারায়, আমরা 4 যোগ বনাম তাই তুল্য যেমন 7. লাইনের 5 সহজ প্রান্ত প্যাটার্ন ব্যবহার করতে এবং আমরা এখন mod প্রয়োজন U বদলে 12 6 দ্বারা তুল্য এই প্রান্ত প্যাটার্ন সাল থেকে প্রতি 6 টি কলাম পুনরাবৃত্তি করে।

মান হিসাবে নিজেই, এটি একটি মোটামুটি জটিল সূত্র প্রয়োজন, প্রান্ত অবস্থানগুলি ধাঁধা সীমান্তের কিছুটা অনিয়মিত অঞ্চলকে ঘিরে রাখে।

elr = (x <= 2*y/3%2 or x >= w-2*!(y/3+cols)%2) and (y%3 > 0)
etb = (y <= !(x/6%2) or y >= h-(x/6+rows)%2) and (x%6 > 0)
e   = elr or etb

খুব বেশি বিশদে না গিয়ে, মৌলিক ভাঙ্গনটি হ'ল এলারটি বাম এবং ডান সীমানা বরাবর প্রান্তের অবস্থানগুলির সাথে মেলে , এবং অন্যদিকে উপরের এবং নীচের সীমানাগুলির সাথে অবস্থানগুলি মেলে।


1

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

f=
(h,w,a=` _) (_|_   _| (_)    _  |_( )_|_   _      |     |_____`.match(/.{6}/g),g=(l,r,j)=>a[7].slice(0,j)+(a[l]+a[r]).repeat(w).slice(j,w*6+1-j)+`  |`.slice(-j))=>[` _____`.repeat(w),g(1,7,2),...[...Array(--h*3)].map((_,i)=>g(i%6,(i+3)%6,"312"[i%3])),g(h=h%2*6,6-h,3),g(8,8,1)].join`
`
<div oninput=o.textContent=+h.value&&+w.value?f(h.value,w.value):''><input id=h type=number min=1><input id=w type=number min=1><pre id=o>

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

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