ফ্লিপ্পিন 'স্কোয়ার্স


34

কেবল সারি এবং কলামগুলি উল্টিয়ে (কেন্দ্রবিন্দুটির চারপাশে বিপরীত) উল্টিয়ে একটি অঙ্কের বর্গক্ষেত্রকে আনম্বল করতে একটি প্রোগ্রাম বা ফাংশন তৈরি করুন।

ইনপুট

ইনপুট নীচের মতো 9 লাইন স্ট্রিং আকারে একটি 9x9 গ্রিড হবে:

986553229
264564891
759176443
643982153
567891234
526917874
685328912
891732537
117644378

এই ইনপুট ফর্ম্যাটটি আলোচনা সাপেক্ষ নয় - ইনপুট ফর্ম্যাট সহ যে কোনও সমাধান "সৃজনশীল" তা অবৈধ বলে বিবেচিত হবে।

আউটপুট

আউটপুটটি ফ্লিপ মুভগুলির একটি তালিকা হওয়া উচিত যা প্রদত্ত ক্রমে ইনপুট প্রয়োগ করা হলে লক্ষ্য গ্রিডটি পুনরায় তৈরি করা উচিত।

একটি উদাহরণ আউটপুট (পূর্ববর্তী ইনপুট উদাহরণের সমাধান নয়):

28IF5D3EAB9G3

এই আউটপুট ফর্ম্যাটটিও অ-আলোচনাযোগ্য। আউটপুটে কোনও নতুনলাইন বা ফাঁকা স্থান থাকা উচিত নয়, কেবলমাত্র অক্ষরগুলি 1- 9এবং A- I(যদি আপনি পছন্দ করেন তবে বড় হাতের অক্ষরের জায়গায় ছোট ছোট অক্ষর গ্রহণযোগ্য হয়)।

টার্গেট গ্রিড (যে রাজ্যে আপনাকে পুনরায় তৈরি করতে হবে) তা নিম্নরূপ:

123456789
234567891
345678912
456789123
567891234
678912345
789123456
891234567
912345678

নম্বরগুলি 1- 9সারিগুলি উল্টানোর জন্য নির্দেশ হিসাবে ব্যবহার করা উচিত, এবং বর্ণগুলি A- Iকলামগুলির জন্য ব্যবহার করা উচিত। গ্রিডটি পুনরুদ্ধারকৃত অবস্থায় এটি নীচে দেখানো হয়েছে।

     ABCDEFGHI
     |||||||||
     vvvvvvvvv
1 -> 123456789
2 -> 234567891
3 -> 345678912
4 -> 456789123
5 -> 567891234
6 -> 678912345
7 -> 789123456
8 -> 891234567
9 -> 912345678

সুতরাং একটি 8মাধ্যম নীচে থেকে দ্বিতীয় সারিটি ফ্লিপ করুন এবং একটি Fউপায় ষষ্ঠ কলামটি ফ্লিপ করুন।

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

উদাহরণ

ইনপুট:

987654321
234567891
345678912
456789123
567891234
678912345
789123456
891234567
912345678

আউটপুট:

1

এক্ষেত্রে লক্ষ্য স্থিতিতে ফিরে আসার জন্য কেবল শীর্ষ সারিতেই উল্টানো দরকার।

ইনপুট:

123456788
234567897
345678916
456789125
567891234
678912343
789123452
891234561
912345679

আউটপুট:

I

এই ক্ষেত্রে কেবলমাত্র চূড়ান্ত কলাম (কলাম I) লক্ষ্য স্থিতি পুনরায় তৈরি করতে উল্টানো দরকার needs

ইনপুট:

123456788
798765432
345678916
456789125
567891234
678912343
789123452
891234561
912345679

আউটপুট:

2I

এক্ষেত্রে আমাদের লক্ষ্য 2স্থলে Iফিরতে সারিটি ফ্লিপ করতে হবে এবং তারপরে কলামটি ফ্লিপ করতে হবে।

নোট:

  • আপনার উত্তরে একটি উদাহরণ ব্যবহার অন্তর্ভুক্ত করুন।
  • প্রদত্ত আউটপুটটি সংক্ষিপ্ততর ক্রম হতে হবে না যা লক্ষ্য স্থিতি ফিরিয়ে দেবে - যে সিকোয়েন্স যা গোলের রাজ্যটি ফিরিয়ে দেয় ততক্ষণ এটি কাজ করবে (যেমন আমি যতক্ষণ না এটি পরীক্ষা করতে পারি)
  • আমি প্রতিটি উত্তর যাচাই করার চেষ্টা করব এবং যারা কাজ করে তাদের অবশ্যই উত্সাহিত করব এবং স্পষ্টতই গল্ফ করার চেষ্টা করেছিল।
  • এটি একটি উন্মুক্ত সমাপ্ত প্রতিযোগিতা - আমি পরের সপ্তাহের মধ্যে কিছুটা স্বল্পতম উত্তর গ্রহণ করব, তবে ভবিষ্যতে যে কোনও সময়ে সংক্ষিপ্ততর একটি নতুন বৈধ উত্তর যদি আসে তবে আমি তা প্রতিফলিত করার জন্য স্বীকৃত উত্তরটি পরিবর্তন করব
  • ২/0/০৯/২০১৮ (GMT) 26/01/2014 তারিখে প্রাপ্ত সংক্ষিপ্ত উত্তরের জন্য এই অনুগ্রহ 200 টি খ্যাতি অর্জন করা হয়েছে The এই বাউন্ডি হাওয়ার্ডকে তার 268 চরিত্রের গল্ফস্ক্রিপ্ট সমাধানের জন্য ভূষিত করা হয়েছিল ।

