diff --git a/DLL-dds_1116_m.rtf b/DLL-dds_1117_m.rtf similarity index 73% rename from DLL-dds_1116_m.rtf rename to DLL-dds_1117_m.rtf index e38eb12f..4e1f1e69 100644 --- a/DLL-dds_1116_m.rtf +++ b/DLL-dds_1117_m.rtf @@ -1,5 +1,5 @@ -{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff1\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang1053\deflangfe1053\themelang1053\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} -{\f34\fbidi \froman\fcharset1\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff1\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang1053\deflangfe1053\themelang1053\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} +{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;} {\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} @@ -7,42 +7,44 @@ {\f42\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f43\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f44\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f45\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} {\f46\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f47\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f49\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f50\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;} {\f52\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f53\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f54\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f55\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);} -{\f56\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f57\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f409\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f410\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;} -{\f412\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f413\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f416\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f417\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);} -{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} -{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} -{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} -{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} -{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;} -{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;} -{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} -{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} -{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} -{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} -{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} -{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} -{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} -{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;} -{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;} -{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} -{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} -{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} -{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; -\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1 -\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1053\langfe1053\loch\f1\hich\af1\dbch\af31505\cgrid\langnp1053\langfenp1053 \snext0 \sqformat \spriority0 Normal;}{\s1\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel0\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1053\langfe1053\loch\f1\hich\af1\dbch\af31505\cgrid\langnp1053\langfenp1053 \sbasedon0 \snext0 \slink15 \sqformat heading 1;}{\s2\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 -\ltrch\fcs0 \fs24\lang1053\langfe1053\loch\f1\hich\af1\dbch\af31505\cgrid\langnp1053\langfenp1053 \sbasedon0 \snext0 \slink16 \sqformat heading 2;}{\s3\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel2\rin0\lin0\itap0 \rtlch\fcs1 -\af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang1053\langfe1053\loch\f1\hich\af1\dbch\af31505\cgrid\langnp1053\langfenp1053 \sbasedon0 \snext0 \slink17 \sqformat heading 3;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* +{\f56\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f57\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f379\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f380\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;} +{\f382\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f383\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f386\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f387\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);} +{\f409\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f410\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f412\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f413\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} +{\f416\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f417\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;} +{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} +{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;} +{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} +{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0; +\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp +\fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 +\rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang1053\langfe1053\loch\f1\hich\af1\dbch\af31505\cgrid\langnp1053\langfenp1053 \snext0 \sqformat \spriority0 Normal;}{\s1\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel0\rin0\lin0\itap0 +\rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang1053\langfe1053\loch\f1\hich\af1\dbch\af31505\cgrid\langnp1053\langfenp1053 \sbasedon0 \snext0 \slink15 \sqformat heading 1;}{ +\s2\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang1053\langfe1053\loch\f1\hich\af1\dbch\af31505\cgrid\langnp1053\langfenp1053 \sbasedon0 \snext0 \slink16 \sqformat +heading 2;}{\s3\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel2\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang1053\langfe1053\loch\f1\hich\af1\dbch\af31505\cgrid\langnp1053\langfenp1053 +\sbasedon0 \snext0 \slink17 \sqformat heading 3;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* \ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1 -\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\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\af31503\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\af31503\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\af31503\afs26 \ltrch\fcs0 \b\fs26\loch\f31502\hich\af31502\dbch\af31501 -\sbasedon10 \slink3 \slocked \ssemihidden \spriority9 Rubrik 3 Char;}}{\*\rsidtbl \rsid812199\rsid1927002}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info -{\operator Bo Haglund}{\creatim\yr2012\mo10\dy22\hr23\min26}{\revtim\yr2012\mo10\dy22\hr23\min26}{\version2}{\edmins0}{\nofpages4}{\nofwords1213}{\nofchars6432}{\nofcharsws7630}{\vern49275}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/20 -03/wordml}}\paperw12240\paperh15840\margl1417\margr1417\margt1417\margb1417\gutter0\ltrsect +\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\rsid10776626}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info +{\operator Bo Haglund}{\creatim\yr2012\mo10\dy22\hr23\min26}{\revtim\yr2012\mo11\dy7\hr16\min11}{\version3}{\edmins0}{\nofpages4}{\nofwords1213}{\nofchars6432}{\nofcharsws7630}{\vern49275}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/200 +3/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 )}} @@ -53,25 +55,25 @@ Normal Table;}{\*\cs15 \additive \rtlch\fcs1 \ab\af31503\afs32 \ltrch\fcs0 \b\fs \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 -0000a5ab0000}}}{\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 { +0000a5ab000000}}}{\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\insrsid1927002 -\hich\af1\dbch\af31505\loch\f1 6}{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\ul\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 +\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\insrsid10776626 +\hich\af1\dbch\af31505\loch\f1 7}{\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 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \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\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 \hich\af1\dbch\af31505\loch\f1 extern "C" __declspec(dllimport) int __stdcall SolveBoard(struct deal, int target, +\par \hich\af1\dbch\af31505\loch\f1 extern "C\hich\af1\dbch\af31505\loch\f1 " __declspec(dllimport) int __stdcall SolveBoard(struct deal, int target, \par \hich\af1\dbch\af31505\loch\f1 int solutions, int mode, struct futureTricks *futp); \par -\par \hich\af1\dbch\af31505\loch\f1 exte\hich\af1\dbch\af31505\loch\f1 rn "C" __declspec(dllimport) int __stdcall SolveBoardPBN(struct dealPBN, int target, -\par \hich\af1\dbch\af31505\loch\f1 int solutions, int mode, struct futureTricks *futp); +\par \hich\af1\dbch\af31505\loch\f1 extern "C" __declspec(dllimport) int __stdcall SolveBoardPBN(struct dealPBN, int target, +\par \hich\af1\dbch\af31505\loch\f1 int solutions, int mode, \hich\af1\dbch\af31505\loch\f1 struct futureTricks *futp); \par \par \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 @@ -80,13 +82,14 @@ HYPERLINK "http://www.bahnhof.se/wb758135/"}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \par \hich\af1\dbch\af31505\loch\f1 Before SolveBoard can be called, a structure of type "futureTricks" must be declared. \par -\par }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 SolveBoar\hich\af1\dbch\af31505\loch\f1 d}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 -\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 returns a status integer, "no fault" means the DLL supplies the trick data in the "futureTricks" type structure.\line Status codes: +\par }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 SolveBoard}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 +\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 returns a status integer, "no fault" means the DLL supplies the trick data in the "futureTricks" type structure.\line St\hich\af1\dbch\af31505\loch\f1 +atus codes: \par \hich\af1\dbch\af31505\loch\f1 1=No fault, \par \hich\af1\dbch\af31505\loch\f1 -1=Unknown fault, \par \hich\af1\dbch\af31505\loch\f1 -2=No of cards = 0, \par \hich\af1\dbch\af31505\loch\f1 -3=target > Number of tricks left, -\par \hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 -4=Duplicated cards, +\par \hich\af1\dbch\af31505\loch\f1 -4=Duplicated cards, \par \hich\af1\dbch\af31505\loch\f1 -5=target < -1, \par \hich\af1\dbch\af31505\loch\f1 -7=target >13, \par \hich\af1\dbch\af31505\loch\f1 -8=solutions < 1, @@ -95,97 +98,94 @@ HYPERLINK "http://www.bahnhof.se/wb758135/"}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \par \hich\af1\dbch\af31505\loch\f1 -11=Not used \par \hich\af1\dbch\af31505\loch\f1 -12=Suit or rank value out of range for deal.currentTrickSuit or deal.currentTrickRank. \par \hich\af1\dbch\af31505\loch\f1 -13=Card already played in the current trick is also defined as a remaining card to play. -\par \hich\af1\dbch\af31505\loch\f1 -14=Wrong number of remaining cards for a hand. +\par \hich\af1\dbch\af31505\loch\f1 -14=Wrong number of remaining cards for a ha\hich\af1\dbch\af31505\loch\f1 nd. \par \hich\af1\dbch\af31505\loch\f1 \line \hich\f1 Structure \'94}{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 deal}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 defines all data needed to describe the deal to be analyzed. \par \hich\af1\dbch\af31505\loch\f1 struct deal \{}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af0\dbch\af31505\loch\f0 -\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 int trump; /* I.e\hich\af1\dbch\af31505\loch\f1 -. which suit that is trump or if contract is NT, Spades=0, Hearts=1, Diamonds=2, Clubs=3, NT=4 */}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af0\dbch\af31505\loch\f0 +\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 + int trump; /* I.e. which suit that is trump or if contract is NT, Spades=0, Hearts=1, Diamonds=2, Clubs=3, NT=4 */}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 +\hich\af0\dbch\af31505\loch\f0 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 int first; /* 0-3, 0=North, 1=East, 2=South, 3=West , Leading hand for the trick.*/}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af0\dbch\af31505\loch\f0 -\par \hich\af0\dbch\af31505\loch\f0 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 int currentTrickSuit[3]; /* 0-2 for up to 3 cards in the o -\hich\af1\dbch\af31505\loch\f1 rder played */ +\par \hich\af0\dbch\af31505\loch\f0 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 int currentTrickSuit[3]; /* 0-2 for up to 3 cards in the order played */ \par \hich\af1\dbch\af31505\loch\f1 int currentTrickRank[3]; /* 2-14 for up to 3 cards */}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 -\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 unsigned int remainCards[4][4]; /* 1}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 +\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 unsigned int remainCards\hich\af1\dbch\af31505\loch\f1 [4][4]; /* 1}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\super\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 st}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 index hand (0-3), 2}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\super\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 nd}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 \hich\f1 index suit (0-3), values as bitstring of ranks bit 0=0, bit 1=0, bit 2=rank 2, \'85\'85\'85\loch\f1 . bit 14=rank 14, bit 15=0}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af0\dbch\af31505\loch\f0 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 -\hich\af1\dbch\af31505\loch\f1 for cards \hich\af1\dbch\af31505\loch\f1 remaining after already played cards (cards already played to the current trick are not included in this bitstring). \line +\hich\af1\dbch\af31505\loch\f1 for cards remaining after already played cards (cards already played to the current trick are not included in \hich\af1\dbch\af31505\loch\f1 this bitstring). \line The decimal value for a card then range between 4 (=rank 2) and 16384 (Ace=rank 14). */}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af0\dbch\af31505\loch\f0 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \}\hich\af1\dbch\af31505\loch\f1 ;}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af0\dbch\af31505\loch\f0 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \par \par \hich\af1\dbch\af31505\loch\f1 \hich\f1 Parameter \'94}{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 target}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 -\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 is the number of trick\hich\af1\dbch\af31505\loch\f1 s to be won by the side to play, -1 means that the program}{\rtlch\fcs1 \af0\afs20 -\ltrch\fcs0 \f0\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af0\dbch\af31505\loch\f0 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 -\hich\af1\dbch\af31505\loch\f1 shall find the maximum number. For equivalent cards only the highest is returned. +\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 is the number of tricks to be won by the side to play, -1 means that the program}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 +\f0\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af0\dbch\af31505\loch\f0 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 +shall find the maximum number. For equiva\hich\af1\dbch\af31505\loch\f1 lent cards only the highest is returned. \par \line \hich\af1\dbch\af31505\loch\f1 \hich\f1 Parameter \'94}{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 solutions}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 defines how many card solutions that SolveBoard must return: -\par \hich\af1\dbch\af31505\loch\f1 target=1-13, solutions=1: \hich\af1\dbch\af31505\loch\f1 Returns only one of the cards. Its returned score is the same as target whentarget or higher tricks can be won. Otherwise, score \hich\f1 \endash \loch\f1 -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 o\hich\af1\dbch\af31505\loch\f1 f\hich\af1\dbch\af31505\loch\f1 the optimum cards and its score. -\par \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 -target=0, solutions=1: Returns only one of the cards legal to play with score set to 0.}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \line \hich\af1\dbch\af31505\loch\f1 - target 1-13, solutions=2: Return all cards meeting target. Their returned scores are the same as target when target or higher tr\hich\af1\dbch\af31505\loch\f1 icks can be won. Otherwise, only one card is returned with score \hich\f1 \endash \loch\f1 -1 if target cannot be reached, or score 0 for all cards legal to play if no tricks can be won.\line target \hich\f1 \endash \loch\f1 1, solutions=2: Return all optimum cards with their scores. -\par \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 target=0, solutions=2:\hich\af1\dbch\af31505\loch\f1 - Return all cards legal to play with scores set to 0}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf6\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 .}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 -\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \line \hich\af1\dbch\af31505\loch\f1 target irrelevant, solutions=3: Return all cards that can be legally played with their scores in descending order. +\par \hich\af1\dbch\af31505\loch\f1 target=1-13, solutions=1: Returns only one of the cards. Its returned score is the same as target whentarget or higher tricks \hich\af1\dbch\af31505\loch\f1 can be won. Otherwise, score \hich\f1 \endash \loch\f1 +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 \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 target=0, solutions=1: Returns only one of the cards legal to p +\hich\af1\dbch\af31505\loch\f1 lay with score set to 0.}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \line \hich\af1\dbch\af31505\loch\f1 + 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 \hich\f1 \endash \loch\f1 +1 if target cannot be reached, or \hich\af1\dbch\af31505\loch\f1 score 0 for all cards legal to play if no tricks can be won.\line target \hich\f1 \endash \loch\f1 1, solutions=2: Return all optimum cards with their scores. +\par \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 target=0, solutions=2: Return all cards legal to play with scores set to 0}{ +\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf6\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 .}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \line \hich\af1\dbch\af31505\loch\f1 + target irrelevant, solutions=3: Return all\hich\af1\dbch\af31505\loch\f1 cards that can be legally played with their scores in descending order. \par \par \hich\af1\dbch\af31505\loch\f1 \hich\f1 Parameter \'94}{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 mode}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 -\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 defines the DLL mode of operation.\line mode=0: Do not search to f\hich\af1\dbch\af31505\loch\f1 -ind the score if the hand to play has only one card, including its equivalents, to play. Score is set to \hich\f1 \endash \loch\f1 -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. T\hich\af1\dbch\af31505\loch\f1 h\hich\af1\dbch\af31505\loch\f1 is mode is very fast but you don\hich\f1 -\rquote \loch\f1 t -\par \hich\af1\dbch\af31505\loch\f1 mode=1: Always }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1053\langnp1033\insrsid812199 \hich\af1\dbch\af31505\loch\f1 -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\hich\af1\dbch\af31505\loch\f1 - 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 tr\hich\af1\dbch\af31505\loch\f1 a\hich\af1\dbch\af31505\loch\f1 -nsposition 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 -\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 is the same. +\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \loch\af1\dbch\af31505\hich\f1 \'94\loch\f1 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 se\hich\af1\dbch\af31505\loch\f1 t to \hich\f1 \endash \loch\f1 +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\hich\f1 \rquote \loch\f1 t +\par \hich\af1\dbch\af31505\loch\f1 mode=1: Always }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1053\langnp1033\insrsid812199 \hich\af1\dbch\af31505\loch\f1 search to find the score. Even when the hand t\hich\af1\dbch\af31505\loch\f1 +o 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 precedi +\hich\af1\dbch\af31505\loch\f1 n\hich\af1\dbch\af31505\loch\f1 g 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\hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 +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 }\pard \ltrpar\ql \fi720\li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1053\langnp1033\insrsid812199 \hich\af1\dbch\af31505\loch\f1 1}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1053\super\langnp1033\insrsid812199 \hich\af1\dbch\af31505\loch\f1 st}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1053\langnp1033\insrsid812199 \hich\af1\dbch\af31505\loch\f1 call: SolveBoard(deal, -1, 1, 1, &fut, 0), deal.first=1, i.e. East leads. \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1053\langnp1033\insrsid812199 \hich\af1\dbch\af31505\loch\f1 \tab 2}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 -\fs20\lang1033\langfe1053\super\langnp1033\insrsid812199 \hich\af1\dbch\af31505\loch\f1 nd}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1053\langnp1033\insrsid812199 \hich\af1\dbch\af31505\loch\f1 - call: SolveBoard(deal, -1, 1, 2, &fut, 0), deal.first=2, i.e. South leads. -\par \hich\af1\dbch\af31505\loch\f1 \tab 3rd call: SolveBoard(deal, -1, 1, 2, &fut, 0), deal.first=3, i.e. West lead\hich\af1\dbch\af31505\loch\f1 s. +\fs20\lang1033\langfe1053\super\langnp1033\insrsid812199 \hich\af1\dbch\af31505\loch\f1 nd}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1053\langnp1033\insrsid812199 \hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 +call: SolveBoard(deal, -1, 1, 2, &fut, 0), deal.first=2, i.e. South leads. +\par \hich\af1\dbch\af31505\loch\f1 \tab 3rd call: SolveBoard(deal, -1, 1, 2, &fut, 0), deal.first=3, i.e. West leads. \par }\pard \ltrpar\ql \fi720\li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\lang1033\langfe1053\langnp1033\insrsid812199 \hich\af1\dbch\af31505\loch\f1 4th call: SolveBoard(deal, -1, 1, 2, &fut, 0), deal.first=0, i.e. North leads. }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \par \hich\af1\dbch\af31505\loch\f1 struct }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 futureTricks}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 -\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 \{\hich\af1\dbch\af31505\loch\f1 - /* 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. */}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 -\f0\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af0\dbch\af31505\loch\f0 +\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 \{ /* 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. */ +}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af0\dbch\af31505\loch\f0 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 int nodes; /* Number of searched nodes */ -\par \hich\af1\dbch\af31505\loch\f1 int cards; /* No of alternative cards */}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 -\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 i\hich\af1\dbch\af31505\loch\f1 nt suit[13]; /* 0=Spades, 1=Hearts, 2=Diamonds, 3=Clubs */ +\par \hich\af1\dbch\af31505\loch\f1 int cards; /* No of alternative\hich\af1\dbch\af31505\loch\f1 cards */}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 +\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 int suit[13]; /* 0=Spades, 1=Hearts, 2=Diamonds, 3=Clubs */ \par \hich\af1\dbch\af31505\loch\f1 int rank[13]; /* 2-14 for 2 through Ace *}{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 / -\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 \hich\f1 -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 \'94\loch\f1 \hich\f1 equals\'94\loch\f1 \hich\f1 , the value is the sum of each \'94 -\loch\f1 \hich\f1 equal\'94\loch\f1 . *}{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 /}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 -\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 -\par \hich\af1\dbch\af31505\loch\f1 int score[13]; /* -1 indicates th\hich\af1\dbch\af31505\loch\f1 at target was not reached, otherwise target or max numbe of tricks */}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 -\f0\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af0\dbch\af31505\loch\f0 +\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 equals[13]; /* Bitstring of ranks for equivalent lower rank cards. The decimal value range between 4 \hich\af1\dbch\af31505\loch\f1 \hich\f1 (=2) and 8192 (King=rank 13). When there are several \'94\loch\f1 \hich\f1 equals\'94\loch\f1 +\hich\f1 , the value is the sum of each \'94\loch\f1 \hich\f1 equal\'94\loch\f1 . *}{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 /}{\rtlch\fcs1 \af1\afs20 +\ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 +\par \hich\af1\dbch\af31505\loch\f1 int score[13]; /* -1 indicates that target was not reached, otherwise target or max numbe of tricks */}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 +\hich\af0\dbch\af31505\loch\f0 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \}\hich\af1\dbch\af31505\loch\f1 ; \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \lang1033\langfe1053\langnp1033\insrsid812199 \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 \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 the 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.8\hich\af1\dbch\af31505\loch\f1 4.K) instead of using bits 2-14 in an integer array. Otherwise, SolveboardPBN is identical to SolveBoard. +\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 \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 struct dealPBN \{ +\par \hich\af1\dbch\af31505\loch\f1 struc\hich\af1\dbch\af31505\loch\f1 t 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 charac\hich\af1\dbch\af31505\loch\f1 ter identifies the hand having the cards given first -\par \hich\af1\dbch\af31505\loch\f1 in the string, then the cards of the other hands are given in a +\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 \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 \hich\af1\dbch\af31505\loch\f1 at the end. */ +\par \tab \tab \tab \hich\af1\dbch\af31505\loch\f1 the character array at the end. */ \par \}\hich\af1\dbch\af31505\loch\f1 ; \par }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \par @@ -202,27 +202,27 @@ int equals[13]; /* Bitstring of ranks for equivalent lower rank cards. Th \par }\pard \ltrpar\ql \fi-2880\li2880\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin2880\itap0 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 Rev C, 2006-03-28\tab \hich\f1 Updated issue. Addition of the SolveBoard parameter \'94\loch\f1 \hich\f1 mode\'94. \par -\par \hich\af1\dbch\af31505\loch\f1 Rev D, 2006-04-05\tab \hich\af1\dbch\af31505\loch\f1 Updated issue. Usage of target=0 to list all cards that are legal to play. +\par \hich\af1\dbch\af31505\loch\f1 Rev D, 2006-04-05\tab Updated issue. Usage of target=0 to list all cards that are legal to play. \par \par \hich\af1\dbch\af31505\loch\f1 Rev E, 2006-05-29\tab Updated issue. New error code \hich\f1 \endash \loch\f1 10 for number of cards > 52. \par -\par \hich\af1\dbch\af31505\loch\f1 Rev F, 2006-08-09\tab Updated issue. New mode parameter value = 2. New error code \hich\f1 \endash \loch\f1 11 for calling SolveBo\hich\af1\dbch\af31505\loch\f1 ard with mode = 2 and forbidden values of other parameters. +\par \hich\af1\dbch\af31505\loch\f1 Rev \hich\af1\dbch\af31505\loch\f1 F, 2006-08-09\tab Updated issue. New mode parameter value = 2. New error code \hich\f1 \endash \loch\f1 11 for calling SolveBoard with mode = 2 and forbidden values of other parameters. \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \par }\pard \ltrpar\ql \fi-2880\li2880\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin2880\itap0 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \fs20\cf1\lang1033\langfe1053\langnp1033\insrsid812199\charrsid1927002 \hich\af1\dbch\af31505\loch\f1 Rev F1, 2006-08-14\tab -Clarifications on conditions for returning scores for the different combinations of the values for target and solutions. +Clarifications on conditions for returning scores for the different combination\hich\af1\dbch\af31505\loch\f1 s of the values for target and solutions. \par -\par \hich\af1\dbch\af31505\loch\f1 Rev F2, 2006-08-26\tab New error code \hich\f1 \endash \loch\f1 12 for wrongly set \hich\af1\dbch\af31505\loch\f1 values of deal.currentTrickSuit and\line deal.currentTrickRank. +\par \hich\af1\dbch\af31505\loch\f1 Rev F2, 2006-08-26\tab New error code \hich\f1 \endash \loch\f1 12 for wrongly set values of deal.currentTrickSuit and\line deal.currentTrickRank. \par \par \hich\af1\dbch\af31505\loch\f1 Rev G, 2007-01-04\tab New DDS release 1.1, otherwise no change compared to isse F2. \par -\par \hich\af1\dbch\af31505\loch\f1 Rev H, 2007-04-23\tab DDS release 1.1.4, changes for parameter mode=2. +\par \hich\af1\dbch\af31505\loch\f1 Rev H, 2007-04-23\tab \hich\af1\dbch\af31505\loch\f1 DDS release 1.1.4, changes for parameter mode=2. \par -\par \hich\af1\dbch\af31505\loch\f1 Rev I, 2010-04-10\tab DDS release 2.0, multi-threa\hich\af1\dbch\af31505\loch\f1 d support. +\par \hich\af1\dbch\af31505\loch\f1 Rev I, 2010-04-10\tab DDS release 2.0, multi-thread support. \par \par \hich\af1\dbch\af31505\loch\f1 Rev J, 2010-05-29\tab DDS release 2.1, OpenMP support, reuse of previous DD transposition table results of similar deals. \par -\par \hich\af1\dbch\af31505\loch\f1 Rev K, 2010-10-27\tab Correction of fault in the description: 2nd index in resTable of the structure ddTableResults is declarer \hich\af1\dbch\af31505\loch\f1 hand. +\par \hich\af1\dbch\af31505\loch\f1 Rev K, 2010-10-27\tab Correction\hich\af1\dbch\af31505\loch\f1 of fault in the description: 2nd index in resTable of the structure ddTableResults is declarer hand. \par \par \hich\af1\dbch\af31505\loch\f1 Rev L, 2011-10-14\tab DDS release 2.1.2, added SolveBoardPBN and CalcDDtablePBN. \par \hich\af1\dbch\af31505\loch\f1 @@ -334,8 +334,8 @@ fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e50000000000000000000000000071 -70df9bb0cd01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e50000000000000000000000000052 +0a22fabccd01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file diff --git a/dds.cpp b/dds.cpp index 5fa70eb7..f1de1ac7 100644 --- a/dds.cpp +++ b/dds.cpp @@ -1,5 +1,5 @@ -/* DDS 1.1.16 A bridge double dummy solver. */ +/* DDS 1.1.17 A bridge double dummy solver. */ /* Copyright (C) 2006-2012 by Bo Haglund */ /* Cleanups and porting to Linux and MacOSX (C) 2006 by Alex Martelli */ /* */ @@ -851,14 +851,15 @@ void InitStart(int gb_ram, int ncores) { statex.dwLength = sizeof (statex); - GlobalMemoryStatusEx (&statex); + GlobalMemoryStatusEx (&statex); /* Using GlobalMemoryStatusEx instead of GlobalMemoryStatus + was suggested by Lorne Anderson. */ pcmem=(unsigned long long)(statex.ullTotalPhys/1024); GetSystemInfo(&temp); #endif -#ifdef __linux__ +#ifdef __linux__ /* The code for linux was suggested by Antony Lee. */ FILE* fifo = popen("free -k | tail -n+3 | head -n1 | awk '{print $NF}'", "r"); fscanf(fifo, "%ld", &pcmem); @@ -3387,12 +3388,6 @@ int MoveGen(struct pos * posPoint, int depth) { movePly[depth].move[m].suit=t; movePly[depth].move[m].rank=k; movePly[depth].move[m].sequence=0; - /*if (trump!=4) - movePly[depth].move[m].weight=WeightAllocTrump(posPoint, - &movePly[depth].move[m], depth, ris, trump); - else - movePly[depth].move[m].weight=WeightAllocNT(posPoint, - &movePly[depth].move[m], depth, ris);*/ m++; state=MOVESLOCKED; } @@ -3408,7 +3403,7 @@ int MoveGen(struct pos * posPoint, int depth) { k--; } if (m!=1) { - if (trump!=4) { + if ((trump!=4)&&(posPoint->winner[trump].rank!=0)) { for (k=0; k<=m-1; k++) movePly[depth].move[k].weight=WeightAllocTrump(posPoint, &movePly[depth].move[k], depth, ris, trump); @@ -3440,12 +3435,6 @@ int MoveGen(struct pos * posPoint, int depth) { movePly[depth].move[m].suit=suit; movePly[depth].move[m].rank=k; movePly[depth].move[m].sequence=0; - /*if (trump!=4) - movePly[depth].move[m].weight=WeightAllocTrump(posPoint, - &movePly[depth].move[m], depth, ris, trump); - else - movePly[depth].move[m].weight=WeightAllocNT(posPoint, - &movePly[depth].move[m], depth, ris);*/ m++; state=MOVESLOCKED; } @@ -3462,7 +3451,7 @@ int MoveGen(struct pos * posPoint, int depth) { } } - if (trump!=4) { + if ((trump!=4)&&(posPoint->winner[trump].rank!=0)) { for (k=0; k<=m-1; k++) { movePly[depth].move[k].weight=WeightAllocTrump(posPoint, &movePly[depth].move[k], depth, ris, trump); @@ -3493,7 +3482,7 @@ int WeightAllocNT(struct pos * posPoint, struct moveType * mp, int depth, unsigned short notVoidInSuit) { int weight=0, k, l, kk, ll, suit, suitAdd=0, leadSuit; int suitWeightDelta, first, q; - int rRank; + int rRank, thirdBestHand; int suitBonus=0; int winMove=FALSE; unsigned short suitCount, suitCountLH, suitCountRH, aggr; @@ -3509,6 +3498,7 @@ int WeightAllocNT(struct pos * posPoint, struct moveType * mp, int depth, switch (posPoint->handRelFirst) { case 0: + thirdBestHand=rel[aggr].absRank[3][suit].hand; suitCount=posPoint->length[q][suit]; suitCountLH=posPoint->length[lho[q]][suit]; suitCountRH=posPoint->length[rho[q]][suit]; @@ -3576,6 +3566,13 @@ int WeightAllocNT(struct pos * posPoint, struct moveType * mp, int depth, weight+=20/*17*//*14*/; } else { + if ((posPoint->secondBest[suit].hand==partner[first])&&(partner[first]==thirdBestHand)) + suitWeightDelta+=22/*10*/; + else if(((posPoint->secondBest[suit].hand==first)&&(partner[first]==thirdBestHand)&& + (posPoint->length[partner[first]][suit]>1))||((posPoint->secondBest[suit].hand==partner[first])&& + (first==thirdBestHand)&&(posPoint->length[partner[first]][suit]>1))) + suitWeightDelta+=24/*10*/; + if (((suitCountLH==1)&&(posPoint->winner[suit].hand==lho[first])) ||((suitCountRH==1)&&(posPoint->winner[suit].hand==rho[first]))) weight=suitWeightDelta+25/*23*//*22*/+rRank; @@ -3778,7 +3775,7 @@ int WeightAllocNT(struct pos * posPoint, struct moveType * mp, int depth, int WeightAllocTrump(struct pos * posPoint, struct moveType * mp, int depth, unsigned short notVoidInSuit, int trump) { int weight=0, k, l, kk, ll, suit, suitAdd=0, leadSuit; - int suitWeightDelta, first, q, rRank; + int suitWeightDelta, first, q, rRank, thirdBestHand; int suitBonus=0; int winMove=FALSE; unsigned short suitCount, suitCountLH, suitCountRH, aggr; @@ -3794,6 +3791,7 @@ int WeightAllocTrump(struct pos * posPoint, struct moveType * mp, int depth, switch (posPoint->handRelFirst) { case 0: + thirdBestHand=rel[aggr].absRank[3][suit].hand; suitCount=posPoint->length[q][suit]; suitCountLH=posPoint->length[lho[q]][suit]; suitCountRH=posPoint->length[rho[q]][suit]; @@ -3940,6 +3938,14 @@ int WeightAllocTrump(struct pos * posPoint, struct moveType * mp, int depth, weight+=14/*15*//*12*//*11*/; } else { + if ((posPoint->secondBest[suit].hand==partner[first])&&(partner[first]==thirdBestHand)) + suitWeightDelta+=20/*22*/; + else if(((posPoint->secondBest[suit].hand==first)&&(partner[first]==thirdBestHand)&& + (posPoint->length[partner[first]][suit]>1))|| + ((posPoint->secondBest[suit].hand==partner[first])&& + (first==thirdBestHand)&&(posPoint->length[partner[first]][suit]>1))) + suitWeightDelta+=20/*24*/; + if (((suitCountLH==1)&&(posPoint->winner[suit].hand==lho[first])) ||((suitCountRH==1)&&(posPoint->winner[suit].hand==rho[first]))) weight=suitWeightDelta+rRank-2; diff --git a/dll.h b/dll.h index 40e58a6c..7cbc4db6 100644 --- a/dll.h +++ b/dll.h @@ -31,13 +31,13 @@ /* end of portability-macros section */ -#define DDS_VERSION 10116 /* Version 1.1.16. Allowing for 2 digit +#define DDS_VERSION 10117 /* Version 1.1.17. Allowing for 2 digit minor versions */ /*#define BENCH*/ /*#define PBN*/ -/*#define PLUSVER*/ +#define PLUSVER #include /*#define _CRTDBG_MAP_ALLOC */ /* MEMORY LEAK? */ diff --git a/readme.txt b/readme.txt index 32f73c14..1a1da28e 100644 --- a/readme.txt +++ b/readme.txt @@ -1,7 +1,7 @@ -DDS 1.1.12, Bo Haglund 2011-10-21 +DDS 1.1.17, Bo Haglund 2012-11-07 For Win32, DDS compiles with Visual C++ 2010 Express edition -and the Mingw port of gcc. +and the TDM-GCC/Mingw port of gcc. When using Visual C++, the statement #include "stdafx.h" at the beginning of dds.cpp must be uncommented. @@ -28,8 +28,8 @@ This compilation alternative gives the best performance. By default the PBN versions for remaning cards in the deal information are included in SolveBoardPBN. Removing the PBN definition in dll.h will make a compilation without this function. This can be useful -if DDS 1.1.12 is to replace 1.1.11, and the application using DDS cannot -accept an interface change towards DDS. +if this version is to replace an older version, and the application +using DDS cannot accept an interface change towards DDS. 2) Compilation with definition STAT. Uncomment the definition of STAT. diff --git a/release_notes.txt b/release_notes.txt index 09c63344..09cad7ce 100644 --- a/release_notes.txt +++ b/release_notes.txt @@ -371,12 +371,25 @@ DDS 2.2.3 add Mingw compiled DLLs and makes a number of code improvements. Maximum number of threads is increased to 16. The 2.2.3 Mingw DLLs are about 5% faster than the 2.2.2 DLLs. - Release Notes DDS 1.1.16 ------------------------ +------------------------ DDS 1.1.16 add Mingw compiled DLLs and makes a number of code improvements. -The 2.2.3 Mingw DLLs are about 5% faster than the 1.1.15 DLLs. +The 1.1.16 Mingw DLLs are about 5% faster than the 1.1.15 DLLs. + +Release Notes DDS 2.2.4 +----------------------- +A newer port from GCC to Windows, the TDM-GCC 4.7.1 version is used. It gives +faster DLLs and only requires one supporting DLL, which supports OpenMP. +Also, the move ordering has been slighly improved. +A total speed increase of 4% is achieved compared to 2.2.3. + +Release Notes DDS 1.1.17 +------------------------ +A newer port from GCC to Windows, the TDM-GCC 4.7.1 version is used. It gives +faster DLLs and does not require any supporting DLLs. +Also, the move ordering has been slighly improved. +A total speed increase of 4% is achieved compared to 1.1.16.