चेकर्स: किंग मी?


14

चुनौती:

एक बिसात को देखते हुए, यदि संभव हो तो एक लाल टुकड़े को राजा को ले जाने के लिए सबसे छोटी मात्रा में चालें (यह मानते हुए कि काली बिल्कुल भी नहीं चलती है) का उत्पादन करेगी।

नियम :

रेड का पक्ष हमेशा नीचे होगा, हालांकि उनके टुकड़े किसी भी पंक्ति में शुरू हो सकते हैं (यहां तक ​​कि राजा की पंक्ति उन्हें प्राप्त करने की आवश्यकता है)। काले टुकड़े स्थिर होते हैं , जिसका अर्थ है कि वे लाल रंग के आंदोलनों के बीच नहीं चलते हैं, लेकिन पकड़े जाने पर उन्हें बोर्ड से हटा दिया जाता है। ध्यान दें कि टुकड़े बोर्ड पर किसी भी स्थान पर शुरू हो सकते हैं, जिसमें एक दूसरे के ठीक बगल में भी शामिल है। ऐसा नहीं है कि सामान्य चेकर्स कैसे खेले जाते हैं, लेकिन आपका प्रोग्राम इनको हल करने में सक्षम होना चाहिए। (इनपुट 5 देखें) हालांकि, चेकर के टुकड़ों को केवल तिरछे चलना चाहिए (इनपुट 3 देखें)। यदि पहले कैप्चर श्रृंखला में आगे है (इनपुट 7 देखें) बैकवर्ड-कैप्चरिंग की अनुमति है।

इनपुट:

एक 8x8 चेकबोर्ड, जिसमें बोर्ड स्पेस निम्न वर्णों के रूप में परिभाषित हैं (जब तक वे संगत हैं तब तक विकल्प का उपयोग करने के लिए स्वतंत्र महसूस करें):

। - खाली

आर - लाल टुकड़ा (ओं)

बी - काला टुकड़ा (ओं)

आउटपुट:

चाल की सबसे छोटी संख्या एक लाल टुकड़े को 'किंगेड' होने के लिए बोर्ड की शीर्ष पंक्ति (काली की तरफ) पर राजा की पंक्ति में प्रवेश करके ले जाएगी, 0 यदि कोई चाल की आवश्यकता नहीं है (राजा की पंक्ति पर एक लाल टुकड़ा शुरू हुआ), या एक नकारात्मक संख्या अगर यह एक लाल टुकड़ा राजा को नामुमकिन है (यानी काले कब्जे यह पूरी पहली पंक्ति है)।

इनपुट 1:

. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .

आउटपुट 1:

7

इनपुट 2:

. . . . . . . .
. . . . . . . .
. . . . . B . .
. . . . . . . .
. . . B . . . .
. . . . . . . .
. B . . . . . .
R . . . . . . .

आउटपुट 2:

2

इनपुट 3:

. B . B . B . B
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .

आउटपुट 3:

-1

इनपुट 4:

. . . . . . . R
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .

आउटपुट 4:

0

इनपुट 5:

. . . . . . . .
. . . . . . . .
. . . . . . . .
. B . . B . . .
B . . . . B . .
. B . B . . . .
. . B . . B . .
. . . R R . . .

आउटपुट 5:

4

इनपुट 6:

. . . . . . . .
. . . . . . . .
. B . . . . . .
. . B . . . . .
. B . B . . . .
. . . . R . . .
. . . B . . . .
. . . . R . . .

आउटपुट 6:

2

इनपुट 7:

. . . . . . . .
. . . . . . . .
. . B . . . . .
. . . . . . . .
. . B . . . . .
. B . B . B . .
. . . . B . . .
. . . . . R . R

आउटपुट 7:

4

स्कोरिंग:

यह , इसलिए बाइट्स जीत में सबसे छोटा कोड है।


1
क्या दूसरा टेस्ट केस 2 नहीं होना चाहिए, क्योंकि आप डबल / ट्रिपल जंप कर सकते हैं?
जेम्स