পরীক্ষামূলক

আপনার উত্তর সহ নিম্নলিখিত তিনটি পরীক্ষা গ্রিডের জন্য আপনার প্রোগ্রামটির আউটপুট সরবরাহ করুন:

986553229
264564891
759176443
643982153
567891234
526917874
685328912
891732537
117644378

927354389
194762537
319673942
351982676
567891234
523719844
755128486
268534198
812546671

813654789
738762162
344871987
341989324
567891234
576217856
619623552
194435598
926543271

আমি পরীক্ষার উদ্দেশ্যে বৈধ গ্রিড তৈরির জন্য একটি ছোট পাইথন প্রোগ্রাম তৈরি করেছি:

import random

def output(array):
  print '\n'.join([''.join(row) for row in array])

def fliprow(rownum, array):
  return [row[::1-2*(rownum==idx)] for idx,row in enumerate(array)]

def flipcol(colnum, array):
  return zip(*fliprow(colnum, zip(*array)))

def randomflip(array):
  op=random.randint(0,1)
  row=random.randint(0,9)
  if(op==1):
    return fliprow(row, array)
  else:
    return flipcol(row, array)

def jumble(array):
  arraycopy=array
  for i in range(10, 1000):
    arraycopy=randomflip(arraycopy)
  return arraycopy

startarray=[
['1','2','3','4','5','6','7','8','9'],
['2','3','4','5','6','7','8','9','1'],
['3','4','5','6','7','8','9','1','2'],
['4','5','6','7','8','9','1','2','3'],
['5','6','7','8','9','1','2','3','4'],
['6','7','8','9','1','2','3','4','5'],
['7','8','9','1','2','3','4','5','6'],
['8','9','1','2','3','4','5','6','7'],
['9','1','2','3','4','5','6','7','8']]

print output(jumble(startarray))

8
আমি কেবল একটি সংক্ষিপ্ত সমাধান লিখেছি যা বাছাই শেষ না হওয়া পর্যন্ত এলোমেলোভাবে সারি / কলামগুলিকে ঝাপটায়। ৫০০ মিলিয়ন পুনরাবৃত্তির পরে এটি আপনার দেওয়া প্রথম ধাঁধাটি এখনও সমাধান করতে পারেনি (যেখানে আপনাকে কেবল সারি 1 সরিয়ে ফেলা দরকার)। এলোমেলোতা এই সমস্যার ব্যবহারযোগ্য সমাধান বলে মনে হয় না!
জোশ

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

4
বর্বর বাহিনীর প্রয়োজন হয় না। প্রতিটি গ্রিড টাইল কেবল চারটি পজিশনের মধ্যে একটিতে শেষ হতে পারে তা বিবেচনা করুন : এর সঠিক অবস্থান, উল্টানো এক্স, উল্টানো ওয়াই বা উল্টানো এক্সওয়াই। এটি আপনাকে গ্রিডকে (0,0) কেন্দ্রের সর্বাধিক টাইল হিসাবে মানসিকভাবে চিকিত্সা করতে সহায়তা করতে পারে। আপনি টালি (-2, 4) সমাধানে থাকেন, শুধুমাত্র অবস্থানে লক্ষ্য সংখ্যা হতে পারে (-2, 4), (2, 4), (2, -4), অথবা (-2, -4)
মিঃ লালমা

2
@ ক্রাঙ্কার: পুরো সারি / কলাম ফ্লিপগুলি ব্যবহার করা অসম্ভব হয়ে পড়ে। উদাহরণস্বরূপ, উপরের বামে 1 ( A1) নেওয়ার চেষ্টা করুন এবং এটিকে সরান B1। আপনি 1পজিশনে পৌঁছে যেতে পারেন B1, তবে এটি টাইল হতে হবে, টাইল B9নয় A1। যেহেতু আমাদের কেবলমাত্র পুরো সারি / কলামটি ফ্লিপ করার অনুমতি দেওয়া হয়েছে, উপরের বাম দিকের 1 টি কেবল চারটি বহির্মুখী কোণগুলির মধ্যে থাকবে in আমি যদি নিয়মগুলি ভুল করে থাকি তবে দয়া করে আমাকে জানান।
মিঃ ল্লামা

7
অভিনন্দন, গ্যারেথ এটি একটি খুব সু-নকশিত সমস্যা। এছাড়াও, বেশ চ্যালেঞ্জিং।
ডেভিডসি

উত্তর:


7

গল্ফস্ক্রিপ্ট, 300 279 268 টি অক্ষর

