এটি কি হারানো বর্গ?


19

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

  • n স্পেস আপ

  • বাম দিকে n ফাঁকা স্থান

  • n স্পেস উপরে এবং বাম দিকে (একটি তির্যক)

যে খেলোয়াড়টি টুকরোটি বোর্ডের উপরের বাম কোণে নিয়ে যায় সে গেমটি জিততে পারে।

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

চিত্রণ

যার প্রত্যেকেই পরের খেলোয়াড়ের জন্য সরাসরি জয়ের পথে।

এটিও অনুসরণ করে যে হারানো স্কোয়ারের এক চলা পথের যে কোনও বর্গক্ষেত্রটি সেই স্কোয়ার থেকে শুরু হওয়া খেলোয়াড়কে জয়ের জন্য বাধ্য করে। এর অর্থ হ'ল যে কোনও বর্গ যা একটি হারানো স্কোয়ার থেকে দূরে সরে যায় না এটি হ্রাসকারী বর্গও।

এটি আমাদের হারানো বর্গের পরিবর্তে ঝরঝরে সংজ্ঞা এনেছে:

একটি হারানো বর্গ এমন একটি বর্গ যা থেকে কোনও সরানো অন্য হারানো স্কোয়ারে পৌঁছতে পারে না এবং (0,0) হারাতে যাওয়া বর্গক্ষেত্র।

কার্য

নির্বিচারে আকারের দাবা বোর্ডে কোনও স্কোয়ারের স্থানাঙ্কগুলি দেওয়া হয় তা নির্ধারণ করে যে এটি কোনও হারানো স্কোয়ার। স্কোয়ার হারাতে এবং অন্যের জন্য দুটি মান আউটপুট দেয়।

এটি তাই কম বাইট ভাল হওয়ার সাথে উত্তরগুলি বাইটে স্কোর করা হবে।

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

এখানে নিয়মিত 8 বাই 8 দাবা বোর্ডের সমস্ত হারানো স্কোয়ারগুলি রয়েছে (0 দিয়ে চিহ্নিত)।

0 1 1 1 1 1 1 1
1 1 0 1 1 1 1 1
1 0 1 1 1 1 1 1
1 1 1 1 1 0 1 1
1 1 1 1 1 1 1 0
1 1 1 0 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 0 1 1 1

এখানে একটি 100 বাই 100 বোর্ডের একটি চিত্র রয়েছে যা হারায় এমন স্কোয়ারগুলিকে কালো হিসাবে চিহ্নিত করা হয়েছে (প্রতিটি বর্গ 2 পিক্সেল 2 পিক্সেল দ্বারা 2)

100 বাই 100 বোর্ড


2
প্যাটার্নটি খুঁজে পাওয়ার জন্য পর্যাপ্ত পরীক্ষার মামলা রয়েছে বলে আমি মনে করি না I কি 10, 7একটি হারানো বর্গক্ষেত্র? হয় 10, 8? কি হবে 15, 11?
ডিজেএমসিএমহেম

1
@ ওয়েট উইজার্ড আপনি কি চিত্রটিকে কিছুটা বড় করতে আপত্তি করেছেন?
এরিক আউটগল্ফার

