Program Pearls

From miki
Jump to navigation Jump to search

This page simply list some nice piece of programs found around...

Sudoku solver

Here a very short Sudoku solver. Seen here.

#include <stdio.h>

void J(char*a){int f,i=0,c='1';for(;a[i]!='0';++i)if(i==81){
puts(a);return;}for(;c<='9';++c){for(f=0;f<9;++f)if(a[i-i%27+i%9
/3*3+f/3*9+f%3]==c||a[i%9+f*9]==c||a[i-i%9+f]==c)goto e;a[i]=c;J(a);a[i]
='0';e:;}}int main(int c,char**v){int t=0;if(c>1){for(;v[1][
t];++t);if(t==81){J(v[1]);return 0;}}puts("sudoku [0-9]{81}");return 1;}

Enters the grid to solve as a command-line parameter, using 0 for empty space:

% gcc sudoku.c -o sudoku
% ./sudoku.exe 123456789456789123789123456231564897564897231897231564312645978645978302000000000

Kuhn-Munkres algorithm

The Kuhn-Munkres algorithm or Hungarian algorithm is a combinatorial optimization algorithm that solves the assignment problem in polynomial time.

Example of programs:

  • Alt_Key — Find instantly the best keyboard accelerators in menu option tests and dialog labels.