तीन-आयामी शतरंज


26

किसी के चौंकाने वाले फैसले का बचाव करने के लिए, लोग अक्सर कहते हैं कि वह व्यक्ति हर किसी के सिर पर जा रहा है और "3-आयामी शतरंज" खेल रहा है। अब यह 3-आयामी शतरंज खेलने का मौका है!

नियम

3 डी शतरंज के कई संस्करण हैं , लेकिन इस चुनौती के लिए मैंने अपना खुद का बनाया है। मेरा संस्करण नियमित शतरंज की तरह है सिवाय इसके कि टुकड़े वर्गों के बजाय क्यूब्स के अंदर हैं, और अब आंदोलन का एक अतिरिक्त आयाम है। इस चुनौती को सरल बनाने के लिए कोई पंजे नहीं हैं और न ही कोई कास्टिंग है

टुकड़ा आंदोलन

(कम्पास दिशाएँ उस गति को संदर्भित करती हैं जो एक मानक शतरंजबोर्ड पर होती है, ऊपर और नीचे 3D शतरंज बोर्ड पर लंबवत चलने का संदर्भ देती है)।

  • राजा - के पास 26 वर्ग हैं जो किसी दिए गए मोड़ पर जा सकते हैं: एन, एनई, ई, एसई, एस, एसडब्ल्यू, डब्ल्यू, एनडब्ल्यू; कम्पास दिशाओं में से एक के रूप में अच्छी तरह से ऊपर, नीचे, और ऊपर / नीचे +।
  • रानी - राजा के रूप में एक ही दिशा में आगे बढ़ सकती है, लेकिन जहां तक ​​वह उन दिशाओं में चाहती है।
  • Rook - 6 दिशाओं में आगे बढ़ सकता है: N, E, S, W, Up, और Down,
  • बिशप - यात्रा की 8 त्रिकोणीय दिशाएं हैं: NE + ऊपर / नीचे, SE + ऊपर / नीचे, SW + ऊपर / नीचे, NW + ऊपर / नीचे
  • नाइट - 2 स्थानों को एक अक्ष पर ले जाता है, फिर दूसरे पर 1 स्थान। नियमित शतरंज की तरह, नाइट एकमात्र ऐसा टुकड़ा है जो अन्य टुकड़ों पर आशा कर सकता है।

टुकड़ा परीक्षक

इस स्निपेट का उपयोग करके देखें कि 3 डी बोर्ड पर अलग-अलग टुकड़े कैसे चलते हैं ( टिप : *Testजेएस में कार्यों को त्वरित तरीके से यह निर्धारित करने के लिए जांचें कि क्या एक वर्ग एक वैध चाल है, बस टुकड़े से इसकी पूर्ण दूरी पर आधारित है।)।

const color = "Black";
const pieces = ["N","B","R","Q","K"];
const urls = ["https://image.ibb.co/gyS9Cx/Black_N.png","https://image.ibb.co/dknnzc/Black_B.png","https://image.ibb.co/kb3hXx/Black_R.png","https://image.ibb.co/hGO5kH/Black_Q.png","https://image.ibb.co/jApd5H/Black_K.png"];
var dragPiece;
var size = 3;
var index = 0;
function start() {
Array.prototype.add = function(a) {return [this[0]+a[0],this[1]+a[1],this[2]+a[2]]};

document.getElementById("n").onchange=function() {
	size = parseInt(this.value);
	var s = document.getElementsByClassName("selected");
	var pos;
	if(s.length > 0) {
		pos = s[0].pos;
	}
	document.body.removeChild(document.body.firstChild);
	createBoards();
	if(pos != null && valid(...pos)) {
	cellAt(...pos).click();
	}
};
createBoards();
}