1
@ ওয়েট উইজার্ড আমার অর্থ বৃহত্তর পিক্সেল ... উদাহরণস্বরূপ 1x1 এর পরিবর্তে 5x5 পিক্সেল, সম্ভবত কিছুটা গ্রিড খুব বেশি কঠিন না হলে (100x100 এর জন্য
বিটিডব্লু

2
এছাড়াও সম্পর্কিত (সর্বোত্তম পদক্ষেপে ফিরে আসুন বা অবস্থানটি হারাচ্ছে এমন সংকেত দিন)।
জাগারব

1
আমি মনে করি ভাসমান পয়েন্টের অপ্রতুলতা এমনকি নির্বিচারে বৃহত্তর পূর্ণসংখ্যার সামর্থ্যের সাথেও পারফরম্যান্সকে বাধা দেয় ...
জোনাথন অ্যালান

উত্তর:


8

পাইথন 3 , 112 50 46 42 বাইট

-4 বাইট জোনাথন অ্যালানকে ধন্যবাদ !

-2 বাইট ধন্যবাদ xnor !

lambda r,c:abs(r-c)*(3+5**.5)//2==max(r,c)

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

উইথফের গেমটিতে শীতল অবস্থানের সূত্রের ভিত্তিতে এবং একটি সুস্পষ্ট সূত্র তৈরি করার জন্য কিছু পরিবর্তন করা। সূত্রটি বের করার জন্য আমি প্রকৃতপক্ষে একটি যথাযথ পদ্ধতি শেষ করার পরে ইনবাউন্ডের ব্যাখ্যা।


আপনি পরিবর্তন করা যায়নি 0<=xকরতে x>0এবং এক বা দুই বাইট সংরক্ষণ করবেন?
জোনাথন ফ্রেচ

@ জোনাথানফ্রেচ এটি অবস্থান অন্তর্ভুক্ত করার জন্য <=বা হয় হতে হবে । >=0, 0
notjagan

আপনি ঠিক বলেছেন, কেবলমাত্র একটি বাইট সংরক্ষণ করা যায়।
জোনাথন ফ্রেচ

1
এর ভিন্ন প্রয়োগের সাথে একটি কম বাইট:lambda r,c:int(abs(r-c)*(5**.5+1)**2/4)==max(r,c)
জোনাথন অ্যালান

1
/2//1হিসাবে একই দেখাচ্ছে //2
xnor

5

জেলি , 8 বাইট

ạ/×ØpḞ⁼Ṃ

এটি অনলাইন চেষ্টা করুন! , বা গ্রিড হিসাবে উপরের বাম 60 60 60 দেখুন।

কিভাবে?

উইথফের খেলায় শীতল অবস্থান হারাতে পজিশন। স্থানাঙ্কগুলি [n,m]যখন কিছু প্রাকৃতিক সংখ্যার জন্য n = floor(kφ) = floor(mφ) - mবা স্বর্ণের অনুপাত ,। প্রাক্তন হোল্ড যখন কম হয় ; পরেরটি যখন কম হয় (উভয়কে ধরে রেখে )।m = floor(kφφ) = ceil(nφ) = n + kkφnmmn0,0

kশর্তটি পূরণ করা হয় এবং এর মধ্যে nএবং এর মধ্যে সম্পূর্ণ পার্থক্য ।mfloor(abs(n-m)φ)=min(n,m)

ạ/×ØpḞ⁼Ṃ - Link: list, c ([n,m])
 /       - reduce c by:
ạ        -   absolute difference = abs(n-m)
   Øp    - golden ratio yield
  ×      - multiply
     Ḟ   - floor
       Ṃ - minimum of c = min(n,m)
      ⁼  - equal?

2

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

f=(x,y,p=5**.5/2+.5)=>x<y?f(y,x):y/p%p<1&(y/p%p-x*p%++p)**2<1e-9

আমি এখন দেখতে পাচ্ছি যে এটি সেরা কৌশল নয়, তবে আমি নিজেই এটি নিয়ে আসতে হয়েছিল কারণ এই পৃষ্ঠাটি লোড করার খুব শীঘ্রই আমি ইন্টারনেট হারিয়েছি। (এই ইন্টারনেট সমস্যাগুলির জন্য না হলে কিছুক্ষণ আগে পোস্ট করতাম ...)

নিখুঁত বিশ্বে, ভাসমান নির্ভুলতা কোনও সমস্যা হবে না এবং আমি 9 বাইট সংরক্ষণ করতে পারি:

f=(x,y,p=5**.5/2+.5)=>x<y?f(y,x):y/p%p<1&y/p%p==x*p%++p

জেএস পাইথনের তুলনা শৃঙ্খলা সমর্থন করলে আরও 6 টি বাইট সংরক্ষণ করা যায়:

f=(x,y,p=5**.5/2+.5)=>x<y?f(y,x):y/p%p==x*p%++p<1

0

পাইথ, 39 বাইট

=SQL?!b0-byytb;q@myd+0.fqyZytZ@Q1)-F_Qh

