dealer.dpp

Langue: en

Version: 2007-05-18 (debian - 07/07/09)

Section: 6 (Jeux)

NAME

dealer.dpp - preprocessor for dealer scripts

SYNOPSIS

dealer.dpp [inputfile]

DESCRIPTION

dealer.dpp stands for dealer-pre-processor. Its main purpose it to preprocess input files for Hans van Staveren's great dealer program.

SYNTAX

The program expands shape specifications of the form:
     shape{COMPASS, shp1 + shp2 + ... + shpM - shm1 - ... - shmN}
 
 

regular shapes

7xxx, 4432, 4xx5 have the same meaning as in original dealer.

the `at least' operator

whenever you put a `+' after a suit-length, it means `at least'.

     shape{north, 5+xx5+}: at least 5/5 in the blacks,
  -->shape(north,5xx5 + 5xx6 + 6xx5 + 5xx7 + 6xx6 + 7xx5 + 5008 + 6007
                 + 7006 + 8005)
 
 

the `at most' operator:

same as the `at least', just use a `-':

     shape{north, 2-xxx}: at most 2 spades,
  -->shape(north,0xxx + 1xxx + 2xxx)
 
 

the `range' operator:

the range operator operates on a single suit. It comes with [], like in Perl.

     shape{north, x[3-5]x[13]}: (3 to 5) hearts, and one or 3 clubs 
  -->shape(north,x3x1 + x4x1 + x3x3 + x5x1 + x4x3 + x5x3)
 
 

Note that shape{north, 3-xxx} is equivalent to shape{north,[0-3]xxx} You can write compound ranges if you want:

     shape{north, [013-68]xxx} means: 0,1,3,4,5,6 or 8 spades.
 
 

the `permutation' operator:

the permutation operator will appears as () like in the WBF rules of specifying shapes.

     shape{north, (4432)}: any 4432 hand.
  -->shape(north,any 4432)
 
 

what's best is that the () operator can operate on restricted groups of cards:

     shape{north, 5s(431)}: 5 spades, the others suits being (431).
  -->shape(north,5134 + 5314 + 5143 + 5341 + 5413 + 5431)
 
 

What you have to do is:

specify the suit names (s,h,d,c in english) in the left part of the shape, in any order,
and enclose the rest of the permutation into () in the right part.

A (complicated) example:

     shape{north, 4+c3+d(2+2+)}: at least 5 clubs, at least 3 diamonds, 
                                and no short major.
  -->shape(north,3334 + 4234 + 2434 + 3244 + 2344 + 2254 + 3235 + 2335 + 2245 + 2236)
 
 

the `Major' operator:

has to be used together with the () operator. `M' stands for `a major' The `M' operator can only be used in the left part (never put a M inside the parens)

     shape{north, 5M(xxx)}
  -->shape(north,x5xx + 5xxx)
 
 
     shape{north, 5+M3+c(31)}
  -->shape(north,1534 + 3514 + 1633 + 3613 + 5134 + 5314 + 6133 + 6313)
 
 

the `minor' operator:

same as the `Major' operator, but in lowercase `m'.

     shape{north, 5M5m(xx)}
  -->shape(north,x5x5 + 5xx5 + x55x + 5x5x)
 
 

the `conditional' operator:

you've got the possibility of specifying complex conditions to be verified that cannot be simply expressed by other operators. In order to do that, you use the `:' operator, just after the atomic-shape specification:

     shape{north, shp1:condition1,condition2,...}
 
 

The conditions use the letters (s,h,d,c) as variables for the suit lengths, and the usual C-operators (*,+,-,/,>,<,==,!,?, and so on). Note that the `,' stands for the `and-logical' operator. You can use `or' for the `or-logical' operator.

     shape{north, 4+s4+h(xx):d>c,h+s==10}
  -->shape(north,6421 + 6430 + 5521 + 5530 + 4621 + 4630)
 
 

EXAMPLES

a balanced hand
  (3+3+3+2+)
 
 
a french 1H opening
  x5+xx:h>s,h>=d,h>=c
 
 
my No_trump opening
  hn = hcp(north)
  n1NT = (hn > 14 and hn < 18 and shape{north, 5m(332) + 5m2s(42)} )
      or (hn > 13 and hn < 17 and shape{north, 6m(322)}            )
      or (hn > 15 and hn < 18 and shape{north, 5M(332)}            )
      or (hn > 15 and hn < 19 and shape{north, (4432) + (4333)}    )
 
 

SEE ALSO

dealer(6), /usr/share/doc/dealer/Manual.

AUTHORS

Francois Dellacherie
Manpage: Christoph Berg <cb@df7cb.de>

LICENSE

This program is hereby put in the public domain. Do with it whatever you want, but I would like you not to redistribute it in modified form without mentioning the fact of modification. I will accept bug reports and modification requests, without any obligation of course, but fixing bugs someone else put in is beyond me.