ক্রসওয়ার্ড বাধ্যবাধকতা!


14

ক্রিস নামক একটি ক্রিপ্টিক ক্রসওয়ার্ড আসক্তি, সেগুলি সমাধান করার জন্য একটি সেট অ্যালগরিদম রয়েছে m

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

উপরোক্ত চিত্রটি আমরা গাইড হিসাবে ব্যবহার করব।

  1. ক্রিস সর্বদা প্রথম ক্লু দিয়ে শুরু করে, এক্ষেত্রে 1 ক্রস। ক্রিস একজন দক্ষ ক্রসওয়ার্ড উত্সাহী, তাই ধারণা করা হয় যে তিনি যে ক্লুটির সাথে কাজ করছেন তার উত্তর তিনি সর্বদা জানবেন।
  2. ক্রিস একবার ক্লুটি সম্পন্ন করার পরে, তিনি তার দ্বারা সম্পন্ন সমস্ত সংকেত অনুসন্ধান করবেন (প্রথম ক্ষেত্রে, 1 ডাউন, 2 ডাউন এবং 3 ডাউন) এবং তারপরে সর্বনিম্ন সংখ্যার সাথে ক্লুটি সম্পন্ন করবেন। যদি কোনও সংলগ্ন চিহ্ন না থাকে তবে তিনি পদক্ষেপ 3 এ যেতে পারেন।
  3. যদি ক্লুটি এরকম হয় যে পরের সংখ্যাটিতে (তৃতীয় ধাপে বর্ণিত হিসাবে) একটি ক্রস ক্লু এবং ডাউন ক্লু উভয়ই রয়েছে, তবে তিনি প্রথমে পুরো ক্লুটি সম্পন্ন করবেন (100% নিশ্চিত, ওসিডির এই সীমানা!)
  4. যদি কোনও সংলগ্ন চিহ্ন না থাকে, তবে তিনি পরবর্তী উপলব্ধ ক্লুতে যাবেন যা সংখ্যার পরবর্তী (পুরো বা নীচে)
  5. সমস্ত ক্লু শেষ না হওয়া পর্যন্ত দ্বিতীয় ধাপ থেকে পুনরাবৃত্তি করুন।

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

কোডটি .একটি সাদা বর্গ এবং #একটি কালো বর্গের প্রতিনিধিত্বকারী আকারে ক্রসওয়ার্ড ধাঁধা টেম্পলেটটির ইনপুট গ্রহণ করবে ।

উদাহরণ :

.....#.........
.#.#.#.#.#.#.#.
...#...#.......
.#.#.#.#.#.#.#.
....#..........
##.#.#.#.#.#.#.
......#........
.###.#####.###.
........#......
.#.#.#.#.#.#.##
..........#....
.#.#.#.#.#.#.#.
.......#...#...
.#.#.#.#.#.#.#.
.........#.....

ইনপুট এর মাধ্যমে হতে পারে: ক) ক্রসওয়ার্ডের উপস্থাপনের একটি ফাইল পড়া, বা খ) ক্রসওয়ার্ডের প্রতিটি লাইন লাইন ইনপুট দ্বারা \n, তারপরে , দ্বিতীয় \nইওফিকে নির্দেশ করে।

এবং তারপরে এটি নির্ধারণ করবে উপরের অ্যালগরিদম অনুসারে ক্রিস কোন পদ্ধতি দ্বারা এটি সমাধান করবেন।

আউটপুট অবশ্যই কমা দ্বারা বিচ্ছিন্ন নির্দেশাবলীর আকারে হওয়া উচিত n(A|D), যেখানে nক্লু নম্বরটি তার পরে Aবা ডাউনের পরে অনুসরণ করবে D

সুতরাং উপরের উদাহরণে (উভয় চিত্র থেকে, এবং উদাহরণ টেমপ্লেট, যা এক এবং এক একই), আউটপুটটি হবে:

1A,1D,2D,3D,9A,10A,4D,5D,6D,7D,8D,11A,12A,13A,15A,14D,15D,16A,17A,18D,19D,20A,21D,23A,22D,24A,25D,27A,28A,26D,29A,30A,31A

সংক্ষিপ্ততম কোড জয় ...

পরীক্ষামূলক

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

উদাহরণ পরীক্ষার ক্ষেত্রে:

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

.....#
.#.#.#
...#..
.#.#.#
.....#
##.#..

আউটপুট: 1A,1D,2D,3D,4A,5A,6A,7A

পরীক্ষার কেস ২

.....#..
.#.##..#
.#....#.
...##.#.
.####...
......##

আউটপুট: 1A,1D,2D,5A,4D,4A,3D,3A,7A,8A,6D,9A

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

