Author: Uri Blass
Date: 13:46:58 02/22/05
Go up one level in this thread
On February 22, 2005 at 15:30:49, Scott Gasch wrote: >On February 22, 2005 at 13:14:09, Uri Blass wrote: > >>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 > >[ scott@wannabe:~/tmp ] % g++34 -O -S aaa.c ; wc -l aaa.s > 196 aaa.s I do not understand what you want to say. I thought first that you accidentally posted some meaningless string for me but I see now that you did the same in response to code of other people. 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.