Author: Uri Blass
Date: 10:14:09 02/22/05
Go up one level in this thread
On February 22, 2005 at 08:35:07, Andrew Wagner wrote: >Hi all. >I got sidetracked this morning by an interesting chess programming problem. It >took me a couple hours, but I think I have a working algorithm -- haven't tested >yet though. Anyway, I got to wondering if others would approach it the same way. >So I thought I'd make a little competition of it. Post your code here, and I'll >pick the program I like best and shower praise and adulation on its author. If >people like this challenge, maybe I'll do one each month or something. Anyway, >here's the one I did this morning: >There are 64 x 63 = 4032 ways to put a black knight and white knoght both on a >chess board. Write a program -- from scratch -- to generate FENs for each of >these positions. The FENs should look something like: Nn6/8/8/8/8/8/8/8 w - - 0 >1. > >I think my code will wind up weighing in at around 60-70 lines of C. Can you do >better? Here is my code(not 100% sure of no bugs) It seems that there are better codes based on looking at other codes #include <stdio.h> int main(void) { int whiteknight,blackknight,rank,N,n,empty1,empty2,empty3; char c1,c2; for (whiteknight=0;whiteknight<64;whiteknight++) for (blackknight=0;blackknight<64;blackknight++) if (whiteknight!=blackknight) { for (rank=7;rank>=0;rank--) { N=8; n=8; if ((whiteknight>>3)==rank) N=whiteknight&7; if ((blackknight>>3)==rank) n=blackknight&7; if (n<N) { empty1=n; empty2=N-n-1; empty3=7-N; c1='n'; c2='N'; } else { empty1=N; empty2=n-N-1; empty3=7-n; c1='N'; c2='n'; } if (empty1>0) printf("%d",empty1); if (empty1<8) printf("%c",c1); if (empty2>0) printf("%d",empty2); if (empty3>=0) printf("%c",c2); if (empty3>0) printf("%d",empty3); if (rank>0) printf("/"); } printf(" w - - 0 1\n"); } return 0; } Uri
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.