Closed sotetsuk closed 4 years ago
上のやつ、二試合分入っちゃってますね。
1試合目
<mjloggm ver="2.3"><SHUFFLE seed="" ref=""/><GO type="169" lobby="0"/><UN n0="agent01" n1="agent02" n2="agent03" n3="agent04"/><TAIKYOKU oya="0"/><INIT seed="0,0,0,,,64" ten="250,250,250,250" oya="0" hai0="30,128,116,18,61,75,63,36,37,7,121,66,101" hai1="113,114,78,87,91,58,16,72,98,130,82,84,49" hai2="32,48,57,44,90,31,93,88,92,120,27,13,108" hai3="127,35,123,109,59,6,79,25,34,69,56,99,50" /><T102/><D128/><U8/><E130/><V26/><F120/><W1/><G123/><T107/><D121/><U86/><E8/><V132/><F132/><W83/><G109/><T111/><D111/><U10/><E10/><V62/><F108/><W39/><G127/><T96/><D116/><U118/><E118/><V94/><F13/><W9/><G39/><N who="0" m="14923" /><D75/><U14/><E49/><V73/><F73/><W115/><G115/><T17/><D30/><U68/><E68/><V11/><F11/><W89/><G69/><T117/><D117/><U53/><E98/><N who="2" m="57623" /><F62/><W33/><G89/><T76/><D76/><N who="1" m="44295" /><E91/><V19/><F19/><W133/><G133/><T23/><D7/><U3/><E3/><V100/><F100/><N who="0" m="38506" /><D107/><U95/><E95/><V29/><F57/><W119/><G119/><T52/><D96/><U110/><E110/><V4/><F4/><W46/><G99/><T67/><D52/><U81/><E58/><N who="3" m="22058" /><G25/><N who="2" m="9225" /><F32/><N who="3" m="12395" /><G46/><T106/><D106/><U12/><E53/><V43/><F94/><W70/><G70/><N who="0" m="42319" /><D23/><U122/><E122/><V124/><F124/><W60/><G35/><T20/><D20/><N who="1" m="11271" /><E14/><V125/><F125/><W28/><G28/><T55/><D55/><U2/><E2/><V74/><F74/><W77/><G60/><T65/><D65/><U42/><E42/><V24/><F24/><W47/><G83/><T134/><D134/><U54/><E54/><V41/><F41/><W97/><G97/><AGARI ba="0,0" hai="29,31,43,44,48,88,93,97" m="9225,57623" machi="97" ten="30,2000,0" yaku="8,1,54,1" doraHai="64" who="2" fromWho="3" sc="250,0,250,0,250,20,250,-20" /></mjloggm>
2試合目
<mjloggm ver="2.3"><SHUFFLE seed="" ref=""/><GO type="169" lobby="0"/><UN n0="agent01" n1="agent02" n2="agent03" n3="agent04"/><TAIKYOKU oya="0"/><INIT seed="0,0,0,,,104" ten="250,250,250,250" oya="0" hai0="82,46,57,127,95,40,133,134,62,18,53,65,74" hai1="41,98,67,3,70,72,107,14,0,21,83,100,112" hai2="12,5,20,15,29,105,126,36,30,13,63,54,34" hai3="27,77,119,64,22,28,135,81,96,76,47,60,4" /><T8/><D127/><U91/><E112/><V23/><F126/><W129/><G129/><T131/><D131/><U69/><E41/><V17/><F105/><W7/><G119/><T75/><D95/><N who="1" m="56703" /><E107/><V37/><F34/><N who="3" m="20767" /><G135/><N who="0" m="51723" /><D8/><U125/><E125/><V33/><F33/><W51/><G22/><N who="2" m="8233" /><F54/><N who="3" m="30079" /><G96/><T114/><D114/><U85/><E100/><V115/><F115/><W106/><G106/><T92/><D92/><U31/><E72/><V130/><F130/><W120/><G120/><T87/><D18/><U11/><E31/><V94/><F94/><W59/><G77/><T84/><D40/><U99/><E99/><V48/><F48/><W58/><G58/><N who="0" m="37079" /><D46/><U16/><E85/><N who="0" m="32841" /><D82/><U2/><E83/><V68/><F68/><W35/><G35/><T42/><D42/><U45/><E45/><V89/><F89/><W26/><G26/><T19/><D19/><N who="1" m="10487" /><E67/><V9/><F63/><AGARI ba="0,0" hai="53,57,63,74,75" m="32841,37079,51723" machi="63" ten="30,5800,0" yaku="20,1,52,2" doraHai="104" who="0" fromWho="2" sc="250,58,250,0,250,-58,250,0" /><INIT seed="0,1,0,,,12" ten="308,250,192,250" oya="0" hai0="119,134,120,83,42,19,26,24,46,16,23,64,128" hai1="0,131,75,127,105,61,125,102,93,52,56,17,71" hai2="22,72,133,78,70,95,98,109,63,74,87,130,107" hai3="86,11,122,68,58,101,103,76,60,97,53,106,114" /><T85/><D119/><U8/><E131/><V113/><F113/><W132/><G122/><T51/><D134/><U96/><E75/><V21/><F133/><W91/><G114/><T48/><D120/><U31/><E31/><V33/><F130/><W57/><G132/><T34/><D128/><U49/><E0/><V45/><F109/><W118/><G118/><T36/><D64/><N who="1" m="41359" /><E105/><V65/><F33/><W84/><G11/><T47/><D34/><U38/><E38/><V30/><F45/><N who="0" m="16906" /><D36/><U88/><E88/><V15/><F107/><W94/><G68/><T92/><D92/><U116/><E116/><V124/><F124/><W66/><G76/><T55/><D42/><U89/><E89/><N who="2" m="53695" /><F98/><W13/><G13/><N who="0" m="9615" /><D19/><U104/><E93/><V9/><F30/><W121/><G121/><T108/><D108/><U20/><E20/><N who="2" m="7787" /><F78/><W39/><G39/><T100/><D100/><U112/><E112/><V2/><F2/><W40/><G40/><T110/><D110/><U1/><E1/><V29/><F29/><W123/><G123/><T54/><D85/><N who="3" m="32873" /><G106/><T59/><D83/><U18/><E18/><V27/><F27/><W77/><G77/><T73/><D73/><U81/><E81/><V5/><F9/><W43/><G43/><T126/><D126/><U80/><E80/><V25/><F25/><W10/><G10/><T90/><D90/><U79/><E79/><V117/><F117/><W135/><G135/><T37/><D37/><U62/><E62/><AGARI ba="1,0" hai="53,57,58,60,62,66,91,94,97,101,103" m="32873" machi="62" ten="30,1000,0" yaku="8,1" doraHai="12" who="3" fromWho="1" sc="308,0,250,-13,192,0,250,13" /><INIT seed="1,0,0,,,124" ten="308,237,192,263" oya="1" hai0="66,84,57,2,56,78,64,88,122,34,12,89,127" hai1="10,61,110,65,37,52,63,129,117,13,82,44,7" hai2="133,48,21,71,100,25,77,51,39,5,41,120,14" hai3="109,30,97,50,135,54,86,43,49,58,108,60,93" /><U29/><E110/><N who="3" m="42602" /><G135/><T47/><D122/><U73/><E117/><V22/><F133/><W9/><G9/><T118/><D127/><U45/><E129/><V69/><F120/><W32/><G32/><T31/><D118/><U42/><E29/><N who="2" m="17583" /><F100/><N who="3" m="60463" /><G86/><T134/><D134/><U18/><E73/><V15/><F77/><W70/><G30/><T33/><D2/><U102/><E82/><V123/><F123/><W24/><G24/><T119/><D119/><U75/><E75/><V90/><F90/><N who="0" m="34922" /><D47/><N who="1" m="17995" /><E102/><V91/><F91/><W59/><G70/><N who="2" m="26633" /><F39/><W101/><G101/><T26/><D12/><N who="1" m="7447" /><E37/><V81/><F81/><W115/><G115/><T87/><D78/><U17/><E42/><V72/><F72/><W106/><G106/><T20/><D66/><U116/><E116/><V74/><F74/><W79/><G79/><T38/><D38/><U76/><E76/><V8/><F41/><W28/><G28/><N who="0" m="19607" /><D34/><U132/><E132/><V35/><F35/><W126/><G126/><T130/><D130/><U111/><E111/><V40/><F40/><W62/><G59/><T19/><D64/><U103/><E103/><V23/><F23/><W83/><G83/><T3/><D3/><U96/><E96/><V128/><F128/><W107/><G107/><T11/><D11/><U0/><E0/><V55/><F55/><W36/><G36/><T80/><D31/><U95/><E95/><V105/><F105/><W125/><G125/><T113/><D113/><U99/><E99/><V6/><F6/><W46/><AGARI ba="0,0" hai="43,46,49,50,54,58,60,62" m="60463,42602" machi="46" ten="30,1100,0" yaku="14,1" doraHai="124" who="3" fromWho="3" sc="308,-3,237,-5,192,-3,263,11" /><INIT seed="2,0,0,,,54" ten="305,232,189,274" oya="2" hai0="32,50,47,74,93,40,49,31,75,135,20,57,79" hai1="133,119,82,81,77,5,48,42,118,30,41,125,95" hai2="110,38,123,56,35,22,28,17,130,10,14,59,89" hai3="26,103,124,0,6,115,19,52,107,131,108,65,37" /><V44/><F110/><W73/><G115/><T105/><D135/><U100/><E133/><V122/><F130/><W101/><G124/><T94/><D105/><U43/><E125/><V53/><F89/><W39/><G131/><T63/><D32/><U9/><E30/><V117/><F117/><W3/><G108/><T80/><D31/><U114/><E114/><V85/><F85/><W55/><G73/><N who="0" m="43119" /><D20/><U96/><E48/><V33/><F38/><N who="3" m="14347" /><G65/><N who="0" m="39151" /><D50/><U61/><E61/><N who="2" m="35983" /><F44/><W121/><G121/><T34/><D34/><U98/><E9/><V104/><F104/><W128/><G128/><T84/><D84/><U4/><E77/><V88/><F88/><W127/><G127/><T11/><D11/><U15/><E15/><N who="2" m="9535" /><F59/><W24/><G107/><T23/><D23/><U91/><E100/><V72/><F72/><W62/><G62/><T68/><D68/><U116/><REACH who="1" step="1"/><E98/><REACH who="1" ten="305,222,189,274" step="2"/><V64/><F64/><W134/><G134/><T113/><D113/><U99/><E99/><V46/><F46/><W2/><G19/><T90/><D90/><U45/><E45/><V51/><F51/><W66/><G66/><T120/><D120/><N who="2" m="46122" /><F28/><W71/><G71/><T109/><D109/><U29/><E29/><V21/><F21/><W25/><G6/><AGARI ba="0,1" hai="4,5,6,41,42,43,81,82,91,95,96,116,118,119" machi="6" ten="50,1600,0" yaku="1,1,53,0" doraHai="54" doraHaiUra="12" who="1" fromWho="3" sc="305,0,222,26,189,0,274,-16" /><INIT seed="3,0,0,,,122" ten="305,248,189,258" oya="3" hai0="95,54,101,115,84,114,133,91,120,28,64,125,7" hai1="46,40,4,15,131,43,36,31,17,70,76,23,3" hai2="77,18,80,14,37,67,9,30,45,78,127,16,82" hai3="1,39,61,33,6,99,41,102,34,73,111,66,108" /><W124/><G124/><T112/><D133/><U109/><E109/><V100/><F127/><W20/><G73/><T8/><D120/><U116/><E116/><V65/><F100/><W35/><G20/><T97/><D125/><U86/><E131/><V134/><F134/><W105/><G1/><T25/><D54/><U21/><E70/><V51/><F30/><W104/><G6/><T135/><D135/><U53/><E3/><V81/><F37/><W47/><REACH who="3" step="1"/><G104/><REACH who="3" ten="305,248,189,248" step="2"/><T74/><D74/><U57/><E86/><V48/><F45/><W52/><G52/><T83/><D64/><U2/><E76/><N who="2" m="29291" /><F18/><W98/><G98/><N who="0" m="59615" /><D8/><N who="1" m="6375" /><E2/><V72/><F72/><W38/><G38/><T19/><D7/><U56/><E4/><V79/><N who="2" m="29299" /><V119/><DORA hai="42" /><F119/><W11/><G11/><T117/><D117/><U24/><E53/><V55/><F55/><W103/><G103/><T113/><D19/><N who="1" m="12351" /><E40/><V132/><F132/><W92/><G92/><N who="0" m="54375" /><D97/><U126/><E126/><V93/><F93/><W130/><G130/><T96/><D96/><U88/><E88/><V62/><F62/><W49/><G49/><AGARI ba="0,1" hai="9,14,16,48,49,51,65,67,80,81,82" m="29299" machi="49" ten="40,2600,0" yaku="8,1,54,1" doraHai="122,42" who="2" fromWho="3" sc="305,0,248,0,189,36,248,-26" /><INIT seed="4,0,0,,,42" ten="305,248,225,222" oya="0" hai0="0,117,46,104,112,10,52,131,22,14,61,41,107" hai1="95,1,68,26,47,123,89,132,106,97,72,3,124" hai2="48,116,87,88,58,32,119,38,127,21,57,134,19" hai3="29,20,65,102,135,74,91,96,28,98,51,93,105" /><T8/><D117/><N who="2" m="45130" /><F134/><W114/><G114/><T59/><D112/><U82/><E123/><V56/><F127/><W103/><G135/><T84/><D131/><U67/><E132/><V12/><F32/><W17/><G74/><T9/><D84/><U25/><E124/><V23/><F38/><W73/><G73/><T44/><D0/><N who="1" m="75" /><E47/><N who="0" m="17961" /><D41/><U50/><E50/><V108/><F108/><W13/><G65/><T80/><D80/><U49/><E49/><V133/><F133/><W78/><G78/><T30/><D30/><U66/><E68/><V11/><F48/><W94/><REACH who="3" step="1"/><G51/><REACH who="3" ten="305,248,225,212" step="2"/><T110/><D110/><U6/><E6/><V18/><F18/><W31/><G31/><T128/><D128/><U62/><E106/><V70/><F70/><W129/><G129/><T122/><D122/><U4/><E4/><V40/><F40/><W130/><G130/><T79/><D79/><N who="1" m="44391" /><E62/><V75/><F75/><W15/><G15/><T71/><D71/><U120/><E120/><V77/><F88/><W63/><G63/><T33/><D33/><U118/><E118/><V27/><F27/><W37/><G37/><T39/><D39/><U53/><E53/><V99/><F99/><AGARI ba="0,1" hai="13,17,20,28,29,91,93,94,96,98,99,102,103,105" machi="99" ten="30,3900,0" yaku="1,1,7,1,53,1" doraHai="42" doraHaiUra="16" who="3" fromWho="2" sc="305,0,248,0,225,-39,212,49" /><INIT seed="5,0,0,,,54" ten="305,248,186,261" oya="1" hai0="49,29,79,122,92,48,52,6,83,116,103,69,26" hai1="13,7,33,23,37,97,77,25,43,72,67,38,115" hai2="84,61,51,99,24,55,39,18,133,120,82,4,9" hai3="94,57,5,87,21,60,121,107,31,128,110,90,118" /><U130/><E115/><V89/><F133/><W27/><G121/><T131/><D131/><U80/><E130/><V20/><F120/><W102/><G128/><T28/><D122/><U106/><E67/><V42/><F39/><W64/><G110/><T65/><D116/><U56/><E56/><N who="2" m="32895" /><F42/><W40/><G118/><T113/><D113/><U1/><E1/><N who="2" m="143" /><F61/><N who="3" m="37935" /><G40/><T8/><D69/><U125/><E125/><V78/><F78/><W46/><G46/><T95/><D65/><U45/><E33/><V93/><F93/><N who="0" m="35914" /><D103/><N who="1" m="62831" /><E13/><V32/><F32/><W100/><G5/><T73/><D8/><U12/><E12/><V108/><F108/><W91/><G60/><T68/><D68/><U111/><E111/><V44/><F44/><W76/><G107/><T105/><D105/><U119/><E119/><V88/><F88/><W3/><G3/><T53/><D6/><U124/><E124/><V86/><F86/><W98/><G76/><N who="0" m="44431" /><D26/><U62/><E62/><V14/><F14/><W11/><G11/><T0/><D0/><U134/><E134/><V126/><F126/><W41/><G41/><T127/><D127/><U15/><E15/><V30/><F30/><W10/><G10/><T19/><D79/><N who="1" m="44135" /><E7/><V36/><F36/><N who="1" m="13929" /><E77/><V63/><F63/><W2/><G2/><T129/><D129/><U16/><E45/><V34/><F34/><W117/><G117/><T114/><D114/><U70/><E70/><V66/><F66/><W22/><G22/><T104/><D104/><U132/><E132/><V135/><F135/><W17/><G17/><T47/><D19/><U74/><E74/><RYUUKYOKU ba="0,0" sc="305,0,248,0,186,0,261,0" hai0="28,29,47,48,49,52,53" hai1="16,23,25,43" hai2="18,20,24,82,84,89,99" hai3="21,27,31,87,90,91,94,98,100,102" /><INIT seed="5,1,0,,,53" ten="305,248,186,261" oya="1" hai0="78,130,111,127,92,125,42,38,82,87,19,59,110" hai1="22,74,134,51,15,103,76,35,58,39,33,85,101" hai2="11,124,10,117,18,70,23,63,30,109,119,1,40" hai3="50,86,17,113,12,104,3,48,21,114,68,47,7" /><U16/><E134/><V28/><F124/><N who="0" m="47690" /><D130/><U41/><E74/><V94/><F109/><N who="0" m="41482" /><D19/><N who="1" m="10623" /><E39/><V88/><F40/><N who="3" m="24679" /><G68/><T26/><D59/><U62/><E16/><V56/><F70/><W84/><G104/><T54/><D54/><N who="1" m="32095" /><E41/><V69/><F1/><W29/><G50/><T9/><D9/><N who="2" m="3082" /><F69/><W129/><G129/><T121/><D121/><U115/><E115/><N who="3" m="44042" /><G29/><N who="2" m="11369" /><F56/><W25/><G3/><T118/><D118/><U20/><E20/><V71/><F71/><W13/><G13/><T96/><D26/><U90/><E62/><V106/><F106/><W126/><G126/><T27/><D27/><U122/><E122/><V89/><F63/><W120/><G120/><T5/><D5/><U93/><E76/><V97/><F89/><W65/><G65/><T36/><D42/><U132/><E132/><V128/><F128/><W91/><G91/><AGARI ba="1,0" hai="36,38,78,82,87,91,92,96" m="41482,47690" machi="91" ten="30,1000,0" yaku="18,1" doraHai="53" who="0" fromWho="3" sc="305,13,248,0,186,0,261,-13" /><INIT seed="6,0,0,,,41" ten="318,248,186,248" oya="2" hai0="78,89,37,117,31,106,29,93,65,118,46,127,87" hai1="25,113,58,76,15,30,2,98,68,35,57,33,97" hai2="74,135,84,111,53,122,64,16,38,69,124,26,129" hai3="73,115,95,36,47,99,101,119,133,32,67,7,40" /><V0/><RYUUKYOKU type="yao9" ba="0,0" sc="318,0,248,0,186,0,248,0" hai2="0,16,26,38,53,64,69,74,84,111,122,124,129,135" /></mjloggm>
Assertionが落ちてる候補は2つで
State::IsGameOver
の中の Hand::IsTenpai
State::Next
の中の Hand::IsTenpai
恐らく2つとも問題がある。
まず、 IsGameOver
は、途中流局は全て連チャンだが、これを考慮に入れてない。
NO_WINNER_TYPE_KYUUSYU = 1; // 九種九牌 // TODO(sotetsuk): rename
NO_WINNER_TYPE_FOUR_RIICHI = 2; // 四家立直
NO_WINNER_TYPE_THREE_RONS = 3; // 三家和了
NO_WINNER_TYPE_FOUR_KANS = 4; // 四槓散了
NO_WINNER_TYPE_FOUR_WINDS = 5; // 四風連打
これの判定は
if(Any(state_.terminal().no_winner().type(), {NO_WINNER_TYPE_KYUUSYU, ... })) ...
つぎに、 Next
も、Tenpai判定なしで連チャンで返す #264
// 途中流局の場合は連荘
auto no_winner_type = state_.mutable_terminal()->mutable_no_winner()->type();
if (no_winner_type==mjproto::NO_WINNER_TYPE_KYUUSYU
||no_winner_type==mjproto::NO_WINNER_TYPE_FOUR_RIICHI
||no_winner_type==mjproto::NO_WINNER_TYPE_THREE_RONS
||no_winner_type==mjproto::NO_WINNER_TYPE_FOUR_KANS
||no_winner_type==mjproto::NO_WINNER_TYPE_FOUR_WINDS){
return false;
}
// 途中流局(NoWinnerType=1~5)の場合は連荘
auto no_winner_type = ToUType(state_.mutable_terminal()->mutable_no_winner()->type());
if (no_winner_type >= 1 && no_winner_type <= 5) return false;
@sotetsuk 判定は上二つのどちらがよいでしょうか?
@sotetsuk よく見たら上に書いていましたね、すみません。
そうですね。見慣れないと思いますが、このプロジェクトでは utils.h
に Any
という std::any_of
のラッパーが定義してあります。
template<typename T>
bool Any(T target, const std::initializer_list<T> &v) {
return std::any_of(v.begin(), v.end(), [&target](T elem) { return target == elem; });
}