n%`{\5,{.9+}%{;.2/\2%},\;''{1${.9/7+7*+}%+:z;}:?~{{.9<77*{\zip\9-}>:Z~{1$!{-1%}*\(\}@%\Z;}/}:E~{:^;{:c;.`{[\E[.^=\8^-=]{.c=\8c-=}%[^c+^8c-+8^-c+16c-^-]{9%49+}%=}+[[]]:K[[8^- 17c-][^9c+]1$]{:s;{[[]s.+.2$+]{1$+}/}%.&}/\,K+0=z?E}5,/}5,/{{+9%)}+9,%''*}9,%={z:u;}*}+1024,/u

নোট করুন যে এই কোডটি অত্যন্ত ধীর (ভারী কোড-ব্লক ম্যানিপুলেশনের কারণেও) এবং বেশ কয়েক মিনিট চলতে পারে। কোডটি প্রচুর ভেরিয়েবল এবং স্পষ্ট লুপ সহ অত্যন্ত আন-গল্ফস্ক্রিপ্ট-ইশ।

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

উপরোক্ত ধাঁধা জন্য উত্তর:

1A2C4D9G9G9G9G1C1C1C1C9F9F9F9F1D1D1D1D2A2A2A2A8H8H8H8H2B2B2B2B2C2C8F8F2D2D2D2D3A3A7I7I3B3B7H7H7G7G7G7G3D3D7F7F6I6I6I6I4A4A4A4A6H6H6H6H6G6G4C4C4C4C6F6F4D4D

1AB39I9I1A1A9I9I1B1B9F9F8I8I8I8I2B2B8H8H8G8G8G8G2D2D2D2D3A3A3A3A7H7H7H7H3C3C3C3C3D3D7F7F6I6I4A4A6I6I4B4B4B4B6G6G4C4C4C4C6F6F6F6F4D4D

1A34D9I9I9I9I1A1A1A1A1B1B1B1B9G9G1C1C1C1C9F9F9F9F1D1D9F9F8I8I2A2A2A2A8H8H8H8H2C2C2C2C8F8F2D2D8F8F7I7I7I7I3A3A3B3B7G7G7G7G3C3C3C3C6I6I6I6I6H6H6H6H4B4B4B4B6G6G6G6G4C4C6G6G6F6F4D4D6F6F

ঠিক আছে, এটিকে মারধর করা খুব কঠিন পরিশ্রম হতে চলেছে ...
গ্যারেথ

দেখে মনে হচ্ছে আমি ভুল ছিলাম ...
গ্যারেথ

@ গ্যারেথ আমি জানতাম এটি একটি চ্যালেঞ্জ, যা গল্ফস্ক্রিপ্টের সাথে যেমন গণিতের বিরুদ্ধে কঠিন।
হাওয়ার্ড

1
@ হাওয়ার্ড - আপনি কোন পন্থাটি ব্যবহার করেছেন? আপনি উল্লেখ করেছেন 'চেষ্টা ও পরীক্ষা সংস্করণ' কী?
সার্জিজেস

24

গণিত 582 575 503 464 282

গল্ফস্ক্রিপ্টারের সাথে লড়াই করার জন্য আমাকে ভারী আর্টিলারি ব্যবহার করতে হবে!

i = "986553229
264564891
759176443
643982153
567891234
526917874
685328912
891732537
117644378";