function createBoards() {
var boards = document.createElement("div");
boards.style.counterReset = "board-count "+(size+1);
boards.name=size;
for(var x = 0;x<size;x++) {
var t = document.createElement("table");
for(var i = 0;i<size;i++) {
  var row = document.createElement("tr");
  row.className="row";
  for(var j = 0;j<size;j++) {
  	var cell = document.createElement("td");
    cell.className = (size+i+j)%2 == 1 ? "black" : "white";
    var im = document.createElement("img");
    im.draggable = true;
    im.ondragstart = function(e) {dragPiece = this;e.dataTransfer.setData("piece",this.parentElement.name);
    this.parentElement.classList.add("start");
    this.classList.add("dragged");
    };
    im.ondragend = function(e) {this.parentElement.classList.remove("start");this.classList.remove("dragged");};
    im.hidden = true;
    cell.appendChild(im);
    cell.pos = [j,i,x];
    cell.ondragover = function(e) {e.preventDefault();};
    cell.ondragenter = function(e) {this.classList.add("drag");};
    cell.ondragleave = function(e) {this.classList.remove("drag");};
    cell.ondrop = function(e) { e.preventDefault();this.classList.remove("drag");
    if(this != dragPiece.parentElement && this.firstChild.hidden ){
    dragPiece.hidden=true;
    setPiece(this,e.dataTransfer.getData("piece"));
    }
    
    };
    cell.onclick = function() {
    if(this.firstChild.hidden == false && this.classList.contains("selected")) {
		index++;
    	if(index == pieces.length) index = 0;
    }
     	setPiece(this,pieces[index]);
    };
  
    
    row.appendChild(cell);
  }
  t.appendChild(row);
  }
  boards.appendChild(t);
  }
  document.body.insertBefore(boards,document.body.firstChild);
}



function clearHighlighted() {
	var sel =  document.getElementsByClassName("highlighted");
     while(sel.length > 0) {
     	sel[0].classList.remove("highlighted");
     }
}

function setPiece(cell,piece) {
var s=document.getElementsByClassName("selected");
if(s.length > 0){ s[0].firstChild.hidden=true;s[0].classList.remove("selected");}
cell.classList.add("selected");
cell.firstChild.hidden = false;
cell.name = piece;
     	cell.firstChild.src = urls[index];
     clearHighlighted();
     	showMoves(cell,piece);
}

function showMoves(cell,piece) {
	if(piece=="K") selector(cell,kingTest)
	else if(piece=="N") selector(cell,knightTest);
	else if(piece=="Q") selector(cell,queenTest);
	else if(piece=="R") selector(cell,rookTest);
	else if(piece=="B") selector(cell,bishopTest);
}

function cellAt(col,row,board) {
	return document.body.firstChild.children[board].children[row].children[col];
}

function valid(col,row,board) {
	return 0<=col && col<size && 0<=row && row<size && 0<=board && board<size;
}

function select(cell) {
if(cell != null && cell.firstChild.hidden) cell.classList.add("highlighted");
}



function rookTest(dist) {
	var d = [].concat(dist).sort();
	return d[0] == 0 && d[1] == 0;
}

function knightTest(dist) {
	var d = [].concat(dist).sort();
	return d[0] == 0 && d[1] == 1 && d[2] == 2;
}

function kingTest(dist) {
	return dist[0] <= 1 && dist[1] <= 1 && dist[2] <= 1;
}

function bishopTest(dist) {
	return dist[0]==dist[1] && dist[1]==dist[2];
}

function queenTest(dist) {
	var d = [].concat(dist).sort();
	return rookTest(dist) || bishopTest(dist) || (d[0]==0 && d[1]==d[2]) ;
}

function dist(cell,x,y,z) {
	return [Math.abs(cell.pos[0]-x),Math.abs(cell.pos[1]-y),Math.abs(cell.pos[2]-z)];
}

function selector(cell,test) {
	for(var i = 0;i<size;i++) {
		for(var j = 0;j<size;j++) {
			for(var k = 0;k<size;k++) {
			if(test(dist(cell,k,j,i))) {
				var c = cellAt(k,j,i);
				if(c != cell) select(c);
			}
			}
			}
			}
	
}
table
{
	padding: 10px;
  display:inline-block;
}

table:after
{
  counter-increment: board-count -1;
  content: "("counter(board-count,upper-roman)")";
  float:right;
}

td
{
  width:28px;
  height:28px;
  border: 1px solid;
  cursor: pointer;
}

.black
{
  background-color: rgba(127,127,127,0.6);
}

.white
{
  background-color: white;
}


.start {
background-color: rgba(0,204,0,0.6);
}

.highlighted {
background-color: rgba(0,255,0,0.6);
}

.drag
{
background-color: rgba(0,204,255,0.6);
}


.selected {
background-color: green;
cursor: grab;
}

.selected img
{
  display:block;
}

.dragged {
  cursor: grabbing;
}
<body data-size=3 onload="start()"
<label for="n">Size: </label><select id="n">
<option>2</option>
<option selected>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
</select>
<div>Click or drag to place the piece. Click on the piece to change its type.</div>
</body>

