From 8392787a737e086ab339746b17fb74abec79905f Mon Sep 17 00:00:00 2001 From: Bo Haglund Date: Sun, 11 May 2014 08:01:44 -0400 Subject: [PATCH] historical commit dds 1.1.20 --- DLL-dds_1119_m.rtf => DLL-dds_1120_m.rtf | 21 ++++---- ...s_1119plus_b.rtf => DLL-dds_1120plus_b.rtf | 16 +++---- dds.cpp | 48 +++++++++++++++---- dll.h | 2 +- release_notes.txt | 7 +++ 5 files changed, 64 insertions(+), 30 deletions(-) rename DLL-dds_1119_m.rtf => DLL-dds_1120_m.rtf (96%) rename DLL-dds_1119plus_b.rtf => DLL-dds_1120plus_b.rtf (97%) diff --git a/DLL-dds_1119_m.rtf b/DLL-dds_1120_m.rtf similarity index 96% rename from DLL-dds_1119_m.rtf rename to DLL-dds_1120_m.rtf index 4768fa25..fda964cb 100644 --- a/DLL-dds_1119_m.rtf +++ b/DLL-dds_1120_m.rtf @@ -42,9 +42,9 @@ heading 2;}{\s3\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel2\rin0\li \widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1053\langfe1053\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1053\langfenp1053 \snext11 \ssemihidden \sunhideused Normal Table;}{\*\cs15 \additive \rtlch\fcs1 \ab\af0\afs32 \ltrch\fcs0 \b\fs32\kerning32\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink1 \slocked \spriority9 Rubrik 1 Char;}{\*\cs16 \additive \rtlch\fcs1 \ab\ai\af0\afs28 \ltrch\fcs0 \b\i\fs28\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink2 \slocked \ssemihidden \spriority9 Rubrik 2 Char;}{\*\cs17 \additive \rtlch\fcs1 \ab\af0\afs26 \ltrch\fcs0 \b\fs26\loch\f31502\hich\af31502\dbch\af31501 -\sbasedon10 \slink3 \slocked \ssemihidden \spriority9 Rubrik 3 Char;}}{\*\rsidtbl \rsid812199\rsid1927002\rsid5917127\rsid6319433\rsid10306343\rsid10776626}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1 -\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Bo Haglund}{\creatim\yr2012\mo10\dy22\hr23\min26}{\revtim\yr2014\mo3\dy31\hr20\min58}{\version6}{\edmins0}{\nofpages4}{\nofwords1213}{\nofchars6433}{\nofcharsws7631}{\vern49167}}{\*\xmlnstbl {\xmlns1 ht -tp://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1417\margr1417\margt1417\margb1417\gutter0\ltrsect +\sbasedon10 \slink3 \slocked \ssemihidden \spriority9 Rubrik 3 Char;}}{\*\rsidtbl \rsid812199\rsid1927002\rsid5917127\rsid6319433\rsid9243715\rsid10306343\rsid10776626}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0 +\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Bo Haglund}{\creatim\yr2012\mo10\dy22\hr23\min26}{\revtim\yr2014\mo5\dy11\hr6\min57}{\version7}{\edmins0}{\nofpages4}{\nofwords1213}{\nofchars6433}{\nofcharsws7631}{\vern49167}} +{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1417\margr1417\margt1417\margb1417\gutter0\ltrsect \widowctrl\ftnbj\aenddoc\hyphhotz425\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120 \dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot1927002 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}} {\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}} @@ -55,14 +55,13 @@ tp://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\mar \par \hich\af1\dbch\af31505\loch\f1 Latest DLL issue with this description is available at }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 HYPERLINK "http://www.bahnhof.se/wb758135/"}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\insrsid1927002 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b5800000068007400740070003a002f002f007700770077002e006200610068006e0068006f0066002e00730065002f00770062003700350038003100330035002f000000795881f43b1d7f48af2c825dc48527630000 -0000a5ab000000206865}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\ul\cf2\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 http://www.bahnhof.se/wb758135/}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj { +0000a5ab00000020686500}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\ul\cf2\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 http://www.bahnhof.se/wb758135/}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj { \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \par \par \par }\pard\plain \ltrpar\s2\ql \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang1053\langfe1053\loch\af1\hich\af1\dbch\af31505\cgrid\langnp1053\langfenp1053 {\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\ul\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 Short description of the DLL functions supported in Do}{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 -\b\fs20\ul\cf1\lang1033\langfe1053\langnp1033\insrsid1927002\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 uble Dummy Problem Solver 1.1.1}{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\ul\cf1\lang1033\langfe1053\langnp1033\insrsid5917127 -\hich\af1\dbch\af31505\loch\f1 9}{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\ul\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 +\b\fs20\ul\cf1\lang1033\langfe1053\langnp1033\insrsid9243715 \hich\af1\dbch\af31505\loch\f1 uble Dummy Problem Solver 1.1.20}{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\ul\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \par }\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang1053\langfe1053\loch\af1\hich\af1\dbch\af31505\cgrid\langnp1053\langfenp1053 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \par }\pard\plain \ltrpar\s3\ql \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel2\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang1053\langfe1053\loch\af1\hich\af1\dbch\af31505\cgrid\langnp1053\langfenp1053 {\rtlch\fcs1 @@ -174,17 +173,17 @@ int equals[13]; /* Bitstring of ranks for equivalent lower rank cards. Th \ab\af1\afs20 \ltrch\fcs0 \b\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \par \hich\af1\dbch\af31505\loch\f1 SolveBoardPBN \par -\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 In SolveBoardPBN th\hich\af1\dbch\af31505\loch\f1 e remaining cards in the deal information are given in PBN text +\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 In SolveBoardPBN t\hich\af1\dbch\af31505\loch\f1 he remaining cards in the deal information are given in PBN text \par \hich\af1\dbch\af31505\loch\f1 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 -\par \hich\af1\dbch\af31505\loch\f1 struc\hich\af1\dbch\af31505\loch\f1 t dealPBN \{ +\par \hich\af1\dbch\af31505\loch\f1 stru\hich\af1\dbch\af31505\loch\f1 ct dealPBN \{ \par \hich\af1\dbch\af31505\loch\f1 int trump; \par \hich\af1\dbch\af31505\loch\f1 int first; \par \hich\af1\dbch\af31505\loch\f1 int currentTrickSuit[3]; }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \par \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 int currentTrickRank[3]; \par \hich\af1\dbch\af31505\loch\f1 char remainCards[80]; /* First character identifies the hand having the cards given first -\par \hich\af1\dbch\af31505\loch\f1 in the string, the\hich\af1\dbch\af31505\loch\f1 n the cards of the other hands are given in a +\par \hich\af1\dbch\af31505\loch\f1 in the string, th\hich\af1\dbch\af31505\loch\f1 en the cards of the other hands are given in a \par \tab \tab \tab \hich\af1\dbch\af31505\loch\f1 clock-wise order, see example above. Null characters fill out \par \tab \tab \tab \hich\af1\dbch\af31505\loch\f1 the character array at the end. */ \par \}\hich\af1\dbch\af31505\loch\f1 ; @@ -335,8 +334,8 @@ fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000505a -1d34134dcf01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e50000000000000000000000004070 +ff7dd56ccf01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file diff --git a/DLL-dds_1119plus_b.rtf b/DLL-dds_1120plus_b.rtf similarity index 97% rename from DLL-dds_1119plus_b.rtf rename to DLL-dds_1120plus_b.rtf index 47af55ed..8ef6bfda 100644 --- a/DLL-dds_1119plus_b.rtf +++ b/DLL-dds_1120plus_b.rtf @@ -40,9 +40,9 @@ \widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1053\langfe1053\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1053\langfenp1053 \snext11 \ssemihidden \sunhideused Normal Table;}{\*\cs15 \additive \rtlch\fcs1 \ab\af0\afs32 \ltrch\fcs0 \b\fs32\lang1033\langfe0\kerning32\loch\f31502\hich\af31502\dbch\af31501\langnp1033\langfenp0 \sbasedon10 \slink1 \slocked \spriority9 Rubrik 1 Char;}{\*\cs16 \additive \rtlch\fcs1 \ab\ai\af0\afs28 \ltrch\fcs0 \b\i\fs28\lang1033\langfe0\loch\f31502\hich\af31502\dbch\af31501\langnp1033\langfenp0 \sbasedon10 \slink2 \slocked \ssemihidden \spriority9 Rubrik 2 Char;}{\*\cs17 \additive \rtlch\fcs1 \ab\af0\afs26 \ltrch\fcs0 -\b\fs26\lang1033\langfe0\loch\f31502\hich\af31502\dbch\af31501\langnp1033\langfenp0 \sbasedon10 \slink3 \slocked \ssemihidden \spriority9 Rubrik 3 Char;}}{\*\rsidtbl \rsid535025\rsid1201643\rsid4538894\rsid4542728\rsid5522304\rsid5969439\rsid6650094 -\rsid8617117\rsid14824249\rsid16130314\rsid16470149\rsid16608682\rsid16655487}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Bo Haglund} -{\creatim\yr2012\mo10\dy21\hr14\min22}{\revtim\yr2014\mo4\dy1\min13}{\version12}{\edmins38}{\nofpages5}{\nofwords1733}{\nofchars9190}{\nofcharsws10902}{\vern49167}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} +\b\fs26\lang1033\langfe0\loch\f31502\hich\af31502\dbch\af31501\langnp1033\langfenp0 \sbasedon10 \slink3 \slocked \ssemihidden \spriority9 Rubrik 3 Char;}}{\*\rsidtbl \rsid535025\rsid1201643\rsid2438269\rsid4538894\rsid4542728\rsid5522304\rsid5969439 +\rsid6650094\rsid8617117\rsid14824249\rsid16130314\rsid16470149\rsid16608682\rsid16655487}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Bo Haglund} +{\creatim\yr2012\mo10\dy21\hr14\min22}{\revtim\yr2014\mo5\dy11\hr6\min58}{\version13}{\edmins39}{\nofpages5}{\nofwords1733}{\nofchars9190}{\nofcharsws10902}{\vern49167}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} \paperw12240\paperh15840\margl1417\margr1417\margt1417\margb1417\gutter0\ltrsect \widowctrl\ftnbj\aenddoc\hyphhotz425\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120 \dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot4538894 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}} @@ -55,13 +55,13 @@ Normal Table;}{\*\cs15 \additive \rtlch\fcs1 \ab\af0\afs32 \ltrch\fcs0 \b\fs32\l \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\insrsid6650094\charrsid4538894 \hich\af1\dbch\af31505\loch\f1 Latest DLL issue with this description is available at }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\insrsid6650094\charrsid4538894 \hich\af1\dbch\af31505\loch\f1 HYPERLINK "http://www.bahnhof.se/wb758135/"}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\lang1053\langfe1053\langnp1053\insrsid4538894 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b5800000068007400740070003a002f002f007700770077002e006200610068006e0068006f0066002e00730065002f00770062003700350038003100330035002f000000795881f43b1d7f48af2c825dc48527630000 -0000a5ab00000000005a070000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\ul\cf2\insrsid6650094\charrsid4538894 \hich\af1\dbch\af31505\loch\f1 http://www.bahnhof.se/wb758135/}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 +0000a5ab00000000005a07000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\ul\cf2\insrsid6650094\charrsid4538894 \hich\af1\dbch\af31505\loch\f1 http://www.bahnhof.se/wb758135/}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\insrsid6650094\charrsid4538894 \par \par \par }\pard\plain \ltrpar\s2\ql \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1053\loch\af1\hich\af1\dbch\af31505\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\ul\cf1\insrsid6650094\charrsid4538894 \hich\af1\dbch\af31505\loch\f1 Short description of the DLL functions supported in D}{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\ul\cf1\insrsid16655487 -\hich\af1\dbch\af31505\loch\f1 ouble Dummy Problem Solver }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\ul\cf1\insrsid5522304 \hich\af1\dbch\af31505\loch\f1 1.1.19}{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\ul\cf1\insrsid8617117 +\hich\af1\dbch\af31505\loch\f1 ouble Dummy Problem Solver }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\ul\cf1\insrsid2438269 \hich\af1\dbch\af31505\loch\f1 1.1.20}{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\ul\cf1\insrsid8617117 \hich\af1\dbch\af31505\loch\f1 plus}{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\ul\cf1\insrsid6650094\charrsid4538894 \par }\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1053\loch\af1\hich\af1\dbch\af31505\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\insrsid6650094\charrsid4538894 @@ -69,7 +69,7 @@ Normal Table;}{\*\cs15 \additive \rtlch\fcs1 \ab\af0\afs32 \ltrch\fcs0 \b\fs32\l \ab\af1\afs20 \ltrch\fcs0 \b\fs20\cf1\insrsid6650094\charrsid4538894 \hich\af1\dbch\af31505\loch\f1 Callable functions \par }\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1053\loch\af1\hich\af1\dbch\af31505\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\insrsid6650094\charrsid4538894 -\par \hich\af1\dbch\af31505\loch\f1 ex\hich\af1\dbch\af31505\loch\f1 tern "C" __declspec(dllimport) int __stdcall SolveBoard(struct deal, int target, +\par \hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 xtern "C" __declspec(dllimport) int __stdcall SolveBoard(struct deal, int target, \par \hich\af1\dbch\af31505\loch\f1 int solutions, int mode, struct futureTricks *futp, }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\insrsid8617117 0}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\insrsid6650094\charrsid4538894 \hich\af1\dbch\af31505\loch\f1 ); \par @@ -406,8 +406,8 @@ fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e50000000000000000000000007092 -69792e4dcf01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e50000000000000000000000006004 +ff97d56ccf01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file diff --git a/dds.cpp b/dds.cpp index 26c4f9c6..8fad82c0 100644 --- a/dds.cpp +++ b/dds.cpp @@ -1,5 +1,5 @@ -/* DDS 1.1.19 A bridge double dummy solver. */ +/* DDS 1.1.20 A bridge double dummy solver. */ /* Copyright (C) 2006-2014 by Bo Haglund */ /* Cleanups and porting to Linux and MacOSX (C) 2006 by Alex Martelli */ /* */ @@ -6024,6 +6024,7 @@ int Par(struct ddTableResults * tablep, struct parResults *presp, int vulnerable int rawscore(int denom, int tricks, int isvul); void IniSidesString(int dr, int i, int t1, int t2, char stri[]); int CalcMultiContracts(int max_lower, int tricks); + int VulnerDefSide(int side, int vulnerable); /* Find best par result for N-S (i==0) or E-W (i==1). These will nearly always be the same, but when we have a "hot" situation @@ -6273,13 +6274,15 @@ int Par(struct ddTableResults * tablep, struct parResults *presp, int vulnerable To find the actual contract lowering allowed, it must be checked that the lowered contract still gets the score bonus points that is present in par score.*/ - sc2 = rawscore(par_denom[i], par_tricks[i], isvul); + sc2 = abs(par_score[i]); /* Score for making the tentative lower par contract. */ while (max_lower > 0) { if (denom_max < par_denom[i]) - sc1 = -rawscore(-1, par_tricks[i] - max_lower - tu_max, isvul); + sc1 = -rawscore(-1, par_tricks[i] - max_lower - tu_max, + VulnerDefSide(par_score[0]>0, vulnerable)); else - sc1 = -rawscore(-1, par_tricks[i] - max_lower - tu_max + 1, isvul); + sc1 = -rawscore(-1, par_tricks[i] - max_lower - tu_max + 1, + VulnerDefSide(par_score[0]>0, vulnerable)); /* Score for undertricks needed to beat the tentative lower par contract.*/ if (sc2 < sc1) break; @@ -6379,13 +6382,15 @@ int Par(struct ddTableResults * tablep, struct parResults *presp, int vulnerable To find the actual contract lowering allowed, it must be checked that the lowered contract still gets the score bonus points that is present in par score.*/ - sc2 = rawscore(par_denom[i], par_tricks[i], isvul); + sc2 = abs(par_score[i]); /* Score for making the tentative lower par contract. */ while (max_lower > 0) { if (denom_max < j) - sc1 = -rawscore(-1, 9/*par_tricks[i] + 1*/ - max_lower - tu_max, isvul); + sc1 = -rawscore(-1, 9 - max_lower - tu_max, + VulnerDefSide(par_score[0]>0, vulnerable)); else - sc1 = -rawscore(-1, 9 - max_lower - tu_max + 1, isvul); + sc1 = -rawscore(-1, 9 - max_lower - tu_max + 1, + VulnerDefSide(par_score[0]>0, vulnerable)); /* Score for undertricks needed to beat the tentative lower par contract.*/ if (sc2 < sc1) break; @@ -6454,13 +6459,15 @@ int Par(struct ddTableResults * tablep, struct parResults *presp, int vulnerable To find the actual contract lowering allowed, it must be checked that the lowered contract still gets the score bonus points that is present in par score.*/ - sc2 = rawscore(par_denom[i], par_tricks[i], isvul); + sc2 = abs(par_score[i]); /* Score for making the tentative lower par contract. */ while (max_lower > 0) { if (denom_max < j) - sc1 = -rawscore(-1, 8 - max_lower - tu_max, isvul); + sc1 = -rawscore(-1, 8 - max_lower - tu_max, + VulnerDefSide(par_score[0]>0, vulnerable)); else - sc1 = -rawscore(-1, 8 - max_lower - tu_max + 1, isvul); + sc1 = -rawscore(-1, 8 - max_lower - tu_max + 1, + VulnerDefSide(par_score[0]>0, vulnerable)); /* Score for undertricks needed to beat the tentative lower par contract.*/ if (sc2 < sc1) @@ -6622,5 +6629,26 @@ int CalcMultiContracts(int max_lower, int tricks) { } +int VulnerDefSide(int side, int vulnerable) { + if (vulnerable == 0) + return 0; + else if (vulnerable == 1) + return 1; + else if (side) { + /* N/S makes par contract. */ + if (vulnerable == 2) + return 0; + else + return 1; + } + else { + if (vulnerable == 3) + return 0; + else + return 1; + } +} + + diff --git a/dll.h b/dll.h index 37dad191..6e3031b6 100644 --- a/dll.h +++ b/dll.h @@ -31,7 +31,7 @@ /* end of portability-macros section */ -#define DDS_VERSION 10119 /* Version 1.1.19. Allowing for 2 digit +#define DDS_VERSION 10120 /* Version 1.1.20. Allowing for 2 digit minor versions */ /*#define BENCH*/ diff --git a/release_notes.txt b/release_notes.txt index ec5c51d1..f8222a5c 100644 --- a/release_notes.txt +++ b/release_notes.txt @@ -403,5 +403,12 @@ New build of dds.lib for meeting requirements in Visual C++ 2013. Many code changes to improve performance. Added par calculation in the "plus" version. +Release Notes DDS 1.1.20 +------------------------ +A fault in the par calculation has been fixed. The fault could cause +presentation of wrongly extra par contracts in cases were the sides had different +vulnerability. + +