a=Array;h@M_:=Join@@a[9(M〚##〛/. 9->9⌈2Random[]⌉)+Abs[{##}-5]&,n={9,9}];
For[i_~t~j_:=i{#2,10-#2}+j#-9&~a~{9,4},!ListQ[e=GroupElementToWord[
PermutationGroup[Cycles/@Join[1~t~9,9~t~1]],
h[ToCharacterCode@StringSplit@i-48]~FindPermutation~h@a[Mod[8+##,9,1]&,n]]],];
e~IntegerString~36<>""

আউটপুট:

g69g69g8g8g7g7gd96d96d8d8d7d7dh6h64a6a46d6d4g4g6b6b7h7h7c7c2a8a27b7bd8db8b7f7fg8g82c2c94a4a3a3aigfdc91

এখানে PermutationGroup[...]সম্ভাব্য ফ্লিপ সেট আপ করে এবং সমস্যার GroupElementToWord[...]সমাধান করে (প্রায় 0.2সেকেন্ড)। প্রধান সমস্যাটি হ'ল 9প্রাথমিক এবং চূড়ান্ত গ্রিডের অবস্থানের মধ্যে চিঠিপত্র সনাক্ত করা কঠিন । গল্ফ করার জন্য আমি এলোমেলোভাবে এটি করি (এটি বেশ কয়েক সেকেন্ড সময় নেয়)। কিছু সতর্কতা রয়েছে তবে সেগুলি এড়িয়ে যেতে পারে।

গ্রিড পরীক্ষা করার জন্য অন্যান্য:

g69g69g8g8g7g7gh89h89h7h7h6h6hf6f6g6g64f4f4h4hg7g73g3g2a8a28d8db8b83d3dg8g82c2c9a3a643a3a2g9f9d9c9ga
h89h89h7h7h6h6h6h6h6f6f6g6g6d6d3a7a37g7g7h7h3c3c2a8a27b7b8d8d2f2f8b8b3f3f2b2ba2a764a8aih9g9c9gb1i

এটি সম্পূর্ণরূপে উদাহরণগুলি পুনরুত্পাদন করে:

1
i
2i

পূর্ববর্তী সমাধান (464)

কোনও চালাক অন্তর্নির্মিত ফাংশন ছাড়াই এবং রানটাইম 4 এমএস সহ:

M=ToCharacterCode@StringSplit@i-48;
S="";s=Signature;H=(S=S<>{#,#2+9}~IntegerString~36)&;
A=(m=M〚##〛)-9Mod[m+##,2]&[s@{2#3,5}#,2#2#3~Mod~2-#2]&~Array~{4,4,4};
u=s/@Join@@A;
H@@({k,l}=#&@@@#~Position~1&/@{v=u〚13;;〛;{h=#2u〚2〛,-#u〚5〛,-#u〚9〛}&@@v,v〚4〛=u〚4〛h;v});
A〚k〛=A〚k,;;,{2,1,3,4}〛;A〚;;,l〛=A〚;;,l,{3,2,1,4}〛;
MapIndexed[4#≠#4&&H@@@If[#2<3,#0[#3,#,#2,#4];k,#0[#,#3,#4,#2];10-k]&@@
If[s@#<0,#〚{1,3,2,4}〛,#]&@Ordering[k={#2,#2};#]&,A,{2}];
M〚5,1〛<5&&5~H~{};M〚1,5〛<5&&{}~H~5;S

এখানে সমস্ত নতুন লাইন প্রয়োজন হয় না।

আউটপুট:

3b9i9i1a1a1a1a9i9i1a1a9h9h1b1b1b1b9h9h9g9g1c1c9g9g9f9f1d1d9f9f8h8h2b2b8f8f8f8f7i7i7h7h3b3b3b3b7h7h3b3b7h7h7g7g3c3c7g7g3c3c7f7f6i6i4a4a6h6h4b4b4b4b6g6g4c4c6g6g4c4c6f6f4d4d4d4d6f6f4d4d6f6f4d4d

অন্যান্য দুটি পরীক্ষা গ্রিড:

13ab9i9i1a1a9i9i9h9h1b1b1b1b9h9h9f9f8i8i8i8i8h8h2b2b2b2b8h8h8h8h8g8g8g8g8f8f2d2d2d2d8f8f2d2d7i7i3a3a3a3a7i7i7h7h3b3b7h7h3b3b7g7g3c3c3c3c7g7g3c3c7f7f3d3d3d3d7f7f7f7f6i6i4a4a6i6i6h6h4b4b4b4b6h6h4b4b6g6g4c4c4c4c6f6f4d4d4d4d6f6f4d4d6f6f
2bc9i9i1a1a9i9i9g9g1c1c9g9g1c1c9f9f1d1d1d1d8i8i8i8i8h8h2b2b2b2b8f8f2d2d7i7i7h7h3b3b3b3b7h7h3b3b7g7g3c3c7f7f3d3d3d3d7f7f3d3d6i6i4a4a4a4a6h6h4b4b6g6g6g6g6f6f4d4d

ভিজুয়ালাইজেশান:

anim = Reap[Fold[Function[{m, i}, 
 If[i > 9, (Sow@Grid[#, Background -> {i - 9 -> Pink, None}] & /@ {m, #}; #) &@
   Transpose@MapAt[Reverse, Transpose@m, i - 9], (Sow@Grid[#, 
         Background -> {None, i -> Pink}] & /@ {m, #}; #) &@
   MapAt[Reverse, m, i]]], M, IntegerDigits[FromDigits[S, 36], 36]]];

ListAnimate[Join[{#, #} &@Grid@M, anim[[2, 1]], {#, #} &@Grid@anim[[1]]], 5]

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

ইনপুট স্ট্রিং iএলোমেলোভাবে উত্পন্ন করা যেতে পারে

M = Array[Mod[8 + ##, 9, 1] &, {9, 9}];
(M[[#]] = Reverse@M[[#]]; M[[All, #2]] = Reverse@M[[All, #2]];) & @@@
   RandomInteger[{1, 9}, {10000, 2}];
i = ToString /@ # <> "\n" & /@ M <> ""

সংক্ষিপ্ত আলোচনা

  • ফ্লিপগুলি কেবলমাত্র এই উপাদানগুলি ("চতুর্ভুজ") বিনিময় করতে পারে:

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

  • প্রাথমিক এবং চূড়ান্ত ক্রমের একই স্বাক্ষর থাকলেই অন্যান্য উপাদানগুলি থেকে এই উপাদানগুলিকে আলাদাভাবে আদান প্রদান করা সম্ভব।

  • এই চারটি উপাদানের ফ্লিপগুলি 4 ডিগ্রির বিকল্প গ্রুপ গঠন করে (= টিটারহেড্রালের ঘূর্ণনের গ্রুপ)। এই গোষ্ঠীর প্রতিটি উপাদান 2 উত্পাদনকারী উপাদানগুলির সংমিশ্রণ। সুতরাং আমরা যদি প্রাথমিক এবং চূড়ান্ত অবস্থানটি জানি তবে আমরা একটি সাধারণ ফ্লপের সংমিশ্রণ হিসাবে সম্পর্কিত রূপান্তরটি পচে যেতে পারি।

বিস্তারিত

ক্রীড়াবিদ জন্য আমি অনুগ্রহ শেষ হওয়ার আগে বিশদ পোস্ট!

M=ToCharacterCode@StringSplit@i-48;

স্ট্রিংকে iম্যাট্রিক্সে রূপান্তর করুন M

S="";s=Signature;H=(S=S<>{#,#2+9}~IntegerString~36)&;

আমরা চরগুলি সংযোজন করব S। এখন এটি খালি স্ট্রিং। H[i,j]অক্ষর i( 1,2,3,...,9) এবং অক্ষর যুক্ত করবে j( a,b,c,...,iবেস -36)।

A=(m=M〚##〛)-9Mod[m+##,2]&[s@{2#3,5}#,2#2#3~Mod~2-#2]&~Array~{4,4,4};

আমি উপাদান হিসাবে রূপান্তর

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

নিম্নলিখিত ফর্মটি লক্ষ্য ম্যাট্রিক্স প্রাপ্ত

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

তারপরে আমার অ্যালগরিদমে দুটি প্রধান পদক্ষেপ রয়েছে

  1. খুঁজুন (যেমন স্বাক্ষর লক্ষ্য ম্যাট্রিক্স হিসেবে স্বাক্ষর প্রাপ্ত ফ্লিপ {-7,-1,1,7}হয় 1এবং স্বাক্ষর {-6,2,-2,6}হয় -1):

    u=s/@Join@@A;
    H@@({k,l}=#&@@@#~Position~1&/@{v=u〚13;;〛;{h=#2u〚2〛,-#u〚5〛,-#u〚9〛}&@@v,v〚4〛=u〚4〛h;v});
    A〚k〛=A〚k,;;,{2,1,3,4}〛;A〚;;,l〛=A〚;;,l,{3,2,1,4}〛;
    
  2. সঠিক ক্রম পেতে প্রতিটি "চতুর্দিকে" ঘোরান:

    MapIndexed[4#≠#4&&H@@@If[#2<3,#0[#3,#,#2,#4];k,#0[#,#3,#4,#2];10-k]&@@
    If[s@#<0,#〚{1,3,2,4}〛,#]&@Ordering[k={#2,#2};#]&,A,{2}];
    

    এটি অ্যালগোরিদমের সর্বাধিক অনিয়ন্ত্রিত অংশ। উদাহরণ হিসেবে বলা যায়, রূপান্তর 1b1bরূপান্তর করবে {-7,-1,1,7}করার {-1,1,-7,7}। রূপান্তর 9h9hরূপান্তর করবে {-7,-1,1,7}করার {-7,7,-1,1}। সুতরাং আমরা দুটি মানচিত্র আছে

    {1,2,3,4} -> {2,3,1,4}
    {1,2,3,4} -> {1,4,2,3}
    

    এবং আমরা একটি অবাধ ক্রম রূপান্তর করতে চান {x,y,z,w}করতে {1,2,3,4}। সহজ পদ্ধতিটি হল (এলোমেলো অনুসন্ধান ব্যতীত)

    repeat   
    {x, y, z, w} -> If[z < 3, {y, z, x, w}, {x, w, y, z}]
    until {1,2,3,4}
    

    আমি এটি প্রমাণ করতে পারি না, কিন্তু এটি কার্যকর!

শেষ পদক্ষেপ হয়

M〚5,1〛<5&&5~H~{};M〚1,5〛<5&&{}~H~5;S

এটি কেন্দ্রের সারি এবং কেন্দ্রের কলামের তুচ্ছ ফ্লিপগুলি সম্পাদন করে ফলাফলটি ফিরিয়ে দেয়।


@ গ্যারেথ আমি কি আউটপুটে ছোট অক্ষর ব্যবহার করতে পারি? এটি আমার বেশ কয়েকটি চরিত্রকে বাঁচায়।
ybeltukov

হ্যাঁ, আমি আউটপুটে লোয়ার-কেস অক্ষর গ্রহণ করব (আমি এটি নোট করার জন্য প্রশ্নটি পরিবর্তন করব)। আমার কাছে ম্যাথামেটিকা ​​নেই তাই অন্য কিছু ম্যাথমেটিকার ব্যবহারকারী নিশ্চিত করতে পেরেছেন যে কোডটি আসলে আউটপুট তৈরি করে? আমি তিনটি পরীক্ষার সমাধানকে বৈধতা দিয়েছি এবং সেগুলি সব সঠিক, সুতরাং +1। সুন্দর কাজ!
গ্যারেথ

শুধু কৌতূহলী - আপনার পদ্ধতির একটি পারফরম্যান্স কী? আপনি হাজার হাজার ফ্লিপ দ্বারা উত্পাদিত ইনপুটগুলিতে পরীক্ষা করেছিলেন?
সার্জিজ

@ সার্জেইস হ্যাঁ, এটি প্রায় 50 এমএস লাগে :)
ইবেলটুকভ

@ গ্যারেথ আমি আমার প্রোগ্রামটি আবার লিখি, আপনি কি ফলাফলগুলি পরীক্ষা করতে পারবেন? আমার পরীক্ষাগুলি প্রমাণ করেছে যে সবকিছু ঠিক আছে।
ybeltukov

7

জে 487 438

q=:3 :'(>:9|+/~i.9)=/&((,{;/(,.8&-)y){])g'
l=:2 :0
:
o=:o,(m+x){a.
x&(|.@{`[`]})&.v y
)
r=:49 l]
c=:97 l|:
w=:2 :'g=:4 v^:(4=(<m){g)g'
p=:_1=C.!.2@,@:I.@q
t=:2 :'for_i.>:i.3 do.g=:i v^:(p m*i)g end.'
z=:2 :0
'i j I J'=.y,8-y
g=:".'(',(,' ',.,(I.m{q y){,;._1 n),'])^:2 g'
)
d=:3 :0
g=:9 9$".,_ list,' ',.y
o=:''
0 4 w c
4 0 w r
0 1 t c
g=:0 c^:(-.(p 1 0)=p 1 2)g
1 0 t r
for_k.>,{;~i.4 do.0 z';;jcir;irjc;Irjc'k
3 z';;IrJc;JcIr;'k end.o
)

d একটি ক্রিয়া যা নির্দিষ্ট বিন্যাসে গ্রিড স্ট্রিং নেয় এবং নির্দিষ্ট বিন্যাসে একটি সমাধান স্ট্রিং প্রদান করে।

উদাহরণ ব্যবহার:

   d '987654321',LF,'234567891',LF,'345678912',LF,'456789123',LF,'567891234',LF,'678912345',LF,'789123456',LF,'891234567',LF,'912345678'
bcda2341a1a1b1b1c1c1d1da2a2b2b2c2c2d2d2a3a3b3b3c3c3d3d3a4a4b4b4c4c4d4d4

এখন নিউলাইন টাইপ হয় গ্রহণ করে।

পরীক্ষার গ্রিডগুলির সমাধান:

b3a1a11b1bc9c99g9gd9d99f9fb8b8f8f87i7i7h7hc3c3g7g77f7fa6a64b4bh6h6c4c4g6g6d6d6f6f6
cd24a9a91c1c1d1d9f9fa2a2i8i88h8hc2c2g8g82d2d3b3bh7h7d3d37f7fa6a64b4bg6g64d4d6f6f
bc2a9a99i9ic1c1g9g91d1df9f9i8i8b2b2h8h82c2cd8d87i7ib3b3c7c7d3d34a4ai6i6b6b6g6g6d6d6

আমি জেতে মোটামুটি নতুন; এটি সম্ভবত আরও গল্ফ করা যেতে পারে।


অবৈধ / অযোগ্য সমাধানযোগ্য গ্রিডগুলির জন্য চেক করাতে 123 অক্ষরের জরিমানা রয়েছে। আমি মনে করি না তারিখের অন্যান্য উত্তরগুলিতে এই জাতীয় ত্রুটি পরীক্ষা করা আছে।

এটি করার জন্য, এর প্রথম লাইনটি পরিবর্তন করুন d:

if.-.+./89 90=#y do.0 return.end.if.-.*./(/:~y)=/:~(#y)$'123456789',LF do.0 return.end.g=:9 9$".,_ list,' ',.y

এবং এটি শেষ লাইন:

3 z';;IrJc;JcIr;'k end.if.*./,g=>:9|+/~i.9 do.o return.end.0

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


অভিনন্দন, আপনি সবে নেতৃত্বে গেছেন। :-)
গ্যারেথ

দেখে মনে হচ্ছে আপনার ইনপুটটি নিয়ম অনুসারে একটি স্ট্রিং নয় বা আমি কিছু মিস করছি?
সার্জিয়েস

@ সার্জিস: আপনি বিভ্রান্ত হতে পারেন যতদূর আমি জানি, জে স্ট্রিং লিটারে পালিয়ে যাওয়ার কোনও উপায় নেই (যেমন নিউলাইন হিসাবে)। জেতে 'এ', এলএফ, 'বি' নির্মাণটি ভাষাগুলিতে "a" + "\ n" + "বি" এর মতো, যেখানে + স্ট্রিংগুলি যুক্ত করতে কাজ করে।
অ্যালিডেভি

ঠিক আছে, এটি ধন্যবাদ চেয়ে মনে হয়।
সার্জিজে

আমি কেবল ১৯62২ এর এপিএল বই থেকে ফাইলগুলির বিভাগটি পড়ছিলাম এবং আমার মনে হয় @ অ্যালয়েডএনভি সঠিক। প্রশ্নের ফরমেটে কোনও ফাইল থেকে পড়লে এইভাবে প্রোগ্রামটিতে ডেটা উপস্থিত হবে। LFগুলি প্রতিনিধিত্ব পার্টিশন অনুক্রমিক ফাইলের।
লুসার droog

5

সি শার্প 540 399

ঠিক আছে, ত্যাগী পারফরম্যান্স (এখন এটি 30 সেকেন্ড পর্যন্ত সময় নেয়), গতিশীল ভেরিয়েবলগুলি প্রবর্তন করেছে, সমাধানের সামান্য পরিবর্তিত যুক্তি। এবং হ্যাঁ, এখন এটি লাইন ব্রেকগুলির সাথে একটি স্ট্রিং হিসাবে ইনপুট প্রত্যাশা করছে (নিয়মে প্রয়োজনীয় হিসাবে)।

অবশ্যই সি # এর পূর্বনির্ধারিত গণিত ফাংশন নেই, সুতরাং ম্যাথামেটিকাদের সাথে লড়াই করা শক্ত হবে। তবুও, এটি একটি দুর্দান্ত চ্যালেঞ্জ ছিল, লেখককে ধন্যবাদ!

string S(string _){for(i=0,e=1>0;e;){
for(h=v=j=0;j<89;)m[j/10,j%10+9]=_[j++]-49;a="";
for(j=i++;j>0;v++,j/=2)if(j%2>0)F(v);
for(;h<9&(h<4|!e);h+=j/36,j%=36)if((e=m[h,g=j++%9+9]!=(t=(h+g)%9))|m[v=8-h,g]==t){F(v);F(g);F(v);F(g);}
}return a;}void F(int z){for(f=z<9;++l<9;)m[0,l]=m[f?z:l,f?9+l:z];for(;l-->0;)m[f?z:l,f?9+l:z]=m[0,8-l];a+=(char)(z+=f?49:56);}
dynamic h,v,i,j,e,t,l=-1,g,a,m=new int[9,19],f;

পরীক্ষা গ্রিড:

3B9A9A9B9B9C9C9D9D9F9F9G9G9H9H9I9I9B9B9C9C9D9D9F9F9G9G9H9H9C9C9D9D9C9C9D9D8B8B8F8F8H8H8B8B8F8F8B8B8H8H7B7B7C7C7F7F7H7H7I7I7H7H6A6A6B6B6C6C6D6D6F6F6H6H6A6A6B6B6D6D6F6F6D6D6D6D6F6F5A5A5B5B5C5C5D5D5E5E5F5F5G5G5H5H5I5I5A5A5B5B5C5C5D5D5E5E5F5F5G5G5H5H5I5I5A5A5B5B5C5C5D5D5E5E5F5F5G5G5H5H5I5I5A5A5B5B5C5C5D5D5E5E5F5F5G5G5H5H5I5I

13AB9A9A9B9B9F9F9H9H9A9A9B9B9H9H9I9I8B8B8D8D8F8F8G8G8H8H8I8I8B8B8G8G8H8H8I8I8H8H7A7A7B7B7C7C7D7D7F7F7G7G7I7I7A7A7D7D7F7F7I7I7F7F6A6A6B6B6C6C6D6D6F6F6G6G6H6H6I6I6A6A6C6C6F6F6I6I6A6A6A6A5A5A5B5B5C5C5D5D5E5E5F5F5G5G5H5H5I5I5A5A5B5B5C5C5D5D5E5E5F5F5G5G5H5H5I5I5A5A5B5B5C5C5D5D5E5E5F5F5G5G5H5H5I5I5A5A5B5B5C5C5D5D5E5E5F5F5G5G5H5H5I5I

2BC9A9A9C9C9D9D9F9F9A9A9D9D9I9I8B8B8D8D8H8H8I8I8B8B8D8D8I8I7B7B7C7C7D7D7F7F7G7G7H7H7I7I7C7C7C7C7G7G6A6A6B6B6D6D6F6F6G6G6I6I6A6A6B6B6D6D6G6G6D6D6F6F5A5A5B5B5C5C5D5D5E5E5F5F5G5G5H5H5I5I5A5A5B5B5C5C5D5D5E5E5F5F5G5G5H5H5I5I5A5A5B5B5C5C5D5D5E5E5F5F5G5G5H5H5I5I5A5A5B5B5C5C5D5D5E5E5F5F5G5G5H5H5I5I

পুরানো সমাধান (540)

যে কোনও ইনপুট (কয়েক হাজার এলোমেলোভাবে উত্পাদিত গ্রিডে পরীক্ষা করা) এক সেকেন্ডেরও কম সময়ে কাজ করে। আউটপুট স্ট্রিংয়ের সর্বাধিক দৈর্ঘ্য 165 (প্রাথমিকভাবে কোনও গ্রিড 82 টির বেশি ফ্লপগুলিতে সমাধান করা হয়নি, তবে গল্ফিংয়ের সময় আমি এটি উত্সর্গ করেছি)।

string S(string[]_){for(i=0;i<1<<18;){
for(j=0;j<81;)m[j/9+49,j%9+65]=_[j/9][j++%9]-49;a="";char g,h='1',v='9',b,x=h,y;
for(j=i;j>0;x=x==v?'A':++x,j/=2)if(j%2>0)F(x);j=i+1;
for(i+=1<<19;h<58;h++,v--)for(g='A',b='I';g<74;g++,b--){
t=(h+g-6)%9;e=m[h,g];q=m[v,g];i=h>52&t!=e?j:i;
if(e!=t|q==t){x=q==t?v:g;y=q==t?g:v;
if(m[h,b]==t){x=b;y=h;}
F(x);F(y);F(x);F(y);}}}return a;}
void F(char z){var f=z<65;for(l=0;l<4;l++){n=m[d=f?z:49+l,s=f?65+l:z];m[d,s]=m[o=f?z:57-l,u=f?73-l:z];m[o,u]=n;}a+=z;}
int i,j,q,e,t,l,s,d,n,u,o;int[,]m=new int[99,99];string a;

উদাহরণস্বরূপ উত্তর 1:

15A5A5B5B5C5C5D5DE5E55F5F5G5G5H5H5I5I

উদাহরণস্বরূপ উত্তর 2:

19AI1I1H1H1G1G1F1F19F9F9G9G9H9H9I9I8A8AI8I87A7AI7I76A6AI6I65A5A5B5B5C5C5D
5DE5E55F5F5G5G5H5H5I5I

উদাহরণস্বরূপ উত্তর 3:

129AI1I1H1H1G1G1F1F19F9F9G9G9H9H9I9I8A8AI8I87A7AI7I76A6AI6I65A5A5B5B5C5C5
D5DE5E55F5F5G5G5H5H5I5I

পরীক্ষার স্কোয়ারের জন্য উত্তর:

346B9A9AH1H1C9C9D9D99F9F9G9GH9H99I9IB8B8F8F87B7B7C7C7F7FH7H77I7I6A6A6B6BC6C66D6DG6G6H6H66I6I5A5A5B5B5C5C5D5DE5E55F5F5G5G5H5H5I5I

1346ABA9A9H1H19F9FH9H99I9IH2H28D8D8F8FG8G8I8I8I3I37B7B7C7CF3F37G7GI7I7H4H4D6D66F6F5A5A5B5B5C5C5D5DE5E55F5F5G5G5H5H5I5I

2BCA9A99C9CF1F19F9F9I9IH2H2D8D88H8HI8I87B7BC7C77D7D7F7F7H7H7I7II4I4B6B6D6D6G6G66I6I5A5A5B5B5C5C5D5DE5E55F5F5G5G5H5H5I5I

আমি এখনই আমার ম্যাকের জন্য মনো ডাউনলোড করছি যাতে আমি নিজেই প্রোগ্রামটি পরীক্ষা করতে পারি, তবে ইতিমধ্যে আমার কাছে একটি বৈধতা রয়েছে যা একটি প্রদত্ত গ্রিডে প্রদত্ত সমাধান চালায় এবং আমাকে বলে যে সমাধানটি সেই গ্রিডের জন্য একটি বৈধ সমাধান কিনা - এবং এটি আমাকে যে তিনটি উদাহরণ সমাধান আপনি দিয়েছেন তা বৈধ নয় telling আমি এখনই কেন তদন্ত করছি।
গ্যারেথ

আহা! আমি এখানে কি ঘটেছে তা বুঝতে পেরেছি! আপনার প্রদত্ত উত্তরগুলি 3 টি উদাহরণের উত্তর বলে মনে হচ্ছে এবং তিনটি পরীক্ষার গ্রিড নয় (যা প্রশ্নে নীচে রয়েছে)। নিশ্চয় তারা ঐ গ্রিডের সঠিক সমাধান হয়, যদিও তারা বেশ একটু চেয়ে দীর্ঘতর হয় 1, Aএবং 2Iযা সহজ সমাধান আছে - কিন্তু যে আসলে ব্যাপার যেহেতু আমি গ্রিড সমাধান দৈর্ঘ্যের উপর বিচার করছি না না :-) আপনি সম্পাদনা করতে পারে এবং 3 টি পরীক্ষার গ্রিডের উত্তর দিন (আমি এখনই আমার ম্যাকের সাথে এটি চালাতে পারি কিনা তা দেখতে যাচ্ছি) আমি আপনাকে আপনার +1 দিতে পারি।
গ্যারেথ

@ গ্যারেথ - ওফ, পরীক্ষার স্কোয়ারের জন্য আমি উত্তরগুলি মিস করেছি, তা উল্লেখ করার জন্য ধন্যবাদ। আমি তাদের এখন আমার উত্তরে যুক্ত করেছি।
সার্জিজেস

দুর্দান্ত, তার জন্য ধন্যবাদ। তারা সব ঠিক আছে জরিমানা। জামারিন কোনও কারণে আমার ম্যাকের সাথে চলবে না, তাই কয়েক ঘন্টার মধ্যে আমাকে প্রোগ্রামটি পরীক্ষা করতে হবে।
গ্যারেথ

@ গ্যারেথ - আসলে সেই কোডটিতে সি # এর জন্য সুনির্দিষ্ট কিছু নেই, কেউ সম্ভবত খুব বেশি ব্যথা ছাড়াই এটিকে জাভা বা এমনকি সি ++ তে রূপান্তর করতে পারে এবং এর বাইরে কিছু চরিত্র গল্ফ :) নির্দ্বিধায় এটিকে গল্ফস্ক্রিপ্ট বা আরও কিছুতে রূপান্তর করতে পারে না feel সংক্ষিপ্ত - এটি দ্বিগুণ বা আরও সংক্ষিপ্ত
আকারে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.