.........#
#.#.#.#.#.
....#...#.
#...#.#.#.
..###.#.#.
.#....#...
.#####...#
.....###..

আউটপুট: 1A,2D,3D,4D,5D,7A,8A,9A,10A,11A,11D,12A,13A,6D,14D,15A,16A,17A

টেস্ট কেস 4

.....#.........
.#.#.#.#.#.#.#.
...#...#.......
.#.#.#.#.#.#.#.
....#..........
##.#.#.#.#.#.#.
......#........
.###.#####.###.
........#......
.#.#.#.#.#.#.##
..........#....
.#.#.#.#.#.#.#.
.......#...#...
.#.#.#.#.#.#.#.
.........#.....

আউটপুট: 1A,1D,2D,3D,9A,10A,4D,4A,5D,6D,7D,8D,11A,12A,13A,15A,14D,15D,16A,17A,18D,19D,20A,21D,23A,22D,24A,25D,27A,28A,26D,29A,30A,31A

শুভকামনা!


কেবলমাত্র নিশ্চিত হওয়া: আপনার উদাহরণের চিত্রটিতে কোন সংখ্যাটি বাধ্যতামূলকভাবে পূরণ করা পঞ্চম ক্লু? (1 এইচ, 1 ভি, 2 ভি, 3 ভি এর পরে)
ড। বেলিসারিয়াস

@ বিলেসারিয়াস ছবিটি চতুর্থ পরীক্ষার ক্ষেত্রে সম্পর্কিত। সুতরাং পঞ্চম ক্লুটি পূরণ করতে হবে 9 ক্রস হিসাবে, বা আপনি এটি যেমন লিখবেন, 9 এইচ :) চতুর্থ ক্লুটি শেষ হওয়ার পরে কেবলমাত্র সংলগ্ন ক্লুগুলি 9 এবং 10 অতিক্রম করা হয়েছে, ক্রিস প্রথমে নিম্নতম ক্লুটি পূরণ করতে বাধ্য হবে ...
ওয়েলওয়েস্ট

বাইটগুলি কেবলমাত্র কোডের ভিত্তিতে বিবেচিত যা সঠিক আউটপুট উত্পাদন করে produces আইওডাব্লু, আপনি কি সি, নামস্থান + শ্রেণি + প্রধান, এবং এর মত সংকলনযোগ্য হিসাবে এর উপর দণ্ডিত হন বা আমি এটি সি # বা এ জাতীয়তে লিখলে, এই ন্যূনতম সংখ্যার কোডের প্রয়োজন হবে তা ধরে নেওয়া যুক্তিযুক্ত কি?
চিফ টুপেনসিল

1
@ ববিডিজিটাল ওয়েল, এটি কোড-গল্ফ ... আমি আশা করব যে আপনি যদি সি # তে এটি লেখার পরিকল্পনা করে থাকেন তবে আপনি খুব বেশি বহিরাগত ব্যবহার না করার চেষ্টা করবেন ... আপনি তাদের গণনা করতেই আমার ভয় হয় .. ।
ওয়েলওয়েস্ট

1
@ ওয়েল ওয়েস্ট আমি মনে করি আপনার তৃতীয় উদাহরণটি 17Aশেষে একটি বাদ দিচ্ছে। চতুর্থ 4Aপরে ডান 4D
হাওয়ার্ড

উত্তর:


5

গল্ফস্ক্রিপ্ট, 154 টি অক্ষর

