Author: Uri Blass
Date: 11:25:47 02/22/05
Go up one level in this thread
On February 22, 2005 at 14:10:10, Tim Foden 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's my attempt, although I did squidge the lines together a bit (20 lines) :) > >#include <stdio.h> >int main( int, char** ) { > for( int i = 0; i < 64; i++ ) { > for( int j = 0; j < 64; j++ ) { > if( i == j ) continue; > for( int cnt = 0, k = 0; k < 64; k++ ) { > if( k && (k & 7) == 0 ) printf( "/" ); > if( k == i || k == j ) { > if( cnt != 0 ) { printf( "%d", cnt ); cnt = 0; } > printf( k == i ? "N" : "n" ); > } else { > cnt++; > if( (k & 7) == 7 ) { printf( "%d", cnt ); cnt = 0; } > } > } > printf( " - - 0 1\n" ); > } > } > return 0; >} > >Cheers, Tim. Thanks it seems to be the best solution. unlike other solutions that looked at every rank you simply look at every square in the board and try to find what to print. This idea seems to be good also for generalization to write a function that gets all the fen of 3 and 4 and 5 pieces(I think to use it for debugging the nalimov tablebases and also debugging my function to detect correct fen) 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.