शतरंज-ऑलिशन डर्बी


16

शतरंज और विध्वंस डर्बी से ज्यादा ध्रुवीय विरोध क्या हो सकता है । आपको लगता होगा कि जो कोई भी एक का आनंद नहीं लेता है वह दूसरे का आनंद उठाएगा ... आज तक।

नियम

प्रारंभिक स्थिति एक मानक शतरंज बोर्ड है:

RNBQKBNR
PPPPPPPP 





PPPPPPPP 
RNBQKBNR

सामान्य पर्याप्त लग रहा है, जब तक आप यह पता लगाने के लिए यह एक है खुद को लिए हर भाग, आखिरी टुकड़े के स्थायी प्रतियोगिता:

  • प्रत्येक मोड़ पर, बोर्ड पर प्रत्येक टुकड़ा एक बेतरतीब ढंग से * वैध-वैध चाल (मानक कदम नियमों का उपयोग करके) बनाने के लिए मिलता है। हालाँकि, टुकड़ों को स्थानांतरित करने का क्रम हर मोड़ पर यादृच्छिक होता है।
  • एक टुकड़ा किसी भी टुकड़ा पर कब्जा कर सकता है , भले ही यह एक ही रंग हो, चाहे एक राजा हो।
  • पवन फॉरवर्ड को पकड़ सकते हैं , साथ ही विकर्ण । इसके अलावा, सामान्य की तरह, अगर इसके सामने एक खाली जगह है, तो एक मोहरा अपनी पहली चाल पर दो स्थानों को स्थानांतरित कर सकता है (वे भी उस तरह से कब्जा कर सकते हैं।) इसके अलावा, प्यादे किसी भी यादृच्छिक टुकड़े (राजा सहित) को बढ़ावा देते हैं। मोहरा।
  • विजेता अंतिम टुकड़ा है। हालांकि अगर 1000 मोड़ के बाद , एक से अधिक टुकड़े बचे हैं, शेष सभी विजेता हैं।
  • कोई एन पैसेंजर्स, चेक, महल, आदि।

उत्पादन

हर मोड़ के बाद टर्न नंबर आउटपुट होता है, और बोर्ड कैसा दिखता है। एक टुकड़ा मारे जाने के बाद इसे बोर्ड से हटा दिया जाता है। पहली बारी के बाद, बोर्ड इस तरह दिख सकता है:

1.
   K    
RBQ N BR  
NP  P P
  PP P P
R PP
BPN PNP
    K  R 
       Q

1000 चालों के बाद बोर्ड इस तरह लग सकता है:

1000.
  Q  K


P  N R

 R  B N   

  Q

और खेल समाप्त हो जाता है।

या शायद 556 के बाद बोर्ड इस तरह दिखता है:

556।


     आर





तो खेल वहीं खत्म हो जाता है।

* कृपया सुनिश्चित करें कि इस चुनौती में किए गए सभी यादृच्छिककरण एक समान हैं (हर संभावना होने की समान संभावना है)।


यदि कोई मोहरा तिरछे चलते हुए बिना कब्जा कर सकता है, तो क्या वह बिना मोड़े तिरछे भी चल सकता है?
२०:१० बजे ट्राइकोप्लेक्स

1
@ श्री नहीं, यह नहीं कर सकते।
जियोकॉवेल

क्या एक मोहरा दो टुकड़ों को एक बार में पकड़ सकता है जब यह एक दोहरी चाल करता है?
orlp 23

1
@orlp नहीं, मुझे यह स्पष्ट करना चाहिए। यदि आपके सामने कोई खाली जगह है, तो आप केवल दो को स्थानांतरित कर सकते हैं।
जियोकॉवेल

1
इसके अलावा, आपके उदाहरणों में, आपको पंजे को काले या सफेद के रूप में अलग करने की आवश्यकता है ( pकाले और Pसफेद मानक में मानक है ), क्योंकि वे अलग-अलग दिशाओं को आगे बढ़ाते हैं।
mbomb007

जवाबों:


3

पायथन 2 , 862 846 844 बाइट्स

from random import*
A=-1;a,b=[(0,1),(0,A),(A,0),(1,0)],[(A,A),(A,1),(1,A),(1,1)]
r=range(8)
C='RNBQK';q=C+'BNR'
def m(x,y,B,t):
 P=B[y][x];M=[]
 for w,z in dict(zip('pP'+C,[[],[],a,zip([A,1,-2,2]*2,[2,2,1,1,-2,-2,A,A]),b]+[a+b]*2))[P]:
	for i in r[1:]:
	 X,Y=x+z*i,y+w*i;M+=(X,Y),
	 if P in'NK'or 1-(8>X>A<Y<8)or' '<B[Y][X]:break
 if P in'pP':d=[A,1][P<'p'];M=zip((x-1,x,x+1)[B[y+d][x-1]<'!':2+(B[y+d][-~x%8]>' ')],(y+d,)*3)+[(x,y+2*d)]*(t*B[y+d][x]<'!')
 return choice([(X,Y)for X,Y in M if-1<X<8>Y>A])
B=map(list,[q,'P'*8]+[' '*8]*4+['p'*8,q])
t=0
while t<1e3:
 t+=1;p=[(x,y)for y in r for x in r if' '<B[y][x]];shuffle(p)
 if len(p)<2:break
 while p:x,y=p.pop();Z=X,Y=m(x,y,B,t<2);B[Y][X],B[y][x]=B[y][x],' ';Z in p and p.remove(Z)
 for j in 0,7:
	for i in r:
	 if B[j][i]in'pP':B[j][i]=choice(C)
 print t
 for l in B:print''.join(l).upper()

