File: dealer.dpp.pod

package info (click to toggle)
dealer 20161012-4
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,148 kB
  • sloc: ansic: 2,436; yacc: 630; perl: 400; makefile: 139; sh: 5
file content (167 lines) | stat: -rw-r--r-- 4,237 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
=head1 NAME

dealer.dpp - preprocessor for dealer scripts

=head1 SYNOPSIS

B<dealer.dpp> [I<inputfile>]

=head1 DESCRIPTION

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

=head1 SYNTAX

The program expands shape specifications of the form:

    shape{COMPASS, shp1 + shp2 + ... + shpM - shm1 - ... - shmN}

=head2 regular shapes

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

=head2 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)

=head2 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)

=head2 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.

=head2 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:

=over

=item *

specify the suit names (s,h,d,c in english) in the left part of
the shape, in any order,

=item *

and enclose the rest of the permutation into () in the right part.

=back

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)

=head2 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)

=head2 the `minor' operator:

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

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

=head2 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)

=head1 EXAMPLES

=over

=item a balanced hand

 (3+3+3+2+)

=item a french 1H opening

 x5+xx:h>s,h>=d,h>=c

=item 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)}    )

=back

=head1 SEE ALSO

dealer(6),
F</usr/share/doc/dealer/Manual>.

=head1 AUTHORS

=over

=item Francois Dellacherie

=item Manpage: Christoph Berg <cb@df7cb.de>

=back

=head1 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.