Best Small Program

Doron Osovlanski
CADTECH - CAD/CAM Systems Ltd
24 Ben-Yosef st.
Givat-Shmuel 51905
Israel

Baruch Nissenbaum
Tel-Aviv University
The Faculty of Engineering
Tel-Aviv
Israel

Judges' comments:

Compile. Try:

echo 4 | baruch
echo 7 | baruch

This program reads an integer between 4 and 99 from the stdin.

NOTE: The original program did not have a newline at the end of the file. We added a final newline to the file to make unpacking easy.

Selected notes from the author:

The goal of this work was to write a program that solves the classic n-queen problem, with a board size of up to 99x99, while keeping the program as short as possible.

The program finds all possibilities to place N chess queens on a NxN chess board so that no queen is in range of any other queen (not in the same column row or diagonal). For each solution the chess board and the place of the queens is printed to stdout.

This program is about as simple and as readable as possible. To make things even more simple we used a very limited subset of C:

     No pre-processor statements
     Only one, harmless, 'for' statement
     No ifs
     No breaks
     No cases
     No functions
     No gotos
     No structures

In short, it contains no C language that might confuse the innocent reader. :-)

This program demonstrates the claim that in C, any program can be written using a single ‘for’ statement, as long as it is long enough..

The authors further note:

For PC users: In order to compile the program under Turbo-C or MSC, ‘int ’ should be inserted at the beginning of the program. For better looking results it is recommended to replace the “ #Q” string with “ \261\2”.

Copyright © 1990, Landon Curt Noll & Larry Bassel. All Rights Reserved. Permission for personal, educational or non-profit use is granted provided this this copyright and notice are included in its entirety and remains unaltered. All other uses must receive prior permission in writing from both Landon Curt Noll and Larry Bassel.