# Tag Info

## New answers tagged chess

0

x86-64 - 26 Bytes Input is an array of up to 32 bits and an integer representing number of squares, 1 representing rook, 0 representing empty. C4 E2 69 F7 C1 shlx eax,ecx,edx 0B C1 or eax,ecx F3 0F BC C8 tzcnt ecx,eax D3 E8 shr eax,cl F3 0F BD C8 lzcnt ecx,eax ...

2

Haskell, 33 bytes sum.(t.reverse<>t) t=snd.span(>0) Try it online! Anonymous function that takes input as a list of 1s (spaces) and 0s (rooks). This trims spaces from the start and the end of the list, then concatenates the two versions of the list and sums them. This uses GHC 8.4.1 or later to have access to the <> operator without ...

2

Haskell, 36 bytes f s=sum$snd.span(>0)=<<[s,reverse s] Try it online! Uses 1 for empty space, 0 for rook. Counts the number of 1's not in an initial block of ones, and adds that to the result for the reversed string. 1 Befunge-98 (PyFunge), 73 bytes #;ep10fp#;>#v~:'.-#v_$1+0k v0+ge0*gf0$_v#!-R':< >ep20fp v >0fg1-*0eg+.@ Try it online! 2 C (clang), 57 bytes i,r,o;g(*n,z){for(o=r=i=0;z--;i=-~i*!*n++)o+=*n?r=1,i:r;} Try it online! Saved 1 thanks to @ceilingcat I realized it didn't worked for empty lists.. Now it works! Plus saved some bytes! 1=rook. 0=space. for(.. i+=n++?-i:1)// counts spaces or reset extra moves => i=-~i!*n++ ( @ceilingcat ) o+=*n?r=1,i:r; // adds to output -i-(... 2 Stax, 7 6 5 bytes àσQ█ε Run and debug it Use tab for empty square and any other character for rook. 0 Pyth, 7 bytes /r6*2Qd Try it online! Takes a string of R for rooks, (space) for empty spaces / d # Count spaces in r6 # Strip spaces from *2Q # 2 * input() (= concatenation) 1 Java 11, 35 32 bytes s->(s+s).strip().chars().sum()/9 Port of @Joel's Python 3 answer. -3 bytes thanks to @Joel as well. Uses NULL-bytes (\0) for Rooks and tabs (\t) for spaces. Try it online. I tried using s->(s+s).trim().chars().sum()/9 at first as 31-byter, but this doesn't work because the String#trim builtin not only removes leading and ... 1 Red, 46 bytes func[s][length? next split trim append s s sp] Try it online! Just a Red port of Arnauld's JavaScript/Python solutions. Takes a space as an empty square. 1 Perl 5 -MList::Util=sum -pF/R/, 40 bytes$\=2*sum map$_=y///c,@F}{$\-="@F"+$F[-1] Try it online! 2 Snails, 7 bytes At least it beats Retina :) o \.+\R Try it online! 1 C, 183 156 151 137 96 91 bytes Thanks to ceilingcat for 91 bytes. c,e;char*z,b;main(d){for(gets(z=b);e=*z>81?c-=e*~!d,d=0:e+1,*++z;);printf("%i",d?:c+e);} R is a rook, everything else is a space. TIO 1 Haskell, 68 58 54 bytes (n#y)(a:x)|a<1=n+(0#1)x|m<-n+1=y+(m#y)x (_#_)x=0 f=0#0 Try it online! 5 Japt, 5 bytes ²x èS Try it ²x èS Implicit input string of U ² U + U x Remove trailing and leading whitespace èS Number of spaces 9 Python 3, 30 29 bytes lambda s:sum((s+s).strip())/9 Try it online! -1 byte thanks to @JoKing The function takes a Python byte string as input. Each empty space is encoded as a tab and each rook is encoded as a byte b'\x00' having value 0. The computation is equivalent to lambda s:(s+s).strip().count(b'\t') while having a lower byte count. 4 05AB1E, 5 bytes «ðÚð¢ Try it online! « # concatenate the input with itself ðÚ # remove leading and trailing spaces ð¢ # count spaces 1 C# (Visual C# Interactive Compiler), 27 bytes x=>(x+x).Trim().Sum(d=>d)/9 Saved a byte thanks to @someone Try it online! 9 Retina, 14 9 bytes w_+R|R_+ Try it online! Link includes test cases. Uses _ for empty space as it's the most pleasant non-regex character. Works by counting the number of substrings that correspond to a valid Rook move. A substring is a valid Rook move if it contains at least one _ plus a single R at either the beginning or the end. 1 Stax, 7 6 bytes -1 byte thanks to recursive ╣ë|óêπ Run and debug it 2 Japt, 6 bytes Spaces for spaces, any other character for rooks. ²x ¸ÊÉ Try it 1 Japt, 6 bytes ²x ¸ÊÉ Try it online 4 Perl 6, 16 bytes {+m:ex/s+R|Rs+/} Try it online! A regex that matches all exhaustive instances of rooks followed by spaces, or spaces followed by a rook and returns the number of matches. 3 Retina, 23 15 bytes Double the number of spaces between rooks, grep lines with at least one rook, then count the number of spaces. R.+R$0\$0 GR Try it online! Though the program uses spaces instead of periods, I added prefix code so that the test cases provided may be easily pasted in and used. I was hoping I could use overlapping matches with (?&...