क्या इनपुट के रूप में पूर्णांकों के सरणियों का एक राज्य सरणी ठीक है?
जोनाथन एलन

1
मैंने एक और टेस्टकेस जोड़ा जो कठिन साबित होना चाहिए। इसमें कई कूद, कई टुकड़े शामिल हैं और सबसे अच्छा संभव समाधान प्राप्त करने के लिए पीछे की ओर कूदना शामिल है।
orlp

1
@orlp Hm, मैं यह कहने जा रहा था कि किसी भी लाल टुकड़े को पीछे की ओर जाने की अनुमति नहीं है क्योंकि उनमें से कोई भी राजा नहीं है (इसलिए चुनौती का बिंदु), लेकिन ऐसा प्रतीत होता है कि कुछ लोग नियमों के साथ खेलते हैं जहां पीछे की ओर कब्जा करना गैर द्वारा अनुमति है किंग्स के टुकड़े अगर पहले कब्जा आगे थे। मैं इसे नियमों में जोड़ दूंगा क्योंकि मुझे पहले इस बारे में जानकारी नहीं थी।
योडल

1
ooooooooh, आपको केवल एक लाल टुकड़ा चुनने की ज़रूरत नहीं है, वे टीम बना सकते हैं! मैं इसे प्राप्त करता हूं
ग्रेग मार्टिन

जवाबों:


4

जावास्क्रिप्ट (ईएस 6), 354 322 बाइट्स

इनपुट के रूप में एक सरणी लेता है:

  • 0 = खाली वर्ग
  • 1 = लाल टुकड़ा
  • 2 = काला टुकड़ा

यदि कोई समाधान नहीं है, तो अधिकतम संख्या में मूव्स, या 99 लौटाता है।

यह बहुत तेज़ है, लेकिन इसे और अधिक बढ़ाया जा सकता है।

F=(b,n=0,C=-1,i)=>b.map((v,f,X,T,x=f&7,y=f>>3)=>v-1||(y&&n<m?[-9,-7,7,9].map(d=>(N=c=X=-1,r=(d&7)<2,T=(t=f+d)>=0&t<64&&(x||r)&&(x<7||!r)?(!b[t]&d<0)?t:b[t]&1?N:b[t]&2&&(d<0&y>1|d>0&C==f)?(X=t,x>1||r)&&(x<6|!r)&&!b[t+=d]?c=t:N:N:N)+1&&(b[f]=b[X]=0,b[T]=1,F(b,n+!(C==f&c>N),c,1),b[f]=1,b[X]=2,b[T]=0)):m=n<m?n:m),m=i?m:99)|m

var test = [
  [ 0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    1,0,0,0,0,0,0,0
  ],
  [ 0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,2,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,2,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,2,0,0,0,0,0,0,
    1,0,0,0,0,0,0,0
  ],
  [ 0,2,0,2,0,2,0,2,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    1,0,0,0,0,0,0,0
  ],
  [ 0,0,0,0,0,0,0,1,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    1,0,0,0,0,0,0,0
  ],
  [ 0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,2,0,0,2,0,0,0,
    2,0,0,0,0,2,0,0,
    0,2,0,2,0,0,0,0,
    0,0,2,0,0,2,0,0,
    0,0,0,1,1,0,0,0
  ],
  [ 0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,2,0,0,0,0,0,0,
    0,0,2,0,0,0,0,0,
    0,2,0,2,0,0,0,0,
    0,0,0,0,1,0,0,0,
    0,0,0,2,0,0,0,0,
    0,0,0,0,1,0,0,0
  ],
  [ 0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,2,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,0,2,0,0,0,0,0,
    0,2,0,2,0,2,0,0,
    0,0,0,0,2,0,0,0,
    0,0,0,0,0,1,0,1
  ]
];

test.forEach((b, n) => {
  console.log("Test #" + (n + 1) + " : " + F(b));
});


99 शायद ठीक है, मैं एक वास्तविक समाधान की कल्पना नहीं कर सकता हूँ 8x8 बोर्ड पर 99 चालें। अच्छी नौकरी!
योडल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.