इसे ऑनलाइन आज़माएं!

जोनाथन फ्रेच के लिए धन्यवाद 18 बाइट्स बचाए


855 बाइट्स (पूरी तरह से परीक्षण नहीं किया गया)।
जोनाथन फ्रीच


मुझे लगता है कि या ...]+[(a+b)]*2तो हो सकता है । ...]+[a+b]*2...,a+b,a+b]
जोनाथन फ्रीच

0

PHP, 1849 बाइट्स

<?$z=[R,N,B,Q,K,B,N,R];$y=[_,_,_,_,_,_,_,_];$u=shuffle;$b=[$z,[P,P,P,P,P,P,P,P],$y,$y,$y,$y,[p,p,p,p,p,p,p,p],$z];$z=[R,N,B,Q,K];for($i=0;$i<8;$i++)for($j=0;$j<8;$j++)$r[]=[$i,$j];for(;$c++<=999;){for($i=$_=0;$i<8;$i++)for($j=0;$j<8;$j++)if($b[$i][$j]!=_)++$_;if($_<2)break;$u($r);$n=[];foreach($r as$l){list($y,$x)=$l;$a=$y+1;$d=$y-1;$j=$x+1;$t=$x-1;$p=$b[$y][$x];if($n[$y][$x]!=1&&$p!=_){$v=$e=$f=$g=$h=$k=$o=$q=$s=[];if($p==R||$p==K||$p==Q){$m=($p==K)?2:9;for($i=1;$i<$m;$i++){if(!$e&&$y-$i>=0){$v[]=[$y-$i,$x];if($b[$y-$i][$x]!=_)$e=1;}if(!$f&&$y+$i<8){$v[]=[$y+$i,$x];if($b[$y+$i][$x]!=_)$f=1;}if(!$g&&$x-$i>=0){$v[]=[$y,$x-$i];if($b[$y][$x-$i]!=_)$g=1;}if(!$h&&$x+$i<8){$v[]=[$y,$x+$i];if($b[$y][$x+$i]!=_)$h=1;}}}if($p==B||$p==K||$p==Q){$m=($p==K)?2:9;for($i=1;$i<$m;$i++){if(!$k&&$y-$i>=0&&$x-$i>=0){$v[]=[$y-$i,$x-$i];if($b[$y-$i][$x-$i]!=_)$k=1;}if(!$o&&$y-$i>=0&&$x+$i<8){$v[]=[$y-$i,$x+$i];if($b[$y-$i][$x+$i]!=_)$o=1;}if(!$q&&$y+$i<8&&$x-$i>=0){$v[]=[$y+$i,$x-$i];if($b[$y+$i][$x-$i]!=_)$q=1;}if(!$s&&$y+$i<8&&$x+$i<8){$v[]=[$y+$i,$x+$i];if($b[$y+$i][$x+$i]!=_)$s=1;}}}if($p==N){if($y-2>=0&&$t>=0)$v[]=[$y-2,$t];if($y-2>=0&&$j<8)$v[]=[$y-2,$j];if($d>=0&&$x-2>=0)$v[]=[$d,$x-2];if($d>=0&&$x+2<8)$v[]=[$d,$x+2];if($a<8&&$x-2>=0)$v[]=[$a,$x-2];if($a<8&&$x+2<8)$v[]=[$a,$x+2];if($y+2<8&&$t>=0)$v[]=[$y+2,$t];if($y+2<8&&$j<8)$v[]=[$y+2,$j];}if($p==P){if($y==1&&$b[$a][$x]==_)$v[]=[$y+2,$x];if($j<8&&$b[$a][$j]!=_)$v[]=[$a,$j];if($t>=0&&$b[$a][$t]!=_)$v[]=[$a,$t];$v[]=[$a,$x];}if($p==p){if($y==6&&$b[$d][$x]==_)$v[]=[$y-2,$x];if($j<8&&$b[$d][$j]!=_)$v[]=[$d,$j];if($t>=0&&$b[$d][$t]!=_)$v[]=[$d,$t];$v[]=[$d,$x];}$u($v);$v=$v[0];$b[$y][$x]=_;$w=$p;if($w==P&&$v[0]>6&&$u($z)&&$w=$z[0]);if($w==p&&$v[0]<1&&$u($z)&&$w=$z[0]);$b[$v[0]][$v[1]]=$w;$n[$v[0]][$v[1]]=1;}}echo $c.".
";foreach($b as$a)echo str_replace([_,p],[' ',P],join("",$a))."
";}

इसे ऑनलाइन आज़माएं!

यह निश्चित रूप से हो सकता है से अधिक गोल्फ हो सकता है, और यह कुछ हद तक पागल व्यक्ति के कामकाज की तरह दिखता है (जो, मुझे लगता है, यह हो सकता है)।

मैं इस बात से प्रभावित हूं कि कितनी तेजी से यादृच्छिक चालें बोर्ड को साफ कर सकती हैं (मैंने देखा है कि 15 चालें ऐसा करती हैं)। इसके अलावा, मुझे लगता है कि मैंने जो 1000 की सीमा को देखा था, वह अलग-अलग रंगों के नृत्य पर दो बिशप थे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.