Skip to content

Commit 4cf24b5

Browse files
bohaghostilefork
authored andcommitted
historical commit dds 1.1.12
1 parent 076fe73 commit 4cf24b5

9 files changed

+1504
-1673
lines changed

DDS_alg_descr-revE3.txt

-702
This file was deleted.

DDS_alg_descr-revE3.rtf renamed to DDS_alg_descr-revE4.rtf

+140-125
Large diffs are not rendered by default.

DLL-dds_1112_m.rtf

+123
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
{\rtf1\ansi\ansicpg1252\deff0\deflang1053\deflangfe1053{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fnil\fcharset0 Calibri;}}
2+
{\colortbl ;\red0\green0\blue255;\red0\green0\blue0;\red255\green0\blue0;}
3+
{\stylesheet{ Normal;}{\s1 heading 1;}{\s2 heading 2;}{\s3 heading 3;}}
4+
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\nowidctlpar\f0\fs20 Bo Haglund, Bob Richardson\par
5+
Rev M, 2011-10-14\par
6+
Latest DLL issue with this description is available at {\field{\*\fldinst{HYPERLINK "http://www.bahnhof.se/wb758135/"}}{\fldrslt{\ul\cf1 http://www.bahnhof.se/wb758135/}}}\f0\fs20\par
7+
\par
8+
\par
9+
\pard\keepn\nowidctlpar\s2\cf2\ul\b Short description of the DLL functions supported in Double Dummy Problem Solver 1.1.12\par
10+
\pard\nowidctlpar\ulnone\b0\par
11+
\pard\keepn\nowidctlpar\s3\b Callable functions\par
12+
\pard\nowidctlpar\b0\par
13+
extern "C" __declspec(dllimport) int __stdcall SolveBoard(struct deal, int target, \par
14+
int solutions, int mode, struct futureTricks *futp);\par
15+
\par
16+
extern "C" __declspec(dllimport) int __stdcall SolveBoardPBN(struct dealPBN, int target, \par
17+
int solutions, int mode, struct futureTricks *futp);\par
18+
\par
19+
\par
20+
\pard\keepn\nowidctlpar\s3\b SolveBoard\par
21+
\pard\nowidctlpar\b0\par
22+
Before SolveBoard can be called, a structure of type "futureTricks" must be declared. \par
23+
\par
24+
\b SolveBoard\b0 returns a status integer, "no fault" means the DLL supplies the trick data in the "futureTricks" type structure.\line Status codes: \par
25+
1=No fault, \par
26+
-1=Unknown fault, \par
27+
-2=No of cards = 0, \par
28+
-3=target > Number of tricks left, \par
29+
-4=Duplicated cards, \par
30+
-5=target < -1, \par
31+
-7=target >13, \par
32+
-8=solutions < 1, \par
33+
-9=solutions > 3, \par
34+
-10=No of cards > 52\par
35+
-11=Not used\par
36+
-12=Suit or rank value out of range for deal.currentTrickSuit or deal.currentTrickRank.\par
37+
-13=Card already played in the current trick is also defined as a remaining card to play.\par
38+
-14=Wrong number of remaining cards for a hand.\par
39+
\line Structure \rdblquote\b deal\b0\rdblquote defines all data needed to describe the deal to be analyzed.\par
40+
struct deal \{\f1 \par
41+
\f0 int trump; /* I.e. which suit that is trump or if contract is NT, Spades=0, Hearts=1, Diamonds=2, Clubs=3, NT=4 */\f1 \par
42+
\f0 int first; /* 0-3, 0=North, 1=East, 2=South, 3=West , Leading hand for the trick.*/\f1 \par
43+
\f0 int currentTrickSuit[3]; /* 0-2 for up to 3 cards in the order played */\par
44+
int currentTrickRank[3]; /* 2-14 for up to 3 cards */\f1\par
45+
\f0 unsigned int remainCards[4][4]; /* 1\super st\nosupersub index hand (0-3), 2\super nd\nosupersub index suit (0-3), values as bitstring of ranks bit 0=0, bit 1=0, bit 2=rank 2, \'85\'85\'85. bit 14=rank 14, bit 15=0\f1 \f0 for cards remaining after already played cards (cards already played to the current trick are not included in this bitstring). \line The decimal value for a card then range between 4 (=rank 2) and 16384 (Ace=rank 14). */\f1 \par
46+
\f0\};\f1 \f0\par
47+
\par
48+
Parameter \rdblquote\b target\b0\rdblquote is the number of tricks to be won by the side to play, -1 means that the program\f1 \f0 shall find the maximum number. For equivalent cards only the highest is returned. \par
49+
\line Parameter \rdblquote\b solutions\b0\rdblquote defines how many card solutions that SolveBoard must return:\par
50+
target=1-13, solutions=1: Returns only one of the cards. Its returned score is the same as target whentarget or higher tricks can be won. Otherwise, score \endash 1 is returned if target cannot be reached, or score 0 if no tricks can be won. \line target=-1, solutions=1: Returns only one of the optimum cards and its score.\par
51+
\cf0 target=0, solutions=1: Returns only one of the cards legal to play with score set to 0.\cf2\line target 1-13, solutions=2: Return all cards meeting target. Their returned scores are the same as target when target or higher tricks can be won. Otherwise, only one card is returned with score \endash 1 if target cannot be reached, or score 0 for all cards legal to play if no tricks can be won.\line target \endash 1, solutions=2: Return all optimum cards with their scores.\par
52+
\cf0 target=0, solutions=2: Return all cards legal to play with scores set to 0\cf3 .\cf2\line target irrelevant, solutions=3: Return all cards that can be legally played with their scores in descending order.\par
53+
\par
54+
Parameter \rdblquote\b mode\b0\rdblquote defines the DLL mode of operation.\line mode=0: Do not search to find the score if the hand to play has only one card, including its equivalents, to play. Score is set to \endash 2 for this card, indicating that there are no alternative cards. If there are multiple choices for cards to play, search is done to find the score. This mode is very fast but you don\rquote t \par
55+
mode=1: Always \cf0\lang1033 search to find the score. Even when the hand to play has only one card, with possible equivalents, to play. For both mode=0 and mode=1: If the preceding SolveBoard call had the same trump suit and the same deal, except for deal.first, then the transposition table contents is reused from the preceding SolveBoard call. Setting mode=2 is no longer needed in this case, but can still be done for backwards compatibility.\line mode=2: As for mode=1, but the transposition table contents is reused from the preceding SolveBoard call. It is the responsibility of the programmer using the DLL to ensure that reusing the table is safe in the actual situation. Example: Deal is the same, except for deal.first. Trump suit is the same. \par
56+
\pard\nowidctlpar\fi720 1\super st\nosupersub call: SolveBoard(deal, -1, 1, 1, &fut, 0), deal.first=1, i.e. East leads.\par
57+
\pard\nowidctlpar \tab 2\super nd\nosupersub call: SolveBoard(deal, -1, 1, 2, &fut, 0), deal.first=2, i.e. South leads.\par
58+
\tab 3rd call: SolveBoard(deal, -1, 1, 2, &fut, 0), deal.first=3, i.e. West leads. \par
59+
\pard\nowidctlpar\fi720 4th call: SolveBoard(deal, -1, 1, 2, &fut, 0), deal.first=0, i.e. North leads. \cf2\lang1053\par
60+
\pard\nowidctlpar\par
61+
struct \b futureTricks\b0 \{ /* The DLL provides the score (number of tricks) that can be won by the card to play defined by its suit and rank. Array of all alternative cards. */\f1 \par
62+
\f0 int nodes; /* Number of searched nodes */\par
63+
int cards; /* No of alternative cards */\f1\par
64+
\f0 int suit[13]; /* 0=Spades, 1=Hearts, 2=Diamonds, 3=Clubs */\par
65+
int rank[13]; /* 2-14 for 2 through Ace *\b / \par
66+
\b0 int equals[13]; /* Bitstring of ranks for equivalent lower rank cards. The decimal value range between 4 (=2) and 8192 (King=rank 13). When there are several \rdblquote equals\rdblquote , the value is the sum of each \rdblquote equal\rdblquote . *\b /\b0\par
67+
int score[13]; /* -1 indicates that target was not reached, otherwise target or max numbe of tricks */\f1 \par
68+
\f0\} ; \par
69+
\cf0\lang1033\fs24\par
70+
\pard\keepn\nowidctlpar\s3\cf2\lang1053\b\fs20\par
71+
SolveBoardPBN\par
72+
\par
73+
\b0 In SolveBoardPBN the remaining cards in the deal information are given in PBN text\par
74+
format (e.g. \line W:T5.K4.652.A98542 K6.QJT976.QT7.Q6 432.A.AKJ93.JT73 AQJ987.8532.84.K) instead of using bits 2-14 in an integer array. Otherwise, SolveboardPBN is identical to SolveBoard.\par
75+
\par
76+
struct dealPBN \{\par
77+
int trump; \par
78+
int first; \par
79+
int currentTrickSuit[3]; \b\par
80+
\b0 int currentTrickRank[3]; \par
81+
char remainCards[80]; /* First character identifies the hand having the cards given first\par
82+
in the string, then the cards of the other hands are given in a\par
83+
\tab\tab\tab clock-wise order, see example above. Null characters fill out\par
84+
\tab\tab\tab the character array at the end. */ \par
85+
\};\par
86+
\b\par
87+
\par
88+
\pard\nowidctlpar\cf0\lang1033\b0\fs24\par
89+
\pard\keepn\nowidctlpar\s1\cf2\lang1053\b\fs20 Revision History\par
90+
\pard\nowidctlpar\b0\par
91+
Rev A, 2006-02-25.\tab\tab First issue.\par
92+
\par
93+
Rev B, 2006-03-20\tab\tab Updated issue.\par
94+
\par
95+
\pard\nowidctlpar\fi-2880\li2880 Rev C, 2006-03-28\tab Updated issue. Addition of the SolveBoard parameter \rdblquote mode\rdblquote .\par
96+
\par
97+
Rev D, 2006-04-05\tab Updated issue. Usage of target=0 to list all cards that are legal to play.\par
98+
\par
99+
Rev E, 2006-05-29\tab Updated issue. New error code \endash 10 for number of cards > 52.\par
100+
\par
101+
Rev F, 2006-08-09\tab Updated issue. New mode parameter value = 2. New error code \endash 11 for calling SolveBoard with mode = 2 and forbidden values of other parameters.\par
102+
\pard\nowidctlpar\par
103+
\pard\nowidctlpar\fi-2880\li2880 Rev F1, 2006-08-14\tab Clarifications on conditions for returning scores for the different combinations of the values for target and solutions.\par
104+
\par
105+
Rev F2, 2006-08-26\tab New error code \endash 12 for wrongly set values of deal.currentTrickSuit and\line deal.currentTrickRank.\par
106+
\par
107+
Rev G, 2007-01-04\tab New DDS release 1.1, otherwise no change compared to isse F2.\par
108+
\par
109+
Rev H, 2007-04-23\tab DDS release 1.1.4, changes for parameter mode=2.\par
110+
\par
111+
Rev I, 2010-04-10\tab DDS release 2.0, multi-thread support.\par
112+
\par
113+
Rev J, 2010-05-29\tab DDS release 2.1, OpenMP support, reuse of previous DD transposition table results of similar deals.\par
114+
\par
115+
Rev K, 2010-10-27\tab Correction of fault in the description: 2nd index in resTable of the structure ddTableResults is declarer hand.\par
116+
\par
117+
Rev L, 2011-10-14\tab DDS release 2.1.2, added SolveBoardPBN and CalcDDtablePBN.\par
118+
\par
119+
Rev M, 2011-10-14\tab DDS release 1.1.12, added SolveBoardPBN.\par
120+
\par
121+
\pard\sa200\sl276\slmult1\cf0\lang29\f2\fs22\par
122+
}
123+

0 commit comments

Comments
 (0)