चुनौती

एक n x n x n बोर्ड को देखते हुए , निर्धारित करें कि क्या सफेद राजा चेकमेट में है।

इनपुट

  • (वैकल्पिक) n - 2 - बोर्ड का आकार
  • खेल बोर्ड
    • 1d- 2d- या 3D- सरणी, या अन्य समान प्रारूप के रूप में हो सकता है। संकेतन किसी भी सरल प्रारूप में हो सकता है। उदाहरण के लिए, खाली क्यूब्स के साथ KQRBN (व्हाइट) और kqrbn (काला)। या, विभिन्न मूल्यों के लिए संख्याओं का उपयोग करें।
    • 3 डी शतरंज बोर्ड के बारे में सोचें क्योंकि कई बोर्ड एक-दूसरे के ऊपर ढेर हो गए हैं और ऊपर से नीचे तक सूचीबद्ध हैं। फिर, प्रत्येक अलग-अलग बोर्ड को बाएं से दाएं, पीछे से सामने (ब्लैक साइड से व्हाइट साइड) तक नोट किया गया है।
    • 3D सरणी के रूप में दिए गए इस 2x2x2 मामले की कल्पना करें:
 [
[[BQ] [##]]
[[Bn] [KQ]]
]

"शीर्ष" बोर्ड: यहाँ छवि विवरण दर्ज करें"नीचे" बोर्ड:यहाँ छवि विवरण दर्ज करें

उत्पादन

  • बूलियन (सत्य / झूठे मूल्य) - सच है अगर सफेद राजा चेकमेट में है, तो झूठे अन्यथा।

शह और मात

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

विशिष्टता

  • आपको एक बोर्ड नहीं दिया जाएगा, जहां काला राजा सफेद राजा, या एक बोर्ड की कोशिश कर रहा है, जहां दोनों राजा चेक (असंभव परिदृश्य) में हैं।

परीक्षण के मामलों

  1. n = 3, [###,n##,#rr],[#b#,###,###],[###,###,bRK]

    यहाँ छवि विवरण दर्ज करें(III) यहाँ छवि विवरण दर्ज करें(II) यहाँ छवि विवरण दर्ज करें(I)

    आउटपुट: सच

    स्पष्टीकरण: राजा को शीर्ष तल पर किश्ती से एक चेक प्राप्त हो रहा है। सफेद बदमाश हमले को रोकने या धमकी देने वाले बदमाश को पकड़ने में असमर्थ है, इसलिए राजा को रास्ते से हटने की कोशिश करनी चाहिए। आइए राजा के कदम विकल्पों पर विचार करें:

    1. c2 (I) - b3 पर बिशप द्वारा संरक्षित (II)
    2. b2 (I) - a2 (III) में नाइट द्वारा संरक्षित
    3. c1 (II) - c1 (III) में बदमाश द्वारा पहरा
    4. बी 1 (II) - बी 1 (तृतीय) में बदमाश द्वारा संरक्षित
    5. c2 (II) - a2 (III) में नाइट द्वारा संरक्षित
    6. b2 (II) - a1 (I) में बिशप द्वारा संरक्षित

चूँकि राजा चेक से बच नहीं सकता, इसलिए वह एक चेकमेट है!

  1. n = 3, [b#b,###,###],[###,###,RNR],[#q#,###,#K#]

    यहाँ छवि विवरण दर्ज करें(III) यहाँ छवि विवरण दर्ज करें(II) यहाँ छवि विवरण दर्ज करें(I)

    आउटपुट: झूठी व्याख्या: राजा रानी से एक चेक प्राप्त कर रहा है, और उसके पास भागने या ब्लॉक करने के लिए कोई कदम नहीं है। हालांकि, नाइट रानी को पकड़ सकती है।

  2. n = 3, [#q#,#b#,###],[n##,###,###],[#k#,###,#KB]

    यहाँ छवि विवरण दर्ज करें(III) यहाँ छवि विवरण दर्ज करें(II) यहाँ छवि विवरण दर्ज करें(I)

आउटपुट: झूठी व्याख्या: व्हाइट में धमकी देने वाली रानी को पकड़ने या अपने राजा को सुरक्षा में ले जाने का कोई तरीका नहीं है। हालाँकि, अपने बिशप को b2 (II) में ले जाकर, व्हाइट रानी के खतरे को रोक सकता है।

  1. एन = 4, [####,####,r###,####],[####,#q##,####,####],[##r#,###b,####,BRnn],[####,####,#N##,#KQ#]

    यहाँ छवि विवरण दर्ज करें(IV) यहाँ छवि विवरण दर्ज करें(III) यहाँ छवि विवरण दर्ज करें(II) यहाँ छवि विवरण दर्ज करें(I)

    आउटपुट: सच स्पष्टीकरण: इस मामले में राजा को शूरवीरों और एक रानी से एक चेक प्राप्त हो रहा है। भले ही व्हाइट चेकिंग टुकड़ों में से किसी एक को कैप्चर / ब्लॉक कर सकता है, वह दोनों को कैप्चर / ब्लॉक नहीं कर सकता है। इसलिए, व्हाइट को अपने राजा को जांच से बाहर करने की कोशिश करनी चाहिए, लेकिन उसके पास कोई विकल्प नहीं है।

  2. n = 3, [###,##b,r#r],[###,###,###],[#k#,###,#K#]

    यहाँ छवि विवरण दर्ज करें(III) यहाँ छवि विवरण दर्ज करें(II) यहाँ छवि विवरण दर्ज करें(I)

आउटपुट: गलत स्पष्टीकरण: व्हाइट चेक में नहीं है, लेकिन चेक में आए बिना हिलने का कोई तरीका नहीं है। इसलिए, यह एक गतिरोध है, लेकिन एक चेकमेट नहीं है।

  1. n = 3, [##k,###,r#K],[###,n##,#N#],[###,###,#Q#]

    यहाँ छवि विवरण दर्ज करें(III) यहाँ छवि विवरण दर्ज करें(II) यहाँ छवि विवरण दर्ज करें(I)

आउटपुट: सच स्पष्टीकरण: व्हाइट अपने राजा का बचाव करने के लिए अपनी रानी के साथ झपट्टा मारना चाहेगा, लेकिन उसका शूरवीर रास्ता रोक रहा है।

  1. n = 3, [###,###,##q],[###,###,###],[#k#,###,rNK]

    यहाँ छवि विवरण दर्ज करें(III) यहाँ छवि विवरण दर्ज करें(II) यहाँ छवि विवरण दर्ज करें(I)

आउटपुट: सच स्पष्टीकरण: श्वेत रानी को अपने शूरवीर के साथ नहीं ले जा सकते, क्योंकि तब बदमाश श्वेत राजा की जाँच करेंगे।

  1. n = 2, [#q,##],[##,K#]

    यहाँ छवि विवरण दर्ज करें(II) यहाँ छवि विवरण दर्ज करें(I)

आउटपुट: झूठी व्याख्या: सफेद रानी अपने राजा के साथ कब्जा कर सकती है।

  1. n = 2, [rq,##],[##,K#]

    यहाँ छवि विवरण दर्ज करें(II) यहाँ छवि विवरण दर्ज करें(I)

आउटपुट: सच स्पष्टीकरण: इस बार बदमाश रखवाली कर रहा है, इसलिए राजा रानी को नहीं पकड़ सकता।

  1. n = 3, [###,###,#q#],[###,###,###],[#k#,###,BKn]

    यहाँ छवि विवरण दर्ज करें(III) यहाँ छवि विवरण दर्ज करें(II) यहाँ छवि विवरण दर्ज करें(I)

आउटपुट: झूठी व्याख्या: श्वेत राजा शूरवीर को पकड़ने से बच सकता है।


बस एक विस्तार, लेकिन cell.className = (i + j)%2 == 0 ? "black" : "white"स्निपेट में बेहतर नहीं होगा ?
अरनौलद

@ अर्नुलड लोल, सबसे स्पष्ट बात को ठीक करना भूल गया।
जियोकालेव

हमें समर्थन करने के लिए सबसे बड़ा बोर्ड आकार क्या है?
वीजुन झोउ

1
@ WeijunZhou मूल रूप से आपको परीक्षण मामलों को उचित मात्रा में यह देखने में सक्षम होना चाहिए कि आपका कोड काम करता है या नहीं। बड़ी संख्या के लिए यह सिर्फ अनंत समय और स्मृति को देखते हुए सैद्धांतिक रूप से काम करने की आवश्यकता है।
जियोकॉवेल

जवाबों:


5

रूबी , 412 413 बाइट्स

->b,w=2{n=b=~/\n/
g=->h{h[0]-~n*(h[1]-~n*h[2])} 
r=1
(n**6).times{|i|a=b*1     
m=[]
9.times{|j|m<<(j<6?i/n**j%n:m[j-6]-m[j-3])}
x,y,z=v=m[6,3].map{|j|j*j}
d=v.max
e=x+y+z
q=95&o=(t=a[p=g[m[3,3]]]).ord
k=a[s=g[m]].ord
o/32==w&&(o^k>31||k==75)&&((q%8==2&&q%9*d==e||q==81&&x%d+y%d+z%d<1)&&((1...c=d**0.5).map{|j|a[p+g[m[6,3]]/c*j]}+[?#]).max<?A||q==78&&e==5||q==75&&e<4)&&(a[p]=?0;a[s]=t;r&&=w>2?a=~/K/:!f[a,3])}
r}

इसे ऑनलाइन आज़माएं! अब सभी परीक्षण मामलों पर जाँच की गई। केस 5 (गतिरोध मामले) पर बग को ठीक करने के लिए कोड 1 बाइट से बढ़ा।

Llambda फ़ंक्शन नीचे दिखाए गए प्रारूप में एक स्ट्रिंग के रूप में इनपुट की आवश्यकता है। एक वैकल्पिक दूसरा पैरामीटर दिया जा सकता है, यह दर्शाता है कि 32 एएससीआईआई कोड के किस समूह को अगले कदम पर माना जाता है (डिफ़ॉल्ट रूप से यह 2 अपरकेस / श्वेत वर्णों के अनुरूप है, लेकिन फ़ंक्शन खुद को पुनरावर्ती रूप से 3 या लोअरकेस / काले वर्णों का उपयोग करके कॉल करता है। )

पुनरावृत्ति स्तर 1: सफेद (किसी भी घन से किसी भी घन) के लिए सभी संभव चालों को चलाता है और सभी कानूनी लोगों के माध्यम से कदम उठाता है। पुनरावृत्ति स्तर 2: प्रत्येक मामले में यह तब काले रंग के लिए सभी संभव कदमों के माध्यम से कदम रखने के लिए कहता है। यह सच है अगर श्वेत राजा सभी संभव काले चाल से बच गया है। पुनर्संरचना स्तर 1: यदि सभी संभव सफेद चालें एक ऐसी स्थिति की ओर ले जाती हैं जहां सफेद राजा सभी संभव काली चालों से नहीं बचते हैं, तो सही (अन्यथा झूठे) वापस आ जाएं।

सामान्य तौर पर, एक टुकड़ा एक दोस्ताना टुकड़े के कब्जे वाले वर्ग में नहीं जा सकता है। उस मामले पर विचार करने के लिए जहां सफेद बिल्कुल नहीं बढ़ता है (इसलिए चेकमेट गतिरोध नहीं करता है), वह मामला जहां राजा "चलता है" उस वर्ग पर पहले से ही है। छोटे कोड के कारणों के लिए, अन्य सफेद टुकड़ों को भी सफेद राजा द्वारा कब्जा किए गए वर्ग में स्थानांतरित करने की अनुमति है। यह एक बकवास कदम है, लेकिन इसकी अनुमति देने से परिणाम प्रभावित नहीं होता है इसलिए यह कोई समस्या नहीं है।

निम्नलिखित परीक्षण का उपयोग यह जांचने के लिए किया जाता है कि क्या प्रत्येक टुकड़ा के लिए एक चाल वैध है। x,y,zप्रत्येक धुरी में तय की गई दूरियों के वर्ग हैं। eइनका योग है (इसलिए यूक्लिडियन दूरी का वर्ग) और dअधिकतम है। टुकड़ा प्रकार 95 के साथ निचले स्तर के ASCII मूल्यों को अपरकेस में बदलने के लिए एंडेड है।

Bishop and Rook (ASCII 66 and 82) For the rook e=1*d. For the bishop e=3*d. 
The same code is used for both with q%9 giving 1 and 3 respectively.

Queen (ASCII 81) x%d+y%d+z%d<1 Each axis must be 0 or d, so this sum must be 0.

For the above pieces, any cubes crossed must be checked to ensure they are empty.

Knight (ASCII 78) e=5

King (ASCII 75) e<4

टिप्पणी कोड

->b,w=2{                                                        #board, colour to move (default upcase/white)
  n=b=~/\n/                                                     #n=board size (index of first newline.)
  g=->h{h[0]-~n*(h[1]-~n*h[2])}                                 #Function to calculate position in string based on array of 3d coordinates.
  r=1                                                           #Return value = truthy.
  (n**6).times{|i|                                              #Iterate through n**6 moves (n**3 start cubes and n**3 end cubes.)
    a=b*1      
    m=[]                                                        #Make an empty array for coordinates.                                             
    9.times{|j|m<<(j<6?i/n**j%n:m[j-6]-m[j-3])}                 #Split i into six base n digits for the start and end coordinates. also derive 3 relative move distances.
    x,y,z=v=m[6,3].map{|j|j*j}                                  #v=array of relative distances squared. x,y,z are the 3 individual relative distances squared.
    d=v.max                                                     #Max of x,y,z                                     
    e=x+y+z                                                     #Square of euclidean distance
    q=95&o=(t=a[p=g[m[3,3]]]).ord                               #t=contents of cube to move from. o=ascii value, q=uppercase of o.
    k=a[s=g[m]].ord                                             #k=ascii value of contents of cube to move to.
    o/32==w&&(o^k>31||k==75)&&                                  #If o is in the right 32 byte range (uppercase or lowercase) AND the destination contains the white king or a character not in the same 32 byte range AND...
      ((q%8==2&&q%9*d==e||q==81&&x%d+y%d+z%d<1)&&               #the piece is a rook, bishop or queen with a valid move (as described in the text) AND..
      ((1...c=d**0.5).map{|j|a[p+g[m[6,3]]/c*j]}+[?#]).max<?A|| #the intervening squares are all empty, OR..
      q==78&&e==5||                                             #the piece is a knight and the move has euclidean distance sqrt(5) OR..
      q==75&&e<4)&&                                             #the piece is a king and the move has euclidean distance <4 THEN
      (a[p]=?0;a[s]=t;r&&=w>2?a=~/K/:!f[a,3])                   #put a 0 in the start cube and put the piece in the end cube. If moved piece is black, is the white king still there? AND with return value.
  }                                                             #If moved piece is white, recursively call the f to carry out the black moves. Does the white king NOT survive some black moves? AND with return value.
r}

क्या आप 1-अंक वाले एस्की मूल्यों का उपयोग करके इसे गोल्फ नहीं कर सकते हैं? साथ ही, क्या आपका मतलब तीसरे पैराग्राफ में "गतिरोध नहीं चेकमेट" था?
जियोकालेव

@geokavel रूबी में एकल एससीआई मूल्य का सबसे छोटा प्रतिनिधित्व है ?A(कोड में एक उदाहरण है) इसलिए यह अभी भी 2 बाइट्स है। अभी भी कुछ भाषाओं से बेहतर है जिनकी आवश्यकता है "A"। ऐसे कुछ हेरफेर थे जो वर्णों के बजाय ASCII मूल्यों के साथ बेहतर हो गए थे (विशेष रूप से o^k>31जो यह सुनिश्चित करता है कि एक टुकड़ा एक व्यस्त वर्ग में स्थानांतरित हो सकता है या एक मित्र के कब्जे में हो सकता है लेकिन शत्रुतापूर्ण नहीं है।)
स्तर नदी सेंट

मेरा मतलब है कि चेकमेट गतिरोध नहीं है। गतिरोध वह स्थिति है जहां खिलाड़ी को ले जाने पर राजा को धमकी दी जाती है। चेकमेट वह स्थिति है जहां राजा को धमकी दी जाती है यदि खिलाड़ी चलता है, और यदि वह नहीं भी है।
लेवल रिवर सेंट

क्या होगा यदि आप एएससीआई मूल्यों (यानी स्ट्रिंग के बजाय ints के सरणी) के बजाय अंतर मूल्यों का उपयोग करते हैं?
जियोकालेव

@geokavel ints शायद कम होगा, और मैं इसे बाद में संशोधित कर सकता हूं क्योंकि इसे विशेष रूप से कल्पना द्वारा अनुमति दी गई है। लेकिन मैं चुने हुए प्रारूप के साथ आंशिक रूप से चला गया क्योंकि यह अधिक मानव पठनीय था (इसलिए विकसित करना आसान है) और आंशिक रूप से क्योंकि मैं मेरे इस जवाब से प्रेरित था जिसने मेरी सोच को बहुत प्रभावित किया: codegolf.stackexchange.com/a/45544/15599
स्तर रिवर सेंट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.