Tilbage til Skak
Brutalis
This dokument tells everything
about Brutalis.
Brutalis is designed for helpmates.
So first I present 7 examples of helpmates.
(they are all included in Brutalis)

This is a helpmate in 2 moves (=
H#2) with 2 solutions.
(black usually moves first in helpmates)
Solutions:
Kg2 Ne3+,Kxh1 0-0-0#
Bxa1 Nc3,Bb2 0-0#
White uses the two castlings to mate!
Brutalis solves this in 2.36 seconds on my 2.6 GHz PC.

H#2 with 2 solutions.
Solutions:
Kg4 Kf2,Kh3 Be6#
Kg2 Be6,Kf1 Bh3#
Brutalis solves this in 0.01 second on my 2.6 GHz PC.

H#2 with 2 solutions.
Solutions:
Qf3+ Nf5+,Ke4+ Nb2#
Qd6# Ne6+,Kd5+ Ne5#
All the 8 moves are checks!
Brutalis solves this in 2.64 seconds on my 2.6 GHz PC.

H#2 with 2 solutions.
Solutions:
f6 Nf8,Rf7 Ng6#
Rg8 Nf6,Rf8 Nd5#
Brutalis solves this in 0.17 second on my 2.6 GHz PC.

H#6 with 3 solutions.
Solutions:
One solution is Qa8 c3,Kc5 c4,Kb6 c5+,Ka7 c6,Rb7 c7,Ba6 c8N#
I don't remember the other solutions.
Brutalis have tried this task on
lower depths.
Although it searches 195.000 positions pr. second on my 2.6 GHz
PC,
it seems to need about 200 hours to solve this task!.

H#3 with 2 solutions.
Solutions:
d1R d7,Rd6 d8N,Rg6 Nf7#
d1B d7,Bc2 d8Q,Bcg6 Qd2#
All four kind of promotions are used in the solutions!
Brutalis solves this in 0.17 second on my 2.6 GHz PC.

H#2 with 1 solution.
NB: The knights (except e5) are nightriders!
Solution:
Nc7-f1 Ne6-a8,Ng7-d1 Ne5-d3#
Brutalis solves this in 0.17 second on my 2.6 GHz PC.
B R U T A L I S - 1.0
---------- Jens Bęk Nielsen
Documentation.
PURPOSE
This program solves (and helps composing) helpmates and
constructed tasks.
SPECIAL OPTION
It can use normal knights and nightriders.
(A nightrider on g1 can fx. move to f3, e5, d7.)
But you cannot mix knights and knightriders.
Another special option is to choose
english/danish(=german,sweedish) notation.
DEPTH
Use function 2 to set the depth.
Black normally starts in helpmates. A helpmate in 2 moves (H#2)
has moves
by black, white, black and white mating black.
Set the depth to 4 for such a H#2.
BRUTALIS goes a halfmove deeper internally to see if there is a
mate.
Maximum depth is 32.
See more about the iterative search later.
HOW TO TYPE IN
Don't care about upper-/lowercase. BRUTALIS handles this.
I have not bothered to make a nice typing of men, so when you
have the
option to type in "2,3,4,5,6,7" it simply means
P,N,B,R,Q,K.
You can use "s" and "S" for rooks that cannot
castle (type in position).
SPECIAL FEATURES
My main interest is constructed tasks from the initial position.
Fx "a game started e2-e4. A knight captured a rook in move 5
with mate. how?".
Solution: 1.e4,Nf6 2.Qe2,Nxe4 3.f3,Ng3 4.Qxe7+,Qxe7+ 5.Kf2,Nxh1#
Another: "A game ended with 6.gxf8N#". how?".
Solution: 1.h4,d5 2.h5,Nd7 3.h6,Ndf6 4.hxg7,Kd7 5.Rh6,Ne8
6.gxf8N#
I have made some special features to speed up the program.
If you know a piece makes many moves you can tell the program
this.
You can chose a piece for both black and white if you want, and
you can
also tell how many moves by other pieces is allowed.
Another feature is that you can demand something about the mating
position.
You can choose any square and tell what content it should have
(empty or a
certain black or white piece).
With these features I have tried to find mates with the white
king on row
number 4 and where black mates in move 4.
Among these mates I have found these:
"The white king is mated on g4 in move 4, and black has made
two bishopmoves.
how?".
"The white king is mated on f4 in move 4, and a capture
occured in the game.
how?".
"The white king is mated on h4 in move 4 in a game where
black opened 1.-,e6.
how?".
If you can't solve these, BRUTALIS can.
Demand (function 7) the white king to be on f4/g4/h4, and use
function 9 to
tell that many moves should be made with the piece on e1 - the
white king.
Remember to allow 1 move by another piece - white must move a
pawn to let
the king come out.
Set the depth to 8 and start the search. It will take a little
more than
half an hour. All timings in this documentation and in the menues
applies
to my 486 dx 50 Mhz (my current 2.6 GHz PC is 80 times faster).
I have tried to only allow g1(the mating side) and g8 to move,
and then all
the mates in move 6 (use depth 11) will occur in an hour as far
as I remember.
White captures d8/f8, black moves to d8/f8, white mates on c7/g7.
This shows how deep you can go with these features.
I have also made some other things you can demand on the mating
position.
You can demand a certain kind of man to make the mating move
(function 5).
Please notice that this does not have to be the man that checks
the king if
the check is a discovered check. You cannot demand a certain kind
of man to
check and mate.
You can also demand something about the square the mating move
goes to. Must
it be empty or a certain kind of man (function 6).
ITERATIVE SEARCH
I had hoped that the program with the above features could find
the shortest
mate in all combinations where (a certain kind of man makes the
mating move)
and (moves to a square with a certain content).
For this purpose I have made an iterative search. That is, it
first searches
for a mate in n moves, then in n+1 moves etc.
Try to search for the fools mate (fx 1.g4,e6 2.f3,Qh4) with
function 2.
Search from mate in 1 move to a mate in 8 moves.
When the program finds a mate in iteration 4, it cancels further
iterations.
In iteration 1 BRUTALIS searches for white to mate in 1 move, in
iteration 2
for black to mate in 2 (half)moves etc.
If you want to find the shortest white mate, you should choose
both the
first and last iteration as odd, so the difference is an even
number.
In this case the program ask if you will go to next iteration
with +1 (this
means altering white and black mates) or +2 (only mates by one
side - in our
case white if you start with an odd iteration).
So iteration from 1 to iteration 9 with a step +2 finds the
shortest white
mate.
You can use the iterative search to find shorter solutions than
the intended
solutions in helpmateproblems.
Please notice that the special functions 'change side' if you use
a step that
is +1. If you for the fools mate demand that the black queen is
on h4, the
next iteration will demand a white queen on h5!
The initial position (or any other position) is mirrored this
way.
BRUTALIS has a hidden function 't' that makes this turn manually.
Try to set
some demands in function 7, 8 and 9 and use the turning.
Be aware that function 7, 8 and 9 fits with the FIRST iteration
you have
chosen - function 5 and 6 turns automatically.
DISPLAY
BRUTALIS displays the move it searches right now.
It also displays a line when it goes to the next iteration.
When a solution is found, nothing but solutions are displayed.
For every 10 solutions the program pauses so you won't miss any
solution.
PLEASE NOTICE
Almost nothing you type in is checked in any way.
So any error may crash the program (I have never tried; though).
HISTORY
In 1995 I started making the chessprogram Dabbaba.
When it was 2 months old I took a copy of it and made BRUTALIS.
SPEED
Dabbaba has some knowledge to make better ordering of moves.
This is unimportant for BRUTALIS and slows it a bit.
But it is also incorporated in the movegeneration, so I have not
bothered
to remove it (may increase the speed by 40%).
Identifying identical positions may make the program 2-3 times
faster, BUT:
Every extra halfmove search with fx 32 moves in a position takes
32 times
longer.
This means that 2 extra halfmoves takes 1000 times longer.
Even with a computer that is 1.000.000 times faster you can only
search
4 extra halfmoves...
So small improvements don't help very much...
KNOWN ERRORS
The timer overflows when the programs solves long tasks.
The castle-move is always considered as a kingmove, so if you
want many
moves with a rook that castles it will disappear for BRUTALIS.
IMPROVEMENTS
A save, load and edit position would be nice.
I had other ideas about the program, but dropped them when I
discovered how
long time a deep search takes.
Typing 2,3,4,5,6,7 instead of p,n,b,r,q,k is silly.
An interesting idea is to make the program selektive so it only
searches
promising lines. Then it could search deeper and eventually find
(unwanted)
solutions in deeper problems.
You cannot break the programs search.
THE NAME BRUTALIS
Most chessprograms use a 'brute-force' search with alpha-beta,
but a program
like BRUTALIS cannot use the very timesaving alpha-beta feature
because it
must search every single move in all variations.
So BRUTALIS is really brute force.
Besides; a danish ZOO had a rhinoceros named BRUTALIS. It lost
its partner
and got more and more angry. It became a problem because it
started to
destroy everything.
Taken it's life was considered, but it was decided to bring it
back to Africa
even though it was expensive and difficult.
The television followed BRUTALIS and visitid it later. It is
happy now as
your BRUTALIS is happy to be on your harddisc.