:^,,{.^=46<{;-1}*)}%[.^n?)/zip[0]*]{1,%{,1>},}%:H"AD"1/]zip{~`{1$0=H{{0=}/}%.&$?)\+[\]}+/}%(2/\{0=)[\~\]}$+[]{1${1=1$&},.!{;1$1<}*1<:F~~@|@F-\1$}do;;]','*

এসটিডিআইএন-এ ইনপুট সরবরাহ করতে হবে। উদাহরণগুলি নিম্নলিখিত ফলাফল দেয় ( অনলাইনে চেক করুন ):

1A,1D,2D,3D,4A,5A,6A,7A

1A,1D,2D,5A,4D,4A,3D,3A,7A,8A,6D,9A

1A,2D,3D,4D,5D,7A,8D,9A,10A,11A,11D,12A,13A,6D,14D,15A,16A,17A

1A,1D,2D,3D,9A,10A,4D,4A,5D,6D,7D,8D,11A,12A,13A,15A,14D,15D,16A,17A,18D,19D,20A,21D,23A,22D,24A,25D,27A,28A,26D,29A,30A,31A

+1 লক্ষণীয়ভাবে সংহত। এটা কিভাবে কাজ করে?
ডেভিডসি

বাহ, এটা পরিষ্কার করার জন্য ধন্যবাদ যে আমার এমনকি আমার সময় নষ্ট করা উচিত নয়। স্পষ্টতই আরও উপযুক্ত ভাষার শীর্ষে উঠতে হবে। votes++
চিফ টুপেনসিলস

@ ববিডিজিটাল আমার অর্থ অনাদর নেই। সি # হ'ল একটি ভার্ভোজ ভাষা ... এটি কোড গল্ফের পক্ষে সম্ভবত সেরা নয়। কোড-বোলিং বা জনপ্রিয়তার প্রতিযোগিতার জন্য এখানে ... তবে কোড গল্ফ হ'ল মাছের সম্পূর্ণ নতুন কেটলি।
ওয়েলওয়েস্ট

এখানেও +1 ... সম্ভবতঃ আমি দেখেছি দীর্ঘতর গল্ফস্ক্রিপ্ট এন্ট্রিগুলির মধ্যে ... সুন্দরভাবে সম্পন্ন হয়েছে।
ওয়ালিওয়েস্ট

1
@ ববিডিজিটাল: কাজটি নিজেই বেশ আকর্ষণীয়। আপনি যে ভাষায় পরিচিত তা চেষ্টা করুন। আমি মনে করি আপনি ধাঁধাটি আমার মতো করে উপভোগ করবেন - ধাঁধাটি মোকাবেলার জন্য সমস্ত ভিন্ন পদ্ধতির তদন্ত করুন। আপনি যদি এই উত্তরের চেয়ে কম চরিত্রের গণনায় না পৌঁছান তবে এটি নিজেই মজাদার।
হাওয়ার্ড

3

গণিত 806 477

(সমাধানের পদক্ষেপগুলির ক্রমক্রমে কোনও ত্রুটি রয়েছে বলে মনে হচ্ছে I আমি এটি খতিয়ে দেখছি))

Golfed

ফাংশনটি qক্রসওয়ার্ড সমাধানগুলির ক্রম সন্ধান করে।

i = Dimensions; v = MemberQ; u = Position; y = ToString; k = Select;
q@t_ :=
 (g@p_ := Characters@StringSplit[p, "\n"];
  w = g@t;
  a[{r_, c_}, z_] := (c != i[z][[2]]) \[And] 
    v[u[z, "."], {r, c + 1}] \[And] ((c == 1) \[Or] 
      v[u[z, "#"], {r, c - 1}]);
  b@z_ := k[u[z, "."], a[#, z] &];
  d[{r_, c_}, z_] := (r != i[z][[2]]) \[And] 
    v[u[z, "."], {r + 1, c}] \[And] ((r == 1) \[Or] 
      v[u[z, "#"], {r - 1, c}]);
  e@z_ := k[u[z, "."], d[#, z] &];
  Cases[Flatten[{
       If[v[b[w], #[[1]]], y[#[[2]]] <> "A"],
       If[v[e[w], #[[1]]], y[#[[2]]] <> "D"]} & /@ (MapIndexed[List, 
        b[w] \[Union] e[w]] /. {{r_, c_}, {i_}} :> ({r, c} -> i))], 
   Except[Null]])

Ungolfed

q[t7_]:=
Module[{d,acrossSquareQ,acrossSquares,downSquareQ,downSquares,m,numberedCells},
(*w=g[t7];*)
g[p2_]:=Characters@StringSplit[p2,"\n"];
w=g[t7];
acrossSquareQ[{r_,c_},z_]:=(c!=Dimensions[z][[2]])\[And]MemberQ[Position[z,"."],{r,c+1}] \[And]((c==1)\[Or]MemberQ[Position[z,"#"],{r,c-1}]);
acrossSquares[z_]:=Select[Position[z,"."],acrossSquareQ[#,z]&];
downSquareQ[{r_,c_},z_]:=(r!=Dimensions[z][[2]])\[And]MemberQ[Position[z,"."],{r+1,c}] \[And]((r==1)\[Or]MemberQ[Position[z,"#"],{r-1,c}]);
downSquares[z_]:=Select[Position[z,"."],downSquareQ[#,z]&];
numberedCells[z_]:=acrossSquares[z]\[Union]downSquares[z];
m=MapIndexed[List,numberedCells[w]]/.{{r_?IntegerQ,c_?IntegerQ},{i_?IntegerQ}}:> ({r,c}-> i);
Cases[Flatten[{
If[MemberQ[acrossSquares[w],#[[1]]],ToString[#[[2]]]<>"A"],
If[MemberQ[downSquares[w],#[[1]]],ToString[#[[2]]]<>"D"]}&/@m],Except[Null]]]

boardক্রসওয়ার্ড ধাঁধা প্রদর্শন করে। কোডটি অক্ষর গণনায় অন্তর্ভুক্ত নেই। থেকে বেশ কয়েকটি সাব ফাংশন qএখানে ধার করা হয়।

board[p_]:=
Module[{q,g,w,downSquareQ,downSquares,acrossSquareQ,acrossSquares,numberedCells,m},
downSquareQ[{r_,c_},z_]:=(r!=Dimensions[z][[2]])\[And]MemberQ[Position[z,"."],{r+1,c}] \[And]((r==1)\[Or]MemberQ[Position[z,"#"],{r-1,c}]);
downSquares[z_]:=Select[Position[z,"."],downSquareQ[#,z]&];
acrossSquareQ[{r_,c_},z_]:=(c!=Dimensions[z][[2]])\[And]MemberQ[Position[z,"."],{r,c+1}] \[And]((c==1)\[Or]MemberQ[Position[z,"#"],{r,c-1}]);
acrossSquares[z_]:=Select[Position[z,"."],acrossSquareQ[#,z]&];
numberedCells[z_]:=acrossSquares[z]\[Union]downSquares[z];
g[p2_]:=Characters@StringSplit[p2,"\n"];
w=g[p];
m=MapIndexed[List,numberedCells[w]]/.{{r_?IntegerQ,c_?IntegerQ},{i_?IntegerQ}}:> ({r,c}-> i);
Grid[ReplacePart[w,m],Dividers->All,Background->{None,None,(#-> Black)&/@Position[w,"#"]}]]

TestCases

1

t1=".....#
.#.#.#
...#..
.#.#.#
.....#
##.#..";
board[t1]
q[t1]

T1

{"1A", "1 ডি", "2 ডি", "3 ডি", "4 এ", "5 এ", "6 এ", "7 এ"}


2

t2=".....#..
.#.##..#
.#....#.
...##.#.
.####...
......##";

board[t2]
q[t2]

T2

{"1A", "1 ডি", "2 ডি", "3 এ", "3 ডি", "4 এ", "4 ডি", "5 এ", "6 ডি", "7 এ", "8 এ", "9 এ"


3

t3=".........#
#.#.#.#.#.
....#...#.
#...#.#.#.
..###.#.#.
.#....#...
.#####...#
.....###..";

board[t3]

q[t3]

T3

{"1A", "2 ডি", "3 ডি", "4 ডি", "5 ডি", "6 ডি", "7 এ", "8 ডি", "9 এ", "10 এ", "11 এ", "11 ডি", " 12 এ "," 13 এ "," 14 ডি "," 15 এ "," 16 এ "," 17 এ "}


4

t4=".....#.........
.#.#.#.#.#.#.#.
...#...#.......
.#.#.#.#.#.#.#.
....#..........
##.#.#.#.#.#.#.
......#........
.###.#####.###.
........#......
.#.#.#.#.#.#.##
..........#....
.#.#.#.#.#.#.#.
.......#...#...
.#.#.#.#.#.#.#.
.........#.....";

board[t4]


q[t4]

T4

{"1A", "1 ডি", "2 ডি", "3 ডি", "4 এ", "4 ডি", "5 ডি", "6 ডি", "7 ডি", "8 ডি", "9 এ", "10 এ", " 11 এ "," 12 এ "," 13 এ "," 14 ডি "," 15 এ "," 15 ডি "," 16 এ "," 17 এ "," 18 ডি "," 19 ডি "," 20 এ "," 21 ডি "," 22 ডি " , "23 এ", "24 এ", "25 ডি", "26 ডি", "27 এ", "28 এ", "29 এ", "30 এ", "31 এ"


আমার মনে হয় আপনার কোড নিয়ে আপনার একটি সমস্যা আছে। উদাহরণস্বরূপ 2 টির 3Aপরে সঠিক হওয়া উচিত নয় 2Dকারণ এখনও কোনও ক্লু নেই। এছাড়াও অন্যান্য সমাধানগুলি এই প্রভাবটি দেখায়।
হাওয়ার্ড

হাওয়ার্ড, আমি আপনার বক্তব্য বুঝতে পারছি না। "৪ থেকে" যদি কোনও সংলগ্ন চিহ্ন না থাকে, তবে তিনি পরবর্তী উপলব্ধ ক্লুতে যাবেন যা সংখ্যায় (পুরো বা নীচে) এর পরে থাকবে ", এটি 3 ডি 2D পরে হতে পারে বলে মনে হয়।
ডেভিডসি

তবে উদাহরণস্বরূপ 5Aএর একটি সূত্র রয়েছে এবং তাই এটি উপকার করা উচিত 3A
হাওয়ার্ড

আপনি ToStringদু'বারের জন্য সংক্ষিপ্তকরণের সংজ্ঞা দিয়েছেন
ডঃ বেলিসারিয়াস

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