আমি এটি একটি নামযুক্ত ফাংশন (ইও) দিয়ে লিখেছি এবং গল্ফিংয়ের সাথে অত্যন্ত অলস ছিল। পরে রাতের পরে বেশ কয়েকটি বাইট গল্ফ অফ করার পরিকল্পনা করছেন

অনলাইনে চেষ্টা করে দেখুন, আমার নিজস্ব উত্পন্ন পরীক্ষাগুলি দিয়ে, বিকল্পটি সত্য / মিথ্যা বোঝাতে

ব্যাখ্যা:

দ্রবীভূত ম্যাট্রিক্সের ডায়াগোনগুলির ওইআইএস A005206 এ পুনরাবৃত্তি সংখ্যার ক্রম অনুসারে একটি হারানো বর্গ রয়েছে । থেকে Lমাধ্যমে ;সংজ্ঞায়িত করতে বেশ সহজবোধ্য পালিশ স্বরলিপি হয় y(b)=b-y(y(b-1))

বাকী বাক্যটি অনুসরণ করে

=SQL?!b0-byytb;q@myd+0.fqyZytZ@Q1)-F_Qh    Full program, take stdin as [x, y], output True or False to stdout
=SQ                                        Sort input
   L?!b0-byytb;                            Named lambda as explained above
                    +0.f                   Make sequence of first max(x, y) numbers, starting with 0, 
                        qy y               For which are equal 
                          Z tZ             each element and the previous are equal
                myd                        Map this sequence to the y(index), not just index numbers
             q                             Check if are equal 
              @                  )-F_Q     the x-yth element of sequence (x-y represents which diagonal) 
                                     h(Q)  and the lower of [x,y] (Q is added by the interpreter to fix arity issues

0

ব্যাচ, 204 বাইট

@if %1 lss %2 %0 %2 %1
@if %1==0 exit/b0
@set/au=l=i=0
:g
@set/au+=2+i%%2,l+=1+i%%2
@if %1==%n% if %2==%m% exit/b0
@if %1 leq %n% exit/b1
:l
@set/a"k=3*i^2*i^i,i+=1
@if %k%==0 goto g
@goto l

প্রস্থান কোডের মাধ্যমে ফিরে আসে। ব্যাখ্যা: যেহেতু ব্যাচের কেবলমাত্র পূর্ণসংখ্যার গাণিতিক রয়েছে, আমাকে খাঁটি গণিতের সমাধান করতে হয়েছিল। 0,0এন্ট্রি বাদ দিয়ে , স্কোয়ার স্থানাঙ্ক হারানোর 11জোড়গুলি নিম্নলিখিত নিয়মটি অনুসরণ করে: যদি পরবর্তী- বিনামূল্যে বাইনারি সংখ্যা হয় তবে 3,2অন্যথায় যুক্ত করুন 2,1। একটি 11বিনামূল্যে বাইনারি সংখ্যার জন্য একটি পরীক্ষা হল যদি এটি বহন করে যখন এটি বহন করে না থাকে তবে এটি অন্য কথায় বলা যায় (i*2)+i==(i*2)^i। এখানে প্রথম কয়েকটি 11বিনামূল্যে-বাইনারি নম্বর এবং তাদের স্থানাঙ্ক রয়েছে:

   0     2,1  + 3,2 =  5,3
   1     5,3  + 2,1 =  7,4
  10     7,4  + 3,2 = 10,6
 100    10,6  + 3,2 = 13,8
 101    13,8  + 2,1 = 15,9
1000    15,9  + 3,2 = 18,11
1001    18,11 + 2,1 = 20,12
1010    20,12 + 3,2 = 23,14

ইত্যাদি। রহস্যজনকভাবে এই নিয়মটি অনুক্রমের পরিপূরক হিসাবে যথেষ্ট। এরপরে এটি বৃহত্তর স্থানাঙ্কে না পৌঁছানো পর্যন্ত ক্রমটি গণনা করা অবধি থাকবে, যেখানে আমরা স্কোয়ারটি হারাচ্ছে কিনা তা নির্ধারণ করতে পারি।

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