1

Python 2, 59 bytes def f(r):S=map(len,r.split('R'));return sum(S)*2-S-S[-1] Try it online!

2

Jelly, 6 bytes t1;ḟẠS Try it online! A monadic link taking a list of 0 for rook and 1 for space and returning an integer with the number of moves. The TIO link takes the pasted list of possible boards given in the question, converts to the right format and then outputs the calculated and correct answers. Explanation t1 | Trim 1s from end ; | ...

1

Wolfram Language (Mathematica), 43 38 bytes Count[Subsequences@#,{0,1..}|{1..,0}]& Try it online! Port of Neil's Retina solution. Uses 1 for spaces and 0 for rooks.

6

JavaScript (ES6),  38  33 bytes Saved 5 bytes thanks to @JoKing Takes input as a string. Expects a space for an empty square and any other character for a rook. s=>(s+s).trim().split .length-1 Try it online! Commented s => // s = input, e.g. " R RRR " (s + s) // double -> " R RRR R RRR " .trim() // remove ...

2

Jelly, 5 bytes ḲẈ+ƝS Try it online! -1 thanks to Jonathan Allan. 0 represent a rook, 1 represents an empty space.

1

Python 3 (PyPy), 729 bytes F=lambda a,b:a<'^'<=b or a>'^'>=b def m(b,P,A=0): yield b for(r,f),p in b.items(): if F(P,p):continue *d,n,k={'R':[(0,1),8,4],'N':[(1,2),(2,1),2,4],'B':[(1,1),8,4],'Q':[(0,1),(1,1),8,4],'K':[(0,1),(1,1),2,4],'P':[(2,0),(1,0),(1,1),(1,-1),2,1],'p':[(-2,0),(-1,0),(-1,1),(-1,-1),2,1]}[p if p=='p'else p.upper()] ...

10

JavaScript (Node.js),  499 ... 374  370 bytes Takes input as (b)(X), where $b$ is an array of 64 integers describing the squares (from left to right and from top to bottom) and $X$ is the 0-based index of the en-passant target square, or $-1$ if there's none. Below are the expected values for each square: 0: empty square 5: white pawn ...

6

Haskell, 1165 1065 1053 bytes Bytes saved thanks to Leo Tenenbaum n=Nothing x?y=Just(x,y) o(x,y)=x<0||y<0||x>7||y>7 m#k@(x,y)|o k=n|1>0=m!!x!!y z(x,y)m p(a,b)|o(x+a,y+b)=1<0|Just g<-m#(x+a,y+b)=elem g[(p,0),(5,0)]|1>0=z(x+a,y+b)m p(a,b) t(x,y)p(a,b)m|o(x+a,y+b)=[]|g<-(x+a,y+b)=(g%p)m++do[0|m#g==n];t g p(a,b)m c m|(x,y):_<-[(a,...

Top 50 recent answers are included