1/* -*- Mode: vala; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- 2 3 This file is part of GNOME Reversi, also known as Iagno. 4 5 Copyright 2019 — Arnaud Bonatti 6 File updated by `ninja update-perfs-tests` 7 8 GNOME Reversi is free software: you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation, either version 3 of the License, or 11 (at your option) any later version. 12 13 GNOME Reversi is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with GNOME Reversi. If not, see <https://www.gnu.org/licenses/>. 20*/ 21 22namespace GeneratedTests 23{ 24 private static void perfs_tests_reversi () 25 { 26 /* crossing start position */ 27 Test.add_func ("/Reversi/reversi/Complete game 1", 28 test_complete_reversi_game_1); 29 30 Test.add_func ("/Reversi/reversi/Complete game 2", 31 test_complete_reversi_game_2); 32 33 Test.add_func ("/Reversi/reversi/Complete game 3", 34 test_complete_reversi_game_3); 35 36 Test.add_func ("/Reversi/reversi/Complete game 4", 37 test_complete_reversi_game_4); 38 39 Test.add_func ("/Reversi/reversi/Complete game 5", 40 test_complete_reversi_game_5); 41 42 Test.add_func ("/Reversi/reversi/Complete game 6", 43 test_complete_reversi_game_6); 44 45 Test.add_func ("/Reversi/reversi/Complete game 7", 46 test_complete_reversi_game_7); 47 48 Test.add_func ("/Reversi/reversi/Complete game 8", 49 test_complete_reversi_game_8); 50 51 Test.add_func ("/Reversi/reversi/Complete game 9", 52 test_complete_reversi_game_9); 53 54 Test.add_func ("/Reversi/reversi/Complete game 10", 55 test_complete_reversi_game_10); 56 57 Test.add_func ("/Reversi/reversi/Complete game 11", 58 test_complete_reversi_game_11); 59 60 Test.add_func ("/Reversi/reversi/Complete game 12", 61 test_complete_reversi_game_12); 62 63 Test.add_func ("/Reversi/reversi/Complete game 13", 64 test_complete_reversi_game_13); 65 66 Test.add_func ("/Reversi/reversi/Complete game 14", 67 test_complete_reversi_game_14); 68 69 Test.add_func ("/Reversi/reversi/Complete game 15", 70 test_complete_reversi_game_15); 71 72 Test.add_func ("/Reversi/reversi/Complete game 16", 73 test_complete_reversi_game_16); 74 75 Test.add_func ("/Reversi/reversi/Complete game 17", 76 test_complete_reversi_game_17); 77 78 Test.add_func ("/Reversi/reversi/Complete game 18", 79 test_complete_reversi_game_18); 80 81 Test.add_func ("/Reversi/reversi/Complete game 19", 82 test_complete_reversi_game_19); 83 84 Test.add_func ("/Reversi/reversi/Complete game 20", 85 test_complete_reversi_game_20); 86 87 Test.add_func ("/Reversi/reversi/Complete game 21", 88 test_complete_reversi_game_21); 89 90 Test.add_func ("/Reversi/reversi/Complete game 22", 91 test_complete_reversi_game_22); 92 93 Test.add_func ("/Reversi/reversi/Complete game 23", 94 test_complete_reversi_game_23); 95 96 Test.add_func ("/Reversi/reversi/Complete game 24", 97 test_complete_reversi_game_24); 98 99 Test.add_func ("/Reversi/reversi/Complete game 25", 100 test_complete_reversi_game_25); 101 102 Test.add_func ("/Reversi/reversi/Complete game 26", 103 test_complete_reversi_game_26); 104 105 Test.add_func ("/Reversi/reversi/Complete game 27", 106 test_complete_reversi_game_27); 107 108 Test.add_func ("/Reversi/reversi/Complete game 28", 109 test_complete_reversi_game_28); 110 111 Test.add_func ("/Reversi/reversi/Complete game 29", 112 test_complete_reversi_game_29); 113 114 Test.add_func ("/Reversi/reversi/Complete game 30", 115 test_complete_reversi_game_30); 116 117 Test.add_func ("/Reversi/reversi/Complete game 31", 118 test_complete_reversi_game_31); 119 120 Test.add_func ("/Reversi/reversi/Complete game 32", 121 test_complete_reversi_game_32); 122 123 Test.add_func ("/Reversi/reversi/Complete game 33", 124 test_complete_reversi_game_33); 125 126 Test.add_func ("/Reversi/reversi/Complete game 34", 127 test_complete_reversi_game_34); 128 129 Test.add_func ("/Reversi/reversi/Complete game 35", 130 test_complete_reversi_game_35); 131 132 Test.add_func ("/Reversi/reversi/Complete game 36", 133 test_complete_reversi_game_36); 134 135 Test.add_func ("/Reversi/reversi/Complete game 37", 136 test_complete_reversi_game_37); 137 138 Test.add_func ("/Reversi/reversi/Complete game 38", 139 test_complete_reversi_game_38); 140 141 Test.add_func ("/Reversi/reversi/Complete game 39", 142 test_complete_reversi_game_39); 143 144 Test.add_func ("/Reversi/reversi/Complete game 40", 145 test_complete_reversi_game_40); 146 147 Test.add_func ("/Reversi/reversi/Complete game 41", 148 test_complete_reversi_game_41); 149 150 Test.add_func ("/Reversi/reversi/Complete game 42", 151 test_complete_reversi_game_42); 152 153 Test.add_func ("/Reversi/reversi/Complete game 43", 154 test_complete_reversi_game_43); 155 156 Test.add_func ("/Reversi/reversi/Complete game 44", 157 test_complete_reversi_game_44); 158 159 Test.add_func ("/Reversi/reversi/Complete game 45", 160 test_complete_reversi_game_45); 161 162 Test.add_func ("/Reversi/reversi/Complete game 46", 163 test_complete_reversi_game_46); 164 165 Test.add_func ("/Reversi/reversi/Complete game 47", 166 test_complete_reversi_game_47); 167 168 Test.add_func ("/Reversi/reversi/Complete game 48", 169 test_complete_reversi_game_48); 170 171 Test.add_func ("/Reversi/reversi/Complete game 49", 172 test_complete_reversi_game_49); 173 174 Test.add_func ("/Reversi/reversi/Complete game 50", 175 test_complete_reversi_game_50); 176 177 Test.add_func ("/Reversi/reversi/Complete game 51", 178 test_complete_reversi_game_51); 179 180 Test.add_func ("/Reversi/reversi/Complete game 52", 181 test_complete_reversi_game_52); 182 183 Test.add_func ("/Reversi/reversi/Complete game 53", 184 test_complete_reversi_game_53); 185 186 Test.add_func ("/Reversi/reversi/Complete game 54", 187 test_complete_reversi_game_54); 188 189 Test.add_func ("/Reversi/reversi/Complete game 55", 190 test_complete_reversi_game_55); 191 192 Test.add_func ("/Reversi/reversi/Complete game 56", 193 test_complete_reversi_game_56); 194 195 Test.add_func ("/Reversi/reversi/Complete game 57", 196 test_complete_reversi_game_57); 197 198 Test.add_func ("/Reversi/reversi/Complete game 58", 199 test_complete_reversi_game_58); 200 201 Test.add_func ("/Reversi/reversi/Complete game 59", 202 test_complete_reversi_game_59); 203 204 Test.add_func ("/Reversi/reversi/Complete game 60", 205 test_complete_reversi_game_60); 206 207 Test.add_func ("/Reversi/reversi/Complete game 61", 208 test_complete_reversi_game_61); 209 210 Test.add_func ("/Reversi/reversi/Complete game 62", 211 test_complete_reversi_game_62); 212 213 Test.add_func ("/Reversi/reversi/Complete game 63", 214 test_complete_reversi_game_63); 215 216 Test.add_func ("/Reversi/reversi/Complete game 64", 217 test_complete_reversi_game_64); 218 219 Test.add_func ("/Reversi/reversi/Complete game 65", 220 test_complete_reversi_game_65); 221 222 Test.add_func ("/Reversi/reversi/Complete game 66", 223 test_complete_reversi_game_66); 224 225 Test.add_func ("/Reversi/reversi/Complete game 67", 226 test_complete_reversi_game_67); 227 228 Test.add_func ("/Reversi/reversi/Complete game 68", 229 test_complete_reversi_game_68); 230 231 Test.add_func ("/Reversi/reversi/Complete game 69", 232 test_complete_reversi_game_69); 233 234 Test.add_func ("/Reversi/reversi/Complete game 70", 235 test_complete_reversi_game_70); 236 237 Test.add_func ("/Reversi/reversi/Complete game 71", 238 test_complete_reversi_game_71); 239 240 Test.add_func ("/Reversi/reversi/Complete game 72", 241 test_complete_reversi_game_72); 242 243 Test.add_func ("/Reversi/reversi/Complete game 73", 244 test_complete_reversi_game_73); 245 246 Test.add_func ("/Reversi/reversi/Complete game 74", 247 test_complete_reversi_game_74); 248 249 Test.add_func ("/Reversi/reversi/Complete game 75", 250 test_complete_reversi_game_75); 251 252 Test.add_func ("/Reversi/reversi/Complete game 76", 253 test_complete_reversi_game_76); 254 255 Test.add_func ("/Reversi/reversi/Complete game 77", 256 test_complete_reversi_game_77); 257 258 Test.add_func ("/Reversi/reversi/Complete game 78", 259 test_complete_reversi_game_78); 260 261 Test.add_func ("/Reversi/reversi/Complete game 79", 262 test_complete_reversi_game_79); 263 264 Test.add_func ("/Reversi/reversi/Complete game 80", 265 test_complete_reversi_game_80); 266 267 Test.add_func ("/Reversi/reversi/Complete game 81", 268 test_complete_reversi_game_81); 269 270 Test.add_func ("/Reversi/reversi/Complete game 82", 271 test_complete_reversi_game_82); 272 273 Test.add_func ("/Reversi/reversi/Complete game 83", 274 test_complete_reversi_game_83); 275 276 Test.add_func ("/Reversi/reversi/Complete game 84", 277 test_complete_reversi_game_84); 278 279 Test.add_func ("/Reversi/reversi/Complete game 85", 280 test_complete_reversi_game_85); 281 282 Test.add_func ("/Reversi/reversi/Complete game 86", 283 test_complete_reversi_game_86); 284 285 Test.add_func ("/Reversi/reversi/Complete game 87", 286 test_complete_reversi_game_87); 287 288 Test.add_func ("/Reversi/reversi/Complete game 88", 289 test_complete_reversi_game_88); 290 291 Test.add_func ("/Reversi/reversi/Complete game 89", 292 test_complete_reversi_game_89); 293 294 Test.add_func ("/Reversi/reversi/Complete game 90", 295 test_complete_reversi_game_90); 296 297 Test.add_func ("/Reversi/reversi/Complete game 91", 298 test_complete_reversi_game_91); 299 300 Test.add_func ("/Reversi/reversi/Complete game 92", 301 test_complete_reversi_game_92); 302 303 Test.add_func ("/Reversi/reversi/Complete game 93", 304 test_complete_reversi_game_93); 305 306 Test.add_func ("/Reversi/reversi/Complete game 94", 307 test_complete_reversi_game_94); 308 309 Test.add_func ("/Reversi/reversi/Complete game 95", 310 test_complete_reversi_game_95); 311 312 Test.add_func ("/Reversi/reversi/Complete game 96", 313 test_complete_reversi_game_96); 314 315 Test.add_func ("/Reversi/reversi/Complete game 97", 316 test_complete_reversi_game_97); 317 318 Test.add_func ("/Reversi/reversi/Complete game 98", 319 test_complete_reversi_game_98); 320 321 Test.add_func ("/Reversi/reversi/Complete game 99", 322 test_complete_reversi_game_99); 323 324 Test.add_func ("/Reversi/reversi/Complete game 100", 325 test_complete_reversi_game_100); 326 327 Test.add_func ("/Reversi/reversi/Complete game 101", 328 test_complete_reversi_game_101); 329 330 Test.add_func ("/Reversi/reversi/Complete game 102", 331 test_complete_reversi_game_102); 332 333 Test.add_func ("/Reversi/reversi/Complete game 103", 334 test_complete_reversi_game_103); 335 336 Test.add_func ("/Reversi/reversi/Complete game 104", 337 test_complete_reversi_game_104); 338 339 Test.add_func ("/Reversi/reversi/Complete game 105", 340 test_complete_reversi_game_105); 341 342 Test.add_func ("/Reversi/reversi/Complete game 106", 343 test_complete_reversi_game_106); 344 345 Test.add_func ("/Reversi/reversi/Complete game 107", 346 test_complete_reversi_game_107); 347 348 Test.add_func ("/Reversi/reversi/Complete game 108", 349 test_complete_reversi_game_108); 350 351 Test.add_func ("/Reversi/reversi/Complete game 109", 352 test_complete_reversi_game_109); 353 354 Test.add_func ("/Reversi/reversi/Complete game 110", 355 test_complete_reversi_game_110); 356 357 Test.add_func ("/Reversi/reversi/Complete game 111", 358 test_complete_reversi_game_111); 359 360 Test.add_func ("/Reversi/reversi/Complete game 112", 361 test_complete_reversi_game_112); 362 363 Test.add_func ("/Reversi/reversi/Complete game 113", 364 test_complete_reversi_game_113); 365 366 Test.add_func ("/Reversi/reversi/Complete game 114", 367 test_complete_reversi_game_114); 368 369 Test.add_func ("/Reversi/reversi/Complete game 115", 370 test_complete_reversi_game_115); 371 372 Test.add_func ("/Reversi/reversi/Complete game 116", 373 test_complete_reversi_game_116); 374 375 Test.add_func ("/Reversi/reversi/Complete game 117", 376 test_complete_reversi_game_117); 377 378 Test.add_func ("/Reversi/reversi/Complete game 118", 379 test_complete_reversi_game_118); 380 381 Test.add_func ("/Reversi/reversi/Complete game 119", 382 test_complete_reversi_game_119); 383 384 Test.add_func ("/Reversi/reversi/Complete game 120", 385 test_complete_reversi_game_120); 386 387 Test.add_func ("/Reversi/reversi/Complete game 121", 388 test_complete_reversi_game_121); 389 390 Test.add_func ("/Reversi/reversi/Complete game 122", 391 test_complete_reversi_game_122); 392 393 Test.add_func ("/Reversi/reversi/Complete game 123", 394 test_complete_reversi_game_123); 395 396 Test.add_func ("/Reversi/reversi/Complete game 124", 397 test_complete_reversi_game_124); 398 399 Test.add_func ("/Reversi/reversi/Complete game 125", 400 test_complete_reversi_game_125); 401 402 Test.add_func ("/Reversi/reversi/Complete game 126", 403 test_complete_reversi_game_126); 404 405 Test.add_func ("/Reversi/reversi/Complete game 127", 406 test_complete_reversi_game_127); 407 408 Test.add_func ("/Reversi/reversi/Complete game 128", 409 test_complete_reversi_game_128); 410 411 Test.add_func ("/Reversi/reversi/Complete game 129", 412 test_complete_reversi_game_129); 413 414 Test.add_func ("/Reversi/reversi/Complete game 130", 415 test_complete_reversi_game_130); 416 417 Test.add_func ("/Reversi/reversi/Complete game 131", 418 test_complete_reversi_game_131); 419 420 Test.add_func ("/Reversi/reversi/Complete game 132", 421 test_complete_reversi_game_132); 422 423 Test.add_func ("/Reversi/reversi/Complete game 133", 424 test_complete_reversi_game_133); 425 426 Test.add_func ("/Reversi/reversi/Complete game 134", 427 test_complete_reversi_game_134); 428 429 Test.add_func ("/Reversi/reversi/Complete game 135", 430 test_complete_reversi_game_135); 431 432 Test.add_func ("/Reversi/reversi/Complete game 136", 433 test_complete_reversi_game_136); 434 435 Test.add_func ("/Reversi/reversi/Complete game 137", 436 test_complete_reversi_game_137); 437 438 Test.add_func ("/Reversi/reversi/Complete game 138", 439 test_complete_reversi_game_138); 440 441 Test.add_func ("/Reversi/reversi/Complete game 139", 442 test_complete_reversi_game_139); 443 444 Test.add_func ("/Reversi/reversi/Complete game 140", 445 test_complete_reversi_game_140); 446 447 Test.add_func ("/Reversi/reversi/Complete game 141", 448 test_complete_reversi_game_141); 449 450 Test.add_func ("/Reversi/reversi/Complete game 142", 451 test_complete_reversi_game_142); 452 453 Test.add_func ("/Reversi/reversi/Complete game 143", 454 test_complete_reversi_game_143); 455 456 Test.add_func ("/Reversi/reversi/Complete game 144", 457 test_complete_reversi_game_144); 458 459 Test.add_func ("/Reversi/reversi/Complete game 145", 460 test_complete_reversi_game_145); 461 462 Test.add_func ("/Reversi/reversi/Complete game 146", 463 test_complete_reversi_game_146); 464 465 Test.add_func ("/Reversi/reversi/Complete game 147", 466 test_complete_reversi_game_147); 467 468 Test.add_func ("/Reversi/reversi/Complete game 148", 469 test_complete_reversi_game_148); 470 471 Test.add_func ("/Reversi/reversi/Complete game 149", 472 test_complete_reversi_game_149); 473 474 Test.add_func ("/Reversi/reversi/Complete game 150", 475 test_complete_reversi_game_150); 476 477 Test.add_func ("/Reversi/reversi/Complete game 151", 478 test_complete_reversi_game_151); 479 480 Test.add_func ("/Reversi/reversi/Complete game 152", 481 test_complete_reversi_game_152); 482 483 Test.add_func ("/Reversi/reversi/Complete game 153", 484 test_complete_reversi_game_153); 485 486 Test.add_func ("/Reversi/reversi/Complete game 154", 487 test_complete_reversi_game_154); 488 489 Test.add_func ("/Reversi/reversi/Complete game 155", 490 test_complete_reversi_game_155); 491 492 Test.add_func ("/Reversi/reversi/Complete game 156", 493 test_complete_reversi_game_156); 494 495 Test.add_func ("/Reversi/reversi/Complete game 157", 496 test_complete_reversi_game_157); 497 498 Test.add_func ("/Reversi/reversi/Complete game 158", 499 test_complete_reversi_game_158); 500 501 Test.add_func ("/Reversi/reversi/Complete game 159", 502 test_complete_reversi_game_159); 503 504 Test.add_func ("/Reversi/reversi/Complete game 160", 505 test_complete_reversi_game_160); 506 507 Test.add_func ("/Reversi/reversi/Complete game 161", 508 test_complete_reversi_game_161); 509 510 Test.add_func ("/Reversi/reversi/Complete game 162", 511 test_complete_reversi_game_162); 512 513 Test.add_func ("/Reversi/reversi/Complete game 163", 514 test_complete_reversi_game_163); 515 516 Test.add_func ("/Reversi/reversi/Complete game 164", 517 test_complete_reversi_game_164); 518 519 Test.add_func ("/Reversi/reversi/Complete game 165", 520 test_complete_reversi_game_165); 521 522 Test.add_func ("/Reversi/reversi/Complete game 166", 523 test_complete_reversi_game_166); 524 525 Test.add_func ("/Reversi/reversi/Complete game 167", 526 test_complete_reversi_game_167); 527 528 Test.add_func ("/Reversi/reversi/Complete game 168", 529 test_complete_reversi_game_168); 530 531 Test.add_func ("/Reversi/reversi/Complete game 169", 532 test_complete_reversi_game_169); 533 534 Test.add_func ("/Reversi/reversi/Complete game 170", 535 test_complete_reversi_game_170); 536 537 Test.add_func ("/Reversi/reversi/Complete game 171", 538 test_complete_reversi_game_171); 539 540 Test.add_func ("/Reversi/reversi/Complete game 172", 541 test_complete_reversi_game_172); 542 543 Test.add_func ("/Reversi/reversi/Complete game 173", 544 test_complete_reversi_game_173); 545 546 Test.add_func ("/Reversi/reversi/Complete game 174", 547 test_complete_reversi_game_174); 548 549 Test.add_func ("/Reversi/reversi/Complete game 175", 550 test_complete_reversi_game_175); 551 552 Test.add_func ("/Reversi/reversi/Complete game 176", 553 test_complete_reversi_game_176); 554 555 Test.add_func ("/Reversi/reversi/Complete game 177", 556 test_complete_reversi_game_177); 557 558 Test.add_func ("/Reversi/reversi/Complete game 178", 559 test_complete_reversi_game_178); 560 561 Test.add_func ("/Reversi/reversi/Complete game 179", 562 test_complete_reversi_game_179); 563 564 Test.add_func ("/Reversi/reversi/Complete game 180", 565 test_complete_reversi_game_180); 566 567 Test.add_func ("/Reversi/reversi/Complete game 181", 568 test_complete_reversi_game_181); 569 570 Test.add_func ("/Reversi/reversi/Complete game 182", 571 test_complete_reversi_game_182); 572 573 Test.add_func ("/Reversi/reversi/Complete game 183", 574 test_complete_reversi_game_183); 575 576 Test.add_func ("/Reversi/reversi/Complete game 184", 577 test_complete_reversi_game_184); 578 579 Test.add_func ("/Reversi/reversi/Complete game 185", 580 test_complete_reversi_game_185); 581 582 Test.add_func ("/Reversi/reversi/Complete game 186", 583 test_complete_reversi_game_186); 584 585 Test.add_func ("/Reversi/reversi/Complete game 187", 586 test_complete_reversi_game_187); 587 588 Test.add_func ("/Reversi/reversi/Complete game 188", 589 test_complete_reversi_game_188); 590 591 Test.add_func ("/Reversi/reversi/Complete game 189", 592 test_complete_reversi_game_189); 593 594 Test.add_func ("/Reversi/reversi/Complete game 190", 595 test_complete_reversi_game_190); 596 597 Test.add_func ("/Reversi/reversi/Complete game 191", 598 test_complete_reversi_game_191); 599 600 Test.add_func ("/Reversi/reversi/Complete game 192", 601 test_complete_reversi_game_192); 602 603 Test.add_func ("/Reversi/reversi/Complete game 193", 604 test_complete_reversi_game_193); 605 606 Test.add_func ("/Reversi/reversi/Complete game 194", 607 test_complete_reversi_game_194); 608 609 Test.add_func ("/Reversi/reversi/Complete game 195", 610 test_complete_reversi_game_195); 611 612 Test.add_func ("/Reversi/reversi/Complete game 196", 613 test_complete_reversi_game_196); 614 615 Test.add_func ("/Reversi/reversi/Complete game 197", 616 test_complete_reversi_game_197); 617 618 Test.add_func ("/Reversi/reversi/Complete game 198", 619 test_complete_reversi_game_198); 620 621 Test.add_func ("/Reversi/reversi/Complete game 199", 622 test_complete_reversi_game_199); 623 624 Test.add_func ("/Reversi/reversi/Complete game 200", 625 test_complete_reversi_game_200); 626 627 Test.add_func ("/Reversi/reversi/Complete game 201", 628 test_complete_reversi_game_201); 629 630 Test.add_func ("/Reversi/reversi/Complete game 202", 631 test_complete_reversi_game_202); 632 633 Test.add_func ("/Reversi/reversi/Complete game 203", 634 test_complete_reversi_game_203); 635 636 Test.add_func ("/Reversi/reversi/Complete game 204", 637 test_complete_reversi_game_204); 638 639 Test.add_func ("/Reversi/reversi/Complete game 205", 640 test_complete_reversi_game_205); 641 642 Test.add_func ("/Reversi/reversi/Complete game 206", 643 test_complete_reversi_game_206); 644 645 Test.add_func ("/Reversi/reversi/Complete game 207", 646 test_complete_reversi_game_207); 647 648 Test.add_func ("/Reversi/reversi/Complete game 208", 649 test_complete_reversi_game_208); 650 651 Test.add_func ("/Reversi/reversi/Complete game 209", 652 test_complete_reversi_game_209); 653 654 Test.add_func ("/Reversi/reversi/Complete game 210", 655 test_complete_reversi_game_210); 656 657 Test.add_func ("/Reversi/reversi/Complete game 211", 658 test_complete_reversi_game_211); 659 660 Test.add_func ("/Reversi/reversi/Complete game 212", 661 test_complete_reversi_game_212); 662 663 Test.add_func ("/Reversi/reversi/Complete game 213", 664 test_complete_reversi_game_213); 665 666 Test.add_func ("/Reversi/reversi/Complete game 214", 667 test_complete_reversi_game_214); 668 669 Test.add_func ("/Reversi/reversi/Complete game 215", 670 test_complete_reversi_game_215); 671 672 Test.add_func ("/Reversi/reversi/Complete game 216", 673 test_complete_reversi_game_216); 674 675 Test.add_func ("/Reversi/reversi/Complete game 217", 676 test_complete_reversi_game_217); 677 678 Test.add_func ("/Reversi/reversi/Complete game 218", 679 test_complete_reversi_game_218); 680 681 Test.add_func ("/Reversi/reversi/Complete game 219", 682 test_complete_reversi_game_219); 683 684 Test.add_func ("/Reversi/reversi/Complete game 220", 685 test_complete_reversi_game_220); 686 687 Test.add_func ("/Reversi/reversi/Complete game 221", 688 test_complete_reversi_game_221); 689 690 Test.add_func ("/Reversi/reversi/Complete game 222", 691 test_complete_reversi_game_222); 692 693 Test.add_func ("/Reversi/reversi/Complete game 223", 694 test_complete_reversi_game_223); 695 696 Test.add_func ("/Reversi/reversi/Complete game 224", 697 test_complete_reversi_game_224); 698 699 Test.add_func ("/Reversi/reversi/Complete game 225", 700 test_complete_reversi_game_225); 701 702 Test.add_func ("/Reversi/reversi/Complete game 226", 703 test_complete_reversi_game_226); 704 705 Test.add_func ("/Reversi/reversi/Complete game 227", 706 test_complete_reversi_game_227); 707 708 Test.add_func ("/Reversi/reversi/Complete game 228", 709 test_complete_reversi_game_228); 710 711 Test.add_func ("/Reversi/reversi/Complete game 229", 712 test_complete_reversi_game_229); 713 714 Test.add_func ("/Reversi/reversi/Complete game 230", 715 test_complete_reversi_game_230); 716 717 Test.add_func ("/Reversi/reversi/Complete game 231", 718 test_complete_reversi_game_231); 719 720 Test.add_func ("/Reversi/reversi/Complete game 232", 721 test_complete_reversi_game_232); 722 723 /* parallel start position */ 724 Test.add_func ("/Reversi/reversi/Complete game 233", 725 test_complete_reversi_game_233); 726 727 Test.add_func ("/Reversi/reversi/Complete game 234", 728 test_complete_reversi_game_234); 729 730 Test.add_func ("/Reversi/reversi/Complete game 235", 731 test_complete_reversi_game_235); 732 733 Test.add_func ("/Reversi/reversi/Complete game 236", 734 test_complete_reversi_game_236); 735 736 Test.add_func ("/Reversi/reversi/Complete game 237", 737 test_complete_reversi_game_237); 738 739 Test.add_func ("/Reversi/reversi/Complete game 238", 740 test_complete_reversi_game_238); 741 742 Test.add_func ("/Reversi/reversi/Complete game 239", 743 test_complete_reversi_game_239); 744 745 Test.add_func ("/Reversi/reversi/Complete game 240", 746 test_complete_reversi_game_240); 747 748 Test.add_func ("/Reversi/reversi/Complete game 241", 749 test_complete_reversi_game_241); 750 751 Test.add_func ("/Reversi/reversi/Complete game 242", 752 test_complete_reversi_game_242); 753 754 Test.add_func ("/Reversi/reversi/Complete game 243", 755 test_complete_reversi_game_243); 756 757 Test.add_func ("/Reversi/reversi/Complete game 244", 758 test_complete_reversi_game_244); 759 760 Test.add_func ("/Reversi/reversi/Complete game 245", 761 test_complete_reversi_game_245); 762 763 Test.add_func ("/Reversi/reversi/Complete game 246", 764 test_complete_reversi_game_246); 765 766 Test.add_func ("/Reversi/reversi/Complete game 247", 767 test_complete_reversi_game_247); 768 769 Test.add_func ("/Reversi/reversi/Complete game 248", 770 test_complete_reversi_game_248); 771 772 Test.add_func ("/Reversi/reversi/Complete game 249", 773 test_complete_reversi_game_249); 774 775 Test.add_func ("/Reversi/reversi/Complete game 250", 776 test_complete_reversi_game_250); 777 778 Test.add_func ("/Reversi/reversi/Complete game 251", 779 test_complete_reversi_game_251); 780 781 Test.add_func ("/Reversi/reversi/Complete game 252", 782 test_complete_reversi_game_252); 783 784 Test.add_func ("/Reversi/reversi/Complete game 253", 785 test_complete_reversi_game_253); 786 787 Test.add_func ("/Reversi/reversi/Complete game 254", 788 test_complete_reversi_game_254); 789 790 Test.add_func ("/Reversi/reversi/Complete game 255", 791 test_complete_reversi_game_255); 792 793 Test.add_func ("/Reversi/reversi/Complete game 256", 794 test_complete_reversi_game_256); 795 796 Test.add_func ("/Reversi/reversi/Complete game 257", 797 test_complete_reversi_game_257); 798 799 Test.add_func ("/Reversi/reversi/Complete game 258", 800 test_complete_reversi_game_258); 801 802 Test.add_func ("/Reversi/reversi/Complete game 259", 803 test_complete_reversi_game_259); 804 805 Test.add_func ("/Reversi/reversi/Complete game 260", 806 test_complete_reversi_game_260); 807 808 Test.add_func ("/Reversi/reversi/Complete game 261", 809 test_complete_reversi_game_261); 810 811 Test.add_func ("/Reversi/reversi/Complete game 262", 812 test_complete_reversi_game_262); 813 814 Test.add_func ("/Reversi/reversi/Complete game 263", 815 test_complete_reversi_game_263); 816 817 Test.add_func ("/Reversi/reversi/Complete game 264", 818 test_complete_reversi_game_264); 819 820 Test.add_func ("/Reversi/reversi/Complete game 265", 821 test_complete_reversi_game_265); 822 823 Test.add_func ("/Reversi/reversi/Complete game 266", 824 test_complete_reversi_game_266); 825 826 Test.add_func ("/Reversi/reversi/Complete game 267", 827 test_complete_reversi_game_267); 828 829 Test.add_func ("/Reversi/reversi/Complete game 268", 830 test_complete_reversi_game_268); 831 832 Test.add_func ("/Reversi/reversi/Complete game 269", 833 test_complete_reversi_game_269); 834 835 Test.add_func ("/Reversi/reversi/Complete game 270", 836 test_complete_reversi_game_270); 837 838 Test.add_func ("/Reversi/reversi/Complete game 271", 839 test_complete_reversi_game_271); 840 841 Test.add_func ("/Reversi/reversi/Complete game 272", 842 test_complete_reversi_game_272); 843 844 Test.add_func ("/Reversi/reversi/Complete game 273", 845 test_complete_reversi_game_273); 846 847 Test.add_func ("/Reversi/reversi/Complete game 274", 848 test_complete_reversi_game_274); 849 850 Test.add_func ("/Reversi/reversi/Complete game 275", 851 test_complete_reversi_game_275); 852 853 Test.add_func ("/Reversi/reversi/Complete game 276", 854 test_complete_reversi_game_276); 855 856 Test.add_func ("/Reversi/reversi/Complete game 277", 857 test_complete_reversi_game_277); 858 859 Test.add_func ("/Reversi/reversi/Complete game 278", 860 test_complete_reversi_game_278); 861 862 Test.add_func ("/Reversi/reversi/Complete game 279", 863 test_complete_reversi_game_279); 864 865 Test.add_func ("/Reversi/reversi/Complete game 280", 866 test_complete_reversi_game_280); 867 868 Test.add_func ("/Reversi/reversi/Complete game 281", 869 test_complete_reversi_game_281); 870 871 Test.add_func ("/Reversi/reversi/Complete game 282", 872 test_complete_reversi_game_282); 873 874 Test.add_func ("/Reversi/reversi/Complete game 283", 875 test_complete_reversi_game_283); 876 877 Test.add_func ("/Reversi/reversi/Complete game 284", 878 test_complete_reversi_game_284); 879 880 Test.add_func ("/Reversi/reversi/Complete game 285", 881 test_complete_reversi_game_285); 882 883 Test.add_func ("/Reversi/reversi/Complete game 286", 884 test_complete_reversi_game_286); 885 886 Test.add_func ("/Reversi/reversi/Complete game 287", 887 test_complete_reversi_game_287); 888 889 Test.add_func ("/Reversi/reversi/Complete game 288", 890 test_complete_reversi_game_288); 891 892 Test.add_func ("/Reversi/reversi/Complete game 289", 893 test_complete_reversi_game_289); 894 895 Test.add_func ("/Reversi/reversi/Complete game 290", 896 test_complete_reversi_game_290); 897 898 Test.add_func ("/Reversi/reversi/Complete game 291", 899 test_complete_reversi_game_291); 900 901 Test.add_func ("/Reversi/reversi/Complete game 292", 902 test_complete_reversi_game_292); 903 904 Test.add_func ("/Reversi/reversi/Complete game 293", 905 test_complete_reversi_game_293); 906 907 Test.add_func ("/Reversi/reversi/Complete game 294", 908 test_complete_reversi_game_294); 909 910 Test.add_func ("/Reversi/reversi/Complete game 295", 911 test_complete_reversi_game_295); 912 913 Test.add_func ("/Reversi/reversi/Complete game 296", 914 test_complete_reversi_game_296); 915 916 Test.add_func ("/Reversi/reversi/Complete game 297", 917 test_complete_reversi_game_297); 918 919 Test.add_func ("/Reversi/reversi/Complete game 298", 920 test_complete_reversi_game_298); 921 922 Test.add_func ("/Reversi/reversi/Complete game 299", 923 test_complete_reversi_game_299); 924 925 Test.add_func ("/Reversi/reversi/Complete game 300", 926 test_complete_reversi_game_300); 927 928 Test.add_func ("/Reversi/reversi/Complete game 301", 929 test_complete_reversi_game_301); 930 931 Test.add_func ("/Reversi/reversi/Complete game 302", 932 test_complete_reversi_game_302); 933 934 Test.add_func ("/Reversi/reversi/Complete game 303", 935 test_complete_reversi_game_303); 936 937 Test.add_func ("/Reversi/reversi/Complete game 304", 938 test_complete_reversi_game_304); 939 940 Test.add_func ("/Reversi/reversi/Complete game 305", 941 test_complete_reversi_game_305); 942 943 Test.add_func ("/Reversi/reversi/Complete game 306", 944 test_complete_reversi_game_306); 945 946 Test.add_func ("/Reversi/reversi/Complete game 307", 947 test_complete_reversi_game_307); 948 949 Test.add_func ("/Reversi/reversi/Complete game 308", 950 test_complete_reversi_game_308); 951 952 Test.add_func ("/Reversi/reversi/Complete game 309", 953 test_complete_reversi_game_309); 954 955 Test.add_func ("/Reversi/reversi/Complete game 310", 956 test_complete_reversi_game_310); 957 958 Test.add_func ("/Reversi/reversi/Complete game 311", 959 test_complete_reversi_game_311); 960 961 Test.add_func ("/Reversi/reversi/Complete game 312", 962 test_complete_reversi_game_312); 963 964 Test.add_func ("/Reversi/reversi/Complete game 313", 965 test_complete_reversi_game_313); 966 967 Test.add_func ("/Reversi/reversi/Complete game 314", 968 test_complete_reversi_game_314); 969 970 Test.add_func ("/Reversi/reversi/Complete game 315", 971 test_complete_reversi_game_315); 972 973 Test.add_func ("/Reversi/reversi/Complete game 316", 974 test_complete_reversi_game_316); 975 976 Test.add_func ("/Reversi/reversi/Complete game 317", 977 test_complete_reversi_game_317); 978 979 Test.add_func ("/Reversi/reversi/Complete game 318", 980 test_complete_reversi_game_318); 981 982 Test.add_func ("/Reversi/reversi/Complete game 319", 983 test_complete_reversi_game_319); 984 985 Test.add_func ("/Reversi/reversi/Complete game 320", 986 test_complete_reversi_game_320); 987 988 Test.add_func ("/Reversi/reversi/Complete game 321", 989 test_complete_reversi_game_321); 990 991 Test.add_func ("/Reversi/reversi/Complete game 322", 992 test_complete_reversi_game_322); 993 994 Test.add_func ("/Reversi/reversi/Complete game 323", 995 test_complete_reversi_game_323); 996 997 Test.add_func ("/Reversi/reversi/Complete game 324", 998 test_complete_reversi_game_324); 999 1000 Test.add_func ("/Reversi/reversi/Complete game 325", 1001 test_complete_reversi_game_325); 1002 1003 Test.add_func ("/Reversi/reversi/Complete game 326", 1004 test_complete_reversi_game_326); 1005 1006 Test.add_func ("/Reversi/reversi/Complete game 327", 1007 test_complete_reversi_game_327); 1008 1009 Test.add_func ("/Reversi/reversi/Complete game 328", 1010 test_complete_reversi_game_328); 1011 1012 Test.add_func ("/Reversi/reversi/Complete game 329", 1013 test_complete_reversi_game_329); 1014 1015 Test.add_func ("/Reversi/reversi/Complete game 330", 1016 test_complete_reversi_game_330); 1017 1018 Test.add_func ("/Reversi/reversi/Complete game 331", 1019 test_complete_reversi_game_331); 1020 1021 Test.add_func ("/Reversi/reversi/Complete game 332", 1022 test_complete_reversi_game_332); 1023 1024 Test.add_func ("/Reversi/reversi/Complete game 333", 1025 test_complete_reversi_game_333); 1026 1027 Test.add_func ("/Reversi/reversi/Complete game 334", 1028 test_complete_reversi_game_334); 1029 1030 Test.add_func ("/Reversi/reversi/Complete game 335", 1031 test_complete_reversi_game_335); 1032 1033 Test.add_func ("/Reversi/reversi/Complete game 336", 1034 test_complete_reversi_game_336); 1035 1036 Test.add_func ("/Reversi/reversi/Complete game 337", 1037 test_complete_reversi_game_337); 1038 1039 Test.add_func ("/Reversi/reversi/Complete game 338", 1040 test_complete_reversi_game_338); 1041 1042 Test.add_func ("/Reversi/reversi/Complete game 339", 1043 test_complete_reversi_game_339); 1044 1045 Test.add_func ("/Reversi/reversi/Complete game 340", 1046 test_complete_reversi_game_340); 1047 1048 Test.add_func ("/Reversi/reversi/Complete game 341", 1049 test_complete_reversi_game_341); 1050 1051 Test.add_func ("/Reversi/reversi/Complete game 342", 1052 test_complete_reversi_game_342); 1053 1054 Test.add_func ("/Reversi/reversi/Complete game 343", 1055 test_complete_reversi_game_343); 1056 1057 Test.add_func ("/Reversi/reversi/Complete game 344", 1058 test_complete_reversi_game_344); 1059 1060 Test.add_func ("/Reversi/reversi/Complete game 345", 1061 test_complete_reversi_game_345); 1062 1063 Test.add_func ("/Reversi/reversi/Complete game 346", 1064 test_complete_reversi_game_346); 1065 1066 Test.add_func ("/Reversi/reversi/Complete game 347", 1067 test_complete_reversi_game_347); 1068 1069 Test.add_func ("/Reversi/reversi/Complete game 348", 1070 test_complete_reversi_game_348); 1071 1072 Test.add_func ("/Reversi/reversi/Complete game 349", 1073 test_complete_reversi_game_349); 1074 1075 Test.add_func ("/Reversi/reversi/Complete game 350", 1076 test_complete_reversi_game_350); 1077 1078 Test.add_func ("/Reversi/reversi/Complete game 351", 1079 test_complete_reversi_game_351); 1080 1081 Test.add_func ("/Reversi/reversi/Complete game 352", 1082 test_complete_reversi_game_352); 1083 1084 Test.add_func ("/Reversi/reversi/Complete game 353", 1085 test_complete_reversi_game_353); 1086 1087 Test.add_func ("/Reversi/reversi/Complete game 354", 1088 test_complete_reversi_game_354); 1089 1090 Test.add_func ("/Reversi/reversi/Complete game 355", 1091 test_complete_reversi_game_355); 1092 1093 Test.add_func ("/Reversi/reversi/Complete game 356", 1094 test_complete_reversi_game_356); 1095 1096 Test.add_func ("/Reversi/reversi/Complete game 357", 1097 test_complete_reversi_game_357); 1098 1099 Test.add_func ("/Reversi/reversi/Complete game 358", 1100 test_complete_reversi_game_358); 1101 1102 Test.add_func ("/Reversi/reversi/Complete game 359", 1103 test_complete_reversi_game_359); 1104 1105 Test.add_func ("/Reversi/reversi/Complete game 360", 1106 test_complete_reversi_game_360); 1107 1108 Test.add_func ("/Reversi/reversi/Complete game 361", 1109 test_complete_reversi_game_361); 1110 1111 Test.add_func ("/Reversi/reversi/Complete game 362", 1112 test_complete_reversi_game_362); 1113 1114 Test.add_func ("/Reversi/reversi/Complete game 363", 1115 test_complete_reversi_game_363); 1116 1117 Test.add_func ("/Reversi/reversi/Complete game 364", 1118 test_complete_reversi_game_364); 1119 1120 Test.add_func ("/Reversi/reversi/Complete game 365", 1121 test_complete_reversi_game_365); 1122 1123 Test.add_func ("/Reversi/reversi/Complete game 366", 1124 test_complete_reversi_game_366); 1125 1126 Test.add_func ("/Reversi/reversi/Complete game 367", 1127 test_complete_reversi_game_367); 1128 1129 Test.add_func ("/Reversi/reversi/Complete game 368", 1130 test_complete_reversi_game_368); 1131 1132 Test.add_func ("/Reversi/reversi/Complete game 369", 1133 test_complete_reversi_game_369); 1134 1135 Test.add_func ("/Reversi/reversi/Complete game 370", 1136 test_complete_reversi_game_370); 1137 1138 Test.add_func ("/Reversi/reversi/Complete game 371", 1139 test_complete_reversi_game_371); 1140 1141 Test.add_func ("/Reversi/reversi/Complete game 372", 1142 test_complete_reversi_game_372); 1143 1144 Test.add_func ("/Reversi/reversi/Complete game 373", 1145 test_complete_reversi_game_373); 1146 1147 Test.add_func ("/Reversi/reversi/Complete game 374", 1148 test_complete_reversi_game_374); 1149 1150 Test.add_func ("/Reversi/reversi/Complete game 375", 1151 test_complete_reversi_game_375); 1152 1153 Test.add_func ("/Reversi/reversi/Complete game 376", 1154 test_complete_reversi_game_376); 1155 1156 Test.add_func ("/Reversi/reversi/Complete game 377", 1157 test_complete_reversi_game_377); 1158 1159 Test.add_func ("/Reversi/reversi/Complete game 378", 1160 test_complete_reversi_game_378); 1161 1162 Test.add_func ("/Reversi/reversi/Complete game 379", 1163 test_complete_reversi_game_379); 1164 1165 Test.add_func ("/Reversi/reversi/Complete game 380", 1166 test_complete_reversi_game_380); 1167 1168 Test.add_func ("/Reversi/reversi/Complete game 381", 1169 test_complete_reversi_game_381); 1170 1171 Test.add_func ("/Reversi/reversi/Complete game 382", 1172 test_complete_reversi_game_382); 1173 1174 Test.add_func ("/Reversi/reversi/Complete game 383", 1175 test_complete_reversi_game_383); 1176 1177 Test.add_func ("/Reversi/reversi/Complete game 384", 1178 test_complete_reversi_game_384); 1179 1180 Test.add_func ("/Reversi/reversi/Complete game 385", 1181 test_complete_reversi_game_385); 1182 1183 Test.add_func ("/Reversi/reversi/Complete game 386", 1184 test_complete_reversi_game_386); 1185 1186 Test.add_func ("/Reversi/reversi/Complete game 387", 1187 test_complete_reversi_game_387); 1188 1189 Test.add_func ("/Reversi/reversi/Complete game 388", 1190 test_complete_reversi_game_388); 1191 1192 Test.add_func ("/Reversi/reversi/Complete game 389", 1193 test_complete_reversi_game_389); 1194 1195 Test.add_func ("/Reversi/reversi/Complete game 390", 1196 test_complete_reversi_game_390); 1197 1198 Test.add_func ("/Reversi/reversi/Complete game 391", 1199 test_complete_reversi_game_391); 1200 1201 Test.add_func ("/Reversi/reversi/Complete game 392", 1202 test_complete_reversi_game_392); 1203 1204 Test.add_func ("/Reversi/reversi/Complete game 393", 1205 test_complete_reversi_game_393); 1206 1207 Test.add_func ("/Reversi/reversi/Complete game 394", 1208 test_complete_reversi_game_394); 1209 1210 Test.add_func ("/Reversi/reversi/Complete game 395", 1211 test_complete_reversi_game_395); 1212 1213 Test.add_func ("/Reversi/reversi/Complete game 396", 1214 test_complete_reversi_game_396); 1215 1216 Test.add_func ("/Reversi/reversi/Complete game 397", 1217 test_complete_reversi_game_397); 1218 1219 Test.add_func ("/Reversi/reversi/Complete game 398", 1220 test_complete_reversi_game_398); 1221 1222 Test.add_func ("/Reversi/reversi/Complete game 399", 1223 test_complete_reversi_game_399); 1224 1225 Test.add_func ("/Reversi/reversi/Complete game 400", 1226 test_complete_reversi_game_400); 1227 1228 Test.add_func ("/Reversi/reversi/Complete game 401", 1229 test_complete_reversi_game_401); 1230 1231 Test.add_func ("/Reversi/reversi/Complete game 402", 1232 test_complete_reversi_game_402); 1233 1234 Test.add_func ("/Reversi/reversi/Complete game 403", 1235 test_complete_reversi_game_403); 1236 1237 Test.add_func ("/Reversi/reversi/Complete game 404", 1238 test_complete_reversi_game_404); 1239 1240 Test.add_func ("/Reversi/reversi/Complete game 405", 1241 test_complete_reversi_game_405); 1242 1243 Test.add_func ("/Reversi/reversi/Complete game 406", 1244 test_complete_reversi_game_406); 1245 1246 Test.add_func ("/Reversi/reversi/Complete game 407", 1247 test_complete_reversi_game_407); 1248 1249 Test.add_func ("/Reversi/reversi/Complete game 408", 1250 test_complete_reversi_game_408); 1251 1252 Test.add_func ("/Reversi/reversi/Complete game 409", 1253 test_complete_reversi_game_409); 1254 1255 Test.add_func ("/Reversi/reversi/Complete game 410", 1256 test_complete_reversi_game_410); 1257 1258 Test.add_func ("/Reversi/reversi/Complete game 411", 1259 test_complete_reversi_game_411); 1260 1261 Test.add_func ("/Reversi/reversi/Complete game 412", 1262 test_complete_reversi_game_412); 1263 1264 Test.add_func ("/Reversi/reversi/Complete game 413", 1265 test_complete_reversi_game_413); 1266 1267 Test.add_func ("/Reversi/reversi/Complete game 414", 1268 test_complete_reversi_game_414); 1269 1270 Test.add_func ("/Reversi/reversi/Complete game 415", 1271 test_complete_reversi_game_415); 1272 1273 Test.add_func ("/Reversi/reversi/Complete game 416", 1274 test_complete_reversi_game_416); 1275 1276 Test.add_func ("/Reversi/reversi/Complete game 417", 1277 test_complete_reversi_game_417); 1278 1279 Test.add_func ("/Reversi/reversi/Complete game 418", 1280 test_complete_reversi_game_418); 1281 1282 Test.add_func ("/Reversi/reversi/Complete game 419", 1283 test_complete_reversi_game_419); 1284 1285 Test.add_func ("/Reversi/reversi/Complete game 420", 1286 test_complete_reversi_game_420); 1287 1288 Test.add_func ("/Reversi/reversi/Complete game 421", 1289 test_complete_reversi_game_421); 1290 1291 Test.add_func ("/Reversi/reversi/Complete game 422", 1292 test_complete_reversi_game_422); 1293 1294 Test.add_func ("/Reversi/reversi/Complete game 423", 1295 test_complete_reversi_game_423); 1296 1297 Test.add_func ("/Reversi/reversi/Complete game 424", 1298 test_complete_reversi_game_424); 1299 1300 Test.add_func ("/Reversi/reversi/Complete game 425", 1301 test_complete_reversi_game_425); 1302 1303 Test.add_func ("/Reversi/reversi/Complete game 426", 1304 test_complete_reversi_game_426); 1305 1306 Test.add_func ("/Reversi/reversi/Complete game 427", 1307 test_complete_reversi_game_427); 1308 1309 Test.add_func ("/Reversi/reversi/Complete game 428", 1310 test_complete_reversi_game_428); 1311 1312 Test.add_func ("/Reversi/reversi/Complete game 429", 1313 test_complete_reversi_game_429); 1314 1315 Test.add_func ("/Reversi/reversi/Complete game 430", 1316 test_complete_reversi_game_430); 1317 1318 Test.add_func ("/Reversi/reversi/Complete game 431", 1319 test_complete_reversi_game_431); 1320 1321 Test.add_func ("/Reversi/reversi/Complete game 432", 1322 test_complete_reversi_game_432); 1323 1324 Test.add_func ("/Reversi/reversi/Complete game 433", 1325 test_complete_reversi_game_433); 1326 1327 Test.add_func ("/Reversi/reversi/Complete game 434", 1328 test_complete_reversi_game_434); 1329 1330 Test.add_func ("/Reversi/reversi/Complete game 435", 1331 test_complete_reversi_game_435); 1332 1333 Test.add_func ("/Reversi/reversi/Complete game 436", 1334 test_complete_reversi_game_436); 1335 1336 Test.add_func ("/Reversi/reversi/Complete game 437", 1337 test_complete_reversi_game_437); 1338 1339 Test.add_func ("/Reversi/reversi/Complete game 438", 1340 test_complete_reversi_game_438); 1341 1342 Test.add_func ("/Reversi/reversi/Complete game 439", 1343 test_complete_reversi_game_439); 1344 1345 Test.add_func ("/Reversi/reversi/Complete game 440", 1346 test_complete_reversi_game_440); 1347 1348 Test.add_func ("/Reversi/reversi/Complete game 441", 1349 test_complete_reversi_game_441); 1350 1351 Test.add_func ("/Reversi/reversi/Complete game 442", 1352 test_complete_reversi_game_442); 1353 1354 Test.add_func ("/Reversi/reversi/Complete game 443", 1355 test_complete_reversi_game_443); 1356 1357 Test.add_func ("/Reversi/reversi/Complete game 444", 1358 test_complete_reversi_game_444); 1359 1360 Test.add_func ("/Reversi/reversi/Complete game 445", 1361 test_complete_reversi_game_445); 1362 1363 Test.add_func ("/Reversi/reversi/Complete game 446", 1364 test_complete_reversi_game_446); 1365 1366 Test.add_func ("/Reversi/reversi/Complete game 447", 1367 test_complete_reversi_game_447); 1368 1369 Test.add_func ("/Reversi/reversi/Complete game 448", 1370 test_complete_reversi_game_448); 1371 1372 Test.add_func ("/Reversi/reversi/Complete game 449", 1373 test_complete_reversi_game_449); 1374 1375 Test.add_func ("/Reversi/reversi/Complete game 450", 1376 test_complete_reversi_game_450); 1377 1378 Test.add_func ("/Reversi/reversi/Complete game 451", 1379 test_complete_reversi_game_451); 1380 1381 Test.add_func ("/Reversi/reversi/Complete game 452", 1382 test_complete_reversi_game_452); 1383 1384 Test.add_func ("/Reversi/reversi/Complete game 453", 1385 test_complete_reversi_game_453); 1386 1387 Test.add_func ("/Reversi/reversi/Complete game 454", 1388 test_complete_reversi_game_454); 1389 1390 Test.add_func ("/Reversi/reversi/Complete game 455", 1391 test_complete_reversi_game_455); 1392 1393 Test.add_func ("/Reversi/reversi/Complete game 456", 1394 test_complete_reversi_game_456); 1395 1396 Test.add_func ("/Reversi/reversi/Complete game 457", 1397 test_complete_reversi_game_457); 1398 1399 Test.add_func ("/Reversi/reversi/Complete game 458", 1400 test_complete_reversi_game_458); 1401 1402 Test.add_func ("/Reversi/reversi/Complete game 459", 1403 test_complete_reversi_game_459); 1404 1405 Test.add_func ("/Reversi/reversi/Complete game 460", 1406 test_complete_reversi_game_460); 1407 1408 Test.add_func ("/Reversi/reversi/Complete game 461", 1409 test_complete_reversi_game_461); 1410 1411 Test.add_func ("/Reversi/reversi/Complete game 462", 1412 test_complete_reversi_game_462); 1413 1414 Test.add_func ("/Reversi/reversi/Complete game 463", 1415 test_complete_reversi_game_463); 1416 1417 Test.add_func ("/Reversi/reversi/Complete game 464", 1418 test_complete_reversi_game_464); 1419 1420 Test.add_func ("/Reversi/reversi/Complete game 465", 1421 test_complete_reversi_game_465); 1422 1423 Test.add_func ("/Reversi/reversi/Complete game 466", 1424 test_complete_reversi_game_466); 1425 1426 Test.add_func ("/Reversi/reversi/Complete game 467", 1427 test_complete_reversi_game_467); 1428 1429 Test.add_func ("/Reversi/reversi/Complete game 468", 1430 test_complete_reversi_game_468); 1431 1432 Test.add_func ("/Reversi/reversi/Complete game 469", 1433 test_complete_reversi_game_469); 1434 1435 Test.add_func ("/Reversi/reversi/Complete game 470", 1436 test_complete_reversi_game_470); 1437 1438 Test.add_func ("/Reversi/reversi/Complete game 471", 1439 test_complete_reversi_game_471); 1440 1441 Test.add_func ("/Reversi/reversi/Complete game 472", 1442 test_complete_reversi_game_472); 1443 1444 Test.add_func ("/Reversi/reversi/Complete game 473", 1445 test_complete_reversi_game_473); 1446 1447 Test.add_func ("/Reversi/reversi/Complete game 474", 1448 test_complete_reversi_game_474); 1449 1450 Test.add_func ("/Reversi/reversi/Complete game 475", 1451 test_complete_reversi_game_475); 1452 1453 Test.add_func ("/Reversi/reversi/Complete game 476", 1454 test_complete_reversi_game_476); 1455 1456 Test.add_func ("/Reversi/reversi/Complete game 477", 1457 test_complete_reversi_game_477); 1458 1459 Test.add_func ("/Reversi/reversi/Complete game 478", 1460 test_complete_reversi_game_478); 1461 1462 Test.add_func ("/Reversi/reversi/Complete game 479", 1463 test_complete_reversi_game_479); 1464 1465 Test.add_func ("/Reversi/reversi/Complete game 480", 1466 test_complete_reversi_game_480); 1467 1468 Test.add_func ("/Reversi/reversi/Complete game 481", 1469 test_complete_reversi_game_481); 1470 1471 Test.add_func ("/Reversi/reversi/Complete game 482", 1472 test_complete_reversi_game_482); 1473 1474 Test.add_func ("/Reversi/reversi/Complete game 483", 1475 test_complete_reversi_game_483); 1476 1477 Test.add_func ("/Reversi/reversi/Complete game 484", 1478 test_complete_reversi_game_484); 1479 1480 Test.add_func ("/Reversi/reversi/Complete game 485", 1481 test_complete_reversi_game_485); 1482 1483 Test.add_func ("/Reversi/reversi/Complete game 486", 1484 test_complete_reversi_game_486); 1485 1486 Test.add_func ("/Reversi/reversi/Complete game 487", 1487 test_complete_reversi_game_487); 1488 1489 Test.add_func ("/Reversi/reversi/Complete game 488", 1490 test_complete_reversi_game_488); 1491 1492 Test.add_func ("/Reversi/reversi/Complete game 489", 1493 test_complete_reversi_game_489); 1494 1495 Test.add_func ("/Reversi/reversi/Complete game 490", 1496 test_complete_reversi_game_490); 1497 1498 Test.add_func ("/Reversi/reversi/Complete game 491", 1499 test_complete_reversi_game_491); 1500 1501 Test.add_func ("/Reversi/reversi/Complete game 492", 1502 test_complete_reversi_game_492); 1503 1504 Test.add_func ("/Reversi/reversi/Complete game 493", 1505 test_complete_reversi_game_493); 1506 1507 Test.add_func ("/Reversi/reversi/Complete game 494", 1508 test_complete_reversi_game_494); 1509 1510 Test.add_func ("/Reversi/reversi/Complete game 495", 1511 test_complete_reversi_game_495); 1512 } 1513 1514 /*\ 1515 * * perfs tests 1516 \*/ 1517 1518 private static inline void test_complete_reversi_game_1 () 1519 { 1520 /* 0 1 2 3 4 5 6 7 */ 1521 string [] board = {/* 0 */ " . . . . . . . .", 1522 /* 1 */ " . . . . . . . .", 1523 /* 2 */ " . . . . . . . .", 1524 /* 3 */ " . . . L D . . .", 1525 /* 4 */ " . . . D L D . .", 1526 /* 5 */ " . . . . . L . .", 1527 /* 6 */ " . . . . . D L .", 1528 /* 7 */ " . . . . . . . ."}; 1529 1530 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 1531 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 1532 1533 assert_true (ai_move (ai, 4, 5)); 1534 assert_true (ai_move (ai, 5, 7)); 1535 assert_true (ai_move (ai, 6, 5)); 1536 assert_true (ai_move (ai, 7, 4)); 1537 assert_true (ai_move (ai, 7, 5)); 1538 assert_true (ai_move (ai, 7, 6)); 1539 assert_true (ai_move (ai, 4, 7)); 1540 assert_true (ai_move (ai, 6, 4)); 1541 assert_true (ai_move (ai, 6, 7)); 1542 assert_true (ai_move (ai, 4, 6)); 1543 assert_true (ai_move (ai, 7, 7)); 1544 assert_true (ai_move (ai, 5, 3)); 1545 assert_true (ai_move (ai, 7, 3)); 1546 assert_true (ai_move (ai, 3, 6)); 1547 assert_true (ai_move (ai, 5, 2)); 1548 assert_true (ai_move (ai, 3, 2)); 1549 assert_true (ai_move (ai, 6, 3)); 1550 assert_true (ai_move (ai, 5, 1)); 1551 assert_true (ai_move (ai, 2, 7)); 1552 assert_true (ai_move (ai, 2, 6)); 1553 assert_true (ai_move (ai, 2, 5)); 1554 assert_true (ai_move (ai, 3, 5)); 1555 assert_true (ai_move (ai, 3, 7)); 1556 assert_true (ai_move (ai, 1, 5)); 1557 assert_true (ai_move (ai, 4, 1)); 1558 assert_true (ai_move (ai, 5, 0)); 1559 assert_true (ai_move (ai, 1, 4)); 1560 assert_true (ai_move (ai, 1, 3)); 1561 assert_true (ai_move (ai, 6, 2)); 1562 assert_true (ai_move (ai, 6, 1)); 1563 assert_true (ai_move (ai, 3, 0)); 1564 assert_true (ai_move (ai, 3, 1)); 1565 assert_true (ai_move (ai, 0, 5)); 1566 assert_true (ai_move (ai, 1, 6)); 1567 assert_true (ai_move (ai, 0, 3)); 1568 assert_true (game.pass ()); 1569 assert_true (ai_move (ai, 1, 2)); 1570 assert_true (ai_move (ai, 1, 1)); 1571 assert_true (ai_move (ai, 2, 2)); 1572 assert_true (ai_move (ai, 2, 3)); 1573 assert_true (ai_move (ai, 2, 4)); 1574 assert_true (game.pass ()); 1575 assert_true (ai_move (ai, 0, 7)); 1576 assert_true (ai_move (ai, 1, 7)); 1577 assert_true (ai_move (ai, 0, 6)); 1578 assert_true (ai_move (ai, 7, 1)); 1579 assert_true (ai_move (ai, 7, 2)); 1580 assert_true (ai_move (ai, 0, 4)); 1581 assert_true (ai_move (ai, 4, 0)); 1582 assert_true (ai_move (ai, 2, 0)); 1583 assert_true (ai_move (ai, 2, 1)); 1584 assert_true (ai_move (ai, 0, 2)); 1585 assert_true (ai_move (ai, 4, 2)); 1586 assert_true (ai_move (ai, 6, 0)); 1587 assert_true (ai_move (ai, 0, 0)); 1588 assert_true (ai_move (ai, 0, 1)); 1589 assert_true (ai_move (ai, 1, 0)); 1590 assert_true (game.pass ()); 1591 assert_true (ai_move (ai, 7, 0)); 1592 } 1593 1594 private static inline void test_complete_reversi_game_2 () 1595 { 1596 /* 0 1 2 3 4 5 6 7 */ 1597 string [] board = {/* 0 */ " . . . . . . . .", 1598 /* 1 */ " . . . . . . . .", 1599 /* 2 */ " . . . . . . . .", 1600 /* 3 */ " . . . L D . . .", 1601 /* 4 */ " . . . D L L L .", 1602 /* 5 */ " . . . . . D . .", 1603 /* 6 */ " . . . . . D . .", 1604 /* 7 */ " . . . . . . . ."}; 1605 1606 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 1607 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 1608 1609 assert_true (ai_move (ai, 5, 3)); 1610 assert_true (ai_move (ai, 4, 6)); 1611 assert_true (ai_move (ai, 7, 5)); 1612 assert_true (ai_move (ai, 5, 7)); 1613 assert_true (ai_move (ai, 3, 7)); 1614 assert_true (ai_move (ai, 5, 2)); 1615 assert_true (ai_move (ai, 6, 5)); 1616 assert_true (ai_move (ai, 7, 3)); 1617 assert_true (ai_move (ai, 7, 4)); 1618 assert_true (ai_move (ai, 7, 6)); 1619 assert_true (ai_move (ai, 4, 5)); 1620 assert_true (ai_move (ai, 3, 6)); 1621 assert_true (ai_move (ai, 3, 5)); 1622 assert_true (ai_move (ai, 4, 2)); 1623 assert_true (ai_move (ai, 5, 1)); 1624 assert_true (ai_move (ai, 6, 2)); 1625 assert_true (ai_move (ai, 3, 1)); 1626 assert_true (ai_move (ai, 3, 2)); 1627 assert_true (ai_move (ai, 2, 1)); 1628 assert_true (ai_move (ai, 2, 2)); 1629 assert_true (ai_move (ai, 1, 3)); 1630 assert_true (ai_move (ai, 1, 2)); 1631 assert_true (ai_move (ai, 4, 1)); 1632 assert_true (ai_move (ai, 6, 3)); 1633 assert_true (ai_move (ai, 2, 3)); 1634 assert_true (ai_move (ai, 2, 7)); 1635 assert_true (ai_move (ai, 4, 7)); 1636 assert_true (ai_move (ai, 2, 5)); 1637 assert_true (ai_move (ai, 0, 2)); 1638 assert_true (ai_move (ai, 5, 0)); 1639 assert_true (ai_move (ai, 1, 4)); 1640 assert_true (ai_move (ai, 1, 5)); 1641 assert_true (ai_move (ai, 7, 2)); 1642 assert_true (ai_move (ai, 7, 1)); 1643 assert_true (ai_move (ai, 2, 6)); 1644 assert_true (ai_move (ai, 2, 4)); 1645 assert_true (ai_move (ai, 0, 5)); 1646 assert_true (ai_move (ai, 2, 0)); 1647 assert_true (ai_move (ai, 3, 0)); 1648 assert_true (ai_move (ai, 4, 0)); 1649 assert_true (ai_move (ai, 1, 1)); 1650 assert_true (ai_move (ai, 1, 0)); 1651 assert_true (ai_move (ai, 6, 6)); 1652 assert_true (ai_move (ai, 0, 4)); 1653 assert_true (ai_move (ai, 0, 3)); 1654 assert_true (ai_move (ai, 6, 1)); 1655 assert_true (ai_move (ai, 7, 0)); 1656 assert_true (ai_move (ai, 7, 7)); 1657 assert_true (ai_move (ai, 6, 0)); 1658 assert_true (ai_move (ai, 0, 0)); 1659 assert_true (ai_move (ai, 6, 7)); 1660 assert_true (ai_move (ai, 1, 7)); 1661 assert_true (ai_move (ai, 1, 6)); 1662 assert_true (ai_move (ai, 0, 6)); 1663 assert_true (ai_move (ai, 0, 1)); 1664 assert_true (game.pass ()); 1665 assert_true (ai_move (ai, 0, 7)); 1666 } 1667 1668 private static inline void test_complete_reversi_game_3 () 1669 { 1670 /* 0 1 2 3 4 5 6 7 */ 1671 string [] board = {/* 0 */ " . . . . . . . .", 1672 /* 1 */ " . . . . . . . .", 1673 /* 2 */ " . . . . . . . .", 1674 /* 3 */ " . . . L L L . .", 1675 /* 4 */ " . . . D L D . .", 1676 /* 5 */ " . . . . . D . .", 1677 /* 6 */ " . . . . . D . .", 1678 /* 7 */ " . . . . . . . ."}; 1679 1680 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 1681 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 1682 1683 assert_true (ai_move (ai, 5, 2)); 1684 assert_true (ai_move (ai, 6, 2)); 1685 assert_true (ai_move (ai, 6, 3)); 1686 assert_true (ai_move (ai, 4, 2)); 1687 assert_true (ai_move (ai, 5, 1)); 1688 assert_true (ai_move (ai, 7, 3)); 1689 assert_true (ai_move (ai, 7, 4)); 1690 assert_true (ai_move (ai, 7, 5)); 1691 assert_true (ai_move (ai, 7, 2)); 1692 assert_true (ai_move (ai, 7, 1)); 1693 assert_true (ai_move (ai, 2, 4)); 1694 assert_true (ai_move (ai, 6, 4)); 1695 assert_true (ai_move (ai, 4, 5)); 1696 assert_true (ai_move (ai, 4, 1)); 1697 assert_true (ai_move (ai, 4, 0)); 1698 assert_true (ai_move (ai, 4, 6)); 1699 assert_true (ai_move (ai, 4, 7)); 1700 assert_true (ai_move (ai, 3, 6)); 1701 assert_true (ai_move (ai, 6, 5)); 1702 assert_true (ai_move (ai, 3, 5)); 1703 assert_true (ai_move (ai, 2, 7)); 1704 assert_true (ai_move (ai, 3, 1)); 1705 assert_true (ai_move (ai, 2, 5)); 1706 assert_true (ai_move (ai, 2, 6)); 1707 assert_true (ai_move (ai, 2, 2)); 1708 assert_true (ai_move (ai, 5, 0)); 1709 assert_true (ai_move (ai, 6, 0)); 1710 assert_true (ai_move (ai, 1, 5)); 1711 assert_true (ai_move (ai, 1, 4)); 1712 assert_true (ai_move (ai, 2, 0)); 1713 assert_true (ai_move (ai, 0, 5)); 1714 assert_true (ai_move (ai, 1, 3)); 1715 assert_true (ai_move (ai, 2, 3)); 1716 assert_true (ai_move (ai, 0, 4)); 1717 assert_true (ai_move (ai, 0, 2)); 1718 assert_true (ai_move (ai, 0, 6)); 1719 assert_true (ai_move (ai, 2, 1)); 1720 assert_true (ai_move (ai, 5, 7)); 1721 assert_true (ai_move (ai, 0, 3)); 1722 assert_true (ai_move (ai, 0, 1)); 1723 assert_true (ai_move (ai, 6, 1)); 1724 assert_true (ai_move (ai, 3, 7)); 1725 assert_true (ai_move (ai, 6, 7)); 1726 assert_true (ai_move (ai, 1, 2)); 1727 assert_true (ai_move (ai, 3, 2)); 1728 assert_true (ai_move (ai, 3, 0)); 1729 assert_true (ai_move (ai, 1, 0)); 1730 assert_true (ai_move (ai, 1, 1)); 1731 assert_true (ai_move (ai, 1, 7)); 1732 assert_true (ai_move (ai, 7, 6)); 1733 assert_true (ai_move (ai, 0, 0)); 1734 assert_true (ai_move (ai, 7, 0)); 1735 assert_true (ai_move (ai, 0, 7)); 1736 assert_true (ai_move (ai, 6, 6)); 1737 assert_true (ai_move (ai, 7, 7)); 1738 assert_true (ai_move (ai, 1, 6)); 1739 } 1740 1741 private static inline void test_complete_reversi_game_4 () 1742 { 1743 /* 0 1 2 3 4 5 6 7 */ 1744 string [] board = {/* 0 */ " . . . . . . . .", 1745 /* 1 */ " . . . . . . . .", 1746 /* 2 */ " . . . . L . . .", 1747 /* 3 */ " . . . L L . . .", 1748 /* 4 */ " . . . D L D . .", 1749 /* 5 */ " . . . . . D . .", 1750 /* 6 */ " . . . . . D . .", 1751 /* 7 */ " . . . . . . . ."}; 1752 1753 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 1754 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 1755 1756 assert_true (ai_move (ai, 5, 2)); 1757 assert_true (ai_move (ai, 5, 3)); 1758 assert_true (ai_move (ai, 3, 2)); 1759 assert_true (ai_move (ai, 5, 1)); 1760 assert_true (ai_move (ai, 6, 2)); 1761 assert_true (ai_move (ai, 3, 1)); 1762 assert_true (ai_move (ai, 4, 1)); 1763 assert_true (ai_move (ai, 4, 0)); 1764 assert_true (ai_move (ai, 6, 3)); 1765 assert_true (ai_move (ai, 6, 4)); 1766 assert_true (ai_move (ai, 7, 3)); 1767 assert_true (ai_move (ai, 7, 5)); 1768 assert_true (ai_move (ai, 3, 5)); 1769 assert_true (ai_move (ai, 7, 4)); 1770 assert_true (ai_move (ai, 2, 0)); 1771 assert_true (ai_move (ai, 7, 2)); 1772 assert_true (ai_move (ai, 6, 5)); 1773 assert_true (ai_move (ai, 4, 5)); 1774 assert_true (ai_move (ai, 6, 0)); 1775 assert_true (ai_move (ai, 2, 6)); 1776 assert_true (ai_move (ai, 3, 6)); 1777 assert_true (ai_move (ai, 5, 7)); 1778 assert_true (ai_move (ai, 4, 6)); 1779 assert_true (ai_move (ai, 2, 7)); 1780 assert_true (ai_move (ai, 6, 1)); 1781 assert_true (ai_move (ai, 2, 2)); 1782 assert_true (ai_move (ai, 2, 4)); 1783 assert_true (ai_move (ai, 4, 7)); 1784 assert_true (ai_move (ai, 3, 0)); 1785 assert_true (ai_move (ai, 1, 0)); 1786 assert_true (ai_move (ai, 1, 2)); 1787 assert_true (ai_move (ai, 0, 2)); 1788 assert_true (ai_move (ai, 2, 1)); 1789 assert_true (ai_move (ai, 1, 3)); 1790 assert_true (ai_move (ai, 1, 4)); 1791 assert_true (ai_move (ai, 1, 1)); 1792 assert_true (ai_move (ai, 5, 0)); 1793 assert_true (ai_move (ai, 7, 0)); 1794 assert_true (ai_move (ai, 0, 0)); 1795 assert_true (ai_move (ai, 2, 5)); 1796 assert_true (ai_move (ai, 0, 4)); 1797 assert_true (ai_move (ai, 2, 3)); 1798 assert_true (ai_move (ai, 6, 6)); 1799 assert_true (ai_move (ai, 0, 5)); 1800 assert_true (ai_move (ai, 1, 5)); 1801 assert_true (ai_move (ai, 0, 3)); 1802 assert_true (ai_move (ai, 0, 1)); 1803 assert_true (ai_move (ai, 0, 6)); 1804 assert_true (ai_move (ai, 0, 7)); 1805 assert_true (ai_move (ai, 7, 7)); 1806 assert_true (ai_move (ai, 1, 6)); 1807 assert_true (ai_move (ai, 1, 7)); 1808 assert_true (ai_move (ai, 3, 7)); 1809 assert_true (game.pass ()); 1810 assert_true (ai_move (ai, 6, 7)); 1811 assert_true (game.pass ()); 1812 assert_true (ai_move (ai, 7, 6)); 1813 assert_true (game.pass ()); 1814 assert_true (ai_move (ai, 7, 1)); 1815 } 1816 1817 private static inline void test_complete_reversi_game_5 () 1818 { 1819 /* 0 1 2 3 4 5 6 7 */ 1820 string [] board = {/* 0 */ " . . . . . . . .", 1821 /* 1 */ " . . . . . . . .", 1822 /* 2 */ " . . . . . . . .", 1823 /* 3 */ " . . . L D . . .", 1824 /* 4 */ " . . . L L D . .", 1825 /* 5 */ " . . . L . D . .", 1826 /* 6 */ " . . . . . D . .", 1827 /* 7 */ " . . . . . . . ."}; 1828 1829 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 1830 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 1831 1832 assert_true (ai_move (ai, 2, 3)); 1833 assert_true (ai_move (ai, 1, 2)); 1834 assert_true (ai_move (ai, 1, 3)); 1835 assert_true (ai_move (ai, 5, 2)); 1836 assert_true (ai_move (ai, 3, 2)); 1837 assert_true (ai_move (ai, 6, 4)); 1838 assert_true (ai_move (ai, 5, 3)); 1839 assert_true (ai_move (ai, 4, 6)); 1840 assert_true (ai_move (ai, 5, 1)); 1841 assert_true (ai_move (ai, 5, 7)); 1842 assert_true (ai_move (ai, 7, 5)); 1843 assert_true (ai_move (ai, 7, 3)); 1844 assert_true (ai_move (ai, 7, 4)); 1845 assert_true (ai_move (ai, 7, 6)); 1846 assert_true (ai_move (ai, 3, 7)); 1847 assert_true (ai_move (ai, 3, 6)); 1848 assert_true (ai_move (ai, 2, 5)); 1849 assert_true (ai_move (ai, 1, 5)); 1850 assert_true (ai_move (ai, 2, 6)); 1851 assert_true (ai_move (ai, 2, 7)); 1852 assert_true (ai_move (ai, 1, 7)); 1853 assert_true (ai_move (ai, 5, 0)); 1854 assert_true (ai_move (ai, 4, 2)); 1855 assert_true (ai_move (ai, 2, 1)); 1856 assert_true (ai_move (ai, 2, 4)); 1857 assert_true (ai_move (ai, 4, 1)); 1858 assert_true (ai_move (ai, 4, 5)); 1859 assert_true (ai_move (ai, 6, 3)); 1860 assert_true (ai_move (ai, 6, 5)); 1861 assert_true (ai_move (ai, 0, 2)); 1862 assert_true (ai_move (ai, 1, 4)); 1863 assert_true (ai_move (ai, 0, 4)); 1864 assert_true (ai_move (ai, 3, 1)); 1865 assert_true (ai_move (ai, 6, 2)); 1866 assert_true (ai_move (ai, 7, 2)); 1867 assert_true (ai_move (ai, 7, 1)); 1868 assert_true (ai_move (ai, 0, 6)); 1869 assert_true (ai_move (ai, 2, 2)); 1870 assert_true (ai_move (ai, 2, 0)); 1871 assert_true (ai_move (ai, 0, 5)); 1872 assert_true (ai_move (ai, 3, 0)); 1873 assert_true (ai_move (ai, 6, 1)); 1874 assert_true (ai_move (ai, 0, 3)); 1875 assert_true (ai_move (ai, 0, 7)); 1876 assert_true (ai_move (ai, 4, 7)); 1877 assert_true (ai_move (ai, 1, 6)); 1878 assert_true (ai_move (ai, 6, 0)); 1879 assert_true (ai_move (ai, 4, 0)); 1880 assert_true (ai_move (ai, 1, 1)); 1881 assert_true (ai_move (ai, 7, 0)); 1882 assert_true (ai_move (ai, 6, 7)); 1883 assert_true (ai_move (ai, 7, 7)); 1884 assert_true (game.pass ()); 1885 assert_true (ai_move (ai, 6, 6)); 1886 assert_true (game.pass ()); 1887 assert_true (ai_move (ai, 0, 0)); 1888 assert_true (ai_move (ai, 1, 0)); 1889 assert_true (ai_move (ai, 0, 1)); 1890 } 1891 1892 private static inline void test_complete_reversi_game_6 () 1893 { 1894 /* 0 1 2 3 4 5 6 7 */ 1895 string [] board = {/* 0 */ " . . . . . . . .", 1896 /* 1 */ " . . . . . . . .", 1897 /* 2 */ " . . . . . . . .", 1898 /* 3 */ " . . . L D . . .", 1899 /* 4 */ " . . L L L D . .", 1900 /* 5 */ " . . . . . D . .", 1901 /* 6 */ " . . . . . D . .", 1902 /* 7 */ " . . . . . . . ."}; 1903 1904 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 1905 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 1906 1907 assert_true (ai_move (ai, 4, 5)); 1908 assert_true (ai_move (ai, 5, 2)); 1909 assert_true (ai_move (ai, 3, 2)); 1910 assert_true (ai_move (ai, 3, 1)); 1911 assert_true (ai_move (ai, 2, 1)); 1912 assert_true (ai_move (ai, 5, 3)); 1913 assert_true (ai_move (ai, 6, 2)); 1914 assert_true (ai_move (ai, 6, 3)); 1915 assert_true (ai_move (ai, 5, 1)); 1916 assert_true (ai_move (ai, 6, 5)); 1917 assert_true (ai_move (ai, 7, 5)); 1918 assert_true (ai_move (ai, 3, 6)); 1919 assert_true (ai_move (ai, 4, 6)); 1920 assert_true (ai_move (ai, 5, 7)); 1921 assert_true (ai_move (ai, 7, 4)); 1922 assert_true (ai_move (ai, 7, 2)); 1923 assert_true (ai_move (ai, 6, 4)); 1924 assert_true (ai_move (ai, 5, 0)); 1925 assert_true (ai_move (ai, 4, 2)); 1926 assert_true (ai_move (ai, 2, 2)); 1927 assert_true (ai_move (ai, 4, 7)); 1928 assert_true (ai_move (ai, 3, 7)); 1929 assert_true (ai_move (ai, 2, 7)); 1930 assert_true (ai_move (ai, 1, 7)); 1931 assert_true (ai_move (ai, 4, 1)); 1932 assert_true (ai_move (ai, 6, 7)); 1933 assert_true (ai_move (ai, 1, 3)); 1934 assert_true (ai_move (ai, 1, 2)); 1935 assert_true (ai_move (ai, 2, 3)); 1936 assert_true (ai_move (ai, 2, 6)); 1937 assert_true (ai_move (ai, 3, 5)); 1938 assert_true (ai_move (ai, 4, 0)); 1939 assert_true (ai_move (ai, 0, 2)); 1940 assert_true (ai_move (ai, 1, 4)); 1941 assert_true (ai_move (ai, 2, 5)); 1942 assert_true (ai_move (ai, 1, 5)); 1943 assert_true (ai_move (ai, 0, 5)); 1944 assert_true (ai_move (ai, 2, 0)); 1945 assert_true (ai_move (ai, 3, 0)); 1946 assert_true (ai_move (ai, 7, 3)); 1947 assert_true (ai_move (ai, 7, 1)); 1948 assert_true (ai_move (ai, 0, 4)); 1949 assert_true (ai_move (ai, 0, 3)); 1950 assert_true (ai_move (ai, 6, 6)); 1951 assert_true (ai_move (ai, 7, 6)); 1952 assert_true (ai_move (ai, 0, 1)); 1953 assert_true (ai_move (ai, 0, 0)); 1954 assert_true (ai_move (ai, 1, 6)); 1955 assert_true (ai_move (ai, 1, 1)); 1956 assert_true (ai_move (ai, 6, 1)); 1957 assert_true (ai_move (ai, 1, 0)); 1958 assert_true (game.pass ()); 1959 assert_true (ai_move (ai, 7, 7)); 1960 assert_true (game.pass ()); 1961 assert_true (ai_move (ai, 0, 7)); 1962 assert_true (game.pass ()); 1963 assert_true (ai_move (ai, 0, 6)); 1964 assert_true (game.pass ()); 1965 assert_true (ai_move (ai, 6, 0)); 1966 assert_true (ai_move (ai, 7, 0)); 1967 } 1968 1969 private static inline void test_complete_reversi_game_7 () 1970 { 1971 /* 0 1 2 3 4 5 6 7 */ 1972 string [] board = {/* 0 */ " . . . . . . . .", 1973 /* 1 */ " . . . . . . . .", 1974 /* 2 */ " . . . . . . . .", 1975 /* 3 */ " . . . L L L . .", 1976 /* 4 */ " . . . D D L . .", 1977 /* 5 */ " . . . . D L . .", 1978 /* 6 */ " . . . . . . . .", 1979 /* 7 */ " . . . . . . . ."}; 1980 1981 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 1982 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 1983 1984 assert_true (ai_move (ai, 6, 5)); 1985 assert_true (ai_move (ai, 5, 6)); 1986 assert_true (ai_move (ai, 6, 3)); 1987 assert_true (ai_move (ai, 7, 5)); 1988 assert_true (ai_move (ai, 5, 7)); 1989 assert_true (ai_move (ai, 4, 7)); 1990 assert_true (ai_move (ai, 3, 7)); 1991 assert_true (ai_move (ai, 7, 3)); 1992 assert_true (ai_move (ai, 7, 2)); 1993 assert_true (ai_move (ai, 2, 5)); 1994 assert_true (ai_move (ai, 5, 2)); 1995 assert_true (ai_move (ai, 5, 1)); 1996 assert_true (ai_move (ai, 6, 4)); 1997 assert_true (ai_move (ai, 6, 2)); 1998 assert_true (ai_move (ai, 3, 2)); 1999 assert_true (ai_move (ai, 3, 6)); 2000 assert_true (ai_move (ai, 4, 6)); 2001 assert_true (ai_move (ai, 3, 5)); 2002 assert_true (ai_move (ai, 4, 2)); 2003 assert_true (ai_move (ai, 4, 1)); 2004 assert_true (ai_move (ai, 5, 0)); 2005 assert_true (ai_move (ai, 2, 2)); 2006 assert_true (ai_move (ai, 1, 5)); 2007 assert_true (ai_move (ai, 1, 4)); 2008 assert_true (ai_move (ai, 1, 2)); 2009 assert_true (ai_move (ai, 3, 1)); 2010 assert_true (ai_move (ai, 2, 7)); 2011 assert_true (ai_move (ai, 1, 3)); 2012 assert_true (ai_move (ai, 0, 3)); 2013 assert_true (ai_move (ai, 6, 6)); 2014 assert_true (ai_move (ai, 2, 4)); 2015 assert_true (ai_move (ai, 0, 5)); 2016 assert_true (ai_move (ai, 2, 6)); 2017 assert_true (ai_move (ai, 3, 0)); 2018 assert_true (ai_move (ai, 4, 0)); 2019 assert_true (ai_move (ai, 6, 7)); 2020 assert_true (ai_move (ai, 7, 7)); 2021 assert_true (ai_move (ai, 0, 2)); 2022 assert_true (ai_move (ai, 2, 0)); 2023 assert_true (ai_move (ai, 0, 4)); 2024 assert_true (ai_move (ai, 2, 3)); 2025 assert_true (ai_move (ai, 2, 1)); 2026 assert_true (ai_move (ai, 6, 1)); 2027 assert_true (ai_move (ai, 1, 7)); 2028 assert_true (ai_move (ai, 7, 6)); 2029 assert_true (ai_move (ai, 6, 0)); 2030 assert_true (ai_move (ai, 7, 0)); 2031 assert_true (ai_move (ai, 7, 1)); 2032 assert_true (ai_move (ai, 7, 4)); 2033 assert_true (ai_move (ai, 1, 6)); 2034 assert_true (ai_move (ai, 1, 0)); 2035 assert_true (ai_move (ai, 1, 1)); 2036 assert_true (ai_move (ai, 0, 0)); 2037 assert_true (ai_move (ai, 0, 1)); 2038 assert_true (ai_move (ai, 0, 6)); 2039 assert_true (ai_move (ai, 0, 7)); 2040 } 2041 2042 private static inline void test_complete_reversi_game_8 () 2043 { 2044 /* 0 1 2 3 4 5 6 7 */ 2045 string [] board = {/* 0 */ " . . . . . . . .", 2046 /* 1 */ " . . . . . . . .", 2047 /* 2 */ " . . . . . . . .", 2048 /* 3 */ " . . . L D . . .", 2049 /* 4 */ " . . . L D D . .", 2050 /* 5 */ " . . . L L L . .", 2051 /* 6 */ " . . . . . . . .", 2052 /* 7 */ " . . . . . . . ."}; 2053 2054 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 2055 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 2056 2057 assert_true (ai_move (ai, 5, 6)); 2058 assert_true (ai_move (ai, 6, 5)); 2059 assert_true (ai_move (ai, 3, 6)); 2060 assert_true (ai_move (ai, 5, 7)); 2061 assert_true (ai_move (ai, 7, 5)); 2062 assert_true (ai_move (ai, 7, 4)); 2063 assert_true (ai_move (ai, 7, 3)); 2064 assert_true (ai_move (ai, 3, 7)); 2065 assert_true (ai_move (ai, 2, 7)); 2066 assert_true (ai_move (ai, 5, 2)); 2067 assert_true (ai_move (ai, 2, 5)); 2068 assert_true (ai_move (ai, 1, 5)); 2069 assert_true (ai_move (ai, 4, 6)); 2070 assert_true (ai_move (ai, 2, 6)); 2071 assert_true (ai_move (ai, 2, 3)); 2072 assert_true (ai_move (ai, 6, 3)); 2073 assert_true (ai_move (ai, 6, 4)); 2074 assert_true (ai_move (ai, 5, 3)); 2075 assert_true (ai_move (ai, 2, 4)); 2076 assert_true (ai_move (ai, 1, 4)); 2077 assert_true (ai_move (ai, 0, 5)); 2078 assert_true (ai_move (ai, 2, 2)); 2079 assert_true (ai_move (ai, 5, 1)); 2080 assert_true (ai_move (ai, 4, 1)); 2081 assert_true (ai_move (ai, 2, 1)); 2082 assert_true (ai_move (ai, 1, 3)); 2083 assert_true (ai_move (ai, 7, 2)); 2084 assert_true (ai_move (ai, 3, 1)); 2085 assert_true (ai_move (ai, 3, 0)); 2086 assert_true (ai_move (ai, 6, 6)); 2087 assert_true (ai_move (ai, 4, 2)); 2088 assert_true (ai_move (ai, 5, 0)); 2089 assert_true (ai_move (ai, 6, 2)); 2090 assert_true (ai_move (ai, 0, 3)); 2091 assert_true (ai_move (ai, 0, 4)); 2092 assert_true (ai_move (ai, 7, 6)); 2093 assert_true (ai_move (ai, 7, 7)); 2094 assert_true (ai_move (ai, 2, 0)); 2095 assert_true (ai_move (ai, 0, 2)); 2096 assert_true (ai_move (ai, 4, 0)); 2097 assert_true (ai_move (ai, 3, 2)); 2098 assert_true (ai_move (ai, 1, 2)); 2099 assert_true (ai_move (ai, 1, 6)); 2100 assert_true (ai_move (ai, 7, 1)); 2101 assert_true (ai_move (ai, 6, 7)); 2102 assert_true (ai_move (ai, 0, 6)); 2103 assert_true (ai_move (ai, 0, 7)); 2104 assert_true (ai_move (ai, 1, 7)); 2105 assert_true (ai_move (ai, 4, 7)); 2106 assert_true (ai_move (ai, 6, 1)); 2107 assert_true (ai_move (ai, 0, 1)); 2108 assert_true (ai_move (ai, 1, 1)); 2109 assert_true (ai_move (ai, 0, 0)); 2110 assert_true (ai_move (ai, 1, 0)); 2111 assert_true (ai_move (ai, 6, 0)); 2112 assert_true (ai_move (ai, 7, 0)); 2113 } 2114 2115 private static inline void test_complete_reversi_game_9 () 2116 { 2117 /* 0 1 2 3 4 5 6 7 */ 2118 string [] board = {/* 0 */ " . . . . . . . .", 2119 /* 1 */ " . . . . . . . .", 2120 /* 2 */ " . . . D . . . .", 2121 /* 3 */ " . . . D D . . .", 2122 /* 4 */ " . . . D L L L .", 2123 /* 5 */ " . . . . . L . .", 2124 /* 6 */ " . . . . . . . .", 2125 /* 7 */ " . . . . . . . ."}; 2126 2127 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 2128 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 2129 2130 assert_true (ai_move (ai, 6, 5)); 2131 assert_true (ai_move (ai, 5, 3)); 2132 assert_true (ai_move (ai, 4, 5)); 2133 assert_true (ai_move (ai, 4, 6)); 2134 assert_true (ai_move (ai, 7, 4)); 2135 assert_true (ai_move (ai, 7, 3)); 2136 assert_true (ai_move (ai, 7, 2)); 2137 assert_true (ai_move (ai, 7, 5)); 2138 assert_true (ai_move (ai, 7, 6)); 2139 assert_true (ai_move (ai, 3, 5)); 2140 assert_true (ai_move (ai, 5, 6)); 2141 assert_true (ai_move (ai, 5, 7)); 2142 assert_true (ai_move (ai, 2, 5)); 2143 assert_true (ai_move (ai, 3, 6)); 2144 assert_true (ai_move (ai, 4, 2)); 2145 assert_true (ai_move (ai, 2, 6)); 2146 assert_true (ai_move (ai, 2, 7)); 2147 assert_true (ai_move (ai, 1, 5)); 2148 assert_true (ai_move (ai, 6, 3)); 2149 assert_true (ai_move (ai, 4, 7)); 2150 assert_true (ai_move (ai, 0, 4)); 2151 assert_true (ai_move (ai, 2, 3)); 2152 assert_true (ai_move (ai, 1, 4)); 2153 assert_true (ai_move (ai, 1, 2)); 2154 assert_true (ai_move (ai, 1, 3)); 2155 assert_true (ai_move (ai, 0, 5)); 2156 assert_true (ai_move (ai, 3, 7)); 2157 assert_true (ai_move (ai, 1, 7)); 2158 assert_true (ai_move (ai, 2, 4)); 2159 assert_true (ai_move (ai, 0, 3)); 2160 assert_true (ai_move (ai, 0, 1)); 2161 assert_true (ai_move (ai, 2, 1)); 2162 assert_true (ai_move (ai, 1, 0)); 2163 assert_true (ai_move (ai, 3, 0)); 2164 assert_true (ai_move (ai, 6, 6)); 2165 assert_true (ai_move (ai, 6, 7)); 2166 assert_true (ai_move (ai, 1, 6)); 2167 assert_true (ai_move (ai, 7, 7)); 2168 assert_true (ai_move (ai, 1, 1)); 2169 assert_true (ai_move (ai, 7, 1)); 2170 assert_true (ai_move (ai, 3, 1)); 2171 assert_true (ai_move (ai, 2, 2)); 2172 assert_true (ai_move (ai, 0, 2)); 2173 assert_true (ai_move (ai, 0, 0)); 2174 assert_true (game.pass ()); 2175 assert_true (ai_move (ai, 2, 0)); 2176 assert_true (ai_move (ai, 4, 0)); 2177 assert_true (ai_move (ai, 5, 0)); 2178 assert_true (ai_move (ai, 4, 1)); 2179 assert_true (ai_move (ai, 6, 2)); 2180 assert_true (ai_move (ai, 5, 2)); 2181 assert_true (ai_move (ai, 5, 1)); 2182 assert_true (ai_move (ai, 6, 1)); 2183 assert_true (ai_move (ai, 0, 7)); 2184 assert_true (ai_move (ai, 0, 6)); 2185 assert_true (ai_move (ai, 6, 0)); 2186 assert_true (ai_move (ai, 7, 0)); 2187 } 2188 2189 private static inline void test_complete_reversi_game_10 () 2190 { 2191 /* 0 1 2 3 4 5 6 7 */ 2192 string [] board = {/* 0 */ " . . . . . . . .", 2193 /* 1 */ " . . . . . . . .", 2194 /* 2 */ " . . . D . . . .", 2195 /* 3 */ " . . . D D L . .", 2196 /* 4 */ " . . . D L L . .", 2197 /* 5 */ " . . . . . L . .", 2198 /* 6 */ " . . . . . . . .", 2199 /* 7 */ " . . . . . . . ."}; 2200 2201 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 2202 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 2203 2204 assert_true (ai_move (ai, 6, 5)); 2205 assert_true (ai_move (ai, 6, 4)); 2206 assert_true (ai_move (ai, 4, 5)); 2207 assert_true (ai_move (ai, 4, 6)); 2208 assert_true (ai_move (ai, 7, 4)); 2209 assert_true (ai_move (ai, 7, 3)); 2210 assert_true (ai_move (ai, 7, 2)); 2211 assert_true (ai_move (ai, 7, 5)); 2212 assert_true (ai_move (ai, 7, 6)); 2213 assert_true (ai_move (ai, 3, 5)); 2214 assert_true (ai_move (ai, 5, 6)); 2215 assert_true (ai_move (ai, 5, 7)); 2216 assert_true (ai_move (ai, 2, 5)); 2217 assert_true (ai_move (ai, 3, 6)); 2218 assert_true (ai_move (ai, 4, 2)); 2219 assert_true (ai_move (ai, 2, 6)); 2220 assert_true (ai_move (ai, 2, 7)); 2221 assert_true (ai_move (ai, 1, 5)); 2222 assert_true (ai_move (ai, 6, 3)); 2223 assert_true (ai_move (ai, 4, 7)); 2224 assert_true (ai_move (ai, 0, 4)); 2225 assert_true (ai_move (ai, 2, 3)); 2226 assert_true (ai_move (ai, 1, 4)); 2227 assert_true (ai_move (ai, 1, 2)); 2228 assert_true (ai_move (ai, 1, 3)); 2229 assert_true (ai_move (ai, 0, 5)); 2230 assert_true (ai_move (ai, 3, 7)); 2231 assert_true (ai_move (ai, 1, 7)); 2232 assert_true (ai_move (ai, 2, 4)); 2233 assert_true (ai_move (ai, 0, 3)); 2234 assert_true (ai_move (ai, 0, 1)); 2235 assert_true (ai_move (ai, 2, 1)); 2236 assert_true (ai_move (ai, 1, 0)); 2237 assert_true (ai_move (ai, 3, 0)); 2238 assert_true (ai_move (ai, 6, 6)); 2239 assert_true (ai_move (ai, 6, 7)); 2240 assert_true (ai_move (ai, 1, 6)); 2241 assert_true (ai_move (ai, 7, 7)); 2242 assert_true (ai_move (ai, 1, 1)); 2243 assert_true (ai_move (ai, 7, 1)); 2244 assert_true (ai_move (ai, 3, 1)); 2245 assert_true (ai_move (ai, 2, 2)); 2246 assert_true (ai_move (ai, 0, 2)); 2247 assert_true (ai_move (ai, 0, 0)); 2248 assert_true (game.pass ()); 2249 assert_true (ai_move (ai, 2, 0)); 2250 assert_true (ai_move (ai, 4, 0)); 2251 assert_true (ai_move (ai, 5, 0)); 2252 assert_true (ai_move (ai, 4, 1)); 2253 assert_true (ai_move (ai, 6, 2)); 2254 assert_true (ai_move (ai, 5, 2)); 2255 assert_true (ai_move (ai, 5, 1)); 2256 assert_true (ai_move (ai, 6, 1)); 2257 assert_true (ai_move (ai, 0, 7)); 2258 assert_true (ai_move (ai, 0, 6)); 2259 assert_true (ai_move (ai, 6, 0)); 2260 assert_true (ai_move (ai, 7, 0)); 2261 } 2262 2263 private static inline void test_complete_reversi_game_11 () 2264 { 2265 /* 0 1 2 3 4 5 6 7 */ 2266 string [] board = {/* 0 */ " . . . . . . . .", 2267 /* 1 */ " . . . . . . . .", 2268 /* 2 */ " . . . D L . . .", 2269 /* 3 */ " . . . D L . . .", 2270 /* 4 */ " . . . D L D . .", 2271 /* 5 */ " . . . . . L . .", 2272 /* 6 */ " . . . . . . . .", 2273 /* 7 */ " . . . . . . . ."}; 2274 2275 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 2276 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 2277 2278 assert_true (ai_move (ai, 5, 6)); 2279 assert_true (ai_move (ai, 2, 1)); 2280 assert_true (ai_move (ai, 3, 1)); 2281 assert_true (ai_move (ai, 6, 4)); 2282 assert_true (ai_move (ai, 5, 1)); 2283 assert_true (ai_move (ai, 4, 6)); 2284 assert_true (ai_move (ai, 5, 2)); 2285 assert_true (ai_move (ai, 5, 7)); 2286 assert_true (ai_move (ai, 6, 5)); 2287 assert_true (ai_move (ai, 7, 4)); 2288 assert_true (ai_move (ai, 4, 5)); 2289 assert_true (ai_move (ai, 3, 5)); 2290 assert_true (ai_move (ai, 2, 6)); 2291 assert_true (ai_move (ai, 6, 3)); 2292 assert_true (ai_move (ai, 7, 5)); 2293 assert_true (ai_move (ai, 3, 6)); 2294 assert_true (ai_move (ai, 5, 3)); 2295 assert_true (ai_move (ai, 5, 0)); 2296 assert_true (ai_move (ai, 7, 3)); 2297 assert_true (ai_move (ai, 7, 2)); 2298 assert_true (ai_move (ai, 7, 1)); 2299 assert_true (ai_move (ai, 2, 2)); 2300 assert_true (ai_move (ai, 6, 2)); 2301 assert_true (ai_move (ai, 4, 1)); 2302 assert_true (ai_move (ai, 1, 2)); 2303 assert_true (ai_move (ai, 1, 3)); 2304 assert_true (ai_move (ai, 2, 7)); 2305 assert_true (ai_move (ai, 2, 5)); 2306 assert_true (ai_move (ai, 1, 5)); 2307 assert_true (ai_move (ai, 2, 3)); 2308 assert_true (ai_move (ai, 3, 7)); 2309 assert_true (ai_move (ai, 2, 4)); 2310 assert_true (ai_move (ai, 4, 7)); 2311 assert_true (ai_move (ai, 1, 7)); 2312 assert_true (ai_move (ai, 0, 2)); 2313 assert_true (ai_move (ai, 1, 4)); 2314 assert_true (ai_move (ai, 0, 4)); 2315 assert_true (ai_move (ai, 6, 7)); 2316 assert_true (ai_move (ai, 2, 0)); 2317 assert_true (ai_move (ai, 0, 3)); 2318 assert_true (ai_move (ai, 3, 0)); 2319 assert_true (ai_move (ai, 0, 5)); 2320 assert_true (ai_move (ai, 0, 6)); 2321 assert_true (ai_move (ai, 4, 0)); 2322 assert_true (ai_move (ai, 6, 0)); 2323 assert_true (ai_move (ai, 6, 1)); 2324 assert_true (ai_move (ai, 1, 1)); 2325 assert_true (ai_move (ai, 1, 6)); 2326 assert_true (ai_move (ai, 6, 6)); 2327 assert_true (ai_move (ai, 7, 7)); 2328 assert_true (ai_move (ai, 7, 6)); 2329 assert_true (ai_move (ai, 7, 0)); 2330 assert_true (game.pass ()); 2331 assert_true (ai_move (ai, 0, 0)); 2332 assert_true (ai_move (ai, 1, 0)); 2333 assert_true (ai_move (ai, 0, 1)); 2334 assert_true (game.pass ()); 2335 assert_true (ai_move (ai, 0, 7)); 2336 } 2337 2338 private static inline void test_complete_reversi_game_12 () 2339 { 2340 /* 0 1 2 3 4 5 6 7 */ 2341 string [] board = {/* 0 */ " . . . . . . . .", 2342 /* 1 */ " . . . . . . . .", 2343 /* 2 */ " . . . D . . . .", 2344 /* 3 */ " . . . D D . . .", 2345 /* 4 */ " . . L L L D . .", 2346 /* 5 */ " . . . . . L . .", 2347 /* 6 */ " . . . . . . . .", 2348 /* 7 */ " . . . . . . . ."}; 2349 2350 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 2351 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 2352 2353 assert_true (ai_move (ai, 5, 6)); 2354 assert_true (ai_move (ai, 5, 2)); 2355 assert_true (ai_move (ai, 1, 5)); 2356 assert_true (ai_move (ai, 1, 4)); 2357 assert_true (ai_move (ai, 1, 3)); 2358 assert_true (ai_move (ai, 2, 1)); 2359 assert_true (ai_move (ai, 3, 1)); 2360 assert_true (ai_move (ai, 6, 4)); 2361 assert_true (ai_move (ai, 7, 3)); 2362 assert_true (ai_move (ai, 0, 2)); 2363 assert_true (ai_move (ai, 6, 5)); 2364 assert_true (ai_move (ai, 0, 4)); 2365 assert_true (ai_move (ai, 4, 5)); 2366 assert_true (ai_move (ai, 2, 6)); 2367 assert_true (ai_move (ai, 3, 5)); 2368 assert_true (ai_move (ai, 4, 1)); 2369 assert_true (ai_move (ai, 5, 0)); 2370 assert_true (ai_move (ai, 3, 0)); 2371 assert_true (ai_move (ai, 0, 6)); 2372 assert_true (ai_move (ai, 1, 6)); 2373 assert_true (ai_move (ai, 1, 7)); 2374 assert_true (ai_move (ai, 3, 7)); 2375 assert_true (ai_move (ai, 1, 0)); 2376 assert_true (ai_move (ai, 1, 2)); 2377 assert_true (ai_move (ai, 6, 1)); 2378 assert_true (ai_move (ai, 6, 3)); 2379 assert_true (ai_move (ai, 5, 3)); 2380 assert_true (ai_move (ai, 5, 7)); 2381 assert_true (ai_move (ai, 4, 2)); 2382 assert_true (ai_move (ai, 2, 2)); 2383 assert_true (ai_move (ai, 4, 6)); 2384 assert_true (ai_move (ai, 4, 7)); 2385 assert_true (ai_move (ai, 4, 0)); 2386 assert_true (ai_move (ai, 6, 6)); 2387 assert_true (ai_move (ai, 5, 1)); 2388 assert_true (ai_move (ai, 6, 0)); 2389 assert_true (ai_move (ai, 2, 3)); 2390 assert_true (ai_move (ai, 7, 5)); 2391 assert_true (ai_move (ai, 0, 3)); 2392 assert_true (ai_move (ai, 7, 4)); 2393 assert_true (ai_move (ai, 6, 2)); 2394 assert_true (ai_move (ai, 7, 2)); 2395 assert_true (ai_move (ai, 2, 5)); 2396 assert_true (ai_move (ai, 0, 5)); 2397 assert_true (ai_move (ai, 0, 7)); 2398 assert_true (ai_move (ai, 3, 6)); 2399 assert_true (ai_move (ai, 2, 7)); 2400 assert_true (game.pass ()); 2401 assert_true (ai_move (ai, 6, 7)); 2402 assert_true (game.pass ()); 2403 assert_true (ai_move (ai, 7, 7)); 2404 assert_true (ai_move (ai, 7, 6)); 2405 assert_true (ai_move (ai, 7, 1)); 2406 assert_true (game.pass ()); 2407 assert_true (ai_move (ai, 7, 0)); 2408 assert_true (game.pass ()); 2409 assert_true (ai_move (ai, 2, 0)); 2410 assert_true (ai_move (ai, 1, 1)); 2411 assert_true (ai_move (ai, 0, 1)); 2412 assert_true (ai_move (ai, 0, 0)); 2413 } 2414 2415 private static inline void test_complete_reversi_game_13 () 2416 { 2417 /* 0 1 2 3 4 5 6 7 */ 2418 string [] board = {/* 0 */ " . . . . . . . .", 2419 /* 1 */ " . . . . . . . .", 2420 /* 2 */ " . . L D . . . .", 2421 /* 3 */ " . . . L D . . .", 2422 /* 4 */ " . . . D L D . .", 2423 /* 5 */ " . . . . . L . .", 2424 /* 6 */ " . . . . . . . .", 2425 /* 7 */ " . . . . . . . ."}; 2426 2427 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 2428 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 2429 2430 assert_true (ai_move (ai, 5, 6)); 2431 assert_true (ai_move (ai, 3, 1)); 2432 assert_true (ai_move (ai, 4, 5)); 2433 assert_true (ai_move (ai, 5, 3)); 2434 assert_true (ai_move (ai, 5, 2)); 2435 assert_true (ai_move (ai, 6, 5)); 2436 assert_true (ai_move (ai, 6, 3)); 2437 assert_true (ai_move (ai, 4, 7)); 2438 assert_true (ai_move (ai, 5, 7)); 2439 assert_true (ai_move (ai, 6, 7)); 2440 assert_true (ai_move (ai, 7, 4)); 2441 assert_true (ai_move (ai, 5, 1)); 2442 assert_true (ai_move (ai, 6, 4)); 2443 assert_true (ai_move (ai, 7, 5)); 2444 assert_true (ai_move (ai, 4, 1)); 2445 assert_true (ai_move (ai, 7, 3)); 2446 assert_true (ai_move (ai, 5, 0)); 2447 assert_true (ai_move (ai, 3, 6)); 2448 assert_true (ai_move (ai, 4, 6)); 2449 assert_true (ai_move (ai, 3, 7)); 2450 assert_true (ai_move (ai, 7, 2)); 2451 assert_true (ai_move (ai, 7, 1)); 2452 assert_true (ai_move (ai, 6, 2)); 2453 assert_true (ai_move (ai, 4, 2)); 2454 assert_true (ai_move (ai, 2, 4)); 2455 assert_true (ai_move (ai, 4, 0)); 2456 assert_true (ai_move (ai, 6, 1)); 2457 assert_true (ai_move (ai, 1, 5)); 2458 assert_true (ai_move (ai, 1, 4)); 2459 assert_true (ai_move (ai, 1, 3)); 2460 assert_true (ai_move (ai, 0, 2)); 2461 assert_true (ai_move (ai, 1, 2)); 2462 assert_true (ai_move (ai, 0, 4)); 2463 assert_true (ai_move (ai, 2, 3)); 2464 assert_true (ai_move (ai, 2, 5)); 2465 assert_true (ai_move (ai, 2, 6)); 2466 assert_true (ai_move (ai, 0, 3)); 2467 assert_true (ai_move (ai, 3, 5)); 2468 assert_true (ai_move (ai, 2, 7)); 2469 assert_true (ai_move (ai, 1, 7)); 2470 assert_true (ai_move (ai, 0, 5)); 2471 assert_true (ai_move (ai, 7, 0)); 2472 assert_true (ai_move (ai, 3, 0)); 2473 assert_true (ai_move (ai, 2, 1)); 2474 assert_true (ai_move (ai, 0, 1)); 2475 assert_true (ai_move (ai, 1, 6)); 2476 assert_true (ai_move (ai, 2, 0)); 2477 assert_true (ai_move (ai, 0, 6)); 2478 assert_true (ai_move (ai, 0, 7)); 2479 assert_true (ai_move (ai, 1, 1)); 2480 assert_true (ai_move (ai, 7, 7)); 2481 assert_true (game.pass ()); 2482 assert_true (ai_move (ai, 7, 6)); 2483 assert_true (ai_move (ai, 6, 6)); 2484 assert_true (ai_move (ai, 0, 0)); 2485 assert_true (ai_move (ai, 1, 0)); 2486 assert_true (ai_move (ai, 6, 0)); 2487 } 2488 2489 private static inline void test_complete_reversi_game_14 () 2490 { 2491 /* 0 1 2 3 4 5 6 7 */ 2492 string [] board = {/* 0 */ " . . . . . . . .", 2493 /* 1 */ " . . . . . . . .", 2494 /* 2 */ " . . . . . . . .", 2495 /* 3 */ " . . D D D . . .", 2496 /* 4 */ " . . . D L L L .", 2497 /* 5 */ " . . . . . L . .", 2498 /* 6 */ " . . . . . . . .", 2499 /* 7 */ " . . . . . . . ."}; 2500 2501 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 2502 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 2503 2504 assert_true (ai_move (ai, 6, 5)); 2505 assert_true (ai_move (ai, 5, 3)); 2506 assert_true (ai_move (ai, 4, 5)); 2507 assert_true (ai_move (ai, 4, 6)); 2508 assert_true (ai_move (ai, 7, 4)); 2509 assert_true (ai_move (ai, 7, 3)); 2510 assert_true (ai_move (ai, 7, 2)); 2511 assert_true (ai_move (ai, 7, 5)); 2512 assert_true (ai_move (ai, 7, 6)); 2513 assert_true (ai_move (ai, 3, 5)); 2514 assert_true (ai_move (ai, 5, 6)); 2515 assert_true (ai_move (ai, 5, 7)); 2516 assert_true (ai_move (ai, 2, 5)); 2517 assert_true (ai_move (ai, 3, 6)); 2518 assert_true (ai_move (ai, 6, 2)); 2519 assert_true (ai_move (ai, 1, 4)); 2520 assert_true (ai_move (ai, 6, 3)); 2521 assert_true (ai_move (ai, 1, 2)); 2522 assert_true (ai_move (ai, 2, 7)); 2523 assert_true (ai_move (ai, 2, 4)); 2524 assert_true (ai_move (ai, 2, 6)); 2525 assert_true (ai_move (ai, 3, 7)); 2526 assert_true (ai_move (ai, 2, 2)); 2527 assert_true (ai_move (ai, 1, 3)); 2528 assert_true (ai_move (ai, 1, 5)); 2529 assert_true (ai_move (ai, 3, 1)); 2530 assert_true (ai_move (ai, 2, 1)); 2531 assert_true (ai_move (ai, 0, 5)); 2532 assert_true (ai_move (ai, 4, 0)); 2533 assert_true (ai_move (ai, 2, 0)); 2534 assert_true (ai_move (ai, 0, 3)); 2535 assert_true (ai_move (ai, 0, 4)); 2536 assert_true (ai_move (ai, 0, 6)); 2537 assert_true (ai_move (ai, 3, 2)); 2538 assert_true (ai_move (ai, 0, 2)); 2539 assert_true (ai_move (ai, 3, 0)); 2540 assert_true (ai_move (ai, 0, 1)); 2541 assert_true (ai_move (ai, 5, 0)); 2542 assert_true (ai_move (ai, 4, 1)); 2543 assert_true (ai_move (ai, 5, 1)); 2544 assert_true (ai_move (ai, 1, 6)); 2545 assert_true (ai_move (ai, 5, 2)); 2546 assert_true (ai_move (ai, 4, 2)); 2547 assert_true (ai_move (ai, 1, 7)); 2548 assert_true (ai_move (ai, 1, 1)); 2549 assert_true (ai_move (ai, 0, 0)); 2550 assert_true (ai_move (ai, 0, 7)); 2551 assert_true (ai_move (ai, 7, 1)); 2552 assert_true (ai_move (ai, 7, 0)); 2553 assert_true (ai_move (ai, 6, 6)); 2554 assert_true (ai_move (ai, 4, 7)); 2555 assert_true (game.pass ()); 2556 assert_true (ai_move (ai, 6, 0)); 2557 assert_true (ai_move (ai, 6, 1)); 2558 assert_true (ai_move (ai, 1, 0)); 2559 assert_true (game.pass ()); 2560 assert_true (ai_move (ai, 7, 7)); 2561 assert_true (ai_move (ai, 6, 7)); 2562 } 2563 2564 private static inline void test_complete_reversi_game_15 () 2565 { 2566 /* 0 1 2 3 4 5 6 7 */ 2567 string [] board = {/* 0 */ " . . . . . . . .", 2568 /* 1 */ " . . . . . . . .", 2569 /* 2 */ " . . . . . . . .", 2570 /* 3 */ " . . D D D L . .", 2571 /* 4 */ " . . . D L L . .", 2572 /* 5 */ " . . . . . L . .", 2573 /* 6 */ " . . . . . . . .", 2574 /* 7 */ " . . . . . . . ."}; 2575 2576 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 2577 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 2578 2579 assert_true (ai_move (ai, 6, 5)); 2580 assert_true (ai_move (ai, 6, 4)); 2581 assert_true (ai_move (ai, 4, 5)); 2582 assert_true (ai_move (ai, 4, 6)); 2583 assert_true (ai_move (ai, 7, 4)); 2584 assert_true (ai_move (ai, 7, 3)); 2585 assert_true (ai_move (ai, 7, 2)); 2586 assert_true (ai_move (ai, 7, 5)); 2587 assert_true (ai_move (ai, 7, 6)); 2588 assert_true (ai_move (ai, 3, 5)); 2589 assert_true (ai_move (ai, 5, 6)); 2590 assert_true (ai_move (ai, 5, 7)); 2591 assert_true (ai_move (ai, 2, 5)); 2592 assert_true (ai_move (ai, 3, 6)); 2593 assert_true (ai_move (ai, 6, 2)); 2594 assert_true (ai_move (ai, 1, 4)); 2595 assert_true (ai_move (ai, 6, 3)); 2596 assert_true (ai_move (ai, 1, 2)); 2597 assert_true (ai_move (ai, 2, 7)); 2598 assert_true (ai_move (ai, 2, 4)); 2599 assert_true (ai_move (ai, 2, 6)); 2600 assert_true (ai_move (ai, 3, 7)); 2601 assert_true (ai_move (ai, 2, 2)); 2602 assert_true (ai_move (ai, 1, 3)); 2603 assert_true (ai_move (ai, 1, 5)); 2604 assert_true (ai_move (ai, 3, 1)); 2605 assert_true (ai_move (ai, 2, 1)); 2606 assert_true (ai_move (ai, 0, 5)); 2607 assert_true (ai_move (ai, 4, 0)); 2608 assert_true (ai_move (ai, 2, 0)); 2609 assert_true (ai_move (ai, 0, 3)); 2610 assert_true (ai_move (ai, 0, 4)); 2611 assert_true (ai_move (ai, 0, 6)); 2612 assert_true (ai_move (ai, 3, 2)); 2613 assert_true (ai_move (ai, 0, 2)); 2614 assert_true (ai_move (ai, 3, 0)); 2615 assert_true (ai_move (ai, 0, 1)); 2616 assert_true (ai_move (ai, 5, 0)); 2617 assert_true (ai_move (ai, 4, 1)); 2618 assert_true (ai_move (ai, 5, 1)); 2619 assert_true (ai_move (ai, 1, 6)); 2620 assert_true (ai_move (ai, 5, 2)); 2621 assert_true (ai_move (ai, 4, 2)); 2622 assert_true (ai_move (ai, 1, 7)); 2623 assert_true (ai_move (ai, 1, 1)); 2624 assert_true (ai_move (ai, 0, 0)); 2625 assert_true (ai_move (ai, 0, 7)); 2626 assert_true (ai_move (ai, 7, 1)); 2627 assert_true (ai_move (ai, 7, 0)); 2628 assert_true (ai_move (ai, 6, 6)); 2629 assert_true (ai_move (ai, 4, 7)); 2630 assert_true (game.pass ()); 2631 assert_true (ai_move (ai, 6, 0)); 2632 assert_true (ai_move (ai, 6, 1)); 2633 assert_true (ai_move (ai, 1, 0)); 2634 assert_true (game.pass ()); 2635 assert_true (ai_move (ai, 7, 7)); 2636 assert_true (ai_move (ai, 6, 7)); 2637 } 2638 2639 private static inline void test_complete_reversi_game_16 () 2640 { 2641 /* 0 1 2 3 4 5 6 7 */ 2642 string [] board = {/* 0 */ " . . . . . . . .", 2643 /* 1 */ " . . . . . . . .", 2644 /* 2 */ " . . . . L . . .", 2645 /* 3 */ " . . D D L . . .", 2646 /* 4 */ " . . . D L D . .", 2647 /* 5 */ " . . . . . L . .", 2648 /* 6 */ " . . . . . . . .", 2649 /* 7 */ " . . . . . . . ."}; 2650 2651 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 2652 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 2653 2654 assert_true (ai_move (ai, 5, 6)); 2655 assert_true (ai_move (ai, 6, 4)); 2656 assert_true (ai_move (ai, 5, 1)); 2657 assert_true (ai_move (ai, 4, 6)); 2658 assert_true (ai_move (ai, 5, 2)); 2659 assert_true (ai_move (ai, 5, 7)); 2660 assert_true (ai_move (ai, 6, 5)); 2661 assert_true (ai_move (ai, 7, 4)); 2662 assert_true (ai_move (ai, 4, 5)); 2663 assert_true (ai_move (ai, 3, 5)); 2664 assert_true (ai_move (ai, 2, 6)); 2665 assert_true (ai_move (ai, 5, 3)); 2666 assert_true (ai_move (ai, 6, 2)); 2667 assert_true (ai_move (ai, 5, 0)); 2668 assert_true (ai_move (ai, 6, 3)); 2669 assert_true (ai_move (ai, 3, 1)); 2670 assert_true (ai_move (ai, 3, 6)); 2671 assert_true (ai_move (ai, 7, 2)); 2672 assert_true (ai_move (ai, 4, 1)); 2673 assert_true (ai_move (ai, 2, 5)); 2674 assert_true (ai_move (ai, 2, 4)); 2675 assert_true (ai_move (ai, 7, 3)); 2676 assert_true (ai_move (ai, 7, 5)); 2677 assert_true (ai_move (ai, 7, 6)); 2678 assert_true (ai_move (ai, 3, 7)); 2679 assert_true (ai_move (ai, 1, 5)); 2680 assert_true (ai_move (ai, 1, 3)); 2681 assert_true (ai_move (ai, 1, 4)); 2682 assert_true (ai_move (ai, 0, 4)); 2683 assert_true (ai_move (ai, 2, 2)); 2684 assert_true (ai_move (ai, 3, 2)); 2685 assert_true (ai_move (ai, 0, 2)); 2686 assert_true (ai_move (ai, 0, 5)); 2687 assert_true (ai_move (ai, 2, 1)); 2688 assert_true (ai_move (ai, 1, 2)); 2689 assert_true (ai_move (ai, 4, 0)); 2690 assert_true (ai_move (ai, 2, 0)); 2691 assert_true (ai_move (ai, 1, 1)); 2692 assert_true (ai_move (ai, 1, 6)); 2693 assert_true (ai_move (ai, 4, 7)); 2694 assert_true (ai_move (ai, 6, 7)); 2695 assert_true (ai_move (ai, 6, 6)); 2696 assert_true (ai_move (ai, 3, 0)); 2697 assert_true (ai_move (ai, 1, 0)); 2698 assert_true (ai_move (ai, 7, 1)); 2699 assert_true (ai_move (ai, 7, 0)); 2700 assert_true (ai_move (ai, 6, 0)); 2701 assert_true (ai_move (ai, 2, 7)); 2702 assert_true (ai_move (ai, 1, 7)); 2703 assert_true (ai_move (ai, 6, 1)); 2704 assert_true (ai_move (ai, 0, 0)); 2705 assert_true (ai_move (ai, 0, 3)); 2706 assert_true (ai_move (ai, 0, 1)); 2707 assert_true (ai_move (ai, 0, 7)); 2708 assert_true (ai_move (ai, 7, 7)); 2709 assert_true (ai_move (ai, 0, 6)); 2710 } 2711 2712 private static inline void test_complete_reversi_game_17 () 2713 { 2714 /* 0 1 2 3 4 5 6 7 */ 2715 string [] board = {/* 0 */ " . . . . . . . .", 2716 /* 1 */ " . . . . . . . .", 2717 /* 2 */ " . . . . . . . .", 2718 /* 3 */ " . . D D D . . .", 2719 /* 4 */ " . . L L L D . .", 2720 /* 5 */ " . . . . . L . .", 2721 /* 6 */ " . . . . . . . .", 2722 /* 7 */ " . . . . . . . ."}; 2723 2724 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 2725 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 2726 2727 assert_true (ai_move (ai, 5, 6)); 2728 assert_true (ai_move (ai, 1, 2)); 2729 assert_true (ai_move (ai, 1, 3)); 2730 assert_true (ai_move (ai, 0, 2)); 2731 assert_true (ai_move (ai, 1, 5)); 2732 assert_true (ai_move (ai, 3, 5)); 2733 assert_true (ai_move (ai, 2, 5)); 2734 assert_true (ai_move (ai, 6, 4)); 2735 assert_true (ai_move (ai, 4, 6)); 2736 assert_true (ai_move (ai, 2, 6)); 2737 assert_true (ai_move (ai, 3, 6)); 2738 assert_true (ai_move (ai, 1, 4)); 2739 assert_true (ai_move (ai, 0, 5)); 2740 assert_true (ai_move (ai, 0, 4)); 2741 assert_true (ai_move (ai, 6, 5)); 2742 assert_true (ai_move (ai, 4, 5)); 2743 assert_true (ai_move (ai, 2, 7)); 2744 assert_true (ai_move (ai, 7, 5)); 2745 assert_true (ai_move (ai, 7, 3)); 2746 assert_true (ai_move (ai, 5, 7)); 2747 assert_true (ai_move (ai, 5, 3)); 2748 assert_true (ai_move (ai, 4, 7)); 2749 assert_true (ai_move (ai, 3, 7)); 2750 assert_true (ai_move (ai, 1, 7)); 2751 assert_true (ai_move (ai, 0, 3)); 2752 assert_true (ai_move (ai, 0, 6)); 2753 assert_true (ai_move (ai, 6, 6)); 2754 assert_true (ai_move (ai, 6, 7)); 2755 assert_true (ai_move (ai, 0, 1)); 2756 assert_true (ai_move (ai, 0, 0)); 2757 assert_true (ai_move (ai, 1, 6)); 2758 assert_true (ai_move (ai, 2, 1)); 2759 assert_true (ai_move (ai, 1, 1)); 2760 assert_true (ai_move (ai, 0, 7)); 2761 assert_true (ai_move (ai, 3, 0)); 2762 assert_true (ai_move (ai, 5, 2)); 2763 assert_true (ai_move (ai, 6, 2)); 2764 assert_true (ai_move (ai, 7, 4)); 2765 assert_true (ai_move (ai, 5, 1)); 2766 assert_true (ai_move (ai, 7, 2)); 2767 assert_true (ai_move (ai, 6, 3)); 2768 assert_true (ai_move (ai, 5, 0)); 2769 assert_true (ai_move (ai, 4, 1)); 2770 assert_true (ai_move (ai, 7, 1)); 2771 assert_true (ai_move (ai, 3, 2)); 2772 assert_true (ai_move (ai, 2, 0)); 2773 assert_true (ai_move (ai, 4, 2)); 2774 assert_true (ai_move (ai, 6, 1)); 2775 assert_true (ai_move (ai, 1, 0)); 2776 assert_true (ai_move (ai, 4, 0)); 2777 assert_true (ai_move (ai, 3, 1)); 2778 assert_true (ai_move (ai, 2, 2)); 2779 assert_true (ai_move (ai, 6, 0)); 2780 assert_true (ai_move (ai, 7, 7)); 2781 assert_true (ai_move (ai, 7, 6)); 2782 assert_true (ai_move (ai, 7, 0)); 2783 } 2784 2785 private static inline void test_complete_reversi_game_18 () 2786 { 2787 /* 0 1 2 3 4 5 6 7 */ 2788 string [] board = {/* 0 */ " . . . . . . . .", 2789 /* 1 */ " . . . . . . . .", 2790 /* 2 */ " . . L . . . . .", 2791 /* 3 */ " . . D L D . . .", 2792 /* 4 */ " . . . D L D . .", 2793 /* 5 */ " . . . . . L . .", 2794 /* 6 */ " . . . . . . . .", 2795 /* 7 */ " . . . . . . . ."}; 2796 2797 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 2798 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 2799 2800 assert_true (ai_move (ai, 5, 6)); 2801 assert_true (ai_move (ai, 1, 3)); 2802 assert_true (ai_move (ai, 4, 5)); 2803 assert_true (ai_move (ai, 3, 5)); 2804 assert_true (ai_move (ai, 2, 6)); 2805 assert_true (ai_move (ai, 3, 6)); 2806 assert_true (ai_move (ai, 2, 7)); 2807 assert_true (ai_move (ai, 6, 5)); 2808 assert_true (ai_move (ai, 4, 6)); 2809 assert_true (ai_move (ai, 4, 7)); 2810 assert_true (ai_move (ai, 6, 4)); 2811 assert_true (ai_move (ai, 2, 5)); 2812 assert_true (ai_move (ai, 5, 7)); 2813 assert_true (ai_move (ai, 6, 7)); 2814 assert_true (ai_move (ai, 1, 5)); 2815 assert_true (ai_move (ai, 0, 5)); 2816 assert_true (ai_move (ai, 2, 4)); 2817 assert_true (ai_move (ai, 1, 4)); 2818 assert_true (ai_move (ai, 7, 5)); 2819 assert_true (ai_move (ai, 6, 3)); 2820 assert_true (ai_move (ai, 5, 3)); 2821 assert_true (ai_move (ai, 5, 2)); 2822 assert_true (ai_move (ai, 2, 1)); 2823 assert_true (ai_move (ai, 3, 1)); 2824 assert_true (ai_move (ai, 7, 2)); 2825 assert_true (ai_move (ai, 3, 2)); 2826 assert_true (ai_move (ai, 1, 2)); 2827 assert_true (ai_move (ai, 2, 0)); 2828 assert_true (ai_move (ai, 6, 2)); 2829 assert_true (ai_move (ai, 0, 3)); 2830 assert_true (ai_move (ai, 5, 1)); 2831 assert_true (ai_move (ai, 5, 0)); 2832 assert_true (ai_move (ai, 4, 2)); 2833 assert_true (ai_move (ai, 4, 1)); 2834 assert_true (ai_move (ai, 0, 2)); 2835 assert_true (ai_move (ai, 0, 4)); 2836 assert_true (ai_move (ai, 0, 6)); 2837 assert_true (ai_move (ai, 7, 3)); 2838 assert_true (ai_move (ai, 7, 4)); 2839 assert_true (ai_move (ai, 7, 6)); 2840 assert_true (ai_move (ai, 7, 7)); 2841 assert_true (ai_move (ai, 3, 7)); 2842 assert_true (ai_move (ai, 6, 6)); 2843 assert_true (ai_move (ai, 6, 1)); 2844 assert_true (ai_move (ai, 7, 1)); 2845 assert_true (ai_move (ai, 1, 1)); 2846 assert_true (ai_move (ai, 3, 0)); 2847 assert_true (ai_move (ai, 4, 0)); 2848 assert_true (ai_move (ai, 0, 0)); 2849 assert_true (ai_move (ai, 1, 0)); 2850 assert_true (ai_move (ai, 1, 6)); 2851 assert_true (ai_move (ai, 0, 7)); 2852 assert_true (ai_move (ai, 1, 7)); 2853 assert_true (ai_move (ai, 0, 1)); 2854 assert_true (ai_move (ai, 6, 0)); 2855 assert_true (ai_move (ai, 7, 0)); 2856 } 2857 2858 private static inline void test_complete_reversi_game_19 () 2859 { 2860 /* 0 1 2 3 4 5 6 7 */ 2861 string [] board = {/* 0 */ " . . . . . . . .", 2862 /* 1 */ " . . . . . . . .", 2863 /* 2 */ " . . . . . . D .", 2864 /* 3 */ " . . . L L D . .", 2865 /* 4 */ " . . . D D L . .", 2866 /* 5 */ " . . . . . . L .", 2867 /* 6 */ " . . . . . . . .", 2868 /* 7 */ " . . . . . . . ."}; 2869 2870 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 2871 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 2872 2873 assert_true (ai_move (ai, 5, 5)); 2874 assert_true (ai_move (ai, 6, 3)); 2875 assert_true (ai_move (ai, 7, 5)); 2876 assert_true (ai_move (ai, 5, 6)); 2877 assert_true (ai_move (ai, 4, 5)); 2878 assert_true (ai_move (ai, 3, 6)); 2879 assert_true (ai_move (ai, 3, 5)); 2880 assert_true (ai_move (ai, 4, 6)); 2881 assert_true (ai_move (ai, 5, 7)); 2882 assert_true (ai_move (ai, 4, 7)); 2883 assert_true (ai_move (ai, 3, 7)); 2884 assert_true (ai_move (ai, 2, 7)); 2885 assert_true (ai_move (ai, 1, 7)); 2886 assert_true (ai_move (ai, 2, 6)); 2887 assert_true (ai_move (ai, 2, 5)); 2888 assert_true (ai_move (ai, 2, 4)); 2889 assert_true (ai_move (ai, 1, 3)); 2890 assert_true (ai_move (ai, 1, 4)); 2891 assert_true (ai_move (ai, 0, 3)); 2892 assert_true (ai_move (ai, 0, 2)); 2893 assert_true (ai_move (ai, 0, 1)); 2894 assert_true (ai_move (ai, 6, 6)); 2895 assert_true (ai_move (ai, 5, 2)); 2896 assert_true (ai_move (ai, 4, 1)); 2897 assert_true (ai_move (ai, 5, 1)); 2898 assert_true (ai_move (ai, 6, 4)); 2899 assert_true (ai_move (ai, 7, 4)); 2900 assert_true (ai_move (ai, 0, 4)); 2901 assert_true (ai_move (ai, 0, 5)); 2902 assert_true (ai_move (ai, 7, 3)); 2903 assert_true (ai_move (ai, 7, 2)); 2904 assert_true (ai_move (ai, 7, 6)); 2905 assert_true (ai_move (ai, 7, 7)); 2906 assert_true (ai_move (ai, 1, 5)); 2907 assert_true (ai_move (ai, 3, 0)); 2908 assert_true (ai_move (ai, 5, 0)); 2909 assert_true (ai_move (ai, 4, 0)); 2910 assert_true (ai_move (ai, 2, 0)); 2911 assert_true (ai_move (ai, 4, 2)); 2912 assert_true (ai_move (ai, 2, 3)); 2913 assert_true (ai_move (ai, 3, 2)); 2914 assert_true (ai_move (ai, 2, 1)); 2915 assert_true (ai_move (ai, 0, 6)); 2916 assert_true (ai_move (ai, 2, 2)); 2917 assert_true (ai_move (ai, 1, 2)); 2918 assert_true (ai_move (ai, 3, 1)); 2919 assert_true (ai_move (ai, 1, 6)); 2920 assert_true (ai_move (ai, 0, 7)); 2921 assert_true (ai_move (ai, 1, 0)); 2922 assert_true (ai_move (ai, 0, 0)); 2923 assert_true (game.pass ()); 2924 assert_true (ai_move (ai, 1, 1)); 2925 assert_true (game.pass ()); 2926 assert_true (ai_move (ai, 6, 1)); 2927 assert_true (ai_move (ai, 6, 0)); 2928 assert_true (ai_move (ai, 6, 7)); 2929 assert_true (game.pass ()); 2930 assert_true (ai_move (ai, 7, 1)); 2931 assert_true (ai_move (ai, 7, 0)); 2932 } 2933 2934 private static inline void test_complete_reversi_game_20 () 2935 { 2936 /* 0 1 2 3 4 5 6 7 */ 2937 string [] board = {/* 0 */ " . . . . . . . .", 2938 /* 1 */ " . . . . . . . .", 2939 /* 2 */ " . . . . . . D .", 2940 /* 3 */ " . . . L L L L .", 2941 /* 4 */ " . . . D D D . .", 2942 /* 5 */ " . . . . . . . .", 2943 /* 6 */ " . . . . . . . .", 2944 /* 7 */ " . . . . . . . ."}; 2945 2946 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 2947 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 2948 2949 assert_true (ai_move (ai, 7, 2)); 2950 assert_true (ai_move (ai, 6, 5)); 2951 assert_true (ai_move (ai, 4, 5)); 2952 assert_true (ai_move (ai, 5, 5)); 2953 assert_true (ai_move (ai, 7, 5)); 2954 assert_true (ai_move (ai, 5, 6)); 2955 assert_true (ai_move (ai, 4, 7)); 2956 assert_true (ai_move (ai, 3, 6)); 2957 assert_true (ai_move (ai, 2, 5)); 2958 assert_true (ai_move (ai, 3, 5)); 2959 assert_true (ai_move (ai, 2, 6)); 2960 assert_true (ai_move (ai, 1, 5)); 2961 assert_true (ai_move (ai, 4, 6)); 2962 assert_true (ai_move (ai, 5, 2)); 2963 assert_true (ai_move (ai, 5, 1)); 2964 assert_true (ai_move (ai, 2, 7)); 2965 assert_true (ai_move (ai, 1, 4)); 2966 assert_true (ai_move (ai, 3, 7)); 2967 assert_true (ai_move (ai, 1, 7)); 2968 assert_true (ai_move (ai, 6, 4)); 2969 assert_true (ai_move (ai, 7, 3)); 2970 assert_true (ai_move (ai, 5, 0)); 2971 assert_true (ai_move (ai, 4, 1)); 2972 assert_true (ai_move (ai, 3, 2)); 2973 assert_true (ai_move (ai, 0, 5)); 2974 assert_true (ai_move (ai, 7, 4)); 2975 assert_true (ai_move (ai, 4, 2)); 2976 assert_true (ai_move (ai, 0, 3)); 2977 assert_true (ai_move (ai, 2, 1)); 2978 assert_true (ai_move (ai, 2, 3)); 2979 assert_true (ai_move (ai, 3, 0)); 2980 assert_true (ai_move (ai, 6, 1)); 2981 assert_true (ai_move (ai, 1, 2)); 2982 assert_true (ai_move (ai, 2, 4)); 2983 assert_true (ai_move (ai, 0, 4)); 2984 assert_true (ai_move (ai, 2, 2)); 2985 assert_true (ai_move (ai, 3, 1)); 2986 assert_true (ai_move (ai, 5, 7)); 2987 assert_true (ai_move (ai, 6, 7)); 2988 assert_true (ai_move (ai, 7, 1)); 2989 assert_true (ai_move (ai, 1, 3)); 2990 assert_true (ai_move (ai, 7, 6)); 2991 assert_true (ai_move (ai, 0, 2)); 2992 assert_true (ai_move (ai, 4, 0)); 2993 assert_true (ai_move (ai, 6, 6)); 2994 assert_true (ai_move (ai, 2, 0)); 2995 assert_true (ai_move (ai, 1, 1)); 2996 assert_true (ai_move (ai, 1, 6)); 2997 assert_true (ai_move (ai, 0, 7)); 2998 assert_true (ai_move (ai, 0, 6)); 2999 assert_true (ai_move (ai, 7, 0)); 3000 assert_true (ai_move (ai, 0, 1)); 3001 assert_true (ai_move (ai, 7, 7)); 3002 assert_true (ai_move (ai, 6, 0)); 3003 assert_true (ai_move (ai, 0, 0)); 3004 assert_true (ai_move (ai, 1, 0)); 3005 } 3006 3007 private static inline void test_complete_reversi_game_21 () 3008 { 3009 /* 0 1 2 3 4 5 6 7 */ 3010 string [] board = {/* 0 */ " . . . . . . . .", 3011 /* 1 */ " . . . . . . . .", 3012 /* 2 */ " . . . . . . D .", 3013 /* 3 */ " . . . L L D . .", 3014 /* 4 */ " . . . D L D . .", 3015 /* 5 */ " . . . . . L . .", 3016 /* 6 */ " . . . . . . . .", 3017 /* 7 */ " . . . . . . . ."}; 3018 3019 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 3020 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 3021 3022 assert_true (ai_move (ai, 5, 6)); 3023 assert_true (ai_move (ai, 6, 4)); 3024 assert_true (ai_move (ai, 5, 2)); 3025 assert_true (ai_move (ai, 4, 6)); 3026 assert_true (ai_move (ai, 6, 5)); 3027 assert_true (ai_move (ai, 7, 5)); 3028 assert_true (ai_move (ai, 3, 6)); 3029 assert_true (ai_move (ai, 3, 7)); 3030 assert_true (ai_move (ai, 7, 4)); 3031 assert_true (ai_move (ai, 7, 3)); 3032 assert_true (ai_move (ai, 4, 5)); 3033 assert_true (ai_move (ai, 5, 1)); 3034 assert_true (ai_move (ai, 5, 0)); 3035 assert_true (ai_move (ai, 4, 7)); 3036 assert_true (ai_move (ai, 5, 7)); 3037 assert_true (ai_move (ai, 6, 7)); 3038 assert_true (ai_move (ai, 7, 2)); 3039 assert_true (ai_move (ai, 7, 1)); 3040 assert_true (ai_move (ai, 2, 2)); 3041 assert_true (ai_move (ai, 2, 6)); 3042 assert_true (ai_move (ai, 2, 7)); 3043 assert_true (ai_move (ai, 1, 7)); 3044 assert_true (ai_move (ai, 1, 6)); 3045 assert_true (ai_move (ai, 2, 5)); 3046 assert_true (ai_move (ai, 7, 6)); 3047 assert_true (ai_move (ai, 7, 7)); 3048 assert_true (ai_move (ai, 6, 3)); 3049 assert_true (ai_move (ai, 0, 7)); 3050 assert_true (ai_move (ai, 0, 6)); 3051 assert_true (ai_move (ai, 0, 5)); 3052 assert_true (ai_move (ai, 2, 4)); 3053 assert_true (ai_move (ai, 1, 5)); 3054 assert_true (game.pass ()); 3055 assert_true (ai_move (ai, 3, 2)); 3056 assert_true (ai_move (ai, 6, 6)); 3057 assert_true (ai_move (ai, 4, 1)); 3058 assert_true (ai_move (ai, 2, 3)); 3059 assert_true (ai_move (ai, 4, 2)); 3060 assert_true (ai_move (ai, 1, 4)); 3061 assert_true (ai_move (ai, 3, 1)); 3062 assert_true (ai_move (ai, 2, 1)); 3063 assert_true (ai_move (ai, 3, 5)); 3064 assert_true (ai_move (ai, 6, 1)); 3065 assert_true (ai_move (ai, 3, 0)); 3066 assert_true (ai_move (ai, 4, 0)); 3067 assert_true (ai_move (ai, 1, 2)); 3068 assert_true (ai_move (ai, 2, 0)); 3069 assert_true (ai_move (ai, 0, 4)); 3070 assert_true (ai_move (ai, 0, 2)); 3071 assert_true (ai_move (ai, 1, 3)); 3072 assert_true (ai_move (ai, 0, 3)); 3073 assert_true (ai_move (ai, 0, 1)); 3074 assert_true (ai_move (ai, 1, 1)); 3075 assert_true (ai_move (ai, 0, 0)); 3076 assert_true (ai_move (ai, 1, 0)); 3077 assert_true (ai_move (ai, 6, 0)); 3078 assert_true (ai_move (ai, 7, 0)); 3079 } 3080 3081 private static inline void test_complete_reversi_game_22 () 3082 { 3083 /* 0 1 2 3 4 5 6 7 */ 3084 string [] board = {/* 0 */ " . . . . . . . .", 3085 /* 1 */ " . . . . . . . .", 3086 /* 2 */ " . . . . . . D .", 3087 /* 3 */ " . . . L L D . .", 3088 /* 4 */ " . . . D L D . .", 3089 /* 5 */ " . . . . L . . .", 3090 /* 6 */ " . . . . . . . .", 3091 /* 7 */ " . . . . . . . ."}; 3092 3093 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 3094 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 3095 3096 assert_true (ai_move (ai, 5, 6)); 3097 assert_true (ai_move (ai, 4, 6)); 3098 assert_true (ai_move (ai, 5, 2)); 3099 assert_true (ai_move (ai, 3, 5)); 3100 assert_true (ai_move (ai, 2, 5)); 3101 assert_true (ai_move (ai, 1, 5)); 3102 assert_true (ai_move (ai, 3, 2)); 3103 assert_true (ai_move (ai, 6, 4)); 3104 assert_true (ai_move (ai, 6, 5)); 3105 assert_true (ai_move (ai, 6, 3)); 3106 assert_true (ai_move (ai, 7, 3)); 3107 assert_true (ai_move (ai, 7, 2)); 3108 assert_true (ai_move (ai, 7, 1)); 3109 assert_true (ai_move (ai, 5, 1)); 3110 assert_true (ai_move (ai, 4, 2)); 3111 assert_true (ai_move (ai, 4, 1)); 3112 assert_true (ai_move (ai, 5, 0)); 3113 assert_true (ai_move (ai, 3, 0)); 3114 assert_true (ai_move (ai, 4, 0)); 3115 assert_true (ai_move (ai, 6, 0)); 3116 assert_true (ai_move (ai, 2, 6)); 3117 assert_true (ai_move (ai, 2, 2)); 3118 assert_true (ai_move (ai, 2, 4)); 3119 assert_true (ai_move (ai, 3, 7)); 3120 assert_true (ai_move (ai, 2, 7)); 3121 assert_true (ai_move (ai, 1, 3)); 3122 assert_true (ai_move (ai, 2, 3)); 3123 assert_true (ai_move (ai, 5, 5)); 3124 assert_true (ai_move (ai, 4, 7)); 3125 assert_true (ai_move (ai, 1, 2)); 3126 assert_true (ai_move (ai, 3, 6)); 3127 assert_true (ai_move (ai, 1, 4)); 3128 assert_true (ai_move (ai, 7, 4)); 3129 assert_true (ai_move (ai, 7, 5)); 3130 assert_true (ai_move (ai, 7, 6)); 3131 assert_true (ai_move (ai, 5, 7)); 3132 assert_true (ai_move (ai, 6, 7)); 3133 assert_true (ai_move (ai, 6, 6)); 3134 assert_true (ai_move (ai, 3, 1)); 3135 assert_true (ai_move (ai, 2, 1)); 3136 assert_true (ai_move (ai, 6, 1)); 3137 assert_true (ai_move (ai, 1, 7)); 3138 assert_true (ai_move (ai, 0, 7)); 3139 assert_true (game.pass ()); 3140 assert_true (ai_move (ai, 1, 6)); 3141 assert_true (ai_move (ai, 0, 6)); 3142 assert_true (ai_move (ai, 0, 5)); 3143 assert_true (ai_move (ai, 0, 4)); 3144 assert_true (ai_move (ai, 0, 3)); 3145 assert_true (ai_move (ai, 0, 2)); 3146 assert_true (ai_move (ai, 0, 1)); 3147 assert_true (ai_move (ai, 1, 1)); 3148 assert_true (ai_move (ai, 0, 0)); 3149 assert_true (ai_move (ai, 1, 0)); 3150 assert_true (ai_move (ai, 7, 7)); 3151 assert_true (game.pass ()); 3152 assert_true (ai_move (ai, 2, 0)); 3153 assert_true (game.pass ()); 3154 assert_true (ai_move (ai, 7, 0)); 3155 } 3156 3157 private static inline void test_complete_reversi_game_23 () 3158 { 3159 /* 0 1 2 3 4 5 6 7 */ 3160 string [] board = {/* 0 */ " . . . . . . . .", 3161 /* 1 */ " . . . . . . . .", 3162 /* 2 */ " . . . . . . D .", 3163 /* 3 */ " . . . L L D . .", 3164 /* 4 */ " . . . L D D . .", 3165 /* 5 */ " . . . L . . . .", 3166 /* 6 */ " . . . . . . . .", 3167 /* 7 */ " . . . . . . . ."}; 3168 3169 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 3170 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 3171 3172 assert_true (ai_move (ai, 2, 6)); 3173 assert_true (ai_move (ai, 3, 6)); 3174 assert_true (ai_move (ai, 3, 2)); 3175 assert_true (ai_move (ai, 3, 1)); 3176 assert_true (ai_move (ai, 2, 1)); 3177 assert_true (ai_move (ai, 5, 5)); 3178 assert_true (ai_move (ai, 5, 6)); 3179 assert_true (ai_move (ai, 6, 4)); 3180 assert_true (ai_move (ai, 6, 5)); 3181 assert_true (ai_move (ai, 4, 6)); 3182 assert_true (ai_move (ai, 7, 5)); 3183 assert_true (ai_move (ai, 5, 7)); 3184 assert_true (ai_move (ai, 4, 5)); 3185 assert_true (ai_move (ai, 7, 3)); 3186 assert_true (ai_move (ai, 7, 4)); 3187 assert_true (ai_move (ai, 7, 6)); 3188 assert_true (ai_move (ai, 2, 7)); 3189 assert_true (ai_move (ai, 5, 1)); 3190 assert_true (ai_move (ai, 3, 7)); 3191 assert_true (ai_move (ai, 5, 2)); 3192 assert_true (ai_move (ai, 2, 5)); 3193 assert_true (ai_move (ai, 1, 5)); 3194 assert_true (ai_move (ai, 6, 3)); 3195 assert_true (ai_move (ai, 4, 7)); 3196 assert_true (ai_move (ai, 6, 7)); 3197 assert_true (ai_move (ai, 7, 2)); 3198 assert_true (ai_move (ai, 1, 4)); 3199 assert_true (ai_move (ai, 1, 3)); 3200 assert_true (ai_move (ai, 0, 5)); 3201 assert_true (ai_move (ai, 1, 0)); 3202 assert_true (ai_move (ai, 4, 2)); 3203 assert_true (ai_move (ai, 1, 6)); 3204 assert_true (ai_move (ai, 1, 7)); 3205 assert_true (ai_move (ai, 2, 4)); 3206 assert_true (ai_move (ai, 0, 3)); 3207 assert_true (ai_move (ai, 4, 1)); 3208 assert_true (ai_move (ai, 0, 4)); 3209 assert_true (ai_move (ai, 6, 6)); 3210 assert_true (ai_move (ai, 4, 0)); 3211 assert_true (ai_move (ai, 5, 0)); 3212 assert_true (ai_move (ai, 0, 2)); 3213 assert_true (ai_move (ai, 3, 0)); 3214 assert_true (ai_move (ai, 7, 7)); 3215 assert_true (ai_move (ai, 0, 6)); 3216 assert_true (ai_move (ai, 0, 7)); 3217 assert_true (ai_move (ai, 1, 2)); 3218 assert_true (ai_move (ai, 7, 1)); 3219 assert_true (ai_move (ai, 6, 1)); 3220 assert_true (ai_move (ai, 7, 0)); 3221 assert_true (ai_move (ai, 6, 0)); 3222 assert_true (ai_move (ai, 2, 0)); 3223 assert_true (game.pass ()); 3224 assert_true (ai_move (ai, 1, 1)); 3225 assert_true (ai_move (ai, 0, 1)); 3226 assert_true (ai_move (ai, 2, 2)); 3227 assert_true (ai_move (ai, 2, 3)); 3228 assert_true (ai_move (ai, 0, 0)); 3229 } 3230 3231 private static inline void test_complete_reversi_game_24 () 3232 { 3233 /* 0 1 2 3 4 5 6 7 */ 3234 string [] board = {/* 0 */ " . . . . . . . .", 3235 /* 1 */ " . . . . . . . .", 3236 /* 2 */ " . . . . . . D .", 3237 /* 3 */ " . . . L L D . .", 3238 /* 4 */ " . . . L D D . .", 3239 /* 5 */ " . . L . . . . .", 3240 /* 6 */ " . . . . . . . .", 3241 /* 7 */ " . . . . . . . ."}; 3242 3243 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 3244 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 3245 3246 assert_true (ai_move (ai, 3, 2)); 3247 assert_true (ai_move (ai, 3, 1)); 3248 assert_true (ai_move (ai, 2, 1)); 3249 assert_true (ai_move (ai, 5, 5)); 3250 assert_true (ai_move (ai, 5, 6)); 3251 assert_true (ai_move (ai, 6, 4)); 3252 assert_true (ai_move (ai, 6, 5)); 3253 assert_true (ai_move (ai, 4, 6)); 3254 assert_true (ai_move (ai, 4, 5)); 3255 assert_true (ai_move (ai, 5, 2)); 3256 assert_true (ai_move (ai, 4, 2)); 3257 assert_true (ai_move (ai, 5, 1)); 3258 assert_true (ai_move (ai, 5, 0)); 3259 assert_true (ai_move (ai, 2, 2)); 3260 assert_true (ai_move (ai, 1, 2)); 3261 assert_true (ai_move (ai, 1, 3)); 3262 assert_true (ai_move (ai, 2, 3)); 3263 assert_true (ai_move (ai, 6, 3)); 3264 assert_true (ai_move (ai, 7, 5)); 3265 assert_true (ai_move (ai, 4, 1)); 3266 assert_true (ai_move (ai, 2, 0)); 3267 assert_true (ai_move (ai, 5, 7)); 3268 assert_true (ai_move (ai, 7, 2)); 3269 assert_true (ai_move (ai, 0, 2)); 3270 assert_true (ai_move (ai, 4, 0)); 3271 assert_true (ai_move (ai, 3, 0)); 3272 assert_true (ai_move (ai, 3, 7)); 3273 assert_true (ai_move (ai, 3, 6)); 3274 assert_true (ai_move (ai, 0, 4)); 3275 assert_true (ai_move (ai, 0, 3)); 3276 assert_true (ai_move (ai, 3, 5)); 3277 assert_true (ai_move (ai, 4, 7)); 3278 assert_true (ai_move (ai, 1, 5)); 3279 assert_true (ai_move (ai, 2, 7)); 3280 assert_true (ai_move (ai, 1, 4)); 3281 assert_true (ai_move (ai, 2, 4)); 3282 assert_true (ai_move (ai, 2, 6)); 3283 assert_true (ai_move (ai, 0, 5)); 3284 assert_true (ai_move (ai, 6, 1)); 3285 assert_true (ai_move (ai, 6, 6)); 3286 assert_true (ai_move (ai, 0, 1)); 3287 assert_true (ai_move (ai, 0, 0)); 3288 assert_true (ai_move (ai, 1, 0)); 3289 assert_true (ai_move (ai, 1, 7)); 3290 assert_true (ai_move (ai, 6, 7)); 3291 assert_true (ai_move (ai, 7, 7)); 3292 assert_true (ai_move (ai, 7, 6)); 3293 assert_true (ai_move (ai, 7, 4)); 3294 assert_true (ai_move (ai, 1, 1)); 3295 assert_true (ai_move (ai, 0, 6)); 3296 assert_true (ai_move (ai, 7, 3)); 3297 assert_true (ai_move (ai, 7, 0)); 3298 assert_true (ai_move (ai, 7, 1)); 3299 assert_true (ai_move (ai, 6, 0)); 3300 assert_true (ai_move (ai, 1, 6)); 3301 assert_true (ai_move (ai, 0, 7)); 3302 } 3303 3304 private static inline void test_complete_reversi_game_25 () 3305 { 3306 /* 0 1 2 3 4 5 6 7 */ 3307 string [] board = {/* 0 */ " . . . . . . . .", 3308 /* 1 */ " . . . . . . . .", 3309 /* 2 */ " . . . . . D . .", 3310 /* 3 */ " . . . L L L L .", 3311 /* 4 */ " . . . D D D . .", 3312 /* 5 */ " . . . . . . . .", 3313 /* 6 */ " . . . . . . . .", 3314 /* 7 */ " . . . . . . . ."}; 3315 3316 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 3317 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 3318 3319 assert_true (ai_move (ai, 6, 2)); 3320 assert_true (ai_move (ai, 4, 1)); 3321 assert_true (ai_move (ai, 5, 1)); 3322 assert_true (ai_move (ai, 6, 5)); 3323 assert_true (ai_move (ai, 5, 5)); 3324 assert_true (ai_move (ai, 2, 5)); 3325 assert_true (ai_move (ai, 7, 5)); 3326 assert_true (ai_move (ai, 4, 5)); 3327 assert_true (ai_move (ai, 7, 4)); 3328 assert_true (ai_move (ai, 5, 6)); 3329 assert_true (ai_move (ai, 5, 7)); 3330 assert_true (ai_move (ai, 7, 2)); 3331 assert_true (ai_move (ai, 6, 4)); 3332 assert_true (ai_move (ai, 5, 0)); 3333 assert_true (ai_move (ai, 3, 6)); 3334 assert_true (ai_move (ai, 7, 1)); 3335 assert_true (ai_move (ai, 1, 4)); 3336 assert_true (ai_move (ai, 4, 6)); 3337 assert_true (ai_move (ai, 3, 7)); 3338 assert_true (ai_move (ai, 4, 7)); 3339 assert_true (ai_move (ai, 3, 5)); 3340 assert_true (ai_move (ai, 2, 6)); 3341 assert_true (ai_move (ai, 2, 7)); 3342 assert_true (ai_move (ai, 1, 5)); 3343 assert_true (ai_move (ai, 0, 5)); 3344 assert_true (ai_move (ai, 0, 3)); 3345 assert_true (ai_move (ai, 1, 3)); 3346 assert_true (ai_move (ai, 2, 3)); 3347 assert_true (ai_move (ai, 2, 4)); 3348 assert_true (ai_move (ai, 1, 6)); 3349 assert_true (ai_move (ai, 1, 2)); 3350 assert_true (ai_move (ai, 2, 2)); 3351 assert_true (ai_move (ai, 2, 1)); 3352 assert_true (ai_move (ai, 3, 2)); 3353 assert_true (ai_move (ai, 0, 2)); 3354 assert_true (ai_move (ai, 2, 0)); 3355 assert_true (ai_move (ai, 0, 4)); 3356 assert_true (ai_move (ai, 0, 6)); 3357 assert_true (ai_move (ai, 0, 7)); 3358 assert_true (ai_move (ai, 1, 7)); 3359 assert_true (ai_move (ai, 4, 2)); 3360 assert_true (ai_move (ai, 3, 1)); 3361 assert_true (ai_move (ai, 4, 0)); 3362 assert_true (ai_move (ai, 3, 0)); 3363 assert_true (ai_move (ai, 1, 0)); 3364 assert_true (ai_move (ai, 0, 0)); 3365 assert_true (ai_move (ai, 6, 1)); 3366 assert_true (ai_move (ai, 6, 0)); 3367 assert_true (game.pass ()); 3368 assert_true (ai_move (ai, 7, 0)); 3369 assert_true (game.pass ()); 3370 assert_true (ai_move (ai, 7, 3)); 3371 assert_true (ai_move (ai, 6, 6)); 3372 assert_true (ai_move (ai, 0, 1)); 3373 assert_true (ai_move (ai, 1, 1)); 3374 assert_true (ai_move (ai, 7, 7)); 3375 assert_true (ai_move (ai, 7, 6)); 3376 assert_true (ai_move (ai, 6, 7)); 3377 } 3378 3379 private static inline void test_complete_reversi_game_26 () 3380 { 3381 /* 0 1 2 3 4 5 6 7 */ 3382 string [] board = {/* 0 */ " . . . . . . . .", 3383 /* 1 */ " . . . . . . . .", 3384 /* 2 */ " . . . . . D . .", 3385 /* 3 */ " . . . L D D . .", 3386 /* 4 */ " . . . D L D . .", 3387 /* 5 */ " . . . . . L . .", 3388 /* 6 */ " . . . . . . . .", 3389 /* 7 */ " . . . . . . . ."}; 3390 3391 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 3392 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 3393 3394 assert_true (ai_move (ai, 5, 6)); 3395 assert_true (ai_move (ai, 6, 2)); 3396 assert_true (ai_move (ai, 6, 3)); 3397 assert_true (ai_move (ai, 4, 2)); 3398 assert_true (ai_move (ai, 5, 1)); 3399 assert_true (ai_move (ai, 7, 3)); 3400 assert_true (ai_move (ai, 7, 4)); 3401 assert_true (ai_move (ai, 7, 5)); 3402 assert_true (ai_move (ai, 7, 2)); 3403 assert_true (ai_move (ai, 7, 1)); 3404 assert_true (ai_move (ai, 2, 4)); 3405 assert_true (ai_move (ai, 6, 4)); 3406 assert_true (ai_move (ai, 4, 5)); 3407 assert_true (ai_move (ai, 4, 1)); 3408 assert_true (ai_move (ai, 4, 0)); 3409 assert_true (ai_move (ai, 4, 6)); 3410 assert_true (ai_move (ai, 4, 7)); 3411 assert_true (ai_move (ai, 3, 6)); 3412 assert_true (ai_move (ai, 6, 5)); 3413 assert_true (ai_move (ai, 3, 5)); 3414 assert_true (ai_move (ai, 2, 7)); 3415 assert_true (ai_move (ai, 3, 1)); 3416 assert_true (ai_move (ai, 2, 5)); 3417 assert_true (ai_move (ai, 2, 6)); 3418 assert_true (ai_move (ai, 2, 2)); 3419 assert_true (ai_move (ai, 5, 0)); 3420 assert_true (ai_move (ai, 6, 0)); 3421 assert_true (ai_move (ai, 1, 5)); 3422 assert_true (ai_move (ai, 1, 4)); 3423 assert_true (ai_move (ai, 2, 0)); 3424 assert_true (ai_move (ai, 0, 5)); 3425 assert_true (ai_move (ai, 1, 3)); 3426 assert_true (ai_move (ai, 2, 3)); 3427 assert_true (ai_move (ai, 0, 4)); 3428 assert_true (ai_move (ai, 0, 2)); 3429 assert_true (ai_move (ai, 0, 6)); 3430 assert_true (ai_move (ai, 2, 1)); 3431 assert_true (ai_move (ai, 5, 7)); 3432 assert_true (ai_move (ai, 0, 3)); 3433 assert_true (ai_move (ai, 0, 1)); 3434 assert_true (ai_move (ai, 6, 1)); 3435 assert_true (ai_move (ai, 3, 7)); 3436 assert_true (ai_move (ai, 6, 7)); 3437 assert_true (ai_move (ai, 1, 2)); 3438 assert_true (ai_move (ai, 3, 2)); 3439 assert_true (ai_move (ai, 3, 0)); 3440 assert_true (ai_move (ai, 1, 0)); 3441 assert_true (ai_move (ai, 1, 1)); 3442 assert_true (ai_move (ai, 1, 7)); 3443 assert_true (ai_move (ai, 7, 6)); 3444 assert_true (ai_move (ai, 0, 0)); 3445 assert_true (ai_move (ai, 7, 0)); 3446 assert_true (ai_move (ai, 0, 7)); 3447 assert_true (ai_move (ai, 6, 6)); 3448 assert_true (ai_move (ai, 7, 7)); 3449 assert_true (ai_move (ai, 1, 6)); 3450 } 3451 3452 private static inline void test_complete_reversi_game_27 () 3453 { 3454 /* 0 1 2 3 4 5 6 7 */ 3455 string [] board = {/* 0 */ " . . . . . . . .", 3456 /* 1 */ " . . . . . . . .", 3457 /* 2 */ " . . . . . D . .", 3458 /* 3 */ " . . . L D D . .", 3459 /* 4 */ " . . . L D D . .", 3460 /* 5 */ " . . . L . . . .", 3461 /* 6 */ " . . . . . . . .", 3462 /* 7 */ " . . . . . . . ."}; 3463 3464 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 3465 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 3466 3467 assert_true (ai_move (ai, 2, 6)); 3468 assert_true (ai_move (ai, 3, 6)); 3469 assert_true (ai_move (ai, 2, 2)); 3470 assert_true (ai_move (ai, 1, 7)); 3471 assert_true (ai_move (ai, 2, 4)); 3472 assert_true (ai_move (ai, 1, 3)); 3473 assert_true (ai_move (ai, 1, 4)); 3474 assert_true (ai_move (ai, 3, 1)); 3475 assert_true (ai_move (ai, 4, 6)); 3476 assert_true (ai_move (ai, 5, 6)); 3477 assert_true (ai_move (ai, 5, 7)); 3478 assert_true (ai_move (ai, 1, 5)); 3479 assert_true (ai_move (ai, 5, 5)); 3480 assert_true (ai_move (ai, 4, 2)); 3481 assert_true (ai_move (ai, 4, 1)); 3482 assert_true (ai_move (ai, 5, 1)); 3483 assert_true (ai_move (ai, 4, 0)); 3484 assert_true (ai_move (ai, 6, 3)); 3485 assert_true (ai_move (ai, 6, 4)); 3486 assert_true (ai_move (ai, 4, 5)); 3487 assert_true (ai_move (ai, 5, 0)); 3488 assert_true (ai_move (ai, 6, 2)); 3489 assert_true (ai_move (ai, 7, 3)); 3490 assert_true (ai_move (ai, 3, 0)); 3491 assert_true (ai_move (ai, 3, 2)); 3492 assert_true (ai_move (ai, 7, 5)); 3493 assert_true (ai_move (ai, 1, 2)); 3494 assert_true (ai_move (ai, 6, 5)); 3495 assert_true (ai_move (ai, 2, 0)); 3496 assert_true (ai_move (ai, 0, 2)); 3497 assert_true (ai_move (ai, 2, 3)); 3498 assert_true (ai_move (ai, 2, 5)); 3499 assert_true (ai_move (ai, 2, 1)); 3500 assert_true (ai_move (ai, 7, 2)); 3501 assert_true (ai_move (ai, 7, 4)); 3502 assert_true (ai_move (ai, 4, 7)); 3503 assert_true (ai_move (ai, 0, 5)); 3504 assert_true (ai_move (ai, 0, 3)); 3505 assert_true (ai_move (ai, 0, 4)); 3506 assert_true (ai_move (ai, 0, 6)); 3507 assert_true (ai_move (ai, 2, 7)); 3508 assert_true (ai_move (ai, 1, 6)); 3509 assert_true (ai_move (ai, 0, 7)); 3510 assert_true (ai_move (ai, 1, 1)); 3511 assert_true (ai_move (ai, 0, 0)); 3512 assert_true (ai_move (ai, 6, 7)); 3513 assert_true (ai_move (ai, 0, 1)); 3514 assert_true (ai_move (ai, 6, 6)); 3515 assert_true (ai_move (ai, 3, 7)); 3516 assert_true (ai_move (ai, 1, 0)); 3517 assert_true (ai_move (ai, 7, 7)); 3518 assert_true (ai_move (ai, 7, 6)); 3519 assert_true (ai_move (ai, 6, 1)); 3520 assert_true (ai_move (ai, 7, 0)); 3521 assert_true (ai_move (ai, 7, 1)); 3522 assert_true (ai_move (ai, 6, 0)); 3523 } 3524 3525 private static inline void test_complete_reversi_game_28 () 3526 { 3527 /* 0 1 2 3 4 5 6 7 */ 3528 string [] board = {/* 0 */ " . . . . . . . .", 3529 /* 1 */ " . . . . . . . .", 3530 /* 2 */ " . . . . D . . .", 3531 /* 3 */ " . . . L D L . .", 3532 /* 4 */ " . . . D L L . .", 3533 /* 5 */ " . . . . . L . .", 3534 /* 6 */ " . . . . . . . .", 3535 /* 7 */ " . . . . . . . ."}; 3536 3537 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 3538 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 3539 3540 assert_true (ai_move (ai, 6, 5)); 3541 assert_true (ai_move (ai, 6, 4)); 3542 assert_true (ai_move (ai, 3, 2)); 3543 assert_true (ai_move (ai, 7, 5)); 3544 assert_true (ai_move (ai, 4, 5)); 3545 assert_true (ai_move (ai, 3, 6)); 3546 assert_true (ai_move (ai, 4, 6)); 3547 assert_true (ai_move (ai, 3, 7)); 3548 assert_true (ai_move (ai, 2, 7)); 3549 assert_true (ai_move (ai, 2, 6)); 3550 assert_true (ai_move (ai, 2, 5)); 3551 assert_true (ai_move (ai, 3, 5)); 3552 assert_true (ai_move (ai, 6, 2)); 3553 assert_true (ai_move (ai, 5, 2)); 3554 assert_true (ai_move (ai, 6, 3)); 3555 assert_true (ai_move (ai, 2, 1)); 3556 assert_true (ai_move (ai, 5, 1)); 3557 assert_true (ai_move (ai, 5, 0)); 3558 assert_true (ai_move (ai, 4, 1)); 3559 assert_true (ai_move (ai, 7, 2)); 3560 assert_true (ai_move (ai, 2, 3)); 3561 assert_true (ai_move (ai, 1, 5)); 3562 assert_true (ai_move (ai, 1, 4)); 3563 assert_true (ai_move (ai, 1, 7)); 3564 assert_true (ai_move (ai, 0, 5)); 3565 assert_true (ai_move (ai, 2, 4)); 3566 assert_true (ai_move (ai, 5, 6)); 3567 assert_true (ai_move (ai, 4, 7)); 3568 assert_true (ai_move (ai, 7, 4)); 3569 assert_true (ai_move (ai, 7, 3)); 3570 assert_true (ai_move (ai, 2, 2)); 3571 assert_true (ai_move (ai, 1, 2)); 3572 assert_true (ai_move (ai, 3, 1)); 3573 assert_true (ai_move (ai, 6, 1)); 3574 assert_true (ai_move (ai, 1, 3)); 3575 assert_true (ai_move (ai, 4, 0)); 3576 assert_true (ai_move (ai, 5, 7)); 3577 assert_true (ai_move (ai, 6, 7)); 3578 assert_true (ai_move (ai, 0, 2)); 3579 assert_true (ai_move (ai, 2, 0)); 3580 assert_true (ai_move (ai, 3, 0)); 3581 assert_true (ai_move (ai, 0, 4)); 3582 assert_true (ai_move (ai, 1, 1)); 3583 assert_true (ai_move (ai, 0, 6)); 3584 assert_true (ai_move (ai, 6, 6)); 3585 assert_true (ai_move (ai, 7, 6)); 3586 assert_true (ai_move (ai, 7, 7)); 3587 assert_true (ai_move (ai, 0, 1)); 3588 assert_true (ai_move (ai, 0, 3)); 3589 assert_true (ai_move (ai, 1, 0)); 3590 assert_true (ai_move (ai, 0, 7)); 3591 assert_true (game.pass ()); 3592 assert_true (ai_move (ai, 7, 1)); 3593 assert_true (game.pass ()); 3594 assert_true (ai_move (ai, 1, 6)); 3595 assert_true (game.pass ()); 3596 assert_true (ai_move (ai, 7, 0)); 3597 assert_true (ai_move (ai, 6, 0)); 3598 assert_true (ai_move (ai, 0, 0)); 3599 } 3600 3601 private static inline void test_complete_reversi_game_29 () 3602 { 3603 /* 0 1 2 3 4 5 6 7 */ 3604 string [] board = {/* 0 */ " . . . . . . . .", 3605 /* 1 */ " . . . . . L . .", 3606 /* 2 */ " . . . . L . . .", 3607 /* 3 */ " . . . L D L . .", 3608 /* 4 */ " . . . D D D . .", 3609 /* 5 */ " . . . . . . . .", 3610 /* 6 */ " . . . . . . . .", 3611 /* 7 */ " . . . . . . . ."}; 3612 3613 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 3614 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 3615 3616 assert_true (ai_move (ai, 4, 1)); 3617 assert_true (ai_move (ai, 5, 5)); 3618 assert_true (ai_move (ai, 6, 5)); 3619 assert_true (ai_move (ai, 6, 4)); 3620 assert_true (ai_move (ai, 3, 2)); 3621 assert_true (ai_move (ai, 7, 5)); 3622 assert_true (ai_move (ai, 4, 5)); 3623 assert_true (ai_move (ai, 3, 6)); 3624 assert_true (ai_move (ai, 4, 6)); 3625 assert_true (ai_move (ai, 3, 7)); 3626 assert_true (ai_move (ai, 2, 7)); 3627 assert_true (ai_move (ai, 2, 6)); 3628 assert_true (ai_move (ai, 2, 5)); 3629 assert_true (ai_move (ai, 3, 5)); 3630 assert_true (ai_move (ai, 6, 2)); 3631 assert_true (ai_move (ai, 7, 3)); 3632 assert_true (ai_move (ai, 7, 4)); 3633 assert_true (ai_move (ai, 1, 5)); 3634 assert_true (ai_move (ai, 5, 6)); 3635 assert_true (ai_move (ai, 6, 3)); 3636 assert_true (ai_move (ai, 4, 7)); 3637 assert_true (ai_move (ai, 5, 7)); 3638 assert_true (ai_move (ai, 6, 7)); 3639 assert_true (ai_move (ai, 2, 1)); 3640 assert_true (ai_move (ai, 2, 4)); 3641 assert_true (ai_move (ai, 5, 2)); 3642 assert_true (ai_move (ai, 5, 0)); 3643 assert_true (ai_move (ai, 1, 4)); 3644 assert_true (ai_move (ai, 2, 3)); 3645 assert_true (ai_move (ai, 3, 0)); 3646 assert_true (ai_move (ai, 0, 3)); 3647 assert_true (ai_move (ai, 2, 2)); 3648 assert_true (ai_move (ai, 2, 0)); 3649 assert_true (ai_move (ai, 4, 0)); 3650 assert_true (ai_move (ai, 0, 5)); 3651 assert_true (ai_move (ai, 1, 2)); 3652 assert_true (ai_move (ai, 3, 1)); 3653 assert_true (ai_move (ai, 1, 3)); 3654 assert_true (ai_move (ai, 0, 4)); 3655 assert_true (ai_move (ai, 1, 6)); 3656 assert_true (ai_move (ai, 0, 2)); 3657 assert_true (ai_move (ai, 1, 1)); 3658 assert_true (ai_move (ai, 7, 2)); 3659 assert_true (ai_move (ai, 6, 1)); 3660 assert_true (ai_move (ai, 7, 6)); 3661 assert_true (ai_move (ai, 6, 6)); 3662 assert_true (ai_move (ai, 0, 1)); 3663 assert_true (ai_move (ai, 0, 0)); 3664 assert_true (ai_move (ai, 1, 0)); 3665 assert_true (ai_move (ai, 0, 6)); 3666 assert_true (ai_move (ai, 7, 7)); 3667 assert_true (ai_move (ai, 6, 0)); 3668 assert_true (ai_move (ai, 7, 0)); 3669 assert_true (ai_move (ai, 7, 1)); 3670 assert_true (ai_move (ai, 1, 7)); 3671 assert_true (ai_move (ai, 0, 7)); 3672 } 3673 3674 private static inline void test_complete_reversi_game_30 () 3675 { 3676 /* 0 1 2 3 4 5 6 7 */ 3677 string [] board = {/* 0 */ " . . . . . . . .", 3678 /* 1 */ " . . . . . . . .", 3679 /* 2 */ " . . . . D . . .", 3680 /* 3 */ " . . . L D L . .", 3681 /* 4 */ " . . . L L D . .", 3682 /* 5 */ " . . . L . . . .", 3683 /* 6 */ " . . . . . . . .", 3684 /* 7 */ " . . . . . . . ."}; 3685 3686 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 3687 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 3688 3689 assert_true (ai_move (ai, 5, 2)); 3690 assert_true (ai_move (ai, 6, 2)); 3691 assert_true (ai_move (ai, 6, 4)); 3692 assert_true (ai_move (ai, 3, 2)); 3693 assert_true (ai_move (ai, 5, 1)); 3694 assert_true (ai_move (ai, 4, 0)); 3695 assert_true (ai_move (ai, 5, 0)); 3696 assert_true (ai_move (ai, 6, 3)); 3697 assert_true (ai_move (ai, 3, 1)); 3698 assert_true (ai_move (ai, 4, 1)); 3699 assert_true (ai_move (ai, 3, 0)); 3700 assert_true (ai_move (ai, 5, 5)); 3701 assert_true (ai_move (ai, 5, 6)); 3702 assert_true (ai_move (ai, 4, 5)); 3703 assert_true (ai_move (ai, 4, 6)); 3704 assert_true (ai_move (ai, 6, 5)); 3705 assert_true (ai_move (ai, 7, 5)); 3706 assert_true (ai_move (ai, 7, 4)); 3707 assert_true (ai_move (ai, 2, 6)); 3708 assert_true (ai_move (ai, 2, 5)); 3709 assert_true (ai_move (ai, 1, 5)); 3710 assert_true (ai_move (ai, 3, 6)); 3711 assert_true (ai_move (ai, 7, 2)); 3712 assert_true (ai_move (ai, 1, 4)); 3713 assert_true (ai_move (ai, 7, 3)); 3714 assert_true (ai_move (ai, 2, 7)); 3715 assert_true (ai_move (ai, 2, 1)); 3716 assert_true (ai_move (ai, 0, 5)); 3717 assert_true (ai_move (ai, 2, 2)); 3718 assert_true (ai_move (ai, 4, 7)); 3719 assert_true (ai_move (ai, 2, 3)); 3720 assert_true (ai_move (ai, 5, 7)); 3721 assert_true (ai_move (ai, 3, 7)); 3722 assert_true (ai_move (ai, 1, 2)); 3723 assert_true (ai_move (ai, 2, 4)); 3724 assert_true (ai_move (ai, 1, 3)); 3725 assert_true (ai_move (ai, 0, 2)); 3726 assert_true (ai_move (ai, 2, 0)); 3727 assert_true (ai_move (ai, 1, 0)); 3728 assert_true (ai_move (ai, 6, 6)); 3729 assert_true (ai_move (ai, 0, 3)); 3730 assert_true (ai_move (ai, 6, 0)); 3731 assert_true (ai_move (ai, 7, 0)); 3732 assert_true (ai_move (ai, 7, 1)); 3733 assert_true (ai_move (ai, 0, 6)); 3734 assert_true (ai_move (ai, 7, 6)); 3735 assert_true (ai_move (ai, 0, 4)); 3736 assert_true (ai_move (ai, 0, 1)); 3737 assert_true (ai_move (ai, 0, 0)); 3738 assert_true (ai_move (ai, 1, 6)); 3739 assert_true (ai_move (ai, 6, 1)); 3740 assert_true (ai_move (ai, 1, 1)); 3741 assert_true (ai_move (ai, 7, 7)); 3742 assert_true (ai_move (ai, 6, 7)); 3743 assert_true (ai_move (ai, 1, 7)); 3744 assert_true (ai_move (ai, 0, 7)); 3745 } 3746 3747 private static inline void test_complete_reversi_game_31 () 3748 { 3749 /* 0 1 2 3 4 5 6 7 */ 3750 string [] board = {/* 0 */ " . . . . . . . .", 3751 /* 1 */ " . . . L . . . .", 3752 /* 2 */ " . . . . L . . .", 3753 /* 3 */ " . . . L D L . .", 3754 /* 4 */ " . . . D D D . .", 3755 /* 5 */ " . . . . . . . .", 3756 /* 6 */ " . . . . . . . .", 3757 /* 7 */ " . . . . . . . ."}; 3758 3759 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 3760 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 3761 3762 assert_true (ai_move (ai, 4, 1)); 3763 assert_true (ai_move (ai, 5, 5)); 3764 assert_true (ai_move (ai, 6, 5)); 3765 assert_true (ai_move (ai, 6, 4)); 3766 assert_true (ai_move (ai, 2, 0)); 3767 assert_true (ai_move (ai, 5, 1)); 3768 assert_true (ai_move (ai, 3, 2)); 3769 assert_true (ai_move (ai, 2, 2)); 3770 assert_true (ai_move (ai, 2, 1)); 3771 assert_true (ai_move (ai, 3, 0)); 3772 assert_true (ai_move (ai, 4, 0)); 3773 assert_true (ai_move (ai, 7, 5)); 3774 assert_true (ai_move (ai, 1, 3)); 3775 assert_true (ai_move (ai, 1, 2)); 3776 assert_true (ai_move (ai, 2, 3)); 3777 assert_true (ai_move (ai, 1, 4)); 3778 assert_true (ai_move (ai, 0, 5)); 3779 assert_true (ai_move (ai, 1, 5)); 3780 assert_true (ai_move (ai, 0, 2)); 3781 assert_true (ai_move (ai, 5, 0)); 3782 assert_true (ai_move (ai, 5, 2)); 3783 assert_true (ai_move (ai, 1, 0)); 3784 assert_true (ai_move (ai, 5, 6)); 3785 assert_true (ai_move (ai, 4, 6)); 3786 assert_true (ai_move (ai, 2, 4)); 3787 assert_true (ai_move (ai, 2, 5)); 3788 assert_true (ai_move (ai, 3, 6)); 3789 assert_true (ai_move (ai, 6, 3)); 3790 assert_true (ai_move (ai, 7, 2)); 3791 assert_true (ai_move (ai, 6, 2)); 3792 assert_true (ai_move (ai, 0, 3)); 3793 assert_true (ai_move (ai, 3, 5)); 3794 assert_true (ai_move (ai, 4, 5)); 3795 assert_true (ai_move (ai, 2, 7)); 3796 assert_true (ai_move (ai, 2, 6)); 3797 assert_true (ai_move (ai, 0, 4)); 3798 assert_true (ai_move (ai, 7, 3)); 3799 assert_true (ai_move (ai, 5, 7)); 3800 assert_true (ai_move (ai, 4, 7)); 3801 assert_true (ai_move (ai, 3, 7)); 3802 assert_true (ai_move (ai, 7, 1)); 3803 assert_true (ai_move (ai, 1, 6)); 3804 assert_true (ai_move (ai, 6, 1)); 3805 assert_true (ai_move (ai, 7, 0)); 3806 assert_true (ai_move (ai, 6, 0)); 3807 assert_true (ai_move (ai, 7, 4)); 3808 assert_true (ai_move (ai, 0, 0)); 3809 assert_true (ai_move (ai, 0, 1)); 3810 assert_true (ai_move (ai, 0, 7)); 3811 assert_true (ai_move (ai, 0, 6)); 3812 assert_true (ai_move (ai, 1, 1)); 3813 assert_true (game.pass ()); 3814 assert_true (ai_move (ai, 6, 6)); 3815 assert_true (ai_move (ai, 7, 6)); 3816 assert_true (ai_move (ai, 1, 7)); 3817 assert_true (game.pass ()); 3818 assert_true (ai_move (ai, 6, 7)); 3819 } 3820 3821 private static inline void test_complete_reversi_game_32 () 3822 { 3823 /* 0 1 2 3 4 5 6 7 */ 3824 string [] board = {/* 0 */ " . . . . . . . .", 3825 /* 1 */ " . . . . . . . .", 3826 /* 2 */ " . . . D . . . .", 3827 /* 3 */ " . . . D D L . .", 3828 /* 4 */ " . . . D D L . .", 3829 /* 5 */ " . . . . . L . .", 3830 /* 6 */ " . . . . . . . .", 3831 /* 7 */ " . . . . . . . ."}; 3832 3833 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 3834 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 3835 3836 assert_true (ai_move (ai, 6, 4)); 3837 assert_true (ai_move (ai, 7, 5)); 3838 assert_true (ai_move (ai, 5, 6)); 3839 assert_true (ai_move (ai, 4, 6)); 3840 assert_true (ai_move (ai, 5, 2)); 3841 assert_true (ai_move (ai, 5, 7)); 3842 assert_true (ai_move (ai, 7, 4)); 3843 assert_true (ai_move (ai, 7, 3)); 3844 assert_true (ai_move (ai, 6, 6)); 3845 assert_true (ai_move (ai, 5, 1)); 3846 assert_true (ai_move (ai, 6, 2)); 3847 assert_true (ai_move (ai, 7, 2)); 3848 assert_true (ai_move (ai, 6, 5)); 3849 assert_true (ai_move (ai, 4, 2)); 3850 assert_true (ai_move (ai, 4, 5)); 3851 assert_true (ai_move (ai, 3, 5)); 3852 assert_true (ai_move (ai, 5, 0)); 3853 assert_true (ai_move (ai, 6, 3)); 3854 assert_true (ai_move (ai, 7, 6)); 3855 assert_true (ai_move (ai, 7, 7)); 3856 assert_true (ai_move (ai, 2, 5)); 3857 assert_true (ai_move (ai, 1, 5)); 3858 assert_true (ai_move (ai, 4, 1)); 3859 assert_true (ai_move (ai, 3, 0)); 3860 assert_true (ai_move (ai, 4, 0)); 3861 assert_true (ai_move (ai, 2, 1)); 3862 assert_true (ai_move (ai, 2, 3)); 3863 assert_true (ai_move (ai, 6, 0)); 3864 assert_true (ai_move (ai, 1, 0)); 3865 assert_true (ai_move (ai, 2, 2)); 3866 assert_true (ai_move (ai, 3, 6)); 3867 assert_true (ai_move (ai, 2, 4)); 3868 assert_true (ai_move (ai, 2, 6)); 3869 assert_true (ai_move (ai, 1, 3)); 3870 assert_true (ai_move (ai, 4, 7)); 3871 assert_true (ai_move (ai, 3, 1)); 3872 assert_true (ai_move (ai, 1, 4)); 3873 assert_true (ai_move (ai, 0, 5)); 3874 assert_true (ai_move (ai, 1, 2)); 3875 assert_true (ai_move (ai, 2, 7)); 3876 assert_true (ai_move (ai, 3, 7)); 3877 assert_true (ai_move (ai, 0, 2)); 3878 assert_true (ai_move (ai, 1, 1)); 3879 assert_true (ai_move (ai, 6, 1)); 3880 assert_true (ai_move (ai, 6, 7)); 3881 assert_true (ai_move (ai, 0, 0)); 3882 assert_true (ai_move (ai, 2, 0)); 3883 assert_true (game.pass ()); 3884 assert_true (ai_move (ai, 7, 0)); 3885 assert_true (ai_move (ai, 7, 1)); 3886 assert_true (ai_move (ai, 0, 1)); 3887 assert_true (game.pass ()); 3888 assert_true (ai_move (ai, 0, 4)); 3889 assert_true (ai_move (ai, 0, 3)); 3890 assert_true (ai_move (ai, 1, 6)); 3891 assert_true (ai_move (ai, 0, 7)); 3892 assert_true (ai_move (ai, 0, 6)); 3893 assert_true (ai_move (ai, 1, 7)); 3894 } 3895 3896 private static inline void test_complete_reversi_game_33 () 3897 { 3898 /* 0 1 2 3 4 5 6 7 */ 3899 string [] board = {/* 0 */ " . . . . . . . .", 3900 /* 1 */ " . . . . . . . .", 3901 /* 2 */ " . . . D . . . .", 3902 /* 3 */ " . . . D D L . .", 3903 /* 4 */ " . . . D L D . .", 3904 /* 5 */ " . . . L . . . .", 3905 /* 6 */ " . . . . . . . .", 3906 /* 7 */ " . . . . . . . ."}; 3907 3908 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 3909 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 3910 3911 assert_true (ai_move (ai, 5, 2)); 3912 assert_true (ai_move (ai, 6, 2)); 3913 assert_true (ai_move (ai, 6, 3)); 3914 assert_true (ai_move (ai, 4, 2)); 3915 assert_true (ai_move (ai, 4, 1)); 3916 assert_true (ai_move (ai, 6, 5)); 3917 assert_true (ai_move (ai, 3, 1)); 3918 assert_true (ai_move (ai, 5, 1)); 3919 assert_true (ai_move (ai, 7, 2)); 3920 assert_true (ai_move (ai, 4, 0)); 3921 assert_true (ai_move (ai, 3, 0)); 3922 assert_true (ai_move (ai, 2, 0)); 3923 assert_true (ai_move (ai, 2, 1)); 3924 assert_true (ai_move (ai, 1, 2)); 3925 assert_true (ai_move (ai, 3, 6)); 3926 assert_true (ai_move (ai, 2, 6)); 3927 assert_true (ai_move (ai, 5, 0)); 3928 assert_true (ai_move (ai, 6, 0)); 3929 assert_true (ai_move (ai, 4, 5)); 3930 assert_true (ai_move (ai, 2, 2)); 3931 assert_true (ai_move (ai, 2, 5)); 3932 assert_true (ai_move (ai, 7, 4)); 3933 assert_true (ai_move (ai, 0, 2)); 3934 assert_true (ai_move (ai, 1, 3)); 3935 assert_true (ai_move (ai, 2, 7)); 3936 assert_true (ai_move (ai, 2, 3)); 3937 assert_true (ai_move (ai, 1, 4)); 3938 assert_true (ai_move (ai, 0, 4)); 3939 assert_true (ai_move (ai, 6, 4)); 3940 assert_true (ai_move (ai, 7, 5)); 3941 assert_true (ai_move (ai, 2, 4)); 3942 assert_true (ai_move (ai, 5, 5)); 3943 assert_true (ai_move (ai, 6, 1)); 3944 assert_true (ai_move (ai, 5, 6)); 3945 assert_true (ai_move (ai, 5, 7)); 3946 assert_true (ai_move (ai, 4, 6)); 3947 assert_true (ai_move (ai, 4, 7)); 3948 assert_true (ai_move (ai, 3, 7)); 3949 assert_true (ai_move (ai, 1, 1)); 3950 assert_true (ai_move (ai, 1, 0)); 3951 assert_true (ai_move (ai, 6, 6)); 3952 assert_true (ai_move (ai, 7, 3)); 3953 assert_true (ai_move (ai, 7, 6)); 3954 assert_true (ai_move (ai, 7, 0)); 3955 assert_true (ai_move (ai, 7, 1)); 3956 assert_true (ai_move (ai, 7, 7)); 3957 assert_true (ai_move (ai, 6, 7)); 3958 assert_true (ai_move (ai, 0, 0)); 3959 assert_true (ai_move (ai, 0, 1)); 3960 assert_true (ai_move (ai, 0, 3)); 3961 assert_true (ai_move (ai, 0, 5)); 3962 assert_true (ai_move (ai, 1, 5)); 3963 assert_true (ai_move (ai, 0, 6)); 3964 assert_true (ai_move (ai, 0, 7)); 3965 assert_true (ai_move (ai, 1, 6)); 3966 assert_true (ai_move (ai, 1, 7)); 3967 } 3968 3969 private static inline void test_complete_reversi_game_34 () 3970 { 3971 /* 0 1 2 3 4 5 6 7 */ 3972 string [] board = {/* 0 */ " . . . . . . . .", 3973 /* 1 */ " . . . . . . . .", 3974 /* 2 */ " . . . D . . . .", 3975 /* 3 */ " . . L L L L . .", 3976 /* 4 */ " . . . D D D . .", 3977 /* 5 */ " . . . . . . . .", 3978 /* 6 */ " . . . . . . . .", 3979 /* 7 */ " . . . . . . . ."}; 3980 3981 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 3982 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 3983 3984 assert_true (ai_move (ai, 6, 2)); 3985 assert_true (ai_move (ai, 2, 1)); 3986 assert_true (ai_move (ai, 1, 2)); 3987 assert_true (ai_move (ai, 1, 4)); 3988 assert_true (ai_move (ai, 3, 0)); 3989 assert_true (ai_move (ai, 6, 3)); 3990 assert_true (ai_move (ai, 7, 2)); 3991 assert_true (ai_move (ai, 6, 5)); 3992 assert_true (ai_move (ai, 4, 5)); 3993 assert_true (ai_move (ai, 5, 5)); 3994 assert_true (ai_move (ai, 7, 5)); 3995 assert_true (ai_move (ai, 3, 6)); 3996 assert_true (ai_move (ai, 5, 6)); 3997 assert_true (ai_move (ai, 4, 6)); 3998 assert_true (ai_move (ai, 3, 7)); 3999 assert_true (ai_move (ai, 5, 7)); 4000 assert_true (ai_move (ai, 6, 4)); 4001 assert_true (ai_move (ai, 4, 7)); 4002 assert_true (ai_move (ai, 6, 7)); 4003 assert_true (ai_move (ai, 2, 5)); 4004 assert_true (ai_move (ai, 2, 7)); 4005 assert_true (ai_move (ai, 3, 5)); 4006 assert_true (ai_move (ai, 5, 2)); 4007 assert_true (ai_move (ai, 2, 6)); 4008 assert_true (ai_move (ai, 4, 2)); 4009 assert_true (ai_move (ai, 5, 1)); 4010 assert_true (ai_move (ai, 4, 1)); 4011 assert_true (ai_move (ai, 5, 0)); 4012 assert_true (ai_move (ai, 2, 4)); 4013 assert_true (ai_move (ai, 1, 5)); 4014 assert_true (ai_move (ai, 0, 5)); 4015 assert_true (ai_move (ai, 1, 0)); 4016 assert_true (ai_move (ai, 0, 3)); 4017 assert_true (ai_move (ai, 0, 4)); 4018 assert_true (ai_move (ai, 2, 2)); 4019 assert_true (ai_move (ai, 0, 2)); 4020 assert_true (ai_move (ai, 0, 1)); 4021 assert_true (ai_move (ai, 3, 1)); 4022 assert_true (ai_move (ai, 1, 3)); 4023 assert_true (ai_move (ai, 7, 4)); 4024 assert_true (ai_move (ai, 7, 3)); 4025 assert_true (ai_move (ai, 1, 1)); 4026 assert_true (ai_move (ai, 0, 0)); 4027 assert_true (ai_move (ai, 0, 6)); 4028 assert_true (ai_move (ai, 2, 0)); 4029 assert_true (ai_move (ai, 1, 6)); 4030 assert_true (ai_move (ai, 4, 0)); 4031 assert_true (ai_move (ai, 6, 6)); 4032 assert_true (ai_move (ai, 6, 0)); 4033 assert_true (ai_move (ai, 7, 6)); 4034 assert_true (ai_move (ai, 7, 7)); 4035 assert_true (ai_move (ai, 6, 1)); 4036 assert_true (ai_move (ai, 7, 0)); 4037 assert_true (game.pass ()); 4038 assert_true (ai_move (ai, 7, 1)); 4039 assert_true (game.pass ()); 4040 assert_true (ai_move (ai, 0, 7)); 4041 assert_true (ai_move (ai, 1, 7)); 4042 } 4043 4044 private static inline void test_complete_reversi_game_35 () 4045 { 4046 /* 0 1 2 3 4 5 6 7 */ 4047 string [] board = {/* 0 */ " . . . . . . . .", 4048 /* 1 */ " . . . . . . . .", 4049 /* 2 */ " . . D . . . . .", 4050 /* 3 */ " . . . D L L . .", 4051 /* 4 */ " . . . D D L . .", 4052 /* 5 */ " . . . . . . L .", 4053 /* 6 */ " . . . . . . . .", 4054 /* 7 */ " . . . . . . . ."}; 4055 4056 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 4057 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 4058 4059 assert_true (ai_move (ai, 4, 2)); 4060 assert_true (ai_move (ai, 3, 1)); 4061 assert_true (ai_move (ai, 5, 1)); 4062 assert_true (ai_move (ai, 1, 3)); 4063 assert_true (ai_move (ai, 6, 4)); 4064 assert_true (ai_move (ai, 6, 3)); 4065 assert_true (ai_move (ai, 7, 2)); 4066 assert_true (ai_move (ai, 6, 2)); 4067 assert_true (ai_move (ai, 5, 2)); 4068 assert_true (ai_move (ai, 4, 1)); 4069 assert_true (ai_move (ai, 7, 3)); 4070 assert_true (ai_move (ai, 7, 4)); 4071 assert_true (ai_move (ai, 7, 5)); 4072 assert_true (ai_move (ai, 5, 0)); 4073 assert_true (ai_move (ai, 3, 0)); 4074 assert_true (ai_move (ai, 2, 4)); 4075 assert_true (ai_move (ai, 5, 5)); 4076 assert_true (ai_move (ai, 5, 6)); 4077 assert_true (ai_move (ai, 4, 5)); 4078 assert_true (ai_move (ai, 4, 0)); 4079 assert_true (ai_move (ai, 6, 0)); 4080 assert_true (ai_move (ai, 2, 3)); 4081 assert_true (ai_move (ai, 3, 5)); 4082 assert_true (ai_move (ai, 3, 6)); 4083 assert_true (ai_move (ai, 2, 6)); 4084 assert_true (ai_move (ai, 6, 6)); 4085 assert_true (ai_move (ai, 4, 6)); 4086 assert_true (ai_move (ai, 4, 7)); 4087 assert_true (ai_move (ai, 2, 0)); 4088 assert_true (ai_move (ai, 3, 2)); 4089 assert_true (ai_move (ai, 1, 2)); 4090 assert_true (ai_move (ai, 2, 5)); 4091 assert_true (ai_move (ai, 1, 5)); 4092 assert_true (ai_move (ai, 1, 4)); 4093 assert_true (ai_move (ai, 0, 2)); 4094 assert_true (ai_move (ai, 2, 7)); 4095 assert_true (ai_move (ai, 1, 6)); 4096 assert_true (ai_move (ai, 0, 4)); 4097 assert_true (ai_move (ai, 0, 3)); 4098 assert_true (ai_move (ai, 0, 1)); 4099 assert_true (ai_move (ai, 6, 1)); 4100 assert_true (ai_move (ai, 2, 1)); 4101 assert_true (ai_move (ai, 1, 0)); 4102 assert_true (ai_move (ai, 0, 5)); 4103 assert_true (ai_move (ai, 0, 7)); 4104 assert_true (ai_move (ai, 1, 7)); 4105 assert_true (ai_move (ai, 0, 6)); 4106 assert_true (ai_move (ai, 7, 0)); 4107 assert_true (ai_move (ai, 0, 0)); 4108 assert_true (ai_move (ai, 7, 1)); 4109 assert_true (ai_move (ai, 1, 1)); 4110 assert_true (ai_move (ai, 7, 6)); 4111 assert_true (ai_move (ai, 3, 7)); 4112 assert_true (game.pass ()); 4113 assert_true (ai_move (ai, 5, 7)); 4114 assert_true (ai_move (ai, 6, 7)); 4115 assert_true (ai_move (ai, 7, 7)); 4116 } 4117 4118 private static inline void test_complete_reversi_game_36 () 4119 { 4120 /* 0 1 2 3 4 5 6 7 */ 4121 string [] board = {/* 0 */ " . . . . . . . .", 4122 /* 1 */ " . . . . . . . .", 4123 /* 2 */ " . . D . . . . .", 4124 /* 3 */ " . . . D L L . .", 4125 /* 4 */ " . . . D D L . .", 4126 /* 5 */ " . . . . . L . .", 4127 /* 6 */ " . . . . . . . .", 4128 /* 7 */ " . . . . . . . ."}; 4129 4130 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 4131 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 4132 4133 assert_true (ai_move (ai, 6, 4)); 4134 assert_true (ai_move (ai, 6, 5)); 4135 assert_true (ai_move (ai, 4, 6)); 4136 assert_true (ai_move (ai, 5, 6)); 4137 assert_true (ai_move (ai, 6, 2)); 4138 assert_true (ai_move (ai, 5, 2)); 4139 assert_true (ai_move (ai, 6, 3)); 4140 assert_true (ai_move (ai, 7, 2)); 4141 assert_true (ai_move (ai, 5, 1)); 4142 assert_true (ai_move (ai, 4, 1)); 4143 assert_true (ai_move (ai, 7, 3)); 4144 assert_true (ai_move (ai, 5, 0)); 4145 assert_true (ai_move (ai, 4, 2)); 4146 assert_true (ai_move (ai, 7, 4)); 4147 assert_true (ai_move (ai, 5, 7)); 4148 assert_true (ai_move (ai, 3, 7)); 4149 assert_true (ai_move (ai, 6, 1)); 4150 assert_true (ai_move (ai, 3, 2)); 4151 assert_true (ai_move (ai, 7, 1)); 4152 assert_true (ai_move (ai, 7, 0)); 4153 assert_true (ai_move (ai, 3, 1)); 4154 assert_true (ai_move (ai, 2, 0)); 4155 assert_true (ai_move (ai, 3, 5)); 4156 assert_true (ai_move (ai, 1, 3)); 4157 assert_true (ai_move (ai, 1, 2)); 4158 assert_true (ai_move (ai, 2, 1)); 4159 assert_true (ai_move (ai, 0, 4)); 4160 assert_true (ai_move (ai, 2, 3)); 4161 assert_true (ai_move (ai, 6, 0)); 4162 assert_true (ai_move (ai, 0, 2)); 4163 assert_true (ai_move (ai, 2, 4)); 4164 assert_true (ai_move (ai, 4, 7)); 4165 assert_true (ai_move (ai, 2, 7)); 4166 assert_true (ai_move (ai, 0, 3)); 4167 assert_true (ai_move (ai, 7, 5)); 4168 assert_true (ai_move (ai, 7, 6)); 4169 assert_true (ai_move (ai, 3, 0)); 4170 assert_true (ai_move (ai, 4, 0)); 4171 assert_true (ai_move (ai, 1, 4)); 4172 assert_true (ai_move (ai, 0, 5)); 4173 assert_true (ai_move (ai, 1, 1)); 4174 assert_true (ai_move (ai, 2, 6)); 4175 assert_true (ai_move (ai, 3, 6)); 4176 assert_true (ai_move (ai, 0, 0)); 4177 assert_true (ai_move (ai, 1, 0)); 4178 assert_true (ai_move (ai, 2, 5)); 4179 assert_true (ai_move (ai, 4, 5)); 4180 assert_true (game.pass ()); 4181 assert_true (ai_move (ai, 1, 7)); 4182 assert_true (ai_move (ai, 1, 6)); 4183 assert_true (ai_move (ai, 6, 7)); 4184 assert_true (ai_move (ai, 6, 6)); 4185 assert_true (ai_move (ai, 7, 7)); 4186 assert_true (game.pass ()); 4187 assert_true (ai_move (ai, 0, 1)); 4188 assert_true (game.pass ()); 4189 assert_true (ai_move (ai, 0, 7)); 4190 assert_true (ai_move (ai, 1, 5)); 4191 assert_true (ai_move (ai, 0, 6)); 4192 } 4193 4194 private static inline void test_complete_reversi_game_37 () 4195 { 4196 /* 0 1 2 3 4 5 6 7 */ 4197 string [] board = {/* 0 */ " . . . . . . . .", 4198 /* 1 */ " . . . . . . . .", 4199 /* 2 */ " . . D . . . . .", 4200 /* 3 */ " . . . D L L . .", 4201 /* 4 */ " . . . D L D . .", 4202 /* 5 */ " . . . . L . . .", 4203 /* 6 */ " . . . . . . . .", 4204 /* 7 */ " . . . . . . . ."}; 4205 4206 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 4207 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 4208 4209 assert_true (ai_move (ai, 5, 6)); 4210 assert_true (ai_move (ai, 6, 4)); 4211 assert_true (ai_move (ai, 5, 5)); 4212 assert_true (ai_move (ai, 4, 6)); 4213 assert_true (ai_move (ai, 3, 6)); 4214 assert_true (ai_move (ai, 3, 7)); 4215 assert_true (ai_move (ai, 5, 2)); 4216 assert_true (ai_move (ai, 6, 5)); 4217 assert_true (ai_move (ai, 6, 6)); 4218 assert_true (ai_move (ai, 4, 2)); 4219 assert_true (ai_move (ai, 3, 5)); 4220 assert_true (ai_move (ai, 6, 2)); 4221 assert_true (ai_move (ai, 5, 1)); 4222 assert_true (ai_move (ai, 4, 7)); 4223 assert_true (ai_move (ai, 6, 7)); 4224 assert_true (ai_move (ai, 4, 1)); 4225 assert_true (ai_move (ai, 7, 2)); 4226 assert_true (ai_move (ai, 6, 3)); 4227 assert_true (ai_move (ai, 5, 7)); 4228 assert_true (ai_move (ai, 2, 7)); 4229 assert_true (ai_move (ai, 1, 7)); 4230 assert_true (ai_move (ai, 7, 7)); 4231 assert_true (ai_move (ai, 7, 5)); 4232 assert_true (ai_move (ai, 0, 7)); 4233 assert_true (ai_move (ai, 3, 2)); 4234 assert_true (ai_move (ai, 7, 6)); 4235 assert_true (ai_move (ai, 3, 1)); 4236 assert_true (ai_move (ai, 2, 6)); 4237 assert_true (ai_move (ai, 2, 5)); 4238 assert_true (ai_move (ai, 2, 0)); 4239 assert_true (ai_move (ai, 4, 0)); 4240 assert_true (ai_move (ai, 1, 4)); 4241 assert_true (ai_move (ai, 1, 5)); 4242 assert_true (ai_move (ai, 1, 6)); 4243 assert_true (ai_move (ai, 0, 5)); 4244 assert_true (ai_move (ai, 2, 1)); 4245 assert_true (ai_move (ai, 2, 3)); 4246 assert_true (ai_move (ai, 7, 4)); 4247 assert_true (ai_move (ai, 7, 3)); 4248 assert_true (ai_move (ai, 7, 1)); 4249 assert_true (ai_move (ai, 6, 1)); 4250 assert_true (ai_move (ai, 0, 3)); 4251 assert_true (ai_move (ai, 1, 3)); 4252 assert_true (ai_move (ai, 2, 4)); 4253 assert_true (ai_move (ai, 1, 2)); 4254 assert_true (ai_move (ai, 3, 0)); 4255 assert_true (ai_move (ai, 5, 0)); 4256 assert_true (ai_move (ai, 0, 6)); 4257 assert_true (ai_move (ai, 1, 0)); 4258 assert_true (ai_move (ai, 0, 4)); 4259 assert_true (ai_move (ai, 1, 1)); 4260 assert_true (ai_move (ai, 0, 2)); 4261 assert_true (ai_move (ai, 0, 1)); 4262 assert_true (ai_move (ai, 7, 0)); 4263 assert_true (ai_move (ai, 6, 0)); 4264 assert_true (ai_move (ai, 0, 0)); 4265 } 4266 4267 private static inline void test_complete_reversi_game_38 () 4268 { 4269 /* 0 1 2 3 4 5 6 7 */ 4270 string [] board = {/* 0 */ " . . . . . . . .", 4271 /* 1 */ " . . . . . . . .", 4272 /* 2 */ " . . D . . . . .", 4273 /* 3 */ " . . . D L L . .", 4274 /* 4 */ " . . . D L D . .", 4275 /* 5 */ " . . . L . . . .", 4276 /* 6 */ " . . . . . . . .", 4277 /* 7 */ " . . . . . . . ."}; 4278 4279 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 4280 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 4281 4282 assert_true (ai_move (ai, 5, 5)); 4283 assert_true (ai_move (ai, 5, 6)); 4284 assert_true (ai_move (ai, 2, 6)); 4285 assert_true (ai_move (ai, 4, 5)); 4286 assert_true (ai_move (ai, 6, 5)); 4287 assert_true (ai_move (ai, 3, 6)); 4288 assert_true (ai_move (ai, 5, 7)); 4289 assert_true (ai_move (ai, 7, 5)); 4290 assert_true (ai_move (ai, 3, 7)); 4291 assert_true (ai_move (ai, 4, 7)); 4292 assert_true (ai_move (ai, 6, 4)); 4293 assert_true (ai_move (ai, 6, 3)); 4294 assert_true (ai_move (ai, 4, 6)); 4295 assert_true (ai_move (ai, 2, 7)); 4296 assert_true (ai_move (ai, 1, 7)); 4297 assert_true (ai_move (ai, 2, 5)); 4298 assert_true (ai_move (ai, 7, 2)); 4299 assert_true (ai_move (ai, 7, 3)); 4300 assert_true (ai_move (ai, 6, 7)); 4301 assert_true (ai_move (ai, 3, 2)); 4302 assert_true (ai_move (ai, 1, 4)); 4303 assert_true (ai_move (ai, 1, 5)); 4304 assert_true (ai_move (ai, 0, 5)); 4305 assert_true (ai_move (ai, 1, 2)); 4306 assert_true (ai_move (ai, 2, 4)); 4307 assert_true (ai_move (ai, 0, 4)); 4308 assert_true (ai_move (ai, 0, 3)); 4309 assert_true (ai_move (ai, 7, 1)); 4310 assert_true (ai_move (ai, 1, 3)); 4311 assert_true (ai_move (ai, 1, 6)); 4312 assert_true (ai_move (ai, 2, 3)); 4313 assert_true (ai_move (ai, 6, 6)); 4314 assert_true (ai_move (ai, 7, 4)); 4315 assert_true (ai_move (ai, 0, 2)); 4316 assert_true (ai_move (ai, 0, 1)); 4317 assert_true (ai_move (ai, 7, 6)); 4318 assert_true (ai_move (ai, 7, 0)); 4319 assert_true (ai_move (ai, 1, 1)); 4320 assert_true (ai_move (ai, 0, 7)); 4321 assert_true (ai_move (ai, 0, 6)); 4322 assert_true (ai_move (ai, 0, 0)); 4323 assert_true (ai_move (ai, 2, 1)); 4324 assert_true (ai_move (ai, 7, 7)); 4325 assert_true (ai_move (ai, 4, 2)); 4326 assert_true (ai_move (ai, 2, 0)); 4327 assert_true (ai_move (ai, 3, 1)); 4328 assert_true (ai_move (ai, 4, 0)); 4329 assert_true (ai_move (ai, 1, 0)); 4330 assert_true (ai_move (ai, 3, 0)); 4331 assert_true (ai_move (ai, 4, 1)); 4332 assert_true (ai_move (ai, 5, 0)); 4333 assert_true (ai_move (ai, 6, 0)); 4334 assert_true (ai_move (ai, 6, 2)); 4335 assert_true (ai_move (ai, 6, 1)); 4336 assert_true (ai_move (ai, 5, 1)); 4337 assert_true (ai_move (ai, 5, 2)); 4338 } 4339 4340 private static inline void test_complete_reversi_game_39 () 4341 { 4342 /* 0 1 2 3 4 5 6 7 */ 4343 string [] board = {/* 0 */ " . . . . . . . .", 4344 /* 1 */ " . . . . . . . .", 4345 /* 2 */ " . . D . . . . .", 4346 /* 3 */ " . . . D L L . .", 4347 /* 4 */ " . . . L D D . .", 4348 /* 5 */ " . . L . . . . .", 4349 /* 6 */ " . . . . . . . .", 4350 /* 7 */ " . . . . . . . ."}; 4351 4352 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 4353 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 4354 4355 assert_true (ai_move (ai, 5, 2)); 4356 assert_true (ai_move (ai, 6, 3)); 4357 assert_true (ai_move (ai, 6, 2)); 4358 assert_true (ai_move (ai, 4, 1)); 4359 assert_true (ai_move (ai, 5, 1)); 4360 assert_true (ai_move (ai, 6, 5)); 4361 assert_true (ai_move (ai, 5, 5)); 4362 assert_true (ai_move (ai, 3, 2)); 4363 assert_true (ai_move (ai, 7, 5)); 4364 assert_true (ai_move (ai, 1, 2)); 4365 assert_true (ai_move (ai, 7, 4)); 4366 assert_true (ai_move (ai, 4, 5)); 4367 assert_true (ai_move (ai, 3, 6)); 4368 assert_true (ai_move (ai, 4, 6)); 4369 assert_true (ai_move (ai, 1, 4)); 4370 assert_true (ai_move (ai, 6, 4)); 4371 assert_true (ai_move (ai, 5, 6)); 4372 assert_true (ai_move (ai, 4, 2)); 4373 assert_true (ai_move (ai, 3, 5)); 4374 assert_true (ai_move (ai, 7, 3)); 4375 assert_true (ai_move (ai, 7, 2)); 4376 assert_true (ai_move (ai, 5, 7)); 4377 assert_true (ai_move (ai, 2, 1)); 4378 assert_true (ai_move (ai, 2, 3)); 4379 assert_true (ai_move (ai, 4, 7)); 4380 assert_true (ai_move (ai, 5, 0)); 4381 assert_true (ai_move (ai, 0, 2)); 4382 assert_true (ai_move (ai, 2, 0)); 4383 assert_true (ai_move (ai, 1, 3)); 4384 assert_true (ai_move (ai, 1, 5)); 4385 assert_true (ai_move (ai, 0, 5)); 4386 assert_true (ai_move (ai, 3, 1)); 4387 assert_true (ai_move (ai, 2, 4)); 4388 assert_true (ai_move (ai, 2, 6)); 4389 assert_true (ai_move (ai, 3, 7)); 4390 assert_true (ai_move (ai, 2, 7)); 4391 assert_true (ai_move (ai, 4, 0)); 4392 assert_true (ai_move (ai, 3, 0)); 4393 assert_true (ai_move (ai, 1, 6)); 4394 assert_true (ai_move (ai, 6, 7)); 4395 assert_true (ai_move (ai, 1, 0)); 4396 assert_true (ai_move (ai, 0, 0)); 4397 assert_true (ai_move (ai, 6, 6)); 4398 assert_true (ai_move (ai, 6, 0)); 4399 assert_true (ai_move (ai, 6, 1)); 4400 assert_true (ai_move (ai, 1, 1)); 4401 assert_true (ai_move (ai, 0, 1)); 4402 assert_true (ai_move (ai, 0, 3)); 4403 assert_true (ai_move (ai, 0, 4)); 4404 assert_true (ai_move (ai, 7, 7)); 4405 assert_true (ai_move (ai, 7, 6)); 4406 assert_true (ai_move (ai, 0, 7)); 4407 assert_true (ai_move (ai, 0, 6)); 4408 assert_true (ai_move (ai, 1, 7)); 4409 assert_true (game.pass ()); 4410 assert_true (ai_move (ai, 7, 1)); 4411 assert_true (ai_move (ai, 7, 0)); 4412 } 4413 4414 private static inline void test_complete_reversi_game_40 () 4415 { 4416 /* 0 1 2 3 4 5 6 7 */ 4417 string [] board = {/* 0 */ " . . . . . . . .", 4418 /* 1 */ " . . . . . . . .", 4419 /* 2 */ " . . D . . . . .", 4420 /* 3 */ " . . L L L L . .", 4421 /* 4 */ " . . . D D D . .", 4422 /* 5 */ " . . . . . . . .", 4423 /* 6 */ " . . . . . . . .", 4424 /* 7 */ " . . . . . . . ."}; 4425 4426 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 4427 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 4428 4429 assert_true (ai_move (ai, 2, 4)); 4430 assert_true (ai_move (ai, 6, 5)); 4431 assert_true (ai_move (ai, 6, 4)); 4432 assert_true (ai_move (ai, 1, 3)); 4433 assert_true (ai_move (ai, 1, 2)); 4434 assert_true (ai_move (ai, 3, 1)); 4435 assert_true (ai_move (ai, 2, 1)); 4436 assert_true (ai_move (ai, 7, 5)); 4437 assert_true (ai_move (ai, 0, 4)); 4438 assert_true (ai_move (ai, 5, 5)); 4439 assert_true (ai_move (ai, 3, 2)); 4440 assert_true (ai_move (ai, 2, 5)); 4441 assert_true (ai_move (ai, 2, 6)); 4442 assert_true (ai_move (ai, 1, 4)); 4443 assert_true (ai_move (ai, 1, 5)); 4444 assert_true (ai_move (ai, 0, 1)); 4445 assert_true (ai_move (ai, 0, 3)); 4446 assert_true (ai_move (ai, 2, 0)); 4447 assert_true (ai_move (ai, 4, 0)); 4448 assert_true (ai_move (ai, 2, 7)); 4449 assert_true (ai_move (ai, 3, 6)); 4450 assert_true (ai_move (ai, 0, 5)); 4451 assert_true (ai_move (ai, 0, 6)); 4452 assert_true (ai_move (ai, 4, 7)); 4453 assert_true (ai_move (ai, 3, 0)); 4454 assert_true (ai_move (ai, 5, 0)); 4455 assert_true (ai_move (ai, 3, 5)); 4456 assert_true (ai_move (ai, 4, 5)); 4457 assert_true (ai_move (ai, 5, 6)); 4458 assert_true (ai_move (ai, 4, 1)); 4459 assert_true (ai_move (ai, 4, 2)); 4460 assert_true (ai_move (ai, 5, 7)); 4461 assert_true (ai_move (ai, 6, 6)); 4462 assert_true (ai_move (ai, 4, 6)); 4463 assert_true (ai_move (ai, 5, 2)); 4464 assert_true (ai_move (ai, 5, 1)); 4465 assert_true (ai_move (ai, 6, 2)); 4466 assert_true (ai_move (ai, 1, 0)); 4467 assert_true (ai_move (ai, 6, 7)); 4468 assert_true (ai_move (ai, 6, 3)); 4469 assert_true (ai_move (ai, 7, 2)); 4470 assert_true (ai_move (ai, 7, 4)); 4471 assert_true (ai_move (ai, 3, 7)); 4472 assert_true (ai_move (ai, 7, 7)); 4473 assert_true (ai_move (ai, 6, 1)); 4474 assert_true (ai_move (ai, 1, 7)); 4475 assert_true (ai_move (ai, 7, 3)); 4476 assert_true (ai_move (ai, 7, 1)); 4477 assert_true (ai_move (ai, 7, 0)); 4478 assert_true (ai_move (ai, 0, 2)); 4479 assert_true (ai_move (ai, 0, 0)); 4480 assert_true (ai_move (ai, 6, 0)); 4481 assert_true (ai_move (ai, 7, 6)); 4482 assert_true (ai_move (ai, 1, 6)); 4483 assert_true (ai_move (ai, 0, 7)); 4484 assert_true (game.pass ()); 4485 assert_true (ai_move (ai, 1, 1)); 4486 } 4487 4488 private static inline void test_complete_reversi_game_41 () 4489 { 4490 /* 0 1 2 3 4 5 6 7 */ 4491 string [] board = {/* 0 */ " . . . . . . . .", 4492 /* 1 */ " . . . . . . . .", 4493 /* 2 */ " . . . . . . . .", 4494 /* 3 */ " . . . L D . . .", 4495 /* 4 */ " . . . L L L L .", 4496 /* 5 */ " . . . D . . . .", 4497 /* 6 */ " . . D . . . . .", 4498 /* 7 */ " . . . . . . . ."}; 4499 4500 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 4501 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 4502 4503 assert_true (ai_move (ai, 6, 5)); 4504 assert_true (ai_move (ai, 3, 6)); 4505 assert_true (ai_move (ai, 7, 4)); 4506 assert_true (ai_move (ai, 5, 2)); 4507 assert_true (ai_move (ai, 3, 2)); 4508 assert_true (ai_move (ai, 3, 1)); 4509 assert_true (ai_move (ai, 2, 1)); 4510 assert_true (ai_move (ai, 4, 2)); 4511 assert_true (ai_move (ai, 6, 2)); 4512 assert_true (ai_move (ai, 5, 3)); 4513 assert_true (ai_move (ai, 2, 0)); 4514 assert_true (ai_move (ai, 6, 3)); 4515 assert_true (ai_move (ai, 7, 2)); 4516 assert_true (ai_move (ai, 7, 3)); 4517 assert_true (ai_move (ai, 4, 6)); 4518 assert_true (ai_move (ai, 3, 7)); 4519 assert_true (ai_move (ai, 4, 5)); 4520 assert_true (ai_move (ai, 1, 5)); 4521 assert_true (ai_move (ai, 2, 7)); 4522 assert_true (ai_move (ai, 1, 7)); 4523 assert_true (ai_move (ai, 2, 2)); 4524 assert_true (ai_move (ai, 4, 1)); 4525 assert_true (ai_move (ai, 5, 1)); 4526 assert_true (ai_move (ai, 2, 3)); 4527 assert_true (ai_move (ai, 1, 4)); 4528 assert_true (ai_move (ai, 1, 2)); 4529 assert_true (ai_move (ai, 0, 3)); 4530 assert_true (ai_move (ai, 0, 5)); 4531 assert_true (ai_move (ai, 2, 4)); 4532 assert_true (ai_move (ai, 2, 5)); 4533 assert_true (ai_move (ai, 0, 4)); 4534 assert_true (ai_move (ai, 0, 2)); 4535 assert_true (ai_move (ai, 1, 6)); 4536 assert_true (ai_move (ai, 4, 7)); 4537 assert_true (ai_move (ai, 1, 3)); 4538 assert_true (ai_move (ai, 5, 7)); 4539 assert_true (ai_move (ai, 5, 6)); 4540 assert_true (ai_move (ai, 5, 0)); 4541 assert_true (ai_move (ai, 3, 0)); 4542 assert_true (ai_move (ai, 0, 6)); 4543 assert_true (ai_move (ai, 4, 0)); 4544 assert_true (ai_move (ai, 1, 0)); 4545 assert_true (ai_move (ai, 1, 1)); 4546 assert_true (ai_move (ai, 6, 0)); 4547 assert_true (ai_move (ai, 6, 1)); 4548 assert_true (ai_move (ai, 6, 7)); 4549 assert_true (ai_move (ai, 6, 6)); 4550 assert_true (ai_move (ai, 0, 1)); 4551 assert_true (game.pass ()); 4552 assert_true (ai_move (ai, 0, 7)); 4553 assert_true (game.pass ()); 4554 assert_true (ai_move (ai, 0, 0)); 4555 assert_true (game.pass ()); 4556 assert_true (ai_move (ai, 7, 0)); 4557 assert_true (ai_move (ai, 7, 1)); 4558 assert_true (ai_move (ai, 7, 5)); 4559 assert_true (ai_move (ai, 7, 6)); 4560 assert_true (ai_move (ai, 7, 7)); 4561 assert_true (game.pass ()); 4562 assert_true (ai_move (ai, 5, 5)); 4563 } 4564 4565 private static inline void test_complete_reversi_game_42 () 4566 { 4567 /* 0 1 2 3 4 5 6 7 */ 4568 string [] board = {/* 0 */ " . . . . . . . .", 4569 /* 1 */ " . . . . . . . .", 4570 /* 2 */ " . . . . . . . .", 4571 /* 3 */ " . . . L D . . .", 4572 /* 4 */ " . . . L L D . .", 4573 /* 5 */ " . . . D . L . .", 4574 /* 6 */ " . . D . . . . .", 4575 /* 7 */ " . . . . . . . ."}; 4576 4577 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 4578 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 4579 4580 assert_true (ai_move (ai, 5, 6)); 4581 assert_true (ai_move (ai, 3, 6)); 4582 assert_true (ai_move (ai, 5, 3)); 4583 assert_true (ai_move (ai, 5, 2)); 4584 assert_true (ai_move (ai, 5, 1)); 4585 assert_true (ai_move (ai, 6, 5)); 4586 assert_true (ai_move (ai, 6, 4)); 4587 assert_true (ai_move (ai, 4, 7)); 4588 assert_true (ai_move (ai, 7, 5)); 4589 assert_true (ai_move (ai, 6, 3)); 4590 assert_true (ai_move (ai, 7, 4)); 4591 assert_true (ai_move (ai, 5, 0)); 4592 assert_true (ai_move (ai, 4, 1)); 4593 assert_true (ai_move (ai, 3, 2)); 4594 assert_true (ai_move (ai, 6, 2)); 4595 assert_true (ai_move (ai, 4, 5)); 4596 assert_true (ai_move (ai, 2, 7)); 4597 assert_true (ai_move (ai, 4, 6)); 4598 assert_true (ai_move (ai, 3, 7)); 4599 assert_true (ai_move (ai, 2, 5)); 4600 assert_true (ai_move (ai, 5, 7)); 4601 assert_true (ai_move (ai, 7, 2)); 4602 assert_true (ai_move (ai, 1, 5)); 4603 assert_true (ai_move (ai, 4, 2)); 4604 assert_true (ai_move (ai, 2, 1)); 4605 assert_true (ai_move (ai, 1, 4)); 4606 assert_true (ai_move (ai, 3, 1)); 4607 assert_true (ai_move (ai, 2, 2)); 4608 assert_true (ai_move (ai, 4, 0)); 4609 assert_true (ai_move (ai, 2, 0)); 4610 assert_true (ai_move (ai, 1, 2)); 4611 assert_true (ai_move (ai, 0, 2)); 4612 assert_true (ai_move (ai, 6, 0)); 4613 assert_true (ai_move (ai, 0, 5)); 4614 assert_true (ai_move (ai, 1, 3)); 4615 assert_true (ai_move (ai, 2, 3)); 4616 assert_true (ai_move (ai, 0, 3)); 4617 assert_true (ai_move (ai, 0, 4)); 4618 assert_true (ai_move (ai, 2, 4)); 4619 assert_true (ai_move (ai, 1, 6)); 4620 assert_true (ai_move (ai, 0, 1)); 4621 assert_true (ai_move (ai, 0, 0)); 4622 assert_true (ai_move (ai, 0, 7)); 4623 assert_true (ai_move (ai, 1, 1)); 4624 assert_true (ai_move (ai, 0, 6)); 4625 assert_true (ai_move (ai, 1, 7)); 4626 assert_true (ai_move (ai, 7, 3)); 4627 assert_true (ai_move (ai, 7, 6)); 4628 assert_true (ai_move (ai, 6, 1)); 4629 assert_true (ai_move (ai, 7, 0)); 4630 assert_true (ai_move (ai, 7, 1)); 4631 assert_true (ai_move (ai, 3, 0)); 4632 assert_true (ai_move (ai, 7, 7)); 4633 assert_true (ai_move (ai, 6, 7)); 4634 assert_true (ai_move (ai, 6, 6)); 4635 assert_true (game.pass ()); 4636 assert_true (ai_move (ai, 1, 0)); 4637 } 4638 4639 private static inline void test_complete_reversi_game_43 () 4640 { 4641 /* 0 1 2 3 4 5 6 7 */ 4642 string [] board = {/* 0 */ " . . . . . . . .", 4643 /* 1 */ " . . . . . . . .", 4644 /* 2 */ " . . . . . . . .", 4645 /* 3 */ " . . . L L L . .", 4646 /* 4 */ " . . . L D D . .", 4647 /* 5 */ " . . . D . . . .", 4648 /* 6 */ " . . D . . . . .", 4649 /* 7 */ " . . . . . . . ."}; 4650 4651 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 4652 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 4653 4654 assert_true (ai_move (ai, 5, 2)); 4655 assert_true (ai_move (ai, 3, 6)); 4656 assert_true (ai_move (ai, 3, 2)); 4657 assert_true (ai_move (ai, 3, 1)); 4658 assert_true (ai_move (ai, 2, 1)); 4659 assert_true (ai_move (ai, 5, 5)); 4660 assert_true (ai_move (ai, 5, 6)); 4661 assert_true (ai_move (ai, 6, 2)); 4662 assert_true (ai_move (ai, 6, 3)); 4663 assert_true (ai_move (ai, 4, 2)); 4664 assert_true (ai_move (ai, 7, 2)); 4665 assert_true (ai_move (ai, 4, 1)); 4666 assert_true (ai_move (ai, 2, 0)); 4667 assert_true (ai_move (ai, 5, 1)); 4668 assert_true (ai_move (ai, 4, 0)); 4669 assert_true (ai_move (ai, 3, 0)); 4670 assert_true (ai_move (ai, 4, 5)); 4671 assert_true (ai_move (ai, 6, 4)); 4672 assert_true (ai_move (ai, 6, 5)); 4673 assert_true (ai_move (ai, 4, 6)); 4674 assert_true (ai_move (ai, 4, 7)); 4675 assert_true (ai_move (ai, 1, 2)); 4676 assert_true (ai_move (ai, 2, 7)); 4677 assert_true (ai_move (ai, 3, 7)); 4678 assert_true (ai_move (ai, 2, 2)); 4679 assert_true (ai_move (ai, 1, 5)); 4680 assert_true (ai_move (ai, 0, 2)); 4681 assert_true (ai_move (ai, 7, 5)); 4682 assert_true (ai_move (ai, 2, 3)); 4683 assert_true (ai_move (ai, 7, 3)); 4684 assert_true (ai_move (ai, 2, 5)); 4685 assert_true (ai_move (ai, 0, 3)); 4686 assert_true (ai_move (ai, 0, 5)); 4687 assert_true (ai_move (ai, 0, 4)); 4688 assert_true (ai_move (ai, 1, 6)); 4689 assert_true (ai_move (ai, 2, 4)); 4690 assert_true (ai_move (ai, 1, 3)); 4691 assert_true (ai_move (ai, 1, 4)); 4692 assert_true (ai_move (ai, 0, 6)); 4693 assert_true (ai_move (ai, 5, 0)); 4694 assert_true (ai_move (ai, 6, 0)); 4695 assert_true (ai_move (ai, 5, 7)); 4696 assert_true (ai_move (ai, 6, 7)); 4697 assert_true (ai_move (ai, 1, 1)); 4698 assert_true (ai_move (ai, 6, 1)); 4699 assert_true (ai_move (ai, 6, 6)); 4700 assert_true (ai_move (ai, 7, 4)); 4701 assert_true (ai_move (ai, 0, 7)); 4702 assert_true (ai_move (ai, 7, 6)); 4703 assert_true (ai_move (ai, 7, 7)); 4704 assert_true (ai_move (ai, 1, 7)); 4705 assert_true (ai_move (ai, 0, 1)); 4706 assert_true (ai_move (ai, 1, 0)); 4707 assert_true (ai_move (ai, 0, 0)); 4708 assert_true (game.pass ()); 4709 assert_true (ai_move (ai, 7, 0)); 4710 assert_true (ai_move (ai, 7, 1)); 4711 } 4712 4713 private static inline void test_complete_reversi_game_44 () 4714 { 4715 /* 0 1 2 3 4 5 6 7 */ 4716 string [] board = {/* 0 */ " . . . . . . . .", 4717 /* 1 */ " . . . . . . . .", 4718 /* 2 */ " . . . . . L . .", 4719 /* 3 */ " . . . L L . . .", 4720 /* 4 */ " . . . L D D . .", 4721 /* 5 */ " . . . D . . . .", 4722 /* 6 */ " . . D . . . . .", 4723 /* 7 */ " . . . . . . . ."}; 4724 4725 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 4726 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 4727 4728 assert_true (ai_move (ai, 2, 2)); 4729 assert_true (ai_move (ai, 3, 6)); 4730 assert_true (ai_move (ai, 3, 2)); 4731 assert_true (ai_move (ai, 5, 3)); 4732 assert_true (ai_move (ai, 5, 1)); 4733 assert_true (ai_move (ai, 6, 4)); 4734 assert_true (ai_move (ai, 6, 5)); 4735 assert_true (ai_move (ai, 6, 2)); 4736 assert_true (ai_move (ai, 6, 3)); 4737 assert_true (ai_move (ai, 4, 0)); 4738 assert_true (ai_move (ai, 5, 0)); 4739 assert_true (ai_move (ai, 6, 0)); 4740 assert_true (ai_move (ai, 5, 5)); 4741 assert_true (ai_move (ai, 4, 2)); 4742 assert_true (ai_move (ai, 3, 1)); 4743 assert_true (ai_move (ai, 5, 6)); 4744 assert_true (ai_move (ai, 7, 2)); 4745 assert_true (ai_move (ai, 2, 1)); 4746 assert_true (ai_move (ai, 4, 5)); 4747 assert_true (ai_move (ai, 1, 2)); 4748 assert_true (ai_move (ai, 1, 3)); 4749 assert_true (ai_move (ai, 3, 0)); 4750 assert_true (ai_move (ai, 2, 5)); 4751 assert_true (ai_move (ai, 7, 4)); 4752 assert_true (ai_move (ai, 7, 5)); 4753 assert_true (ai_move (ai, 7, 3)); 4754 assert_true (ai_move (ai, 0, 2)); 4755 assert_true (ai_move (ai, 4, 1)); 4756 assert_true (ai_move (ai, 5, 7)); 4757 assert_true (ai_move (ai, 4, 6)); 4758 assert_true (ai_move (ai, 6, 6)); 4759 assert_true (ai_move (ai, 1, 7)); 4760 assert_true (ai_move (ai, 2, 0)); 4761 assert_true (ai_move (ai, 1, 0)); 4762 assert_true (ai_move (ai, 4, 7)); 4763 assert_true (ai_move (ai, 2, 3)); 4764 assert_true (ai_move (ai, 2, 4)); 4765 assert_true (ai_move (ai, 1, 4)); 4766 assert_true (ai_move (ai, 2, 7)); 4767 assert_true (ai_move (ai, 1, 6)); 4768 assert_true (ai_move (ai, 1, 5)); 4769 assert_true (ai_move (ai, 0, 5)); 4770 assert_true (ai_move (ai, 0, 3)); 4771 assert_true (ai_move (ai, 0, 4)); 4772 assert_true (ai_move (ai, 1, 1)); 4773 assert_true (ai_move (ai, 3, 7)); 4774 assert_true (ai_move (ai, 0, 7)); 4775 assert_true (ai_move (ai, 0, 6)); 4776 assert_true (ai_move (ai, 6, 1)); 4777 assert_true (ai_move (ai, 7, 0)); 4778 assert_true (ai_move (ai, 7, 1)); 4779 assert_true (ai_move (ai, 0, 0)); 4780 assert_true (ai_move (ai, 0, 1)); 4781 assert_true (ai_move (ai, 7, 7)); 4782 assert_true (ai_move (ai, 6, 7)); 4783 assert_true (ai_move (ai, 7, 6)); 4784 } 4785 4786 private static inline void test_complete_reversi_game_45 () 4787 { 4788 /* 0 1 2 3 4 5 6 7 */ 4789 string [] board = {/* 0 */ " . . . . . . . .", 4790 /* 1 */ " . . . . . . . .", 4791 /* 2 */ " . . . . . . . .", 4792 /* 3 */ " . . . L D . . .", 4793 /* 4 */ " . . . L D D . .", 4794 /* 5 */ " . . . L . . . .", 4795 /* 6 */ " . . D L . . . .", 4796 /* 7 */ " . . . . . . . ."}; 4797 4798 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 4799 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 4800 4801 assert_true (ai_move (ai, 2, 2)); 4802 assert_true (ai_move (ai, 5, 2)); 4803 assert_true (ai_move (ai, 3, 2)); 4804 assert_true (ai_move (ai, 5, 3)); 4805 assert_true (ai_move (ai, 5, 1)); 4806 assert_true (ai_move (ai, 6, 4)); 4807 assert_true (ai_move (ai, 6, 5)); 4808 assert_true (ai_move (ai, 6, 2)); 4809 assert_true (ai_move (ai, 6, 3)); 4810 assert_true (ai_move (ai, 4, 0)); 4811 assert_true (ai_move (ai, 5, 0)); 4812 assert_true (ai_move (ai, 6, 0)); 4813 assert_true (ai_move (ai, 5, 5)); 4814 assert_true (ai_move (ai, 4, 2)); 4815 assert_true (ai_move (ai, 3, 1)); 4816 assert_true (ai_move (ai, 5, 6)); 4817 assert_true (ai_move (ai, 7, 2)); 4818 assert_true (ai_move (ai, 2, 1)); 4819 assert_true (ai_move (ai, 4, 5)); 4820 assert_true (ai_move (ai, 1, 2)); 4821 assert_true (ai_move (ai, 1, 3)); 4822 assert_true (ai_move (ai, 3, 0)); 4823 assert_true (ai_move (ai, 2, 5)); 4824 assert_true (ai_move (ai, 7, 4)); 4825 assert_true (ai_move (ai, 7, 5)); 4826 assert_true (ai_move (ai, 7, 3)); 4827 assert_true (ai_move (ai, 0, 2)); 4828 assert_true (ai_move (ai, 4, 1)); 4829 assert_true (ai_move (ai, 5, 7)); 4830 assert_true (ai_move (ai, 4, 6)); 4831 assert_true (ai_move (ai, 6, 6)); 4832 assert_true (ai_move (ai, 1, 7)); 4833 assert_true (ai_move (ai, 2, 0)); 4834 assert_true (ai_move (ai, 1, 0)); 4835 assert_true (ai_move (ai, 4, 7)); 4836 assert_true (ai_move (ai, 2, 3)); 4837 assert_true (ai_move (ai, 2, 4)); 4838 assert_true (ai_move (ai, 1, 4)); 4839 assert_true (ai_move (ai, 2, 7)); 4840 assert_true (ai_move (ai, 1, 6)); 4841 assert_true (ai_move (ai, 1, 5)); 4842 assert_true (ai_move (ai, 0, 5)); 4843 assert_true (ai_move (ai, 0, 3)); 4844 assert_true (ai_move (ai, 0, 4)); 4845 assert_true (ai_move (ai, 1, 1)); 4846 assert_true (ai_move (ai, 3, 7)); 4847 assert_true (ai_move (ai, 0, 7)); 4848 assert_true (ai_move (ai, 0, 6)); 4849 assert_true (ai_move (ai, 6, 1)); 4850 assert_true (ai_move (ai, 7, 0)); 4851 assert_true (ai_move (ai, 7, 1)); 4852 assert_true (ai_move (ai, 0, 0)); 4853 assert_true (ai_move (ai, 0, 1)); 4854 assert_true (ai_move (ai, 7, 7)); 4855 assert_true (ai_move (ai, 6, 7)); 4856 assert_true (ai_move (ai, 7, 6)); 4857 } 4858 4859 private static inline void test_complete_reversi_game_46 () 4860 { 4861 /* 0 1 2 3 4 5 6 7 */ 4862 string [] board = {/* 0 */ " . . . . . . . .", 4863 /* 1 */ " . . . . . . . .", 4864 /* 2 */ " . . . . . . . .", 4865 /* 3 */ " . . . L D . . .", 4866 /* 4 */ " . . . D L D . .", 4867 /* 5 */ " . . D L . L . .", 4868 /* 6 */ " . . . . . . . .", 4869 /* 7 */ " . . . . . . . ."}; 4870 4871 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 4872 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 4873 4874 assert_true (ai_move (ai, 5, 6)); 4875 assert_true (ai_move (ai, 1, 5)); 4876 assert_true (ai_move (ai, 3, 2)); 4877 assert_true (ai_move (ai, 2, 4)); 4878 assert_true (ai_move (ai, 4, 5)); 4879 assert_true (ai_move (ai, 6, 5)); 4880 assert_true (ai_move (ai, 4, 6)); 4881 assert_true (ai_move (ai, 3, 7)); 4882 assert_true (ai_move (ai, 7, 5)); 4883 assert_true (ai_move (ai, 6, 4)); 4884 assert_true (ai_move (ai, 5, 3)); 4885 assert_true (ai_move (ai, 7, 3)); 4886 assert_true (ai_move (ai, 4, 7)); 4887 assert_true (ai_move (ai, 6, 2)); 4888 assert_true (ai_move (ai, 2, 7)); 4889 assert_true (ai_move (ai, 5, 2)); 4890 assert_true (ai_move (ai, 5, 1)); 4891 assert_true (ai_move (ai, 5, 0)); 4892 assert_true (ai_move (ai, 1, 3)); 4893 assert_true (ai_move (ai, 1, 4)); 4894 assert_true (ai_move (ai, 0, 5)); 4895 assert_true (ai_move (ai, 3, 6)); 4896 assert_true (ai_move (ai, 2, 6)); 4897 assert_true (ai_move (ai, 2, 1)); 4898 assert_true (ai_move (ai, 2, 3)); 4899 assert_true (ai_move (ai, 0, 2)); 4900 assert_true (ai_move (ai, 3, 1)); 4901 assert_true (ai_move (ai, 0, 4)); 4902 assert_true (ai_move (ai, 7, 4)); 4903 assert_true (ai_move (ai, 4, 2)); 4904 assert_true (ai_move (ai, 6, 3)); 4905 assert_true (ai_move (ai, 7, 6)); 4906 assert_true (ai_move (ai, 4, 1)); 4907 assert_true (ai_move (ai, 7, 2)); 4908 assert_true (ai_move (ai, 0, 3)); 4909 assert_true (ai_move (ai, 0, 6)); 4910 assert_true (ai_move (ai, 1, 6)); 4911 assert_true (ai_move (ai, 2, 0)); 4912 assert_true (ai_move (ai, 3, 0)); 4913 assert_true (ai_move (ai, 4, 0)); 4914 assert_true (ai_move (ai, 6, 1)); 4915 assert_true (ai_move (ai, 5, 7)); 4916 assert_true (ai_move (ai, 6, 7)); 4917 assert_true (ai_move (ai, 2, 2)); 4918 assert_true (ai_move (ai, 1, 2)); 4919 assert_true (ai_move (ai, 1, 1)); 4920 assert_true (ai_move (ai, 7, 1)); 4921 assert_true (ai_move (ai, 7, 0)); 4922 assert_true (ai_move (ai, 0, 0)); 4923 assert_true (ai_move (ai, 6, 0)); 4924 assert_true (ai_move (ai, 1, 0)); 4925 assert_true (ai_move (ai, 0, 7)); 4926 assert_true (ai_move (ai, 6, 6)); 4927 assert_true (ai_move (ai, 1, 7)); 4928 assert_true (game.pass ()); 4929 assert_true (ai_move (ai, 7, 7)); 4930 assert_true (game.pass ()); 4931 assert_true (ai_move (ai, 0, 1)); 4932 } 4933 4934 private static inline void test_complete_reversi_game_47 () 4935 { 4936 /* 0 1 2 3 4 5 6 7 */ 4937 string [] board = {/* 0 */ " . . . . . . . .", 4938 /* 1 */ " . . . . . . . .", 4939 /* 2 */ " . . . . . . . .", 4940 /* 3 */ " . . . L L L . .", 4941 /* 4 */ " . . . D L D . .", 4942 /* 5 */ " . . D L . . . .", 4943 /* 6 */ " . . . . . . . .", 4944 /* 7 */ " . . . . . . . ."}; 4945 4946 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 4947 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 4948 4949 assert_true (ai_move (ai, 3, 6)); 4950 assert_true (ai_move (ai, 5, 5)); 4951 assert_true (ai_move (ai, 5, 2)); 4952 assert_true (ai_move (ai, 5, 1)); 4953 assert_true (ai_move (ai, 6, 5)); 4954 assert_true (ai_move (ai, 6, 4)); 4955 assert_true (ai_move (ai, 4, 5)); 4956 assert_true (ai_move (ai, 5, 6)); 4957 assert_true (ai_move (ai, 7, 4)); 4958 assert_true (ai_move (ai, 1, 5)); 4959 assert_true (ai_move (ai, 4, 6)); 4960 assert_true (ai_move (ai, 2, 3)); 4961 assert_true (ai_move (ai, 0, 5)); 4962 assert_true (ai_move (ai, 7, 5)); 4963 assert_true (ai_move (ai, 7, 6)); 4964 assert_true (ai_move (ai, 3, 7)); 4965 assert_true (ai_move (ai, 6, 2)); 4966 assert_true (ai_move (ai, 1, 4)); 4967 assert_true (ai_move (ai, 4, 2)); 4968 assert_true (ai_move (ai, 3, 1)); 4969 assert_true (ai_move (ai, 6, 3)); 4970 assert_true (ai_move (ai, 7, 2)); 4971 assert_true (ai_move (ai, 5, 7)); 4972 assert_true (ai_move (ai, 7, 3)); 4973 assert_true (ai_move (ai, 7, 1)); 4974 assert_true (ai_move (ai, 6, 1)); 4975 assert_true (ai_move (ai, 4, 7)); 4976 assert_true (ai_move (ai, 6, 7)); 4977 assert_true (ai_move (ai, 4, 0)); 4978 assert_true (ai_move (ai, 5, 0)); 4979 assert_true (ai_move (ai, 2, 7)); 4980 assert_true (ai_move (ai, 1, 7)); 4981 assert_true (ai_move (ai, 0, 3)); 4982 assert_true (ai_move (ai, 3, 0)); 4983 assert_true (ai_move (ai, 2, 6)); 4984 assert_true (ai_move (ai, 2, 4)); 4985 assert_true (ai_move (ai, 2, 2)); 4986 assert_true (ai_move (ai, 1, 3)); 4987 assert_true (ai_move (ai, 1, 2)); 4988 assert_true (ai_move (ai, 0, 2)); 4989 assert_true (ai_move (ai, 3, 2)); 4990 assert_true (ai_move (ai, 4, 1)); 4991 assert_true (ai_move (ai, 2, 0)); 4992 assert_true (ai_move (ai, 2, 1)); 4993 assert_true (ai_move (ai, 7, 0)); 4994 assert_true (ai_move (ai, 6, 0)); 4995 assert_true (ai_move (ai, 0, 1)); 4996 assert_true (ai_move (ai, 0, 4)); 4997 assert_true (ai_move (ai, 1, 1)); 4998 assert_true (ai_move (ai, 0, 0)); 4999 assert_true (ai_move (ai, 1, 0)); 5000 assert_true (ai_move (ai, 0, 6)); 5001 assert_true (ai_move (ai, 1, 6)); 5002 assert_true (ai_move (ai, 6, 6)); 5003 assert_true (ai_move (ai, 7, 7)); 5004 assert_true (game.pass ()); 5005 assert_true (ai_move (ai, 0, 7)); 5006 } 5007 5008 private static inline void test_complete_reversi_game_48 () 5009 { 5010 /* 0 1 2 3 4 5 6 7 */ 5011 string [] board = {/* 0 */ " . . . . . . . .", 5012 /* 1 */ " . . . . . . . .", 5013 /* 2 */ " . . . . . . . .", 5014 /* 3 */ " . . . L D . . .", 5015 /* 4 */ " . . . D D D . .", 5016 /* 5 */ " . L L L . . . .", 5017 /* 6 */ " . . . . . . . .", 5018 /* 7 */ " . . . . . . . ."}; 5019 5020 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 5021 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 5022 5023 assert_true (ai_move (ai, 2, 2)); 5024 assert_true (ai_move (ai, 5, 3)); 5025 assert_true (ai_move (ai, 5, 2)); 5026 assert_true (ai_move (ai, 6, 2)); 5027 assert_true (ai_move (ai, 6, 3)); 5028 assert_true (ai_move (ai, 4, 2)); 5029 assert_true (ai_move (ai, 4, 1)); 5030 assert_true (ai_move (ai, 6, 5)); 5031 assert_true (ai_move (ai, 5, 1)); 5032 assert_true (ai_move (ai, 7, 2)); 5033 assert_true (ai_move (ai, 5, 5)); 5034 assert_true (ai_move (ai, 3, 0)); 5035 assert_true (ai_move (ai, 3, 2)); 5036 assert_true (ai_move (ai, 5, 6)); 5037 assert_true (ai_move (ai, 6, 4)); 5038 assert_true (ai_move (ai, 1, 2)); 5039 assert_true (ai_move (ai, 4, 6)); 5040 assert_true (ai_move (ai, 7, 5)); 5041 assert_true (ai_move (ai, 2, 4)); 5042 assert_true (ai_move (ai, 5, 0)); 5043 assert_true (ai_move (ai, 2, 6)); 5044 assert_true (ai_move (ai, 4, 5)); 5045 assert_true (ai_move (ai, 3, 6)); 5046 assert_true (ai_move (ai, 2, 7)); 5047 assert_true (ai_move (ai, 0, 5)); 5048 assert_true (ai_move (ai, 3, 7)); 5049 assert_true (ai_move (ai, 6, 1)); 5050 assert_true (ai_move (ai, 1, 4)); 5051 assert_true (ai_move (ai, 1, 6)); 5052 assert_true (ai_move (ai, 2, 3)); 5053 assert_true (ai_move (ai, 5, 7)); 5054 assert_true (ai_move (ai, 0, 7)); 5055 assert_true (ai_move (ai, 2, 1)); 5056 assert_true (ai_move (ai, 0, 6)); 5057 assert_true (ai_move (ai, 1, 3)); 5058 assert_true (ai_move (ai, 0, 4)); 5059 assert_true (ai_move (ai, 7, 1)); 5060 assert_true (ai_move (ai, 7, 3)); 5061 assert_true (ai_move (ai, 3, 1)); 5062 assert_true (ai_move (ai, 2, 0)); 5063 assert_true (ai_move (ai, 0, 2)); 5064 assert_true (ai_move (ai, 4, 0)); 5065 assert_true (ai_move (ai, 6, 0)); 5066 assert_true (ai_move (ai, 7, 0)); 5067 assert_true (ai_move (ai, 1, 7)); 5068 assert_true (ai_move (ai, 4, 7)); 5069 assert_true (ai_move (ai, 7, 4)); 5070 assert_true (ai_move (ai, 0, 3)); 5071 assert_true (ai_move (ai, 1, 0)); 5072 assert_true (ai_move (ai, 0, 1)); 5073 assert_true (ai_move (ai, 1, 1)); 5074 assert_true (ai_move (ai, 0, 0)); 5075 assert_true (ai_move (ai, 6, 7)); 5076 assert_true (ai_move (ai, 6, 6)); 5077 assert_true (ai_move (ai, 7, 6)); 5078 assert_true (ai_move (ai, 7, 7)); 5079 } 5080 5081 private static inline void test_complete_reversi_game_49 () 5082 { 5083 /* 0 1 2 3 4 5 6 7 */ 5084 string [] board = {/* 0 */ " . . . . . . . .", 5085 /* 1 */ " . . . . . . . .", 5086 /* 2 */ " . . . . . . . .", 5087 /* 3 */ " . . . L D . . .", 5088 /* 4 */ " . . D D L D . .", 5089 /* 5 */ " . . . L . L . .", 5090 /* 6 */ " . . . . . . . .", 5091 /* 7 */ " . . . . . . . ."}; 5092 5093 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 5094 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 5095 5096 assert_true (ai_move (ai, 5, 6)); 5097 assert_true (ai_move (ai, 1, 5)); 5098 assert_true (ai_move (ai, 1, 4)); 5099 assert_true (ai_move (ai, 6, 4)); 5100 assert_true (ai_move (ai, 5, 3)); 5101 assert_true (ai_move (ai, 4, 6)); 5102 assert_true (ai_move (ai, 4, 5)); 5103 assert_true (ai_move (ai, 5, 2)); 5104 assert_true (ai_move (ai, 2, 5)); 5105 assert_true (ai_move (ai, 5, 7)); 5106 assert_true (ai_move (ai, 6, 2)); 5107 assert_true (ai_move (ai, 7, 2)); 5108 assert_true (ai_move (ai, 5, 1)); 5109 assert_true (ai_move (ai, 4, 0)); 5110 assert_true (ai_move (ai, 6, 3)); 5111 assert_true (ai_move (ai, 2, 3)); 5112 assert_true (ai_move (ai, 3, 6)); 5113 assert_true (ai_move (ai, 0, 5)); 5114 assert_true (ai_move (ai, 0, 3)); 5115 assert_true (ai_move (ai, 0, 4)); 5116 assert_true (ai_move (ai, 5, 0)); 5117 assert_true (ai_move (ai, 0, 2)); 5118 assert_true (ai_move (ai, 3, 0)); 5119 assert_true (ai_move (ai, 4, 7)); 5120 assert_true (ai_move (ai, 7, 4)); 5121 assert_true (ai_move (ai, 2, 6)); 5122 assert_true (ai_move (ai, 4, 2)); 5123 assert_true (ai_move (ai, 3, 2)); 5124 assert_true (ai_move (ai, 4, 1)); 5125 assert_true (ai_move (ai, 7, 3)); 5126 assert_true (ai_move (ai, 7, 5)); 5127 assert_true (ai_move (ai, 7, 6)); 5128 assert_true (ai_move (ai, 6, 5)); 5129 assert_true (ai_move (ai, 3, 1)); 5130 assert_true (ai_move (ai, 1, 6)); 5131 assert_true (ai_move (ai, 6, 6)); 5132 assert_true (ai_move (ai, 3, 7)); 5133 assert_true (ai_move (ai, 2, 7)); 5134 assert_true (ai_move (ai, 0, 7)); 5135 assert_true (ai_move (ai, 0, 6)); 5136 assert_true (ai_move (ai, 0, 1)); 5137 assert_true (ai_move (ai, 6, 1)); 5138 assert_true (ai_move (ai, 1, 3)); 5139 assert_true (ai_move (ai, 1, 2)); 5140 assert_true (ai_move (ai, 2, 1)); 5141 assert_true (ai_move (ai, 1, 0)); 5142 assert_true (ai_move (ai, 7, 0)); 5143 assert_true (ai_move (ai, 1, 7)); 5144 assert_true (ai_move (ai, 7, 1)); 5145 assert_true (ai_move (ai, 6, 0)); 5146 assert_true (ai_move (ai, 2, 0)); 5147 assert_true (ai_move (ai, 1, 1)); 5148 assert_true (ai_move (ai, 6, 7)); 5149 assert_true (game.pass ()); 5150 assert_true (ai_move (ai, 7, 7)); 5151 assert_true (game.pass ()); 5152 assert_true (ai_move (ai, 2, 2)); 5153 assert_true (game.pass ()); 5154 assert_true (ai_move (ai, 0, 0)); 5155 } 5156 5157 private static inline void test_complete_reversi_game_50 () 5158 { 5159 /* 0 1 2 3 4 5 6 7 */ 5160 string [] board = {/* 0 */ " . . . . . . . .", 5161 /* 1 */ " . . . . . . . .", 5162 /* 2 */ " . . . . . . . .", 5163 /* 3 */ " . . . L L L . .", 5164 /* 4 */ " . . D D L D . .", 5165 /* 5 */ " . . . L . . . .", 5166 /* 6 */ " . . . . . . . .", 5167 /* 7 */ " . . . . . . . ."}; 5168 5169 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 5170 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 5171 5172 assert_true (ai_move (ai, 3, 6)); 5173 assert_true (ai_move (ai, 5, 5)); 5174 assert_true (ai_move (ai, 3, 2)); 5175 assert_true (ai_move (ai, 2, 1)); 5176 assert_true (ai_move (ai, 3, 1)); 5177 assert_true (ai_move (ai, 2, 6)); 5178 assert_true (ai_move (ai, 4, 6)); 5179 assert_true (ai_move (ai, 3, 7)); 5180 assert_true (ai_move (ai, 5, 7)); 5181 assert_true (ai_move (ai, 5, 6)); 5182 assert_true (ai_move (ai, 1, 7)); 5183 assert_true (ai_move (ai, 1, 5)); 5184 assert_true (ai_move (ai, 6, 5)); 5185 assert_true (ai_move (ai, 6, 4)); 5186 assert_true (ai_move (ai, 5, 2)); 5187 assert_true (ai_move (ai, 6, 2)); 5188 assert_true (ai_move (ai, 7, 2)); 5189 assert_true (ai_move (ai, 1, 3)); 5190 assert_true (ai_move (ai, 1, 4)); 5191 assert_true (ai_move (ai, 5, 1)); 5192 assert_true (ai_move (ai, 4, 2)); 5193 assert_true (ai_move (ai, 7, 3)); 5194 assert_true (ai_move (ai, 7, 5)); 5195 assert_true (ai_move (ai, 7, 4)); 5196 assert_true (ai_move (ai, 5, 0)); 5197 assert_true (ai_move (ai, 4, 0)); 5198 assert_true (ai_move (ai, 3, 0)); 5199 assert_true (ai_move (ai, 4, 1)); 5200 assert_true (ai_move (ai, 6, 3)); 5201 assert_true (ai_move (ai, 2, 5)); 5202 assert_true (ai_move (ai, 2, 0)); 5203 assert_true (ai_move (ai, 2, 2)); 5204 assert_true (ai_move (ai, 6, 0)); 5205 assert_true (ai_move (ai, 2, 3)); 5206 assert_true (ai_move (ai, 1, 0)); 5207 assert_true (ai_move (ai, 0, 4)); 5208 assert_true (ai_move (ai, 0, 5)); 5209 assert_true (ai_move (ai, 0, 3)); 5210 assert_true (ai_move (ai, 4, 5)); 5211 assert_true (ai_move (ai, 1, 6)); 5212 assert_true (ai_move (ai, 0, 2)); 5213 assert_true (ai_move (ai, 4, 7)); 5214 assert_true (ai_move (ai, 1, 2)); 5215 assert_true (ai_move (ai, 6, 7)); 5216 assert_true (ai_move (ai, 0, 6)); 5217 assert_true (ai_move (ai, 6, 1)); 5218 assert_true (ai_move (ai, 7, 1)); 5219 assert_true (ai_move (ai, 7, 0)); 5220 assert_true (ai_move (ai, 7, 6)); 5221 assert_true (ai_move (ai, 0, 0)); 5222 assert_true (ai_move (ai, 2, 7)); 5223 assert_true (ai_move (ai, 0, 7)); 5224 assert_true (ai_move (ai, 6, 6)); 5225 assert_true (ai_move (ai, 0, 1)); 5226 assert_true (ai_move (ai, 1, 1)); 5227 assert_true (ai_move (ai, 7, 7)); 5228 } 5229 5230 private static inline void test_complete_reversi_game_51 () 5231 { 5232 /* 0 1 2 3 4 5 6 7 */ 5233 string [] board = {/* 0 */ " . . . . . . . .", 5234 /* 1 */ " . . . . . . . .", 5235 /* 2 */ " . . . . . . . .", 5236 /* 3 */ " . . . L D . . .", 5237 /* 4 */ " . . L D D D . .", 5238 /* 5 */ " . L . L . . . .", 5239 /* 6 */ " . . . . . . . .", 5240 /* 7 */ " . . . . . . . ."}; 5241 5242 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 5243 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 5244 5245 assert_true (ai_move (ai, 1, 4)); 5246 assert_true (ai_move (ai, 1, 3)); 5247 assert_true (ai_move (ai, 3, 6)); 5248 assert_true (ai_move (ai, 4, 6)); 5249 assert_true (ai_move (ai, 2, 6)); 5250 assert_true (ai_move (ai, 5, 5)); 5251 assert_true (ai_move (ai, 5, 6)); 5252 assert_true (ai_move (ai, 4, 2)); 5253 assert_true (ai_move (ai, 0, 2)); 5254 assert_true (ai_move (ai, 6, 4)); 5255 assert_true (ai_move (ai, 7, 3)); 5256 assert_true (ai_move (ai, 5, 7)); 5257 assert_true (ai_move (ai, 3, 2)); 5258 assert_true (ai_move (ai, 2, 1)); 5259 assert_true (ai_move (ai, 3, 1)); 5260 assert_true (ai_move (ai, 2, 0)); 5261 assert_true (ai_move (ai, 5, 1)); 5262 assert_true (ai_move (ai, 5, 3)); 5263 assert_true (ai_move (ai, 5, 2)); 5264 assert_true (ai_move (ai, 4, 1)); 5265 assert_true (ai_move (ai, 5, 0)); 5266 assert_true (ai_move (ai, 6, 2)); 5267 assert_true (ai_move (ai, 7, 2)); 5268 assert_true (ai_move (ai, 4, 0)); 5269 assert_true (ai_move (ai, 6, 3)); 5270 assert_true (ai_move (ai, 7, 5)); 5271 assert_true (ai_move (ai, 6, 5)); 5272 assert_true (ai_move (ai, 7, 4)); 5273 assert_true (ai_move (ai, 6, 1)); 5274 assert_true (ai_move (ai, 2, 3)); 5275 assert_true (ai_move (ai, 7, 6)); 5276 assert_true (ai_move (ai, 0, 3)); 5277 assert_true (ai_move (ai, 2, 2)); 5278 assert_true (ai_move (ai, 2, 5)); 5279 assert_true (ai_move (ai, 1, 2)); 5280 assert_true (ai_move (ai, 4, 5)); 5281 assert_true (ai_move (ai, 0, 5)); 5282 assert_true (ai_move (ai, 0, 4)); 5283 assert_true (ai_move (ai, 4, 7)); 5284 assert_true (ai_move (ai, 2, 7)); 5285 assert_true (ai_move (ai, 3, 7)); 5286 assert_true (ai_move (ai, 7, 0)); 5287 assert_true (ai_move (ai, 6, 0)); 5288 assert_true (ai_move (ai, 7, 1)); 5289 assert_true (ai_move (ai, 3, 0)); 5290 assert_true (ai_move (ai, 7, 7)); 5291 assert_true (ai_move (ai, 6, 7)); 5292 assert_true (ai_move (ai, 6, 6)); 5293 assert_true (ai_move (ai, 1, 6)); 5294 assert_true (ai_move (ai, 0, 7)); 5295 assert_true (ai_move (ai, 1, 7)); 5296 assert_true (ai_move (ai, 1, 1)); 5297 assert_true (ai_move (ai, 0, 1)); 5298 assert_true (ai_move (ai, 0, 6)); 5299 assert_true (ai_move (ai, 1, 0)); 5300 assert_true (ai_move (ai, 0, 0)); 5301 } 5302 5303 private static inline void test_complete_reversi_game_52 () 5304 { 5305 /* 0 1 2 3 4 5 6 7 */ 5306 string [] board = {/* 0 */ " . . . . . . . .", 5307 /* 1 */ " . . . . . . . .", 5308 /* 2 */ " . . . . . . . .", 5309 /* 3 */ " . L . L D . . .", 5310 /* 4 */ " . . L D D D . .", 5311 /* 5 */ " . . . L . . . .", 5312 /* 6 */ " . . . . . . . .", 5313 /* 7 */ " . . . . . . . ."}; 5314 5315 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 5316 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 5317 5318 assert_true (ai_move (ai, 1, 4)); 5319 assert_true (ai_move (ai, 1, 5)); 5320 assert_true (ai_move (ai, 3, 6)); 5321 assert_true (ai_move (ai, 4, 6)); 5322 assert_true (ai_move (ai, 2, 6)); 5323 assert_true (ai_move (ai, 5, 5)); 5324 assert_true (ai_move (ai, 5, 6)); 5325 assert_true (ai_move (ai, 4, 2)); 5326 assert_true (ai_move (ai, 0, 2)); 5327 assert_true (ai_move (ai, 6, 4)); 5328 assert_true (ai_move (ai, 7, 3)); 5329 assert_true (ai_move (ai, 5, 7)); 5330 assert_true (ai_move (ai, 3, 2)); 5331 assert_true (ai_move (ai, 2, 1)); 5332 assert_true (ai_move (ai, 3, 1)); 5333 assert_true (ai_move (ai, 2, 0)); 5334 assert_true (ai_move (ai, 5, 1)); 5335 assert_true (ai_move (ai, 5, 3)); 5336 assert_true (ai_move (ai, 5, 2)); 5337 assert_true (ai_move (ai, 4, 1)); 5338 assert_true (ai_move (ai, 5, 0)); 5339 assert_true (ai_move (ai, 6, 2)); 5340 assert_true (ai_move (ai, 7, 2)); 5341 assert_true (ai_move (ai, 4, 0)); 5342 assert_true (ai_move (ai, 6, 3)); 5343 assert_true (ai_move (ai, 7, 5)); 5344 assert_true (ai_move (ai, 6, 5)); 5345 assert_true (ai_move (ai, 7, 4)); 5346 assert_true (ai_move (ai, 6, 1)); 5347 assert_true (ai_move (ai, 2, 3)); 5348 assert_true (ai_move (ai, 7, 6)); 5349 assert_true (ai_move (ai, 0, 3)); 5350 assert_true (ai_move (ai, 2, 2)); 5351 assert_true (ai_move (ai, 2, 5)); 5352 assert_true (ai_move (ai, 1, 2)); 5353 assert_true (ai_move (ai, 4, 5)); 5354 assert_true (ai_move (ai, 0, 5)); 5355 assert_true (ai_move (ai, 0, 4)); 5356 assert_true (ai_move (ai, 4, 7)); 5357 assert_true (ai_move (ai, 2, 7)); 5358 assert_true (ai_move (ai, 3, 7)); 5359 assert_true (ai_move (ai, 7, 0)); 5360 assert_true (ai_move (ai, 6, 0)); 5361 assert_true (ai_move (ai, 7, 1)); 5362 assert_true (ai_move (ai, 3, 0)); 5363 assert_true (ai_move (ai, 7, 7)); 5364 assert_true (ai_move (ai, 6, 7)); 5365 assert_true (ai_move (ai, 6, 6)); 5366 assert_true (ai_move (ai, 1, 6)); 5367 assert_true (ai_move (ai, 0, 7)); 5368 assert_true (ai_move (ai, 1, 7)); 5369 assert_true (ai_move (ai, 1, 1)); 5370 assert_true (ai_move (ai, 0, 1)); 5371 assert_true (ai_move (ai, 0, 6)); 5372 assert_true (ai_move (ai, 1, 0)); 5373 assert_true (ai_move (ai, 0, 0)); 5374 } 5375 5376 private static inline void test_complete_reversi_game_53 () 5377 { 5378 /* 0 1 2 3 4 5 6 7 */ 5379 string [] board = {/* 0 */ " . . . . . . . .", 5380 /* 1 */ " . . . . . . . .", 5381 /* 2 */ " . . . . . . . .", 5382 /* 3 */ " . . D D D . . .", 5383 /* 4 */ " . . . L L L L .", 5384 /* 5 */ " . . . L . . . .", 5385 /* 6 */ " . . . . . . . .", 5386 /* 7 */ " . . . . . . . ."}; 5387 5388 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 5389 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 5390 5391 assert_true (ai_move (ai, 6, 5)); 5392 assert_true (ai_move (ai, 1, 2)); 5393 assert_true (ai_move (ai, 1, 3)); 5394 assert_true (ai_move (ai, 5, 2)); 5395 assert_true (ai_move (ai, 7, 4)); 5396 assert_true (ai_move (ai, 3, 2)); 5397 assert_true (ai_move (ai, 4, 1)); 5398 assert_true (ai_move (ai, 2, 1)); 5399 assert_true (ai_move (ai, 6, 3)); 5400 assert_true (ai_move (ai, 1, 4)); 5401 assert_true (ai_move (ai, 0, 5)); 5402 assert_true (ai_move (ai, 3, 1)); 5403 assert_true (ai_move (ai, 0, 3)); 5404 assert_true (ai_move (ai, 5, 0)); 5405 assert_true (ai_move (ai, 1, 1)); 5406 assert_true (ai_move (ai, 7, 6)); 5407 assert_true (ai_move (ai, 5, 6)); 5408 assert_true (ai_move (ai, 7, 2)); 5409 assert_true (ai_move (ai, 3, 0)); 5410 assert_true (ai_move (ai, 5, 1)); 5411 assert_true (ai_move (ai, 6, 2)); 5412 assert_true (ai_move (ai, 4, 2)); 5413 assert_true (ai_move (ai, 4, 5)); 5414 assert_true (ai_move (ai, 4, 6)); 5415 assert_true (ai_move (ai, 3, 6)); 5416 assert_true (ai_move (ai, 1, 0)); 5417 assert_true (ai_move (ai, 5, 3)); 5418 assert_true (ai_move (ai, 5, 5)); 5419 assert_true (ai_move (ai, 6, 6)); 5420 assert_true (ai_move (ai, 5, 7)); 5421 assert_true (ai_move (ai, 4, 7)); 5422 assert_true (ai_move (ai, 2, 7)); 5423 assert_true (ai_move (ai, 6, 7)); 5424 assert_true (ai_move (ai, 7, 3)); 5425 assert_true (ai_move (ai, 7, 1)); 5426 assert_true (ai_move (ai, 3, 7)); 5427 assert_true (ai_move (ai, 2, 2)); 5428 assert_true (ai_move (ai, 0, 4)); 5429 assert_true (ai_move (ai, 1, 7)); 5430 assert_true (ai_move (ai, 0, 2)); 5431 assert_true (ai_move (ai, 0, 1)); 5432 assert_true (ai_move (ai, 2, 5)); 5433 assert_true (ai_move (ai, 1, 5)); 5434 assert_true (ai_move (ai, 7, 7)); 5435 assert_true (ai_move (ai, 7, 5)); 5436 assert_true (ai_move (ai, 7, 0)); 5437 assert_true (ai_move (ai, 2, 0)); 5438 assert_true (ai_move (ai, 4, 0)); 5439 assert_true (ai_move (ai, 6, 0)); 5440 assert_true (ai_move (ai, 0, 0)); 5441 assert_true (ai_move (ai, 2, 4)); 5442 assert_true (ai_move (ai, 0, 7)); 5443 assert_true (ai_move (ai, 2, 6)); 5444 assert_true (ai_move (ai, 0, 6)); 5445 assert_true (game.pass ()); 5446 assert_true (ai_move (ai, 1, 6)); 5447 assert_true (game.pass ()); 5448 assert_true (ai_move (ai, 6, 1)); 5449 } 5450 5451 private static inline void test_complete_reversi_game_54 () 5452 { 5453 /* 0 1 2 3 4 5 6 7 */ 5454 string [] board = {/* 0 */ " . . . . . . . .", 5455 /* 1 */ " . . . . . . . .", 5456 /* 2 */ " . . . . . . . .", 5457 /* 3 */ " . . D D D L . .", 5458 /* 4 */ " . . . L L D . .", 5459 /* 5 */ " . . . L . . . .", 5460 /* 6 */ " . . . . . . . .", 5461 /* 7 */ " . . . . . . . ."}; 5462 5463 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 5464 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 5465 5466 assert_true (ai_move (ai, 5, 2)); 5467 assert_true (ai_move (ai, 1, 2)); 5468 assert_true (ai_move (ai, 5, 5)); 5469 assert_true (ai_move (ai, 3, 2)); 5470 assert_true (ai_move (ai, 2, 6)); 5471 assert_true (ai_move (ai, 3, 6)); 5472 assert_true (ai_move (ai, 2, 1)); 5473 assert_true (ai_move (ai, 4, 1)); 5474 assert_true (ai_move (ai, 0, 3)); 5475 assert_true (ai_move (ai, 6, 5)); 5476 assert_true (ai_move (ai, 6, 4)); 5477 assert_true (ai_move (ai, 4, 5)); 5478 assert_true (ai_move (ai, 4, 6)); 5479 assert_true (ai_move (ai, 6, 2)); 5480 assert_true (ai_move (ai, 7, 2)); 5481 assert_true (ai_move (ai, 5, 1)); 5482 assert_true (ai_move (ai, 5, 0)); 5483 assert_true (ai_move (ai, 5, 7)); 5484 assert_true (ai_move (ai, 3, 7)); 5485 assert_true (ai_move (ai, 4, 7)); 5486 assert_true (ai_move (ai, 7, 5)); 5487 assert_true (ai_move (ai, 2, 7)); 5488 assert_true (ai_move (ai, 3, 0)); 5489 assert_true (ai_move (ai, 1, 7)); 5490 assert_true (ai_move (ai, 1, 4)); 5491 assert_true (ai_move (ai, 3, 1)); 5492 assert_true (ai_move (ai, 2, 2)); 5493 assert_true (ai_move (ai, 0, 2)); 5494 assert_true (ai_move (ai, 4, 2)); 5495 assert_true (ai_move (ai, 0, 4)); 5496 assert_true (ai_move (ai, 2, 0)); 5497 assert_true (ai_move (ai, 4, 0)); 5498 assert_true (ai_move (ai, 2, 4)); 5499 assert_true (ai_move (ai, 6, 3)); 5500 assert_true (ai_move (ai, 2, 5)); 5501 assert_true (ai_move (ai, 5, 6)); 5502 assert_true (ai_move (ai, 1, 3)); 5503 assert_true (ai_move (ai, 0, 5)); 5504 assert_true (ai_move (ai, 1, 5)); 5505 assert_true (ai_move (ai, 0, 6)); 5506 assert_true (ai_move (ai, 7, 3)); 5507 assert_true (ai_move (ai, 7, 4)); 5508 assert_true (ai_move (ai, 6, 1)); 5509 assert_true (ai_move (ai, 7, 0)); 5510 assert_true (ai_move (ai, 7, 1)); 5511 assert_true (ai_move (ai, 6, 0)); 5512 assert_true (ai_move (ai, 6, 6)); 5513 assert_true (ai_move (ai, 1, 6)); 5514 assert_true (ai_move (ai, 1, 1)); 5515 assert_true (ai_move (ai, 6, 7)); 5516 assert_true (ai_move (ai, 7, 7)); 5517 assert_true (ai_move (ai, 7, 6)); 5518 assert_true (ai_move (ai, 0, 7)); 5519 assert_true (ai_move (ai, 0, 0)); 5520 assert_true (ai_move (ai, 0, 1)); 5521 assert_true (ai_move (ai, 1, 0)); 5522 } 5523 5524 private static inline void test_complete_reversi_game_55 () 5525 { 5526 /* 0 1 2 3 4 5 6 7 */ 5527 string [] board = {/* 0 */ " . . . . . . . .", 5528 /* 1 */ " . . . . . . . .", 5529 /* 2 */ " . . . . . L . .", 5530 /* 3 */ " . . D D L . . .", 5531 /* 4 */ " . . . L D D . .", 5532 /* 5 */ " . . . L . . . .", 5533 /* 6 */ " . . . . . . . .", 5534 /* 7 */ " . . . . . . . ."}; 5535 5536 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 5537 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 5538 5539 assert_true (ai_move (ai, 2, 6)); 5540 assert_true (ai_move (ai, 3, 6)); 5541 assert_true (ai_move (ai, 4, 2)); 5542 assert_true (ai_move (ai, 1, 2)); 5543 assert_true (ai_move (ai, 6, 2)); 5544 assert_true (ai_move (ai, 3, 2)); 5545 assert_true (ai_move (ai, 2, 1)); 5546 assert_true (ai_move (ai, 4, 1)); 5547 assert_true (ai_move (ai, 0, 3)); 5548 assert_true (ai_move (ai, 6, 3)); 5549 assert_true (ai_move (ai, 7, 2)); 5550 assert_true (ai_move (ai, 5, 1)); 5551 assert_true (ai_move (ai, 3, 0)); 5552 assert_true (ai_move (ai, 5, 0)); 5553 assert_true (ai_move (ai, 4, 6)); 5554 assert_true (ai_move (ai, 7, 4)); 5555 assert_true (ai_move (ai, 2, 2)); 5556 assert_true (ai_move (ai, 2, 0)); 5557 assert_true (ai_move (ai, 1, 4)); 5558 assert_true (ai_move (ai, 4, 0)); 5559 assert_true (ai_move (ai, 2, 5)); 5560 assert_true (ai_move (ai, 3, 1)); 5561 assert_true (ai_move (ai, 4, 5)); 5562 assert_true (ai_move (ai, 5, 3)); 5563 assert_true (ai_move (ai, 6, 4)); 5564 assert_true (ai_move (ai, 6, 5)); 5565 assert_true (ai_move (ai, 6, 1)); 5566 assert_true (ai_move (ai, 2, 4)); 5567 assert_true (ai_move (ai, 1, 3)); 5568 assert_true (ai_move (ai, 0, 5)); 5569 assert_true (ai_move (ai, 1, 5)); 5570 assert_true (ai_move (ai, 3, 7)); 5571 assert_true (ai_move (ai, 6, 0)); 5572 assert_true (ai_move (ai, 5, 5)); 5573 assert_true (ai_move (ai, 1, 0)); 5574 assert_true (ai_move (ai, 0, 2)); 5575 assert_true (ai_move (ai, 0, 4)); 5576 assert_true (ai_move (ai, 7, 5)); 5577 assert_true (ai_move (ai, 5, 7)); 5578 assert_true (ai_move (ai, 5, 6)); 5579 assert_true (ai_move (ai, 2, 7)); 5580 assert_true (ai_move (ai, 7, 3)); 5581 assert_true (ai_move (ai, 7, 6)); 5582 assert_true (ai_move (ai, 1, 1)); 5583 assert_true (ai_move (ai, 4, 7)); 5584 assert_true (ai_move (ai, 6, 6)); 5585 assert_true (ai_move (ai, 6, 7)); 5586 assert_true (ai_move (ai, 7, 7)); 5587 assert_true (ai_move (ai, 0, 1)); 5588 assert_true (ai_move (ai, 7, 1)); 5589 assert_true (ai_move (ai, 0, 6)); 5590 assert_true (ai_move (ai, 1, 7)); 5591 assert_true (ai_move (ai, 1, 6)); 5592 assert_true (ai_move (ai, 0, 0)); 5593 assert_true (game.pass ()); 5594 assert_true (ai_move (ai, 7, 0)); 5595 assert_true (game.pass ()); 5596 assert_true (ai_move (ai, 0, 7)); 5597 } 5598 5599 private static inline void test_complete_reversi_game_56 () 5600 { 5601 /* 0 1 2 3 4 5 6 7 */ 5602 string [] board = {/* 0 */ " . . . . . . . .", 5603 /* 1 */ " . . . . . . . .", 5604 /* 2 */ " . . . L . . . .", 5605 /* 3 */ " . . D L D . . .", 5606 /* 4 */ " . . . L D D . .", 5607 /* 5 */ " . . . L . . . .", 5608 /* 6 */ " . . . . . . . .", 5609 /* 7 */ " . . . . . . . ."}; 5610 5611 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 5612 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 5613 5614 assert_true (ai_move (ai, 2, 1)); 5615 assert_true (ai_move (ai, 3, 1)); 5616 assert_true (ai_move (ai, 2, 6)); 5617 assert_true (ai_move (ai, 1, 4)); 5618 assert_true (ai_move (ai, 2, 5)); 5619 assert_true (ai_move (ai, 3, 6)); 5620 assert_true (ai_move (ai, 4, 6)); 5621 assert_true (ai_move (ai, 2, 7)); 5622 assert_true (ai_move (ai, 4, 1)); 5623 assert_true (ai_move (ai, 4, 7)); 5624 assert_true (ai_move (ai, 0, 5)); 5625 assert_true (ai_move (ai, 1, 3)); 5626 assert_true (ai_move (ai, 1, 2)); 5627 assert_true (ai_move (ai, 5, 7)); 5628 assert_true (ai_move (ai, 4, 5)); 5629 assert_true (ai_move (ai, 6, 3)); 5630 assert_true (ai_move (ai, 5, 6)); 5631 assert_true (ai_move (ai, 6, 5)); 5632 assert_true (ai_move (ai, 1, 5)); 5633 assert_true (ai_move (ai, 3, 0)); 5634 assert_true (ai_move (ai, 3, 7)); 5635 assert_true (ai_move (ai, 5, 5)); 5636 assert_true (ai_move (ai, 7, 5)); 5637 assert_true (ai_move (ai, 6, 4)); 5638 assert_true (ai_move (ai, 7, 3)); 5639 assert_true (ai_move (ai, 2, 4)); 5640 assert_true (ai_move (ai, 4, 2)); 5641 assert_true (ai_move (ai, 2, 2)); 5642 assert_true (ai_move (ai, 2, 0)); 5643 assert_true (ai_move (ai, 1, 0)); 5644 assert_true (ai_move (ai, 7, 2)); 5645 assert_true (ai_move (ai, 6, 6)); 5646 assert_true (ai_move (ai, 1, 6)); 5647 assert_true (ai_move (ai, 0, 3)); 5648 assert_true (ai_move (ai, 5, 3)); 5649 assert_true (ai_move (ai, 7, 4)); 5650 assert_true (ai_move (ai, 0, 2)); 5651 assert_true (ai_move (ai, 7, 6)); 5652 assert_true (ai_move (ai, 0, 4)); 5653 assert_true (ai_move (ai, 7, 1)); 5654 assert_true (ai_move (ai, 7, 7)); 5655 assert_true (ai_move (ai, 6, 7)); 5656 assert_true (ai_move (ai, 7, 0)); 5657 assert_true (ai_move (ai, 1, 1)); 5658 assert_true (ai_move (ai, 0, 0)); 5659 assert_true (ai_move (ai, 5, 0)); 5660 assert_true (ai_move (ai, 4, 0)); 5661 assert_true (ai_move (ai, 0, 7)); 5662 assert_true (ai_move (ai, 6, 0)); 5663 assert_true (ai_move (ai, 0, 1)); 5664 assert_true (ai_move (ai, 0, 6)); 5665 assert_true (ai_move (ai, 1, 7)); 5666 assert_true (game.pass ()); 5667 assert_true (ai_move (ai, 6, 2)); 5668 assert_true (ai_move (ai, 6, 1)); 5669 assert_true (ai_move (ai, 5, 1)); 5670 assert_true (ai_move (ai, 5, 2)); 5671 } 5672 5673 private static inline void test_complete_reversi_game_57 () 5674 { 5675 /* 0 1 2 3 4 5 6 7 */ 5676 string [] board = {/* 0 */ " . . . . . . . .", 5677 /* 1 */ " . . . . . . . .", 5678 /* 2 */ " . L . . . . . .", 5679 /* 3 */ " . . L D D . . .", 5680 /* 4 */ " . . . L D D . .", 5681 /* 5 */ " . . . L . . . .", 5682 /* 6 */ " . . . . . . . .", 5683 /* 7 */ " . . . . . . . ."}; 5684 5685 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 5686 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 5687 5688 assert_true (ai_move (ai, 1, 3)); 5689 assert_true (ai_move (ai, 5, 2)); 5690 assert_true (ai_move (ai, 2, 6)); 5691 assert_true (ai_move (ai, 3, 6)); 5692 assert_true (ai_move (ai, 3, 2)); 5693 assert_true (ai_move (ai, 1, 4)); 5694 assert_true (ai_move (ai, 0, 5)); 5695 assert_true (ai_move (ai, 1, 5)); 5696 assert_true (ai_move (ai, 0, 4)); 5697 assert_true (ai_move (ai, 4, 1)); 5698 assert_true (ai_move (ai, 3, 1)); 5699 assert_true (ai_move (ai, 2, 1)); 5700 assert_true (ai_move (ai, 3, 0)); 5701 assert_true (ai_move (ai, 6, 5)); 5702 assert_true (ai_move (ai, 5, 3)); 5703 assert_true (ai_move (ai, 6, 2)); 5704 assert_true (ai_move (ai, 2, 5)); 5705 assert_true (ai_move (ai, 2, 2)); 5706 assert_true (ai_move (ai, 4, 5)); 5707 assert_true (ai_move (ai, 5, 5)); 5708 assert_true (ai_move (ai, 6, 4)); 5709 assert_true (ai_move (ai, 4, 0)); 5710 assert_true (ai_move (ai, 5, 6)); 5711 assert_true (ai_move (ai, 2, 0)); 5712 assert_true (ai_move (ai, 6, 3)); 5713 assert_true (ai_move (ai, 5, 7)); 5714 assert_true (ai_move (ai, 7, 5)); 5715 assert_true (ai_move (ai, 7, 3)); 5716 assert_true (ai_move (ai, 7, 2)); 5717 assert_true (ai_move (ai, 7, 4)); 5718 assert_true (ai_move (ai, 5, 1)); 5719 assert_true (ai_move (ai, 5, 0)); 5720 assert_true (ai_move (ai, 4, 6)); 5721 assert_true (ai_move (ai, 6, 6)); 5722 assert_true (ai_move (ai, 4, 2)); 5723 assert_true (ai_move (ai, 2, 7)); 5724 assert_true (ai_move (ai, 0, 2)); 5725 assert_true (ai_move (ai, 0, 3)); 5726 assert_true (ai_move (ai, 2, 4)); 5727 assert_true (ai_move (ai, 1, 1)); 5728 assert_true (ai_move (ai, 4, 7)); 5729 assert_true (ai_move (ai, 3, 7)); 5730 assert_true (ai_move (ai, 7, 6)); 5731 assert_true (ai_move (ai, 6, 7)); 5732 assert_true (ai_move (ai, 6, 0)); 5733 assert_true (ai_move (ai, 7, 0)); 5734 assert_true (ai_move (ai, 1, 0)); 5735 assert_true (ai_move (ai, 7, 7)); 5736 assert_true (game.pass ()); 5737 assert_true (ai_move (ai, 1, 7)); 5738 assert_true (ai_move (ai, 1, 6)); 5739 assert_true (ai_move (ai, 7, 1)); 5740 assert_true (game.pass ()); 5741 assert_true (ai_move (ai, 6, 1)); 5742 assert_true (game.pass ()); 5743 assert_true (ai_move (ai, 0, 7)); 5744 assert_true (ai_move (ai, 0, 6)); 5745 assert_true (ai_move (ai, 0, 1)); 5746 assert_true (ai_move (ai, 0, 0)); 5747 } 5748 5749 private static inline void test_complete_reversi_game_58 () 5750 { 5751 /* 0 1 2 3 4 5 6 7 */ 5752 string [] board = {/* 0 */ " . . . . . . . .", 5753 /* 1 */ " . . . . . . . .", 5754 /* 2 */ " . . D . . . . .", 5755 /* 3 */ " . . . D D . . .", 5756 /* 4 */ " . . . L L L L .", 5757 /* 5 */ " . . . L . . . .", 5758 /* 6 */ " . . . . . . . .", 5759 /* 7 */ " . . . . . . . ."}; 5760 5761 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 5762 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 5763 5764 assert_true (ai_move (ai, 6, 5)); 5765 assert_true (ai_move (ai, 5, 2)); 5766 assert_true (ai_move (ai, 7, 4)); 5767 assert_true (ai_move (ai, 2, 3)); 5768 assert_true (ai_move (ai, 3, 2)); 5769 assert_true (ai_move (ai, 2, 1)); 5770 assert_true (ai_move (ai, 1, 2)); 5771 assert_true (ai_move (ai, 4, 1)); 5772 assert_true (ai_move (ai, 4, 2)); 5773 assert_true (ai_move (ai, 3, 1)); 5774 assert_true (ai_move (ai, 6, 2)); 5775 assert_true (ai_move (ai, 1, 3)); 5776 assert_true (ai_move (ai, 2, 0)); 5777 assert_true (ai_move (ai, 6, 3)); 5778 assert_true (ai_move (ai, 7, 2)); 5779 assert_true (ai_move (ai, 4, 0)); 5780 assert_true (ai_move (ai, 1, 0)); 5781 assert_true (ai_move (ai, 0, 2)); 5782 assert_true (ai_move (ai, 5, 0)); 5783 assert_true (ai_move (ai, 3, 0)); 5784 assert_true (ai_move (ai, 1, 4)); 5785 assert_true (ai_move (ai, 2, 4)); 5786 assert_true (ai_move (ai, 2, 5)); 5787 assert_true (ai_move (ai, 0, 5)); 5788 assert_true (ai_move (ai, 6, 1)); 5789 assert_true (ai_move (ai, 4, 5)); 5790 assert_true (ai_move (ai, 3, 6)); 5791 assert_true (ai_move (ai, 5, 6)); 5792 assert_true (ai_move (ai, 5, 1)); 5793 assert_true (ai_move (ai, 0, 0)); 5794 assert_true (ai_move (ai, 4, 7)); 5795 assert_true (ai_move (ai, 6, 7)); 5796 assert_true (ai_move (ai, 5, 5)); 5797 assert_true (ai_move (ai, 2, 6)); 5798 assert_true (ai_move (ai, 0, 1)); 5799 assert_true (ai_move (ai, 7, 5)); 5800 assert_true (ai_move (ai, 4, 6)); 5801 assert_true (ai_move (ai, 7, 3)); 5802 assert_true (ai_move (ai, 7, 6)); 5803 assert_true (ai_move (ai, 5, 3)); 5804 assert_true (ai_move (ai, 5, 7)); 5805 assert_true (ai_move (ai, 3, 7)); 5806 assert_true (ai_move (ai, 7, 1)); 5807 assert_true (ai_move (ai, 6, 0)); 5808 assert_true (ai_move (ai, 0, 3)); 5809 assert_true (ai_move (ai, 7, 0)); 5810 assert_true (ai_move (ai, 1, 5)); 5811 assert_true (ai_move (ai, 7, 7)); 5812 assert_true (ai_move (ai, 2, 7)); 5813 assert_true (ai_move (ai, 1, 6)); 5814 assert_true (ai_move (ai, 1, 7)); 5815 assert_true (ai_move (ai, 6, 6)); 5816 assert_true (game.pass ()); 5817 assert_true (ai_move (ai, 0, 4)); 5818 assert_true (ai_move (ai, 1, 1)); 5819 assert_true (ai_move (ai, 0, 7)); 5820 assert_true (ai_move (ai, 0, 6)); 5821 } 5822 5823 private static inline void test_complete_reversi_game_59 () 5824 { 5825 /* 0 1 2 3 4 5 6 7 */ 5826 string [] board = {/* 0 */ " . . . . . . . .", 5827 /* 1 */ " . . . . . . . .", 5828 /* 2 */ " . . D . . . . .", 5829 /* 3 */ " . . . D D L . .", 5830 /* 4 */ " . . . L L D . .", 5831 /* 5 */ " . . . L . . . .", 5832 /* 6 */ " . . . . . . . .", 5833 /* 7 */ " . . . . . . . ."}; 5834 5835 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 5836 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 5837 5838 assert_true (ai_move (ai, 5, 2)); 5839 assert_true (ai_move (ai, 6, 2)); 5840 assert_true (ai_move (ai, 6, 3)); 5841 assert_true (ai_move (ai, 4, 2)); 5842 assert_true (ai_move (ai, 4, 1)); 5843 assert_true (ai_move (ai, 6, 5)); 5844 assert_true (ai_move (ai, 5, 1)); 5845 assert_true (ai_move (ai, 7, 2)); 5846 assert_true (ai_move (ai, 5, 5)); 5847 assert_true (ai_move (ai, 3, 0)); 5848 assert_true (ai_move (ai, 2, 6)); 5849 assert_true (ai_move (ai, 5, 6)); 5850 assert_true (ai_move (ai, 6, 4)); 5851 assert_true (ai_move (ai, 3, 6)); 5852 assert_true (ai_move (ai, 3, 2)); 5853 assert_true (ai_move (ai, 1, 2)); 5854 assert_true (ai_move (ai, 2, 1)); 5855 assert_true (ai_move (ai, 2, 0)); 5856 assert_true (ai_move (ai, 5, 7)); 5857 assert_true (ai_move (ai, 7, 5)); 5858 assert_true (ai_move (ai, 0, 2)); 5859 assert_true (ai_move (ai, 4, 6)); 5860 assert_true (ai_move (ai, 5, 0)); 5861 assert_true (ai_move (ai, 4, 7)); 5862 assert_true (ai_move (ai, 2, 5)); 5863 assert_true (ai_move (ai, 1, 5)); 5864 assert_true (ai_move (ai, 2, 4)); 5865 assert_true (ai_move (ai, 0, 3)); 5866 assert_true (ai_move (ai, 3, 7)); 5867 assert_true (ai_move (ai, 4, 5)); 5868 assert_true (ai_move (ai, 1, 4)); 5869 assert_true (ai_move (ai, 4, 0)); 5870 assert_true (ai_move (ai, 1, 0)); 5871 assert_true (ai_move (ai, 2, 7)); 5872 assert_true (ai_move (ai, 1, 7)); 5873 assert_true (ai_move (ai, 0, 1)); 5874 assert_true (ai_move (ai, 6, 7)); 5875 assert_true (ai_move (ai, 2, 3)); 5876 assert_true (ai_move (ai, 3, 1)); 5877 assert_true (ai_move (ai, 1, 3)); 5878 assert_true (ai_move (ai, 6, 6)); 5879 assert_true (ai_move (ai, 1, 6)); 5880 assert_true (ai_move (ai, 6, 0)); 5881 assert_true (ai_move (ai, 1, 1)); 5882 assert_true (ai_move (ai, 0, 0)); 5883 assert_true (ai_move (ai, 6, 1)); 5884 assert_true (ai_move (ai, 7, 4)); 5885 assert_true (ai_move (ai, 7, 3)); 5886 assert_true (ai_move (ai, 0, 4)); 5887 assert_true (ai_move (ai, 0, 6)); 5888 assert_true (ai_move (ai, 0, 7)); 5889 assert_true (ai_move (ai, 0, 5)); 5890 assert_true (ai_move (ai, 7, 0)); 5891 assert_true (ai_move (ai, 7, 7)); 5892 assert_true (ai_move (ai, 7, 1)); 5893 assert_true (ai_move (ai, 7, 6)); 5894 } 5895 5896 private static inline void test_complete_reversi_game_60 () 5897 { 5898 /* 0 1 2 3 4 5 6 7 */ 5899 string [] board = {/* 0 */ " . . . . . . . .", 5900 /* 1 */ " . . . . . . . .", 5901 /* 2 */ " . . D . . L . .", 5902 /* 3 */ " . . . D L . . .", 5903 /* 4 */ " . . . L D D . .", 5904 /* 5 */ " . . . L . . . .", 5905 /* 6 */ " . . . . . . . .", 5906 /* 7 */ " . . . . . . . ."}; 5907 5908 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 5909 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 5910 5911 assert_true (ai_move (ai, 2, 6)); 5912 assert_true (ai_move (ai, 3, 6)); 5913 assert_true (ai_move (ai, 3, 2)); 5914 assert_true (ai_move (ai, 5, 3)); 5915 assert_true (ai_move (ai, 5, 1)); 5916 assert_true (ai_move (ai, 6, 4)); 5917 assert_true (ai_move (ai, 6, 5)); 5918 assert_true (ai_move (ai, 6, 2)); 5919 assert_true (ai_move (ai, 6, 3)); 5920 assert_true (ai_move (ai, 4, 0)); 5921 assert_true (ai_move (ai, 5, 0)); 5922 assert_true (ai_move (ai, 6, 0)); 5923 assert_true (ai_move (ai, 5, 5)); 5924 assert_true (ai_move (ai, 4, 2)); 5925 assert_true (ai_move (ai, 3, 1)); 5926 assert_true (ai_move (ai, 5, 6)); 5927 assert_true (ai_move (ai, 7, 2)); 5928 assert_true (ai_move (ai, 2, 1)); 5929 assert_true (ai_move (ai, 4, 5)); 5930 assert_true (ai_move (ai, 1, 2)); 5931 assert_true (ai_move (ai, 1, 3)); 5932 assert_true (ai_move (ai, 3, 0)); 5933 assert_true (ai_move (ai, 2, 5)); 5934 assert_true (ai_move (ai, 7, 4)); 5935 assert_true (ai_move (ai, 7, 5)); 5936 assert_true (ai_move (ai, 7, 3)); 5937 assert_true (ai_move (ai, 0, 2)); 5938 assert_true (ai_move (ai, 4, 1)); 5939 assert_true (ai_move (ai, 5, 7)); 5940 assert_true (ai_move (ai, 4, 6)); 5941 assert_true (ai_move (ai, 6, 6)); 5942 assert_true (ai_move (ai, 1, 7)); 5943 assert_true (ai_move (ai, 2, 0)); 5944 assert_true (ai_move (ai, 1, 0)); 5945 assert_true (ai_move (ai, 4, 7)); 5946 assert_true (ai_move (ai, 2, 3)); 5947 assert_true (ai_move (ai, 2, 4)); 5948 assert_true (ai_move (ai, 1, 4)); 5949 assert_true (ai_move (ai, 2, 7)); 5950 assert_true (ai_move (ai, 1, 6)); 5951 assert_true (ai_move (ai, 1, 5)); 5952 assert_true (ai_move (ai, 0, 5)); 5953 assert_true (ai_move (ai, 0, 3)); 5954 assert_true (ai_move (ai, 0, 4)); 5955 assert_true (ai_move (ai, 1, 1)); 5956 assert_true (ai_move (ai, 3, 7)); 5957 assert_true (ai_move (ai, 0, 7)); 5958 assert_true (ai_move (ai, 0, 6)); 5959 assert_true (ai_move (ai, 6, 1)); 5960 assert_true (ai_move (ai, 7, 0)); 5961 assert_true (ai_move (ai, 7, 1)); 5962 assert_true (ai_move (ai, 0, 0)); 5963 assert_true (ai_move (ai, 0, 1)); 5964 assert_true (ai_move (ai, 7, 7)); 5965 assert_true (ai_move (ai, 6, 7)); 5966 assert_true (ai_move (ai, 7, 6)); 5967 } 5968 5969 private static inline void test_complete_reversi_game_61 () 5970 { 5971 /* 0 1 2 3 4 5 6 7 */ 5972 string [] board = {/* 0 */ " . . . . . . . .", 5973 /* 1 */ " . . . . . . . .", 5974 /* 2 */ " . . D L . . . .", 5975 /* 3 */ " . . . L D . . .", 5976 /* 4 */ " . . . L D D . .", 5977 /* 5 */ " . . . L . . . .", 5978 /* 6 */ " . . . . . . . .", 5979 /* 7 */ " . . . . . . . ."}; 5980 5981 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 5982 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 5983 5984 assert_true (ai_move (ai, 2, 1)); 5985 assert_true (ai_move (ai, 5, 2)); 5986 assert_true (ai_move (ai, 2, 6)); 5987 assert_true (ai_move (ai, 3, 6)); 5988 assert_true (ai_move (ai, 4, 6)); 5989 assert_true (ai_move (ai, 6, 5)); 5990 assert_true (ai_move (ai, 6, 4)); 5991 assert_true (ai_move (ai, 3, 1)); 5992 assert_true (ai_move (ai, 4, 0)); 5993 assert_true (ai_move (ai, 5, 7)); 5994 assert_true (ai_move (ai, 5, 6)); 5995 assert_true (ai_move (ai, 4, 7)); 5996 assert_true (ai_move (ai, 4, 2)); 5997 assert_true (ai_move (ai, 3, 7)); 5998 assert_true (ai_move (ai, 6, 2)); 5999 assert_true (ai_move (ai, 1, 5)); 6000 assert_true (ai_move (ai, 2, 3)); 6001 assert_true (ai_move (ai, 5, 5)); 6002 assert_true (ai_move (ai, 2, 4)); 6003 assert_true (ai_move (ai, 6, 3)); 6004 assert_true (ai_move (ai, 7, 2)); 6005 assert_true (ai_move (ai, 1, 3)); 6006 assert_true (ai_move (ai, 1, 4)); 6007 assert_true (ai_move (ai, 5, 1)); 6008 assert_true (ai_move (ai, 5, 3)); 6009 assert_true (ai_move (ai, 2, 0)); 6010 assert_true (ai_move (ai, 4, 1)); 6011 assert_true (ai_move (ai, 5, 0)); 6012 assert_true (ai_move (ai, 3, 0)); 6013 assert_true (ai_move (ai, 0, 4)); 6014 assert_true (ai_move (ai, 1, 2)); 6015 assert_true (ai_move (ai, 7, 3)); 6016 assert_true (ai_move (ai, 2, 5)); 6017 assert_true (ai_move (ai, 0, 2)); 6018 assert_true (ai_move (ai, 4, 5)); 6019 assert_true (ai_move (ai, 7, 1)); 6020 assert_true (ai_move (ai, 6, 1)); 6021 assert_true (ai_move (ai, 6, 0)); 6022 assert_true (ai_move (ai, 7, 0)); 6023 assert_true (ai_move (ai, 1, 1)); 6024 assert_true (ai_move (ai, 7, 4)); 6025 assert_true (ai_move (ai, 7, 5)); 6026 assert_true (ai_move (ai, 7, 6)); 6027 assert_true (ai_move (ai, 6, 6)); 6028 assert_true (ai_move (ai, 2, 7)); 6029 assert_true (ai_move (ai, 1, 7)); 6030 assert_true (ai_move (ai, 1, 6)); 6031 assert_true (ai_move (ai, 0, 5)); 6032 assert_true (ai_move (ai, 1, 0)); 6033 assert_true (game.pass ()); 6034 assert_true (ai_move (ai, 0, 3)); 6035 assert_true (ai_move (ai, 0, 1)); 6036 assert_true (ai_move (ai, 7, 7)); 6037 assert_true (ai_move (ai, 6, 7)); 6038 assert_true (ai_move (ai, 0, 7)); 6039 assert_true (ai_move (ai, 0, 6)); 6040 assert_true (ai_move (ai, 0, 0)); 6041 } 6042 6043 private static inline void test_complete_reversi_game_62 () 6044 { 6045 /* 0 1 2 3 4 5 6 7 */ 6046 string [] board = {/* 0 */ " . . . . . . . .", 6047 /* 1 */ " . . . . . . . .", 6048 /* 2 */ " . . . . . . . .", 6049 /* 3 */ " . . . L D . . .", 6050 /* 4 */ " . . . D L . . .", 6051 /* 5 */ " . . . . D L D .", 6052 /* 6 */ " . . . . . . L .", 6053 /* 7 */ " . . . . . . . ."}; 6054 6055 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 6056 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 6057 6058 assert_true (ai_move (ai, 5, 4)); 6059 assert_true (ai_move (ai, 7, 5)); 6060 assert_true (ai_move (ai, 5, 6)); 6061 assert_true (ai_move (ai, 4, 7)); 6062 assert_true (ai_move (ai, 5, 7)); 6063 assert_true (ai_move (ai, 6, 7)); 6064 assert_true (ai_move (ai, 7, 4)); 6065 assert_true (ai_move (ai, 4, 6)); 6066 assert_true (ai_move (ai, 7, 6)); 6067 assert_true (ai_move (ai, 6, 4)); 6068 assert_true (ai_move (ai, 7, 7)); 6069 assert_true (ai_move (ai, 5, 3)); 6070 assert_true (ai_move (ai, 3, 7)); 6071 assert_true (ai_move (ai, 3, 6)); 6072 assert_true (ai_move (ai, 3, 5)); 6073 assert_true (ai_move (ai, 2, 7)); 6074 assert_true (ai_move (ai, 1, 7)); 6075 assert_true (ai_move (ai, 2, 3)); 6076 assert_true (ai_move (ai, 6, 3)); 6077 assert_true (ai_move (ai, 7, 3)); 6078 assert_true (ai_move (ai, 7, 2)); 6079 assert_true (ai_move (ai, 2, 6)); 6080 assert_true (ai_move (ai, 1, 5)); 6081 assert_true (ai_move (ai, 1, 6)); 6082 assert_true (ai_move (ai, 5, 2)); 6083 assert_true (ai_move (ai, 0, 4)); 6084 assert_true (ai_move (ai, 4, 2)); 6085 assert_true (ai_move (ai, 5, 1)); 6086 assert_true (ai_move (ai, 5, 0)); 6087 assert_true (ai_move (ai, 6, 2)); 6088 assert_true (ai_move (ai, 3, 1)); 6089 assert_true (ai_move (ai, 4, 0)); 6090 assert_true (ai_move (ai, 3, 0)); 6091 assert_true (ai_move (ai, 3, 2)); 6092 assert_true (ai_move (ai, 4, 1)); 6093 assert_true (ai_move (ai, 2, 1)); 6094 assert_true (ai_move (ai, 7, 1)); 6095 assert_true (ai_move (ai, 6, 1)); 6096 assert_true (ai_move (ai, 0, 5)); 6097 assert_true (ai_move (ai, 0, 6)); 6098 assert_true (ai_move (ai, 2, 0)); 6099 assert_true (game.pass ()); 6100 assert_true (ai_move (ai, 1, 1)); 6101 assert_true (ai_move (ai, 1, 0)); 6102 assert_true (ai_move (ai, 0, 0)); 6103 assert_true (ai_move (ai, 0, 1)); 6104 assert_true (ai_move (ai, 0, 2)); 6105 assert_true (game.pass ()); 6106 assert_true (ai_move (ai, 2, 5)); 6107 assert_true (ai_move (ai, 2, 4)); 6108 assert_true (ai_move (ai, 2, 2)); 6109 assert_true (ai_move (ai, 1, 4)); 6110 assert_true (ai_move (ai, 0, 3)); 6111 assert_true (ai_move (ai, 1, 3)); 6112 assert_true (ai_move (ai, 0, 7)); 6113 assert_true (ai_move (ai, 1, 2)); 6114 assert_true (ai_move (ai, 6, 0)); 6115 assert_true (ai_move (ai, 7, 0)); 6116 } 6117 6118 private static inline void test_complete_reversi_game_63 () 6119 { 6120 /* 0 1 2 3 4 5 6 7 */ 6121 string [] board = {/* 0 */ " . . . . . . . .", 6122 /* 1 */ " . . . . . . . .", 6123 /* 2 */ " . . . . . . . .", 6124 /* 3 */ " . . . L L L . .", 6125 /* 4 */ " . . . D L . . .", 6126 /* 5 */ " . . . . D D D .", 6127 /* 6 */ " . . . . . . . .", 6128 /* 7 */ " . . . . . . . ."}; 6129 6130 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 6131 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 6132 6133 assert_true (ai_move (ai, 3, 2)); 6134 assert_true (ai_move (ai, 2, 1)); 6135 assert_true (ai_move (ai, 3, 1)); 6136 assert_true (ai_move (ai, 2, 5)); 6137 assert_true (ai_move (ai, 2, 3)); 6138 assert_true (ai_move (ai, 4, 6)); 6139 assert_true (ai_move (ai, 3, 5)); 6140 assert_true (ai_move (ai, 6, 4)); 6141 assert_true (ai_move (ai, 1, 5)); 6142 assert_true (ai_move (ai, 7, 5)); 6143 assert_true (ai_move (ai, 5, 7)); 6144 assert_true (ai_move (ai, 3, 7)); 6145 assert_true (ai_move (ai, 4, 7)); 6146 assert_true (ai_move (ai, 6, 7)); 6147 assert_true (ai_move (ai, 7, 3)); 6148 assert_true (ai_move (ai, 6, 3)); 6149 assert_true (ai_move (ai, 5, 2)); 6150 assert_true (ai_move (ai, 5, 1)); 6151 assert_true (ai_move (ai, 6, 2)); 6152 assert_true (ai_move (ai, 7, 2)); 6153 assert_true (ai_move (ai, 7, 1)); 6154 assert_true (ai_move (ai, 0, 5)); 6155 assert_true (ai_move (ai, 2, 4)); 6156 assert_true (ai_move (ai, 1, 2)); 6157 assert_true (ai_move (ai, 4, 2)); 6158 assert_true (ai_move (ai, 1, 4)); 6159 assert_true (ai_move (ai, 5, 4)); 6160 assert_true (ai_move (ai, 3, 6)); 6161 assert_true (ai_move (ai, 5, 6)); 6162 assert_true (ai_move (ai, 2, 0)); 6163 assert_true (ai_move (ai, 4, 1)); 6164 assert_true (ai_move (ai, 4, 0)); 6165 assert_true (ai_move (ai, 1, 3)); 6166 assert_true (ai_move (ai, 2, 6)); 6167 assert_true (ai_move (ai, 2, 7)); 6168 assert_true (ai_move (ai, 1, 7)); 6169 assert_true (ai_move (ai, 6, 0)); 6170 assert_true (ai_move (ai, 2, 2)); 6171 assert_true (ai_move (ai, 0, 2)); 6172 assert_true (ai_move (ai, 5, 0)); 6173 assert_true (ai_move (ai, 0, 3)); 6174 assert_true (ai_move (ai, 1, 6)); 6175 assert_true (ai_move (ai, 3, 0)); 6176 assert_true (ai_move (ai, 7, 0)); 6177 assert_true (ai_move (ai, 7, 4)); 6178 assert_true (ai_move (ai, 6, 1)); 6179 assert_true (ai_move (ai, 0, 6)); 6180 assert_true (ai_move (ai, 0, 4)); 6181 assert_true (ai_move (ai, 1, 1)); 6182 assert_true (ai_move (ai, 0, 7)); 6183 assert_true (ai_move (ai, 7, 6)); 6184 assert_true (ai_move (ai, 7, 7)); 6185 assert_true (game.pass ()); 6186 assert_true (ai_move (ai, 6, 6)); 6187 assert_true (game.pass ()); 6188 assert_true (ai_move (ai, 0, 0)); 6189 assert_true (ai_move (ai, 0, 1)); 6190 assert_true (ai_move (ai, 1, 0)); 6191 } 6192 6193 private static inline void test_complete_reversi_game_64 () 6194 { 6195 /* 0 1 2 3 4 5 6 7 */ 6196 string [] board = {/* 0 */ " . . . . . . . .", 6197 /* 1 */ " . . . . . . . .", 6198 /* 2 */ " . . . . . . . .", 6199 /* 3 */ " . . . L D . . .", 6200 /* 4 */ " . . . D L . . .", 6201 /* 5 */ " . . . . L D D .", 6202 /* 6 */ " . . . . L . . .", 6203 /* 7 */ " . . . . . . . ."}; 6204 6205 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 6206 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 6207 6208 assert_true (ai_move (ai, 3, 5)); 6209 assert_true (ai_move (ai, 6, 4)); 6210 assert_true (ai_move (ai, 5, 7)); 6211 assert_true (ai_move (ai, 7, 5)); 6212 assert_true (ai_move (ai, 7, 3)); 6213 assert_true (ai_move (ai, 2, 5)); 6214 assert_true (ai_move (ai, 5, 6)); 6215 assert_true (ai_move (ai, 3, 7)); 6216 assert_true (ai_move (ai, 4, 7)); 6217 assert_true (ai_move (ai, 6, 7)); 6218 assert_true (ai_move (ai, 5, 4)); 6219 assert_true (ai_move (ai, 6, 3)); 6220 assert_true (ai_move (ai, 5, 3)); 6221 assert_true (ai_move (ai, 2, 4)); 6222 assert_true (ai_move (ai, 1, 5)); 6223 assert_true (ai_move (ai, 2, 6)); 6224 assert_true (ai_move (ai, 1, 3)); 6225 assert_true (ai_move (ai, 2, 3)); 6226 assert_true (ai_move (ai, 1, 2)); 6227 assert_true (ai_move (ai, 2, 2)); 6228 assert_true (ai_move (ai, 3, 1)); 6229 assert_true (ai_move (ai, 2, 1)); 6230 assert_true (ai_move (ai, 1, 4)); 6231 assert_true (ai_move (ai, 3, 6)); 6232 assert_true (ai_move (ai, 3, 2)); 6233 assert_true (ai_move (ai, 7, 2)); 6234 assert_true (ai_move (ai, 7, 4)); 6235 assert_true (ai_move (ai, 5, 2)); 6236 assert_true (ai_move (ai, 2, 0)); 6237 assert_true (ai_move (ai, 0, 5)); 6238 assert_true (ai_move (ai, 4, 1)); 6239 assert_true (ai_move (ai, 5, 1)); 6240 assert_true (ai_move (ai, 2, 7)); 6241 assert_true (ai_move (ai, 1, 7)); 6242 assert_true (ai_move (ai, 6, 2)); 6243 assert_true (ai_move (ai, 4, 2)); 6244 assert_true (ai_move (ai, 5, 0)); 6245 assert_true (ai_move (ai, 0, 2)); 6246 assert_true (ai_move (ai, 0, 3)); 6247 assert_true (ai_move (ai, 0, 4)); 6248 assert_true (ai_move (ai, 1, 1)); 6249 assert_true (ai_move (ai, 0, 1)); 6250 assert_true (ai_move (ai, 6, 6)); 6251 assert_true (ai_move (ai, 4, 0)); 6252 assert_true (ai_move (ai, 3, 0)); 6253 assert_true (ai_move (ai, 1, 6)); 6254 assert_true (ai_move (ai, 0, 7)); 6255 assert_true (ai_move (ai, 7, 7)); 6256 assert_true (ai_move (ai, 0, 6)); 6257 assert_true (ai_move (ai, 0, 0)); 6258 assert_true (ai_move (ai, 7, 6)); 6259 assert_true (ai_move (ai, 7, 1)); 6260 assert_true (ai_move (ai, 6, 1)); 6261 assert_true (ai_move (ai, 6, 0)); 6262 assert_true (ai_move (ai, 1, 0)); 6263 assert_true (game.pass ()); 6264 assert_true (ai_move (ai, 7, 0)); 6265 } 6266 6267 private static inline void test_complete_reversi_game_65 () 6268 { 6269 /* 0 1 2 3 4 5 6 7 */ 6270 string [] board = {/* 0 */ " . . . . . . . .", 6271 /* 1 */ " . . . . . . . .", 6272 /* 2 */ " . . . . L . . .", 6273 /* 3 */ " . . . L L . . .", 6274 /* 4 */ " . . . D L . . .", 6275 /* 5 */ " . . . . D D D .", 6276 /* 6 */ " . . . . . . . .", 6277 /* 7 */ " . . . . . . . ."}; 6278 6279 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 6280 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 6281 6282 assert_true (ai_move (ai, 5, 4)); 6283 assert_true (ai_move (ai, 2, 5)); 6284 assert_true (ai_move (ai, 2, 3)); 6285 assert_true (ai_move (ai, 1, 3)); 6286 assert_true (ai_move (ai, 1, 2)); 6287 assert_true (ai_move (ai, 3, 5)); 6288 assert_true (ai_move (ai, 2, 6)); 6289 assert_true (ai_move (ai, 3, 6)); 6290 assert_true (ai_move (ai, 1, 5)); 6291 assert_true (ai_move (ai, 5, 6)); 6292 assert_true (ai_move (ai, 5, 7)); 6293 assert_true (ai_move (ai, 6, 3)); 6294 assert_true (ai_move (ai, 6, 4)); 6295 assert_true (ai_move (ai, 7, 5)); 6296 assert_true (ai_move (ai, 4, 7)); 6297 assert_true (ai_move (ai, 2, 7)); 6298 assert_true (ai_move (ai, 4, 6)); 6299 assert_true (ai_move (ai, 0, 5)); 6300 assert_true (ai_move (ai, 2, 4)); 6301 assert_true (ai_move (ai, 2, 2)); 6302 assert_true (ai_move (ai, 7, 4)); 6303 assert_true (ai_move (ai, 7, 3)); 6304 assert_true (ai_move (ai, 7, 2)); 6305 assert_true (ai_move (ai, 7, 1)); 6306 assert_true (ai_move (ai, 1, 4)); 6307 assert_true (ai_move (ai, 7, 6)); 6308 assert_true (ai_move (ai, 3, 1)); 6309 assert_true (ai_move (ai, 2, 1)); 6310 assert_true (ai_move (ai, 3, 2)); 6311 assert_true (ai_move (ai, 6, 2)); 6312 assert_true (ai_move (ai, 5, 3)); 6313 assert_true (ai_move (ai, 0, 4)); 6314 assert_true (ai_move (ai, 2, 0)); 6315 assert_true (ai_move (ai, 4, 1)); 6316 assert_true (ai_move (ai, 5, 2)); 6317 assert_true (ai_move (ai, 5, 1)); 6318 assert_true (ai_move (ai, 5, 0)); 6319 assert_true (ai_move (ai, 0, 2)); 6320 assert_true (ai_move (ai, 0, 3)); 6321 assert_true (ai_move (ai, 3, 7)); 6322 assert_true (ai_move (ai, 1, 7)); 6323 assert_true (ai_move (ai, 4, 0)); 6324 assert_true (ai_move (ai, 3, 0)); 6325 assert_true (ai_move (ai, 6, 6)); 6326 assert_true (ai_move (ai, 6, 7)); 6327 assert_true (ai_move (ai, 1, 0)); 6328 assert_true (ai_move (ai, 0, 0)); 6329 assert_true (ai_move (ai, 6, 1)); 6330 assert_true (ai_move (ai, 1, 1)); 6331 assert_true (ai_move (ai, 1, 6)); 6332 assert_true (ai_move (ai, 0, 1)); 6333 assert_true (game.pass ()); 6334 assert_true (ai_move (ai, 7, 7)); 6335 assert_true (game.pass ()); 6336 assert_true (ai_move (ai, 7, 0)); 6337 assert_true (game.pass ()); 6338 assert_true (ai_move (ai, 6, 0)); 6339 assert_true (game.pass ()); 6340 assert_true (ai_move (ai, 0, 6)); 6341 assert_true (ai_move (ai, 0, 7)); 6342 } 6343 6344 private static inline void test_complete_reversi_game_66 () 6345 { 6346 /* 0 1 2 3 4 5 6 7 */ 6347 string [] board = {/* 0 */ " . . . . . . . .", 6348 /* 1 */ " . . . . . . . .", 6349 /* 2 */ " . . . . . . . .", 6350 /* 3 */ " . . . L D . . .", 6351 /* 4 */ " . . . L L . . .", 6352 /* 5 */ " . . . L D D D .", 6353 /* 6 */ " . . . . . . . .", 6354 /* 7 */ " . . . . . . . ."}; 6355 6356 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 6357 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 6358 6359 assert_true (ai_move (ai, 2, 5)); 6360 assert_true (ai_move (ai, 2, 6)); 6361 assert_true (ai_move (ai, 3, 6)); 6362 assert_true (ai_move (ai, 2, 4)); 6363 assert_true (ai_move (ai, 1, 5)); 6364 assert_true (ai_move (ai, 3, 7)); 6365 assert_true (ai_move (ai, 4, 7)); 6366 assert_true (ai_move (ai, 5, 7)); 6367 assert_true (ai_move (ai, 2, 7)); 6368 assert_true (ai_move (ai, 1, 7)); 6369 assert_true (ai_move (ai, 4, 2)); 6370 assert_true (ai_move (ai, 4, 6)); 6371 assert_true (ai_move (ai, 5, 4)); 6372 assert_true (ai_move (ai, 1, 4)); 6373 assert_true (ai_move (ai, 0, 4)); 6374 assert_true (ai_move (ai, 6, 4)); 6375 assert_true (ai_move (ai, 7, 4)); 6376 assert_true (ai_move (ai, 6, 3)); 6377 assert_true (ai_move (ai, 5, 6)); 6378 assert_true (ai_move (ai, 5, 3)); 6379 assert_true (ai_move (ai, 7, 2)); 6380 assert_true (ai_move (ai, 1, 3)); 6381 assert_true (ai_move (ai, 5, 2)); 6382 assert_true (ai_move (ai, 6, 2)); 6383 assert_true (ai_move (ai, 2, 2)); 6384 assert_true (ai_move (ai, 0, 5)); 6385 assert_true (ai_move (ai, 0, 6)); 6386 assert_true (ai_move (ai, 5, 1)); 6387 assert_true (ai_move (ai, 4, 1)); 6388 assert_true (ai_move (ai, 0, 2)); 6389 assert_true (ai_move (ai, 5, 0)); 6390 assert_true (ai_move (ai, 3, 1)); 6391 assert_true (ai_move (ai, 3, 2)); 6392 assert_true (ai_move (ai, 4, 0)); 6393 assert_true (ai_move (ai, 2, 0)); 6394 assert_true (ai_move (ai, 6, 0)); 6395 assert_true (ai_move (ai, 1, 2)); 6396 assert_true (ai_move (ai, 7, 5)); 6397 assert_true (ai_move (ai, 3, 0)); 6398 assert_true (ai_move (ai, 1, 0)); 6399 assert_true (ai_move (ai, 1, 6)); 6400 assert_true (ai_move (ai, 7, 3)); 6401 assert_true (ai_move (ai, 7, 6)); 6402 assert_true (ai_move (ai, 2, 1)); 6403 assert_true (ai_move (ai, 2, 3)); 6404 assert_true (ai_move (ai, 0, 3)); 6405 assert_true (ai_move (ai, 0, 1)); 6406 assert_true (ai_move (ai, 1, 1)); 6407 assert_true (ai_move (ai, 7, 1)); 6408 assert_true (ai_move (ai, 6, 7)); 6409 assert_true (ai_move (ai, 0, 0)); 6410 assert_true (ai_move (ai, 0, 7)); 6411 assert_true (ai_move (ai, 7, 0)); 6412 assert_true (ai_move (ai, 6, 6)); 6413 assert_true (ai_move (ai, 7, 7)); 6414 assert_true (ai_move (ai, 6, 1)); 6415 } 6416 6417 private static inline void test_complete_reversi_game_67 () 6418 { 6419 /* 0 1 2 3 4 5 6 7 */ 6420 string [] board = {/* 0 */ " . . . . . . . .", 6421 /* 1 */ " . . . . . . . .", 6422 /* 2 */ " . . . . . . . .", 6423 /* 3 */ " . . . L D . . .", 6424 /* 4 */ " . . L L L . . .", 6425 /* 5 */ " . . . . D D D .", 6426 /* 6 */ " . . . . . . . .", 6427 /* 7 */ " . . . . . . . ."}; 6428 6429 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 6430 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 6431 6432 assert_true (ai_move (ai, 2, 5)); 6433 assert_true (ai_move (ai, 3, 5)); 6434 assert_true (ai_move (ai, 2, 3)); 6435 assert_true (ai_move (ai, 1, 5)); 6436 assert_true (ai_move (ai, 2, 6)); 6437 assert_true (ai_move (ai, 1, 3)); 6438 assert_true (ai_move (ai, 1, 4)); 6439 assert_true (ai_move (ai, 0, 4)); 6440 assert_true (ai_move (ai, 3, 6)); 6441 assert_true (ai_move (ai, 4, 6)); 6442 assert_true (ai_move (ai, 3, 7)); 6443 assert_true (ai_move (ai, 5, 7)); 6444 assert_true (ai_move (ai, 5, 3)); 6445 assert_true (ai_move (ai, 4, 7)); 6446 assert_true (ai_move (ai, 0, 2)); 6447 assert_true (ai_move (ai, 2, 7)); 6448 assert_true (ai_move (ai, 5, 6)); 6449 assert_true (ai_move (ai, 5, 4)); 6450 assert_true (ai_move (ai, 0, 6)); 6451 assert_true (ai_move (ai, 6, 2)); 6452 assert_true (ai_move (ai, 6, 3)); 6453 assert_true (ai_move (ai, 7, 5)); 6454 assert_true (ai_move (ai, 6, 4)); 6455 assert_true (ai_move (ai, 7, 2)); 6456 assert_true (ai_move (ai, 1, 6)); 6457 assert_true (ai_move (ai, 2, 2)); 6458 assert_true (ai_move (ai, 4, 2)); 6459 assert_true (ai_move (ai, 7, 4)); 6460 assert_true (ai_move (ai, 0, 3)); 6461 assert_true (ai_move (ai, 0, 1)); 6462 assert_true (ai_move (ai, 2, 1)); 6463 assert_true (ai_move (ai, 2, 0)); 6464 assert_true (ai_move (ai, 1, 2)); 6465 assert_true (ai_move (ai, 3, 1)); 6466 assert_true (ai_move (ai, 4, 1)); 6467 assert_true (ai_move (ai, 1, 1)); 6468 assert_true (ai_move (ai, 0, 5)); 6469 assert_true (ai_move (ai, 0, 7)); 6470 assert_true (ai_move (ai, 0, 0)); 6471 assert_true (ai_move (ai, 5, 2)); 6472 assert_true (ai_move (ai, 4, 0)); 6473 assert_true (ai_move (ai, 3, 2)); 6474 assert_true (ai_move (ai, 6, 6)); 6475 assert_true (ai_move (ai, 5, 0)); 6476 assert_true (ai_move (ai, 5, 1)); 6477 assert_true (ai_move (ai, 3, 0)); 6478 assert_true (ai_move (ai, 1, 0)); 6479 assert_true (ai_move (ai, 6, 0)); 6480 assert_true (ai_move (ai, 7, 0)); 6481 assert_true (ai_move (ai, 7, 7)); 6482 assert_true (ai_move (ai, 6, 1)); 6483 assert_true (ai_move (ai, 7, 1)); 6484 assert_true (ai_move (ai, 7, 3)); 6485 assert_true (game.pass ()); 6486 assert_true (ai_move (ai, 7, 6)); 6487 assert_true (game.pass ()); 6488 assert_true (ai_move (ai, 6, 7)); 6489 assert_true (game.pass ()); 6490 assert_true (ai_move (ai, 1, 7)); 6491 } 6492 6493 private static inline void test_complete_reversi_game_68 () 6494 { 6495 /* 0 1 2 3 4 5 6 7 */ 6496 string [] board = {/* 0 */ " . . . . . . . .", 6497 /* 1 */ " . . . . . . . .", 6498 /* 2 */ " . . . . . . . .", 6499 /* 3 */ " . . . L L L . .", 6500 /* 4 */ " . . . D D L . .", 6501 /* 5 */ " . . . . D L . .", 6502 /* 6 */ " . . . . . . . .", 6503 /* 7 */ " . . . . . . . ."}; 6504 6505 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 6506 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 6507 6508 assert_true (ai_move (ai, 6, 5)); 6509 assert_true (ai_move (ai, 5, 6)); 6510 assert_true (ai_move (ai, 6, 3)); 6511 assert_true (ai_move (ai, 7, 5)); 6512 assert_true (ai_move (ai, 5, 7)); 6513 assert_true (ai_move (ai, 4, 7)); 6514 assert_true (ai_move (ai, 3, 7)); 6515 assert_true (ai_move (ai, 7, 3)); 6516 assert_true (ai_move (ai, 7, 2)); 6517 assert_true (ai_move (ai, 2, 5)); 6518 assert_true (ai_move (ai, 5, 2)); 6519 assert_true (ai_move (ai, 5, 1)); 6520 assert_true (ai_move (ai, 6, 4)); 6521 assert_true (ai_move (ai, 6, 2)); 6522 assert_true (ai_move (ai, 3, 2)); 6523 assert_true (ai_move (ai, 3, 6)); 6524 assert_true (ai_move (ai, 4, 6)); 6525 assert_true (ai_move (ai, 3, 5)); 6526 assert_true (ai_move (ai, 4, 2)); 6527 assert_true (ai_move (ai, 4, 1)); 6528 assert_true (ai_move (ai, 5, 0)); 6529 assert_true (ai_move (ai, 2, 2)); 6530 assert_true (ai_move (ai, 1, 5)); 6531 assert_true (ai_move (ai, 1, 4)); 6532 assert_true (ai_move (ai, 1, 2)); 6533 assert_true (ai_move (ai, 3, 1)); 6534 assert_true (ai_move (ai, 2, 7)); 6535 assert_true (ai_move (ai, 1, 3)); 6536 assert_true (ai_move (ai, 0, 3)); 6537 assert_true (ai_move (ai, 6, 6)); 6538 assert_true (ai_move (ai, 2, 4)); 6539 assert_true (ai_move (ai, 0, 5)); 6540 assert_true (ai_move (ai, 2, 6)); 6541 assert_true (ai_move (ai, 3, 0)); 6542 assert_true (ai_move (ai, 4, 0)); 6543 assert_true (ai_move (ai, 6, 7)); 6544 assert_true (ai_move (ai, 7, 7)); 6545 assert_true (ai_move (ai, 0, 2)); 6546 assert_true (ai_move (ai, 2, 0)); 6547 assert_true (ai_move (ai, 0, 4)); 6548 assert_true (ai_move (ai, 2, 3)); 6549 assert_true (ai_move (ai, 2, 1)); 6550 assert_true (ai_move (ai, 6, 1)); 6551 assert_true (ai_move (ai, 1, 7)); 6552 assert_true (ai_move (ai, 7, 6)); 6553 assert_true (ai_move (ai, 6, 0)); 6554 assert_true (ai_move (ai, 7, 0)); 6555 assert_true (ai_move (ai, 7, 1)); 6556 assert_true (ai_move (ai, 7, 4)); 6557 assert_true (ai_move (ai, 1, 6)); 6558 assert_true (ai_move (ai, 1, 0)); 6559 assert_true (ai_move (ai, 1, 1)); 6560 assert_true (ai_move (ai, 0, 0)); 6561 assert_true (ai_move (ai, 0, 1)); 6562 assert_true (ai_move (ai, 0, 6)); 6563 assert_true (ai_move (ai, 0, 7)); 6564 } 6565 6566 private static inline void test_complete_reversi_game_69 () 6567 { 6568 /* 0 1 2 3 4 5 6 7 */ 6569 string [] board = {/* 0 */ " . . . . . . . .", 6570 /* 1 */ " . . . . . . . .", 6571 /* 2 */ " . . . . . . . .", 6572 /* 3 */ " . . . L D . . .", 6573 /* 4 */ " . . . L D D . .", 6574 /* 5 */ " . . . L L L . .", 6575 /* 6 */ " . . . . . . . .", 6576 /* 7 */ " . . . . . . . ."}; 6577 6578 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 6579 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 6580 6581 assert_true (ai_move (ai, 5, 6)); 6582 assert_true (ai_move (ai, 6, 5)); 6583 assert_true (ai_move (ai, 3, 6)); 6584 assert_true (ai_move (ai, 5, 7)); 6585 assert_true (ai_move (ai, 7, 5)); 6586 assert_true (ai_move (ai, 7, 4)); 6587 assert_true (ai_move (ai, 7, 3)); 6588 assert_true (ai_move (ai, 3, 7)); 6589 assert_true (ai_move (ai, 2, 7)); 6590 assert_true (ai_move (ai, 5, 2)); 6591 assert_true (ai_move (ai, 2, 5)); 6592 assert_true (ai_move (ai, 1, 5)); 6593 assert_true (ai_move (ai, 4, 6)); 6594 assert_true (ai_move (ai, 2, 6)); 6595 assert_true (ai_move (ai, 2, 3)); 6596 assert_true (ai_move (ai, 6, 3)); 6597 assert_true (ai_move (ai, 6, 4)); 6598 assert_true (ai_move (ai, 5, 3)); 6599 assert_true (ai_move (ai, 2, 4)); 6600 assert_true (ai_move (ai, 1, 4)); 6601 assert_true (ai_move (ai, 0, 5)); 6602 assert_true (ai_move (ai, 2, 2)); 6603 assert_true (ai_move (ai, 5, 1)); 6604 assert_true (ai_move (ai, 4, 1)); 6605 assert_true (ai_move (ai, 2, 1)); 6606 assert_true (ai_move (ai, 1, 3)); 6607 assert_true (ai_move (ai, 7, 2)); 6608 assert_true (ai_move (ai, 3, 1)); 6609 assert_true (ai_move (ai, 3, 0)); 6610 assert_true (ai_move (ai, 6, 6)); 6611 assert_true (ai_move (ai, 4, 2)); 6612 assert_true (ai_move (ai, 5, 0)); 6613 assert_true (ai_move (ai, 6, 2)); 6614 assert_true (ai_move (ai, 0, 3)); 6615 assert_true (ai_move (ai, 0, 4)); 6616 assert_true (ai_move (ai, 7, 6)); 6617 assert_true (ai_move (ai, 7, 7)); 6618 assert_true (ai_move (ai, 2, 0)); 6619 assert_true (ai_move (ai, 0, 2)); 6620 assert_true (ai_move (ai, 4, 0)); 6621 assert_true (ai_move (ai, 3, 2)); 6622 assert_true (ai_move (ai, 1, 2)); 6623 assert_true (ai_move (ai, 1, 6)); 6624 assert_true (ai_move (ai, 7, 1)); 6625 assert_true (ai_move (ai, 6, 7)); 6626 assert_true (ai_move (ai, 0, 6)); 6627 assert_true (ai_move (ai, 0, 7)); 6628 assert_true (ai_move (ai, 1, 7)); 6629 assert_true (ai_move (ai, 4, 7)); 6630 assert_true (ai_move (ai, 6, 1)); 6631 assert_true (ai_move (ai, 0, 1)); 6632 assert_true (ai_move (ai, 1, 1)); 6633 assert_true (ai_move (ai, 0, 0)); 6634 assert_true (ai_move (ai, 1, 0)); 6635 assert_true (ai_move (ai, 6, 0)); 6636 assert_true (ai_move (ai, 7, 0)); 6637 } 6638 6639 private static inline void test_complete_reversi_game_70 () 6640 { 6641 /* 0 1 2 3 4 5 6 7 */ 6642 string [] board = {/* 0 */ " . . . . . . . .", 6643 /* 1 */ " . . . . . . . .", 6644 /* 2 */ " . . . D . . . .", 6645 /* 3 */ " . . . D D . . .", 6646 /* 4 */ " . . . D L . . .", 6647 /* 5 */ " . . . . L L . .", 6648 /* 6 */ " . . . . L . . .", 6649 /* 7 */ " . . . . . . . ."}; 6650 6651 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 6652 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 6653 6654 assert_true (ai_move (ai, 5, 6)); 6655 assert_true (ai_move (ai, 3, 5)); 6656 assert_true (ai_move (ai, 5, 4)); 6657 assert_true (ai_move (ai, 6, 4)); 6658 assert_true (ai_move (ai, 4, 7)); 6659 assert_true (ai_move (ai, 3, 7)); 6660 assert_true (ai_move (ai, 2, 7)); 6661 assert_true (ai_move (ai, 5, 7)); 6662 assert_true (ai_move (ai, 6, 7)); 6663 assert_true (ai_move (ai, 5, 3)); 6664 assert_true (ai_move (ai, 6, 5)); 6665 assert_true (ai_move (ai, 7, 5)); 6666 assert_true (ai_move (ai, 5, 2)); 6667 assert_true (ai_move (ai, 6, 3)); 6668 assert_true (ai_move (ai, 2, 6)); 6669 assert_true (ai_move (ai, 4, 1)); 6670 assert_true (ai_move (ai, 3, 6)); 6671 assert_true (ai_move (ai, 2, 1)); 6672 assert_true (ai_move (ai, 7, 2)); 6673 assert_true (ai_move (ai, 4, 2)); 6674 assert_true (ai_move (ai, 6, 2)); 6675 assert_true (ai_move (ai, 7, 3)); 6676 assert_true (ai_move (ai, 2, 2)); 6677 assert_true (ai_move (ai, 3, 1)); 6678 assert_true (ai_move (ai, 5, 1)); 6679 assert_true (ai_move (ai, 1, 3)); 6680 assert_true (ai_move (ai, 1, 2)); 6681 assert_true (ai_move (ai, 5, 0)); 6682 assert_true (ai_move (ai, 0, 4)); 6683 assert_true (ai_move (ai, 0, 2)); 6684 assert_true (ai_move (ai, 3, 0)); 6685 assert_true (ai_move (ai, 4, 0)); 6686 assert_true (ai_move (ai, 6, 0)); 6687 assert_true (ai_move (ai, 2, 3)); 6688 assert_true (ai_move (ai, 2, 0)); 6689 assert_true (ai_move (ai, 0, 3)); 6690 assert_true (ai_move (ai, 1, 0)); 6691 assert_true (ai_move (ai, 0, 5)); 6692 assert_true (ai_move (ai, 1, 4)); 6693 assert_true (ai_move (ai, 1, 5)); 6694 assert_true (ai_move (ai, 6, 1)); 6695 assert_true (ai_move (ai, 2, 5)); 6696 assert_true (ai_move (ai, 2, 4)); 6697 assert_true (ai_move (ai, 7, 1)); 6698 assert_true (ai_move (ai, 1, 1)); 6699 assert_true (ai_move (ai, 0, 0)); 6700 assert_true (ai_move (ai, 7, 0)); 6701 assert_true (ai_move (ai, 1, 7)); 6702 assert_true (ai_move (ai, 0, 7)); 6703 assert_true (ai_move (ai, 6, 6)); 6704 assert_true (ai_move (ai, 7, 4)); 6705 assert_true (game.pass ()); 6706 assert_true (ai_move (ai, 0, 6)); 6707 assert_true (ai_move (ai, 1, 6)); 6708 assert_true (ai_move (ai, 0, 1)); 6709 assert_true (game.pass ()); 6710 assert_true (ai_move (ai, 7, 7)); 6711 assert_true (ai_move (ai, 7, 6)); 6712 } 6713 6714 private static inline void test_complete_reversi_game_71 () 6715 { 6716 /* 0 1 2 3 4 5 6 7 */ 6717 string [] board = {/* 0 */ " . . . . . . . .", 6718 /* 1 */ " . . . . . . . .", 6719 /* 2 */ " . . . D L . . .", 6720 /* 3 */ " . . . D L . . .", 6721 /* 4 */ " . . . D L . . .", 6722 /* 5 */ " . . . . D L . .", 6723 /* 6 */ " . . . . . . . .", 6724 /* 7 */ " . . . . . . . ."}; 6725 6726 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 6727 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 6728 6729 assert_true (ai_move (ai, 6, 5)); 6730 assert_true (ai_move (ai, 2, 1)); 6731 assert_true (ai_move (ai, 3, 1)); 6732 assert_true (ai_move (ai, 2, 0)); 6733 assert_true (ai_move (ai, 5, 1)); 6734 assert_true (ai_move (ai, 5, 3)); 6735 assert_true (ai_move (ai, 5, 2)); 6736 assert_true (ai_move (ai, 4, 6)); 6737 assert_true (ai_move (ai, 6, 4)); 6738 assert_true (ai_move (ai, 6, 2)); 6739 assert_true (ai_move (ai, 6, 3)); 6740 assert_true (ai_move (ai, 4, 1)); 6741 assert_true (ai_move (ai, 5, 0)); 6742 assert_true (ai_move (ai, 4, 0)); 6743 assert_true (ai_move (ai, 5, 6)); 6744 assert_true (ai_move (ai, 5, 4)); 6745 assert_true (ai_move (ai, 7, 2)); 6746 assert_true (ai_move (ai, 5, 7)); 6747 assert_true (ai_move (ai, 3, 7)); 6748 assert_true (ai_move (ai, 7, 5)); 6749 assert_true (ai_move (ai, 3, 5)); 6750 assert_true (ai_move (ai, 7, 4)); 6751 assert_true (ai_move (ai, 7, 3)); 6752 assert_true (ai_move (ai, 7, 1)); 6753 assert_true (ai_move (ai, 3, 0)); 6754 assert_true (ai_move (ai, 6, 0)); 6755 assert_true (ai_move (ai, 6, 6)); 6756 assert_true (ai_move (ai, 7, 6)); 6757 assert_true (ai_move (ai, 1, 0)); 6758 assert_true (ai_move (ai, 0, 0)); 6759 assert_true (ai_move (ai, 6, 1)); 6760 assert_true (ai_move (ai, 1, 2)); 6761 assert_true (ai_move (ai, 1, 1)); 6762 assert_true (ai_move (ai, 7, 0)); 6763 assert_true (ai_move (ai, 0, 3)); 6764 assert_true (ai_move (ai, 2, 5)); 6765 assert_true (ai_move (ai, 2, 6)); 6766 assert_true (ai_move (ai, 4, 7)); 6767 assert_true (ai_move (ai, 1, 5)); 6768 assert_true (ai_move (ai, 2, 7)); 6769 assert_true (ai_move (ai, 3, 6)); 6770 assert_true (ai_move (ai, 0, 5)); 6771 assert_true (ai_move (ai, 1, 4)); 6772 assert_true (ai_move (ai, 1, 7)); 6773 assert_true (ai_move (ai, 2, 3)); 6774 assert_true (ai_move (ai, 0, 2)); 6775 assert_true (ai_move (ai, 2, 4)); 6776 assert_true (ai_move (ai, 1, 6)); 6777 assert_true (ai_move (ai, 0, 1)); 6778 assert_true (ai_move (ai, 0, 4)); 6779 assert_true (ai_move (ai, 1, 3)); 6780 assert_true (ai_move (ai, 2, 2)); 6781 assert_true (ai_move (ai, 0, 6)); 6782 assert_true (ai_move (ai, 7, 7)); 6783 assert_true (ai_move (ai, 6, 7)); 6784 assert_true (ai_move (ai, 0, 7)); 6785 } 6786 6787 private static inline void test_complete_reversi_game_72 () 6788 { 6789 /* 0 1 2 3 4 5 6 7 */ 6790 string [] board = {/* 0 */ " . . . . . . . .", 6791 /* 1 */ " . . . . . . . .", 6792 /* 2 */ " . . . D . . . .", 6793 /* 3 */ " . . . D D . . .", 6794 /* 4 */ " . . . D L . . .", 6795 /* 5 */ " . . . L L L . .", 6796 /* 6 */ " . . . . . . . .", 6797 /* 7 */ " . . . . . . . ."}; 6798 6799 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 6800 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 6801 6802 assert_true (ai_move (ai, 5, 6)); 6803 assert_true (ai_move (ai, 4, 6)); 6804 assert_true (ai_move (ai, 5, 4)); 6805 assert_true (ai_move (ai, 6, 4)); 6806 assert_true (ai_move (ai, 4, 7)); 6807 assert_true (ai_move (ai, 3, 7)); 6808 assert_true (ai_move (ai, 2, 7)); 6809 assert_true (ai_move (ai, 5, 7)); 6810 assert_true (ai_move (ai, 6, 7)); 6811 assert_true (ai_move (ai, 5, 3)); 6812 assert_true (ai_move (ai, 6, 5)); 6813 assert_true (ai_move (ai, 7, 5)); 6814 assert_true (ai_move (ai, 5, 2)); 6815 assert_true (ai_move (ai, 6, 3)); 6816 assert_true (ai_move (ai, 2, 6)); 6817 assert_true (ai_move (ai, 4, 1)); 6818 assert_true (ai_move (ai, 3, 6)); 6819 assert_true (ai_move (ai, 2, 1)); 6820 assert_true (ai_move (ai, 7, 2)); 6821 assert_true (ai_move (ai, 4, 2)); 6822 assert_true (ai_move (ai, 6, 2)); 6823 assert_true (ai_move (ai, 7, 3)); 6824 assert_true (ai_move (ai, 2, 2)); 6825 assert_true (ai_move (ai, 3, 1)); 6826 assert_true (ai_move (ai, 5, 1)); 6827 assert_true (ai_move (ai, 1, 3)); 6828 assert_true (ai_move (ai, 1, 2)); 6829 assert_true (ai_move (ai, 5, 0)); 6830 assert_true (ai_move (ai, 0, 4)); 6831 assert_true (ai_move (ai, 0, 2)); 6832 assert_true (ai_move (ai, 3, 0)); 6833 assert_true (ai_move (ai, 4, 0)); 6834 assert_true (ai_move (ai, 6, 0)); 6835 assert_true (ai_move (ai, 2, 3)); 6836 assert_true (ai_move (ai, 2, 0)); 6837 assert_true (ai_move (ai, 0, 3)); 6838 assert_true (ai_move (ai, 1, 0)); 6839 assert_true (ai_move (ai, 0, 5)); 6840 assert_true (ai_move (ai, 1, 4)); 6841 assert_true (ai_move (ai, 1, 5)); 6842 assert_true (ai_move (ai, 6, 1)); 6843 assert_true (ai_move (ai, 2, 5)); 6844 assert_true (ai_move (ai, 2, 4)); 6845 assert_true (ai_move (ai, 7, 1)); 6846 assert_true (ai_move (ai, 1, 1)); 6847 assert_true (ai_move (ai, 0, 0)); 6848 assert_true (ai_move (ai, 7, 0)); 6849 assert_true (ai_move (ai, 1, 7)); 6850 assert_true (ai_move (ai, 0, 7)); 6851 assert_true (ai_move (ai, 6, 6)); 6852 assert_true (ai_move (ai, 7, 4)); 6853 assert_true (game.pass ()); 6854 assert_true (ai_move (ai, 0, 6)); 6855 assert_true (ai_move (ai, 1, 6)); 6856 assert_true (ai_move (ai, 0, 1)); 6857 assert_true (game.pass ()); 6858 assert_true (ai_move (ai, 7, 7)); 6859 assert_true (ai_move (ai, 7, 6)); 6860 } 6861 6862 private static inline void test_complete_reversi_game_73 () 6863 { 6864 /* 0 1 2 3 4 5 6 7 */ 6865 string [] board = {/* 0 */ " . . . . . . . .", 6866 /* 1 */ " . . . . . . . .", 6867 /* 2 */ " . . . D . . . .", 6868 /* 3 */ " . . . D D . . .", 6869 /* 4 */ " . . L L L . . .", 6870 /* 5 */ " . . . . D L . .", 6871 /* 6 */ " . . . . . . . .", 6872 /* 7 */ " . . . . . . . ."}; 6873 6874 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 6875 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 6876 6877 assert_true (ai_move (ai, 6, 5)); 6878 assert_true (ai_move (ai, 4, 6)); 6879 assert_true (ai_move (ai, 1, 5)); 6880 assert_true (ai_move (ai, 6, 4)); 6881 assert_true (ai_move (ai, 2, 5)); 6882 assert_true (ai_move (ai, 7, 5)); 6883 assert_true (ai_move (ai, 5, 6)); 6884 assert_true (ai_move (ai, 4, 7)); 6885 assert_true (ai_move (ai, 5, 4)); 6886 assert_true (ai_move (ai, 5, 3)); 6887 assert_true (ai_move (ai, 6, 2)); 6888 assert_true (ai_move (ai, 3, 5)); 6889 assert_true (ai_move (ai, 2, 6)); 6890 assert_true (ai_move (ai, 0, 5)); 6891 assert_true (ai_move (ai, 3, 6)); 6892 assert_true (ai_move (ai, 1, 3)); 6893 assert_true (ai_move (ai, 6, 3)); 6894 assert_true (ai_move (ai, 2, 7)); 6895 assert_true (ai_move (ai, 1, 4)); 6896 assert_true (ai_move (ai, 5, 2)); 6897 assert_true (ai_move (ai, 4, 2)); 6898 assert_true (ai_move (ai, 3, 7)); 6899 assert_true (ai_move (ai, 5, 7)); 6900 assert_true (ai_move (ai, 6, 7)); 6901 assert_true (ai_move (ai, 7, 3)); 6902 assert_true (ai_move (ai, 5, 1)); 6903 assert_true (ai_move (ai, 3, 1)); 6904 assert_true (ai_move (ai, 4, 1)); 6905 assert_true (ai_move (ai, 4, 0)); 6906 assert_true (ai_move (ai, 2, 2)); 6907 assert_true (ai_move (ai, 2, 3)); 6908 assert_true (ai_move (ai, 2, 0)); 6909 assert_true (ai_move (ai, 5, 0)); 6910 assert_true (ai_move (ai, 1, 2)); 6911 assert_true (ai_move (ai, 2, 1)); 6912 assert_true (ai_move (ai, 0, 4)); 6913 assert_true (ai_move (ai, 0, 2)); 6914 assert_true (ai_move (ai, 1, 1)); 6915 assert_true (ai_move (ai, 6, 1)); 6916 assert_true (ai_move (ai, 7, 4)); 6917 assert_true (ai_move (ai, 7, 6)); 6918 assert_true (ai_move (ai, 6, 6)); 6919 assert_true (ai_move (ai, 0, 3)); 6920 assert_true (ai_move (ai, 0, 1)); 6921 assert_true (ai_move (ai, 1, 7)); 6922 assert_true (ai_move (ai, 0, 7)); 6923 assert_true (ai_move (ai, 0, 6)); 6924 assert_true (ai_move (ai, 7, 2)); 6925 assert_true (ai_move (ai, 7, 1)); 6926 assert_true (ai_move (ai, 1, 6)); 6927 assert_true (ai_move (ai, 0, 0)); 6928 assert_true (ai_move (ai, 3, 0)); 6929 assert_true (ai_move (ai, 1, 0)); 6930 assert_true (ai_move (ai, 7, 0)); 6931 assert_true (ai_move (ai, 7, 7)); 6932 assert_true (ai_move (ai, 6, 0)); 6933 } 6934 6935 private static inline void test_complete_reversi_game_74 () 6936 { 6937 /* 0 1 2 3 4 5 6 7 */ 6938 string [] board = {/* 0 */ " . . . . . . . .", 6939 /* 1 */ " . . . . . . . .", 6940 /* 2 */ " . . L D . . . .", 6941 /* 3 */ " . . . L D . . .", 6942 /* 4 */ " . . . D L . . .", 6943 /* 5 */ " . . . . D L . .", 6944 /* 6 */ " . . . . . . . .", 6945 /* 7 */ " . . . . . . . ."}; 6946 6947 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 6948 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 6949 6950 assert_true (ai_move (ai, 6, 5)); 6951 assert_true (ai_move (ai, 3, 1)); 6952 assert_true (ai_move (ai, 5, 4)); 6953 assert_true (ai_move (ai, 5, 3)); 6954 assert_true (ai_move (ai, 6, 2)); 6955 assert_true (ai_move (ai, 6, 3)); 6956 assert_true (ai_move (ai, 7, 2)); 6957 assert_true (ai_move (ai, 5, 6)); 6958 assert_true (ai_move (ai, 6, 4)); 6959 assert_true (ai_move (ai, 7, 4)); 6960 assert_true (ai_move (ai, 4, 6)); 6961 assert_true (ai_move (ai, 5, 2)); 6962 assert_true (ai_move (ai, 7, 5)); 6963 assert_true (ai_move (ai, 7, 6)); 6964 assert_true (ai_move (ai, 5, 1)); 6965 assert_true (ai_move (ai, 5, 0)); 6966 assert_true (ai_move (ai, 4, 2)); 6967 assert_true (ai_move (ai, 4, 1)); 6968 assert_true (ai_move (ai, 5, 7)); 6969 assert_true (ai_move (ai, 3, 6)); 6970 assert_true (ai_move (ai, 3, 5)); 6971 assert_true (ai_move (ai, 2, 5)); 6972 assert_true (ai_move (ai, 1, 2)); 6973 assert_true (ai_move (ai, 1, 3)); 6974 assert_true (ai_move (ai, 2, 7)); 6975 assert_true (ai_move (ai, 2, 3)); 6976 assert_true (ai_move (ai, 2, 1)); 6977 assert_true (ai_move (ai, 2, 0)); 6978 assert_true (ai_move (ai, 2, 6)); 6979 assert_true (ai_move (ai, 0, 2)); 6980 assert_true (ai_move (ai, 1, 5)); 6981 assert_true (ai_move (ai, 0, 5)); 6982 assert_true (ai_move (ai, 2, 4)); 6983 assert_true (ai_move (ai, 1, 4)); 6984 assert_true (ai_move (ai, 0, 3)); 6985 assert_true (ai_move (ai, 0, 4)); 6986 assert_true (ai_move (ai, 3, 0)); 6987 assert_true (ai_move (ai, 4, 0)); 6988 assert_true (ai_move (ai, 7, 3)); 6989 assert_true (ai_move (ai, 7, 1)); 6990 assert_true (ai_move (ai, 1, 1)); 6991 assert_true (ai_move (ai, 6, 1)); 6992 assert_true (ai_move (ai, 7, 0)); 6993 assert_true (ai_move (ai, 6, 0)); 6994 assert_true (ai_move (ai, 7, 7)); 6995 assert_true (ai_move (ai, 1, 6)); 6996 assert_true (ai_move (ai, 1, 0)); 6997 assert_true (ai_move (ai, 1, 7)); 6998 assert_true (ai_move (ai, 6, 6)); 6999 assert_true (ai_move (ai, 3, 7)); 7000 assert_true (ai_move (ai, 0, 7)); 7001 assert_true (ai_move (ai, 4, 7)); 7002 assert_true (ai_move (ai, 0, 6)); 7003 assert_true (ai_move (ai, 6, 7)); 7004 assert_true (ai_move (ai, 0, 1)); 7005 assert_true (ai_move (ai, 0, 0)); 7006 } 7007 7008 private static inline void test_complete_reversi_game_75 () 7009 { 7010 /* 0 1 2 3 4 5 6 7 */ 7011 string [] board = {/* 0 */ " . . . . . . . .", 7012 /* 1 */ " . . . . . . . .", 7013 /* 2 */ " . . . . . . . .", 7014 /* 3 */ " . . D D D . . .", 7015 /* 4 */ " . . . D L . . .", 7016 /* 5 */ " . . . . L L . .", 7017 /* 6 */ " . . . . L . . .", 7018 /* 7 */ " . . . . . . . ."}; 7019 7020 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 7021 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 7022 7023 assert_true (ai_move (ai, 5, 6)); 7024 assert_true (ai_move (ai, 3, 5)); 7025 assert_true (ai_move (ai, 5, 4)); 7026 assert_true (ai_move (ai, 6, 4)); 7027 assert_true (ai_move (ai, 4, 7)); 7028 assert_true (ai_move (ai, 3, 7)); 7029 assert_true (ai_move (ai, 2, 7)); 7030 assert_true (ai_move (ai, 5, 7)); 7031 assert_true (ai_move (ai, 6, 7)); 7032 assert_true (ai_move (ai, 5, 3)); 7033 assert_true (ai_move (ai, 6, 5)); 7034 assert_true (ai_move (ai, 7, 5)); 7035 assert_true (ai_move (ai, 5, 2)); 7036 assert_true (ai_move (ai, 6, 3)); 7037 assert_true (ai_move (ai, 2, 4)); 7038 assert_true (ai_move (ai, 6, 2)); 7039 assert_true (ai_move (ai, 7, 2)); 7040 assert_true (ai_move (ai, 5, 1)); 7041 assert_true (ai_move (ai, 3, 6)); 7042 assert_true (ai_move (ai, 7, 4)); 7043 assert_true (ai_move (ai, 4, 0)); 7044 assert_true (ai_move (ai, 3, 2)); 7045 assert_true (ai_move (ai, 4, 1)); 7046 assert_true (ai_move (ai, 2, 1)); 7047 assert_true (ai_move (ai, 3, 1)); 7048 assert_true (ai_move (ai, 5, 0)); 7049 assert_true (ai_move (ai, 7, 3)); 7050 assert_true (ai_move (ai, 7, 1)); 7051 assert_true (ai_move (ai, 4, 2)); 7052 assert_true (ai_move (ai, 3, 0)); 7053 assert_true (ai_move (ai, 1, 0)); 7054 assert_true (ai_move (ai, 1, 2)); 7055 assert_true (ai_move (ai, 0, 1)); 7056 assert_true (ai_move (ai, 0, 3)); 7057 assert_true (ai_move (ai, 6, 6)); 7058 assert_true (ai_move (ai, 7, 6)); 7059 assert_true (ai_move (ai, 6, 1)); 7060 assert_true (ai_move (ai, 7, 7)); 7061 assert_true (ai_move (ai, 1, 1)); 7062 assert_true (ai_move (ai, 1, 7)); 7063 assert_true (ai_move (ai, 1, 3)); 7064 assert_true (ai_move (ai, 2, 2)); 7065 assert_true (ai_move (ai, 2, 0)); 7066 assert_true (ai_move (ai, 0, 0)); 7067 assert_true (game.pass ()); 7068 assert_true (ai_move (ai, 0, 2)); 7069 assert_true (ai_move (ai, 0, 4)); 7070 assert_true (ai_move (ai, 0, 5)); 7071 assert_true (ai_move (ai, 1, 4)); 7072 assert_true (ai_move (ai, 2, 6)); 7073 assert_true (ai_move (ai, 2, 5)); 7074 assert_true (ai_move (ai, 1, 5)); 7075 assert_true (ai_move (ai, 1, 6)); 7076 assert_true (ai_move (ai, 7, 0)); 7077 assert_true (ai_move (ai, 6, 0)); 7078 assert_true (ai_move (ai, 0, 6)); 7079 assert_true (ai_move (ai, 0, 7)); 7080 } 7081 7082 private static inline void test_complete_reversi_game_76 () 7083 { 7084 /* 0 1 2 3 4 5 6 7 */ 7085 string [] board = {/* 0 */ " . . . . . . . .", 7086 /* 1 */ " . . . . . . . .", 7087 /* 2 */ " . . . . L . . .", 7088 /* 3 */ " . . D D L . . .", 7089 /* 4 */ " . . . D L . . .", 7090 /* 5 */ " . . . . D L . .", 7091 /* 6 */ " . . . . . . . .", 7092 /* 7 */ " . . . . . . . ."}; 7093 7094 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 7095 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 7096 7097 assert_true (ai_move (ai, 6, 5)); 7098 assert_true (ai_move (ai, 2, 5)); 7099 assert_true (ai_move (ai, 5, 1)); 7100 assert_true (ai_move (ai, 4, 1)); 7101 assert_true (ai_move (ai, 3, 1)); 7102 assert_true (ai_move (ai, 1, 2)); 7103 assert_true (ai_move (ai, 1, 3)); 7104 assert_true (ai_move (ai, 4, 6)); 7105 assert_true (ai_move (ai, 3, 7)); 7106 assert_true (ai_move (ai, 2, 0)); 7107 assert_true (ai_move (ai, 5, 6)); 7108 assert_true (ai_move (ai, 4, 0)); 7109 assert_true (ai_move (ai, 5, 4)); 7110 assert_true (ai_move (ai, 6, 2)); 7111 assert_true (ai_move (ai, 5, 3)); 7112 assert_true (ai_move (ai, 1, 4)); 7113 assert_true (ai_move (ai, 0, 5)); 7114 assert_true (ai_move (ai, 0, 3)); 7115 assert_true (ai_move (ai, 6, 0)); 7116 assert_true (ai_move (ai, 6, 1)); 7117 assert_true (ai_move (ai, 7, 1)); 7118 assert_true (ai_move (ai, 7, 3)); 7119 assert_true (ai_move (ai, 0, 1)); 7120 assert_true (ai_move (ai, 2, 1)); 7121 assert_true (ai_move (ai, 1, 6)); 7122 assert_true (ai_move (ai, 3, 6)); 7123 assert_true (ai_move (ai, 3, 5)); 7124 assert_true (ai_move (ai, 7, 5)); 7125 assert_true (ai_move (ai, 2, 4)); 7126 assert_true (ai_move (ai, 2, 2)); 7127 assert_true (ai_move (ai, 6, 4)); 7128 assert_true (ai_move (ai, 7, 4)); 7129 assert_true (ai_move (ai, 0, 4)); 7130 assert_true (ai_move (ai, 6, 6)); 7131 assert_true (ai_move (ai, 1, 5)); 7132 assert_true (ai_move (ai, 0, 6)); 7133 assert_true (ai_move (ai, 3, 2)); 7134 assert_true (ai_move (ai, 5, 7)); 7135 assert_true (ai_move (ai, 3, 0)); 7136 assert_true (ai_move (ai, 4, 7)); 7137 assert_true (ai_move (ai, 2, 6)); 7138 assert_true (ai_move (ai, 2, 7)); 7139 assert_true (ai_move (ai, 5, 2)); 7140 assert_true (ai_move (ai, 5, 0)); 7141 assert_true (ai_move (ai, 7, 0)); 7142 assert_true (ai_move (ai, 6, 3)); 7143 assert_true (ai_move (ai, 7, 2)); 7144 assert_true (game.pass ()); 7145 assert_true (ai_move (ai, 7, 6)); 7146 assert_true (game.pass ()); 7147 assert_true (ai_move (ai, 7, 7)); 7148 assert_true (ai_move (ai, 6, 7)); 7149 assert_true (ai_move (ai, 1, 7)); 7150 assert_true (game.pass ()); 7151 assert_true (ai_move (ai, 0, 7)); 7152 assert_true (game.pass ()); 7153 assert_true (ai_move (ai, 0, 2)); 7154 assert_true (ai_move (ai, 1, 1)); 7155 assert_true (ai_move (ai, 1, 0)); 7156 assert_true (ai_move (ai, 0, 0)); 7157 } 7158 7159 private static inline void test_complete_reversi_game_77 () 7160 { 7161 /* 0 1 2 3 4 5 6 7 */ 7162 string [] board = {/* 0 */ " . . . . . . . .", 7163 /* 1 */ " . . . . . . . .", 7164 /* 2 */ " . . . . . . . .", 7165 /* 3 */ " . . D D D . . .", 7166 /* 4 */ " . . . D L . . .", 7167 /* 5 */ " . . . L L L . .", 7168 /* 6 */ " . . . . . . . .", 7169 /* 7 */ " . . . . . . . ."}; 7170 7171 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 7172 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 7173 7174 assert_true (ai_move (ai, 5, 6)); 7175 assert_true (ai_move (ai, 4, 6)); 7176 assert_true (ai_move (ai, 5, 4)); 7177 assert_true (ai_move (ai, 6, 4)); 7178 assert_true (ai_move (ai, 4, 7)); 7179 assert_true (ai_move (ai, 3, 7)); 7180 assert_true (ai_move (ai, 2, 7)); 7181 assert_true (ai_move (ai, 5, 7)); 7182 assert_true (ai_move (ai, 6, 7)); 7183 assert_true (ai_move (ai, 5, 3)); 7184 assert_true (ai_move (ai, 6, 5)); 7185 assert_true (ai_move (ai, 7, 5)); 7186 assert_true (ai_move (ai, 5, 2)); 7187 assert_true (ai_move (ai, 6, 3)); 7188 assert_true (ai_move (ai, 2, 4)); 7189 assert_true (ai_move (ai, 6, 2)); 7190 assert_true (ai_move (ai, 7, 2)); 7191 assert_true (ai_move (ai, 5, 1)); 7192 assert_true (ai_move (ai, 3, 6)); 7193 assert_true (ai_move (ai, 7, 4)); 7194 assert_true (ai_move (ai, 4, 0)); 7195 assert_true (ai_move (ai, 3, 2)); 7196 assert_true (ai_move (ai, 4, 1)); 7197 assert_true (ai_move (ai, 2, 1)); 7198 assert_true (ai_move (ai, 3, 1)); 7199 assert_true (ai_move (ai, 5, 0)); 7200 assert_true (ai_move (ai, 7, 3)); 7201 assert_true (ai_move (ai, 7, 1)); 7202 assert_true (ai_move (ai, 4, 2)); 7203 assert_true (ai_move (ai, 3, 0)); 7204 assert_true (ai_move (ai, 1, 0)); 7205 assert_true (ai_move (ai, 1, 2)); 7206 assert_true (ai_move (ai, 0, 1)); 7207 assert_true (ai_move (ai, 0, 3)); 7208 assert_true (ai_move (ai, 6, 6)); 7209 assert_true (ai_move (ai, 7, 6)); 7210 assert_true (ai_move (ai, 6, 1)); 7211 assert_true (ai_move (ai, 7, 7)); 7212 assert_true (ai_move (ai, 1, 1)); 7213 assert_true (ai_move (ai, 1, 7)); 7214 assert_true (ai_move (ai, 1, 3)); 7215 assert_true (ai_move (ai, 2, 2)); 7216 assert_true (ai_move (ai, 2, 0)); 7217 assert_true (ai_move (ai, 0, 0)); 7218 assert_true (game.pass ()); 7219 assert_true (ai_move (ai, 0, 2)); 7220 assert_true (ai_move (ai, 0, 4)); 7221 assert_true (ai_move (ai, 0, 5)); 7222 assert_true (ai_move (ai, 1, 4)); 7223 assert_true (ai_move (ai, 2, 6)); 7224 assert_true (ai_move (ai, 2, 5)); 7225 assert_true (ai_move (ai, 1, 5)); 7226 assert_true (ai_move (ai, 1, 6)); 7227 assert_true (ai_move (ai, 7, 0)); 7228 assert_true (ai_move (ai, 6, 0)); 7229 assert_true (ai_move (ai, 0, 6)); 7230 assert_true (ai_move (ai, 0, 7)); 7231 } 7232 7233 private static inline void test_complete_reversi_game_78 () 7234 { 7235 /* 0 1 2 3 4 5 6 7 */ 7236 string [] board = {/* 0 */ " . . . . . . . .", 7237 /* 1 */ " . . . . . . . .", 7238 /* 2 */ " . . . . . . . .", 7239 /* 3 */ " . . D D D . . .", 7240 /* 4 */ " . . L L L . . .", 7241 /* 5 */ " . . . . D L . .", 7242 /* 6 */ " . . . . . . . .", 7243 /* 7 */ " . . . . . . . ."}; 7244 7245 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 7246 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 7247 7248 assert_true (ai_move (ai, 6, 5)); 7249 assert_true (ai_move (ai, 1, 2)); 7250 assert_true (ai_move (ai, 1, 3)); 7251 assert_true (ai_move (ai, 4, 6)); 7252 assert_true (ai_move (ai, 1, 5)); 7253 assert_true (ai_move (ai, 6, 4)); 7254 assert_true (ai_move (ai, 2, 5)); 7255 assert_true (ai_move (ai, 7, 5)); 7256 assert_true (ai_move (ai, 5, 6)); 7257 assert_true (ai_move (ai, 4, 7)); 7258 assert_true (ai_move (ai, 5, 4)); 7259 assert_true (ai_move (ai, 5, 3)); 7260 assert_true (ai_move (ai, 6, 2)); 7261 assert_true (ai_move (ai, 3, 6)); 7262 assert_true (ai_move (ai, 5, 7)); 7263 assert_true (ai_move (ai, 6, 3)); 7264 assert_true (ai_move (ai, 3, 5)); 7265 assert_true (ai_move (ai, 0, 5)); 7266 assert_true (ai_move (ai, 3, 7)); 7267 assert_true (ai_move (ai, 2, 7)); 7268 assert_true (ai_move (ai, 1, 7)); 7269 assert_true (ai_move (ai, 2, 2)); 7270 assert_true (ai_move (ai, 2, 6)); 7271 assert_true (ai_move (ai, 1, 4)); 7272 assert_true (ai_move (ai, 2, 1)); 7273 assert_true (ai_move (ai, 3, 1)); 7274 assert_true (ai_move (ai, 7, 2)); 7275 assert_true (ai_move (ai, 5, 2)); 7276 assert_true (ai_move (ai, 5, 1)); 7277 assert_true (ai_move (ai, 3, 2)); 7278 assert_true (ai_move (ai, 7, 3)); 7279 assert_true (ai_move (ai, 4, 2)); 7280 assert_true (ai_move (ai, 7, 4)); 7281 assert_true (ai_move (ai, 7, 1)); 7282 assert_true (ai_move (ai, 2, 0)); 7283 assert_true (ai_move (ai, 4, 1)); 7284 assert_true (ai_move (ai, 4, 0)); 7285 assert_true (ai_move (ai, 7, 6)); 7286 assert_true (ai_move (ai, 0, 2)); 7287 assert_true (ai_move (ai, 3, 0)); 7288 assert_true (ai_move (ai, 0, 3)); 7289 assert_true (ai_move (ai, 5, 0)); 7290 assert_true (ai_move (ai, 6, 0)); 7291 assert_true (ai_move (ai, 0, 4)); 7292 assert_true (ai_move (ai, 0, 6)); 7293 assert_true (ai_move (ai, 1, 6)); 7294 assert_true (ai_move (ai, 1, 1)); 7295 assert_true (ai_move (ai, 6, 1)); 7296 assert_true (ai_move (ai, 6, 6)); 7297 assert_true (ai_move (ai, 7, 7)); 7298 assert_true (ai_move (ai, 6, 7)); 7299 assert_true (ai_move (ai, 0, 7)); 7300 assert_true (game.pass ()); 7301 assert_true (ai_move (ai, 0, 0)); 7302 assert_true (ai_move (ai, 0, 1)); 7303 assert_true (ai_move (ai, 1, 0)); 7304 assert_true (game.pass ()); 7305 assert_true (ai_move (ai, 7, 0)); 7306 } 7307 7308 private static inline void test_complete_reversi_game_79 () 7309 { 7310 /* 0 1 2 3 4 5 6 7 */ 7311 string [] board = {/* 0 */ " . . . . . . . .", 7312 /* 1 */ " . . . . . . . .", 7313 /* 2 */ " . . L . . . . .", 7314 /* 3 */ " . . D L D . . .", 7315 /* 4 */ " . . . D L . . .", 7316 /* 5 */ " . . . . D L . .", 7317 /* 6 */ " . . . . . . . .", 7318 /* 7 */ " . . . . . . . ."}; 7319 7320 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 7321 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 7322 7323 assert_true (ai_move (ai, 6, 5)); 7324 assert_true (ai_move (ai, 1, 3)); 7325 assert_true (ai_move (ai, 5, 4)); 7326 assert_true (ai_move (ai, 3, 5)); 7327 assert_true (ai_move (ai, 2, 5)); 7328 assert_true (ai_move (ai, 5, 6)); 7329 assert_true (ai_move (ai, 3, 6)); 7330 assert_true (ai_move (ai, 7, 4)); 7331 assert_true (ai_move (ai, 7, 5)); 7332 assert_true (ai_move (ai, 7, 6)); 7333 assert_true (ai_move (ai, 4, 7)); 7334 assert_true (ai_move (ai, 1, 5)); 7335 assert_true (ai_move (ai, 4, 6)); 7336 assert_true (ai_move (ai, 5, 7)); 7337 assert_true (ai_move (ai, 1, 4)); 7338 assert_true (ai_move (ai, 3, 7)); 7339 assert_true (ai_move (ai, 0, 5)); 7340 assert_true (ai_move (ai, 6, 3)); 7341 assert_true (ai_move (ai, 6, 4)); 7342 assert_true (ai_move (ai, 7, 3)); 7343 assert_true (ai_move (ai, 2, 7)); 7344 assert_true (ai_move (ai, 1, 7)); 7345 assert_true (ai_move (ai, 2, 6)); 7346 assert_true (ai_move (ai, 2, 4)); 7347 assert_true (ai_move (ai, 4, 2)); 7348 assert_true (ai_move (ai, 0, 4)); 7349 assert_true (ai_move (ai, 1, 6)); 7350 assert_true (ai_move (ai, 5, 1)); 7351 assert_true (ai_move (ai, 4, 1)); 7352 assert_true (ai_move (ai, 3, 1)); 7353 assert_true (ai_move (ai, 2, 0)); 7354 assert_true (ai_move (ai, 2, 1)); 7355 assert_true (ai_move (ai, 4, 0)); 7356 assert_true (ai_move (ai, 3, 2)); 7357 assert_true (ai_move (ai, 5, 2)); 7358 assert_true (ai_move (ai, 6, 2)); 7359 assert_true (ai_move (ai, 3, 0)); 7360 assert_true (ai_move (ai, 5, 3)); 7361 assert_true (ai_move (ai, 7, 2)); 7362 assert_true (ai_move (ai, 7, 1)); 7363 assert_true (ai_move (ai, 5, 0)); 7364 assert_true (ai_move (ai, 0, 7)); 7365 assert_true (ai_move (ai, 0, 3)); 7366 assert_true (ai_move (ai, 1, 2)); 7367 assert_true (ai_move (ai, 1, 0)); 7368 assert_true (ai_move (ai, 6, 1)); 7369 assert_true (ai_move (ai, 0, 2)); 7370 assert_true (ai_move (ai, 6, 0)); 7371 assert_true (ai_move (ai, 7, 0)); 7372 assert_true (ai_move (ai, 1, 1)); 7373 assert_true (ai_move (ai, 7, 7)); 7374 assert_true (game.pass ()); 7375 assert_true (ai_move (ai, 6, 7)); 7376 assert_true (ai_move (ai, 6, 6)); 7377 assert_true (ai_move (ai, 0, 0)); 7378 assert_true (ai_move (ai, 0, 1)); 7379 assert_true (ai_move (ai, 0, 6)); 7380 } 7381 7382 private static inline void test_complete_reversi_game_80 () 7383 { 7384 /* 0 1 2 3 4 5 6 7 */ 7385 string [] board = {/* 0 */ " . . . . . . . .", 7386 /* 1 */ " . . . . . . . .", 7387 /* 2 */ " . . . . . . D .", 7388 /* 3 */ " . . . L L L L .", 7389 /* 4 */ " . . . D D . . .", 7390 /* 5 */ " . . . . D . . .", 7391 /* 6 */ " . . . . . . . .", 7392 /* 7 */ " . . . . . . . ."}; 7393 7394 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 7395 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 7396 7397 assert_true (ai_move (ai, 2, 2)); 7398 assert_true (ai_move (ai, 2, 5)); 7399 assert_true (ai_move (ai, 2, 3)); 7400 assert_true (ai_move (ai, 3, 5)); 7401 assert_true (ai_move (ai, 1, 5)); 7402 assert_true (ai_move (ai, 4, 6)); 7403 assert_true (ai_move (ai, 5, 6)); 7404 assert_true (ai_move (ai, 2, 6)); 7405 assert_true (ai_move (ai, 3, 6)); 7406 assert_true (ai_move (ai, 0, 4)); 7407 assert_true (ai_move (ai, 0, 5)); 7408 assert_true (ai_move (ai, 0, 6)); 7409 assert_true (ai_move (ai, 5, 5)); 7410 assert_true (ai_move (ai, 2, 4)); 7411 assert_true (ai_move (ai, 1, 3)); 7412 assert_true (ai_move (ai, 6, 5)); 7413 assert_true (ai_move (ai, 2, 7)); 7414 assert_true (ai_move (ai, 1, 2)); 7415 assert_true (ai_move (ai, 5, 4)); 7416 assert_true (ai_move (ai, 2, 1)); 7417 assert_true (ai_move (ai, 3, 1)); 7418 assert_true (ai_move (ai, 0, 3)); 7419 assert_true (ai_move (ai, 5, 2)); 7420 assert_true (ai_move (ai, 4, 7)); 7421 assert_true (ai_move (ai, 5, 7)); 7422 assert_true (ai_move (ai, 3, 7)); 7423 assert_true (ai_move (ai, 2, 0)); 7424 assert_true (ai_move (ai, 1, 4)); 7425 assert_true (ai_move (ai, 7, 5)); 7426 assert_true (ai_move (ai, 6, 4)); 7427 assert_true (ai_move (ai, 6, 6)); 7428 assert_true (ai_move (ai, 7, 1)); 7429 assert_true (ai_move (ai, 0, 2)); 7430 assert_true (ai_move (ai, 0, 1)); 7431 assert_true (ai_move (ai, 7, 4)); 7432 assert_true (ai_move (ai, 3, 2)); 7433 assert_true (ai_move (ai, 4, 2)); 7434 assert_true (ai_move (ai, 4, 1)); 7435 assert_true (ai_move (ai, 7, 2)); 7436 assert_true (ai_move (ai, 6, 1)); 7437 assert_true (ai_move (ai, 5, 1)); 7438 assert_true (ai_move (ai, 5, 0)); 7439 assert_true (ai_move (ai, 3, 0)); 7440 assert_true (ai_move (ai, 4, 0)); 7441 assert_true (ai_move (ai, 1, 1)); 7442 assert_true (ai_move (ai, 7, 3)); 7443 assert_true (ai_move (ai, 7, 0)); 7444 assert_true (ai_move (ai, 6, 0)); 7445 assert_true (ai_move (ai, 1, 6)); 7446 assert_true (ai_move (ai, 0, 7)); 7447 assert_true (ai_move (ai, 1, 7)); 7448 assert_true (ai_move (ai, 0, 0)); 7449 assert_true (ai_move (ai, 1, 0)); 7450 assert_true (ai_move (ai, 7, 7)); 7451 assert_true (ai_move (ai, 7, 6)); 7452 assert_true (ai_move (ai, 6, 7)); 7453 } 7454 7455 private static inline void test_complete_reversi_game_81 () 7456 { 7457 /* 0 1 2 3 4 5 6 7 */ 7458 string [] board = {/* 0 */ " . . . . . . . .", 7459 /* 1 */ " . . . . . . . .", 7460 /* 2 */ " . . . . . . D .", 7461 /* 3 */ " . . . L L D . .", 7462 /* 4 */ " . . . D L . . .", 7463 /* 5 */ " . . . . D L . .", 7464 /* 6 */ " . . . . . . . .", 7465 /* 7 */ " . . . . . . . ."}; 7466 7467 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 7468 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 7469 7470 assert_true (ai_move (ai, 6, 5)); 7471 assert_true (ai_move (ai, 6, 3)); 7472 assert_true (ai_move (ai, 3, 5)); 7473 assert_true (ai_move (ai, 2, 5)); 7474 assert_true (ai_move (ai, 1, 5)); 7475 assert_true (ai_move (ai, 5, 6)); 7476 assert_true (ai_move (ai, 4, 6)); 7477 assert_true (ai_move (ai, 7, 4)); 7478 assert_true (ai_move (ai, 5, 7)); 7479 assert_true (ai_move (ai, 3, 6)); 7480 assert_true (ai_move (ai, 4, 7)); 7481 assert_true (ai_move (ai, 0, 5)); 7482 assert_true (ai_move (ai, 1, 4)); 7483 assert_true (ai_move (ai, 2, 3)); 7484 assert_true (ai_move (ai, 2, 6)); 7485 assert_true (ai_move (ai, 5, 4)); 7486 assert_true (ai_move (ai, 7, 2)); 7487 assert_true (ai_move (ai, 6, 4)); 7488 assert_true (ai_move (ai, 7, 3)); 7489 assert_true (ai_move (ai, 5, 2)); 7490 assert_true (ai_move (ai, 7, 5)); 7491 assert_true (ai_move (ai, 2, 7)); 7492 assert_true (ai_move (ai, 5, 1)); 7493 assert_true (ai_move (ai, 2, 4)); 7494 assert_true (ai_move (ai, 1, 2)); 7495 assert_true (ai_move (ai, 4, 1)); 7496 assert_true (ai_move (ai, 1, 3)); 7497 assert_true (ai_move (ai, 2, 2)); 7498 assert_true (ai_move (ai, 0, 4)); 7499 assert_true (ai_move (ai, 0, 2)); 7500 assert_true (ai_move (ai, 2, 1)); 7501 assert_true (ai_move (ai, 2, 0)); 7502 assert_true (ai_move (ai, 0, 6)); 7503 assert_true (ai_move (ai, 5, 0)); 7504 assert_true (ai_move (ai, 3, 1)); 7505 assert_true (ai_move (ai, 3, 2)); 7506 assert_true (ai_move (ai, 3, 0)); 7507 assert_true (ai_move (ai, 4, 0)); 7508 assert_true (ai_move (ai, 4, 2)); 7509 assert_true (ai_move (ai, 6, 1)); 7510 assert_true (ai_move (ai, 1, 0)); 7511 assert_true (ai_move (ai, 0, 0)); 7512 assert_true (ai_move (ai, 7, 0)); 7513 assert_true (ai_move (ai, 1, 1)); 7514 assert_true (ai_move (ai, 6, 0)); 7515 assert_true (ai_move (ai, 7, 1)); 7516 assert_true (ai_move (ai, 3, 7)); 7517 assert_true (ai_move (ai, 6, 7)); 7518 assert_true (ai_move (ai, 1, 6)); 7519 assert_true (ai_move (ai, 0, 7)); 7520 assert_true (ai_move (ai, 1, 7)); 7521 assert_true (ai_move (ai, 0, 3)); 7522 assert_true (ai_move (ai, 7, 7)); 7523 assert_true (ai_move (ai, 7, 6)); 7524 assert_true (ai_move (ai, 6, 6)); 7525 assert_true (game.pass ()); 7526 assert_true (ai_move (ai, 0, 1)); 7527 } 7528 7529 private static inline void test_complete_reversi_game_82 () 7530 { 7531 /* 0 1 2 3 4 5 6 7 */ 7532 string [] board = {/* 0 */ " . . . . . . . .", 7533 /* 1 */ " . . . . . . . .", 7534 /* 2 */ " . . . . . . D .", 7535 /* 3 */ " . . . L L D . .", 7536 /* 4 */ " . . . D L . . .", 7537 /* 5 */ " . . . . L . . .", 7538 /* 6 */ " . . . . L . . .", 7539 /* 7 */ " . . . . . . . ."}; 7540 7541 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 7542 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 7543 7544 assert_true (ai_move (ai, 5, 6)); 7545 assert_true (ai_move (ai, 6, 3)); 7546 assert_true (ai_move (ai, 4, 7)); 7547 assert_true (ai_move (ai, 2, 5)); 7548 assert_true (ai_move (ai, 2, 3)); 7549 assert_true (ai_move (ai, 1, 3)); 7550 assert_true (ai_move (ai, 1, 2)); 7551 assert_true (ai_move (ai, 2, 4)); 7552 assert_true (ai_move (ai, 2, 6)); 7553 assert_true (ai_move (ai, 3, 5)); 7554 assert_true (ai_move (ai, 0, 2)); 7555 assert_true (ai_move (ai, 3, 6)); 7556 assert_true (ai_move (ai, 2, 7)); 7557 assert_true (ai_move (ai, 3, 7)); 7558 assert_true (ai_move (ai, 6, 4)); 7559 assert_true (ai_move (ai, 7, 3)); 7560 assert_true (ai_move (ai, 5, 4)); 7561 assert_true (ai_move (ai, 5, 1)); 7562 assert_true (ai_move (ai, 7, 2)); 7563 assert_true (ai_move (ai, 7, 1)); 7564 assert_true (ai_move (ai, 2, 2)); 7565 assert_true (ai_move (ai, 1, 4)); 7566 assert_true (ai_move (ai, 1, 5)); 7567 assert_true (ai_move (ai, 3, 2)); 7568 assert_true (ai_move (ai, 4, 1)); 7569 assert_true (ai_move (ai, 2, 1)); 7570 assert_true (ai_move (ai, 3, 0)); 7571 assert_true (ai_move (ai, 5, 0)); 7572 assert_true (ai_move (ai, 4, 2)); 7573 assert_true (ai_move (ai, 5, 2)); 7574 assert_true (ai_move (ai, 4, 0)); 7575 assert_true (ai_move (ai, 2, 0)); 7576 assert_true (ai_move (ai, 6, 1)); 7577 assert_true (ai_move (ai, 7, 4)); 7578 assert_true (ai_move (ai, 3, 1)); 7579 assert_true (ai_move (ai, 7, 5)); 7580 assert_true (ai_move (ai, 6, 5)); 7581 assert_true (ai_move (ai, 0, 5)); 7582 assert_true (ai_move (ai, 0, 3)); 7583 assert_true (ai_move (ai, 6, 0)); 7584 assert_true (ai_move (ai, 0, 4)); 7585 assert_true (ai_move (ai, 0, 1)); 7586 assert_true (ai_move (ai, 1, 1)); 7587 assert_true (ai_move (ai, 0, 6)); 7588 assert_true (ai_move (ai, 1, 6)); 7589 assert_true (ai_move (ai, 7, 6)); 7590 assert_true (ai_move (ai, 6, 6)); 7591 assert_true (ai_move (ai, 1, 0)); 7592 assert_true (game.pass ()); 7593 assert_true (ai_move (ai, 7, 0)); 7594 assert_true (game.pass ()); 7595 assert_true (ai_move (ai, 0, 0)); 7596 assert_true (game.pass ()); 7597 assert_true (ai_move (ai, 0, 7)); 7598 assert_true (ai_move (ai, 1, 7)); 7599 assert_true (ai_move (ai, 5, 7)); 7600 assert_true (ai_move (ai, 6, 7)); 7601 assert_true (ai_move (ai, 7, 7)); 7602 assert_true (game.pass ()); 7603 assert_true (ai_move (ai, 5, 5)); 7604 } 7605 7606 private static inline void test_complete_reversi_game_83 () 7607 { 7608 /* 0 1 2 3 4 5 6 7 */ 7609 string [] board = {/* 0 */ " . . . . . . . .", 7610 /* 1 */ " . . . . . . . .", 7611 /* 2 */ " . . . . . . D .", 7612 /* 3 */ " . . . L L D . .", 7613 /* 4 */ " . . . L D . . .", 7614 /* 5 */ " . . . L D . . .", 7615 /* 6 */ " . . . . . . . .", 7616 /* 7 */ " . . . . . . . ."}; 7617 7618 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 7619 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 7620 7621 assert_true (ai_move (ai, 2, 5)); 7622 assert_true (ai_move (ai, 6, 3)); 7623 assert_true (ai_move (ai, 2, 3)); 7624 assert_true (ai_move (ai, 1, 3)); 7625 assert_true (ai_move (ai, 1, 2)); 7626 assert_true (ai_move (ai, 5, 5)); 7627 assert_true (ai_move (ai, 6, 5)); 7628 assert_true (ai_move (ai, 2, 6)); 7629 assert_true (ai_move (ai, 3, 6)); 7630 assert_true (ai_move (ai, 2, 4)); 7631 assert_true (ai_move (ai, 2, 7)); 7632 assert_true (ai_move (ai, 1, 4)); 7633 assert_true (ai_move (ai, 0, 2)); 7634 assert_true (ai_move (ai, 1, 5)); 7635 assert_true (ai_move (ai, 0, 4)); 7636 assert_true (ai_move (ai, 0, 3)); 7637 assert_true (ai_move (ai, 5, 4)); 7638 assert_true (ai_move (ai, 4, 6)); 7639 assert_true (ai_move (ai, 5, 6)); 7640 assert_true (ai_move (ai, 6, 4)); 7641 assert_true (ai_move (ai, 7, 4)); 7642 assert_true (ai_move (ai, 2, 1)); 7643 assert_true (ai_move (ai, 7, 2)); 7644 assert_true (ai_move (ai, 7, 3)); 7645 assert_true (ai_move (ai, 2, 2)); 7646 assert_true (ai_move (ai, 5, 1)); 7647 assert_true (ai_move (ai, 2, 0)); 7648 assert_true (ai_move (ai, 5, 7)); 7649 assert_true (ai_move (ai, 3, 2)); 7650 assert_true (ai_move (ai, 3, 7)); 7651 assert_true (ai_move (ai, 5, 2)); 7652 assert_true (ai_move (ai, 3, 0)); 7653 assert_true (ai_move (ai, 5, 0)); 7654 assert_true (ai_move (ai, 4, 0)); 7655 assert_true (ai_move (ai, 6, 1)); 7656 assert_true (ai_move (ai, 4, 2)); 7657 assert_true (ai_move (ai, 3, 1)); 7658 assert_true (ai_move (ai, 4, 1)); 7659 assert_true (ai_move (ai, 6, 0)); 7660 assert_true (ai_move (ai, 0, 5)); 7661 assert_true (ai_move (ai, 0, 6)); 7662 assert_true (ai_move (ai, 7, 5)); 7663 assert_true (ai_move (ai, 7, 6)); 7664 assert_true (ai_move (ai, 1, 1)); 7665 assert_true (ai_move (ai, 1, 6)); 7666 assert_true (ai_move (ai, 6, 6)); 7667 assert_true (ai_move (ai, 4, 7)); 7668 assert_true (ai_move (ai, 7, 0)); 7669 assert_true (ai_move (ai, 6, 7)); 7670 assert_true (ai_move (ai, 7, 7)); 7671 assert_true (ai_move (ai, 7, 1)); 7672 assert_true (ai_move (ai, 1, 0)); 7673 assert_true (ai_move (ai, 0, 1)); 7674 assert_true (ai_move (ai, 0, 0)); 7675 assert_true (game.pass ()); 7676 assert_true (ai_move (ai, 0, 7)); 7677 assert_true (ai_move (ai, 1, 7)); 7678 } 7679 7680 private static inline void test_complete_reversi_game_84 () 7681 { 7682 /* 0 1 2 3 4 5 6 7 */ 7683 string [] board = {/* 0 */ " . . . . . . . .", 7684 /* 1 */ " . . . . . . . .", 7685 /* 2 */ " . . . . . . D .", 7686 /* 3 */ " . . . L L D . .", 7687 /* 4 */ " . . . L D . . .", 7688 /* 5 */ " . . L . D . . .", 7689 /* 6 */ " . . . . . . . .", 7690 /* 7 */ " . . . . . . . ."}; 7691 7692 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 7693 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 7694 7695 assert_true (ai_move (ai, 2, 2)); 7696 assert_true (ai_move (ai, 6, 3)); 7697 assert_true (ai_move (ai, 2, 3)); 7698 assert_true (ai_move (ai, 3, 5)); 7699 assert_true (ai_move (ai, 1, 5)); 7700 assert_true (ai_move (ai, 4, 6)); 7701 assert_true (ai_move (ai, 5, 6)); 7702 assert_true (ai_move (ai, 2, 6)); 7703 assert_true (ai_move (ai, 3, 6)); 7704 assert_true (ai_move (ai, 0, 4)); 7705 assert_true (ai_move (ai, 0, 5)); 7706 assert_true (ai_move (ai, 0, 6)); 7707 assert_true (ai_move (ai, 5, 5)); 7708 assert_true (ai_move (ai, 2, 4)); 7709 assert_true (ai_move (ai, 1, 3)); 7710 assert_true (ai_move (ai, 6, 5)); 7711 assert_true (ai_move (ai, 2, 7)); 7712 assert_true (ai_move (ai, 1, 2)); 7713 assert_true (ai_move (ai, 5, 4)); 7714 assert_true (ai_move (ai, 2, 1)); 7715 assert_true (ai_move (ai, 3, 1)); 7716 assert_true (ai_move (ai, 0, 3)); 7717 assert_true (ai_move (ai, 5, 2)); 7718 assert_true (ai_move (ai, 4, 7)); 7719 assert_true (ai_move (ai, 5, 7)); 7720 assert_true (ai_move (ai, 3, 7)); 7721 assert_true (ai_move (ai, 2, 0)); 7722 assert_true (ai_move (ai, 1, 4)); 7723 assert_true (ai_move (ai, 7, 5)); 7724 assert_true (ai_move (ai, 6, 4)); 7725 assert_true (ai_move (ai, 6, 6)); 7726 assert_true (ai_move (ai, 7, 1)); 7727 assert_true (ai_move (ai, 0, 2)); 7728 assert_true (ai_move (ai, 0, 1)); 7729 assert_true (ai_move (ai, 7, 4)); 7730 assert_true (ai_move (ai, 3, 2)); 7731 assert_true (ai_move (ai, 4, 2)); 7732 assert_true (ai_move (ai, 4, 1)); 7733 assert_true (ai_move (ai, 7, 2)); 7734 assert_true (ai_move (ai, 6, 1)); 7735 assert_true (ai_move (ai, 5, 1)); 7736 assert_true (ai_move (ai, 5, 0)); 7737 assert_true (ai_move (ai, 3, 0)); 7738 assert_true (ai_move (ai, 4, 0)); 7739 assert_true (ai_move (ai, 1, 1)); 7740 assert_true (ai_move (ai, 7, 3)); 7741 assert_true (ai_move (ai, 7, 0)); 7742 assert_true (ai_move (ai, 6, 0)); 7743 assert_true (ai_move (ai, 1, 6)); 7744 assert_true (ai_move (ai, 0, 7)); 7745 assert_true (ai_move (ai, 1, 7)); 7746 assert_true (ai_move (ai, 0, 0)); 7747 assert_true (ai_move (ai, 1, 0)); 7748 assert_true (ai_move (ai, 7, 7)); 7749 assert_true (ai_move (ai, 7, 6)); 7750 assert_true (ai_move (ai, 6, 7)); 7751 } 7752 7753 private static inline void test_complete_reversi_game_85 () 7754 { 7755 /* 0 1 2 3 4 5 6 7 */ 7756 string [] board = {/* 0 */ " . . . . . . . .", 7757 /* 1 */ " . . . . . . . .", 7758 /* 2 */ " . . . . . D . .", 7759 /* 3 */ " . . . L D L . .", 7760 /* 4 */ " . . . D L . . .", 7761 /* 5 */ " . . . . D L . .", 7762 /* 6 */ " . . . . . . . .", 7763 /* 7 */ " . . . . . . . ."}; 7764 7765 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 7766 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 7767 7768 assert_true (ai_move (ai, 6, 5)); 7769 assert_true (ai_move (ai, 5, 1)); 7770 assert_true (ai_move (ai, 2, 3)); 7771 assert_true (ai_move (ai, 4, 2)); 7772 assert_true (ai_move (ai, 5, 4)); 7773 assert_true (ai_move (ai, 5, 6)); 7774 assert_true (ai_move (ai, 6, 4)); 7775 assert_true (ai_move (ai, 7, 3)); 7776 assert_true (ai_move (ai, 5, 7)); 7777 assert_true (ai_move (ai, 4, 6)); 7778 assert_true (ai_move (ai, 3, 5)); 7779 assert_true (ai_move (ai, 3, 7)); 7780 assert_true (ai_move (ai, 7, 4)); 7781 assert_true (ai_move (ai, 2, 6)); 7782 assert_true (ai_move (ai, 7, 2)); 7783 assert_true (ai_move (ai, 2, 5)); 7784 assert_true (ai_move (ai, 1, 5)); 7785 assert_true (ai_move (ai, 0, 5)); 7786 assert_true (ai_move (ai, 3, 1)); 7787 assert_true (ai_move (ai, 4, 1)); 7788 assert_true (ai_move (ai, 5, 0)); 7789 assert_true (ai_move (ai, 6, 3)); 7790 assert_true (ai_move (ai, 6, 2)); 7791 assert_true (ai_move (ai, 1, 2)); 7792 assert_true (ai_move (ai, 3, 2)); 7793 assert_true (ai_move (ai, 2, 0)); 7794 assert_true (ai_move (ai, 1, 3)); 7795 assert_true (ai_move (ai, 4, 0)); 7796 assert_true (ai_move (ai, 4, 7)); 7797 assert_true (ai_move (ai, 2, 4)); 7798 assert_true (ai_move (ai, 3, 6)); 7799 assert_true (ai_move (ai, 6, 7)); 7800 assert_true (ai_move (ai, 1, 4)); 7801 assert_true (ai_move (ai, 2, 7)); 7802 assert_true (ai_move (ai, 3, 0)); 7803 assert_true (ai_move (ai, 6, 0)); 7804 assert_true (ai_move (ai, 6, 1)); 7805 assert_true (ai_move (ai, 0, 2)); 7806 assert_true (ai_move (ai, 0, 3)); 7807 assert_true (ai_move (ai, 0, 4)); 7808 assert_true (ai_move (ai, 1, 6)); 7809 assert_true (ai_move (ai, 7, 5)); 7810 assert_true (ai_move (ai, 7, 6)); 7811 assert_true (ai_move (ai, 2, 2)); 7812 assert_true (ai_move (ai, 2, 1)); 7813 assert_true (ai_move (ai, 1, 1)); 7814 assert_true (ai_move (ai, 1, 7)); 7815 assert_true (ai_move (ai, 0, 7)); 7816 assert_true (ai_move (ai, 0, 0)); 7817 assert_true (ai_move (ai, 0, 6)); 7818 assert_true (ai_move (ai, 0, 1)); 7819 assert_true (ai_move (ai, 7, 0)); 7820 assert_true (ai_move (ai, 6, 6)); 7821 assert_true (ai_move (ai, 7, 1)); 7822 assert_true (game.pass ()); 7823 assert_true (ai_move (ai, 7, 7)); 7824 assert_true (game.pass ()); 7825 assert_true (ai_move (ai, 1, 0)); 7826 } 7827 7828 private static inline void test_complete_reversi_game_86 () 7829 { 7830 /* 0 1 2 3 4 5 6 7 */ 7831 string [] board = {/* 0 */ " . . . . . . . .", 7832 /* 1 */ " . . . . . L . .", 7833 /* 2 */ " . . . . . L . .", 7834 /* 3 */ " . . . L D L . .", 7835 /* 4 */ " . . . D D . . .", 7836 /* 5 */ " . . . . D . . .", 7837 /* 6 */ " . . . . . . . .", 7838 /* 7 */ " . . . . . . . ."}; 7839 7840 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 7841 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 7842 7843 assert_true (ai_move (ai, 2, 2)); 7844 assert_true (ai_move (ai, 3, 5)); 7845 assert_true (ai_move (ai, 2, 5)); 7846 assert_true (ai_move (ai, 2, 6)); 7847 assert_true (ai_move (ai, 3, 6)); 7848 assert_true (ai_move (ai, 2, 4)); 7849 assert_true (ai_move (ai, 1, 4)); 7850 assert_true (ai_move (ai, 5, 6)); 7851 assert_true (ai_move (ai, 1, 5)); 7852 assert_true (ai_move (ai, 2, 7)); 7853 assert_true (ai_move (ai, 5, 5)); 7854 assert_true (ai_move (ai, 0, 3)); 7855 assert_true (ai_move (ai, 2, 3)); 7856 assert_true (ai_move (ai, 6, 5)); 7857 assert_true (ai_move (ai, 4, 6)); 7858 assert_true (ai_move (ai, 2, 1)); 7859 assert_true (ai_move (ai, 6, 4)); 7860 assert_true (ai_move (ai, 5, 7)); 7861 assert_true (ai_move (ai, 4, 2)); 7862 assert_true (ai_move (ai, 0, 5)); 7863 assert_true (ai_move (ai, 6, 2)); 7864 assert_true (ai_move (ai, 5, 4)); 7865 assert_true (ai_move (ai, 6, 3)); 7866 assert_true (ai_move (ai, 7, 2)); 7867 assert_true (ai_move (ai, 5, 0)); 7868 assert_true (ai_move (ai, 7, 3)); 7869 assert_true (ai_move (ai, 1, 6)); 7870 assert_true (ai_move (ai, 4, 1)); 7871 assert_true (ai_move (ai, 6, 1)); 7872 assert_true (ai_move (ai, 3, 2)); 7873 assert_true (ai_move (ai, 7, 5)); 7874 assert_true (ai_move (ai, 7, 0)); 7875 assert_true (ai_move (ai, 1, 2)); 7876 assert_true (ai_move (ai, 6, 0)); 7877 assert_true (ai_move (ai, 3, 1)); 7878 assert_true (ai_move (ai, 4, 0)); 7879 assert_true (ai_move (ai, 1, 7)); 7880 assert_true (ai_move (ai, 3, 7)); 7881 assert_true (ai_move (ai, 1, 3)); 7882 assert_true (ai_move (ai, 0, 2)); 7883 assert_true (ai_move (ai, 2, 0)); 7884 assert_true (ai_move (ai, 0, 4)); 7885 assert_true (ai_move (ai, 0, 6)); 7886 assert_true (ai_move (ai, 0, 7)); 7887 assert_true (ai_move (ai, 7, 1)); 7888 assert_true (ai_move (ai, 7, 4)); 7889 assert_true (ai_move (ai, 4, 7)); 7890 assert_true (ai_move (ai, 3, 0)); 7891 assert_true (ai_move (ai, 0, 1)); 7892 assert_true (ai_move (ai, 1, 0)); 7893 assert_true (ai_move (ai, 1, 1)); 7894 assert_true (ai_move (ai, 0, 0)); 7895 assert_true (ai_move (ai, 7, 6)); 7896 assert_true (ai_move (ai, 6, 6)); 7897 assert_true (ai_move (ai, 6, 7)); 7898 assert_true (ai_move (ai, 7, 7)); 7899 } 7900 7901 private static inline void test_complete_reversi_game_87 () 7902 { 7903 /* 0 1 2 3 4 5 6 7 */ 7904 string [] board = {/* 0 */ " . . . . . . . .", 7905 /* 1 */ " . . . . . . . .", 7906 /* 2 */ " . . . . . D . .", 7907 /* 3 */ " . . . L D L . .", 7908 /* 4 */ " . . . L L . . .", 7909 /* 5 */ " . . . L D . . .", 7910 /* 6 */ " . . . . . . . .", 7911 /* 7 */ " . . . . . . . ."}; 7912 7913 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 7914 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 7915 7916 assert_true (ai_move (ai, 6, 3)); 7917 assert_true (ai_move (ai, 5, 5)); 7918 assert_true (ai_move (ai, 2, 5)); 7919 assert_true (ai_move (ai, 1, 5)); 7920 assert_true (ai_move (ai, 5, 6)); 7921 assert_true (ai_move (ai, 4, 6)); 7922 assert_true (ai_move (ai, 5, 4)); 7923 assert_true (ai_move (ai, 6, 5)); 7924 assert_true (ai_move (ai, 4, 7)); 7925 assert_true (ai_move (ai, 5, 1)); 7926 assert_true (ai_move (ai, 6, 4)); 7927 assert_true (ai_move (ai, 3, 2)); 7928 assert_true (ai_move (ai, 5, 0)); 7929 assert_true (ai_move (ai, 5, 7)); 7930 assert_true (ai_move (ai, 6, 7)); 7931 assert_true (ai_move (ai, 7, 3)); 7932 assert_true (ai_move (ai, 2, 6)); 7933 assert_true (ai_move (ai, 4, 1)); 7934 assert_true (ai_move (ai, 2, 4)); 7935 assert_true (ai_move (ai, 1, 3)); 7936 assert_true (ai_move (ai, 3, 6)); 7937 assert_true (ai_move (ai, 2, 7)); 7938 assert_true (ai_move (ai, 7, 5)); 7939 assert_true (ai_move (ai, 3, 7)); 7940 assert_true (ai_move (ai, 1, 7)); 7941 assert_true (ai_move (ai, 1, 6)); 7942 assert_true (ai_move (ai, 7, 4)); 7943 assert_true (ai_move (ai, 7, 6)); 7944 assert_true (ai_move (ai, 0, 4)); 7945 assert_true (ai_move (ai, 0, 5)); 7946 assert_true (ai_move (ai, 7, 2)); 7947 assert_true (ai_move (ai, 7, 1)); 7948 assert_true (ai_move (ai, 3, 0)); 7949 assert_true (ai_move (ai, 0, 3)); 7950 assert_true (ai_move (ai, 6, 2)); 7951 assert_true (ai_move (ai, 4, 2)); 7952 assert_true (ai_move (ai, 2, 2)); 7953 assert_true (ai_move (ai, 3, 1)); 7954 assert_true (ai_move (ai, 2, 1)); 7955 assert_true (ai_move (ai, 2, 0)); 7956 assert_true (ai_move (ai, 2, 3)); 7957 assert_true (ai_move (ai, 1, 4)); 7958 assert_true (ai_move (ai, 0, 2)); 7959 assert_true (ai_move (ai, 1, 2)); 7960 assert_true (ai_move (ai, 0, 7)); 7961 assert_true (ai_move (ai, 0, 6)); 7962 assert_true (ai_move (ai, 1, 0)); 7963 assert_true (ai_move (ai, 4, 0)); 7964 assert_true (ai_move (ai, 1, 1)); 7965 assert_true (ai_move (ai, 0, 0)); 7966 assert_true (ai_move (ai, 0, 1)); 7967 assert_true (ai_move (ai, 6, 0)); 7968 assert_true (ai_move (ai, 6, 1)); 7969 assert_true (ai_move (ai, 6, 6)); 7970 assert_true (ai_move (ai, 7, 7)); 7971 assert_true (game.pass ()); 7972 assert_true (ai_move (ai, 7, 0)); 7973 } 7974 7975 private static inline void test_complete_reversi_game_88 () 7976 { 7977 /* 0 1 2 3 4 5 6 7 */ 7978 string [] board = {/* 0 */ " . . . . . . . .", 7979 /* 1 */ " . . . . . . . .", 7980 /* 2 */ " . . . . D . . .", 7981 /* 3 */ " . . . L D L . .", 7982 /* 4 */ " . . . D L . . .", 7983 /* 5 */ " . . . . D L . .", 7984 /* 6 */ " . . . . . . . .", 7985 /* 7 */ " . . . . . . . ."}; 7986 7987 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 7988 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 7989 7990 assert_true (ai_move (ai, 6, 5)); 7991 assert_true (ai_move (ai, 5, 1)); 7992 assert_true (ai_move (ai, 4, 1)); 7993 assert_true (ai_move (ai, 4, 6)); 7994 assert_true (ai_move (ai, 3, 5)); 7995 assert_true (ai_move (ai, 6, 4)); 7996 assert_true (ai_move (ai, 5, 4)); 7997 assert_true (ai_move (ai, 2, 5)); 7998 assert_true (ai_move (ai, 5, 2)); 7999 assert_true (ai_move (ai, 7, 5)); 8000 assert_true (ai_move (ai, 2, 6)); 8001 assert_true (ai_move (ai, 2, 7)); 8002 assert_true (ai_move (ai, 1, 5)); 8003 assert_true (ai_move (ai, 0, 4)); 8004 assert_true (ai_move (ai, 3, 6)); 8005 assert_true (ai_move (ai, 3, 2)); 8006 assert_true (ai_move (ai, 6, 3)); 8007 assert_true (ai_move (ai, 5, 0)); 8008 assert_true (ai_move (ai, 3, 0)); 8009 assert_true (ai_move (ai, 4, 0)); 8010 assert_true (ai_move (ai, 0, 5)); 8011 assert_true (ai_move (ai, 2, 0)); 8012 assert_true (ai_move (ai, 0, 3)); 8013 assert_true (ai_move (ai, 7, 4)); 8014 assert_true (ai_move (ai, 4, 7)); 8015 assert_true (ai_move (ai, 6, 2)); 8016 assert_true (ai_move (ai, 2, 4)); 8017 assert_true (ai_move (ai, 2, 3)); 8018 assert_true (ai_move (ai, 1, 4)); 8019 assert_true (ai_move (ai, 3, 7)); 8020 assert_true (ai_move (ai, 5, 7)); 8021 assert_true (ai_move (ai, 6, 7)); 8022 assert_true (ai_move (ai, 5, 6)); 8023 assert_true (ai_move (ai, 1, 3)); 8024 assert_true (ai_move (ai, 6, 1)); 8025 assert_true (ai_move (ai, 6, 6)); 8026 assert_true (ai_move (ai, 7, 3)); 8027 assert_true (ai_move (ai, 7, 2)); 8028 assert_true (ai_move (ai, 7, 0)); 8029 assert_true (ai_move (ai, 6, 0)); 8030 assert_true (ai_move (ai, 1, 0)); 8031 assert_true (ai_move (ai, 1, 6)); 8032 assert_true (ai_move (ai, 3, 1)); 8033 assert_true (ai_move (ai, 2, 1)); 8034 assert_true (ai_move (ai, 1, 2)); 8035 assert_true (ai_move (ai, 0, 1)); 8036 assert_true (ai_move (ai, 0, 7)); 8037 assert_true (ai_move (ai, 7, 1)); 8038 assert_true (ai_move (ai, 1, 7)); 8039 assert_true (ai_move (ai, 0, 6)); 8040 assert_true (ai_move (ai, 0, 2)); 8041 assert_true (ai_move (ai, 1, 1)); 8042 assert_true (ai_move (ai, 7, 6)); 8043 assert_true (game.pass ()); 8044 assert_true (ai_move (ai, 7, 7)); 8045 assert_true (game.pass ()); 8046 assert_true (ai_move (ai, 2, 2)); 8047 assert_true (game.pass ()); 8048 assert_true (ai_move (ai, 0, 0)); 8049 } 8050 8051 private static inline void test_complete_reversi_game_89 () 8052 { 8053 /* 0 1 2 3 4 5 6 7 */ 8054 string [] board = {/* 0 */ " . . . . . . . .", 8055 /* 1 */ " . . . . . L . .", 8056 /* 2 */ " . . . . L . . .", 8057 /* 3 */ " . . . L D L . .", 8058 /* 4 */ " . . . D D . . .", 8059 /* 5 */ " . . . . D . . .", 8060 /* 6 */ " . . . . . . . .", 8061 /* 7 */ " . . . . . . . ."}; 8062 8063 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 8064 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 8065 8066 assert_true (ai_move (ai, 4, 1)); 8067 assert_true (ai_move (ai, 3, 1)); 8068 assert_true (ai_move (ai, 6, 3)); 8069 assert_true (ai_move (ai, 6, 4)); 8070 assert_true (ai_move (ai, 6, 2)); 8071 assert_true (ai_move (ai, 5, 5)); 8072 assert_true (ai_move (ai, 6, 5)); 8073 assert_true (ai_move (ai, 2, 4)); 8074 assert_true (ai_move (ai, 2, 0)); 8075 assert_true (ai_move (ai, 4, 6)); 8076 assert_true (ai_move (ai, 3, 7)); 8077 assert_true (ai_move (ai, 7, 5)); 8078 assert_true (ai_move (ai, 2, 3)); 8079 assert_true (ai_move (ai, 1, 2)); 8080 assert_true (ai_move (ai, 1, 3)); 8081 assert_true (ai_move (ai, 0, 2)); 8082 assert_true (ai_move (ai, 1, 5)); 8083 assert_true (ai_move (ai, 3, 5)); 8084 assert_true (ai_move (ai, 2, 5)); 8085 assert_true (ai_move (ai, 1, 4)); 8086 assert_true (ai_move (ai, 0, 5)); 8087 assert_true (ai_move (ai, 2, 6)); 8088 assert_true (ai_move (ai, 2, 7)); 8089 assert_true (ai_move (ai, 0, 4)); 8090 assert_true (ai_move (ai, 3, 6)); 8091 assert_true (ai_move (ai, 5, 7)); 8092 assert_true (ai_move (ai, 5, 6)); 8093 assert_true (ai_move (ai, 4, 7)); 8094 assert_true (ai_move (ai, 1, 6)); 8095 assert_true (ai_move (ai, 3, 2)); 8096 assert_true (ai_move (ai, 6, 7)); 8097 assert_true (ai_move (ai, 3, 0)); 8098 assert_true (ai_move (ai, 2, 2)); 8099 assert_true (ai_move (ai, 5, 2)); 8100 assert_true (ai_move (ai, 2, 1)); 8101 assert_true (ai_move (ai, 5, 4)); 8102 assert_true (ai_move (ai, 5, 0)); 8103 assert_true (ai_move (ai, 4, 0)); 8104 assert_true (ai_move (ai, 7, 4)); 8105 assert_true (ai_move (ai, 7, 2)); 8106 assert_true (ai_move (ai, 7, 3)); 8107 assert_true (ai_move (ai, 0, 7)); 8108 assert_true (ai_move (ai, 0, 6)); 8109 assert_true (ai_move (ai, 1, 7)); 8110 assert_true (ai_move (ai, 0, 3)); 8111 assert_true (ai_move (ai, 7, 7)); 8112 assert_true (ai_move (ai, 7, 6)); 8113 assert_true (ai_move (ai, 6, 6)); 8114 assert_true (ai_move (ai, 6, 1)); 8115 assert_true (ai_move (ai, 7, 0)); 8116 assert_true (ai_move (ai, 7, 1)); 8117 assert_true (ai_move (ai, 1, 1)); 8118 assert_true (ai_move (ai, 1, 0)); 8119 assert_true (ai_move (ai, 6, 0)); 8120 assert_true (ai_move (ai, 0, 1)); 8121 assert_true (ai_move (ai, 0, 0)); 8122 } 8123 8124 private static inline void test_complete_reversi_game_90 () 8125 { 8126 /* 0 1 2 3 4 5 6 7 */ 8127 string [] board = {/* 0 */ " . . . . . . . .", 8128 /* 1 */ " . . . . . . . .", 8129 /* 2 */ " . . . . D . . .", 8130 /* 3 */ " . . . L D L . .", 8131 /* 4 */ " . . . L L . . .", 8132 /* 5 */ " . . . L D . . .", 8133 /* 6 */ " . . . . . . . .", 8134 /* 7 */ " . . . . . . . ."}; 8135 8136 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 8137 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 8138 8139 assert_true (ai_move (ai, 6, 3)); 8140 assert_true (ai_move (ai, 5, 5)); 8141 assert_true (ai_move (ai, 2, 3)); 8142 assert_true (ai_move (ai, 1, 2)); 8143 assert_true (ai_move (ai, 1, 3)); 8144 assert_true (ai_move (ai, 6, 2)); 8145 assert_true (ai_move (ai, 6, 4)); 8146 assert_true (ai_move (ai, 7, 3)); 8147 assert_true (ai_move (ai, 7, 5)); 8148 assert_true (ai_move (ai, 6, 5)); 8149 assert_true (ai_move (ai, 7, 1)); 8150 assert_true (ai_move (ai, 5, 1)); 8151 assert_true (ai_move (ai, 5, 6)); 8152 assert_true (ai_move (ai, 4, 6)); 8153 assert_true (ai_move (ai, 2, 5)); 8154 assert_true (ai_move (ai, 2, 6)); 8155 assert_true (ai_move (ai, 2, 7)); 8156 assert_true (ai_move (ai, 3, 1)); 8157 assert_true (ai_move (ai, 4, 1)); 8158 assert_true (ai_move (ai, 1, 5)); 8159 assert_true (ai_move (ai, 2, 4)); 8160 assert_true (ai_move (ai, 3, 7)); 8161 assert_true (ai_move (ai, 5, 7)); 8162 assert_true (ai_move (ai, 4, 7)); 8163 assert_true (ai_move (ai, 0, 5)); 8164 assert_true (ai_move (ai, 0, 4)); 8165 assert_true (ai_move (ai, 0, 3)); 8166 assert_true (ai_move (ai, 1, 4)); 8167 assert_true (ai_move (ai, 3, 6)); 8168 assert_true (ai_move (ai, 5, 2)); 8169 assert_true (ai_move (ai, 0, 2)); 8170 assert_true (ai_move (ai, 2, 2)); 8171 assert_true (ai_move (ai, 0, 6)); 8172 assert_true (ai_move (ai, 3, 2)); 8173 assert_true (ai_move (ai, 0, 1)); 8174 assert_true (ai_move (ai, 4, 0)); 8175 assert_true (ai_move (ai, 5, 0)); 8176 assert_true (ai_move (ai, 3, 0)); 8177 assert_true (ai_move (ai, 5, 4)); 8178 assert_true (ai_move (ai, 6, 1)); 8179 assert_true (ai_move (ai, 2, 0)); 8180 assert_true (ai_move (ai, 7, 4)); 8181 assert_true (ai_move (ai, 2, 1)); 8182 assert_true (ai_move (ai, 7, 6)); 8183 assert_true (ai_move (ai, 6, 0)); 8184 assert_true (ai_move (ai, 1, 6)); 8185 assert_true (ai_move (ai, 1, 7)); 8186 assert_true (ai_move (ai, 0, 7)); 8187 assert_true (ai_move (ai, 6, 7)); 8188 assert_true (ai_move (ai, 0, 0)); 8189 assert_true (ai_move (ai, 7, 2)); 8190 assert_true (ai_move (ai, 7, 0)); 8191 assert_true (ai_move (ai, 6, 6)); 8192 assert_true (ai_move (ai, 1, 0)); 8193 assert_true (ai_move (ai, 1, 1)); 8194 assert_true (ai_move (ai, 7, 7)); 8195 } 8196 8197 private static inline void test_complete_reversi_game_91 () 8198 { 8199 /* 0 1 2 3 4 5 6 7 */ 8200 string [] board = {/* 0 */ " . . . . . . . .", 8201 /* 1 */ " . . . L . . . .", 8202 /* 2 */ " . . . . L . . .", 8203 /* 3 */ " . . . L D L . .", 8204 /* 4 */ " . . . D D . . .", 8205 /* 5 */ " . . . . D . . .", 8206 /* 6 */ " . . . . . . . .", 8207 /* 7 */ " . . . . . . . ."}; 8208 8209 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 8210 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 8211 8212 assert_true (ai_move (ai, 4, 1)); 8213 assert_true (ai_move (ai, 5, 1)); 8214 assert_true (ai_move (ai, 6, 3)); 8215 assert_true (ai_move (ai, 6, 4)); 8216 assert_true (ai_move (ai, 6, 2)); 8217 assert_true (ai_move (ai, 5, 5)); 8218 assert_true (ai_move (ai, 6, 5)); 8219 assert_true (ai_move (ai, 2, 4)); 8220 assert_true (ai_move (ai, 2, 0)); 8221 assert_true (ai_move (ai, 4, 6)); 8222 assert_true (ai_move (ai, 3, 7)); 8223 assert_true (ai_move (ai, 7, 5)); 8224 assert_true (ai_move (ai, 2, 3)); 8225 assert_true (ai_move (ai, 1, 2)); 8226 assert_true (ai_move (ai, 1, 3)); 8227 assert_true (ai_move (ai, 0, 2)); 8228 assert_true (ai_move (ai, 1, 5)); 8229 assert_true (ai_move (ai, 3, 5)); 8230 assert_true (ai_move (ai, 2, 5)); 8231 assert_true (ai_move (ai, 1, 4)); 8232 assert_true (ai_move (ai, 0, 5)); 8233 assert_true (ai_move (ai, 2, 6)); 8234 assert_true (ai_move (ai, 2, 7)); 8235 assert_true (ai_move (ai, 0, 4)); 8236 assert_true (ai_move (ai, 3, 6)); 8237 assert_true (ai_move (ai, 5, 7)); 8238 assert_true (ai_move (ai, 5, 6)); 8239 assert_true (ai_move (ai, 4, 7)); 8240 assert_true (ai_move (ai, 1, 6)); 8241 assert_true (ai_move (ai, 3, 2)); 8242 assert_true (ai_move (ai, 6, 7)); 8243 assert_true (ai_move (ai, 3, 0)); 8244 assert_true (ai_move (ai, 2, 2)); 8245 assert_true (ai_move (ai, 5, 2)); 8246 assert_true (ai_move (ai, 2, 1)); 8247 assert_true (ai_move (ai, 5, 4)); 8248 assert_true (ai_move (ai, 5, 0)); 8249 assert_true (ai_move (ai, 4, 0)); 8250 assert_true (ai_move (ai, 7, 4)); 8251 assert_true (ai_move (ai, 7, 2)); 8252 assert_true (ai_move (ai, 7, 3)); 8253 assert_true (ai_move (ai, 0, 7)); 8254 assert_true (ai_move (ai, 0, 6)); 8255 assert_true (ai_move (ai, 1, 7)); 8256 assert_true (ai_move (ai, 0, 3)); 8257 assert_true (ai_move (ai, 7, 7)); 8258 assert_true (ai_move (ai, 7, 6)); 8259 assert_true (ai_move (ai, 6, 6)); 8260 assert_true (ai_move (ai, 6, 1)); 8261 assert_true (ai_move (ai, 7, 0)); 8262 assert_true (ai_move (ai, 7, 1)); 8263 assert_true (ai_move (ai, 1, 1)); 8264 assert_true (ai_move (ai, 1, 0)); 8265 assert_true (ai_move (ai, 6, 0)); 8266 assert_true (ai_move (ai, 0, 1)); 8267 assert_true (ai_move (ai, 0, 0)); 8268 } 8269 8270 private static inline void test_complete_reversi_game_92 () 8271 { 8272 /* 0 1 2 3 4 5 6 7 */ 8273 string [] board = {/* 0 */ " . . . . . . . .", 8274 /* 1 */ " . . . . . . . .", 8275 /* 2 */ " . . . D . . . .", 8276 /* 3 */ " . . . D L L . .", 8277 /* 4 */ " . . . D L . . .", 8278 /* 5 */ " . . . . L . . .", 8279 /* 6 */ " . . . . L . . .", 8280 /* 7 */ " . . . . . . . ."}; 8281 8282 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 8283 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 8284 8285 assert_true (ai_move (ai, 5, 6)); 8286 assert_true (ai_move (ai, 2, 1)); 8287 assert_true (ai_move (ai, 3, 1)); 8288 assert_true (ai_move (ai, 2, 5)); 8289 assert_true (ai_move (ai, 4, 7)); 8290 assert_true (ai_move (ai, 2, 3)); 8291 assert_true (ai_move (ai, 1, 4)); 8292 assert_true (ai_move (ai, 1, 2)); 8293 assert_true (ai_move (ai, 3, 6)); 8294 assert_true (ai_move (ai, 4, 1)); 8295 assert_true (ai_move (ai, 5, 0)); 8296 assert_true (ai_move (ai, 1, 3)); 8297 assert_true (ai_move (ai, 3, 0)); 8298 assert_true (ai_move (ai, 0, 5)); 8299 assert_true (ai_move (ai, 1, 1)); 8300 assert_true (ai_move (ai, 6, 7)); 8301 assert_true (ai_move (ai, 6, 5)); 8302 assert_true (ai_move (ai, 2, 7)); 8303 assert_true (ai_move (ai, 0, 3)); 8304 assert_true (ai_move (ai, 1, 5)); 8305 assert_true (ai_move (ai, 2, 6)); 8306 assert_true (ai_move (ai, 2, 4)); 8307 assert_true (ai_move (ai, 5, 4)); 8308 assert_true (ai_move (ai, 6, 4)); 8309 assert_true (ai_move (ai, 6, 3)); 8310 assert_true (ai_move (ai, 0, 1)); 8311 assert_true (ai_move (ai, 3, 5)); 8312 assert_true (ai_move (ai, 5, 5)); 8313 assert_true (ai_move (ai, 6, 6)); 8314 assert_true (ai_move (ai, 7, 5)); 8315 assert_true (ai_move (ai, 7, 4)); 8316 assert_true (ai_move (ai, 7, 2)); 8317 assert_true (ai_move (ai, 7, 6)); 8318 assert_true (ai_move (ai, 3, 7)); 8319 assert_true (ai_move (ai, 1, 7)); 8320 assert_true (ai_move (ai, 7, 3)); 8321 assert_true (ai_move (ai, 2, 2)); 8322 assert_true (ai_move (ai, 4, 0)); 8323 assert_true (ai_move (ai, 7, 1)); 8324 assert_true (ai_move (ai, 2, 0)); 8325 assert_true (ai_move (ai, 1, 0)); 8326 assert_true (ai_move (ai, 5, 2)); 8327 assert_true (ai_move (ai, 5, 1)); 8328 assert_true (ai_move (ai, 7, 7)); 8329 assert_true (ai_move (ai, 5, 7)); 8330 assert_true (ai_move (ai, 0, 7)); 8331 assert_true (ai_move (ai, 0, 2)); 8332 assert_true (ai_move (ai, 0, 4)); 8333 assert_true (ai_move (ai, 0, 6)); 8334 assert_true (ai_move (ai, 0, 0)); 8335 assert_true (ai_move (ai, 4, 2)); 8336 assert_true (ai_move (ai, 7, 0)); 8337 assert_true (ai_move (ai, 6, 2)); 8338 assert_true (ai_move (ai, 6, 0)); 8339 assert_true (game.pass ()); 8340 assert_true (ai_move (ai, 6, 1)); 8341 assert_true (game.pass ()); 8342 assert_true (ai_move (ai, 1, 6)); 8343 } 8344 8345 private static inline void test_complete_reversi_game_93 () 8346 { 8347 /* 0 1 2 3 4 5 6 7 */ 8348 string [] board = {/* 0 */ " . . . . . . . .", 8349 /* 1 */ " . . . . . . . .", 8350 /* 2 */ " . . . D . . . .", 8351 /* 3 */ " . . . D L L . .", 8352 /* 4 */ " . . . D L . . .", 8353 /* 5 */ " . . . L D . . .", 8354 /* 6 */ " . . . . . . . .", 8355 /* 7 */ " . . . . . . . ."}; 8356 8357 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 8358 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 8359 8360 assert_true (ai_move (ai, 2, 5)); 8361 assert_true (ai_move (ai, 2, 1)); 8362 assert_true (ai_move (ai, 5, 5)); 8363 assert_true (ai_move (ai, 2, 3)); 8364 assert_true (ai_move (ai, 6, 2)); 8365 assert_true (ai_move (ai, 6, 3)); 8366 assert_true (ai_move (ai, 1, 2)); 8367 assert_true (ai_move (ai, 1, 4)); 8368 assert_true (ai_move (ai, 3, 0)); 8369 assert_true (ai_move (ai, 5, 6)); 8370 assert_true (ai_move (ai, 4, 6)); 8371 assert_true (ai_move (ai, 5, 4)); 8372 assert_true (ai_move (ai, 6, 4)); 8373 assert_true (ai_move (ai, 2, 6)); 8374 assert_true (ai_move (ai, 2, 7)); 8375 assert_true (ai_move (ai, 1, 5)); 8376 assert_true (ai_move (ai, 0, 5)); 8377 assert_true (ai_move (ai, 7, 5)); 8378 assert_true (ai_move (ai, 7, 3)); 8379 assert_true (ai_move (ai, 7, 4)); 8380 assert_true (ai_move (ai, 5, 7)); 8381 assert_true (ai_move (ai, 7, 2)); 8382 assert_true (ai_move (ai, 0, 3)); 8383 assert_true (ai_move (ai, 7, 1)); 8384 assert_true (ai_move (ai, 4, 1)); 8385 assert_true (ai_move (ai, 1, 3)); 8386 assert_true (ai_move (ai, 2, 2)); 8387 assert_true (ai_move (ai, 2, 0)); 8388 assert_true (ai_move (ai, 2, 4)); 8389 assert_true (ai_move (ai, 4, 0)); 8390 assert_true (ai_move (ai, 0, 2)); 8391 assert_true (ai_move (ai, 0, 4)); 8392 assert_true (ai_move (ai, 4, 2)); 8393 assert_true (ai_move (ai, 3, 6)); 8394 assert_true (ai_move (ai, 5, 2)); 8395 assert_true (ai_move (ai, 6, 5)); 8396 assert_true (ai_move (ai, 3, 1)); 8397 assert_true (ai_move (ai, 5, 0)); 8398 assert_true (ai_move (ai, 5, 1)); 8399 assert_true (ai_move (ai, 6, 0)); 8400 assert_true (ai_move (ai, 3, 7)); 8401 assert_true (ai_move (ai, 4, 7)); 8402 assert_true (ai_move (ai, 1, 6)); 8403 assert_true (ai_move (ai, 0, 7)); 8404 assert_true (ai_move (ai, 1, 7)); 8405 assert_true (ai_move (ai, 0, 6)); 8406 assert_true (ai_move (ai, 6, 6)); 8407 assert_true (ai_move (ai, 6, 1)); 8408 assert_true (ai_move (ai, 1, 1)); 8409 assert_true (ai_move (ai, 7, 6)); 8410 assert_true (ai_move (ai, 7, 7)); 8411 assert_true (ai_move (ai, 6, 7)); 8412 assert_true (ai_move (ai, 7, 0)); 8413 assert_true (ai_move (ai, 0, 0)); 8414 assert_true (ai_move (ai, 1, 0)); 8415 assert_true (ai_move (ai, 0, 1)); 8416 } 8417 8418 private static inline void test_complete_reversi_game_94 () 8419 { 8420 /* 0 1 2 3 4 5 6 7 */ 8421 string [] board = {/* 0 */ " . . . . . . . .", 8422 /* 1 */ " . . . . . . . .", 8423 /* 2 */ " . . . D . . . .", 8424 /* 3 */ " . . . D L L . .", 8425 /* 4 */ " . . . L D . . .", 8426 /* 5 */ " . . L . D . . .", 8427 /* 6 */ " . . . . . . . .", 8428 /* 7 */ " . . . . . . . ."}; 8429 8430 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 8431 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 8432 8433 assert_true (ai_move (ai, 6, 2)); 8434 assert_true (ai_move (ai, 6, 3)); 8435 assert_true (ai_move (ai, 2, 4)); 8436 assert_true (ai_move (ai, 2, 1)); 8437 assert_true (ai_move (ai, 2, 6)); 8438 assert_true (ai_move (ai, 2, 3)); 8439 assert_true (ai_move (ai, 1, 2)); 8440 assert_true (ai_move (ai, 1, 4)); 8441 assert_true (ai_move (ai, 3, 0)); 8442 assert_true (ai_move (ai, 3, 6)); 8443 assert_true (ai_move (ai, 2, 7)); 8444 assert_true (ai_move (ai, 1, 5)); 8445 assert_true (ai_move (ai, 0, 3)); 8446 assert_true (ai_move (ai, 0, 5)); 8447 assert_true (ai_move (ai, 6, 4)); 8448 assert_true (ai_move (ai, 4, 7)); 8449 assert_true (ai_move (ai, 2, 2)); 8450 assert_true (ai_move (ai, 0, 2)); 8451 assert_true (ai_move (ai, 4, 1)); 8452 assert_true (ai_move (ai, 0, 4)); 8453 assert_true (ai_move (ai, 5, 2)); 8454 assert_true (ai_move (ai, 1, 3)); 8455 assert_true (ai_move (ai, 5, 4)); 8456 assert_true (ai_move (ai, 3, 5)); 8457 assert_true (ai_move (ai, 4, 6)); 8458 assert_true (ai_move (ai, 5, 6)); 8459 assert_true (ai_move (ai, 1, 6)); 8460 assert_true (ai_move (ai, 4, 2)); 8461 assert_true (ai_move (ai, 3, 1)); 8462 assert_true (ai_move (ai, 5, 0)); 8463 assert_true (ai_move (ai, 5, 1)); 8464 assert_true (ai_move (ai, 7, 3)); 8465 assert_true (ai_move (ai, 0, 6)); 8466 assert_true (ai_move (ai, 5, 5)); 8467 assert_true (ai_move (ai, 0, 1)); 8468 assert_true (ai_move (ai, 2, 0)); 8469 assert_true (ai_move (ai, 4, 0)); 8470 assert_true (ai_move (ai, 5, 7)); 8471 assert_true (ai_move (ai, 7, 5)); 8472 assert_true (ai_move (ai, 6, 5)); 8473 assert_true (ai_move (ai, 7, 2)); 8474 assert_true (ai_move (ai, 3, 7)); 8475 assert_true (ai_move (ai, 6, 7)); 8476 assert_true (ai_move (ai, 1, 1)); 8477 assert_true (ai_move (ai, 7, 4)); 8478 assert_true (ai_move (ai, 6, 6)); 8479 assert_true (ai_move (ai, 7, 6)); 8480 assert_true (ai_move (ai, 7, 7)); 8481 assert_true (ai_move (ai, 1, 0)); 8482 assert_true (ai_move (ai, 1, 7)); 8483 assert_true (ai_move (ai, 6, 0)); 8484 assert_true (ai_move (ai, 7, 1)); 8485 assert_true (ai_move (ai, 6, 1)); 8486 assert_true (ai_move (ai, 0, 0)); 8487 assert_true (game.pass ()); 8488 assert_true (ai_move (ai, 7, 0)); 8489 assert_true (game.pass ()); 8490 assert_true (ai_move (ai, 0, 7)); 8491 } 8492 8493 private static inline void test_complete_reversi_game_95 () 8494 { 8495 /* 0 1 2 3 4 5 6 7 */ 8496 string [] board = {/* 0 */ " . . . . . . . .", 8497 /* 1 */ " . . . . . . . .", 8498 /* 2 */ " . . . D . . . .", 8499 /* 3 */ " . . L L L L . .", 8500 /* 4 */ " . . . D D . . .", 8501 /* 5 */ " . . . . D . . .", 8502 /* 6 */ " . . . . . . . .", 8503 /* 7 */ " . . . . . . . ."}; 8504 8505 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 8506 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 8507 8508 assert_true (ai_move (ai, 1, 2)); 8509 assert_true (ai_move (ai, 1, 3)); 8510 assert_true (ai_move (ai, 6, 2)); 8511 assert_true (ai_move (ai, 4, 1)); 8512 assert_true (ai_move (ai, 5, 2)); 8513 assert_true (ai_move (ai, 6, 3)); 8514 assert_true (ai_move (ai, 6, 4)); 8515 assert_true (ai_move (ai, 7, 2)); 8516 assert_true (ai_move (ai, 1, 4)); 8517 assert_true (ai_move (ai, 7, 4)); 8518 assert_true (ai_move (ai, 5, 0)); 8519 assert_true (ai_move (ai, 3, 1)); 8520 assert_true (ai_move (ai, 2, 1)); 8521 assert_true (ai_move (ai, 7, 5)); 8522 assert_true (ai_move (ai, 5, 4)); 8523 assert_true (ai_move (ai, 3, 6)); 8524 assert_true (ai_move (ai, 6, 5)); 8525 assert_true (ai_move (ai, 5, 6)); 8526 assert_true (ai_move (ai, 5, 1)); 8527 assert_true (ai_move (ai, 0, 3)); 8528 assert_true (ai_move (ai, 7, 3)); 8529 assert_true (ai_move (ai, 5, 5)); 8530 assert_true (ai_move (ai, 5, 7)); 8531 assert_true (ai_move (ai, 4, 6)); 8532 assert_true (ai_move (ai, 3, 7)); 8533 assert_true (ai_move (ai, 4, 2)); 8534 assert_true (ai_move (ai, 2, 4)); 8535 assert_true (ai_move (ai, 2, 2)); 8536 assert_true (ai_move (ai, 0, 2)); 8537 assert_true (ai_move (ai, 0, 1)); 8538 assert_true (ai_move (ai, 2, 7)); 8539 assert_true (ai_move (ai, 6, 6)); 8540 assert_true (ai_move (ai, 6, 1)); 8541 assert_true (ai_move (ai, 3, 0)); 8542 assert_true (ai_move (ai, 3, 5)); 8543 assert_true (ai_move (ai, 4, 7)); 8544 assert_true (ai_move (ai, 2, 0)); 8545 assert_true (ai_move (ai, 6, 7)); 8546 assert_true (ai_move (ai, 4, 0)); 8547 assert_true (ai_move (ai, 1, 7)); 8548 assert_true (ai_move (ai, 7, 7)); 8549 assert_true (ai_move (ai, 7, 6)); 8550 assert_true (ai_move (ai, 0, 7)); 8551 assert_true (ai_move (ai, 1, 1)); 8552 assert_true (ai_move (ai, 0, 0)); 8553 assert_true (ai_move (ai, 0, 5)); 8554 assert_true (ai_move (ai, 0, 4)); 8555 assert_true (ai_move (ai, 7, 0)); 8556 assert_true (ai_move (ai, 0, 6)); 8557 assert_true (ai_move (ai, 1, 0)); 8558 assert_true (ai_move (ai, 6, 0)); 8559 assert_true (ai_move (ai, 7, 1)); 8560 assert_true (game.pass ()); 8561 assert_true (ai_move (ai, 2, 6)); 8562 assert_true (ai_move (ai, 1, 6)); 8563 assert_true (ai_move (ai, 1, 5)); 8564 assert_true (ai_move (ai, 2, 5)); 8565 } 8566 8567 private static inline void test_complete_reversi_game_96 () 8568 { 8569 /* 0 1 2 3 4 5 6 7 */ 8570 string [] board = {/* 0 */ " . . . . . . . .", 8571 /* 1 */ " . . L . . . . .", 8572 /* 2 */ " . . . L . . . .", 8573 /* 3 */ " . . . D L L . .", 8574 /* 4 */ " . . . D D . . .", 8575 /* 5 */ " . . . . D . . .", 8576 /* 6 */ " . . . . . . . .", 8577 /* 7 */ " . . . . . . . ."}; 8578 8579 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 8580 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 8581 8582 assert_true (ai_move (ai, 3, 1)); 8583 assert_true (ai_move (ai, 2, 5)); 8584 assert_true (ai_move (ai, 6, 2)); 8585 assert_true (ai_move (ai, 6, 3)); 8586 assert_true (ai_move (ai, 2, 3)); 8587 assert_true (ai_move (ai, 4, 1)); 8588 assert_true (ai_move (ai, 5, 0)); 8589 assert_true (ai_move (ai, 5, 1)); 8590 assert_true (ai_move (ai, 4, 0)); 8591 assert_true (ai_move (ai, 1, 4)); 8592 assert_true (ai_move (ai, 1, 3)); 8593 assert_true (ai_move (ai, 1, 2)); 8594 assert_true (ai_move (ai, 0, 3)); 8595 assert_true (ai_move (ai, 5, 6)); 8596 assert_true (ai_move (ai, 3, 5)); 8597 assert_true (ai_move (ai, 2, 6)); 8598 assert_true (ai_move (ai, 5, 2)); 8599 assert_true (ai_move (ai, 2, 2)); 8600 assert_true (ai_move (ai, 5, 4)); 8601 assert_true (ai_move (ai, 5, 5)); 8602 assert_true (ai_move (ai, 4, 6)); 8603 assert_true (ai_move (ai, 0, 4)); 8604 assert_true (ai_move (ai, 6, 5)); 8605 assert_true (ai_move (ai, 0, 2)); 8606 assert_true (ai_move (ai, 3, 6)); 8607 assert_true (ai_move (ai, 7, 5)); 8608 assert_true (ai_move (ai, 5, 7)); 8609 assert_true (ai_move (ai, 3, 7)); 8610 assert_true (ai_move (ai, 2, 7)); 8611 assert_true (ai_move (ai, 4, 7)); 8612 assert_true (ai_move (ai, 1, 5)); 8613 assert_true (ai_move (ai, 0, 5)); 8614 assert_true (ai_move (ai, 6, 4)); 8615 assert_true (ai_move (ai, 6, 6)); 8616 assert_true (ai_move (ai, 2, 4)); 8617 assert_true (ai_move (ai, 7, 2)); 8618 assert_true (ai_move (ai, 2, 0)); 8619 assert_true (ai_move (ai, 3, 0)); 8620 assert_true (ai_move (ai, 4, 2)); 8621 assert_true (ai_move (ai, 1, 1)); 8622 assert_true (ai_move (ai, 7, 4)); 8623 assert_true (ai_move (ai, 7, 3)); 8624 assert_true (ai_move (ai, 6, 7)); 8625 assert_true (ai_move (ai, 7, 6)); 8626 assert_true (ai_move (ai, 0, 6)); 8627 assert_true (ai_move (ai, 0, 7)); 8628 assert_true (ai_move (ai, 0, 1)); 8629 assert_true (ai_move (ai, 7, 7)); 8630 assert_true (game.pass ()); 8631 assert_true (ai_move (ai, 7, 1)); 8632 assert_true (ai_move (ai, 6, 1)); 8633 assert_true (ai_move (ai, 1, 7)); 8634 assert_true (game.pass ()); 8635 assert_true (ai_move (ai, 1, 6)); 8636 assert_true (game.pass ()); 8637 assert_true (ai_move (ai, 7, 0)); 8638 assert_true (ai_move (ai, 6, 0)); 8639 assert_true (ai_move (ai, 1, 0)); 8640 assert_true (ai_move (ai, 0, 0)); 8641 } 8642 8643 private static inline void test_complete_reversi_game_97 () 8644 { 8645 /* 0 1 2 3 4 5 6 7 */ 8646 string [] board = {/* 0 */ " . . . . . . . .", 8647 /* 1 */ " . . . . . . . .", 8648 /* 2 */ " . . D . . . . .", 8649 /* 3 */ " . . . D L L . .", 8650 /* 4 */ " . . . D L . . .", 8651 /* 5 */ " . . . . L . . .", 8652 /* 6 */ " . . . . L . . .", 8653 /* 7 */ " . . . . . . . ."}; 8654 8655 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 8656 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 8657 8658 assert_true (ai_move (ai, 5, 6)); 8659 assert_true (ai_move (ai, 2, 5)); 8660 assert_true (ai_move (ai, 4, 7)); 8661 assert_true (ai_move (ai, 3, 2)); 8662 assert_true (ai_move (ai, 2, 3)); 8663 assert_true (ai_move (ai, 1, 2)); 8664 assert_true (ai_move (ai, 2, 1)); 8665 assert_true (ai_move (ai, 1, 4)); 8666 assert_true (ai_move (ai, 2, 4)); 8667 assert_true (ai_move (ai, 1, 3)); 8668 assert_true (ai_move (ai, 2, 6)); 8669 assert_true (ai_move (ai, 3, 1)); 8670 assert_true (ai_move (ai, 0, 2)); 8671 assert_true (ai_move (ai, 3, 6)); 8672 assert_true (ai_move (ai, 2, 7)); 8673 assert_true (ai_move (ai, 0, 4)); 8674 assert_true (ai_move (ai, 0, 1)); 8675 assert_true (ai_move (ai, 2, 0)); 8676 assert_true (ai_move (ai, 0, 5)); 8677 assert_true (ai_move (ai, 0, 3)); 8678 assert_true (ai_move (ai, 4, 1)); 8679 assert_true (ai_move (ai, 4, 2)); 8680 assert_true (ai_move (ai, 5, 2)); 8681 assert_true (ai_move (ai, 5, 0)); 8682 assert_true (ai_move (ai, 1, 6)); 8683 assert_true (ai_move (ai, 5, 4)); 8684 assert_true (ai_move (ai, 6, 3)); 8685 assert_true (ai_move (ai, 6, 5)); 8686 assert_true (ai_move (ai, 1, 5)); 8687 assert_true (ai_move (ai, 0, 0)); 8688 assert_true (ai_move (ai, 7, 4)); 8689 assert_true (ai_move (ai, 7, 6)); 8690 assert_true (ai_move (ai, 5, 5)); 8691 assert_true (ai_move (ai, 6, 2)); 8692 assert_true (ai_move (ai, 1, 0)); 8693 assert_true (ai_move (ai, 5, 7)); 8694 assert_true (ai_move (ai, 6, 4)); 8695 assert_true (ai_move (ai, 3, 7)); 8696 assert_true (ai_move (ai, 6, 7)); 8697 assert_true (ai_move (ai, 3, 5)); 8698 assert_true (ai_move (ai, 7, 5)); 8699 assert_true (ai_move (ai, 7, 3)); 8700 assert_true (ai_move (ai, 1, 7)); 8701 assert_true (ai_move (ai, 0, 6)); 8702 assert_true (ai_move (ai, 3, 0)); 8703 assert_true (ai_move (ai, 0, 7)); 8704 assert_true (ai_move (ai, 5, 1)); 8705 assert_true (ai_move (ai, 7, 7)); 8706 assert_true (ai_move (ai, 7, 2)); 8707 assert_true (ai_move (ai, 6, 1)); 8708 assert_true (ai_move (ai, 7, 1)); 8709 assert_true (ai_move (ai, 6, 6)); 8710 assert_true (game.pass ()); 8711 assert_true (ai_move (ai, 4, 0)); 8712 assert_true (ai_move (ai, 1, 1)); 8713 assert_true (ai_move (ai, 7, 0)); 8714 assert_true (ai_move (ai, 6, 0)); 8715 } 8716 8717 private static inline void test_complete_reversi_game_98 () 8718 { 8719 /* 0 1 2 3 4 5 6 7 */ 8720 string [] board = {/* 0 */ " . . . . . . . .", 8721 /* 1 */ " . . . . . . . .", 8722 /* 2 */ " . . D . . . . .", 8723 /* 3 */ " . . . D L L . .", 8724 /* 4 */ " . . . D L . . .", 8725 /* 5 */ " . . . L D . . .", 8726 /* 6 */ " . . . . . . . .", 8727 /* 7 */ " . . . . . . . ."}; 8728 8729 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 8730 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 8731 8732 assert_true (ai_move (ai, 2, 5)); 8733 assert_true (ai_move (ai, 2, 6)); 8734 assert_true (ai_move (ai, 3, 6)); 8735 assert_true (ai_move (ai, 2, 4)); 8736 assert_true (ai_move (ai, 1, 4)); 8737 assert_true (ai_move (ai, 5, 6)); 8738 assert_true (ai_move (ai, 1, 5)); 8739 assert_true (ai_move (ai, 2, 7)); 8740 assert_true (ai_move (ai, 5, 5)); 8741 assert_true (ai_move (ai, 0, 3)); 8742 assert_true (ai_move (ai, 6, 2)); 8743 assert_true (ai_move (ai, 6, 5)); 8744 assert_true (ai_move (ai, 4, 6)); 8745 assert_true (ai_move (ai, 6, 3)); 8746 assert_true (ai_move (ai, 2, 3)); 8747 assert_true (ai_move (ai, 2, 1)); 8748 assert_true (ai_move (ai, 1, 2)); 8749 assert_true (ai_move (ai, 0, 2)); 8750 assert_true (ai_move (ai, 7, 5)); 8751 assert_true (ai_move (ai, 5, 7)); 8752 assert_true (ai_move (ai, 2, 0)); 8753 assert_true (ai_move (ai, 6, 4)); 8754 assert_true (ai_move (ai, 0, 5)); 8755 assert_true (ai_move (ai, 7, 4)); 8756 assert_true (ai_move (ai, 5, 2)); 8757 assert_true (ai_move (ai, 5, 1)); 8758 assert_true (ai_move (ai, 4, 2)); 8759 assert_true (ai_move (ai, 3, 0)); 8760 assert_true (ai_move (ai, 7, 3)); 8761 assert_true (ai_move (ai, 5, 4)); 8762 assert_true (ai_move (ai, 4, 1)); 8763 assert_true (ai_move (ai, 0, 4)); 8764 assert_true (ai_move (ai, 0, 1)); 8765 assert_true (ai_move (ai, 7, 2)); 8766 assert_true (ai_move (ai, 7, 1)); 8767 assert_true (ai_move (ai, 1, 0)); 8768 assert_true (ai_move (ai, 7, 6)); 8769 assert_true (ai_move (ai, 3, 2)); 8770 assert_true (ai_move (ai, 1, 3)); 8771 assert_true (ai_move (ai, 3, 1)); 8772 assert_true (ai_move (ai, 6, 6)); 8773 assert_true (ai_move (ai, 6, 1)); 8774 assert_true (ai_move (ai, 0, 6)); 8775 assert_true (ai_move (ai, 1, 1)); 8776 assert_true (ai_move (ai, 0, 0)); 8777 assert_true (ai_move (ai, 1, 6)); 8778 assert_true (ai_move (ai, 4, 7)); 8779 assert_true (ai_move (ai, 3, 7)); 8780 assert_true (ai_move (ai, 4, 0)); 8781 assert_true (ai_move (ai, 6, 0)); 8782 assert_true (ai_move (ai, 7, 0)); 8783 assert_true (ai_move (ai, 5, 0)); 8784 assert_true (ai_move (ai, 0, 7)); 8785 assert_true (ai_move (ai, 7, 7)); 8786 assert_true (ai_move (ai, 1, 7)); 8787 assert_true (ai_move (ai, 6, 7)); 8788 } 8789 8790 private static inline void test_complete_reversi_game_99 () 8791 { 8792 /* 0 1 2 3 4 5 6 7 */ 8793 string [] board = {/* 0 */ " . . . . . . . .", 8794 /* 1 */ " . . . . . . . .", 8795 /* 2 */ " . . D . . . . .", 8796 /* 3 */ " . . . D L L . .", 8797 /* 4 */ " . . . L D . . .", 8798 /* 5 */ " . . L . D . . .", 8799 /* 6 */ " . . . . . . . .", 8800 /* 7 */ " . . . . . . . ."}; 8801 8802 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 8803 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 8804 8805 assert_true (ai_move (ai, 6, 2)); 8806 assert_true (ai_move (ai, 6, 3)); 8807 assert_true (ai_move (ai, 2, 3)); 8808 assert_true (ai_move (ai, 3, 5)); 8809 assert_true (ai_move (ai, 1, 5)); 8810 assert_true (ai_move (ai, 4, 6)); 8811 assert_true (ai_move (ai, 5, 6)); 8812 assert_true (ai_move (ai, 2, 6)); 8813 assert_true (ai_move (ai, 3, 6)); 8814 assert_true (ai_move (ai, 0, 4)); 8815 assert_true (ai_move (ai, 0, 5)); 8816 assert_true (ai_move (ai, 0, 6)); 8817 assert_true (ai_move (ai, 5, 5)); 8818 assert_true (ai_move (ai, 2, 4)); 8819 assert_true (ai_move (ai, 1, 3)); 8820 assert_true (ai_move (ai, 6, 5)); 8821 assert_true (ai_move (ai, 2, 7)); 8822 assert_true (ai_move (ai, 1, 2)); 8823 assert_true (ai_move (ai, 5, 4)); 8824 assert_true (ai_move (ai, 2, 1)); 8825 assert_true (ai_move (ai, 3, 1)); 8826 assert_true (ai_move (ai, 0, 3)); 8827 assert_true (ai_move (ai, 5, 2)); 8828 assert_true (ai_move (ai, 4, 7)); 8829 assert_true (ai_move (ai, 5, 7)); 8830 assert_true (ai_move (ai, 3, 7)); 8831 assert_true (ai_move (ai, 2, 0)); 8832 assert_true (ai_move (ai, 1, 4)); 8833 assert_true (ai_move (ai, 7, 5)); 8834 assert_true (ai_move (ai, 6, 4)); 8835 assert_true (ai_move (ai, 6, 6)); 8836 assert_true (ai_move (ai, 7, 1)); 8837 assert_true (ai_move (ai, 0, 2)); 8838 assert_true (ai_move (ai, 0, 1)); 8839 assert_true (ai_move (ai, 7, 4)); 8840 assert_true (ai_move (ai, 3, 2)); 8841 assert_true (ai_move (ai, 4, 2)); 8842 assert_true (ai_move (ai, 4, 1)); 8843 assert_true (ai_move (ai, 7, 2)); 8844 assert_true (ai_move (ai, 6, 1)); 8845 assert_true (ai_move (ai, 5, 1)); 8846 assert_true (ai_move (ai, 5, 0)); 8847 assert_true (ai_move (ai, 3, 0)); 8848 assert_true (ai_move (ai, 4, 0)); 8849 assert_true (ai_move (ai, 1, 1)); 8850 assert_true (ai_move (ai, 7, 3)); 8851 assert_true (ai_move (ai, 7, 0)); 8852 assert_true (ai_move (ai, 6, 0)); 8853 assert_true (ai_move (ai, 1, 6)); 8854 assert_true (ai_move (ai, 0, 7)); 8855 assert_true (ai_move (ai, 1, 7)); 8856 assert_true (ai_move (ai, 0, 0)); 8857 assert_true (ai_move (ai, 1, 0)); 8858 assert_true (ai_move (ai, 7, 7)); 8859 assert_true (ai_move (ai, 7, 6)); 8860 assert_true (ai_move (ai, 6, 7)); 8861 } 8862 8863 private static inline void test_complete_reversi_game_100 () 8864 { 8865 /* 0 1 2 3 4 5 6 7 */ 8866 string [] board = {/* 0 */ " . . . . . . . .", 8867 /* 1 */ " . . . . . . . .", 8868 /* 2 */ " . . D . . . . .", 8869 /* 3 */ " . . L L L L . .", 8870 /* 4 */ " . . . D D . . .", 8871 /* 5 */ " . . . . D . . .", 8872 /* 6 */ " . . . . . . . .", 8873 /* 7 */ " . . . . . . . ."}; 8874 8875 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 8876 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 8877 8878 assert_true (ai_move (ai, 1, 2)); 8879 assert_true (ai_move (ai, 2, 5)); 8880 assert_true (ai_move (ai, 6, 2)); 8881 assert_true (ai_move (ai, 6, 3)); 8882 assert_true (ai_move (ai, 6, 4)); 8883 assert_true (ai_move (ai, 5, 6)); 8884 assert_true (ai_move (ai, 4, 6)); 8885 assert_true (ai_move (ai, 1, 3)); 8886 assert_true (ai_move (ai, 0, 4)); 8887 assert_true (ai_move (ai, 7, 5)); 8888 assert_true (ai_move (ai, 6, 5)); 8889 assert_true (ai_move (ai, 7, 4)); 8890 assert_true (ai_move (ai, 2, 4)); 8891 assert_true (ai_move (ai, 7, 3)); 8892 assert_true (ai_move (ai, 2, 6)); 8893 assert_true (ai_move (ai, 5, 1)); 8894 assert_true (ai_move (ai, 3, 2)); 8895 assert_true (ai_move (ai, 5, 5)); 8896 assert_true (ai_move (ai, 4, 2)); 8897 assert_true (ai_move (ai, 3, 6)); 8898 assert_true (ai_move (ai, 2, 7)); 8899 assert_true (ai_move (ai, 3, 1)); 8900 assert_true (ai_move (ai, 4, 1)); 8901 assert_true (ai_move (ai, 1, 5)); 8902 assert_true (ai_move (ai, 3, 5)); 8903 assert_true (ai_move (ai, 0, 2)); 8904 assert_true (ai_move (ai, 1, 4)); 8905 assert_true (ai_move (ai, 0, 5)); 8906 assert_true (ai_move (ai, 0, 3)); 8907 assert_true (ai_move (ai, 4, 0)); 8908 assert_true (ai_move (ai, 2, 1)); 8909 assert_true (ai_move (ai, 3, 7)); 8910 assert_true (ai_move (ai, 5, 2)); 8911 assert_true (ai_move (ai, 2, 0)); 8912 assert_true (ai_move (ai, 5, 4)); 8913 assert_true (ai_move (ai, 1, 7)); 8914 assert_true (ai_move (ai, 1, 6)); 8915 assert_true (ai_move (ai, 0, 6)); 8916 assert_true (ai_move (ai, 0, 7)); 8917 assert_true (ai_move (ai, 1, 1)); 8918 assert_true (ai_move (ai, 4, 7)); 8919 assert_true (ai_move (ai, 5, 7)); 8920 assert_true (ai_move (ai, 6, 7)); 8921 assert_true (ai_move (ai, 6, 6)); 8922 assert_true (ai_move (ai, 7, 2)); 8923 assert_true (ai_move (ai, 7, 1)); 8924 assert_true (ai_move (ai, 6, 1)); 8925 assert_true (ai_move (ai, 5, 0)); 8926 assert_true (ai_move (ai, 0, 1)); 8927 assert_true (game.pass ()); 8928 assert_true (ai_move (ai, 3, 0)); 8929 assert_true (ai_move (ai, 1, 0)); 8930 assert_true (ai_move (ai, 7, 7)); 8931 assert_true (ai_move (ai, 7, 6)); 8932 assert_true (ai_move (ai, 7, 0)); 8933 assert_true (ai_move (ai, 6, 0)); 8934 assert_true (ai_move (ai, 0, 0)); 8935 } 8936 8937 private static inline void test_complete_reversi_game_101 () 8938 { 8939 /* 0 1 2 3 4 5 6 7 */ 8940 string [] board = {/* 0 */ " . . . . . . . .", 8941 /* 1 */ " . . . . . . . .", 8942 /* 2 */ " . . . . . . . .", 8943 /* 3 */ " . . . L D . . .", 8944 /* 4 */ " . . . L D . . .", 8945 /* 5 */ " . . . D L . . .", 8946 /* 6 */ " . . D . . L . .", 8947 /* 7 */ " . . . . . . . ."}; 8948 8949 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 8950 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 8951 8952 assert_true (ai_move (ai, 5, 5)); 8953 assert_true (ai_move (ai, 3, 6)); 8954 assert_true (ai_move (ai, 5, 7)); 8955 assert_true (ai_move (ai, 6, 5)); 8956 assert_true (ai_move (ai, 5, 4)); 8957 assert_true (ai_move (ai, 6, 3)); 8958 assert_true (ai_move (ai, 5, 3)); 8959 assert_true (ai_move (ai, 6, 4)); 8960 assert_true (ai_move (ai, 7, 5)); 8961 assert_true (ai_move (ai, 7, 4)); 8962 assert_true (ai_move (ai, 7, 3)); 8963 assert_true (ai_move (ai, 7, 2)); 8964 assert_true (ai_move (ai, 7, 1)); 8965 assert_true (ai_move (ai, 6, 2)); 8966 assert_true (ai_move (ai, 5, 2)); 8967 assert_true (ai_move (ai, 4, 2)); 8968 assert_true (ai_move (ai, 3, 1)); 8969 assert_true (ai_move (ai, 4, 1)); 8970 assert_true (ai_move (ai, 3, 0)); 8971 assert_true (ai_move (ai, 2, 0)); 8972 assert_true (ai_move (ai, 1, 0)); 8973 assert_true (ai_move (ai, 6, 6)); 8974 assert_true (ai_move (ai, 2, 5)); 8975 assert_true (ai_move (ai, 1, 4)); 8976 assert_true (ai_move (ai, 1, 5)); 8977 assert_true (ai_move (ai, 4, 6)); 8978 assert_true (ai_move (ai, 4, 7)); 8979 assert_true (ai_move (ai, 4, 0)); 8980 assert_true (ai_move (ai, 5, 0)); 8981 assert_true (ai_move (ai, 3, 7)); 8982 assert_true (ai_move (ai, 2, 7)); 8983 assert_true (ai_move (ai, 6, 7)); 8984 assert_true (ai_move (ai, 7, 7)); 8985 assert_true (ai_move (ai, 5, 1)); 8986 assert_true (ai_move (ai, 0, 3)); 8987 assert_true (ai_move (ai, 0, 5)); 8988 assert_true (ai_move (ai, 0, 4)); 8989 assert_true (ai_move (ai, 0, 2)); 8990 assert_true (ai_move (ai, 2, 4)); 8991 assert_true (ai_move (ai, 3, 2)); 8992 assert_true (ai_move (ai, 2, 3)); 8993 assert_true (ai_move (ai, 1, 2)); 8994 assert_true (ai_move (ai, 6, 0)); 8995 assert_true (ai_move (ai, 2, 2)); 8996 assert_true (ai_move (ai, 2, 1)); 8997 assert_true (ai_move (ai, 1, 3)); 8998 assert_true (ai_move (ai, 6, 1)); 8999 assert_true (ai_move (ai, 7, 0)); 9000 assert_true (ai_move (ai, 0, 1)); 9001 assert_true (ai_move (ai, 0, 0)); 9002 assert_true (game.pass ()); 9003 assert_true (ai_move (ai, 1, 1)); 9004 assert_true (game.pass ()); 9005 assert_true (ai_move (ai, 1, 6)); 9006 assert_true (ai_move (ai, 0, 6)); 9007 assert_true (ai_move (ai, 7, 6)); 9008 assert_true (game.pass ()); 9009 assert_true (ai_move (ai, 1, 7)); 9010 assert_true (ai_move (ai, 0, 7)); 9011 } 9012 9013 private static inline void test_complete_reversi_game_102 () 9014 { 9015 /* 0 1 2 3 4 5 6 7 */ 9016 string [] board = {/* 0 */ " . . . . . . . .", 9017 /* 1 */ " . . . . . . . .", 9018 /* 2 */ " . . . . . . . .", 9019 /* 3 */ " . . . L D . . .", 9020 /* 4 */ " . . . L L . . .", 9021 /* 5 */ " . . . D D L . .", 9022 /* 6 */ " . . D . . . . .", 9023 /* 7 */ " . . . . . . . ."}; 9024 9025 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 9026 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 9027 9028 assert_true (ai_move (ai, 6, 5)); 9029 assert_true (ai_move (ai, 4, 6)); 9030 assert_true (ai_move (ai, 2, 5)); 9031 assert_true (ai_move (ai, 6, 4)); 9032 assert_true (ai_move (ai, 5, 6)); 9033 assert_true (ai_move (ai, 5, 7)); 9034 assert_true (ai_move (ai, 6, 3)); 9035 assert_true (ai_move (ai, 7, 3)); 9036 assert_true (ai_move (ai, 4, 7)); 9037 assert_true (ai_move (ai, 3, 7)); 9038 assert_true (ai_move (ai, 5, 4)); 9039 assert_true (ai_move (ai, 1, 5)); 9040 assert_true (ai_move (ai, 0, 5)); 9041 assert_true (ai_move (ai, 7, 4)); 9042 assert_true (ai_move (ai, 7, 5)); 9043 assert_true (ai_move (ai, 7, 6)); 9044 assert_true (ai_move (ai, 2, 7)); 9045 assert_true (ai_move (ai, 1, 7)); 9046 assert_true (ai_move (ai, 2, 2)); 9047 assert_true (ai_move (ai, 6, 2)); 9048 assert_true (ai_move (ai, 7, 2)); 9049 assert_true (ai_move (ai, 7, 1)); 9050 assert_true (ai_move (ai, 6, 1)); 9051 assert_true (ai_move (ai, 5, 2)); 9052 assert_true (ai_move (ai, 6, 7)); 9053 assert_true (ai_move (ai, 7, 7)); 9054 assert_true (ai_move (ai, 3, 6)); 9055 assert_true (ai_move (ai, 7, 0)); 9056 assert_true (ai_move (ai, 6, 0)); 9057 assert_true (ai_move (ai, 5, 0)); 9058 assert_true (ai_move (ai, 4, 2)); 9059 assert_true (ai_move (ai, 5, 1)); 9060 assert_true (game.pass ()); 9061 assert_true (ai_move (ai, 2, 3)); 9062 assert_true (ai_move (ai, 6, 6)); 9063 assert_true (ai_move (ai, 1, 4)); 9064 assert_true (ai_move (ai, 3, 2)); 9065 assert_true (ai_move (ai, 2, 4)); 9066 assert_true (ai_move (ai, 4, 1)); 9067 assert_true (ai_move (ai, 1, 3)); 9068 assert_true (ai_move (ai, 1, 2)); 9069 assert_true (ai_move (ai, 5, 3)); 9070 assert_true (ai_move (ai, 1, 6)); 9071 assert_true (ai_move (ai, 0, 3)); 9072 assert_true (ai_move (ai, 0, 4)); 9073 assert_true (ai_move (ai, 2, 1)); 9074 assert_true (ai_move (ai, 0, 2)); 9075 assert_true (ai_move (ai, 4, 0)); 9076 assert_true (ai_move (ai, 2, 0)); 9077 assert_true (ai_move (ai, 3, 1)); 9078 assert_true (ai_move (ai, 3, 0)); 9079 assert_true (ai_move (ai, 1, 0)); 9080 assert_true (ai_move (ai, 1, 1)); 9081 assert_true (ai_move (ai, 0, 0)); 9082 assert_true (ai_move (ai, 0, 1)); 9083 assert_true (ai_move (ai, 0, 6)); 9084 assert_true (ai_move (ai, 0, 7)); 9085 } 9086 9087 private static inline void test_complete_reversi_game_103 () 9088 { 9089 /* 0 1 2 3 4 5 6 7 */ 9090 string [] board = {/* 0 */ " . . . . . . . .", 9091 /* 1 */ " . . . . . . . .", 9092 /* 2 */ " . . . . . . . .", 9093 /* 3 */ " . . . L D . . .", 9094 /* 4 */ " . . . L L L . .", 9095 /* 5 */ " . . . D D . . .", 9096 /* 6 */ " . . D . . . . .", 9097 /* 7 */ " . . . . . . . ."}; 9098 9099 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 9100 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 9101 9102 assert_true (ai_move (ai, 6, 5)); 9103 assert_true (ai_move (ai, 6, 4)); 9104 assert_true (ai_move (ai, 2, 5)); 9105 assert_true (ai_move (ai, 5, 3)); 9106 assert_true (ai_move (ai, 5, 2)); 9107 assert_true (ai_move (ai, 5, 1)); 9108 assert_true (ai_move (ai, 2, 3)); 9109 assert_true (ai_move (ai, 4, 6)); 9110 assert_true (ai_move (ai, 5, 6)); 9111 assert_true (ai_move (ai, 3, 6)); 9112 assert_true (ai_move (ai, 3, 7)); 9113 assert_true (ai_move (ai, 2, 7)); 9114 assert_true (ai_move (ai, 1, 7)); 9115 assert_true (ai_move (ai, 1, 5)); 9116 assert_true (ai_move (ai, 2, 4)); 9117 assert_true (ai_move (ai, 1, 4)); 9118 assert_true (ai_move (ai, 0, 5)); 9119 assert_true (ai_move (ai, 0, 3)); 9120 assert_true (ai_move (ai, 0, 4)); 9121 assert_true (ai_move (ai, 0, 6)); 9122 assert_true (ai_move (ai, 6, 2)); 9123 assert_true (ai_move (ai, 2, 2)); 9124 assert_true (ai_move (ai, 4, 2)); 9125 assert_true (ai_move (ai, 7, 3)); 9126 assert_true (ai_move (ai, 7, 2)); 9127 assert_true (ai_move (ai, 3, 1)); 9128 assert_true (ai_move (ai, 3, 2)); 9129 assert_true (ai_move (ai, 5, 5)); 9130 assert_true (ai_move (ai, 7, 4)); 9131 assert_true (ai_move (ai, 2, 1)); 9132 assert_true (ai_move (ai, 6, 3)); 9133 assert_true (ai_move (ai, 4, 1)); 9134 assert_true (ai_move (ai, 4, 7)); 9135 assert_true (ai_move (ai, 5, 7)); 9136 assert_true (ai_move (ai, 6, 7)); 9137 assert_true (ai_move (ai, 7, 5)); 9138 assert_true (ai_move (ai, 7, 6)); 9139 assert_true (ai_move (ai, 6, 6)); 9140 assert_true (ai_move (ai, 1, 3)); 9141 assert_true (ai_move (ai, 1, 2)); 9142 assert_true (ai_move (ai, 1, 6)); 9143 assert_true (ai_move (ai, 7, 1)); 9144 assert_true (ai_move (ai, 7, 0)); 9145 assert_true (game.pass ()); 9146 assert_true (ai_move (ai, 6, 1)); 9147 assert_true (ai_move (ai, 6, 0)); 9148 assert_true (ai_move (ai, 5, 0)); 9149 assert_true (ai_move (ai, 4, 0)); 9150 assert_true (ai_move (ai, 3, 0)); 9151 assert_true (ai_move (ai, 2, 0)); 9152 assert_true (ai_move (ai, 1, 0)); 9153 assert_true (ai_move (ai, 1, 1)); 9154 assert_true (ai_move (ai, 0, 0)); 9155 assert_true (ai_move (ai, 0, 1)); 9156 assert_true (ai_move (ai, 7, 7)); 9157 assert_true (game.pass ()); 9158 assert_true (ai_move (ai, 0, 2)); 9159 assert_true (game.pass ()); 9160 assert_true (ai_move (ai, 0, 7)); 9161 } 9162 9163 private static inline void test_complete_reversi_game_104 () 9164 { 9165 /* 0 1 2 3 4 5 6 7 */ 9166 string [] board = {/* 0 */ " . . . . . . . .", 9167 /* 1 */ " . . . . . . . .", 9168 /* 2 */ " . . . . . . . .", 9169 /* 3 */ " . . . L L L . .", 9170 /* 4 */ " . . . L D . . .", 9171 /* 5 */ " . . . D D . . .", 9172 /* 6 */ " . . D . . . . .", 9173 /* 7 */ " . . . . . . . ."}; 9174 9175 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 9176 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 9177 9178 assert_true (ai_move (ai, 6, 2)); 9179 assert_true (ai_move (ai, 6, 3)); 9180 assert_true (ai_move (ai, 2, 3)); 9181 assert_true (ai_move (ai, 1, 3)); 9182 assert_true (ai_move (ai, 1, 2)); 9183 assert_true (ai_move (ai, 5, 5)); 9184 assert_true (ai_move (ai, 6, 5)); 9185 assert_true (ai_move (ai, 4, 6)); 9186 assert_true (ai_move (ai, 5, 6)); 9187 assert_true (ai_move (ai, 6, 4)); 9188 assert_true (ai_move (ai, 5, 7)); 9189 assert_true (ai_move (ai, 7, 5)); 9190 assert_true (ai_move (ai, 5, 4)); 9191 assert_true (ai_move (ai, 3, 7)); 9192 assert_true (ai_move (ai, 4, 7)); 9193 assert_true (ai_move (ai, 6, 7)); 9194 assert_true (ai_move (ai, 7, 2)); 9195 assert_true (ai_move (ai, 1, 5)); 9196 assert_true (ai_move (ai, 7, 3)); 9197 assert_true (ai_move (ai, 2, 5)); 9198 assert_true (ai_move (ai, 5, 2)); 9199 assert_true (ai_move (ai, 5, 1)); 9200 assert_true (ai_move (ai, 3, 6)); 9201 assert_true (ai_move (ai, 7, 4)); 9202 assert_true (ai_move (ai, 7, 6)); 9203 assert_true (ai_move (ai, 2, 7)); 9204 assert_true (ai_move (ai, 4, 1)); 9205 assert_true (ai_move (ai, 3, 1)); 9206 assert_true (ai_move (ai, 5, 0)); 9207 assert_true (ai_move (ai, 0, 1)); 9208 assert_true (ai_move (ai, 2, 4)); 9209 assert_true (ai_move (ai, 6, 1)); 9210 assert_true (ai_move (ai, 7, 1)); 9211 assert_true (ai_move (ai, 4, 2)); 9212 assert_true (ai_move (ai, 3, 0)); 9213 assert_true (ai_move (ai, 1, 4)); 9214 assert_true (ai_move (ai, 4, 0)); 9215 assert_true (ai_move (ai, 6, 6)); 9216 assert_true (ai_move (ai, 0, 4)); 9217 assert_true (ai_move (ai, 0, 5)); 9218 assert_true (ai_move (ai, 2, 0)); 9219 assert_true (ai_move (ai, 0, 3)); 9220 assert_true (ai_move (ai, 7, 7)); 9221 assert_true (ai_move (ai, 6, 0)); 9222 assert_true (ai_move (ai, 7, 0)); 9223 assert_true (ai_move (ai, 2, 1)); 9224 assert_true (ai_move (ai, 1, 7)); 9225 assert_true (ai_move (ai, 1, 6)); 9226 assert_true (ai_move (ai, 0, 7)); 9227 assert_true (ai_move (ai, 0, 6)); 9228 assert_true (ai_move (ai, 0, 2)); 9229 assert_true (game.pass ()); 9230 assert_true (ai_move (ai, 1, 1)); 9231 assert_true (ai_move (ai, 1, 0)); 9232 assert_true (ai_move (ai, 2, 2)); 9233 assert_true (ai_move (ai, 3, 2)); 9234 assert_true (ai_move (ai, 0, 0)); 9235 } 9236 9237 private static inline void test_complete_reversi_game_105 () 9238 { 9239 /* 0 1 2 3 4 5 6 7 */ 9240 string [] board = {/* 0 */ " . . . . . . . .", 9241 /* 1 */ " . . . . . . . .", 9242 /* 2 */ " . . . . . L . .", 9243 /* 3 */ " . . . L L . . .", 9244 /* 4 */ " . . . L D . . .", 9245 /* 5 */ " . . . D D . . .", 9246 /* 6 */ " . . D . . . . .", 9247 /* 7 */ " . . . . . . . ."}; 9248 9249 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 9250 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 9251 9252 assert_true (ai_move (ai, 2, 3)); 9253 assert_true (ai_move (ai, 1, 3)); 9254 assert_true (ai_move (ai, 1, 2)); 9255 assert_true (ai_move (ai, 5, 5)); 9256 assert_true (ai_move (ai, 6, 5)); 9257 assert_true (ai_move (ai, 4, 6)); 9258 assert_true (ai_move (ai, 5, 6)); 9259 assert_true (ai_move (ai, 6, 4)); 9260 assert_true (ai_move (ai, 5, 4)); 9261 assert_true (ai_move (ai, 2, 5)); 9262 assert_true (ai_move (ai, 2, 4)); 9263 assert_true (ai_move (ai, 1, 5)); 9264 assert_true (ai_move (ai, 0, 5)); 9265 assert_true (ai_move (ai, 2, 2)); 9266 assert_true (ai_move (ai, 2, 1)); 9267 assert_true (ai_move (ai, 3, 1)); 9268 assert_true (ai_move (ai, 3, 2)); 9269 assert_true (ai_move (ai, 3, 6)); 9270 assert_true (ai_move (ai, 5, 7)); 9271 assert_true (ai_move (ai, 1, 4)); 9272 assert_true (ai_move (ai, 0, 2)); 9273 assert_true (ai_move (ai, 7, 5)); 9274 assert_true (ai_move (ai, 2, 7)); 9275 assert_true (ai_move (ai, 2, 0)); 9276 assert_true (ai_move (ai, 0, 4)); 9277 assert_true (ai_move (ai, 0, 3)); 9278 assert_true (ai_move (ai, 7, 3)); 9279 assert_true (ai_move (ai, 6, 3)); 9280 assert_true (ai_move (ai, 4, 0)); 9281 assert_true (ai_move (ai, 3, 0)); 9282 assert_true (ai_move (ai, 5, 3)); 9283 assert_true (ai_move (ai, 7, 4)); 9284 assert_true (ai_move (ai, 5, 1)); 9285 assert_true (ai_move (ai, 7, 2)); 9286 assert_true (ai_move (ai, 4, 1)); 9287 assert_true (ai_move (ai, 4, 2)); 9288 assert_true (ai_move (ai, 6, 2)); 9289 assert_true (ai_move (ai, 5, 0)); 9290 assert_true (ai_move (ai, 1, 6)); 9291 assert_true (ai_move (ai, 6, 6)); 9292 assert_true (ai_move (ai, 1, 0)); 9293 assert_true (ai_move (ai, 0, 0)); 9294 assert_true (ai_move (ai, 0, 1)); 9295 assert_true (ai_move (ai, 7, 1)); 9296 assert_true (ai_move (ai, 7, 6)); 9297 assert_true (ai_move (ai, 7, 7)); 9298 assert_true (ai_move (ai, 6, 7)); 9299 assert_true (ai_move (ai, 4, 7)); 9300 assert_true (ai_move (ai, 1, 1)); 9301 assert_true (ai_move (ai, 6, 0)); 9302 assert_true (ai_move (ai, 3, 7)); 9303 assert_true (ai_move (ai, 0, 7)); 9304 assert_true (ai_move (ai, 1, 7)); 9305 assert_true (ai_move (ai, 0, 6)); 9306 assert_true (ai_move (ai, 6, 1)); 9307 assert_true (ai_move (ai, 7, 0)); 9308 } 9309 9310 private static inline void test_complete_reversi_game_106 () 9311 { 9312 /* 0 1 2 3 4 5 6 7 */ 9313 string [] board = {/* 0 */ " . . . . . . . .", 9314 /* 1 */ " . . . . . . . .", 9315 /* 2 */ " . . . . . . . .", 9316 /* 3 */ " . . . L D . . .", 9317 /* 4 */ " . . . L D . . .", 9318 /* 5 */ " . . . L D . . .", 9319 /* 6 */ " . . D L . . . .", 9320 /* 7 */ " . . . . . . . ."}; 9321 9322 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 9323 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 9324 9325 assert_true (ai_move (ai, 2, 7)); 9326 assert_true (ai_move (ai, 5, 6)); 9327 assert_true (ai_move (ai, 5, 4)); 9328 assert_true (ai_move (ai, 5, 5)); 9329 assert_true (ai_move (ai, 5, 7)); 9330 assert_true (ai_move (ai, 6, 5)); 9331 assert_true (ai_move (ai, 7, 4)); 9332 assert_true (ai_move (ai, 6, 3)); 9333 assert_true (ai_move (ai, 5, 2)); 9334 assert_true (ai_move (ai, 5, 3)); 9335 assert_true (ai_move (ai, 6, 2)); 9336 assert_true (ai_move (ai, 5, 1)); 9337 assert_true (ai_move (ai, 6, 4)); 9338 assert_true (ai_move (ai, 2, 5)); 9339 assert_true (ai_move (ai, 1, 5)); 9340 assert_true (ai_move (ai, 7, 2)); 9341 assert_true (ai_move (ai, 4, 1)); 9342 assert_true (ai_move (ai, 7, 3)); 9343 assert_true (ai_move (ai, 7, 1)); 9344 assert_true (ai_move (ai, 4, 6)); 9345 assert_true (ai_move (ai, 3, 7)); 9346 assert_true (ai_move (ai, 0, 5)); 9347 assert_true (ai_move (ai, 1, 4)); 9348 assert_true (ai_move (ai, 2, 3)); 9349 assert_true (ai_move (ai, 5, 0)); 9350 assert_true (ai_move (ai, 4, 7)); 9351 assert_true (ai_move (ai, 2, 4)); 9352 assert_true (ai_move (ai, 3, 0)); 9353 assert_true (ai_move (ai, 1, 2)); 9354 assert_true (ai_move (ai, 3, 2)); 9355 assert_true (ai_move (ai, 0, 3)); 9356 assert_true (ai_move (ai, 1, 6)); 9357 assert_true (ai_move (ai, 2, 1)); 9358 assert_true (ai_move (ai, 4, 2)); 9359 assert_true (ai_move (ai, 4, 0)); 9360 assert_true (ai_move (ai, 2, 2)); 9361 assert_true (ai_move (ai, 1, 3)); 9362 assert_true (ai_move (ai, 7, 5)); 9363 assert_true (ai_move (ai, 7, 6)); 9364 assert_true (ai_move (ai, 1, 7)); 9365 assert_true (ai_move (ai, 3, 1)); 9366 assert_true (ai_move (ai, 6, 7)); 9367 assert_true (ai_move (ai, 2, 0)); 9368 assert_true (ai_move (ai, 0, 4)); 9369 assert_true (ai_move (ai, 6, 6)); 9370 assert_true (ai_move (ai, 0, 2)); 9371 assert_true (ai_move (ai, 1, 1)); 9372 assert_true (ai_move (ai, 6, 1)); 9373 assert_true (ai_move (ai, 7, 0)); 9374 assert_true (ai_move (ai, 6, 0)); 9375 assert_true (ai_move (ai, 0, 7)); 9376 assert_true (ai_move (ai, 1, 0)); 9377 assert_true (ai_move (ai, 7, 7)); 9378 assert_true (ai_move (ai, 0, 6)); 9379 assert_true (ai_move (ai, 0, 0)); 9380 assert_true (ai_move (ai, 0, 1)); 9381 } 9382 9383 private static inline void test_complete_reversi_game_107 () 9384 { 9385 /* 0 1 2 3 4 5 6 7 */ 9386 string [] board = {/* 0 */ " . . . . . . . .", 9387 /* 1 */ " . . . . . . . .", 9388 /* 2 */ " . . . . . . . .", 9389 /* 3 */ " . . . L D . . .", 9390 /* 4 */ " . . . D L . . .", 9391 /* 5 */ " . . D D D L . .", 9392 /* 6 */ " . . . . . . . .", 9393 /* 7 */ " . . . . . . . ."}; 9394 9395 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 9396 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 9397 9398 assert_true (ai_move (ai, 6, 5)); 9399 assert_true (ai_move (ai, 2, 6)); 9400 assert_true (ai_move (ai, 3, 6)); 9401 assert_true (ai_move (ai, 2, 4)); 9402 assert_true (ai_move (ai, 1, 5)); 9403 assert_true (ai_move (ai, 3, 7)); 9404 assert_true (ai_move (ai, 4, 7)); 9405 assert_true (ai_move (ai, 5, 7)); 9406 assert_true (ai_move (ai, 2, 7)); 9407 assert_true (ai_move (ai, 1, 7)); 9408 assert_true (ai_move (ai, 4, 2)); 9409 assert_true (ai_move (ai, 4, 6)); 9410 assert_true (ai_move (ai, 5, 4)); 9411 assert_true (ai_move (ai, 1, 4)); 9412 assert_true (ai_move (ai, 0, 4)); 9413 assert_true (ai_move (ai, 6, 4)); 9414 assert_true (ai_move (ai, 7, 4)); 9415 assert_true (ai_move (ai, 6, 3)); 9416 assert_true (ai_move (ai, 5, 6)); 9417 assert_true (ai_move (ai, 5, 3)); 9418 assert_true (ai_move (ai, 7, 2)); 9419 assert_true (ai_move (ai, 1, 3)); 9420 assert_true (ai_move (ai, 5, 2)); 9421 assert_true (ai_move (ai, 6, 2)); 9422 assert_true (ai_move (ai, 2, 2)); 9423 assert_true (ai_move (ai, 0, 5)); 9424 assert_true (ai_move (ai, 0, 6)); 9425 assert_true (ai_move (ai, 5, 1)); 9426 assert_true (ai_move (ai, 4, 1)); 9427 assert_true (ai_move (ai, 0, 2)); 9428 assert_true (ai_move (ai, 5, 0)); 9429 assert_true (ai_move (ai, 3, 1)); 9430 assert_true (ai_move (ai, 3, 2)); 9431 assert_true (ai_move (ai, 4, 0)); 9432 assert_true (ai_move (ai, 2, 0)); 9433 assert_true (ai_move (ai, 6, 0)); 9434 assert_true (ai_move (ai, 1, 2)); 9435 assert_true (ai_move (ai, 7, 5)); 9436 assert_true (ai_move (ai, 3, 0)); 9437 assert_true (ai_move (ai, 1, 0)); 9438 assert_true (ai_move (ai, 1, 6)); 9439 assert_true (ai_move (ai, 7, 3)); 9440 assert_true (ai_move (ai, 7, 6)); 9441 assert_true (ai_move (ai, 2, 1)); 9442 assert_true (ai_move (ai, 2, 3)); 9443 assert_true (ai_move (ai, 0, 3)); 9444 assert_true (ai_move (ai, 0, 1)); 9445 assert_true (ai_move (ai, 1, 1)); 9446 assert_true (ai_move (ai, 7, 1)); 9447 assert_true (ai_move (ai, 6, 7)); 9448 assert_true (ai_move (ai, 0, 0)); 9449 assert_true (ai_move (ai, 0, 7)); 9450 assert_true (ai_move (ai, 7, 0)); 9451 assert_true (ai_move (ai, 6, 6)); 9452 assert_true (ai_move (ai, 7, 7)); 9453 assert_true (ai_move (ai, 6, 1)); 9454 } 9455 9456 private static inline void test_complete_reversi_game_108 () 9457 { 9458 /* 0 1 2 3 4 5 6 7 */ 9459 string [] board = {/* 0 */ " . . . . . . . .", 9460 /* 1 */ " . . . . . . . .", 9461 /* 2 */ " . . . . . . . .", 9462 /* 3 */ " . . . L L L . .", 9463 /* 4 */ " . . . D D . . .", 9464 /* 5 */ " . . D D D . . .", 9465 /* 6 */ " . . . . . . . .", 9466 /* 7 */ " . . . . . . . ."}; 9467 9468 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 9469 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 9470 9471 assert_true (ai_move (ai, 6, 2)); 9472 assert_true (ai_move (ai, 6, 3)); 9473 assert_true (ai_move (ai, 2, 2)); 9474 assert_true (ai_move (ai, 7, 1)); 9475 assert_true (ai_move (ai, 4, 2)); 9476 assert_true (ai_move (ai, 3, 1)); 9477 assert_true (ai_move (ai, 4, 1)); 9478 assert_true (ai_move (ai, 1, 3)); 9479 assert_true (ai_move (ai, 6, 4)); 9480 assert_true (ai_move (ai, 6, 5)); 9481 assert_true (ai_move (ai, 7, 5)); 9482 assert_true (ai_move (ai, 5, 1)); 9483 assert_true (ai_move (ai, 5, 5)); 9484 assert_true (ai_move (ai, 2, 4)); 9485 assert_true (ai_move (ai, 1, 4)); 9486 assert_true (ai_move (ai, 1, 5)); 9487 assert_true (ai_move (ai, 0, 4)); 9488 assert_true (ai_move (ai, 3, 6)); 9489 assert_true (ai_move (ai, 4, 6)); 9490 assert_true (ai_move (ai, 5, 4)); 9491 assert_true (ai_move (ai, 0, 5)); 9492 assert_true (ai_move (ai, 2, 6)); 9493 assert_true (ai_move (ai, 3, 7)); 9494 assert_true (ai_move (ai, 0, 3)); 9495 assert_true (ai_move (ai, 2, 3)); 9496 assert_true (ai_move (ai, 5, 7)); 9497 assert_true (ai_move (ai, 2, 1)); 9498 assert_true (ai_move (ai, 5, 6)); 9499 assert_true (ai_move (ai, 0, 2)); 9500 assert_true (ai_move (ai, 2, 0)); 9501 assert_true (ai_move (ai, 3, 2)); 9502 assert_true (ai_move (ai, 5, 2)); 9503 assert_true (ai_move (ai, 1, 2)); 9504 assert_true (ai_move (ai, 2, 7)); 9505 assert_true (ai_move (ai, 4, 7)); 9506 assert_true (ai_move (ai, 7, 4)); 9507 assert_true (ai_move (ai, 5, 0)); 9508 assert_true (ai_move (ai, 3, 0)); 9509 assert_true (ai_move (ai, 4, 0)); 9510 assert_true (ai_move (ai, 6, 0)); 9511 assert_true (ai_move (ai, 7, 2)); 9512 assert_true (ai_move (ai, 6, 1)); 9513 assert_true (ai_move (ai, 7, 0)); 9514 assert_true (ai_move (ai, 1, 1)); 9515 assert_true (ai_move (ai, 0, 0)); 9516 assert_true (ai_move (ai, 7, 6)); 9517 assert_true (ai_move (ai, 1, 0)); 9518 assert_true (ai_move (ai, 6, 6)); 9519 assert_true (ai_move (ai, 7, 3)); 9520 assert_true (ai_move (ai, 0, 1)); 9521 assert_true (ai_move (ai, 7, 7)); 9522 assert_true (ai_move (ai, 6, 7)); 9523 assert_true (ai_move (ai, 1, 6)); 9524 assert_true (ai_move (ai, 0, 7)); 9525 assert_true (ai_move (ai, 1, 7)); 9526 assert_true (ai_move (ai, 0, 6)); 9527 } 9528 9529 private static inline void test_complete_reversi_game_109 () 9530 { 9531 /* 0 1 2 3 4 5 6 7 */ 9532 string [] board = {/* 0 */ " . . . . . . . .", 9533 /* 1 */ " . . . . . . . .", 9534 /* 2 */ " . . . . . . . .", 9535 /* 3 */ " . . . L D . . .", 9536 /* 4 */ " . . . L D . . .", 9537 /* 5 */ " . . D L D . . .", 9538 /* 6 */ " . . . L . . . .", 9539 /* 7 */ " . . . . . . . ."}; 9540 9541 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 9542 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 9543 9544 assert_true (ai_move (ai, 2, 6)); 9545 assert_true (ai_move (ai, 1, 4)); 9546 assert_true (ai_move (ai, 1, 5)); 9547 assert_true (ai_move (ai, 5, 6)); 9548 assert_true (ai_move (ai, 5, 5)); 9549 assert_true (ai_move (ai, 5, 2)); 9550 assert_true (ai_move (ai, 5, 7)); 9551 assert_true (ai_move (ai, 5, 4)); 9552 assert_true (ai_move (ai, 4, 7)); 9553 assert_true (ai_move (ai, 6, 5)); 9554 assert_true (ai_move (ai, 7, 5)); 9555 assert_true (ai_move (ai, 2, 7)); 9556 assert_true (ai_move (ai, 4, 6)); 9557 assert_true (ai_move (ai, 0, 5)); 9558 assert_true (ai_move (ai, 6, 3)); 9559 assert_true (ai_move (ai, 1, 7)); 9560 assert_true (ai_move (ai, 4, 1)); 9561 assert_true (ai_move (ai, 6, 4)); 9562 assert_true (ai_move (ai, 7, 3)); 9563 assert_true (ai_move (ai, 7, 4)); 9564 assert_true (ai_move (ai, 5, 3)); 9565 assert_true (ai_move (ai, 6, 2)); 9566 assert_true (ai_move (ai, 7, 2)); 9567 assert_true (ai_move (ai, 5, 1)); 9568 assert_true (ai_move (ai, 5, 0)); 9569 assert_true (ai_move (ai, 3, 0)); 9570 assert_true (ai_move (ai, 3, 1)); 9571 assert_true (ai_move (ai, 3, 2)); 9572 assert_true (ai_move (ai, 4, 2)); 9573 assert_true (ai_move (ai, 6, 1)); 9574 assert_true (ai_move (ai, 2, 1)); 9575 assert_true (ai_move (ai, 2, 2)); 9576 assert_true (ai_move (ai, 1, 2)); 9577 assert_true (ai_move (ai, 2, 3)); 9578 assert_true (ai_move (ai, 2, 0)); 9579 assert_true (ai_move (ai, 0, 2)); 9580 assert_true (ai_move (ai, 4, 0)); 9581 assert_true (ai_move (ai, 6, 0)); 9582 assert_true (ai_move (ai, 7, 0)); 9583 assert_true (ai_move (ai, 7, 1)); 9584 assert_true (ai_move (ai, 2, 4)); 9585 assert_true (ai_move (ai, 1, 3)); 9586 assert_true (ai_move (ai, 0, 4)); 9587 assert_true (ai_move (ai, 0, 3)); 9588 assert_true (ai_move (ai, 0, 1)); 9589 assert_true (ai_move (ai, 0, 0)); 9590 assert_true (ai_move (ai, 1, 6)); 9591 assert_true (ai_move (ai, 0, 6)); 9592 assert_true (game.pass ()); 9593 assert_true (ai_move (ai, 0, 7)); 9594 assert_true (game.pass ()); 9595 assert_true (ai_move (ai, 3, 7)); 9596 assert_true (ai_move (ai, 6, 6)); 9597 assert_true (ai_move (ai, 1, 0)); 9598 assert_true (ai_move (ai, 1, 1)); 9599 assert_true (ai_move (ai, 7, 7)); 9600 assert_true (ai_move (ai, 6, 7)); 9601 assert_true (ai_move (ai, 7, 6)); 9602 } 9603 9604 private static inline void test_complete_reversi_game_110 () 9605 { 9606 /* 0 1 2 3 4 5 6 7 */ 9607 string [] board = {/* 0 */ " . . . . . . . .", 9608 /* 1 */ " . . . . . . . .", 9609 /* 2 */ " . . . . . . . .", 9610 /* 3 */ " . . . L D . . .", 9611 /* 4 */ " . . D D L . . .", 9612 /* 5 */ " . . . L L L . .", 9613 /* 6 */ " . . . . . . . .", 9614 /* 7 */ " . . . . . . . ."}; 9615 9616 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 9617 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 9618 9619 assert_true (ai_move (ai, 5, 6)); 9620 assert_true (ai_move (ai, 4, 6)); 9621 assert_true (ai_move (ai, 2, 3)); 9622 assert_true (ai_move (ai, 5, 7)); 9623 assert_true (ai_move (ai, 5, 4)); 9624 assert_true (ai_move (ai, 6, 3)); 9625 assert_true (ai_move (ai, 6, 4)); 9626 assert_true (ai_move (ai, 7, 3)); 9627 assert_true (ai_move (ai, 7, 2)); 9628 assert_true (ai_move (ai, 6, 2)); 9629 assert_true (ai_move (ai, 5, 2)); 9630 assert_true (ai_move (ai, 5, 3)); 9631 assert_true (ai_move (ai, 2, 6)); 9632 assert_true (ai_move (ai, 2, 5)); 9633 assert_true (ai_move (ai, 3, 6)); 9634 assert_true (ai_move (ai, 1, 2)); 9635 assert_true (ai_move (ai, 1, 5)); 9636 assert_true (ai_move (ai, 0, 5)); 9637 assert_true (ai_move (ai, 1, 4)); 9638 assert_true (ai_move (ai, 2, 7)); 9639 assert_true (ai_move (ai, 3, 2)); 9640 assert_true (ai_move (ai, 5, 1)); 9641 assert_true (ai_move (ai, 4, 1)); 9642 assert_true (ai_move (ai, 7, 1)); 9643 assert_true (ai_move (ai, 5, 0)); 9644 assert_true (ai_move (ai, 4, 2)); 9645 assert_true (ai_move (ai, 6, 5)); 9646 assert_true (ai_move (ai, 7, 4)); 9647 assert_true (ai_move (ai, 4, 7)); 9648 assert_true (ai_move (ai, 3, 7)); 9649 assert_true (ai_move (ai, 2, 2)); 9650 assert_true (ai_move (ai, 2, 1)); 9651 assert_true (ai_move (ai, 3, 1)); 9652 assert_true (ai_move (ai, 1, 6)); 9653 assert_true (ai_move (ai, 1, 3)); 9654 assert_true (ai_move (ai, 0, 4)); 9655 assert_true (ai_move (ai, 7, 5)); 9656 assert_true (ai_move (ai, 7, 6)); 9657 assert_true (ai_move (ai, 2, 0)); 9658 assert_true (ai_move (ai, 0, 2)); 9659 assert_true (ai_move (ai, 0, 3)); 9660 assert_true (ai_move (ai, 4, 0)); 9661 assert_true (ai_move (ai, 1, 1)); 9662 assert_true (ai_move (ai, 6, 0)); 9663 assert_true (ai_move (ai, 6, 6)); 9664 assert_true (ai_move (ai, 6, 7)); 9665 assert_true (ai_move (ai, 7, 7)); 9666 assert_true (ai_move (ai, 1, 0)); 9667 assert_true (ai_move (ai, 3, 0)); 9668 assert_true (ai_move (ai, 0, 1)); 9669 assert_true (ai_move (ai, 7, 0)); 9670 assert_true (game.pass ()); 9671 assert_true (ai_move (ai, 1, 7)); 9672 assert_true (game.pass ()); 9673 assert_true (ai_move (ai, 6, 1)); 9674 assert_true (game.pass ()); 9675 assert_true (ai_move (ai, 0, 7)); 9676 assert_true (ai_move (ai, 0, 6)); 9677 assert_true (ai_move (ai, 0, 0)); 9678 } 9679 9680 private static inline void test_complete_reversi_game_111 () 9681 { 9682 /* 0 1 2 3 4 5 6 7 */ 9683 string [] board = {/* 0 */ " . . . . . . . .", 9684 /* 1 */ " . . . . . . . .", 9685 /* 2 */ " . . . . . . . .", 9686 /* 3 */ " . . . L L L . .", 9687 /* 4 */ " . . D D L . . .", 9688 /* 5 */ " . . . L D . . .", 9689 /* 6 */ " . . . . . . . .", 9690 /* 7 */ " . . . . . . . ."}; 9691 9692 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 9693 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 9694 9695 assert_true (ai_move (ai, 2, 5)); 9696 assert_true (ai_move (ai, 2, 6)); 9697 assert_true (ai_move (ai, 4, 6)); 9698 assert_true (ai_move (ai, 2, 3)); 9699 assert_true (ai_move (ai, 1, 5)); 9700 assert_true (ai_move (ai, 0, 4)); 9701 assert_true (ai_move (ai, 0, 5)); 9702 assert_true (ai_move (ai, 3, 6)); 9703 assert_true (ai_move (ai, 1, 3)); 9704 assert_true (ai_move (ai, 1, 4)); 9705 assert_true (ai_move (ai, 0, 3)); 9706 assert_true (ai_move (ai, 5, 5)); 9707 assert_true (ai_move (ai, 6, 5)); 9708 assert_true (ai_move (ai, 5, 4)); 9709 assert_true (ai_move (ai, 6, 4)); 9710 assert_true (ai_move (ai, 5, 6)); 9711 assert_true (ai_move (ai, 5, 7)); 9712 assert_true (ai_move (ai, 4, 7)); 9713 assert_true (ai_move (ai, 6, 2)); 9714 assert_true (ai_move (ai, 5, 2)); 9715 assert_true (ai_move (ai, 5, 1)); 9716 assert_true (ai_move (ai, 6, 3)); 9717 assert_true (ai_move (ai, 2, 7)); 9718 assert_true (ai_move (ai, 4, 1)); 9719 assert_true (ai_move (ai, 3, 7)); 9720 assert_true (ai_move (ai, 7, 2)); 9721 assert_true (ai_move (ai, 1, 2)); 9722 assert_true (ai_move (ai, 5, 0)); 9723 assert_true (ai_move (ai, 2, 2)); 9724 assert_true (ai_move (ai, 7, 4)); 9725 assert_true (ai_move (ai, 3, 2)); 9726 assert_true (ai_move (ai, 7, 5)); 9727 assert_true (ai_move (ai, 7, 3)); 9728 assert_true (ai_move (ai, 2, 1)); 9729 assert_true (ai_move (ai, 4, 2)); 9730 assert_true (ai_move (ai, 3, 1)); 9731 assert_true (ai_move (ai, 2, 0)); 9732 assert_true (ai_move (ai, 0, 2)); 9733 assert_true (ai_move (ai, 0, 1)); 9734 assert_true (ai_move (ai, 6, 6)); 9735 assert_true (ai_move (ai, 3, 0)); 9736 assert_true (ai_move (ai, 0, 6)); 9737 assert_true (ai_move (ai, 0, 7)); 9738 assert_true (ai_move (ai, 1, 7)); 9739 assert_true (ai_move (ai, 6, 0)); 9740 assert_true (ai_move (ai, 6, 7)); 9741 assert_true (ai_move (ai, 4, 0)); 9742 assert_true (ai_move (ai, 1, 0)); 9743 assert_true (ai_move (ai, 0, 0)); 9744 assert_true (ai_move (ai, 6, 1)); 9745 assert_true (ai_move (ai, 1, 6)); 9746 assert_true (ai_move (ai, 1, 1)); 9747 assert_true (ai_move (ai, 7, 7)); 9748 assert_true (ai_move (ai, 7, 6)); 9749 assert_true (ai_move (ai, 7, 1)); 9750 assert_true (ai_move (ai, 7, 0)); 9751 } 9752 9753 private static inline void test_complete_reversi_game_112 () 9754 { 9755 /* 0 1 2 3 4 5 6 7 */ 9756 string [] board = {/* 0 */ " . . . . . . . .", 9757 /* 1 */ " . . . . . . . .", 9758 /* 2 */ " . . . . . . . .", 9759 /* 3 */ " . . . L D . . .", 9760 /* 4 */ " . . L D D . . .", 9761 /* 5 */ " . L . L D . . .", 9762 /* 6 */ " . . . . . . . .", 9763 /* 7 */ " . . . . . . . ."}; 9764 9765 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 9766 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 9767 9768 assert_true (ai_move (ai, 1, 4)); 9769 assert_true (ai_move (ai, 5, 5)); 9770 assert_true (ai_move (ai, 5, 6)); 9771 assert_true (ai_move (ai, 4, 6)); 9772 assert_true (ai_move (ai, 2, 3)); 9773 assert_true (ai_move (ai, 5, 7)); 9774 assert_true (ai_move (ai, 5, 4)); 9775 assert_true (ai_move (ai, 6, 3)); 9776 assert_true (ai_move (ai, 6, 4)); 9777 assert_true (ai_move (ai, 7, 3)); 9778 assert_true (ai_move (ai, 7, 2)); 9779 assert_true (ai_move (ai, 6, 2)); 9780 assert_true (ai_move (ai, 5, 2)); 9781 assert_true (ai_move (ai, 5, 3)); 9782 assert_true (ai_move (ai, 2, 6)); 9783 assert_true (ai_move (ai, 3, 7)); 9784 assert_true (ai_move (ai, 4, 7)); 9785 assert_true (ai_move (ai, 5, 1)); 9786 assert_true (ai_move (ai, 6, 5)); 9787 assert_true (ai_move (ai, 3, 6)); 9788 assert_true (ai_move (ai, 7, 4)); 9789 assert_true (ai_move (ai, 7, 5)); 9790 assert_true (ai_move (ai, 7, 6)); 9791 assert_true (ai_move (ai, 1, 2)); 9792 assert_true (ai_move (ai, 4, 2)); 9793 assert_true (ai_move (ai, 2, 5)); 9794 assert_true (ai_move (ai, 0, 5)); 9795 assert_true (ai_move (ai, 4, 1)); 9796 assert_true (ai_move (ai, 3, 2)); 9797 assert_true (ai_move (ai, 0, 3)); 9798 assert_true (ai_move (ai, 3, 0)); 9799 assert_true (ai_move (ai, 2, 2)); 9800 assert_true (ai_move (ai, 0, 2)); 9801 assert_true (ai_move (ai, 0, 4)); 9802 assert_true (ai_move (ai, 5, 0)); 9803 assert_true (ai_move (ai, 2, 1)); 9804 assert_true (ai_move (ai, 1, 3)); 9805 assert_true (ai_move (ai, 3, 1)); 9806 assert_true (ai_move (ai, 4, 0)); 9807 assert_true (ai_move (ai, 6, 1)); 9808 assert_true (ai_move (ai, 2, 0)); 9809 assert_true (ai_move (ai, 1, 1)); 9810 assert_true (ai_move (ai, 2, 7)); 9811 assert_true (ai_move (ai, 1, 6)); 9812 assert_true (ai_move (ai, 6, 7)); 9813 assert_true (ai_move (ai, 6, 6)); 9814 assert_true (ai_move (ai, 1, 0)); 9815 assert_true (ai_move (ai, 0, 0)); 9816 assert_true (ai_move (ai, 0, 1)); 9817 assert_true (ai_move (ai, 6, 0)); 9818 assert_true (ai_move (ai, 7, 7)); 9819 assert_true (ai_move (ai, 0, 6)); 9820 assert_true (ai_move (ai, 0, 7)); 9821 assert_true (ai_move (ai, 1, 7)); 9822 assert_true (ai_move (ai, 7, 1)); 9823 assert_true (ai_move (ai, 7, 0)); 9824 } 9825 9826 private static inline void test_complete_reversi_game_113 () 9827 { 9828 /* 0 1 2 3 4 5 6 7 */ 9829 string [] board = {/* 0 */ " . . . . . . . .", 9830 /* 1 */ " . . . . . . . .", 9831 /* 2 */ " . . . . . . . .", 9832 /* 3 */ " . L . L D . . .", 9833 /* 4 */ " . . L D D . . .", 9834 /* 5 */ " . . . L D . . .", 9835 /* 6 */ " . . . . . . . .", 9836 /* 7 */ " . . . . . . . ."}; 9837 9838 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 9839 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 9840 9841 assert_true (ai_move (ai, 1, 4)); 9842 assert_true (ai_move (ai, 5, 5)); 9843 assert_true (ai_move (ai, 5, 6)); 9844 assert_true (ai_move (ai, 4, 6)); 9845 assert_true (ai_move (ai, 0, 2)); 9846 assert_true (ai_move (ai, 1, 5)); 9847 assert_true (ai_move (ai, 2, 3)); 9848 assert_true (ai_move (ai, 2, 2)); 9849 assert_true (ai_move (ai, 1, 2)); 9850 assert_true (ai_move (ai, 0, 3)); 9851 assert_true (ai_move (ai, 0, 4)); 9852 assert_true (ai_move (ai, 5, 7)); 9853 assert_true (ai_move (ai, 3, 1)); 9854 assert_true (ai_move (ai, 2, 1)); 9855 assert_true (ai_move (ai, 3, 2)); 9856 assert_true (ai_move (ai, 4, 1)); 9857 assert_true (ai_move (ai, 5, 0)); 9858 assert_true (ai_move (ai, 5, 1)); 9859 assert_true (ai_move (ai, 2, 0)); 9860 assert_true (ai_move (ai, 0, 5)); 9861 assert_true (ai_move (ai, 2, 5)); 9862 assert_true (ai_move (ai, 0, 1)); 9863 assert_true (ai_move (ai, 6, 5)); 9864 assert_true (ai_move (ai, 6, 4)); 9865 assert_true (ai_move (ai, 4, 2)); 9866 assert_true (ai_move (ai, 5, 2)); 9867 assert_true (ai_move (ai, 6, 3)); 9868 assert_true (ai_move (ai, 3, 6)); 9869 assert_true (ai_move (ai, 2, 7)); 9870 assert_true (ai_move (ai, 2, 6)); 9871 assert_true (ai_move (ai, 3, 0)); 9872 assert_true (ai_move (ai, 5, 3)); 9873 assert_true (ai_move (ai, 5, 4)); 9874 assert_true (ai_move (ai, 7, 2)); 9875 assert_true (ai_move (ai, 6, 2)); 9876 assert_true (ai_move (ai, 4, 0)); 9877 assert_true (ai_move (ai, 3, 7)); 9878 assert_true (ai_move (ai, 7, 5)); 9879 assert_true (ai_move (ai, 7, 4)); 9880 assert_true (ai_move (ai, 7, 3)); 9881 assert_true (ai_move (ai, 1, 7)); 9882 assert_true (ai_move (ai, 6, 1)); 9883 assert_true (ai_move (ai, 1, 6)); 9884 assert_true (ai_move (ai, 0, 7)); 9885 assert_true (ai_move (ai, 0, 6)); 9886 assert_true (ai_move (ai, 4, 7)); 9887 assert_true (ai_move (ai, 0, 0)); 9888 assert_true (ai_move (ai, 1, 0)); 9889 assert_true (ai_move (ai, 7, 0)); 9890 assert_true (ai_move (ai, 6, 0)); 9891 assert_true (ai_move (ai, 1, 1)); 9892 assert_true (game.pass ()); 9893 assert_true (ai_move (ai, 6, 6)); 9894 assert_true (ai_move (ai, 6, 7)); 9895 assert_true (ai_move (ai, 7, 1)); 9896 assert_true (game.pass ()); 9897 assert_true (ai_move (ai, 7, 6)); 9898 } 9899 9900 private static inline void test_complete_reversi_game_114 () 9901 { 9902 /* 0 1 2 3 4 5 6 7 */ 9903 string [] board = {/* 0 */ " . . . . . . . .", 9904 /* 1 */ " . . . . . . . .", 9905 /* 2 */ " . . . . . . . .", 9906 /* 3 */ " . . D D D . . .", 9907 /* 4 */ " . . . D D . . .", 9908 /* 5 */ " . . . L L L . .", 9909 /* 6 */ " . . . . . . . .", 9910 /* 7 */ " . . . . . . . ."}; 9911 9912 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 9913 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 9914 9915 assert_true (ai_move (ai, 4, 6)); 9916 assert_true (ai_move (ai, 5, 7)); 9917 assert_true (ai_move (ai, 6, 5)); 9918 assert_true (ai_move (ai, 6, 4)); 9919 assert_true (ai_move (ai, 2, 5)); 9920 assert_true (ai_move (ai, 7, 5)); 9921 assert_true (ai_move (ai, 4, 7)); 9922 assert_true (ai_move (ai, 3, 7)); 9923 assert_true (ai_move (ai, 6, 6)); 9924 assert_true (ai_move (ai, 1, 5)); 9925 assert_true (ai_move (ai, 2, 6)); 9926 assert_true (ai_move (ai, 2, 7)); 9927 assert_true (ai_move (ai, 5, 6)); 9928 assert_true (ai_move (ai, 2, 4)); 9929 assert_true (ai_move (ai, 5, 4)); 9930 assert_true (ai_move (ai, 5, 3)); 9931 assert_true (ai_move (ai, 0, 5)); 9932 assert_true (ai_move (ai, 3, 6)); 9933 assert_true (ai_move (ai, 6, 7)); 9934 assert_true (ai_move (ai, 7, 7)); 9935 assert_true (ai_move (ai, 5, 2)); 9936 assert_true (ai_move (ai, 5, 1)); 9937 assert_true (ai_move (ai, 1, 4)); 9938 assert_true (ai_move (ai, 0, 3)); 9939 assert_true (ai_move (ai, 0, 4)); 9940 assert_true (ai_move (ai, 1, 2)); 9941 assert_true (ai_move (ai, 3, 2)); 9942 assert_true (ai_move (ai, 0, 6)); 9943 assert_true (ai_move (ai, 0, 1)); 9944 assert_true (ai_move (ai, 2, 2)); 9945 assert_true (ai_move (ai, 6, 3)); 9946 assert_true (ai_move (ai, 4, 2)); 9947 assert_true (ai_move (ai, 6, 2)); 9948 assert_true (ai_move (ai, 3, 1)); 9949 assert_true (ai_move (ai, 7, 4)); 9950 assert_true (ai_move (ai, 1, 3)); 9951 assert_true (ai_move (ai, 4, 1)); 9952 assert_true (ai_move (ai, 5, 0)); 9953 assert_true (ai_move (ai, 2, 1)); 9954 assert_true (ai_move (ai, 7, 2)); 9955 assert_true (ai_move (ai, 7, 3)); 9956 assert_true (ai_move (ai, 2, 0)); 9957 assert_true (ai_move (ai, 1, 1)); 9958 assert_true (ai_move (ai, 1, 6)); 9959 assert_true (ai_move (ai, 7, 6)); 9960 assert_true (ai_move (ai, 0, 0)); 9961 assert_true (ai_move (ai, 0, 2)); 9962 assert_true (game.pass ()); 9963 assert_true (ai_move (ai, 0, 7)); 9964 assert_true (ai_move (ai, 1, 7)); 9965 assert_true (ai_move (ai, 1, 0)); 9966 assert_true (game.pass ()); 9967 assert_true (ai_move (ai, 4, 0)); 9968 assert_true (ai_move (ai, 3, 0)); 9969 assert_true (ai_move (ai, 6, 1)); 9970 assert_true (ai_move (ai, 7, 0)); 9971 assert_true (ai_move (ai, 6, 0)); 9972 assert_true (ai_move (ai, 7, 1)); 9973 } 9974 9975 private static inline void test_complete_reversi_game_115 () 9976 { 9977 /* 0 1 2 3 4 5 6 7 */ 9978 string [] board = {/* 0 */ " . . . . . . . .", 9979 /* 1 */ " . . . . . . . .", 9980 /* 2 */ " . . . . . . . .", 9981 /* 3 */ " . . D D D L . .", 9982 /* 4 */ " . . . D L . . .", 9983 /* 5 */ " . . . L D . . .", 9984 /* 6 */ " . . . . . . . .", 9985 /* 7 */ " . . . . . . . ."}; 9986 9987 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 9988 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 9989 9990 assert_true (ai_move (ai, 2, 5)); 9991 assert_true (ai_move (ai, 2, 6)); 9992 assert_true (ai_move (ai, 3, 6)); 9993 assert_true (ai_move (ai, 2, 4)); 9994 assert_true (ai_move (ai, 1, 4)); 9995 assert_true (ai_move (ai, 5, 6)); 9996 assert_true (ai_move (ai, 1, 3)); 9997 assert_true (ai_move (ai, 1, 5)); 9998 assert_true (ai_move (ai, 2, 7)); 9999 assert_true (ai_move (ai, 0, 4)); 10000 assert_true (ai_move (ai, 0, 3)); 10001 assert_true (ai_move (ai, 0, 2)); 10002 assert_true (ai_move (ai, 1, 2)); 10003 assert_true (ai_move (ai, 2, 1)); 10004 assert_true (ai_move (ai, 6, 3)); 10005 assert_true (ai_move (ai, 6, 2)); 10006 assert_true (ai_move (ai, 0, 5)); 10007 assert_true (ai_move (ai, 0, 6)); 10008 assert_true (ai_move (ai, 5, 4)); 10009 assert_true (ai_move (ai, 2, 2)); 10010 assert_true (ai_move (ai, 5, 2)); 10011 assert_true (ai_move (ai, 4, 7)); 10012 assert_true (ai_move (ai, 2, 0)); 10013 assert_true (ai_move (ai, 3, 1)); 10014 assert_true (ai_move (ai, 7, 2)); 10015 assert_true (ai_move (ai, 3, 2)); 10016 assert_true (ai_move (ai, 4, 1)); 10017 assert_true (ai_move (ai, 4, 0)); 10018 assert_true (ai_move (ai, 4, 6)); 10019 assert_true (ai_move (ai, 5, 7)); 10020 assert_true (ai_move (ai, 4, 2)); 10021 assert_true (ai_move (ai, 5, 5)); 10022 assert_true (ai_move (ai, 1, 6)); 10023 assert_true (ai_move (ai, 6, 5)); 10024 assert_true (ai_move (ai, 7, 5)); 10025 assert_true (ai_move (ai, 6, 4)); 10026 assert_true (ai_move (ai, 7, 4)); 10027 assert_true (ai_move (ai, 7, 3)); 10028 assert_true (ai_move (ai, 1, 1)); 10029 assert_true (ai_move (ai, 0, 1)); 10030 assert_true (ai_move (ai, 6, 6)); 10031 assert_true (ai_move (ai, 3, 7)); 10032 assert_true (ai_move (ai, 6, 7)); 10033 assert_true (ai_move (ai, 0, 7)); 10034 assert_true (ai_move (ai, 1, 7)); 10035 assert_true (ai_move (ai, 7, 7)); 10036 assert_true (ai_move (ai, 7, 6)); 10037 assert_true (ai_move (ai, 0, 0)); 10038 assert_true (ai_move (ai, 1, 0)); 10039 assert_true (ai_move (ai, 3, 0)); 10040 assert_true (ai_move (ai, 5, 0)); 10041 assert_true (ai_move (ai, 5, 1)); 10042 assert_true (ai_move (ai, 6, 0)); 10043 assert_true (ai_move (ai, 7, 0)); 10044 assert_true (ai_move (ai, 6, 1)); 10045 assert_true (ai_move (ai, 7, 1)); 10046 } 10047 10048 private static inline void test_complete_reversi_game_116 () 10049 { 10050 /* 0 1 2 3 4 5 6 7 */ 10051 string [] board = {/* 0 */ " . . . . . . . .", 10052 /* 1 */ " . . . . . . . .", 10053 /* 2 */ " . . . L . . . .", 10054 /* 3 */ " . . D L D . . .", 10055 /* 4 */ " . . . L D . . .", 10056 /* 5 */ " . . . L D . . .", 10057 /* 6 */ " . . . . . . . .", 10058 /* 7 */ " . . . . . . . ."}; 10059 10060 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 10061 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 10062 10063 assert_true (ai_move (ai, 2, 6)); 10064 assert_true (ai_move (ai, 1, 2)); 10065 assert_true (ai_move (ai, 2, 1)); 10066 assert_true (ai_move (ai, 4, 1)); 10067 assert_true (ai_move (ai, 0, 3)); 10068 assert_true (ai_move (ai, 3, 6)); 10069 assert_true (ai_move (ai, 2, 7)); 10070 assert_true (ai_move (ai, 5, 6)); 10071 assert_true (ai_move (ai, 5, 4)); 10072 assert_true (ai_move (ai, 5, 5)); 10073 assert_true (ai_move (ai, 5, 7)); 10074 assert_true (ai_move (ai, 6, 3)); 10075 assert_true (ai_move (ai, 6, 5)); 10076 assert_true (ai_move (ai, 6, 4)); 10077 assert_true (ai_move (ai, 7, 3)); 10078 assert_true (ai_move (ai, 7, 5)); 10079 assert_true (ai_move (ai, 4, 6)); 10080 assert_true (ai_move (ai, 7, 4)); 10081 assert_true (ai_move (ai, 7, 6)); 10082 assert_true (ai_move (ai, 5, 2)); 10083 assert_true (ai_move (ai, 7, 2)); 10084 assert_true (ai_move (ai, 5, 3)); 10085 assert_true (ai_move (ai, 2, 5)); 10086 assert_true (ai_move (ai, 6, 2)); 10087 assert_true (ai_move (ai, 2, 4)); 10088 assert_true (ai_move (ai, 1, 5)); 10089 assert_true (ai_move (ai, 1, 4)); 10090 assert_true (ai_move (ai, 0, 5)); 10091 assert_true (ai_move (ai, 4, 2)); 10092 assert_true (ai_move (ai, 5, 1)); 10093 assert_true (ai_move (ai, 5, 0)); 10094 assert_true (ai_move (ai, 0, 1)); 10095 assert_true (ai_move (ai, 3, 0)); 10096 assert_true (ai_move (ai, 4, 0)); 10097 assert_true (ai_move (ai, 2, 2)); 10098 assert_true (ai_move (ai, 2, 0)); 10099 assert_true (ai_move (ai, 1, 0)); 10100 assert_true (ai_move (ai, 1, 3)); 10101 assert_true (ai_move (ai, 3, 1)); 10102 assert_true (ai_move (ai, 4, 7)); 10103 assert_true (ai_move (ai, 3, 7)); 10104 assert_true (ai_move (ai, 1, 1)); 10105 assert_true (ai_move (ai, 0, 0)); 10106 assert_true (ai_move (ai, 6, 0)); 10107 assert_true (ai_move (ai, 0, 2)); 10108 assert_true (ai_move (ai, 6, 1)); 10109 assert_true (ai_move (ai, 0, 4)); 10110 assert_true (ai_move (ai, 6, 6)); 10111 assert_true (ai_move (ai, 0, 6)); 10112 assert_true (ai_move (ai, 6, 7)); 10113 assert_true (ai_move (ai, 7, 7)); 10114 assert_true (ai_move (ai, 1, 6)); 10115 assert_true (ai_move (ai, 0, 7)); 10116 assert_true (game.pass ()); 10117 assert_true (ai_move (ai, 1, 7)); 10118 assert_true (game.pass ()); 10119 assert_true (ai_move (ai, 7, 0)); 10120 assert_true (ai_move (ai, 7, 1)); 10121 } 10122 10123 private static inline void test_complete_reversi_game_117 () 10124 { 10125 /* 0 1 2 3 4 5 6 7 */ 10126 string [] board = {/* 0 */ " . . . . . . . .", 10127 /* 1 */ " . . . . . . . .", 10128 /* 2 */ " . . D . . . . .", 10129 /* 3 */ " . . . D D . . .", 10130 /* 4 */ " . . . L D . . .", 10131 /* 5 */ " . . . L L . . .", 10132 /* 6 */ " . . . . . L . .", 10133 /* 7 */ " . . . . . . . ."}; 10134 10135 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 10136 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 10137 10138 assert_true (ai_move (ai, 2, 4)); 10139 assert_true (ai_move (ai, 1, 3)); 10140 assert_true (ai_move (ai, 1, 5)); 10141 assert_true (ai_move (ai, 3, 1)); 10142 assert_true (ai_move (ai, 4, 6)); 10143 assert_true (ai_move (ai, 3, 6)); 10144 assert_true (ai_move (ai, 2, 7)); 10145 assert_true (ai_move (ai, 2, 6)); 10146 assert_true (ai_move (ai, 2, 5)); 10147 assert_true (ai_move (ai, 1, 4)); 10148 assert_true (ai_move (ai, 3, 7)); 10149 assert_true (ai_move (ai, 4, 7)); 10150 assert_true (ai_move (ai, 5, 7)); 10151 assert_true (ai_move (ai, 0, 5)); 10152 assert_true (ai_move (ai, 0, 3)); 10153 assert_true (ai_move (ai, 4, 2)); 10154 assert_true (ai_move (ai, 5, 5)); 10155 assert_true (ai_move (ai, 6, 5)); 10156 assert_true (ai_move (ai, 5, 4)); 10157 assert_true (ai_move (ai, 0, 4)); 10158 assert_true (ai_move (ai, 0, 6)); 10159 assert_true (ai_move (ai, 3, 2)); 10160 assert_true (ai_move (ai, 5, 3)); 10161 assert_true (ai_move (ai, 6, 3)); 10162 assert_true (ai_move (ai, 6, 2)); 10163 assert_true (ai_move (ai, 6, 6)); 10164 assert_true (ai_move (ai, 6, 4)); 10165 assert_true (ai_move (ai, 7, 4)); 10166 assert_true (ai_move (ai, 0, 2)); 10167 assert_true (ai_move (ai, 2, 3)); 10168 assert_true (ai_move (ai, 2, 1)); 10169 assert_true (ai_move (ai, 5, 2)); 10170 assert_true (ai_move (ai, 5, 1)); 10171 assert_true (ai_move (ai, 4, 1)); 10172 assert_true (ai_move (ai, 2, 0)); 10173 assert_true (ai_move (ai, 7, 2)); 10174 assert_true (ai_move (ai, 6, 1)); 10175 assert_true (ai_move (ai, 4, 0)); 10176 assert_true (ai_move (ai, 3, 0)); 10177 assert_true (ai_move (ai, 1, 0)); 10178 assert_true (ai_move (ai, 1, 6)); 10179 assert_true (ai_move (ai, 1, 2)); 10180 assert_true (ai_move (ai, 0, 1)); 10181 assert_true (ai_move (ai, 5, 0)); 10182 assert_true (ai_move (ai, 7, 0)); 10183 assert_true (ai_move (ai, 7, 1)); 10184 assert_true (ai_move (ai, 6, 0)); 10185 assert_true (ai_move (ai, 0, 7)); 10186 assert_true (ai_move (ai, 0, 0)); 10187 assert_true (ai_move (ai, 1, 7)); 10188 assert_true (ai_move (ai, 1, 1)); 10189 assert_true (ai_move (ai, 6, 7)); 10190 assert_true (ai_move (ai, 7, 3)); 10191 assert_true (game.pass ()); 10192 assert_true (ai_move (ai, 7, 5)); 10193 assert_true (ai_move (ai, 7, 6)); 10194 assert_true (ai_move (ai, 7, 7)); 10195 } 10196 10197 private static inline void test_complete_reversi_game_118 () 10198 { 10199 /* 0 1 2 3 4 5 6 7 */ 10200 string [] board = {/* 0 */ " . . . . . . . .", 10201 /* 1 */ " . . . . . . . .", 10202 /* 2 */ " . . D . . . . .", 10203 /* 3 */ " . . . D D . . .", 10204 /* 4 */ " . . . L D . . .", 10205 /* 5 */ " . . . L L L . .", 10206 /* 6 */ " . . . . . . . .", 10207 /* 7 */ " . . . . . . . ."}; 10208 10209 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 10210 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 10211 10212 assert_true (ai_move (ai, 4, 6)); 10213 assert_true (ai_move (ai, 5, 6)); 10214 assert_true (ai_move (ai, 6, 4)); 10215 assert_true (ai_move (ai, 6, 5)); 10216 assert_true (ai_move (ai, 2, 6)); 10217 assert_true (ai_move (ai, 2, 5)); 10218 assert_true (ai_move (ai, 3, 6)); 10219 assert_true (ai_move (ai, 2, 7)); 10220 assert_true (ai_move (ai, 1, 5)); 10221 assert_true (ai_move (ai, 1, 4)); 10222 assert_true (ai_move (ai, 3, 7)); 10223 assert_true (ai_move (ai, 0, 5)); 10224 assert_true (ai_move (ai, 2, 4)); 10225 assert_true (ai_move (ai, 4, 7)); 10226 assert_true (ai_move (ai, 7, 5)); 10227 assert_true (ai_move (ai, 7, 3)); 10228 assert_true (ai_move (ai, 1, 6)); 10229 assert_true (ai_move (ai, 2, 3)); 10230 assert_true (ai_move (ai, 1, 7)); 10231 assert_true (ai_move (ai, 0, 7)); 10232 assert_true (ai_move (ai, 1, 3)); 10233 assert_true (ai_move (ai, 0, 2)); 10234 assert_true (ai_move (ai, 5, 3)); 10235 assert_true (ai_move (ai, 3, 1)); 10236 assert_true (ai_move (ai, 2, 1)); 10237 assert_true (ai_move (ai, 1, 2)); 10238 assert_true (ai_move (ai, 4, 0)); 10239 assert_true (ai_move (ai, 3, 2)); 10240 assert_true (ai_move (ai, 0, 6)); 10241 assert_true (ai_move (ai, 2, 0)); 10242 assert_true (ai_move (ai, 4, 2)); 10243 assert_true (ai_move (ai, 7, 4)); 10244 assert_true (ai_move (ai, 7, 2)); 10245 assert_true (ai_move (ai, 3, 0)); 10246 assert_true (ai_move (ai, 5, 7)); 10247 assert_true (ai_move (ai, 6, 7)); 10248 assert_true (ai_move (ai, 0, 3)); 10249 assert_true (ai_move (ai, 0, 4)); 10250 assert_true (ai_move (ai, 4, 1)); 10251 assert_true (ai_move (ai, 5, 0)); 10252 assert_true (ai_move (ai, 1, 1)); 10253 assert_true (ai_move (ai, 6, 2)); 10254 assert_true (ai_move (ai, 6, 3)); 10255 assert_true (ai_move (ai, 0, 0)); 10256 assert_true (ai_move (ai, 0, 1)); 10257 assert_true (ai_move (ai, 5, 2)); 10258 assert_true (ai_move (ai, 5, 4)); 10259 assert_true (game.pass ()); 10260 assert_true (ai_move (ai, 7, 1)); 10261 assert_true (ai_move (ai, 6, 1)); 10262 assert_true (ai_move (ai, 7, 6)); 10263 assert_true (ai_move (ai, 6, 6)); 10264 assert_true (ai_move (ai, 7, 7)); 10265 assert_true (game.pass ()); 10266 assert_true (ai_move (ai, 1, 0)); 10267 assert_true (game.pass ()); 10268 assert_true (ai_move (ai, 7, 0)); 10269 assert_true (ai_move (ai, 5, 1)); 10270 assert_true (ai_move (ai, 6, 0)); 10271 } 10272 10273 private static inline void test_complete_reversi_game_119 () 10274 { 10275 /* 0 1 2 3 4 5 6 7 */ 10276 string [] board = {/* 0 */ " . . . . . . . .", 10277 /* 1 */ " . . . . . . . .", 10278 /* 2 */ " . . D . . . . .", 10279 /* 3 */ " . . . D D . . .", 10280 /* 4 */ " . . . L L L . .", 10281 /* 5 */ " . . . L D . . .", 10282 /* 6 */ " . . . . . . . .", 10283 /* 7 */ " . . . . . . . ."}; 10284 10285 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 10286 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 10287 10288 assert_true (ai_move (ai, 6, 5)); 10289 assert_true (ai_move (ai, 4, 6)); 10290 assert_true (ai_move (ai, 5, 5)); 10291 assert_true (ai_move (ai, 6, 4)); 10292 assert_true (ai_move (ai, 6, 3)); 10293 assert_true (ai_move (ai, 7, 3)); 10294 assert_true (ai_move (ai, 2, 5)); 10295 assert_true (ai_move (ai, 5, 6)); 10296 assert_true (ai_move (ai, 6, 6)); 10297 assert_true (ai_move (ai, 2, 4)); 10298 assert_true (ai_move (ai, 5, 3)); 10299 assert_true (ai_move (ai, 2, 6)); 10300 assert_true (ai_move (ai, 1, 5)); 10301 assert_true (ai_move (ai, 7, 4)); 10302 assert_true (ai_move (ai, 7, 6)); 10303 assert_true (ai_move (ai, 1, 4)); 10304 assert_true (ai_move (ai, 2, 7)); 10305 assert_true (ai_move (ai, 3, 6)); 10306 assert_true (ai_move (ai, 7, 5)); 10307 assert_true (ai_move (ai, 7, 2)); 10308 assert_true (ai_move (ai, 7, 1)); 10309 assert_true (ai_move (ai, 7, 7)); 10310 assert_true (ai_move (ai, 5, 7)); 10311 assert_true (ai_move (ai, 7, 0)); 10312 assert_true (ai_move (ai, 2, 3)); 10313 assert_true (ai_move (ai, 6, 7)); 10314 assert_true (ai_move (ai, 1, 3)); 10315 assert_true (ai_move (ai, 6, 2)); 10316 assert_true (ai_move (ai, 5, 2)); 10317 assert_true (ai_move (ai, 0, 2)); 10318 assert_true (ai_move (ai, 0, 4)); 10319 assert_true (ai_move (ai, 4, 1)); 10320 assert_true (ai_move (ai, 5, 1)); 10321 assert_true (ai_move (ai, 6, 1)); 10322 assert_true (ai_move (ai, 5, 0)); 10323 assert_true (ai_move (ai, 1, 2)); 10324 assert_true (ai_move (ai, 3, 2)); 10325 assert_true (ai_move (ai, 4, 7)); 10326 assert_true (ai_move (ai, 3, 7)); 10327 assert_true (ai_move (ai, 1, 7)); 10328 assert_true (ai_move (ai, 1, 6)); 10329 assert_true (ai_move (ai, 3, 0)); 10330 assert_true (ai_move (ai, 3, 1)); 10331 assert_true (ai_move (ai, 4, 2)); 10332 assert_true (ai_move (ai, 2, 1)); 10333 assert_true (ai_move (ai, 0, 3)); 10334 assert_true (ai_move (ai, 0, 5)); 10335 assert_true (ai_move (ai, 6, 0)); 10336 assert_true (ai_move (ai, 0, 1)); 10337 assert_true (ai_move (ai, 4, 0)); 10338 assert_true (ai_move (ai, 1, 1)); 10339 assert_true (ai_move (ai, 2, 0)); 10340 assert_true (ai_move (ai, 1, 0)); 10341 assert_true (ai_move (ai, 0, 7)); 10342 assert_true (ai_move (ai, 0, 6)); 10343 assert_true (ai_move (ai, 0, 0)); 10344 } 10345 10346 private static inline void test_complete_reversi_game_120 () 10347 { 10348 /* 0 1 2 3 4 5 6 7 */ 10349 string [] board = {/* 0 */ " . . . . . . . .", 10350 /* 1 */ " . . . . . . . .", 10351 /* 2 */ " . . D . . . . .", 10352 /* 3 */ " . . . D D L . .", 10353 /* 4 */ " . . . L L . . .", 10354 /* 5 */ " . . . L D . . .", 10355 /* 6 */ " . . . . . . . .", 10356 /* 7 */ " . . . . . . . ."}; 10357 10358 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 10359 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 10360 10361 assert_true (ai_move (ai, 5, 5)); 10362 assert_true (ai_move (ai, 6, 5)); 10363 assert_true (ai_move (ai, 6, 2)); 10364 assert_true (ai_move (ai, 5, 4)); 10365 assert_true (ai_move (ai, 5, 6)); 10366 assert_true (ai_move (ai, 6, 3)); 10367 assert_true (ai_move (ai, 7, 5)); 10368 assert_true (ai_move (ai, 5, 7)); 10369 assert_true (ai_move (ai, 7, 3)); 10370 assert_true (ai_move (ai, 7, 4)); 10371 assert_true (ai_move (ai, 4, 6)); 10372 assert_true (ai_move (ai, 3, 6)); 10373 assert_true (ai_move (ai, 6, 4)); 10374 assert_true (ai_move (ai, 7, 2)); 10375 assert_true (ai_move (ai, 7, 1)); 10376 assert_true (ai_move (ai, 5, 2)); 10377 assert_true (ai_move (ai, 2, 7)); 10378 assert_true (ai_move (ai, 3, 7)); 10379 assert_true (ai_move (ai, 7, 6)); 10380 assert_true (ai_move (ai, 3, 2)); 10381 assert_true (ai_move (ai, 4, 1)); 10382 assert_true (ai_move (ai, 5, 1)); 10383 assert_true (ai_move (ai, 4, 2)); 10384 assert_true (ai_move (ai, 4, 0)); 10385 assert_true (ai_move (ai, 3, 1)); 10386 assert_true (ai_move (ai, 2, 3)); 10387 assert_true (ai_move (ai, 2, 1)); 10388 assert_true (ai_move (ai, 3, 0)); 10389 assert_true (ai_move (ai, 2, 0)); 10390 assert_true (ai_move (ai, 1, 3)); 10391 assert_true (ai_move (ai, 1, 2)); 10392 assert_true (ai_move (ai, 1, 0)); 10393 assert_true (ai_move (ai, 2, 5)); 10394 assert_true (ai_move (ai, 1, 4)); 10395 assert_true (ai_move (ai, 2, 4)); 10396 assert_true (ai_move (ai, 2, 6)); 10397 assert_true (ai_move (ai, 0, 5)); 10398 assert_true (ai_move (ai, 1, 5)); 10399 assert_true (ai_move (ai, 0, 4)); 10400 assert_true (ai_move (ai, 0, 2)); 10401 assert_true (ai_move (ai, 1, 1)); 10402 assert_true (ai_move (ai, 1, 7)); 10403 assert_true (ai_move (ai, 0, 6)); 10404 assert_true (ai_move (ai, 6, 1)); 10405 assert_true (ai_move (ai, 4, 7)); 10406 assert_true (ai_move (ai, 0, 3)); 10407 assert_true (ai_move (ai, 0, 1)); 10408 assert_true (ai_move (ai, 0, 0)); 10409 assert_true (ai_move (ai, 0, 7)); 10410 assert_true (ai_move (ai, 6, 6)); 10411 assert_true (ai_move (ai, 7, 0)); 10412 assert_true (ai_move (ai, 6, 0)); 10413 assert_true (ai_move (ai, 5, 0)); 10414 assert_true (ai_move (ai, 1, 6)); 10415 assert_true (ai_move (ai, 6, 7)); 10416 assert_true (ai_move (ai, 7, 7)); 10417 } 10418 10419 private static inline void test_complete_reversi_game_121 () 10420 { 10421 /* 0 1 2 3 4 5 6 7 */ 10422 string [] board = {/* 0 */ " . . . . . . . .", 10423 /* 1 */ " . . . . . . . .", 10424 /* 2 */ " . . D . . L . .", 10425 /* 3 */ " . . . D L . . .", 10426 /* 4 */ " . . . L D . . .", 10427 /* 5 */ " . . . L D . . .", 10428 /* 6 */ " . . . . . . . .", 10429 /* 7 */ " . . . . . . . ."}; 10430 10431 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 10432 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 10433 10434 assert_true (ai_move (ai, 2, 5)); 10435 assert_true (ai_move (ai, 3, 6)); 10436 assert_true (ai_move (ai, 2, 6)); 10437 assert_true (ai_move (ai, 1, 4)); 10438 assert_true (ai_move (ai, 1, 5)); 10439 assert_true (ai_move (ai, 5, 6)); 10440 assert_true (ai_move (ai, 5, 5)); 10441 assert_true (ai_move (ai, 2, 3)); 10442 assert_true (ai_move (ai, 5, 7)); 10443 assert_true (ai_move (ai, 2, 1)); 10444 assert_true (ai_move (ai, 4, 7)); 10445 assert_true (ai_move (ai, 5, 4)); 10446 assert_true (ai_move (ai, 6, 3)); 10447 assert_true (ai_move (ai, 6, 4)); 10448 assert_true (ai_move (ai, 4, 1)); 10449 assert_true (ai_move (ai, 4, 6)); 10450 assert_true (ai_move (ai, 6, 5)); 10451 assert_true (ai_move (ai, 2, 4)); 10452 assert_true (ai_move (ai, 5, 3)); 10453 assert_true (ai_move (ai, 3, 7)); 10454 assert_true (ai_move (ai, 2, 7)); 10455 assert_true (ai_move (ai, 7, 5)); 10456 assert_true (ai_move (ai, 1, 2)); 10457 assert_true (ai_move (ai, 3, 2)); 10458 assert_true (ai_move (ai, 7, 4)); 10459 assert_true (ai_move (ai, 0, 5)); 10460 assert_true (ai_move (ai, 2, 0)); 10461 assert_true (ai_move (ai, 0, 2)); 10462 assert_true (ai_move (ai, 3, 1)); 10463 assert_true (ai_move (ai, 5, 1)); 10464 assert_true (ai_move (ai, 5, 0)); 10465 assert_true (ai_move (ai, 1, 3)); 10466 assert_true (ai_move (ai, 4, 2)); 10467 assert_true (ai_move (ai, 6, 2)); 10468 assert_true (ai_move (ai, 7, 3)); 10469 assert_true (ai_move (ai, 7, 2)); 10470 assert_true (ai_move (ai, 0, 4)); 10471 assert_true (ai_move (ai, 0, 3)); 10472 assert_true (ai_move (ai, 6, 1)); 10473 assert_true (ai_move (ai, 7, 6)); 10474 assert_true (ai_move (ai, 0, 1)); 10475 assert_true (ai_move (ai, 0, 0)); 10476 assert_true (ai_move (ai, 6, 6)); 10477 assert_true (ai_move (ai, 0, 6)); 10478 assert_true (ai_move (ai, 1, 6)); 10479 assert_true (ai_move (ai, 1, 1)); 10480 assert_true (ai_move (ai, 1, 0)); 10481 assert_true (ai_move (ai, 3, 0)); 10482 assert_true (ai_move (ai, 4, 0)); 10483 assert_true (ai_move (ai, 7, 7)); 10484 assert_true (ai_move (ai, 6, 7)); 10485 assert_true (ai_move (ai, 7, 0)); 10486 assert_true (ai_move (ai, 6, 0)); 10487 assert_true (ai_move (ai, 7, 1)); 10488 assert_true (game.pass ()); 10489 assert_true (ai_move (ai, 1, 7)); 10490 assert_true (ai_move (ai, 0, 7)); 10491 } 10492 10493 private static inline void test_complete_reversi_game_122 () 10494 { 10495 /* 0 1 2 3 4 5 6 7 */ 10496 string [] board = {/* 0 */ " . . . . . . . .", 10497 /* 1 */ " . . . . . . . .", 10498 /* 2 */ " . . D L . . . .", 10499 /* 3 */ " . . . L D . . .", 10500 /* 4 */ " . . . L D . . .", 10501 /* 5 */ " . . . L D . . .", 10502 /* 6 */ " . . . . . . . .", 10503 /* 7 */ " . . . . . . . ."}; 10504 10505 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 10506 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 10507 10508 assert_true (ai_move (ai, 4, 2)); 10509 assert_true (ai_move (ai, 5, 6)); 10510 assert_true (ai_move (ai, 4, 6)); 10511 assert_true (ai_move (ai, 3, 1)); 10512 assert_true (ai_move (ai, 2, 1)); 10513 assert_true (ai_move (ai, 1, 3)); 10514 assert_true (ai_move (ai, 1, 2)); 10515 assert_true (ai_move (ai, 5, 7)); 10516 assert_true (ai_move (ai, 4, 0)); 10517 assert_true (ai_move (ai, 5, 5)); 10518 assert_true (ai_move (ai, 2, 3)); 10519 assert_true (ai_move (ai, 5, 2)); 10520 assert_true (ai_move (ai, 6, 2)); 10521 assert_true (ai_move (ai, 4, 1)); 10522 assert_true (ai_move (ai, 5, 1)); 10523 assert_true (ai_move (ai, 1, 0)); 10524 assert_true (ai_move (ai, 3, 0)); 10525 assert_true (ai_move (ai, 0, 2)); 10526 assert_true (ai_move (ai, 0, 4)); 10527 assert_true (ai_move (ai, 7, 2)); 10528 assert_true (ai_move (ai, 6, 3)); 10529 assert_true (ai_move (ai, 5, 0)); 10530 assert_true (ai_move (ai, 6, 0)); 10531 assert_true (ai_move (ai, 7, 4)); 10532 assert_true (ai_move (ai, 0, 3)); 10533 assert_true (ai_move (ai, 0, 5)); 10534 assert_true (ai_move (ai, 5, 3)); 10535 assert_true (ai_move (ai, 5, 4)); 10536 assert_true (ai_move (ai, 6, 5)); 10537 assert_true (ai_move (ai, 1, 4)); 10538 assert_true (ai_move (ai, 2, 4)); 10539 assert_true (ai_move (ai, 7, 5)); 10540 assert_true (ai_move (ai, 6, 6)); 10541 assert_true (ai_move (ai, 6, 4)); 10542 assert_true (ai_move (ai, 2, 5)); 10543 assert_true (ai_move (ai, 1, 5)); 10544 assert_true (ai_move (ai, 2, 6)); 10545 assert_true (ai_move (ai, 0, 1)); 10546 assert_true (ai_move (ai, 7, 6)); 10547 assert_true (ai_move (ai, 3, 6)); 10548 assert_true (ai_move (ai, 2, 7)); 10549 assert_true (ai_move (ai, 4, 7)); 10550 assert_true (ai_move (ai, 7, 3)); 10551 assert_true (ai_move (ai, 7, 7)); 10552 assert_true (ai_move (ai, 1, 6)); 10553 assert_true (ai_move (ai, 7, 1)); 10554 assert_true (ai_move (ai, 3, 7)); 10555 assert_true (ai_move (ai, 1, 7)); 10556 assert_true (ai_move (ai, 0, 7)); 10557 assert_true (ai_move (ai, 2, 0)); 10558 assert_true (ai_move (ai, 0, 0)); 10559 assert_true (ai_move (ai, 0, 6)); 10560 assert_true (ai_move (ai, 6, 7)); 10561 assert_true (ai_move (ai, 6, 1)); 10562 assert_true (ai_move (ai, 7, 0)); 10563 assert_true (game.pass ()); 10564 assert_true (ai_move (ai, 1, 1)); 10565 } 10566 10567 private static inline void test_complete_reversi_game_123 () 10568 { 10569 /* 0 1 2 3 4 5 6 7 */ 10570 string [] board = {/* 0 */ " . . . . . . . .", 10571 /* 1 */ " . . . . . . . .", 10572 /* 2 */ " . . . D L . . .", 10573 /* 3 */ " . . . D L . . .", 10574 /* 4 */ " . . . D L . . .", 10575 /* 5 */ " . . . . L D . .", 10576 /* 6 */ " . . . . . . . .", 10577 /* 7 */ " . . . . . . . ."}; 10578 10579 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 10580 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 10581 10582 assert_true (ai_move (ai, 3, 5)); 10583 assert_true (ai_move (ai, 2, 1)); 10584 assert_true (ai_move (ai, 3, 1)); 10585 assert_true (ai_move (ai, 4, 6)); 10586 assert_true (ai_move (ai, 5, 6)); 10587 assert_true (ai_move (ai, 6, 4)); 10588 assert_true (ai_move (ai, 6, 5)); 10589 assert_true (ai_move (ai, 2, 0)); 10590 assert_true (ai_move (ai, 3, 7)); 10591 assert_true (ai_move (ai, 2, 2)); 10592 assert_true (ai_move (ai, 5, 4)); 10593 assert_true (ai_move (ai, 2, 5)); 10594 assert_true (ai_move (ai, 1, 5)); 10595 assert_true (ai_move (ai, 3, 6)); 10596 assert_true (ai_move (ai, 2, 6)); 10597 assert_true (ai_move (ai, 6, 7)); 10598 assert_true (ai_move (ai, 4, 7)); 10599 assert_true (ai_move (ai, 7, 5)); 10600 assert_true (ai_move (ai, 7, 3)); 10601 assert_true (ai_move (ai, 0, 5)); 10602 assert_true (ai_move (ai, 1, 4)); 10603 assert_true (ai_move (ai, 2, 7)); 10604 assert_true (ai_move (ai, 1, 7)); 10605 assert_true (ai_move (ai, 0, 3)); 10606 assert_true (ai_move (ai, 7, 4)); 10607 assert_true (ai_move (ai, 7, 2)); 10608 assert_true (ai_move (ai, 2, 4)); 10609 assert_true (ai_move (ai, 2, 3)); 10610 assert_true (ai_move (ai, 1, 2)); 10611 assert_true (ai_move (ai, 6, 3)); 10612 assert_true (ai_move (ai, 5, 3)); 10613 assert_true (ai_move (ai, 0, 2)); 10614 assert_true (ai_move (ai, 1, 1)); 10615 assert_true (ai_move (ai, 1, 3)); 10616 assert_true (ai_move (ai, 5, 2)); 10617 assert_true (ai_move (ai, 6, 2)); 10618 assert_true (ai_move (ai, 5, 1)); 10619 assert_true (ai_move (ai, 7, 6)); 10620 assert_true (ai_move (ai, 0, 1)); 10621 assert_true (ai_move (ai, 4, 1)); 10622 assert_true (ai_move (ai, 5, 0)); 10623 assert_true (ai_move (ai, 3, 0)); 10624 assert_true (ai_move (ai, 0, 4)); 10625 assert_true (ai_move (ai, 0, 0)); 10626 assert_true (ai_move (ai, 6, 1)); 10627 assert_true (ai_move (ai, 0, 6)); 10628 assert_true (ai_move (ai, 4, 0)); 10629 assert_true (ai_move (ai, 6, 0)); 10630 assert_true (ai_move (ai, 7, 0)); 10631 assert_true (ai_move (ai, 5, 7)); 10632 assert_true (ai_move (ai, 7, 7)); 10633 assert_true (ai_move (ai, 7, 1)); 10634 assert_true (ai_move (ai, 1, 0)); 10635 assert_true (ai_move (ai, 1, 6)); 10636 assert_true (ai_move (ai, 0, 7)); 10637 assert_true (game.pass ()); 10638 assert_true (ai_move (ai, 6, 6)); 10639 } 10640 10641 private static inline void test_complete_reversi_game_124 () 10642 { 10643 /* 0 1 2 3 4 5 6 7 */ 10644 string [] board = {/* 0 */ " . . . . . . . .", 10645 /* 1 */ " . . . . . . . .", 10646 /* 2 */ " . . . D L . . .", 10647 /* 3 */ " . . . D L . . .", 10648 /* 4 */ " . . . L D . . .", 10649 /* 5 */ " . . L . . D . .", 10650 /* 6 */ " . . . . . . . .", 10651 /* 7 */ " . . . . . . . ."}; 10652 10653 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 10654 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 10655 10656 assert_true (ai_move (ai, 5, 2)); 10657 assert_true (ai_move (ai, 4, 1)); 10658 assert_true (ai_move (ai, 5, 1)); 10659 assert_true (ai_move (ai, 6, 3)); 10660 assert_true (ai_move (ai, 6, 2)); 10661 assert_true (ai_move (ai, 2, 1)); 10662 assert_true (ai_move (ai, 2, 2)); 10663 assert_true (ai_move (ai, 5, 4)); 10664 assert_true (ai_move (ai, 2, 0)); 10665 assert_true (ai_move (ai, 5, 6)); 10666 assert_true (ai_move (ai, 3, 0)); 10667 assert_true (ai_move (ai, 2, 3)); 10668 assert_true (ai_move (ai, 1, 4)); 10669 assert_true (ai_move (ai, 1, 3)); 10670 assert_true (ai_move (ai, 3, 6)); 10671 assert_true (ai_move (ai, 3, 1)); 10672 assert_true (ai_move (ai, 1, 2)); 10673 assert_true (ai_move (ai, 5, 3)); 10674 assert_true (ai_move (ai, 2, 4)); 10675 assert_true (ai_move (ai, 4, 0)); 10676 assert_true (ai_move (ai, 5, 0)); 10677 assert_true (ai_move (ai, 0, 2)); 10678 assert_true (ai_move (ai, 6, 5)); 10679 assert_true (ai_move (ai, 4, 5)); 10680 assert_true (ai_move (ai, 0, 3)); 10681 assert_true (ai_move (ai, 7, 2)); 10682 assert_true (ai_move (ai, 5, 7)); 10683 assert_true (ai_move (ai, 7, 5)); 10684 assert_true (ai_move (ai, 4, 6)); 10685 assert_true (ai_move (ai, 2, 6)); 10686 assert_true (ai_move (ai, 2, 7)); 10687 assert_true (ai_move (ai, 6, 4)); 10688 assert_true (ai_move (ai, 3, 5)); 10689 assert_true (ai_move (ai, 1, 5)); 10690 assert_true (ai_move (ai, 0, 4)); 10691 assert_true (ai_move (ai, 0, 5)); 10692 assert_true (ai_move (ai, 7, 3)); 10693 assert_true (ai_move (ai, 7, 4)); 10694 assert_true (ai_move (ai, 1, 6)); 10695 assert_true (ai_move (ai, 0, 1)); 10696 assert_true (ai_move (ai, 7, 6)); 10697 assert_true (ai_move (ai, 7, 7)); 10698 assert_true (ai_move (ai, 1, 1)); 10699 assert_true (ai_move (ai, 7, 1)); 10700 assert_true (ai_move (ai, 6, 1)); 10701 assert_true (ai_move (ai, 6, 6)); 10702 assert_true (ai_move (ai, 6, 7)); 10703 assert_true (ai_move (ai, 4, 7)); 10704 assert_true (ai_move (ai, 3, 7)); 10705 assert_true (ai_move (ai, 0, 0)); 10706 assert_true (ai_move (ai, 1, 0)); 10707 assert_true (ai_move (ai, 0, 7)); 10708 assert_true (ai_move (ai, 1, 7)); 10709 assert_true (ai_move (ai, 0, 6)); 10710 assert_true (game.pass ()); 10711 assert_true (ai_move (ai, 6, 0)); 10712 assert_true (ai_move (ai, 7, 0)); 10713 } 10714 10715 private static inline void test_complete_reversi_game_125 () 10716 { 10717 /* 0 1 2 3 4 5 6 7 */ 10718 string [] board = {/* 0 */ " . . . . . . . .", 10719 /* 1 */ " . . . . . . . .", 10720 /* 2 */ " . . . D L . . .", 10721 /* 3 */ " . . . L L . . .", 10722 /* 4 */ " . . L D D . . .", 10723 /* 5 */ " . . . . . D . .", 10724 /* 6 */ " . . . . . . . .", 10725 /* 7 */ " . . . . . . . ."}; 10726 10727 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 10728 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 10729 10730 assert_true (ai_move (ai, 2, 2)); 10731 assert_true (ai_move (ai, 1, 2)); 10732 assert_true (ai_move (ai, 1, 5)); 10733 assert_true (ai_move (ai, 2, 3)); 10734 assert_true (ai_move (ai, 2, 1)); 10735 assert_true (ai_move (ai, 1, 4)); 10736 assert_true (ai_move (ai, 0, 2)); 10737 assert_true (ai_move (ai, 2, 0)); 10738 assert_true (ai_move (ai, 0, 4)); 10739 assert_true (ai_move (ai, 0, 3)); 10740 assert_true (ai_move (ai, 3, 1)); 10741 assert_true (ai_move (ai, 4, 1)); 10742 assert_true (ai_move (ai, 1, 3)); 10743 assert_true (ai_move (ai, 0, 5)); 10744 assert_true (ai_move (ai, 0, 6)); 10745 assert_true (ai_move (ai, 2, 5)); 10746 assert_true (ai_move (ai, 5, 0)); 10747 assert_true (ai_move (ai, 4, 0)); 10748 assert_true (ai_move (ai, 0, 1)); 10749 assert_true (ai_move (ai, 5, 4)); 10750 assert_true (ai_move (ai, 3, 6)); 10751 assert_true (ai_move (ai, 2, 6)); 10752 assert_true (ai_move (ai, 2, 7)); 10753 assert_true (ai_move (ai, 5, 6)); 10754 assert_true (ai_move (ai, 3, 5)); 10755 assert_true (ai_move (ai, 3, 7)); 10756 assert_true (ai_move (ai, 4, 7)); 10757 assert_true (ai_move (ai, 6, 0)); 10758 assert_true (ai_move (ai, 4, 6)); 10759 assert_true (ai_move (ai, 1, 6)); 10760 assert_true (ai_move (ai, 4, 5)); 10761 assert_true (ai_move (ai, 1, 1)); 10762 assert_true (ai_move (ai, 3, 0)); 10763 assert_true (ai_move (ai, 5, 7)); 10764 assert_true (ai_move (ai, 6, 7)); 10765 assert_true (ai_move (ai, 1, 0)); 10766 assert_true (ai_move (ai, 7, 0)); 10767 assert_true (ai_move (ai, 6, 6)); 10768 assert_true (ai_move (ai, 0, 7)); 10769 assert_true (ai_move (ai, 1, 7)); 10770 assert_true (ai_move (ai, 7, 7)); 10771 assert_true (ai_move (ai, 6, 5)); 10772 assert_true (ai_move (ai, 0, 0)); 10773 assert_true (ai_move (ai, 5, 3)); 10774 assert_true (ai_move (ai, 7, 5)); 10775 assert_true (ai_move (ai, 6, 4)); 10776 assert_true (ai_move (ai, 7, 3)); 10777 assert_true (ai_move (ai, 7, 6)); 10778 assert_true (ai_move (ai, 7, 4)); 10779 assert_true (ai_move (ai, 6, 3)); 10780 assert_true (ai_move (ai, 7, 2)); 10781 assert_true (ai_move (ai, 7, 1)); 10782 assert_true (ai_move (ai, 5, 1)); 10783 assert_true (ai_move (ai, 6, 1)); 10784 assert_true (ai_move (ai, 6, 2)); 10785 assert_true (ai_move (ai, 5, 2)); 10786 } 10787 10788 private static inline void test_complete_reversi_game_126 () 10789 { 10790 /* 0 1 2 3 4 5 6 7 */ 10791 string [] board = {/* 0 */ " . . . . . . . .", 10792 /* 1 */ " . . . . . . . .", 10793 /* 2 */ " . . . D L . . .", 10794 /* 3 */ " . . L L L . . .", 10795 /* 4 */ " . . . D D . . .", 10796 /* 5 */ " . . . . . D . .", 10797 /* 6 */ " . . . . . . . .", 10798 /* 7 */ " . . . . . . . ."}; 10799 10800 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 10801 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 10802 10803 assert_true (ai_move (ai, 1, 2)); 10804 assert_true (ai_move (ai, 3, 1)); 10805 assert_true (ai_move (ai, 2, 2)); 10806 assert_true (ai_move (ai, 1, 3)); 10807 assert_true (ai_move (ai, 1, 4)); 10808 assert_true (ai_move (ai, 0, 4)); 10809 assert_true (ai_move (ai, 5, 2)); 10810 assert_true (ai_move (ai, 2, 1)); 10811 assert_true (ai_move (ai, 1, 1)); 10812 assert_true (ai_move (ai, 5, 3)); 10813 assert_true (ai_move (ai, 2, 4)); 10814 assert_true (ai_move (ai, 5, 1)); 10815 assert_true (ai_move (ai, 6, 2)); 10816 assert_true (ai_move (ai, 0, 3)); 10817 assert_true (ai_move (ai, 0, 1)); 10818 assert_true (ai_move (ai, 6, 3)); 10819 assert_true (ai_move (ai, 5, 0)); 10820 assert_true (ai_move (ai, 4, 1)); 10821 assert_true (ai_move (ai, 0, 2)); 10822 assert_true (ai_move (ai, 0, 5)); 10823 assert_true (ai_move (ai, 0, 6)); 10824 assert_true (ai_move (ai, 0, 0)); 10825 assert_true (ai_move (ai, 2, 0)); 10826 assert_true (ai_move (ai, 0, 7)); 10827 assert_true (ai_move (ai, 5, 4)); 10828 assert_true (ai_move (ai, 1, 0)); 10829 assert_true (ai_move (ai, 6, 4)); 10830 assert_true (ai_move (ai, 1, 5)); 10831 assert_true (ai_move (ai, 2, 5)); 10832 assert_true (ai_move (ai, 7, 5)); 10833 assert_true (ai_move (ai, 7, 3)); 10834 assert_true (ai_move (ai, 3, 6)); 10835 assert_true (ai_move (ai, 2, 6)); 10836 assert_true (ai_move (ai, 1, 6)); 10837 assert_true (ai_move (ai, 2, 7)); 10838 assert_true (ai_move (ai, 6, 5)); 10839 assert_true (ai_move (ai, 4, 5)); 10840 assert_true (ai_move (ai, 3, 0)); 10841 assert_true (ai_move (ai, 4, 0)); 10842 assert_true (ai_move (ai, 6, 0)); 10843 assert_true (ai_move (ai, 6, 1)); 10844 assert_true (ai_move (ai, 4, 7)); 10845 assert_true (ai_move (ai, 4, 6)); 10846 assert_true (ai_move (ai, 3, 5)); 10847 assert_true (ai_move (ai, 5, 6)); 10848 assert_true (ai_move (ai, 7, 4)); 10849 assert_true (ai_move (ai, 7, 2)); 10850 assert_true (ai_move (ai, 1, 7)); 10851 assert_true (ai_move (ai, 7, 6)); 10852 assert_true (ai_move (ai, 3, 7)); 10853 assert_true (ai_move (ai, 6, 6)); 10854 assert_true (ai_move (ai, 5, 7)); 10855 assert_true (ai_move (ai, 6, 7)); 10856 assert_true (ai_move (ai, 7, 0)); 10857 assert_true (ai_move (ai, 7, 1)); 10858 assert_true (ai_move (ai, 7, 7)); 10859 } 10860 10861 private static inline void test_complete_reversi_game_127 () 10862 { 10863 /* 0 1 2 3 4 5 6 7 */ 10864 string [] board = {/* 0 */ " . . . . . . . .", 10865 /* 1 */ " . . . . . . . .", 10866 /* 2 */ " . . L L L . . .", 10867 /* 3 */ " . . . D L . . .", 10868 /* 4 */ " . . . D D . . .", 10869 /* 5 */ " . . . . . D . .", 10870 /* 6 */ " . . . . . . . .", 10871 /* 7 */ " . . . . . . . ."}; 10872 10873 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 10874 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 10875 10876 assert_true (ai_move (ai, 3, 1)); 10877 assert_true (ai_move (ai, 2, 1)); 10878 assert_true (ai_move (ai, 1, 3)); 10879 assert_true (ai_move (ai, 1, 2)); 10880 assert_true (ai_move (ai, 5, 1)); 10881 assert_true (ai_move (ai, 5, 2)); 10882 assert_true (ai_move (ai, 4, 1)); 10883 assert_true (ai_move (ai, 5, 0)); 10884 assert_true (ai_move (ai, 6, 2)); 10885 assert_true (ai_move (ai, 6, 3)); 10886 assert_true (ai_move (ai, 4, 0)); 10887 assert_true (ai_move (ai, 7, 2)); 10888 assert_true (ai_move (ai, 5, 3)); 10889 assert_true (ai_move (ai, 3, 0)); 10890 assert_true (ai_move (ai, 0, 2)); 10891 assert_true (ai_move (ai, 0, 4)); 10892 assert_true (ai_move (ai, 6, 1)); 10893 assert_true (ai_move (ai, 5, 4)); 10894 assert_true (ai_move (ai, 6, 0)); 10895 assert_true (ai_move (ai, 7, 0)); 10896 assert_true (ai_move (ai, 6, 4)); 10897 assert_true (ai_move (ai, 7, 5)); 10898 assert_true (ai_move (ai, 2, 4)); 10899 assert_true (ai_move (ai, 4, 6)); 10900 assert_true (ai_move (ai, 5, 6)); 10901 assert_true (ai_move (ai, 6, 5)); 10902 assert_true (ai_move (ai, 3, 7)); 10903 assert_true (ai_move (ai, 4, 5)); 10904 assert_true (ai_move (ai, 7, 1)); 10905 assert_true (ai_move (ai, 5, 7)); 10906 assert_true (ai_move (ai, 3, 5)); 10907 assert_true (ai_move (ai, 0, 3)); 10908 assert_true (ai_move (ai, 0, 5)); 10909 assert_true (ai_move (ai, 4, 7)); 10910 assert_true (ai_move (ai, 2, 0)); 10911 assert_true (ai_move (ai, 1, 0)); 10912 assert_true (ai_move (ai, 7, 4)); 10913 assert_true (ai_move (ai, 7, 3)); 10914 assert_true (ai_move (ai, 3, 6)); 10915 assert_true (ai_move (ai, 2, 7)); 10916 assert_true (ai_move (ai, 6, 6)); 10917 assert_true (ai_move (ai, 1, 5)); 10918 assert_true (ai_move (ai, 1, 4)); 10919 assert_true (ai_move (ai, 7, 7)); 10920 assert_true (ai_move (ai, 7, 6)); 10921 assert_true (ai_move (ai, 2, 5)); 10922 assert_true (ai_move (ai, 2, 3)); 10923 assert_true (game.pass ()); 10924 assert_true (ai_move (ai, 0, 6)); 10925 assert_true (ai_move (ai, 1, 6)); 10926 assert_true (ai_move (ai, 0, 1)); 10927 assert_true (ai_move (ai, 1, 1)); 10928 assert_true (ai_move (ai, 0, 0)); 10929 assert_true (game.pass ()); 10930 assert_true (ai_move (ai, 6, 7)); 10931 assert_true (game.pass ()); 10932 assert_true (ai_move (ai, 0, 7)); 10933 assert_true (ai_move (ai, 2, 6)); 10934 assert_true (ai_move (ai, 1, 7)); 10935 } 10936 10937 private static inline void test_complete_reversi_game_128 () 10938 { 10939 /* 0 1 2 3 4 5 6 7 */ 10940 string [] board = {/* 0 */ " . . . . . . . .", 10941 /* 1 */ " . . L . . . . .", 10942 /* 2 */ " . . . L L . . .", 10943 /* 3 */ " . . . D L . . .", 10944 /* 4 */ " . . . D D . . .", 10945 /* 5 */ " . . . . . D . .", 10946 /* 6 */ " . . . . . . . .", 10947 /* 7 */ " . . . . . . . ."}; 10948 10949 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 10950 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 10951 10952 assert_true (ai_move (ai, 5, 3)); 10953 assert_true (ai_move (ai, 6, 4)); 10954 assert_true (ai_move (ai, 6, 2)); 10955 assert_true (ai_move (ai, 4, 6)); 10956 assert_true (ai_move (ai, 3, 1)); 10957 assert_true (ai_move (ai, 4, 1)); 10958 assert_true (ai_move (ai, 5, 0)); 10959 assert_true (ai_move (ai, 5, 1)); 10960 assert_true (ai_move (ai, 5, 2)); 10961 assert_true (ai_move (ai, 6, 3)); 10962 assert_true (ai_move (ai, 4, 0)); 10963 assert_true (ai_move (ai, 3, 0)); 10964 assert_true (ai_move (ai, 2, 0)); 10965 assert_true (ai_move (ai, 7, 2)); 10966 assert_true (ai_move (ai, 7, 4)); 10967 assert_true (ai_move (ai, 3, 5)); 10968 assert_true (ai_move (ai, 2, 2)); 10969 assert_true (ai_move (ai, 1, 2)); 10970 assert_true (ai_move (ai, 2, 3)); 10971 assert_true (ai_move (ai, 7, 3)); 10972 assert_true (ai_move (ai, 7, 1)); 10973 assert_true (ai_move (ai, 4, 5)); 10974 assert_true (ai_move (ai, 2, 4)); 10975 assert_true (ai_move (ai, 1, 4)); 10976 assert_true (ai_move (ai, 1, 5)); 10977 assert_true (ai_move (ai, 1, 1)); 10978 assert_true (ai_move (ai, 1, 3)); 10979 assert_true (ai_move (ai, 0, 3)); 10980 assert_true (ai_move (ai, 7, 5)); 10981 assert_true (ai_move (ai, 5, 4)); 10982 assert_true (ai_move (ai, 5, 6)); 10983 assert_true (ai_move (ai, 2, 5)); 10984 assert_true (ai_move (ai, 2, 6)); 10985 assert_true (ai_move (ai, 3, 6)); 10986 assert_true (ai_move (ai, 5, 7)); 10987 assert_true (ai_move (ai, 0, 5)); 10988 assert_true (ai_move (ai, 1, 6)); 10989 assert_true (ai_move (ai, 3, 7)); 10990 assert_true (ai_move (ai, 4, 7)); 10991 assert_true (ai_move (ai, 6, 7)); 10992 assert_true (ai_move (ai, 6, 1)); 10993 assert_true (ai_move (ai, 6, 5)); 10994 assert_true (ai_move (ai, 7, 6)); 10995 assert_true (ai_move (ai, 2, 7)); 10996 assert_true (ai_move (ai, 0, 7)); 10997 assert_true (ai_move (ai, 0, 6)); 10998 assert_true (ai_move (ai, 1, 7)); 10999 assert_true (ai_move (ai, 7, 0)); 11000 assert_true (ai_move (ai, 7, 7)); 11001 assert_true (ai_move (ai, 6, 0)); 11002 assert_true (ai_move (ai, 6, 6)); 11003 assert_true (ai_move (ai, 1, 0)); 11004 assert_true (ai_move (ai, 0, 4)); 11005 assert_true (game.pass ()); 11006 assert_true (ai_move (ai, 0, 2)); 11007 assert_true (ai_move (ai, 0, 1)); 11008 assert_true (ai_move (ai, 0, 0)); 11009 } 11010 11011 private static inline void test_complete_reversi_game_129 () 11012 { 11013 /* 0 1 2 3 4 5 6 7 */ 11014 string [] board = {/* 0 */ " . . . . . . . .", 11015 /* 1 */ " . . . . . . . .", 11016 /* 2 */ " . . . D L . . .", 11017 /* 3 */ " . . . D L . . .", 11018 /* 4 */ " . . . D L D . .", 11019 /* 5 */ " . . . . L . . .", 11020 /* 6 */ " . . . . . . . .", 11021 /* 7 */ " . . . . . . . ."}; 11022 11023 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 11024 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 11025 11026 assert_true (ai_move (ai, 5, 1)); 11027 assert_true (ai_move (ai, 6, 5)); 11028 assert_true (ai_move (ai, 5, 6)); 11029 assert_true (ai_move (ai, 3, 6)); 11030 assert_true (ai_move (ai, 7, 4)); 11031 assert_true (ai_move (ai, 4, 1)); 11032 assert_true (ai_move (ai, 5, 0)); 11033 assert_true (ai_move (ai, 2, 1)); 11034 assert_true (ai_move (ai, 2, 3)); 11035 assert_true (ai_move (ai, 2, 2)); 11036 assert_true (ai_move (ai, 2, 0)); 11037 assert_true (ai_move (ai, 1, 4)); 11038 assert_true (ai_move (ai, 1, 2)); 11039 assert_true (ai_move (ai, 1, 3)); 11040 assert_true (ai_move (ai, 0, 4)); 11041 assert_true (ai_move (ai, 0, 2)); 11042 assert_true (ai_move (ai, 3, 1)); 11043 assert_true (ai_move (ai, 0, 3)); 11044 assert_true (ai_move (ai, 0, 1)); 11045 assert_true (ai_move (ai, 2, 5)); 11046 assert_true (ai_move (ai, 0, 5)); 11047 assert_true (ai_move (ai, 2, 4)); 11048 assert_true (ai_move (ai, 5, 2)); 11049 assert_true (ai_move (ai, 1, 5)); 11050 assert_true (ai_move (ai, 5, 3)); 11051 assert_true (ai_move (ai, 6, 2)); 11052 assert_true (ai_move (ai, 6, 3)); 11053 assert_true (ai_move (ai, 7, 2)); 11054 assert_true (ai_move (ai, 3, 5)); 11055 assert_true (ai_move (ai, 2, 6)); 11056 assert_true (ai_move (ai, 2, 7)); 11057 assert_true (ai_move (ai, 7, 6)); 11058 assert_true (ai_move (ai, 4, 7)); 11059 assert_true (ai_move (ai, 3, 7)); 11060 assert_true (ai_move (ai, 5, 5)); 11061 assert_true (ai_move (ai, 5, 7)); 11062 assert_true (ai_move (ai, 6, 7)); 11063 assert_true (ai_move (ai, 6, 4)); 11064 assert_true (ai_move (ai, 4, 6)); 11065 assert_true (ai_move (ai, 3, 0)); 11066 assert_true (ai_move (ai, 4, 0)); 11067 assert_true (ai_move (ai, 6, 6)); 11068 assert_true (ai_move (ai, 7, 7)); 11069 assert_true (ai_move (ai, 1, 7)); 11070 assert_true (ai_move (ai, 7, 5)); 11071 assert_true (ai_move (ai, 1, 6)); 11072 assert_true (ai_move (ai, 7, 3)); 11073 assert_true (ai_move (ai, 1, 1)); 11074 assert_true (ai_move (ai, 7, 1)); 11075 assert_true (ai_move (ai, 1, 0)); 11076 assert_true (ai_move (ai, 0, 0)); 11077 assert_true (ai_move (ai, 6, 1)); 11078 assert_true (ai_move (ai, 7, 0)); 11079 assert_true (game.pass ()); 11080 assert_true (ai_move (ai, 6, 0)); 11081 assert_true (game.pass ()); 11082 assert_true (ai_move (ai, 0, 7)); 11083 assert_true (ai_move (ai, 0, 6)); 11084 } 11085 11086 private static inline void test_complete_reversi_game_130 () 11087 { 11088 /* 0 1 2 3 4 5 6 7 */ 11089 string [] board = {/* 0 */ " . . . . . . . .", 11090 /* 1 */ " . . . . . . . .", 11091 /* 2 */ " . . . D L . . .", 11092 /* 3 */ " . . . L D . . .", 11093 /* 4 */ " . . L D D D . .", 11094 /* 5 */ " . . . . . . . .", 11095 /* 6 */ " . . . . . . . .", 11096 /* 7 */ " . . . . . . . ."}; 11097 11098 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 11099 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 11100 11101 assert_true (ai_move (ai, 5, 2)); 11102 assert_true (ai_move (ai, 5, 1)); 11103 assert_true (ai_move (ai, 4, 1)); 11104 assert_true (ai_move (ai, 5, 3)); 11105 assert_true (ai_move (ai, 6, 3)); 11106 assert_true (ai_move (ai, 2, 1)); 11107 assert_true (ai_move (ai, 6, 4)); 11108 assert_true (ai_move (ai, 6, 2)); 11109 assert_true (ai_move (ai, 5, 0)); 11110 assert_true (ai_move (ai, 7, 3)); 11111 assert_true (ai_move (ai, 7, 4)); 11112 assert_true (ai_move (ai, 7, 5)); 11113 assert_true (ai_move (ai, 6, 5)); 11114 assert_true (ai_move (ai, 5, 6)); 11115 assert_true (ai_move (ai, 1, 4)); 11116 assert_true (ai_move (ai, 1, 5)); 11117 assert_true (ai_move (ai, 7, 2)); 11118 assert_true (ai_move (ai, 7, 1)); 11119 assert_true (ai_move (ai, 2, 3)); 11120 assert_true (ai_move (ai, 5, 5)); 11121 assert_true (ai_move (ai, 2, 5)); 11122 assert_true (ai_move (ai, 3, 0)); 11123 assert_true (ai_move (ai, 5, 7)); 11124 assert_true (ai_move (ai, 4, 6)); 11125 assert_true (ai_move (ai, 0, 5)); 11126 assert_true (ai_move (ai, 4, 5)); 11127 assert_true (ai_move (ai, 3, 6)); 11128 assert_true (ai_move (ai, 3, 7)); 11129 assert_true (ai_move (ai, 3, 1)); 11130 assert_true (ai_move (ai, 2, 0)); 11131 assert_true (ai_move (ai, 3, 5)); 11132 assert_true (ai_move (ai, 2, 2)); 11133 assert_true (ai_move (ai, 6, 1)); 11134 assert_true (ai_move (ai, 1, 2)); 11135 assert_true (ai_move (ai, 0, 2)); 11136 assert_true (ai_move (ai, 1, 3)); 11137 assert_true (ai_move (ai, 0, 3)); 11138 assert_true (ai_move (ai, 0, 4)); 11139 assert_true (ai_move (ai, 6, 6)); 11140 assert_true (ai_move (ai, 7, 6)); 11141 assert_true (ai_move (ai, 1, 1)); 11142 assert_true (ai_move (ai, 4, 0)); 11143 assert_true (ai_move (ai, 1, 0)); 11144 assert_true (ai_move (ai, 7, 0)); 11145 assert_true (ai_move (ai, 6, 0)); 11146 assert_true (ai_move (ai, 0, 0)); 11147 assert_true (ai_move (ai, 0, 1)); 11148 assert_true (ai_move (ai, 7, 7)); 11149 assert_true (ai_move (ai, 6, 7)); 11150 assert_true (ai_move (ai, 4, 7)); 11151 assert_true (ai_move (ai, 2, 7)); 11152 assert_true (ai_move (ai, 2, 6)); 11153 assert_true (ai_move (ai, 1, 7)); 11154 assert_true (ai_move (ai, 0, 7)); 11155 assert_true (ai_move (ai, 1, 6)); 11156 assert_true (ai_move (ai, 0, 6)); 11157 } 11158 11159 private static inline void test_complete_reversi_game_131 () 11160 { 11161 /* 0 1 2 3 4 5 6 7 */ 11162 string [] board = {/* 0 */ " . . . . . . . .", 11163 /* 1 */ " . . . . . . . .", 11164 /* 2 */ " . . L L L . . .", 11165 /* 3 */ " . . . D D . . .", 11166 /* 4 */ " . . . D D D . .", 11167 /* 5 */ " . . . . . . . .", 11168 /* 6 */ " . . . . . . . .", 11169 /* 7 */ " . . . . . . . ."}; 11170 11171 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 11172 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 11173 11174 assert_true (ai_move (ai, 3, 1)); 11175 assert_true (ai_move (ai, 2, 0)); 11176 assert_true (ai_move (ai, 1, 2)); 11177 assert_true (ai_move (ai, 1, 3)); 11178 assert_true (ai_move (ai, 5, 2)); 11179 assert_true (ai_move (ai, 0, 2)); 11180 assert_true (ai_move (ai, 3, 0)); 11181 assert_true (ai_move (ai, 4, 0)); 11182 assert_true (ai_move (ai, 1, 1)); 11183 assert_true (ai_move (ai, 6, 2)); 11184 assert_true (ai_move (ai, 5, 1)); 11185 assert_true (ai_move (ai, 5, 0)); 11186 assert_true (ai_move (ai, 2, 1)); 11187 assert_true (ai_move (ai, 5, 3)); 11188 assert_true (ai_move (ai, 2, 3)); 11189 assert_true (ai_move (ai, 2, 4)); 11190 assert_true (ai_move (ai, 7, 2)); 11191 assert_true (ai_move (ai, 4, 1)); 11192 assert_true (ai_move (ai, 1, 0)); 11193 assert_true (ai_move (ai, 0, 0)); 11194 assert_true (ai_move (ai, 2, 5)); 11195 assert_true (ai_move (ai, 2, 6)); 11196 assert_true (ai_move (ai, 6, 3)); 11197 assert_true (ai_move (ai, 7, 4)); 11198 assert_true (ai_move (ai, 7, 3)); 11199 assert_true (ai_move (ai, 6, 5)); 11200 assert_true (ai_move (ai, 4, 5)); 11201 assert_true (ai_move (ai, 7, 1)); 11202 assert_true (ai_move (ai, 7, 6)); 11203 assert_true (ai_move (ai, 5, 5)); 11204 assert_true (ai_move (ai, 1, 4)); 11205 assert_true (ai_move (ai, 3, 5)); 11206 assert_true (ai_move (ai, 1, 5)); 11207 assert_true (ai_move (ai, 4, 6)); 11208 assert_true (ai_move (ai, 0, 3)); 11209 assert_true (ai_move (ai, 6, 4)); 11210 assert_true (ai_move (ai, 3, 6)); 11211 assert_true (ai_move (ai, 2, 7)); 11212 assert_true (ai_move (ai, 5, 6)); 11213 assert_true (ai_move (ai, 0, 5)); 11214 assert_true (ai_move (ai, 0, 4)); 11215 assert_true (ai_move (ai, 5, 7)); 11216 assert_true (ai_move (ai, 6, 6)); 11217 assert_true (ai_move (ai, 6, 1)); 11218 assert_true (ai_move (ai, 0, 1)); 11219 assert_true (ai_move (ai, 7, 7)); 11220 assert_true (ai_move (ai, 7, 5)); 11221 assert_true (game.pass ()); 11222 assert_true (ai_move (ai, 7, 0)); 11223 assert_true (ai_move (ai, 6, 0)); 11224 assert_true (ai_move (ai, 6, 7)); 11225 assert_true (game.pass ()); 11226 assert_true (ai_move (ai, 3, 7)); 11227 assert_true (ai_move (ai, 4, 7)); 11228 assert_true (ai_move (ai, 1, 6)); 11229 assert_true (ai_move (ai, 0, 7)); 11230 assert_true (ai_move (ai, 1, 7)); 11231 assert_true (ai_move (ai, 0, 6)); 11232 } 11233 11234 private static inline void test_complete_reversi_game_132 () 11235 { 11236 /* 0 1 2 3 4 5 6 7 */ 11237 string [] board = {/* 0 */ " . . . . . . . .", 11238 /* 1 */ " . . . . . . . .", 11239 /* 2 */ " . . . D L . . .", 11240 /* 3 */ " . . . D D L . .", 11241 /* 4 */ " . . . D L . L .", 11242 /* 5 */ " . . . . . . . .", 11243 /* 6 */ " . . . . . . . .", 11244 /* 7 */ " . . . . . . . ."}; 11245 11246 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 11247 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 11248 11249 assert_true (ai_move (ai, 6, 3)); 11250 assert_true (ai_move (ai, 2, 2)); 11251 assert_true (ai_move (ai, 2, 1)); 11252 assert_true (ai_move (ai, 3, 1)); 11253 assert_true (ai_move (ai, 7, 5)); 11254 assert_true (ai_move (ai, 6, 2)); 11255 assert_true (ai_move (ai, 5, 4)); 11256 assert_true (ai_move (ai, 5, 5)); 11257 assert_true (ai_move (ai, 6, 5)); 11258 assert_true (ai_move (ai, 7, 4)); 11259 assert_true (ai_move (ai, 7, 3)); 11260 assert_true (ai_move (ai, 2, 0)); 11261 assert_true (ai_move (ai, 4, 6)); 11262 assert_true (ai_move (ai, 5, 6)); 11263 assert_true (ai_move (ai, 4, 5)); 11264 assert_true (ai_move (ai, 3, 6)); 11265 assert_true (ai_move (ai, 2, 7)); 11266 assert_true (ai_move (ai, 2, 6)); 11267 assert_true (ai_move (ai, 5, 7)); 11268 assert_true (ai_move (ai, 7, 2)); 11269 assert_true (ai_move (ai, 5, 2)); 11270 assert_true (ai_move (ai, 7, 6)); 11271 assert_true (ai_move (ai, 1, 2)); 11272 assert_true (ai_move (ai, 1, 3)); 11273 assert_true (ai_move (ai, 3, 5)); 11274 assert_true (ai_move (ai, 2, 5)); 11275 assert_true (ai_move (ai, 1, 4)); 11276 assert_true (ai_move (ai, 4, 1)); 11277 assert_true (ai_move (ai, 5, 0)); 11278 assert_true (ai_move (ai, 5, 1)); 11279 assert_true (ai_move (ai, 4, 7)); 11280 assert_true (ai_move (ai, 2, 4)); 11281 assert_true (ai_move (ai, 2, 3)); 11282 assert_true (ai_move (ai, 0, 5)); 11283 assert_true (ai_move (ai, 1, 5)); 11284 assert_true (ai_move (ai, 3, 7)); 11285 assert_true (ai_move (ai, 4, 0)); 11286 assert_true (ai_move (ai, 0, 2)); 11287 assert_true (ai_move (ai, 0, 3)); 11288 assert_true (ai_move (ai, 0, 4)); 11289 assert_true (ai_move (ai, 6, 0)); 11290 assert_true (ai_move (ai, 1, 6)); 11291 assert_true (ai_move (ai, 6, 1)); 11292 assert_true (ai_move (ai, 7, 0)); 11293 assert_true (ai_move (ai, 7, 1)); 11294 assert_true (ai_move (ai, 3, 0)); 11295 assert_true (ai_move (ai, 7, 7)); 11296 assert_true (ai_move (ai, 6, 7)); 11297 assert_true (ai_move (ai, 0, 7)); 11298 assert_true (ai_move (ai, 1, 7)); 11299 assert_true (ai_move (ai, 6, 6)); 11300 assert_true (game.pass ()); 11301 assert_true (ai_move (ai, 1, 1)); 11302 assert_true (ai_move (ai, 1, 0)); 11303 assert_true (ai_move (ai, 0, 6)); 11304 assert_true (game.pass ()); 11305 assert_true (ai_move (ai, 0, 1)); 11306 } 11307 11308 private static inline void test_complete_reversi_game_133 () 11309 { 11310 /* 0 1 2 3 4 5 6 7 */ 11311 string [] board = {/* 0 */ " . . . . . . . .", 11312 /* 1 */ " . . . . . . . .", 11313 /* 2 */ " . . . D L . L .", 11314 /* 3 */ " . . . D D L . .", 11315 /* 4 */ " . . . D L . . .", 11316 /* 5 */ " . . . . . . . .", 11317 /* 6 */ " . . . . . . . .", 11318 /* 7 */ " . . . . . . . ."}; 11319 11320 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 11321 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 11322 11323 assert_true (ai_move (ai, 6, 3)); 11324 assert_true (ai_move (ai, 2, 2)); 11325 assert_true (ai_move (ai, 2, 1)); 11326 assert_true (ai_move (ai, 3, 1)); 11327 assert_true (ai_move (ai, 5, 4)); 11328 assert_true (ai_move (ai, 2, 0)); 11329 assert_true (ai_move (ai, 2, 3)); 11330 assert_true (ai_move (ai, 1, 4)); 11331 assert_true (ai_move (ai, 1, 3)); 11332 assert_true (ai_move (ai, 0, 4)); 11333 assert_true (ai_move (ai, 0, 5)); 11334 assert_true (ai_move (ai, 1, 5)); 11335 assert_true (ai_move (ai, 2, 5)); 11336 assert_true (ai_move (ai, 2, 4)); 11337 assert_true (ai_move (ai, 5, 1)); 11338 assert_true (ai_move (ai, 4, 0)); 11339 assert_true (ai_move (ai, 3, 0)); 11340 assert_true (ai_move (ai, 2, 6)); 11341 assert_true (ai_move (ai, 1, 2)); 11342 assert_true (ai_move (ai, 4, 1)); 11343 assert_true (ai_move (ai, 0, 3)); 11344 assert_true (ai_move (ai, 0, 2)); 11345 assert_true (ai_move (ai, 0, 1)); 11346 assert_true (ai_move (ai, 6, 5)); 11347 assert_true (ai_move (ai, 3, 5)); 11348 assert_true (ai_move (ai, 5, 2)); 11349 assert_true (ai_move (ai, 7, 2)); 11350 assert_true (ai_move (ai, 3, 6)); 11351 assert_true (ai_move (ai, 4, 5)); 11352 assert_true (ai_move (ai, 7, 4)); 11353 assert_true (ai_move (ai, 4, 7)); 11354 assert_true (ai_move (ai, 5, 5)); 11355 assert_true (ai_move (ai, 7, 5)); 11356 assert_true (ai_move (ai, 7, 3)); 11357 assert_true (ai_move (ai, 2, 7)); 11358 assert_true (ai_move (ai, 5, 6)); 11359 assert_true (ai_move (ai, 6, 4)); 11360 assert_true (ai_move (ai, 4, 6)); 11361 assert_true (ai_move (ai, 3, 7)); 11362 assert_true (ai_move (ai, 1, 6)); 11363 assert_true (ai_move (ai, 5, 7)); 11364 assert_true (ai_move (ai, 6, 6)); 11365 assert_true (ai_move (ai, 5, 0)); 11366 assert_true (ai_move (ai, 6, 1)); 11367 assert_true (ai_move (ai, 1, 0)); 11368 assert_true (ai_move (ai, 1, 1)); 11369 assert_true (ai_move (ai, 6, 7)); 11370 assert_true (ai_move (ai, 7, 7)); 11371 assert_true (ai_move (ai, 7, 6)); 11372 assert_true (ai_move (ai, 1, 7)); 11373 assert_true (ai_move (ai, 0, 0)); 11374 assert_true (ai_move (ai, 7, 1)); 11375 assert_true (ai_move (ai, 7, 0)); 11376 assert_true (ai_move (ai, 6, 0)); 11377 assert_true (ai_move (ai, 0, 6)); 11378 assert_true (ai_move (ai, 0, 7)); 11379 } 11380 11381 private static inline void test_complete_reversi_game_134 () 11382 { 11383 /* 0 1 2 3 4 5 6 7 */ 11384 string [] board = {/* 0 */ " . . . . . . . .", 11385 /* 1 */ " . . . . . . . .", 11386 /* 2 */ " . . . D L . . .", 11387 /* 3 */ " . . . L D D . .", 11388 /* 4 */ " . . L L L . . .", 11389 /* 5 */ " . . . . . . . .", 11390 /* 6 */ " . . . . . . . .", 11391 /* 7 */ " . . . . . . . ."}; 11392 11393 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 11394 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 11395 11396 assert_true (ai_move (ai, 5, 2)); 11397 assert_true (ai_move (ai, 5, 1)); 11398 assert_true (ai_move (ai, 3, 1)); 11399 assert_true (ai_move (ai, 5, 4)); 11400 assert_true (ai_move (ai, 6, 2)); 11401 assert_true (ai_move (ai, 7, 3)); 11402 assert_true (ai_move (ai, 7, 2)); 11403 assert_true (ai_move (ai, 4, 1)); 11404 assert_true (ai_move (ai, 6, 4)); 11405 assert_true (ai_move (ai, 6, 3)); 11406 assert_true (ai_move (ai, 7, 4)); 11407 assert_true (ai_move (ai, 2, 2)); 11408 assert_true (ai_move (ai, 1, 2)); 11409 assert_true (ai_move (ai, 2, 3)); 11410 assert_true (ai_move (ai, 1, 3)); 11411 assert_true (ai_move (ai, 2, 1)); 11412 assert_true (ai_move (ai, 2, 0)); 11413 assert_true (ai_move (ai, 3, 0)); 11414 assert_true (ai_move (ai, 1, 5)); 11415 assert_true (ai_move (ai, 2, 5)); 11416 assert_true (ai_move (ai, 2, 6)); 11417 assert_true (ai_move (ai, 1, 4)); 11418 assert_true (ai_move (ai, 5, 0)); 11419 assert_true (ai_move (ai, 3, 6)); 11420 assert_true (ai_move (ai, 4, 0)); 11421 assert_true (ai_move (ai, 0, 5)); 11422 assert_true (ai_move (ai, 6, 5)); 11423 assert_true (ai_move (ai, 2, 7)); 11424 assert_true (ai_move (ai, 5, 5)); 11425 assert_true (ai_move (ai, 0, 3)); 11426 assert_true (ai_move (ai, 4, 5)); 11427 assert_true (ai_move (ai, 0, 2)); 11428 assert_true (ai_move (ai, 0, 4)); 11429 assert_true (ai_move (ai, 5, 6)); 11430 assert_true (ai_move (ai, 3, 5)); 11431 assert_true (ai_move (ai, 4, 6)); 11432 assert_true (ai_move (ai, 5, 7)); 11433 assert_true (ai_move (ai, 7, 5)); 11434 assert_true (ai_move (ai, 7, 6)); 11435 assert_true (ai_move (ai, 1, 1)); 11436 assert_true (ai_move (ai, 4, 7)); 11437 assert_true (ai_move (ai, 7, 1)); 11438 assert_true (ai_move (ai, 7, 0)); 11439 assert_true (ai_move (ai, 6, 0)); 11440 assert_true (ai_move (ai, 1, 7)); 11441 assert_true (ai_move (ai, 1, 0)); 11442 assert_true (ai_move (ai, 3, 7)); 11443 assert_true (ai_move (ai, 6, 7)); 11444 assert_true (ai_move (ai, 7, 7)); 11445 assert_true (ai_move (ai, 1, 6)); 11446 assert_true (ai_move (ai, 6, 1)); 11447 assert_true (ai_move (ai, 6, 6)); 11448 assert_true (ai_move (ai, 0, 0)); 11449 assert_true (ai_move (ai, 0, 1)); 11450 assert_true (ai_move (ai, 0, 6)); 11451 assert_true (ai_move (ai, 0, 7)); 11452 } 11453 11454 private static inline void test_complete_reversi_game_135 () 11455 { 11456 /* 0 1 2 3 4 5 6 7 */ 11457 string [] board = {/* 0 */ " . . . . . . . .", 11458 /* 1 */ " . . . . . . . .", 11459 /* 2 */ " . . L L L . . .", 11460 /* 3 */ " . . . L D D . .", 11461 /* 4 */ " . . . D L . . .", 11462 /* 5 */ " . . . . . . . .", 11463 /* 6 */ " . . . . . . . .", 11464 /* 7 */ " . . . . . . . ."}; 11465 11466 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 11467 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 11468 11469 assert_true (ai_move (ai, 2, 1)); 11470 assert_true (ai_move (ai, 3, 1)); 11471 assert_true (ai_move (ai, 5, 4)); 11472 assert_true (ai_move (ai, 2, 0)); 11473 assert_true (ai_move (ai, 2, 3)); 11474 assert_true (ai_move (ai, 1, 4)); 11475 assert_true (ai_move (ai, 1, 3)); 11476 assert_true (ai_move (ai, 0, 4)); 11477 assert_true (ai_move (ai, 0, 5)); 11478 assert_true (ai_move (ai, 1, 5)); 11479 assert_true (ai_move (ai, 2, 5)); 11480 assert_true (ai_move (ai, 2, 4)); 11481 assert_true (ai_move (ai, 5, 1)); 11482 assert_true (ai_move (ai, 5, 2)); 11483 assert_true (ai_move (ai, 4, 1)); 11484 assert_true (ai_move (ai, 6, 5)); 11485 assert_true (ai_move (ai, 6, 2)); 11486 assert_true (ai_move (ai, 7, 2)); 11487 assert_true (ai_move (ai, 6, 3)); 11488 assert_true (ai_move (ai, 5, 0)); 11489 assert_true (ai_move (ai, 4, 5)); 11490 assert_true (ai_move (ai, 2, 6)); 11491 assert_true (ai_move (ai, 3, 6)); 11492 assert_true (ai_move (ai, 0, 6)); 11493 assert_true (ai_move (ai, 2, 7)); 11494 assert_true (ai_move (ai, 3, 5)); 11495 assert_true (ai_move (ai, 1, 2)); 11496 assert_true (ai_move (ai, 0, 3)); 11497 assert_true (ai_move (ai, 3, 0)); 11498 assert_true (ai_move (ai, 4, 0)); 11499 assert_true (ai_move (ai, 5, 5)); 11500 assert_true (ai_move (ai, 5, 6)); 11501 assert_true (ai_move (ai, 6, 4)); 11502 assert_true (ai_move (ai, 6, 1)); 11503 assert_true (ai_move (ai, 4, 6)); 11504 assert_true (ai_move (ai, 7, 3)); 11505 assert_true (ai_move (ai, 0, 2)); 11506 assert_true (ai_move (ai, 0, 1)); 11507 assert_true (ai_move (ai, 5, 7)); 11508 assert_true (ai_move (ai, 7, 5)); 11509 assert_true (ai_move (ai, 7, 4)); 11510 assert_true (ai_move (ai, 3, 7)); 11511 assert_true (ai_move (ai, 6, 6)); 11512 assert_true (ai_move (ai, 1, 7)); 11513 assert_true (ai_move (ai, 1, 1)); 11514 assert_true (ai_move (ai, 1, 0)); 11515 assert_true (ai_move (ai, 0, 0)); 11516 assert_true (ai_move (ai, 6, 7)); 11517 assert_true (ai_move (ai, 4, 7)); 11518 assert_true (ai_move (ai, 7, 6)); 11519 assert_true (ai_move (ai, 0, 7)); 11520 assert_true (game.pass ()); 11521 assert_true (ai_move (ai, 6, 0)); 11522 assert_true (game.pass ()); 11523 assert_true (ai_move (ai, 1, 6)); 11524 assert_true (game.pass ()); 11525 assert_true (ai_move (ai, 7, 0)); 11526 assert_true (ai_move (ai, 7, 1)); 11527 assert_true (ai_move (ai, 7, 7)); 11528 } 11529 11530 private static inline void test_complete_reversi_game_136 () 11531 { 11532 /* 0 1 2 3 4 5 6 7 */ 11533 string [] board = {/* 0 */ " . . . . . . . .", 11534 /* 1 */ " . . . . L . . .", 11535 /* 2 */ " . . . D L D . .", 11536 /* 3 */ " . . . D L . . .", 11537 /* 4 */ " . . . D L . . .", 11538 /* 5 */ " . . . . . . . .", 11539 /* 6 */ " . . . . . . . .", 11540 /* 7 */ " . . . . . . . ."}; 11541 11542 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 11543 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 11544 11545 assert_true (ai_move (ai, 5, 1)); 11546 assert_true (ai_move (ai, 6, 3)); 11547 assert_true (ai_move (ai, 6, 2)); 11548 assert_true (ai_move (ai, 2, 1)); 11549 assert_true (ai_move (ai, 2, 2)); 11550 assert_true (ai_move (ai, 2, 5)); 11551 assert_true (ai_move (ai, 2, 0)); 11552 assert_true (ai_move (ai, 2, 3)); 11553 assert_true (ai_move (ai, 3, 0)); 11554 assert_true (ai_move (ai, 1, 2)); 11555 assert_true (ai_move (ai, 0, 2)); 11556 assert_true (ai_move (ai, 5, 0)); 11557 assert_true (ai_move (ai, 3, 1)); 11558 assert_true (ai_move (ai, 7, 2)); 11559 assert_true (ai_move (ai, 1, 4)); 11560 assert_true (ai_move (ai, 6, 0)); 11561 assert_true (ai_move (ai, 3, 6)); 11562 assert_true (ai_move (ai, 1, 3)); 11563 assert_true (ai_move (ai, 0, 4)); 11564 assert_true (ai_move (ai, 0, 3)); 11565 assert_true (ai_move (ai, 2, 4)); 11566 assert_true (ai_move (ai, 1, 5)); 11567 assert_true (ai_move (ai, 0, 5)); 11568 assert_true (ai_move (ai, 2, 6)); 11569 assert_true (ai_move (ai, 2, 7)); 11570 assert_true (ai_move (ai, 4, 7)); 11571 assert_true (ai_move (ai, 4, 6)); 11572 assert_true (ai_move (ai, 4, 5)); 11573 assert_true (ai_move (ai, 3, 5)); 11574 assert_true (ai_move (ai, 1, 6)); 11575 assert_true (ai_move (ai, 5, 6)); 11576 assert_true (ai_move (ai, 5, 5)); 11577 assert_true (ai_move (ai, 6, 5)); 11578 assert_true (ai_move (ai, 5, 4)); 11579 assert_true (ai_move (ai, 5, 7)); 11580 assert_true (ai_move (ai, 7, 5)); 11581 assert_true (ai_move (ai, 3, 7)); 11582 assert_true (ai_move (ai, 1, 7)); 11583 assert_true (ai_move (ai, 0, 7)); 11584 assert_true (ai_move (ai, 0, 6)); 11585 assert_true (ai_move (ai, 5, 3)); 11586 assert_true (ai_move (ai, 6, 4)); 11587 assert_true (ai_move (ai, 7, 3)); 11588 assert_true (ai_move (ai, 7, 4)); 11589 assert_true (ai_move (ai, 7, 6)); 11590 assert_true (ai_move (ai, 7, 7)); 11591 assert_true (ai_move (ai, 6, 1)); 11592 assert_true (ai_move (ai, 7, 1)); 11593 assert_true (game.pass ()); 11594 assert_true (ai_move (ai, 7, 0)); 11595 assert_true (game.pass ()); 11596 assert_true (ai_move (ai, 4, 0)); 11597 assert_true (ai_move (ai, 1, 1)); 11598 assert_true (ai_move (ai, 6, 7)); 11599 assert_true (ai_move (ai, 6, 6)); 11600 assert_true (ai_move (ai, 0, 0)); 11601 assert_true (ai_move (ai, 1, 0)); 11602 assert_true (ai_move (ai, 0, 1)); 11603 } 11604 11605 private static inline void test_complete_reversi_game_137 () 11606 { 11607 /* 0 1 2 3 4 5 6 7 */ 11608 string [] board = {/* 0 */ " . . . . . . . .", 11609 /* 1 */ " . . . . . . . .", 11610 /* 2 */ " . . . D D D . .", 11611 /* 3 */ " . . . D D . . .", 11612 /* 4 */ " . . L L L . . .", 11613 /* 5 */ " . . . . . . . .", 11614 /* 6 */ " . . . . . . . .", 11615 /* 7 */ " . . . . . . . ."}; 11616 11617 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 11618 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 11619 11620 assert_true (ai_move (ai, 1, 5)); 11621 assert_true (ai_move (ai, 1, 4)); 11622 assert_true (ai_move (ai, 5, 5)); 11623 assert_true (ai_move (ai, 0, 6)); 11624 assert_true (ai_move (ai, 3, 5)); 11625 assert_true (ai_move (ai, 4, 6)); 11626 assert_true (ai_move (ai, 3, 6)); 11627 assert_true (ai_move (ai, 6, 4)); 11628 assert_true (ai_move (ai, 1, 3)); 11629 assert_true (ai_move (ai, 1, 2)); 11630 assert_true (ai_move (ai, 0, 2)); 11631 assert_true (ai_move (ai, 2, 6)); 11632 assert_true (ai_move (ai, 2, 2)); 11633 assert_true (ai_move (ai, 5, 3)); 11634 assert_true (ai_move (ai, 6, 3)); 11635 assert_true (ai_move (ai, 6, 2)); 11636 assert_true (ai_move (ai, 7, 3)); 11637 assert_true (ai_move (ai, 4, 1)); 11638 assert_true (ai_move (ai, 3, 1)); 11639 assert_true (ai_move (ai, 2, 3)); 11640 assert_true (ai_move (ai, 7, 2)); 11641 assert_true (ai_move (ai, 5, 1)); 11642 assert_true (ai_move (ai, 4, 0)); 11643 assert_true (ai_move (ai, 7, 4)); 11644 assert_true (ai_move (ai, 5, 4)); 11645 assert_true (ai_move (ai, 2, 0)); 11646 assert_true (ai_move (ai, 5, 6)); 11647 assert_true (ai_move (ai, 2, 1)); 11648 assert_true (ai_move (ai, 7, 5)); 11649 assert_true (ai_move (ai, 5, 7)); 11650 assert_true (ai_move (ai, 4, 5)); 11651 assert_true (ai_move (ai, 2, 5)); 11652 assert_true (ai_move (ai, 6, 5)); 11653 assert_true (ai_move (ai, 5, 0)); 11654 assert_true (ai_move (ai, 3, 0)); 11655 assert_true (ai_move (ai, 0, 3)); 11656 assert_true (ai_move (ai, 2, 7)); 11657 assert_true (ai_move (ai, 4, 7)); 11658 assert_true (ai_move (ai, 3, 7)); 11659 assert_true (ai_move (ai, 1, 7)); 11660 assert_true (ai_move (ai, 0, 5)); 11661 assert_true (ai_move (ai, 1, 6)); 11662 assert_true (ai_move (ai, 0, 7)); 11663 assert_true (ai_move (ai, 6, 6)); 11664 assert_true (ai_move (ai, 7, 7)); 11665 assert_true (ai_move (ai, 0, 1)); 11666 assert_true (ai_move (ai, 6, 7)); 11667 assert_true (ai_move (ai, 1, 1)); 11668 assert_true (ai_move (ai, 0, 4)); 11669 assert_true (ai_move (ai, 7, 6)); 11670 assert_true (ai_move (ai, 0, 0)); 11671 assert_true (ai_move (ai, 1, 0)); 11672 assert_true (ai_move (ai, 6, 1)); 11673 assert_true (ai_move (ai, 7, 0)); 11674 assert_true (ai_move (ai, 6, 0)); 11675 assert_true (ai_move (ai, 7, 1)); 11676 } 11677 11678 private static inline void test_complete_reversi_game_138 () 11679 { 11680 /* 0 1 2 3 4 5 6 7 */ 11681 string [] board = {/* 0 */ " . . . . . . . .", 11682 /* 1 */ " . . . . . . . .", 11683 /* 2 */ " . . L D D D . .", 11684 /* 3 */ " . . . L D . . .", 11685 /* 4 */ " . . . D L . . .", 11686 /* 5 */ " . . . . . . . .", 11687 /* 6 */ " . . . . . . . .", 11688 /* 7 */ " . . . . . . . ."}; 11689 11690 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 11691 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 11692 11693 assert_true (ai_move (ai, 1, 2)); 11694 assert_true (ai_move (ai, 5, 1)); 11695 assert_true (ai_move (ai, 4, 1)); 11696 assert_true (ai_move (ai, 5, 3)); 11697 assert_true (ai_move (ai, 6, 2)); 11698 assert_true (ai_move (ai, 4, 0)); 11699 assert_true (ai_move (ai, 3, 0)); 11700 assert_true (ai_move (ai, 2, 0)); 11701 assert_true (ai_move (ai, 5, 0)); 11702 assert_true (ai_move (ai, 6, 0)); 11703 assert_true (ai_move (ai, 3, 5)); 11704 assert_true (ai_move (ai, 3, 1)); 11705 assert_true (ai_move (ai, 2, 3)); 11706 assert_true (ai_move (ai, 6, 3)); 11707 assert_true (ai_move (ai, 7, 3)); 11708 assert_true (ai_move (ai, 1, 3)); 11709 assert_true (ai_move (ai, 0, 3)); 11710 assert_true (ai_move (ai, 1, 4)); 11711 assert_true (ai_move (ai, 2, 1)); 11712 assert_true (ai_move (ai, 2, 4)); 11713 assert_true (ai_move (ai, 0, 5)); 11714 assert_true (ai_move (ai, 6, 4)); 11715 assert_true (ai_move (ai, 2, 5)); 11716 assert_true (ai_move (ai, 1, 5)); 11717 assert_true (ai_move (ai, 5, 5)); 11718 assert_true (ai_move (ai, 7, 2)); 11719 assert_true (ai_move (ai, 7, 1)); 11720 assert_true (ai_move (ai, 2, 6)); 11721 assert_true (ai_move (ai, 3, 6)); 11722 assert_true (ai_move (ai, 7, 5)); 11723 assert_true (ai_move (ai, 2, 7)); 11724 assert_true (ai_move (ai, 4, 6)); 11725 assert_true (ai_move (ai, 4, 5)); 11726 assert_true (ai_move (ai, 3, 7)); 11727 assert_true (ai_move (ai, 5, 7)); 11728 assert_true (ai_move (ai, 1, 7)); 11729 assert_true (ai_move (ai, 6, 5)); 11730 assert_true (ai_move (ai, 0, 2)); 11731 assert_true (ai_move (ai, 4, 7)); 11732 assert_true (ai_move (ai, 6, 7)); 11733 assert_true (ai_move (ai, 6, 1)); 11734 assert_true (ai_move (ai, 0, 4)); 11735 assert_true (ai_move (ai, 0, 1)); 11736 assert_true (ai_move (ai, 5, 6)); 11737 assert_true (ai_move (ai, 5, 4)); 11738 assert_true (ai_move (ai, 7, 4)); 11739 assert_true (ai_move (ai, 7, 6)); 11740 assert_true (ai_move (ai, 6, 6)); 11741 assert_true (ai_move (ai, 0, 6)); 11742 assert_true (ai_move (ai, 1, 0)); 11743 assert_true (ai_move (ai, 7, 7)); 11744 assert_true (ai_move (ai, 7, 0)); 11745 assert_true (ai_move (ai, 0, 7)); 11746 assert_true (ai_move (ai, 1, 1)); 11747 assert_true (ai_move (ai, 0, 0)); 11748 assert_true (ai_move (ai, 1, 6)); 11749 } 11750 11751 private static inline void test_complete_reversi_game_139 () 11752 { 11753 /* 0 1 2 3 4 5 6 7 */ 11754 string [] board = {/* 0 */ " . . . . . . . .", 11755 /* 1 */ " . . . . L D . .", 11756 /* 2 */ " . . . D L . . .", 11757 /* 3 */ " . . . D L . . .", 11758 /* 4 */ " . . . D L . . .", 11759 /* 5 */ " . . . . . . . .", 11760 /* 6 */ " . . . . . . . .", 11761 /* 7 */ " . . . . . . . ."}; 11762 11763 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 11764 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 11765 11766 assert_true (ai_move (ai, 5, 0)); 11767 assert_true (ai_move (ai, 2, 1)); 11768 assert_true (ai_move (ai, 2, 3)); 11769 assert_true (ai_move (ai, 2, 2)); 11770 assert_true (ai_move (ai, 2, 0)); 11771 assert_true (ai_move (ai, 1, 2)); 11772 assert_true (ai_move (ai, 0, 3)); 11773 assert_true (ai_move (ai, 1, 4)); 11774 assert_true (ai_move (ai, 2, 5)); 11775 assert_true (ai_move (ai, 2, 4)); 11776 assert_true (ai_move (ai, 1, 5)); 11777 assert_true (ai_move (ai, 2, 6)); 11778 assert_true (ai_move (ai, 1, 3)); 11779 assert_true (ai_move (ai, 5, 2)); 11780 assert_true (ai_move (ai, 6, 2)); 11781 assert_true (ai_move (ai, 0, 5)); 11782 assert_true (ai_move (ai, 3, 6)); 11783 assert_true (ai_move (ai, 0, 4)); 11784 assert_true (ai_move (ai, 0, 6)); 11785 assert_true (ai_move (ai, 3, 1)); 11786 assert_true (ai_move (ai, 4, 0)); 11787 assert_true (ai_move (ai, 7, 2)); 11788 assert_true (ai_move (ai, 6, 3)); 11789 assert_true (ai_move (ai, 5, 4)); 11790 assert_true (ai_move (ai, 2, 7)); 11791 assert_true (ai_move (ai, 3, 0)); 11792 assert_true (ai_move (ai, 5, 3)); 11793 assert_true (ai_move (ai, 4, 7)); 11794 assert_true (ai_move (ai, 6, 5)); 11795 assert_true (ai_move (ai, 4, 5)); 11796 assert_true (ai_move (ai, 7, 4)); 11797 assert_true (ai_move (ai, 6, 1)); 11798 assert_true (ai_move (ai, 5, 6)); 11799 assert_true (ai_move (ai, 3, 5)); 11800 assert_true (ai_move (ai, 3, 7)); 11801 assert_true (ai_move (ai, 5, 5)); 11802 assert_true (ai_move (ai, 6, 4)); 11803 assert_true (ai_move (ai, 0, 2)); 11804 assert_true (ai_move (ai, 0, 1)); 11805 assert_true (ai_move (ai, 6, 0)); 11806 assert_true (ai_move (ai, 4, 6)); 11807 assert_true (ai_move (ai, 1, 0)); 11808 assert_true (ai_move (ai, 5, 7)); 11809 assert_true (ai_move (ai, 7, 3)); 11810 assert_true (ai_move (ai, 1, 1)); 11811 assert_true (ai_move (ai, 7, 5)); 11812 assert_true (ai_move (ai, 6, 6)); 11813 assert_true (ai_move (ai, 1, 6)); 11814 assert_true (ai_move (ai, 0, 7)); 11815 assert_true (ai_move (ai, 1, 7)); 11816 assert_true (ai_move (ai, 7, 0)); 11817 assert_true (ai_move (ai, 6, 7)); 11818 assert_true (ai_move (ai, 0, 0)); 11819 assert_true (ai_move (ai, 7, 1)); 11820 assert_true (ai_move (ai, 7, 7)); 11821 assert_true (ai_move (ai, 7, 6)); 11822 } 11823 11824 private static inline void test_complete_reversi_game_140 () 11825 { 11826 /* 0 1 2 3 4 5 6 7 */ 11827 string [] board = {/* 0 */ " . . . . . . . .", 11828 /* 1 */ " . . . . . D . .", 11829 /* 2 */ " . . . D D . . .", 11830 /* 3 */ " . . . D L . . .", 11831 /* 4 */ " . . . L L . . .", 11832 /* 5 */ " . . L . . . . .", 11833 /* 6 */ " . . . . . . . .", 11834 /* 7 */ " . . . . . . . ."}; 11835 11836 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 11837 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 11838 11839 assert_true (ai_move (ai, 5, 4)); 11840 assert_true (ai_move (ai, 6, 4)); 11841 assert_true (ai_move (ai, 6, 5)); 11842 assert_true (ai_move (ai, 2, 2)); 11843 assert_true (ai_move (ai, 1, 2)); 11844 assert_true (ai_move (ai, 3, 1)); 11845 assert_true (ai_move (ai, 2, 1)); 11846 assert_true (ai_move (ai, 1, 3)); 11847 assert_true (ai_move (ai, 2, 3)); 11848 assert_true (ai_move (ai, 5, 2)); 11849 assert_true (ai_move (ai, 5, 3)); 11850 assert_true (ai_move (ai, 6, 2)); 11851 assert_true (ai_move (ai, 7, 2)); 11852 assert_true (ai_move (ai, 5, 5)); 11853 assert_true (ai_move (ai, 5, 6)); 11854 assert_true (ai_move (ai, 4, 6)); 11855 assert_true (ai_move (ai, 4, 5)); 11856 assert_true (ai_move (ai, 4, 1)); 11857 assert_true (ai_move (ai, 2, 0)); 11858 assert_true (ai_move (ai, 6, 3)); 11859 assert_true (ai_move (ai, 7, 5)); 11860 assert_true (ai_move (ai, 0, 2)); 11861 assert_true (ai_move (ai, 5, 0)); 11862 assert_true (ai_move (ai, 5, 7)); 11863 assert_true (ai_move (ai, 7, 3)); 11864 assert_true (ai_move (ai, 7, 4)); 11865 assert_true (ai_move (ai, 0, 4)); 11866 assert_true (ai_move (ai, 1, 4)); 11867 assert_true (ai_move (ai, 3, 7)); 11868 assert_true (ai_move (ai, 4, 7)); 11869 assert_true (ai_move (ai, 2, 4)); 11870 assert_true (ai_move (ai, 0, 3)); 11871 assert_true (ai_move (ai, 2, 6)); 11872 assert_true (ai_move (ai, 0, 5)); 11873 assert_true (ai_move (ai, 3, 6)); 11874 assert_true (ai_move (ai, 3, 5)); 11875 assert_true (ai_move (ai, 1, 5)); 11876 assert_true (ai_move (ai, 2, 7)); 11877 assert_true (ai_move (ai, 6, 1)); 11878 assert_true (ai_move (ai, 1, 1)); 11879 assert_true (ai_move (ai, 6, 7)); 11880 assert_true (ai_move (ai, 7, 7)); 11881 assert_true (ai_move (ai, 7, 6)); 11882 assert_true (ai_move (ai, 0, 6)); 11883 assert_true (ai_move (ai, 0, 1)); 11884 assert_true (ai_move (ai, 0, 0)); 11885 assert_true (ai_move (ai, 1, 0)); 11886 assert_true (ai_move (ai, 3, 0)); 11887 assert_true (ai_move (ai, 6, 6)); 11888 assert_true (ai_move (ai, 1, 7)); 11889 assert_true (ai_move (ai, 4, 0)); 11890 assert_true (ai_move (ai, 7, 0)); 11891 assert_true (ai_move (ai, 6, 0)); 11892 assert_true (ai_move (ai, 7, 1)); 11893 assert_true (ai_move (ai, 1, 6)); 11894 assert_true (ai_move (ai, 0, 7)); 11895 } 11896 11897 private static inline void test_complete_reversi_game_141 () 11898 { 11899 /* 0 1 2 3 4 5 6 7 */ 11900 string [] board = {/* 0 */ " . . . . . . . .", 11901 /* 1 */ " . . . . . D . .", 11902 /* 2 */ " . . . D D . . .", 11903 /* 3 */ " . . . D L . . .", 11904 /* 4 */ " . . L L L . . .", 11905 /* 5 */ " . . . . . . . .", 11906 /* 6 */ " . . . . . . . .", 11907 /* 7 */ " . . . . . . . ."}; 11908 11909 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 11910 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 11911 11912 assert_true (ai_move (ai, 1, 5)); 11913 assert_true (ai_move (ai, 1, 4)); 11914 assert_true (ai_move (ai, 5, 4)); 11915 assert_true (ai_move (ai, 6, 4)); 11916 assert_true (ai_move (ai, 6, 5)); 11917 assert_true (ai_move (ai, 2, 2)); 11918 assert_true (ai_move (ai, 1, 2)); 11919 assert_true (ai_move (ai, 3, 1)); 11920 assert_true (ai_move (ai, 2, 1)); 11921 assert_true (ai_move (ai, 1, 3)); 11922 assert_true (ai_move (ai, 2, 0)); 11923 assert_true (ai_move (ai, 0, 2)); 11924 assert_true (ai_move (ai, 2, 3)); 11925 assert_true (ai_move (ai, 4, 0)); 11926 assert_true (ai_move (ai, 3, 0)); 11927 assert_true (ai_move (ai, 1, 0)); 11928 assert_true (ai_move (ai, 0, 5)); 11929 assert_true (ai_move (ai, 6, 2)); 11930 assert_true (ai_move (ai, 0, 4)); 11931 assert_true (ai_move (ai, 5, 2)); 11932 assert_true (ai_move (ai, 2, 5)); 11933 assert_true (ai_move (ai, 2, 6)); 11934 assert_true (ai_move (ai, 4, 1)); 11935 assert_true (ai_move (ai, 0, 3)); 11936 assert_true (ai_move (ai, 0, 1)); 11937 assert_true (ai_move (ai, 5, 0)); 11938 assert_true (ai_move (ai, 3, 6)); 11939 assert_true (ai_move (ai, 4, 6)); 11940 assert_true (ai_move (ai, 2, 7)); 11941 assert_true (ai_move (ai, 7, 6)); 11942 assert_true (ai_move (ai, 5, 3)); 11943 assert_true (ai_move (ai, 1, 6)); 11944 assert_true (ai_move (ai, 0, 6)); 11945 assert_true (ai_move (ai, 3, 5)); 11946 assert_true (ai_move (ai, 4, 7)); 11947 assert_true (ai_move (ai, 6, 3)); 11948 assert_true (ai_move (ai, 3, 7)); 11949 assert_true (ai_move (ai, 1, 1)); 11950 assert_true (ai_move (ai, 7, 3)); 11951 assert_true (ai_move (ai, 7, 2)); 11952 assert_true (ai_move (ai, 5, 7)); 11953 assert_true (ai_move (ai, 7, 4)); 11954 assert_true (ai_move (ai, 0, 0)); 11955 assert_true (ai_move (ai, 1, 7)); 11956 assert_true (ai_move (ai, 0, 7)); 11957 assert_true (ai_move (ai, 5, 6)); 11958 assert_true (ai_move (ai, 6, 0)); 11959 assert_true (ai_move (ai, 6, 1)); 11960 assert_true (ai_move (ai, 7, 0)); 11961 assert_true (ai_move (ai, 7, 1)); 11962 assert_true (ai_move (ai, 7, 5)); 11963 assert_true (game.pass ()); 11964 assert_true (ai_move (ai, 6, 6)); 11965 assert_true (ai_move (ai, 6, 7)); 11966 assert_true (ai_move (ai, 5, 5)); 11967 assert_true (ai_move (ai, 4, 5)); 11968 assert_true (ai_move (ai, 7, 7)); 11969 } 11970 11971 private static inline void test_complete_reversi_game_142 () 11972 { 11973 /* 0 1 2 3 4 5 6 7 */ 11974 string [] board = {/* 0 */ " . . . . . . . .", 11975 /* 1 */ " . . . . . D . .", 11976 /* 2 */ " . . . D D . . .", 11977 /* 3 */ " . . L L L . . .", 11978 /* 4 */ " . . . D L . . .", 11979 /* 5 */ " . . . . . . . .", 11980 /* 6 */ " . . . . . . . .", 11981 /* 7 */ " . . . . . . . ."}; 11982 11983 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 11984 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 11985 11986 assert_true (ai_move (ai, 1, 2)); 11987 assert_true (ai_move (ai, 1, 3)); 11988 assert_true (ai_move (ai, 5, 2)); 11989 assert_true (ai_move (ai, 2, 4)); 11990 assert_true (ai_move (ai, 2, 5)); 11991 assert_true (ai_move (ai, 2, 6)); 11992 assert_true (ai_move (ai, 5, 4)); 11993 assert_true (ai_move (ai, 3, 1)); 11994 assert_true (ai_move (ai, 2, 1)); 11995 assert_true (ai_move (ai, 4, 1)); 11996 assert_true (ai_move (ai, 4, 0)); 11997 assert_true (ai_move (ai, 5, 0)); 11998 assert_true (ai_move (ai, 6, 0)); 11999 assert_true (ai_move (ai, 6, 2)); 12000 assert_true (ai_move (ai, 5, 3)); 12001 assert_true (ai_move (ai, 6, 3)); 12002 assert_true (ai_move (ai, 7, 2)); 12003 assert_true (ai_move (ai, 7, 4)); 12004 assert_true (ai_move (ai, 7, 3)); 12005 assert_true (ai_move (ai, 7, 1)); 12006 assert_true (ai_move (ai, 1, 5)); 12007 assert_true (ai_move (ai, 5, 5)); 12008 assert_true (ai_move (ai, 3, 5)); 12009 assert_true (ai_move (ai, 0, 4)); 12010 assert_true (ai_move (ai, 0, 5)); 12011 assert_true (ai_move (ai, 4, 6)); 12012 assert_true (ai_move (ai, 4, 5)); 12013 assert_true (ai_move (ai, 2, 2)); 12014 assert_true (ai_move (ai, 0, 3)); 12015 assert_true (ai_move (ai, 5, 6)); 12016 assert_true (ai_move (ai, 1, 4)); 12017 assert_true (ai_move (ai, 3, 6)); 12018 assert_true (ai_move (ai, 3, 0)); 12019 assert_true (ai_move (ai, 2, 0)); 12020 assert_true (ai_move (ai, 1, 0)); 12021 assert_true (ai_move (ai, 0, 2)); 12022 assert_true (ai_move (ai, 0, 1)); 12023 assert_true (ai_move (ai, 1, 1)); 12024 assert_true (ai_move (ai, 6, 4)); 12025 assert_true (ai_move (ai, 6, 5)); 12026 assert_true (ai_move (ai, 6, 1)); 12027 assert_true (ai_move (ai, 0, 6)); 12028 assert_true (ai_move (ai, 0, 7)); 12029 assert_true (game.pass ()); 12030 assert_true (ai_move (ai, 1, 6)); 12031 assert_true (ai_move (ai, 1, 7)); 12032 assert_true (ai_move (ai, 2, 7)); 12033 assert_true (ai_move (ai, 3, 7)); 12034 assert_true (ai_move (ai, 4, 7)); 12035 assert_true (ai_move (ai, 5, 7)); 12036 assert_true (ai_move (ai, 6, 7)); 12037 assert_true (ai_move (ai, 6, 6)); 12038 assert_true (ai_move (ai, 7, 7)); 12039 assert_true (ai_move (ai, 7, 6)); 12040 assert_true (ai_move (ai, 0, 0)); 12041 assert_true (game.pass ()); 12042 assert_true (ai_move (ai, 7, 5)); 12043 assert_true (game.pass ()); 12044 assert_true (ai_move (ai, 7, 0)); 12045 } 12046 12047 private static inline void test_complete_reversi_game_143 () 12048 { 12049 /* 0 1 2 3 4 5 6 7 */ 12050 string [] board = {/* 0 */ " . . . . . . . .", 12051 /* 1 */ " . . . . . D . .", 12052 /* 2 */ " . . L D D . . .", 12053 /* 3 */ " . . . L L . . .", 12054 /* 4 */ " . . . D L . . .", 12055 /* 5 */ " . . . . . . . .", 12056 /* 6 */ " . . . . . . . .", 12057 /* 7 */ " . . . . . . . ."}; 12058 12059 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 12060 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 12061 12062 assert_true (ai_move (ai, 1, 2)); 12063 assert_true (ai_move (ai, 3, 1)); 12064 assert_true (ai_move (ai, 5, 2)); 12065 assert_true (ai_move (ai, 1, 3)); 12066 assert_true (ai_move (ai, 2, 1)); 12067 assert_true (ai_move (ai, 2, 0)); 12068 assert_true (ai_move (ai, 1, 4)); 12069 assert_true (ai_move (ai, 0, 4)); 12070 assert_true (ai_move (ai, 3, 0)); 12071 assert_true (ai_move (ai, 4, 0)); 12072 assert_true (ai_move (ai, 2, 3)); 12073 assert_true (ai_move (ai, 6, 2)); 12074 assert_true (ai_move (ai, 7, 2)); 12075 assert_true (ai_move (ai, 0, 3)); 12076 assert_true (ai_move (ai, 0, 2)); 12077 assert_true (ai_move (ai, 0, 1)); 12078 assert_true (ai_move (ai, 5, 0)); 12079 assert_true (ai_move (ai, 6, 0)); 12080 assert_true (ai_move (ai, 5, 5)); 12081 assert_true (ai_move (ai, 1, 5)); 12082 assert_true (ai_move (ai, 0, 5)); 12083 assert_true (ai_move (ai, 0, 6)); 12084 assert_true (ai_move (ai, 1, 6)); 12085 assert_true (ai_move (ai, 2, 5)); 12086 assert_true (ai_move (ai, 1, 0)); 12087 assert_true (ai_move (ai, 0, 0)); 12088 assert_true (ai_move (ai, 4, 1)); 12089 assert_true (ai_move (ai, 0, 7)); 12090 assert_true (ai_move (ai, 1, 7)); 12091 assert_true (ai_move (ai, 2, 7)); 12092 assert_true (ai_move (ai, 3, 5)); 12093 assert_true (ai_move (ai, 2, 6)); 12094 assert_true (game.pass ()); 12095 assert_true (ai_move (ai, 5, 4)); 12096 assert_true (ai_move (ai, 1, 1)); 12097 assert_true (ai_move (ai, 6, 3)); 12098 assert_true (ai_move (ai, 4, 5)); 12099 assert_true (ai_move (ai, 5, 3)); 12100 assert_true (ai_move (ai, 3, 6)); 12101 assert_true (ai_move (ai, 6, 4)); 12102 assert_true (ai_move (ai, 6, 5)); 12103 assert_true (ai_move (ai, 2, 4)); 12104 assert_true (ai_move (ai, 6, 1)); 12105 assert_true (ai_move (ai, 7, 4)); 12106 assert_true (ai_move (ai, 7, 3)); 12107 assert_true (ai_move (ai, 5, 6)); 12108 assert_true (ai_move (ai, 7, 5)); 12109 assert_true (ai_move (ai, 3, 7)); 12110 assert_true (ai_move (ai, 5, 7)); 12111 assert_true (ai_move (ai, 4, 6)); 12112 assert_true (ai_move (ai, 4, 7)); 12113 assert_true (ai_move (ai, 6, 7)); 12114 assert_true (ai_move (ai, 6, 6)); 12115 assert_true (ai_move (ai, 7, 7)); 12116 assert_true (ai_move (ai, 7, 6)); 12117 assert_true (ai_move (ai, 7, 1)); 12118 assert_true (ai_move (ai, 7, 0)); 12119 } 12120 12121 private static inline void test_complete_reversi_game_144 () 12122 { 12123 /* 0 1 2 3 4 5 6 7 */ 12124 string [] board = {/* 0 */ " . . . . . . . .", 12125 /* 1 */ " . . L . . D . .", 12126 /* 2 */ " . . . L D . . .", 12127 /* 3 */ " . . . D L . . .", 12128 /* 4 */ " . . . D L . . .", 12129 /* 5 */ " . . . . . . . .", 12130 /* 6 */ " . . . . . . . .", 12131 /* 7 */ " . . . . . . . ."}; 12132 12133 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 12134 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 12135 12136 assert_true (ai_move (ai, 2, 2)); 12137 assert_true (ai_move (ai, 4, 1)); 12138 assert_true (ai_move (ai, 2, 0)); 12139 assert_true (ai_move (ai, 1, 2)); 12140 assert_true (ai_move (ai, 2, 3)); 12141 assert_true (ai_move (ai, 1, 4)); 12142 assert_true (ai_move (ai, 2, 4)); 12143 assert_true (ai_move (ai, 1, 3)); 12144 assert_true (ai_move (ai, 0, 2)); 12145 assert_true (ai_move (ai, 0, 3)); 12146 assert_true (ai_move (ai, 0, 4)); 12147 assert_true (ai_move (ai, 0, 5)); 12148 assert_true (ai_move (ai, 0, 6)); 12149 assert_true (ai_move (ai, 1, 5)); 12150 assert_true (ai_move (ai, 2, 5)); 12151 assert_true (ai_move (ai, 3, 5)); 12152 assert_true (ai_move (ai, 4, 6)); 12153 assert_true (ai_move (ai, 3, 6)); 12154 assert_true (ai_move (ai, 4, 7)); 12155 assert_true (ai_move (ai, 5, 7)); 12156 assert_true (ai_move (ai, 6, 7)); 12157 assert_true (ai_move (ai, 1, 1)); 12158 assert_true (ai_move (ai, 5, 2)); 12159 assert_true (ai_move (ai, 6, 3)); 12160 assert_true (ai_move (ai, 6, 2)); 12161 assert_true (ai_move (ai, 3, 1)); 12162 assert_true (ai_move (ai, 3, 0)); 12163 assert_true (ai_move (ai, 3, 7)); 12164 assert_true (ai_move (ai, 2, 7)); 12165 assert_true (ai_move (ai, 4, 0)); 12166 assert_true (ai_move (ai, 5, 0)); 12167 assert_true (ai_move (ai, 1, 0)); 12168 assert_true (ai_move (ai, 0, 0)); 12169 assert_true (ai_move (ai, 2, 6)); 12170 assert_true (ai_move (ai, 7, 4)); 12171 assert_true (ai_move (ai, 7, 2)); 12172 assert_true (ai_move (ai, 7, 3)); 12173 assert_true (ai_move (ai, 7, 5)); 12174 assert_true (ai_move (ai, 5, 3)); 12175 assert_true (ai_move (ai, 4, 5)); 12176 assert_true (ai_move (ai, 5, 4)); 12177 assert_true (ai_move (ai, 6, 5)); 12178 assert_true (ai_move (ai, 1, 7)); 12179 assert_true (ai_move (ai, 5, 5)); 12180 assert_true (ai_move (ai, 5, 6)); 12181 assert_true (ai_move (ai, 6, 4)); 12182 assert_true (ai_move (ai, 1, 6)); 12183 assert_true (ai_move (ai, 0, 7)); 12184 assert_true (ai_move (ai, 7, 6)); 12185 assert_true (ai_move (ai, 7, 7)); 12186 assert_true (game.pass ()); 12187 assert_true (ai_move (ai, 6, 6)); 12188 assert_true (game.pass ()); 12189 assert_true (ai_move (ai, 6, 1)); 12190 assert_true (ai_move (ai, 7, 1)); 12191 assert_true (ai_move (ai, 0, 1)); 12192 assert_true (game.pass ()); 12193 assert_true (ai_move (ai, 6, 0)); 12194 assert_true (ai_move (ai, 7, 0)); 12195 } 12196 12197 private static inline void test_complete_reversi_game_145 () 12198 { 12199 /* 0 1 2 3 4 5 6 7 */ 12200 string [] board = {/* 0 */ " . . . . . . . .", 12201 /* 1 */ " . . . . . . . .", 12202 /* 2 */ " . . . D . . . .", 12203 /* 3 */ " . . . D D . . .", 12204 /* 4 */ " . . L L L L . .", 12205 /* 5 */ " . . . . . D . .", 12206 /* 6 */ " . . . . . . . .", 12207 /* 7 */ " . . . . . . . ."}; 12208 12209 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 12210 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 12211 12212 assert_true (ai_move (ai, 6, 5)); 12213 assert_true (ai_move (ai, 5, 2)); 12214 assert_true (ai_move (ai, 1, 5)); 12215 assert_true (ai_move (ai, 1, 4)); 12216 assert_true (ai_move (ai, 1, 3)); 12217 assert_true (ai_move (ai, 2, 1)); 12218 assert_true (ai_move (ai, 3, 1)); 12219 assert_true (ai_move (ai, 6, 4)); 12220 assert_true (ai_move (ai, 7, 3)); 12221 assert_true (ai_move (ai, 0, 2)); 12222 assert_true (ai_move (ai, 1, 2)); 12223 assert_true (ai_move (ai, 0, 3)); 12224 assert_true (ai_move (ai, 5, 3)); 12225 assert_true (ai_move (ai, 0, 4)); 12226 assert_true (ai_move (ai, 5, 1)); 12227 assert_true (ai_move (ai, 2, 6)); 12228 assert_true (ai_move (ai, 4, 5)); 12229 assert_true (ai_move (ai, 2, 2)); 12230 assert_true (ai_move (ai, 3, 5)); 12231 assert_true (ai_move (ai, 4, 1)); 12232 assert_true (ai_move (ai, 5, 0)); 12233 assert_true (ai_move (ai, 4, 6)); 12234 assert_true (ai_move (ai, 3, 6)); 12235 assert_true (ai_move (ai, 6, 2)); 12236 assert_true (ai_move (ai, 4, 2)); 12237 assert_true (ai_move (ai, 7, 5)); 12238 assert_true (ai_move (ai, 6, 3)); 12239 assert_true (ai_move (ai, 7, 2)); 12240 assert_true (ai_move (ai, 7, 4)); 12241 assert_true (ai_move (ai, 3, 7)); 12242 assert_true (ai_move (ai, 5, 6)); 12243 assert_true (ai_move (ai, 4, 0)); 12244 assert_true (ai_move (ai, 2, 5)); 12245 assert_true (ai_move (ai, 5, 7)); 12246 assert_true (ai_move (ai, 2, 3)); 12247 assert_true (ai_move (ai, 6, 0)); 12248 assert_true (ai_move (ai, 6, 1)); 12249 assert_true (ai_move (ai, 7, 1)); 12250 assert_true (ai_move (ai, 7, 0)); 12251 assert_true (ai_move (ai, 6, 6)); 12252 assert_true (ai_move (ai, 3, 0)); 12253 assert_true (ai_move (ai, 2, 0)); 12254 assert_true (ai_move (ai, 1, 0)); 12255 assert_true (ai_move (ai, 1, 1)); 12256 assert_true (ai_move (ai, 0, 5)); 12257 assert_true (ai_move (ai, 0, 6)); 12258 assert_true (ai_move (ai, 1, 6)); 12259 assert_true (ai_move (ai, 2, 7)); 12260 assert_true (ai_move (ai, 7, 6)); 12261 assert_true (game.pass ()); 12262 assert_true (ai_move (ai, 4, 7)); 12263 assert_true (ai_move (ai, 6, 7)); 12264 assert_true (ai_move (ai, 0, 0)); 12265 assert_true (ai_move (ai, 0, 1)); 12266 assert_true (ai_move (ai, 0, 7)); 12267 assert_true (ai_move (ai, 1, 7)); 12268 assert_true (ai_move (ai, 7, 7)); 12269 } 12270 12271 private static inline void test_complete_reversi_game_146 () 12272 { 12273 /* 0 1 2 3 4 5 6 7 */ 12274 string [] board = {/* 0 */ " . . . . . . . .", 12275 /* 1 */ " . . . . . . . .", 12276 /* 2 */ " . . . D . L . .", 12277 /* 3 */ " . . . D L . . .", 12278 /* 4 */ " . . L L D . . .", 12279 /* 5 */ " . . . . . D . .", 12280 /* 6 */ " . . . . . . . .", 12281 /* 7 */ " . . . . . . . ."}; 12282 12283 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 12284 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 12285 12286 assert_true (ai_move (ai, 1, 5)); 12287 assert_true (ai_move (ai, 1, 4)); 12288 assert_true (ai_move (ai, 5, 4)); 12289 assert_true (ai_move (ai, 4, 2)); 12290 assert_true (ai_move (ai, 6, 2)); 12291 assert_true (ai_move (ai, 3, 1)); 12292 assert_true (ai_move (ai, 2, 1)); 12293 assert_true (ai_move (ai, 5, 1)); 12294 assert_true (ai_move (ai, 4, 1)); 12295 assert_true (ai_move (ai, 7, 3)); 12296 assert_true (ai_move (ai, 7, 2)); 12297 assert_true (ai_move (ai, 7, 1)); 12298 assert_true (ai_move (ai, 2, 2)); 12299 assert_true (ai_move (ai, 5, 3)); 12300 assert_true (ai_move (ai, 6, 4)); 12301 assert_true (ai_move (ai, 1, 2)); 12302 assert_true (ai_move (ai, 5, 0)); 12303 assert_true (ai_move (ai, 6, 5)); 12304 assert_true (ai_move (ai, 2, 3)); 12305 assert_true (ai_move (ai, 5, 6)); 12306 assert_true (ai_move (ai, 4, 6)); 12307 assert_true (ai_move (ai, 7, 4)); 12308 assert_true (ai_move (ai, 2, 5)); 12309 assert_true (ai_move (ai, 3, 0)); 12310 assert_true (ai_move (ai, 2, 0)); 12311 assert_true (ai_move (ai, 4, 0)); 12312 assert_true (ai_move (ai, 5, 7)); 12313 assert_true (ai_move (ai, 6, 3)); 12314 assert_true (ai_move (ai, 0, 2)); 12315 assert_true (ai_move (ai, 1, 3)); 12316 assert_true (ai_move (ai, 1, 1)); 12317 assert_true (ai_move (ai, 0, 6)); 12318 assert_true (ai_move (ai, 7, 5)); 12319 assert_true (ai_move (ai, 7, 6)); 12320 assert_true (ai_move (ai, 0, 3)); 12321 assert_true (ai_move (ai, 4, 5)); 12322 assert_true (ai_move (ai, 3, 5)); 12323 assert_true (ai_move (ai, 3, 6)); 12324 assert_true (ai_move (ai, 0, 5)); 12325 assert_true (ai_move (ai, 1, 6)); 12326 assert_true (ai_move (ai, 2, 6)); 12327 assert_true (ai_move (ai, 2, 7)); 12328 assert_true (ai_move (ai, 4, 7)); 12329 assert_true (ai_move (ai, 3, 7)); 12330 assert_true (ai_move (ai, 6, 6)); 12331 assert_true (ai_move (ai, 0, 4)); 12332 assert_true (ai_move (ai, 0, 7)); 12333 assert_true (ai_move (ai, 1, 7)); 12334 assert_true (ai_move (ai, 6, 1)); 12335 assert_true (ai_move (ai, 7, 0)); 12336 assert_true (ai_move (ai, 6, 0)); 12337 assert_true (ai_move (ai, 7, 7)); 12338 assert_true (ai_move (ai, 6, 7)); 12339 assert_true (ai_move (ai, 0, 0)); 12340 assert_true (ai_move (ai, 0, 1)); 12341 assert_true (ai_move (ai, 1, 0)); 12342 } 12343 12344 private static inline void test_complete_reversi_game_147 () 12345 { 12346 /* 0 1 2 3 4 5 6 7 */ 12347 string [] board = {/* 0 */ " . . . . . . . .", 12348 /* 1 */ " . . . . . . . .", 12349 /* 2 */ " . . . D L . . .", 12350 /* 3 */ " . . . L D . . .", 12351 /* 4 */ " . . L L D . . .", 12352 /* 5 */ " . . . . . D . .", 12353 /* 6 */ " . . . . . . . .", 12354 /* 7 */ " . . . . . . . ."}; 12355 12356 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 12357 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 12358 12359 assert_true (ai_move (ai, 5, 2)); 12360 assert_true (ai_move (ai, 5, 1)); 12361 assert_true (ai_move (ai, 4, 1)); 12362 assert_true (ai_move (ai, 5, 3)); 12363 assert_true (ai_move (ai, 6, 3)); 12364 assert_true (ai_move (ai, 2, 1)); 12365 assert_true (ai_move (ai, 6, 2)); 12366 assert_true (ai_move (ai, 5, 0)); 12367 assert_true (ai_move (ai, 2, 2)); 12368 assert_true (ai_move (ai, 7, 4)); 12369 assert_true (ai_move (ai, 1, 5)); 12370 assert_true (ai_move (ai, 1, 2)); 12371 assert_true (ai_move (ai, 3, 1)); 12372 assert_true (ai_move (ai, 1, 4)); 12373 assert_true (ai_move (ai, 5, 4)); 12374 assert_true (ai_move (ai, 5, 6)); 12375 assert_true (ai_move (ai, 6, 5)); 12376 assert_true (ai_move (ai, 7, 5)); 12377 assert_true (ai_move (ai, 0, 2)); 12378 assert_true (ai_move (ai, 2, 0)); 12379 assert_true (ai_move (ai, 5, 7)); 12380 assert_true (ai_move (ai, 1, 3)); 12381 assert_true (ai_move (ai, 7, 2)); 12382 assert_true (ai_move (ai, 0, 3)); 12383 assert_true (ai_move (ai, 2, 5)); 12384 assert_true (ai_move (ai, 2, 6)); 12385 assert_true (ai_move (ai, 3, 5)); 12386 assert_true (ai_move (ai, 4, 7)); 12387 assert_true (ai_move (ai, 0, 4)); 12388 assert_true (ai_move (ai, 2, 3)); 12389 assert_true (ai_move (ai, 3, 6)); 12390 assert_true (ai_move (ai, 7, 3)); 12391 assert_true (ai_move (ai, 7, 6)); 12392 assert_true (ai_move (ai, 0, 5)); 12393 assert_true (ai_move (ai, 0, 6)); 12394 assert_true (ai_move (ai, 6, 7)); 12395 assert_true (ai_move (ai, 0, 1)); 12396 assert_true (ai_move (ai, 4, 5)); 12397 assert_true (ai_move (ai, 6, 4)); 12398 assert_true (ai_move (ai, 4, 6)); 12399 assert_true (ai_move (ai, 1, 1)); 12400 assert_true (ai_move (ai, 1, 6)); 12401 assert_true (ai_move (ai, 7, 1)); 12402 assert_true (ai_move (ai, 6, 6)); 12403 assert_true (ai_move (ai, 7, 7)); 12404 assert_true (ai_move (ai, 6, 1)); 12405 assert_true (ai_move (ai, 3, 0)); 12406 assert_true (ai_move (ai, 4, 0)); 12407 assert_true (ai_move (ai, 3, 7)); 12408 assert_true (ai_move (ai, 1, 7)); 12409 assert_true (ai_move (ai, 0, 7)); 12410 assert_true (ai_move (ai, 2, 7)); 12411 assert_true (ai_move (ai, 7, 0)); 12412 assert_true (ai_move (ai, 0, 0)); 12413 assert_true (ai_move (ai, 6, 0)); 12414 assert_true (ai_move (ai, 1, 0)); 12415 } 12416 12417 private static inline void test_complete_reversi_game_148 () 12418 { 12419 /* 0 1 2 3 4 5 6 7 */ 12420 string [] board = {/* 0 */ " . . . . . . . .", 12421 /* 1 */ " . . . L . . . .", 12422 /* 2 */ " . . . L . . . .", 12423 /* 3 */ " . . . L D . . .", 12424 /* 4 */ " . . L L D . . .", 12425 /* 5 */ " . . . . . D . .", 12426 /* 6 */ " . . . . . . . .", 12427 /* 7 */ " . . . . . . . ."}; 12428 12429 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 12430 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 12431 12432 assert_true (ai_move (ai, 2, 1)); 12433 assert_true (ai_move (ai, 5, 2)); 12434 assert_true (ai_move (ai, 3, 0)); 12435 assert_true (ai_move (ai, 4, 5)); 12436 assert_true (ai_move (ai, 5, 4)); 12437 assert_true (ai_move (ai, 6, 5)); 12438 assert_true (ai_move (ai, 5, 6)); 12439 assert_true (ai_move (ai, 6, 3)); 12440 assert_true (ai_move (ai, 5, 3)); 12441 assert_true (ai_move (ai, 6, 4)); 12442 assert_true (ai_move (ai, 5, 1)); 12443 assert_true (ai_move (ai, 4, 6)); 12444 assert_true (ai_move (ai, 7, 5)); 12445 assert_true (ai_move (ai, 4, 1)); 12446 assert_true (ai_move (ai, 5, 0)); 12447 assert_true (ai_move (ai, 7, 3)); 12448 assert_true (ai_move (ai, 7, 6)); 12449 assert_true (ai_move (ai, 5, 7)); 12450 assert_true (ai_move (ai, 7, 2)); 12451 assert_true (ai_move (ai, 7, 4)); 12452 assert_true (ai_move (ai, 3, 6)); 12453 assert_true (ai_move (ai, 3, 5)); 12454 assert_true (ai_move (ai, 2, 5)); 12455 assert_true (ai_move (ai, 2, 7)); 12456 assert_true (ai_move (ai, 6, 1)); 12457 assert_true (ai_move (ai, 2, 3)); 12458 assert_true (ai_move (ai, 1, 4)); 12459 assert_true (ai_move (ai, 1, 2)); 12460 assert_true (ai_move (ai, 6, 2)); 12461 assert_true (ai_move (ai, 7, 7)); 12462 assert_true (ai_move (ai, 0, 3)); 12463 assert_true (ai_move (ai, 0, 1)); 12464 assert_true (ai_move (ai, 2, 2)); 12465 assert_true (ai_move (ai, 1, 5)); 12466 assert_true (ai_move (ai, 6, 7)); 12467 assert_true (ai_move (ai, 2, 0)); 12468 assert_true (ai_move (ai, 1, 3)); 12469 assert_true (ai_move (ai, 4, 0)); 12470 assert_true (ai_move (ai, 1, 0)); 12471 assert_true (ai_move (ai, 4, 2)); 12472 assert_true (ai_move (ai, 0, 2)); 12473 assert_true (ai_move (ai, 0, 4)); 12474 assert_true (ai_move (ai, 6, 0)); 12475 assert_true (ai_move (ai, 7, 1)); 12476 assert_true (ai_move (ai, 4, 7)); 12477 assert_true (ai_move (ai, 7, 0)); 12478 assert_true (ai_move (ai, 2, 6)); 12479 assert_true (ai_move (ai, 0, 0)); 12480 assert_true (ai_move (ai, 0, 5)); 12481 assert_true (ai_move (ai, 1, 6)); 12482 assert_true (ai_move (ai, 0, 6)); 12483 assert_true (ai_move (ai, 1, 1)); 12484 assert_true (game.pass ()); 12485 assert_true (ai_move (ai, 3, 7)); 12486 assert_true (ai_move (ai, 6, 6)); 12487 assert_true (ai_move (ai, 0, 7)); 12488 assert_true (ai_move (ai, 1, 7)); 12489 } 12490 12491 private static inline void test_complete_reversi_game_149 () 12492 { 12493 /* 0 1 2 3 4 5 6 7 */ 12494 string [] board = {/* 0 */ " . . . . . . . .", 12495 /* 1 */ " . . . . . . . .", 12496 /* 2 */ " . . . D . . . .", 12497 /* 3 */ " . . . D D . . .", 12498 /* 4 */ " . . L L D . . .", 12499 /* 5 */ " . . . . L . . .", 12500 /* 6 */ " . . . . . L . .", 12501 /* 7 */ " . . . . . . . ."}; 12502 12503 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 12504 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 12505 12506 assert_true (ai_move (ai, 4, 6)); 12507 assert_true (ai_move (ai, 5, 2)); 12508 assert_true (ai_move (ai, 1, 5)); 12509 assert_true (ai_move (ai, 1, 4)); 12510 assert_true (ai_move (ai, 5, 4)); 12511 assert_true (ai_move (ai, 3, 6)); 12512 assert_true (ai_move (ai, 2, 7)); 12513 assert_true (ai_move (ai, 2, 6)); 12514 assert_true (ai_move (ai, 3, 7)); 12515 assert_true (ai_move (ai, 6, 3)); 12516 assert_true (ai_move (ai, 6, 4)); 12517 assert_true (ai_move (ai, 6, 5)); 12518 assert_true (ai_move (ai, 7, 4)); 12519 assert_true (ai_move (ai, 2, 1)); 12520 assert_true (ai_move (ai, 5, 3)); 12521 assert_true (ai_move (ai, 2, 3)); 12522 assert_true (ai_move (ai, 4, 1)); 12523 assert_true (ai_move (ai, 5, 1)); 12524 assert_true (ai_move (ai, 6, 2)); 12525 assert_true (ai_move (ai, 7, 3)); 12526 assert_true (ai_move (ai, 7, 2)); 12527 assert_true (ai_move (ai, 7, 5)); 12528 assert_true (ai_move (ai, 7, 6)); 12529 assert_true (ai_move (ai, 5, 5)); 12530 assert_true (ai_move (ai, 4, 7)); 12531 assert_true (ai_move (ai, 5, 0)); 12532 assert_true (ai_move (ai, 1, 2)); 12533 assert_true (ai_move (ai, 2, 2)); 12534 assert_true (ai_move (ai, 0, 4)); 12535 assert_true (ai_move (ai, 0, 2)); 12536 assert_true (ai_move (ai, 2, 0)); 12537 assert_true (ai_move (ai, 1, 3)); 12538 assert_true (ai_move (ai, 4, 0)); 12539 assert_true (ai_move (ai, 3, 1)); 12540 assert_true (ai_move (ai, 6, 0)); 12541 assert_true (ai_move (ai, 3, 0)); 12542 assert_true (ai_move (ai, 3, 5)); 12543 assert_true (ai_move (ai, 4, 2)); 12544 assert_true (ai_move (ai, 6, 1)); 12545 assert_true (ai_move (ai, 2, 5)); 12546 assert_true (ai_move (ai, 0, 3)); 12547 assert_true (ai_move (ai, 0, 5)); 12548 assert_true (ai_move (ai, 1, 6)); 12549 assert_true (ai_move (ai, 7, 0)); 12550 assert_true (ai_move (ai, 6, 6)); 12551 assert_true (ai_move (ai, 0, 6)); 12552 assert_true (ai_move (ai, 1, 0)); 12553 assert_true (ai_move (ai, 5, 7)); 12554 assert_true (ai_move (ai, 6, 7)); 12555 assert_true (ai_move (ai, 7, 1)); 12556 assert_true (ai_move (ai, 0, 1)); 12557 assert_true (ai_move (ai, 0, 7)); 12558 assert_true (ai_move (ai, 1, 1)); 12559 assert_true (ai_move (ai, 1, 7)); 12560 assert_true (game.pass ()); 12561 assert_true (ai_move (ai, 7, 7)); 12562 assert_true (game.pass ()); 12563 assert_true (ai_move (ai, 0, 0)); 12564 } 12565 12566 private static inline void test_complete_reversi_game_150 () 12567 { 12568 /* 0 1 2 3 4 5 6 7 */ 12569 string [] board = {/* 0 */ " . . . . . . . .", 12570 /* 1 */ " . . . . . . . .", 12571 /* 2 */ " . . . D . . . .", 12572 /* 3 */ " . . . D D . . .", 12573 /* 4 */ " . . L L L L . .", 12574 /* 5 */ " . . . . D . . .", 12575 /* 6 */ " . . . . . . . .", 12576 /* 7 */ " . . . . . . . ."}; 12577 12578 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 12579 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 12580 12581 assert_true (ai_move (ai, 6, 5)); 12582 assert_true (ai_move (ai, 6, 4)); 12583 assert_true (ai_move (ai, 1, 5)); 12584 assert_true (ai_move (ai, 4, 6)); 12585 assert_true (ai_move (ai, 2, 5)); 12586 assert_true (ai_move (ai, 2, 2)); 12587 assert_true (ai_move (ai, 1, 2)); 12588 assert_true (ai_move (ai, 3, 5)); 12589 assert_true (ai_move (ai, 4, 2)); 12590 assert_true (ai_move (ai, 0, 5)); 12591 assert_true (ai_move (ai, 2, 6)); 12592 assert_true (ai_move (ai, 3, 7)); 12593 assert_true (ai_move (ai, 2, 7)); 12594 assert_true (ai_move (ai, 1, 4)); 12595 assert_true (ai_move (ai, 0, 3)); 12596 assert_true (ai_move (ai, 2, 3)); 12597 assert_true (ai_move (ai, 1, 3)); 12598 assert_true (ai_move (ai, 3, 6)); 12599 assert_true (ai_move (ai, 5, 7)); 12600 assert_true (ai_move (ai, 4, 7)); 12601 assert_true (ai_move (ai, 5, 3)); 12602 assert_true (ai_move (ai, 0, 2)); 12603 assert_true (ai_move (ai, 0, 1)); 12604 assert_true (ai_move (ai, 5, 2)); 12605 assert_true (ai_move (ai, 6, 2)); 12606 assert_true (ai_move (ai, 4, 1)); 12607 assert_true (ai_move (ai, 5, 5)); 12608 assert_true (ai_move (ai, 7, 5)); 12609 assert_true (ai_move (ai, 2, 1)); 12610 assert_true (ai_move (ai, 5, 1)); 12611 assert_true (ai_move (ai, 5, 0)); 12612 assert_true (ai_move (ai, 3, 1)); 12613 assert_true (ai_move (ai, 5, 6)); 12614 assert_true (ai_move (ai, 6, 3)); 12615 assert_true (ai_move (ai, 4, 0)); 12616 assert_true (ai_move (ai, 7, 2)); 12617 assert_true (ai_move (ai, 3, 0)); 12618 assert_true (ai_move (ai, 2, 0)); 12619 assert_true (ai_move (ai, 1, 0)); 12620 assert_true (ai_move (ai, 6, 6)); 12621 assert_true (ai_move (ai, 7, 3)); 12622 assert_true (ai_move (ai, 7, 4)); 12623 assert_true (ai_move (ai, 6, 1)); 12624 assert_true (ai_move (ai, 7, 0)); 12625 assert_true (ai_move (ai, 7, 1)); 12626 assert_true (ai_move (ai, 6, 0)); 12627 assert_true (ai_move (ai, 0, 4)); 12628 assert_true (ai_move (ai, 0, 0)); 12629 assert_true (ai_move (ai, 7, 7)); 12630 assert_true (ai_move (ai, 1, 1)); 12631 assert_true (ai_move (ai, 7, 6)); 12632 assert_true (ai_move (ai, 0, 6)); 12633 assert_true (ai_move (ai, 1, 6)); 12634 assert_true (ai_move (ai, 6, 7)); 12635 assert_true (game.pass ()); 12636 assert_true (ai_move (ai, 1, 7)); 12637 assert_true (ai_move (ai, 0, 7)); 12638 } 12639 12640 private static inline void test_complete_reversi_game_151 () 12641 { 12642 /* 0 1 2 3 4 5 6 7 */ 12643 string [] board = {/* 0 */ " . . . . . . . .", 12644 /* 1 */ " . . . . . . . .", 12645 /* 2 */ " . . . D . L . .", 12646 /* 3 */ " . . . D L . . .", 12647 /* 4 */ " . . L L D . . .", 12648 /* 5 */ " . . . . D . . .", 12649 /* 6 */ " . . . . . . . .", 12650 /* 7 */ " . . . . . . . ."}; 12651 12652 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 12653 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 12654 12655 assert_true (ai_move (ai, 1, 5)); 12656 assert_true (ai_move (ai, 1, 4)); 12657 assert_true (ai_move (ai, 5, 4)); 12658 assert_true (ai_move (ai, 5, 6)); 12659 assert_true (ai_move (ai, 3, 6)); 12660 assert_true (ai_move (ai, 4, 2)); 12661 assert_true (ai_move (ai, 6, 2)); 12662 assert_true (ai_move (ai, 3, 1)); 12663 assert_true (ai_move (ai, 2, 1)); 12664 assert_true (ai_move (ai, 5, 1)); 12665 assert_true (ai_move (ai, 4, 1)); 12666 assert_true (ai_move (ai, 7, 3)); 12667 assert_true (ai_move (ai, 7, 2)); 12668 assert_true (ai_move (ai, 7, 1)); 12669 assert_true (ai_move (ai, 2, 2)); 12670 assert_true (ai_move (ai, 5, 3)); 12671 assert_true (ai_move (ai, 6, 4)); 12672 assert_true (ai_move (ai, 1, 2)); 12673 assert_true (ai_move (ai, 6, 3)); 12674 assert_true (ai_move (ai, 3, 5)); 12675 assert_true (ai_move (ai, 0, 2)); 12676 assert_true (ai_move (ai, 4, 6)); 12677 assert_true (ai_move (ai, 5, 0)); 12678 assert_true (ai_move (ai, 2, 0)); 12679 assert_true (ai_move (ai, 4, 0)); 12680 assert_true (ai_move (ai, 6, 1)); 12681 assert_true (ai_move (ai, 5, 5)); 12682 assert_true (ai_move (ai, 3, 7)); 12683 assert_true (ai_move (ai, 5, 7)); 12684 assert_true (ai_move (ai, 6, 5)); 12685 assert_true (ai_move (ai, 4, 7)); 12686 assert_true (ai_move (ai, 6, 7)); 12687 assert_true (ai_move (ai, 7, 4)); 12688 assert_true (ai_move (ai, 7, 5)); 12689 assert_true (ai_move (ai, 2, 7)); 12690 assert_true (ai_move (ai, 1, 7)); 12691 assert_true (ai_move (ai, 2, 6)); 12692 assert_true (ai_move (ai, 2, 5)); 12693 assert_true (ai_move (ai, 7, 0)); 12694 assert_true (ai_move (ai, 0, 5)); 12695 assert_true (ai_move (ai, 7, 6)); 12696 assert_true (ai_move (ai, 6, 0)); 12697 assert_true (ai_move (ai, 1, 3)); 12698 assert_true (ai_move (ai, 2, 3)); 12699 assert_true (ai_move (ai, 3, 0)); 12700 assert_true (ai_move (ai, 0, 4)); 12701 assert_true (ai_move (ai, 0, 3)); 12702 assert_true (ai_move (ai, 0, 1)); 12703 assert_true (ai_move (ai, 1, 1)); 12704 assert_true (ai_move (ai, 0, 0)); 12705 assert_true (ai_move (ai, 1, 0)); 12706 assert_true (ai_move (ai, 6, 6)); 12707 assert_true (ai_move (ai, 7, 7)); 12708 assert_true (game.pass ()); 12709 assert_true (ai_move (ai, 0, 7)); 12710 assert_true (game.pass ()); 12711 assert_true (ai_move (ai, 0, 6)); 12712 assert_true (ai_move (ai, 1, 6)); 12713 } 12714 12715 private static inline void test_complete_reversi_game_152 () 12716 { 12717 /* 0 1 2 3 4 5 6 7 */ 12718 string [] board = {/* 0 */ " . . . . . . . .", 12719 /* 1 */ " . . . . . . . .", 12720 /* 2 */ " . . . D L . . .", 12721 /* 3 */ " . . . L D . . .", 12722 /* 4 */ " . . L L D . . .", 12723 /* 5 */ " . . . . D . . .", 12724 /* 6 */ " . . . . . . . .", 12725 /* 7 */ " . . . . . . . ."}; 12726 12727 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 12728 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 12729 12730 assert_true (ai_move (ai, 5, 2)); 12731 assert_true (ai_move (ai, 5, 6)); 12732 assert_true (ai_move (ai, 2, 2)); 12733 assert_true (ai_move (ai, 5, 4)); 12734 assert_true (ai_move (ai, 1, 5)); 12735 assert_true (ai_move (ai, 1, 4)); 12736 assert_true (ai_move (ai, 6, 5)); 12737 assert_true (ai_move (ai, 6, 4)); 12738 assert_true (ai_move (ai, 4, 7)); 12739 assert_true (ai_move (ai, 5, 1)); 12740 assert_true (ai_move (ai, 4, 1)); 12741 assert_true (ai_move (ai, 5, 3)); 12742 assert_true (ai_move (ai, 6, 2)); 12743 assert_true (ai_move (ai, 2, 1)); 12744 assert_true (ai_move (ai, 2, 0)); 12745 assert_true (ai_move (ai, 7, 2)); 12746 assert_true (ai_move (ai, 1, 3)); 12747 assert_true (ai_move (ai, 1, 2)); 12748 assert_true (ai_move (ai, 3, 1)); 12749 assert_true (ai_move (ai, 4, 0)); 12750 assert_true (ai_move (ai, 7, 5)); 12751 assert_true (ai_move (ai, 6, 3)); 12752 assert_true (ai_move (ai, 0, 3)); 12753 assert_true (ai_move (ai, 6, 7)); 12754 assert_true (ai_move (ai, 6, 0)); 12755 assert_true (ai_move (ai, 6, 1)); 12756 assert_true (ai_move (ai, 4, 6)); 12757 assert_true (ai_move (ai, 3, 0)); 12758 assert_true (ai_move (ai, 5, 0)); 12759 assert_true (ai_move (ai, 3, 5)); 12760 assert_true (ai_move (ai, 5, 5)); 12761 assert_true (ai_move (ai, 3, 6)); 12762 assert_true (ai_move (ai, 2, 3)); 12763 assert_true (ai_move (ai, 0, 2)); 12764 assert_true (ai_move (ai, 0, 4)); 12765 assert_true (ai_move (ai, 0, 5)); 12766 assert_true (ai_move (ai, 1, 1)); 12767 assert_true (ai_move (ai, 7, 3)); 12768 assert_true (ai_move (ai, 6, 6)); 12769 assert_true (ai_move (ai, 7, 4)); 12770 assert_true (ai_move (ai, 7, 0)); 12771 assert_true (ai_move (ai, 7, 6)); 12772 assert_true (ai_move (ai, 7, 7)); 12773 assert_true (ai_move (ai, 2, 5)); 12774 assert_true (ai_move (ai, 7, 1)); 12775 assert_true (ai_move (ai, 0, 1)); 12776 assert_true (ai_move (ai, 2, 7)); 12777 assert_true (ai_move (ai, 2, 6)); 12778 assert_true (ai_move (ai, 3, 7)); 12779 assert_true (ai_move (ai, 5, 7)); 12780 assert_true (ai_move (ai, 1, 6)); 12781 assert_true (ai_move (ai, 0, 6)); 12782 assert_true (ai_move (ai, 0, 7)); 12783 assert_true (ai_move (ai, 1, 7)); 12784 assert_true (ai_move (ai, 0, 0)); 12785 assert_true (ai_move (ai, 1, 0)); 12786 } 12787 12788 private static inline void test_complete_reversi_game_153 () 12789 { 12790 /* 0 1 2 3 4 5 6 7 */ 12791 string [] board = {/* 0 */ " . . . . . . . .", 12792 /* 1 */ " . . . L . . . .", 12793 /* 2 */ " . . . L . . . .", 12794 /* 3 */ " . . . L D . . .", 12795 /* 4 */ " . . L L D . . .", 12796 /* 5 */ " . . . . D . . .", 12797 /* 6 */ " . . . . . . . .", 12798 /* 7 */ " . . . . . . . ."}; 12799 12800 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 12801 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 12802 12803 assert_true (ai_move (ai, 2, 1)); 12804 assert_true (ai_move (ai, 5, 6)); 12805 assert_true (ai_move (ai, 4, 6)); 12806 assert_true (ai_move (ai, 5, 2)); 12807 assert_true (ai_move (ai, 3, 0)); 12808 assert_true (ai_move (ai, 5, 4)); 12809 assert_true (ai_move (ai, 6, 3)); 12810 assert_true (ai_move (ai, 6, 5)); 12811 assert_true (ai_move (ai, 4, 1)); 12812 assert_true (ai_move (ai, 3, 6)); 12813 assert_true (ai_move (ai, 2, 7)); 12814 assert_true (ai_move (ai, 6, 4)); 12815 assert_true (ai_move (ai, 4, 7)); 12816 assert_true (ai_move (ai, 7, 2)); 12817 assert_true (ai_move (ai, 6, 6)); 12818 assert_true (ai_move (ai, 1, 0)); 12819 assert_true (ai_move (ai, 1, 2)); 12820 assert_true (ai_move (ai, 5, 0)); 12821 assert_true (ai_move (ai, 7, 4)); 12822 assert_true (ai_move (ai, 6, 2)); 12823 assert_true (ai_move (ai, 5, 1)); 12824 assert_true (ai_move (ai, 5, 3)); 12825 assert_true (ai_move (ai, 2, 3)); 12826 assert_true (ai_move (ai, 1, 3)); 12827 assert_true (ai_move (ai, 1, 4)); 12828 assert_true (ai_move (ai, 7, 6)); 12829 assert_true (ai_move (ai, 4, 2)); 12830 assert_true (ai_move (ai, 2, 2)); 12831 assert_true (ai_move (ai, 1, 1)); 12832 assert_true (ai_move (ai, 0, 2)); 12833 assert_true (ai_move (ai, 0, 3)); 12834 assert_true (ai_move (ai, 0, 5)); 12835 assert_true (ai_move (ai, 0, 1)); 12836 assert_true (ai_move (ai, 4, 0)); 12837 assert_true (ai_move (ai, 6, 0)); 12838 assert_true (ai_move (ai, 0, 4)); 12839 assert_true (ai_move (ai, 5, 5)); 12840 assert_true (ai_move (ai, 3, 7)); 12841 assert_true (ai_move (ai, 0, 6)); 12842 assert_true (ai_move (ai, 5, 7)); 12843 assert_true (ai_move (ai, 6, 7)); 12844 assert_true (ai_move (ai, 2, 5)); 12845 assert_true (ai_move (ai, 2, 6)); 12846 assert_true (ai_move (ai, 0, 0)); 12847 assert_true (ai_move (ai, 2, 0)); 12848 assert_true (ai_move (ai, 7, 0)); 12849 assert_true (ai_move (ai, 7, 5)); 12850 assert_true (ai_move (ai, 7, 3)); 12851 assert_true (ai_move (ai, 7, 1)); 12852 assert_true (ai_move (ai, 7, 7)); 12853 assert_true (ai_move (ai, 3, 5)); 12854 assert_true (ai_move (ai, 0, 7)); 12855 assert_true (ai_move (ai, 1, 5)); 12856 assert_true (ai_move (ai, 1, 7)); 12857 assert_true (game.pass ()); 12858 assert_true (ai_move (ai, 1, 6)); 12859 assert_true (game.pass ()); 12860 assert_true (ai_move (ai, 6, 1)); 12861 } 12862 12863 private static inline void test_complete_reversi_game_154 () 12864 { 12865 /* 0 1 2 3 4 5 6 7 */ 12866 string [] board = {/* 0 */ " . . . . . . . .", 12867 /* 1 */ " . . . . . . . .", 12868 /* 2 */ " . . . D . . . .", 12869 /* 3 */ " . . . D D . . .", 12870 /* 4 */ " . . L D L . . .", 12871 /* 5 */ " . . . L . . . .", 12872 /* 6 */ " . . . . L . . .", 12873 /* 7 */ " . . . . . . . ."}; 12874 12875 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 12876 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 12877 12878 assert_true (ai_move (ai, 3, 6)); 12879 assert_true (ai_move (ai, 2, 6)); 12880 assert_true (ai_move (ai, 1, 4)); 12881 assert_true (ai_move (ai, 1, 3)); 12882 assert_true (ai_move (ai, 1, 5)); 12883 assert_true (ai_move (ai, 2, 2)); 12884 assert_true (ai_move (ai, 1, 2)); 12885 assert_true (ai_move (ai, 5, 3)); 12886 assert_true (ai_move (ai, 5, 7)); 12887 assert_true (ai_move (ai, 3, 1)); 12888 assert_true (ai_move (ai, 4, 0)); 12889 assert_true (ai_move (ai, 0, 2)); 12890 assert_true (ai_move (ai, 5, 4)); 12891 assert_true (ai_move (ai, 6, 5)); 12892 assert_true (ai_move (ai, 6, 4)); 12893 assert_true (ai_move (ai, 7, 5)); 12894 assert_true (ai_move (ai, 6, 2)); 12895 assert_true (ai_move (ai, 4, 2)); 12896 assert_true (ai_move (ai, 5, 2)); 12897 assert_true (ai_move (ai, 6, 3)); 12898 assert_true (ai_move (ai, 7, 2)); 12899 assert_true (ai_move (ai, 5, 1)); 12900 assert_true (ai_move (ai, 5, 0)); 12901 assert_true (ai_move (ai, 7, 3)); 12902 assert_true (ai_move (ai, 4, 1)); 12903 assert_true (ai_move (ai, 2, 0)); 12904 assert_true (ai_move (ai, 2, 1)); 12905 assert_true (ai_move (ai, 3, 0)); 12906 assert_true (ai_move (ai, 6, 1)); 12907 assert_true (ai_move (ai, 4, 5)); 12908 assert_true (ai_move (ai, 1, 0)); 12909 assert_true (ai_move (ai, 4, 7)); 12910 assert_true (ai_move (ai, 5, 5)); 12911 assert_true (ai_move (ai, 2, 5)); 12912 assert_true (ai_move (ai, 5, 6)); 12913 assert_true (ai_move (ai, 2, 3)); 12914 assert_true (ai_move (ai, 2, 7)); 12915 assert_true (ai_move (ai, 3, 7)); 12916 assert_true (ai_move (ai, 0, 3)); 12917 assert_true (ai_move (ai, 0, 5)); 12918 assert_true (ai_move (ai, 0, 4)); 12919 assert_true (ai_move (ai, 7, 0)); 12920 assert_true (ai_move (ai, 7, 1)); 12921 assert_true (ai_move (ai, 6, 0)); 12922 assert_true (ai_move (ai, 7, 4)); 12923 assert_true (ai_move (ai, 0, 0)); 12924 assert_true (ai_move (ai, 0, 1)); 12925 assert_true (ai_move (ai, 1, 1)); 12926 assert_true (ai_move (ai, 1, 6)); 12927 assert_true (ai_move (ai, 0, 7)); 12928 assert_true (ai_move (ai, 0, 6)); 12929 assert_true (ai_move (ai, 6, 6)); 12930 assert_true (ai_move (ai, 6, 7)); 12931 assert_true (ai_move (ai, 1, 7)); 12932 assert_true (ai_move (ai, 7, 6)); 12933 assert_true (ai_move (ai, 7, 7)); 12934 } 12935 12936 private static inline void test_complete_reversi_game_155 () 12937 { 12938 /* 0 1 2 3 4 5 6 7 */ 12939 string [] board = {/* 0 */ " . . . . . . . .", 12940 /* 1 */ " . . . . . . . .", 12941 /* 2 */ " . . . D L . . .", 12942 /* 3 */ " . . . L L . . .", 12943 /* 4 */ " . . L D L . . .", 12944 /* 5 */ " . . . D . . . .", 12945 /* 6 */ " . . . . . . . .", 12946 /* 7 */ " . . . . . . . ."}; 12947 12948 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 12949 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 12950 12951 assert_true (ai_move (ai, 1, 4)); 12952 assert_true (ai_move (ai, 2, 2)); 12953 assert_true (ai_move (ai, 5, 4)); 12954 assert_true (ai_move (ai, 6, 5)); 12955 assert_true (ai_move (ai, 6, 4)); 12956 assert_true (ai_move (ai, 1, 5)); 12957 assert_true (ai_move (ai, 1, 3)); 12958 assert_true (ai_move (ai, 0, 4)); 12959 assert_true (ai_move (ai, 0, 2)); 12960 assert_true (ai_move (ai, 1, 2)); 12961 assert_true (ai_move (ai, 0, 6)); 12962 assert_true (ai_move (ai, 2, 6)); 12963 assert_true (ai_move (ai, 2, 1)); 12964 assert_true (ai_move (ai, 3, 1)); 12965 assert_true (ai_move (ai, 5, 2)); 12966 assert_true (ai_move (ai, 5, 1)); 12967 assert_true (ai_move (ai, 5, 0)); 12968 assert_true (ai_move (ai, 4, 6)); 12969 assert_true (ai_move (ai, 3, 6)); 12970 assert_true (ai_move (ai, 6, 2)); 12971 assert_true (ai_move (ai, 5, 3)); 12972 assert_true (ai_move (ai, 4, 0)); 12973 assert_true (ai_move (ai, 2, 0)); 12974 assert_true (ai_move (ai, 3, 0)); 12975 assert_true (ai_move (ai, 7, 2)); 12976 assert_true (ai_move (ai, 7, 3)); 12977 assert_true (ai_move (ai, 7, 4)); 12978 assert_true (ai_move (ai, 6, 3)); 12979 assert_true (ai_move (ai, 4, 1)); 12980 assert_true (ai_move (ai, 2, 5)); 12981 assert_true (ai_move (ai, 7, 5)); 12982 assert_true (ai_move (ai, 5, 5)); 12983 assert_true (ai_move (ai, 7, 1)); 12984 assert_true (ai_move (ai, 4, 5)); 12985 assert_true (ai_move (ai, 7, 6)); 12986 assert_true (ai_move (ai, 3, 7)); 12987 assert_true (ai_move (ai, 2, 7)); 12988 assert_true (ai_move (ai, 4, 7)); 12989 assert_true (ai_move (ai, 2, 3)); 12990 assert_true (ai_move (ai, 1, 6)); 12991 assert_true (ai_move (ai, 5, 7)); 12992 assert_true (ai_move (ai, 0, 3)); 12993 assert_true (ai_move (ai, 5, 6)); 12994 assert_true (ai_move (ai, 0, 1)); 12995 assert_true (ai_move (ai, 1, 7)); 12996 assert_true (ai_move (ai, 6, 1)); 12997 assert_true (ai_move (ai, 6, 0)); 12998 assert_true (ai_move (ai, 7, 0)); 12999 assert_true (ai_move (ai, 1, 0)); 13000 assert_true (ai_move (ai, 7, 7)); 13001 assert_true (ai_move (ai, 0, 5)); 13002 assert_true (ai_move (ai, 0, 7)); 13003 assert_true (ai_move (ai, 1, 1)); 13004 assert_true (ai_move (ai, 6, 7)); 13005 assert_true (ai_move (ai, 6, 6)); 13006 assert_true (ai_move (ai, 0, 0)); 13007 } 13008 13009 private static inline void test_complete_reversi_game_156 () 13010 { 13011 /* 0 1 2 3 4 5 6 7 */ 13012 string [] board = {/* 0 */ " . . . . . . . .", 13013 /* 1 */ " . . . . . . . .", 13014 /* 2 */ " . . . D . . . .", 13015 /* 3 */ " . . . D D . . .", 13016 /* 4 */ " . . L D L . . .", 13017 /* 5 */ " . . . L . . . .", 13018 /* 6 */ " . . L . . . . .", 13019 /* 7 */ " . . . . . . . ."}; 13020 13021 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 13022 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 13023 13024 assert_true (ai_move (ai, 3, 6)); 13025 assert_true (ai_move (ai, 4, 6)); 13026 assert_true (ai_move (ai, 1, 4)); 13027 assert_true (ai_move (ai, 1, 3)); 13028 assert_true (ai_move (ai, 1, 5)); 13029 assert_true (ai_move (ai, 2, 2)); 13030 assert_true (ai_move (ai, 1, 2)); 13031 assert_true (ai_move (ai, 5, 3)); 13032 assert_true (ai_move (ai, 5, 7)); 13033 assert_true (ai_move (ai, 3, 1)); 13034 assert_true (ai_move (ai, 4, 0)); 13035 assert_true (ai_move (ai, 0, 2)); 13036 assert_true (ai_move (ai, 5, 4)); 13037 assert_true (ai_move (ai, 6, 5)); 13038 assert_true (ai_move (ai, 6, 4)); 13039 assert_true (ai_move (ai, 7, 5)); 13040 assert_true (ai_move (ai, 6, 2)); 13041 assert_true (ai_move (ai, 4, 2)); 13042 assert_true (ai_move (ai, 5, 2)); 13043 assert_true (ai_move (ai, 6, 3)); 13044 assert_true (ai_move (ai, 7, 2)); 13045 assert_true (ai_move (ai, 5, 1)); 13046 assert_true (ai_move (ai, 5, 0)); 13047 assert_true (ai_move (ai, 7, 3)); 13048 assert_true (ai_move (ai, 4, 1)); 13049 assert_true (ai_move (ai, 2, 0)); 13050 assert_true (ai_move (ai, 2, 1)); 13051 assert_true (ai_move (ai, 3, 0)); 13052 assert_true (ai_move (ai, 6, 1)); 13053 assert_true (ai_move (ai, 4, 5)); 13054 assert_true (ai_move (ai, 1, 0)); 13055 assert_true (ai_move (ai, 4, 7)); 13056 assert_true (ai_move (ai, 5, 5)); 13057 assert_true (ai_move (ai, 2, 5)); 13058 assert_true (ai_move (ai, 5, 6)); 13059 assert_true (ai_move (ai, 2, 3)); 13060 assert_true (ai_move (ai, 2, 7)); 13061 assert_true (ai_move (ai, 3, 7)); 13062 assert_true (ai_move (ai, 0, 3)); 13063 assert_true (ai_move (ai, 0, 5)); 13064 assert_true (ai_move (ai, 0, 4)); 13065 assert_true (ai_move (ai, 7, 0)); 13066 assert_true (ai_move (ai, 7, 1)); 13067 assert_true (ai_move (ai, 6, 0)); 13068 assert_true (ai_move (ai, 7, 4)); 13069 assert_true (ai_move (ai, 0, 0)); 13070 assert_true (ai_move (ai, 0, 1)); 13071 assert_true (ai_move (ai, 1, 1)); 13072 assert_true (ai_move (ai, 1, 6)); 13073 assert_true (ai_move (ai, 0, 7)); 13074 assert_true (ai_move (ai, 0, 6)); 13075 assert_true (ai_move (ai, 6, 6)); 13076 assert_true (ai_move (ai, 6, 7)); 13077 assert_true (ai_move (ai, 1, 7)); 13078 assert_true (ai_move (ai, 7, 6)); 13079 assert_true (ai_move (ai, 7, 7)); 13080 } 13081 13082 private static inline void test_complete_reversi_game_157 () 13083 { 13084 /* 0 1 2 3 4 5 6 7 */ 13085 string [] board = {/* 0 */ " . . . . . . . .", 13086 /* 1 */ " . . . . . . . .", 13087 /* 2 */ " . . L D . . . .", 13088 /* 3 */ " . . . L D . . .", 13089 /* 4 */ " . . L D L . . .", 13090 /* 5 */ " . . . D . . . .", 13091 /* 6 */ " . . . . . . . .", 13092 /* 7 */ " . . . . . . . ."}; 13093 13094 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 13095 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 13096 13097 assert_true (ai_move (ai, 1, 2)); 13098 assert_true (ai_move (ai, 2, 6)); 13099 assert_true (ai_move (ai, 3, 6)); 13100 assert_true (ai_move (ai, 3, 1)); 13101 assert_true (ai_move (ai, 4, 2)); 13102 assert_true (ai_move (ai, 1, 3)); 13103 assert_true (ai_move (ai, 2, 3)); 13104 assert_true (ai_move (ai, 5, 2)); 13105 assert_true (ai_move (ai, 2, 5)); 13106 assert_true (ai_move (ai, 0, 2)); 13107 assert_true (ai_move (ai, 5, 1)); 13108 assert_true (ai_move (ai, 5, 0)); 13109 assert_true (ai_move (ai, 6, 2)); 13110 assert_true (ai_move (ai, 7, 3)); 13111 assert_true (ai_move (ai, 4, 1)); 13112 assert_true (ai_move (ai, 4, 5)); 13113 assert_true (ai_move (ai, 1, 4)); 13114 assert_true (ai_move (ai, 2, 7)); 13115 assert_true (ai_move (ai, 4, 7)); 13116 assert_true (ai_move (ai, 3, 7)); 13117 assert_true (ai_move (ai, 7, 2)); 13118 assert_true (ai_move (ai, 5, 7)); 13119 assert_true (ai_move (ai, 7, 4)); 13120 assert_true (ai_move (ai, 0, 3)); 13121 assert_true (ai_move (ai, 3, 0)); 13122 assert_true (ai_move (ai, 1, 5)); 13123 assert_true (ai_move (ai, 5, 3)); 13124 assert_true (ai_move (ai, 5, 4)); 13125 assert_true (ai_move (ai, 6, 3)); 13126 assert_true (ai_move (ai, 4, 0)); 13127 assert_true (ai_move (ai, 2, 0)); 13128 assert_true (ai_move (ai, 1, 0)); 13129 assert_true (ai_move (ai, 2, 1)); 13130 assert_true (ai_move (ai, 6, 4)); 13131 assert_true (ai_move (ai, 1, 6)); 13132 assert_true (ai_move (ai, 1, 1)); 13133 assert_true (ai_move (ai, 0, 4)); 13134 assert_true (ai_move (ai, 0, 5)); 13135 assert_true (ai_move (ai, 0, 7)); 13136 assert_true (ai_move (ai, 1, 7)); 13137 assert_true (ai_move (ai, 6, 7)); 13138 assert_true (ai_move (ai, 6, 1)); 13139 assert_true (ai_move (ai, 4, 6)); 13140 assert_true (ai_move (ai, 5, 6)); 13141 assert_true (ai_move (ai, 6, 5)); 13142 assert_true (ai_move (ai, 7, 6)); 13143 assert_true (ai_move (ai, 7, 0)); 13144 assert_true (ai_move (ai, 0, 6)); 13145 assert_true (ai_move (ai, 6, 0)); 13146 assert_true (ai_move (ai, 7, 1)); 13147 assert_true (ai_move (ai, 7, 5)); 13148 assert_true (ai_move (ai, 6, 6)); 13149 assert_true (ai_move (ai, 0, 1)); 13150 assert_true (game.pass ()); 13151 assert_true (ai_move (ai, 0, 0)); 13152 assert_true (game.pass ()); 13153 assert_true (ai_move (ai, 5, 5)); 13154 assert_true (game.pass ()); 13155 assert_true (ai_move (ai, 7, 7)); 13156 } 13157 13158 private static inline void test_complete_reversi_game_158 () 13159 { 13160 /* 0 1 2 3 4 5 6 7 */ 13161 string [] board = {/* 0 */ " . . . . . . . .", 13162 /* 1 */ " . . . . . . . .", 13163 /* 2 */ " . . . D L . . .", 13164 /* 3 */ " . . . L L . . .", 13165 /* 4 */ " . . L D L . . .", 13166 /* 5 */ " . . D . . . . .", 13167 /* 6 */ " . . . . . . . .", 13168 /* 7 */ " . . . . . . . ."}; 13169 13170 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 13171 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 13172 13173 assert_true (ai_move (ai, 1, 4)); 13174 assert_true (ai_move (ai, 2, 2)); 13175 assert_true (ai_move (ai, 5, 2)); 13176 assert_true (ai_move (ai, 6, 2)); 13177 assert_true (ai_move (ai, 2, 1)); 13178 assert_true (ai_move (ai, 3, 1)); 13179 assert_true (ai_move (ai, 2, 3)); 13180 assert_true (ai_move (ai, 1, 2)); 13181 assert_true (ai_move (ai, 3, 0)); 13182 assert_true (ai_move (ai, 2, 6)); 13183 assert_true (ai_move (ai, 1, 3)); 13184 assert_true (ai_move (ai, 4, 5)); 13185 assert_true (ai_move (ai, 2, 7)); 13186 assert_true (ai_move (ai, 2, 0)); 13187 assert_true (ai_move (ai, 1, 0)); 13188 assert_true (ai_move (ai, 0, 4)); 13189 assert_true (ai_move (ai, 5, 1)); 13190 assert_true (ai_move (ai, 3, 6)); 13191 assert_true (ai_move (ai, 5, 3)); 13192 assert_true (ai_move (ai, 6, 4)); 13193 assert_true (ai_move (ai, 4, 1)); 13194 assert_true (ai_move (ai, 5, 0)); 13195 assert_true (ai_move (ai, 0, 2)); 13196 assert_true (ai_move (ai, 4, 0)); 13197 assert_true (ai_move (ai, 6, 0)); 13198 assert_true (ai_move (ai, 6, 1)); 13199 assert_true (ai_move (ai, 0, 3)); 13200 assert_true (ai_move (ai, 0, 1)); 13201 assert_true (ai_move (ai, 7, 3)); 13202 assert_true (ai_move (ai, 7, 2)); 13203 assert_true (ai_move (ai, 0, 5)); 13204 assert_true (ai_move (ai, 0, 6)); 13205 assert_true (ai_move (ai, 4, 7)); 13206 assert_true (ai_move (ai, 7, 4)); 13207 assert_true (ai_move (ai, 1, 5)); 13208 assert_true (ai_move (ai, 3, 5)); 13209 assert_true (ai_move (ai, 5, 5)); 13210 assert_true (ai_move (ai, 4, 6)); 13211 assert_true (ai_move (ai, 5, 6)); 13212 assert_true (ai_move (ai, 5, 7)); 13213 assert_true (ai_move (ai, 5, 4)); 13214 assert_true (ai_move (ai, 6, 3)); 13215 assert_true (ai_move (ai, 7, 5)); 13216 assert_true (ai_move (ai, 6, 5)); 13217 assert_true (ai_move (ai, 7, 0)); 13218 assert_true (ai_move (ai, 7, 1)); 13219 assert_true (ai_move (ai, 6, 7)); 13220 assert_true (ai_move (ai, 3, 7)); 13221 assert_true (ai_move (ai, 6, 6)); 13222 assert_true (ai_move (ai, 7, 7)); 13223 assert_true (ai_move (ai, 7, 6)); 13224 assert_true (ai_move (ai, 1, 7)); 13225 assert_true (ai_move (ai, 1, 6)); 13226 assert_true (ai_move (ai, 1, 1)); 13227 assert_true (ai_move (ai, 0, 0)); 13228 assert_true (game.pass ()); 13229 assert_true (ai_move (ai, 0, 7)); 13230 } 13231 13232 private static inline void test_complete_reversi_game_159 () 13233 { 13234 /* 0 1 2 3 4 5 6 7 */ 13235 string [] board = {/* 0 */ " . . . . . . . .", 13236 /* 1 */ " . . . . . . . .", 13237 /* 2 */ " . . . D . . . .", 13238 /* 3 */ " . . . D D . . .", 13239 /* 4 */ " . . L D L . . .", 13240 /* 5 */ " . . L . . . . .", 13241 /* 6 */ " . . L . . . . .", 13242 /* 7 */ " . . . . . . . ."}; 13243 13244 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 13245 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 13246 13247 assert_true (ai_move (ai, 5, 5)); 13248 assert_true (ai_move (ai, 4, 2)); 13249 assert_true (ai_move (ai, 5, 2)); 13250 assert_true (ai_move (ai, 5, 1)); 13251 assert_true (ai_move (ai, 4, 1)); 13252 assert_true (ai_move (ai, 5, 3)); 13253 assert_true (ai_move (ai, 6, 3)); 13254 assert_true (ai_move (ai, 2, 1)); 13255 assert_true (ai_move (ai, 6, 2)); 13256 assert_true (ai_move (ai, 5, 0)); 13257 assert_true (ai_move (ai, 2, 2)); 13258 assert_true (ai_move (ai, 7, 4)); 13259 assert_true (ai_move (ai, 5, 4)); 13260 assert_true (ai_move (ai, 1, 2)); 13261 assert_true (ai_move (ai, 3, 1)); 13262 assert_true (ai_move (ai, 5, 6)); 13263 assert_true (ai_move (ai, 1, 3)); 13264 assert_true (ai_move (ai, 2, 0)); 13265 assert_true (ai_move (ai, 3, 5)); 13266 assert_true (ai_move (ai, 7, 2)); 13267 assert_true (ai_move (ai, 1, 5)); 13268 assert_true (ai_move (ai, 2, 3)); 13269 assert_true (ai_move (ai, 1, 4)); 13270 assert_true (ai_move (ai, 0, 5)); 13271 assert_true (ai_move (ai, 2, 7)); 13272 assert_true (ai_move (ai, 0, 4)); 13273 assert_true (ai_move (ai, 6, 1)); 13274 assert_true (ai_move (ai, 3, 6)); 13275 assert_true (ai_move (ai, 1, 6)); 13276 assert_true (ai_move (ai, 4, 5)); 13277 assert_true (ai_move (ai, 0, 2)); 13278 assert_true (ai_move (ai, 0, 7)); 13279 assert_true (ai_move (ai, 6, 5)); 13280 assert_true (ai_move (ai, 1, 7)); 13281 assert_true (ai_move (ai, 4, 6)); 13282 assert_true (ai_move (ai, 3, 7)); 13283 assert_true (ai_move (ai, 6, 0)); 13284 assert_true (ai_move (ai, 4, 0)); 13285 assert_true (ai_move (ai, 6, 4)); 13286 assert_true (ai_move (ai, 7, 5)); 13287 assert_true (ai_move (ai, 5, 7)); 13288 assert_true (ai_move (ai, 7, 3)); 13289 assert_true (ai_move (ai, 7, 1)); 13290 assert_true (ai_move (ai, 7, 0)); 13291 assert_true (ai_move (ai, 0, 6)); 13292 assert_true (ai_move (ai, 0, 3)); 13293 assert_true (ai_move (ai, 3, 0)); 13294 assert_true (ai_move (ai, 4, 7)); 13295 assert_true (ai_move (ai, 7, 6)); 13296 assert_true (ai_move (ai, 6, 7)); 13297 assert_true (ai_move (ai, 6, 6)); 13298 assert_true (ai_move (ai, 7, 7)); 13299 assert_true (ai_move (ai, 0, 1)); 13300 assert_true (ai_move (ai, 1, 1)); 13301 assert_true (ai_move (ai, 1, 0)); 13302 assert_true (ai_move (ai, 0, 0)); 13303 } 13304 13305 private static inline void test_complete_reversi_game_160 () 13306 { 13307 /* 0 1 2 3 4 5 6 7 */ 13308 string [] board = {/* 0 */ " . . . . . . . .", 13309 /* 1 */ " . . . . . . . .", 13310 /* 2 */ " . . L D . . . .", 13311 /* 3 */ " . . . L D . . .", 13312 /* 4 */ " . . L D L . . .", 13313 /* 5 */ " . . D . . . . .", 13314 /* 6 */ " . . . . . . . .", 13315 /* 7 */ " . . . . . . . ."}; 13316 13317 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 13318 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 13319 13320 assert_true (ai_move (ai, 1, 2)); 13321 assert_true (ai_move (ai, 2, 6)); 13322 assert_true (ai_move (ai, 5, 4)); 13323 assert_true (ai_move (ai, 3, 5)); 13324 assert_true (ai_move (ai, 2, 3)); 13325 assert_true (ai_move (ai, 2, 1)); 13326 assert_true (ai_move (ai, 1, 3)); 13327 assert_true (ai_move (ai, 0, 4)); 13328 assert_true (ai_move (ai, 2, 0)); 13329 assert_true (ai_move (ai, 3, 1)); 13330 assert_true (ai_move (ai, 4, 2)); 13331 assert_true (ai_move (ai, 4, 0)); 13332 assert_true (ai_move (ai, 0, 3)); 13333 assert_true (ai_move (ai, 5, 1)); 13334 assert_true (ai_move (ai, 0, 5)); 13335 assert_true (ai_move (ai, 5, 2)); 13336 assert_true (ai_move (ai, 6, 2)); 13337 assert_true (ai_move (ai, 7, 2)); 13338 assert_true (ai_move (ai, 4, 6)); 13339 assert_true (ai_move (ai, 3, 6)); 13340 assert_true (ai_move (ai, 2, 7)); 13341 assert_true (ai_move (ai, 1, 4)); 13342 assert_true (ai_move (ai, 1, 5)); 13343 assert_true (ai_move (ai, 6, 5)); 13344 assert_true (ai_move (ai, 4, 5)); 13345 assert_true (ai_move (ai, 5, 7)); 13346 assert_true (ai_move (ai, 6, 4)); 13347 assert_true (ai_move (ai, 3, 7)); 13348 assert_true (ai_move (ai, 3, 0)); 13349 assert_true (ai_move (ai, 5, 3)); 13350 assert_true (ai_move (ai, 4, 1)); 13351 assert_true (ai_move (ai, 1, 0)); 13352 assert_true (ai_move (ai, 6, 3)); 13353 assert_true (ai_move (ai, 5, 0)); 13354 assert_true (ai_move (ai, 4, 7)); 13355 assert_true (ai_move (ai, 1, 7)); 13356 assert_true (ai_move (ai, 1, 6)); 13357 assert_true (ai_move (ai, 7, 5)); 13358 assert_true (ai_move (ai, 7, 4)); 13359 assert_true (ai_move (ai, 7, 3)); 13360 assert_true (ai_move (ai, 6, 1)); 13361 assert_true (ai_move (ai, 0, 2)); 13362 assert_true (ai_move (ai, 0, 1)); 13363 assert_true (ai_move (ai, 5, 5)); 13364 assert_true (ai_move (ai, 5, 6)); 13365 assert_true (ai_move (ai, 6, 6)); 13366 assert_true (ai_move (ai, 6, 0)); 13367 assert_true (ai_move (ai, 7, 0)); 13368 assert_true (ai_move (ai, 7, 7)); 13369 assert_true (ai_move (ai, 7, 1)); 13370 assert_true (ai_move (ai, 7, 6)); 13371 assert_true (ai_move (ai, 0, 7)); 13372 assert_true (ai_move (ai, 1, 1)); 13373 assert_true (ai_move (ai, 0, 6)); 13374 assert_true (game.pass ()); 13375 assert_true (ai_move (ai, 0, 0)); 13376 assert_true (game.pass ()); 13377 assert_true (ai_move (ai, 6, 7)); 13378 } 13379 13380 private static inline void test_complete_reversi_game_161 () 13381 { 13382 /* 0 1 2 3 4 5 6 7 */ 13383 string [] board = {/* 0 */ " . . . . . . . .", 13384 /* 1 */ " . . . . . . . .", 13385 /* 2 */ " . . . D . L . .", 13386 /* 3 */ " . . . D L . . .", 13387 /* 4 */ " . . D L L . . .", 13388 /* 5 */ " . D . . . . . .", 13389 /* 6 */ " . . . . . . . .", 13390 /* 7 */ " . . . . . . . ."}; 13391 13392 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 13393 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 13394 13395 assert_true (ai_move (ai, 5, 5)); 13396 assert_true (ai_move (ai, 1, 4)); 13397 assert_true (ai_move (ai, 5, 4)); 13398 assert_true (ai_move (ai, 4, 2)); 13399 assert_true (ai_move (ai, 6, 2)); 13400 assert_true (ai_move (ai, 3, 1)); 13401 assert_true (ai_move (ai, 2, 1)); 13402 assert_true (ai_move (ai, 5, 1)); 13403 assert_true (ai_move (ai, 4, 1)); 13404 assert_true (ai_move (ai, 7, 3)); 13405 assert_true (ai_move (ai, 7, 2)); 13406 assert_true (ai_move (ai, 7, 1)); 13407 assert_true (ai_move (ai, 2, 2)); 13408 assert_true (ai_move (ai, 5, 3)); 13409 assert_true (ai_move (ai, 6, 4)); 13410 assert_true (ai_move (ai, 1, 2)); 13411 assert_true (ai_move (ai, 5, 0)); 13412 assert_true (ai_move (ai, 6, 5)); 13413 assert_true (ai_move (ai, 2, 3)); 13414 assert_true (ai_move (ai, 5, 6)); 13415 assert_true (ai_move (ai, 4, 6)); 13416 assert_true (ai_move (ai, 7, 4)); 13417 assert_true (ai_move (ai, 2, 5)); 13418 assert_true (ai_move (ai, 3, 0)); 13419 assert_true (ai_move (ai, 2, 0)); 13420 assert_true (ai_move (ai, 4, 0)); 13421 assert_true (ai_move (ai, 5, 7)); 13422 assert_true (ai_move (ai, 6, 3)); 13423 assert_true (ai_move (ai, 0, 2)); 13424 assert_true (ai_move (ai, 1, 3)); 13425 assert_true (ai_move (ai, 1, 1)); 13426 assert_true (ai_move (ai, 0, 6)); 13427 assert_true (ai_move (ai, 7, 5)); 13428 assert_true (ai_move (ai, 7, 6)); 13429 assert_true (ai_move (ai, 0, 3)); 13430 assert_true (ai_move (ai, 4, 5)); 13431 assert_true (ai_move (ai, 3, 5)); 13432 assert_true (ai_move (ai, 3, 6)); 13433 assert_true (ai_move (ai, 0, 5)); 13434 assert_true (ai_move (ai, 1, 6)); 13435 assert_true (ai_move (ai, 2, 6)); 13436 assert_true (ai_move (ai, 2, 7)); 13437 assert_true (ai_move (ai, 4, 7)); 13438 assert_true (ai_move (ai, 3, 7)); 13439 assert_true (ai_move (ai, 6, 6)); 13440 assert_true (ai_move (ai, 0, 4)); 13441 assert_true (ai_move (ai, 0, 7)); 13442 assert_true (ai_move (ai, 1, 7)); 13443 assert_true (ai_move (ai, 6, 1)); 13444 assert_true (ai_move (ai, 7, 0)); 13445 assert_true (ai_move (ai, 6, 0)); 13446 assert_true (ai_move (ai, 7, 7)); 13447 assert_true (ai_move (ai, 6, 7)); 13448 assert_true (ai_move (ai, 0, 0)); 13449 assert_true (ai_move (ai, 0, 1)); 13450 assert_true (ai_move (ai, 1, 0)); 13451 } 13452 13453 private static inline void test_complete_reversi_game_162 () 13454 { 13455 /* 0 1 2 3 4 5 6 7 */ 13456 string [] board = {/* 0 */ " . . . . . . . .", 13457 /* 1 */ " . . . . . . . .", 13458 /* 2 */ " . . . D L . . .", 13459 /* 3 */ " . . . D L . . .", 13460 /* 4 */ " . . D L L . . .", 13461 /* 5 */ " . D . . . . . .", 13462 /* 6 */ " . . . . . . . .", 13463 /* 7 */ " . . . . . . . ."}; 13464 13465 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 13466 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 13467 13468 assert_true (ai_move (ai, 5, 2)); 13469 assert_true (ai_move (ai, 1, 4)); 13470 assert_true (ai_move (ai, 5, 4)); 13471 assert_true (ai_move (ai, 6, 4)); 13472 assert_true (ai_move (ai, 6, 5)); 13473 assert_true (ai_move (ai, 2, 2)); 13474 assert_true (ai_move (ai, 1, 2)); 13475 assert_true (ai_move (ai, 5, 1)); 13476 assert_true (ai_move (ai, 4, 1)); 13477 assert_true (ai_move (ai, 5, 3)); 13478 assert_true (ai_move (ai, 5, 0)); 13479 assert_true (ai_move (ai, 6, 3)); 13480 assert_true (ai_move (ai, 7, 5)); 13481 assert_true (ai_move (ai, 6, 2)); 13482 assert_true (ai_move (ai, 7, 3)); 13483 assert_true (ai_move (ai, 7, 4)); 13484 assert_true (ai_move (ai, 2, 3)); 13485 assert_true (ai_move (ai, 3, 1)); 13486 assert_true (ai_move (ai, 2, 1)); 13487 assert_true (ai_move (ai, 1, 3)); 13488 assert_true (ai_move (ai, 0, 3)); 13489 assert_true (ai_move (ai, 5, 6)); 13490 assert_true (ai_move (ai, 0, 5)); 13491 assert_true (ai_move (ai, 0, 4)); 13492 assert_true (ai_move (ai, 5, 5)); 13493 assert_true (ai_move (ai, 2, 6)); 13494 assert_true (ai_move (ai, 5, 7)); 13495 assert_true (ai_move (ai, 2, 0)); 13496 assert_true (ai_move (ai, 4, 5)); 13497 assert_true (ai_move (ai, 4, 0)); 13498 assert_true (ai_move (ai, 2, 5)); 13499 assert_true (ai_move (ai, 4, 7)); 13500 assert_true (ai_move (ai, 2, 7)); 13501 assert_true (ai_move (ai, 3, 7)); 13502 assert_true (ai_move (ai, 1, 6)); 13503 assert_true (ai_move (ai, 3, 5)); 13504 assert_true (ai_move (ai, 4, 6)); 13505 assert_true (ai_move (ai, 3, 6)); 13506 assert_true (ai_move (ai, 1, 7)); 13507 assert_true (ai_move (ai, 7, 2)); 13508 assert_true (ai_move (ai, 7, 1)); 13509 assert_true (ai_move (ai, 0, 2)); 13510 assert_true (ai_move (ai, 0, 1)); 13511 assert_true (ai_move (ai, 6, 6)); 13512 assert_true (ai_move (ai, 6, 1)); 13513 assert_true (ai_move (ai, 1, 1)); 13514 assert_true (ai_move (ai, 3, 0)); 13515 assert_true (ai_move (ai, 0, 7)); 13516 assert_true (ai_move (ai, 1, 0)); 13517 assert_true (ai_move (ai, 0, 0)); 13518 assert_true (ai_move (ai, 0, 6)); 13519 assert_true (ai_move (ai, 6, 7)); 13520 assert_true (ai_move (ai, 7, 6)); 13521 assert_true (ai_move (ai, 7, 7)); 13522 assert_true (game.pass ()); 13523 assert_true (ai_move (ai, 7, 0)); 13524 assert_true (ai_move (ai, 6, 0)); 13525 } 13526 13527 private static inline void test_complete_reversi_game_163 () 13528 { 13529 /* 0 1 2 3 4 5 6 7 */ 13530 string [] board = {/* 0 */ " . . . . . . . .", 13531 /* 1 */ " . . . L . . . .", 13532 /* 2 */ " . . . L . . . .", 13533 /* 3 */ " . . . L D . . .", 13534 /* 4 */ " . . D L L . . .", 13535 /* 5 */ " . D . . . . . .", 13536 /* 6 */ " . . . . . . . .", 13537 /* 7 */ " . . . . . . . ."}; 13538 13539 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 13540 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 13541 13542 assert_true (ai_move (ai, 2, 1)); 13543 assert_true (ai_move (ai, 1, 4)); 13544 assert_true (ai_move (ai, 3, 0)); 13545 assert_true (ai_move (ai, 5, 2)); 13546 assert_true (ai_move (ai, 5, 4)); 13547 assert_true (ai_move (ai, 6, 4)); 13548 assert_true (ai_move (ai, 6, 5)); 13549 assert_true (ai_move (ai, 5, 3)); 13550 assert_true (ai_move (ai, 5, 1)); 13551 assert_true (ai_move (ai, 4, 2)); 13552 assert_true (ai_move (ai, 7, 5)); 13553 assert_true (ai_move (ai, 4, 1)); 13554 assert_true (ai_move (ai, 5, 0)); 13555 assert_true (ai_move (ai, 4, 0)); 13556 assert_true (ai_move (ai, 1, 3)); 13557 assert_true (ai_move (ai, 0, 4)); 13558 assert_true (ai_move (ai, 2, 3)); 13559 assert_true (ai_move (ai, 2, 6)); 13560 assert_true (ai_move (ai, 0, 5)); 13561 assert_true (ai_move (ai, 0, 6)); 13562 assert_true (ai_move (ai, 5, 5)); 13563 assert_true (ai_move (ai, 6, 3)); 13564 assert_true (ai_move (ai, 6, 2)); 13565 assert_true (ai_move (ai, 4, 5)); 13566 assert_true (ai_move (ai, 3, 6)); 13567 assert_true (ai_move (ai, 5, 6)); 13568 assert_true (ai_move (ai, 4, 7)); 13569 assert_true (ai_move (ai, 2, 7)); 13570 assert_true (ai_move (ai, 3, 5)); 13571 assert_true (ai_move (ai, 2, 5)); 13572 assert_true (ai_move (ai, 3, 7)); 13573 assert_true (ai_move (ai, 5, 7)); 13574 assert_true (ai_move (ai, 1, 6)); 13575 assert_true (ai_move (ai, 0, 3)); 13576 assert_true (ai_move (ai, 4, 6)); 13577 assert_true (ai_move (ai, 0, 2)); 13578 assert_true (ai_move (ai, 1, 2)); 13579 assert_true (ai_move (ai, 7, 2)); 13580 assert_true (ai_move (ai, 7, 4)); 13581 assert_true (ai_move (ai, 1, 7)); 13582 assert_true (ai_move (ai, 7, 3)); 13583 assert_true (ai_move (ai, 7, 6)); 13584 assert_true (ai_move (ai, 6, 6)); 13585 assert_true (ai_move (ai, 7, 1)); 13586 assert_true (ai_move (ai, 6, 1)); 13587 assert_true (ai_move (ai, 0, 1)); 13588 assert_true (ai_move (ai, 1, 1)); 13589 assert_true (ai_move (ai, 6, 7)); 13590 assert_true (game.pass ()); 13591 assert_true (ai_move (ai, 0, 7)); 13592 assert_true (game.pass ()); 13593 assert_true (ai_move (ai, 7, 7)); 13594 assert_true (game.pass ()); 13595 assert_true (ai_move (ai, 7, 0)); 13596 assert_true (ai_move (ai, 6, 0)); 13597 assert_true (ai_move (ai, 2, 0)); 13598 assert_true (ai_move (ai, 1, 0)); 13599 assert_true (ai_move (ai, 0, 0)); 13600 assert_true (game.pass ()); 13601 assert_true (ai_move (ai, 2, 2)); 13602 } 13603 13604 private static inline void test_complete_reversi_game_164 () 13605 { 13606 /* 0 1 2 3 4 5 6 7 */ 13607 string [] board = {/* 0 */ " . . . . . . . .", 13608 /* 1 */ " . . . . . . . .", 13609 /* 2 */ " . . L D . . . .", 13610 /* 3 */ " . . . L D . . .", 13611 /* 4 */ " . . D L L . . .", 13612 /* 5 */ " . D . . . . . .", 13613 /* 6 */ " . . . . . . . .", 13614 /* 7 */ " . . . . . . . ."}; 13615 13616 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 13617 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 13618 13619 assert_true (ai_move (ai, 1, 2)); 13620 assert_true (ai_move (ai, 1, 4)); 13621 assert_true (ai_move (ai, 4, 2)); 13622 assert_true (ai_move (ai, 5, 2)); 13623 assert_true (ai_move (ai, 6, 2)); 13624 assert_true (ai_move (ai, 2, 1)); 13625 assert_true (ai_move (ai, 3, 1)); 13626 assert_true (ai_move (ai, 0, 3)); 13627 assert_true (ai_move (ai, 2, 0)); 13628 assert_true (ai_move (ai, 4, 1)); 13629 assert_true (ai_move (ai, 3, 0)); 13630 assert_true (ai_move (ai, 7, 2)); 13631 assert_true (ai_move (ai, 6, 3)); 13632 assert_true (ai_move (ai, 5, 4)); 13633 assert_true (ai_move (ai, 5, 1)); 13634 assert_true (ai_move (ai, 2, 3)); 13635 assert_true (ai_move (ai, 0, 5)); 13636 assert_true (ai_move (ai, 1, 3)); 13637 assert_true (ai_move (ai, 0, 4)); 13638 assert_true (ai_move (ai, 2, 5)); 13639 assert_true (ai_move (ai, 0, 2)); 13640 assert_true (ai_move (ai, 5, 0)); 13641 assert_true (ai_move (ai, 2, 6)); 13642 assert_true (ai_move (ai, 5, 3)); 13643 assert_true (ai_move (ai, 6, 5)); 13644 assert_true (ai_move (ai, 3, 6)); 13645 assert_true (ai_move (ai, 6, 4)); 13646 assert_true (ai_move (ai, 5, 5)); 13647 assert_true (ai_move (ai, 7, 3)); 13648 assert_true (ai_move (ai, 7, 5)); 13649 assert_true (ai_move (ai, 5, 6)); 13650 assert_true (ai_move (ai, 5, 7)); 13651 assert_true (ai_move (ai, 7, 1)); 13652 assert_true (ai_move (ai, 2, 7)); 13653 assert_true (ai_move (ai, 4, 6)); 13654 assert_true (ai_move (ai, 4, 5)); 13655 assert_true (ai_move (ai, 4, 7)); 13656 assert_true (ai_move (ai, 3, 7)); 13657 assert_true (ai_move (ai, 3, 5)); 13658 assert_true (ai_move (ai, 1, 6)); 13659 assert_true (ai_move (ai, 6, 7)); 13660 assert_true (ai_move (ai, 7, 7)); 13661 assert_true (ai_move (ai, 0, 7)); 13662 assert_true (ai_move (ai, 6, 6)); 13663 assert_true (ai_move (ai, 1, 7)); 13664 assert_true (ai_move (ai, 0, 6)); 13665 assert_true (ai_move (ai, 4, 0)); 13666 assert_true (ai_move (ai, 1, 0)); 13667 assert_true (ai_move (ai, 6, 1)); 13668 assert_true (ai_move (ai, 7, 0)); 13669 assert_true (ai_move (ai, 6, 0)); 13670 assert_true (ai_move (ai, 7, 4)); 13671 assert_true (ai_move (ai, 0, 0)); 13672 assert_true (ai_move (ai, 0, 1)); 13673 assert_true (ai_move (ai, 1, 1)); 13674 assert_true (game.pass ()); 13675 assert_true (ai_move (ai, 7, 6)); 13676 } 13677 13678 private static inline void test_complete_reversi_game_165 () 13679 { 13680 /* 0 1 2 3 4 5 6 7 */ 13681 string [] board = {/* 0 */ " . . . . . . . .", 13682 /* 1 */ " . . . . . . . .", 13683 /* 2 */ " . . . D . . . .", 13684 /* 3 */ " . . . D D . . .", 13685 /* 4 */ " . L L L L . . .", 13686 /* 5 */ " . D . . . . . .", 13687 /* 6 */ " . . . . . . . .", 13688 /* 7 */ " . . . . . . . ."}; 13689 13690 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 13691 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 13692 13693 assert_true (ai_move (ai, 5, 5)); 13694 assert_true (ai_move (ai, 5, 2)); 13695 assert_true (ai_move (ai, 5, 4)); 13696 assert_true (ai_move (ai, 4, 2)); 13697 assert_true (ai_move (ai, 6, 2)); 13698 assert_true (ai_move (ai, 3, 1)); 13699 assert_true (ai_move (ai, 2, 1)); 13700 assert_true (ai_move (ai, 5, 1)); 13701 assert_true (ai_move (ai, 4, 1)); 13702 assert_true (ai_move (ai, 7, 3)); 13703 assert_true (ai_move (ai, 7, 2)); 13704 assert_true (ai_move (ai, 7, 1)); 13705 assert_true (ai_move (ai, 2, 2)); 13706 assert_true (ai_move (ai, 5, 3)); 13707 assert_true (ai_move (ai, 6, 4)); 13708 assert_true (ai_move (ai, 1, 2)); 13709 assert_true (ai_move (ai, 5, 0)); 13710 assert_true (ai_move (ai, 6, 5)); 13711 assert_true (ai_move (ai, 2, 3)); 13712 assert_true (ai_move (ai, 5, 6)); 13713 assert_true (ai_move (ai, 4, 6)); 13714 assert_true (ai_move (ai, 7, 4)); 13715 assert_true (ai_move (ai, 2, 5)); 13716 assert_true (ai_move (ai, 3, 0)); 13717 assert_true (ai_move (ai, 2, 0)); 13718 assert_true (ai_move (ai, 4, 0)); 13719 assert_true (ai_move (ai, 5, 7)); 13720 assert_true (ai_move (ai, 6, 3)); 13721 assert_true (ai_move (ai, 0, 2)); 13722 assert_true (ai_move (ai, 1, 3)); 13723 assert_true (ai_move (ai, 1, 1)); 13724 assert_true (ai_move (ai, 0, 6)); 13725 assert_true (ai_move (ai, 7, 5)); 13726 assert_true (ai_move (ai, 7, 6)); 13727 assert_true (ai_move (ai, 0, 3)); 13728 assert_true (ai_move (ai, 4, 5)); 13729 assert_true (ai_move (ai, 3, 5)); 13730 assert_true (ai_move (ai, 3, 6)); 13731 assert_true (ai_move (ai, 0, 5)); 13732 assert_true (ai_move (ai, 1, 6)); 13733 assert_true (ai_move (ai, 2, 6)); 13734 assert_true (ai_move (ai, 2, 7)); 13735 assert_true (ai_move (ai, 4, 7)); 13736 assert_true (ai_move (ai, 3, 7)); 13737 assert_true (ai_move (ai, 6, 6)); 13738 assert_true (ai_move (ai, 0, 4)); 13739 assert_true (ai_move (ai, 0, 7)); 13740 assert_true (ai_move (ai, 1, 7)); 13741 assert_true (ai_move (ai, 6, 1)); 13742 assert_true (ai_move (ai, 7, 0)); 13743 assert_true (ai_move (ai, 6, 0)); 13744 assert_true (ai_move (ai, 7, 7)); 13745 assert_true (ai_move (ai, 6, 7)); 13746 assert_true (ai_move (ai, 0, 0)); 13747 assert_true (ai_move (ai, 0, 1)); 13748 assert_true (ai_move (ai, 1, 0)); 13749 } 13750 13751 private static inline void test_complete_reversi_game_166 () 13752 { 13753 /* 0 1 2 3 4 5 6 7 */ 13754 string [] board = {/* 0 */ " . . . . . . . .", 13755 /* 1 */ " . . . . . . . .", 13756 /* 2 */ " . . L D . . . .", 13757 /* 3 */ " . . . L D . . .", 13758 /* 4 */ " . . . D L D . .", 13759 /* 5 */ " . . . . . L . .", 13760 /* 6 */ " . . . . . . . .", 13761 /* 7 */ " . . . . . . . ."}; 13762 13763 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 13764 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 13765 13766 assert_true (ai_move (ai, 5, 6)); 13767 assert_true (ai_move (ai, 3, 1)); 13768 assert_true (ai_move (ai, 4, 5)); 13769 assert_true (ai_move (ai, 5, 3)); 13770 assert_true (ai_move (ai, 5, 2)); 13771 assert_true (ai_move (ai, 6, 5)); 13772 assert_true (ai_move (ai, 6, 3)); 13773 assert_true (ai_move (ai, 4, 7)); 13774 assert_true (ai_move (ai, 5, 7)); 13775 assert_true (ai_move (ai, 6, 7)); 13776 assert_true (ai_move (ai, 7, 4)); 13777 assert_true (ai_move (ai, 5, 1)); 13778 assert_true (ai_move (ai, 6, 4)); 13779 assert_true (ai_move (ai, 7, 5)); 13780 assert_true (ai_move (ai, 4, 1)); 13781 assert_true (ai_move (ai, 7, 3)); 13782 assert_true (ai_move (ai, 5, 0)); 13783 assert_true (ai_move (ai, 3, 6)); 13784 assert_true (ai_move (ai, 4, 6)); 13785 assert_true (ai_move (ai, 3, 7)); 13786 assert_true (ai_move (ai, 7, 2)); 13787 assert_true (ai_move (ai, 7, 1)); 13788 assert_true (ai_move (ai, 6, 2)); 13789 assert_true (ai_move (ai, 4, 2)); 13790 assert_true (ai_move (ai, 2, 4)); 13791 assert_true (ai_move (ai, 4, 0)); 13792 assert_true (ai_move (ai, 6, 1)); 13793 assert_true (ai_move (ai, 1, 5)); 13794 assert_true (ai_move (ai, 1, 4)); 13795 assert_true (ai_move (ai, 1, 3)); 13796 assert_true (ai_move (ai, 0, 2)); 13797 assert_true (ai_move (ai, 1, 2)); 13798 assert_true (ai_move (ai, 0, 4)); 13799 assert_true (ai_move (ai, 2, 3)); 13800 assert_true (ai_move (ai, 2, 5)); 13801 assert_true (ai_move (ai, 2, 6)); 13802 assert_true (ai_move (ai, 0, 3)); 13803 assert_true (ai_move (ai, 3, 5)); 13804 assert_true (ai_move (ai, 2, 7)); 13805 assert_true (ai_move (ai, 1, 7)); 13806 assert_true (ai_move (ai, 0, 5)); 13807 assert_true (ai_move (ai, 7, 0)); 13808 assert_true (ai_move (ai, 3, 0)); 13809 assert_true (ai_move (ai, 2, 1)); 13810 assert_true (ai_move (ai, 0, 1)); 13811 assert_true (ai_move (ai, 1, 6)); 13812 assert_true (ai_move (ai, 2, 0)); 13813 assert_true (ai_move (ai, 0, 6)); 13814 assert_true (ai_move (ai, 0, 7)); 13815 assert_true (ai_move (ai, 1, 1)); 13816 assert_true (ai_move (ai, 7, 7)); 13817 assert_true (game.pass ()); 13818 assert_true (ai_move (ai, 7, 6)); 13819 assert_true (ai_move (ai, 6, 6)); 13820 assert_true (ai_move (ai, 0, 0)); 13821 assert_true (ai_move (ai, 1, 0)); 13822 assert_true (ai_move (ai, 6, 0)); 13823 } 13824 13825 private static inline void test_complete_reversi_game_167 () 13826 { 13827 /* 0 1 2 3 4 5 6 7 */ 13828 string [] board = {/* 0 */ " . . . . . . . .", 13829 /* 1 */ " . . . . . . . .", 13830 /* 2 */ " . . L D . . . .", 13831 /* 3 */ " . . . L L L . .", 13832 /* 4 */ " . . . D D D . .", 13833 /* 5 */ " . . . . . . . .", 13834 /* 6 */ " . . . . . . . .", 13835 /* 7 */ " . . . . . . . ."}; 13836 13837 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 13838 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 13839 13840 assert_true (ai_move (ai, 1, 2)); 13841 assert_true (ai_move (ai, 6, 5)); 13842 assert_true (ai_move (ai, 6, 4)); 13843 assert_true (ai_move (ai, 3, 1)); 13844 assert_true (ai_move (ai, 6, 2)); 13845 assert_true (ai_move (ai, 1, 3)); 13846 assert_true (ai_move (ai, 5, 2)); 13847 assert_true (ai_move (ai, 0, 2)); 13848 assert_true (ai_move (ai, 2, 1)); 13849 assert_true (ai_move (ai, 3, 0)); 13850 assert_true (ai_move (ai, 2, 3)); 13851 assert_true (ai_move (ai, 2, 4)); 13852 assert_true (ai_move (ai, 1, 5)); 13853 assert_true (ai_move (ai, 4, 1)); 13854 assert_true (ai_move (ai, 2, 0)); 13855 assert_true (ai_move (ai, 1, 4)); 13856 assert_true (ai_move (ai, 4, 2)); 13857 assert_true (ai_move (ai, 7, 2)); 13858 assert_true (ai_move (ai, 4, 0)); 13859 assert_true (ai_move (ai, 5, 0)); 13860 assert_true (ai_move (ai, 6, 0)); 13861 assert_true (ai_move (ai, 5, 5)); 13862 assert_true (ai_move (ai, 5, 1)); 13863 assert_true (ai_move (ai, 6, 3)); 13864 assert_true (ai_move (ai, 5, 6)); 13865 assert_true (ai_move (ai, 4, 6)); 13866 assert_true (ai_move (ai, 0, 5)); 13867 assert_true (ai_move (ai, 2, 5)); 13868 assert_true (ai_move (ai, 2, 6)); 13869 assert_true (ai_move (ai, 4, 5)); 13870 assert_true (ai_move (ai, 0, 4)); 13871 assert_true (ai_move (ai, 3, 5)); 13872 assert_true (ai_move (ai, 0, 3)); 13873 assert_true (ai_move (ai, 0, 6)); 13874 assert_true (ai_move (ai, 5, 7)); 13875 assert_true (ai_move (ai, 3, 6)); 13876 assert_true (ai_move (ai, 3, 7)); 13877 assert_true (ai_move (ai, 0, 1)); 13878 assert_true (ai_move (ai, 7, 5)); 13879 assert_true (ai_move (ai, 4, 7)); 13880 assert_true (ai_move (ai, 7, 4)); 13881 assert_true (ai_move (ai, 2, 7)); 13882 assert_true (ai_move (ai, 1, 7)); 13883 assert_true (ai_move (ai, 7, 3)); 13884 assert_true (ai_move (ai, 7, 1)); 13885 assert_true (ai_move (ai, 6, 1)); 13886 assert_true (ai_move (ai, 6, 6)); 13887 assert_true (ai_move (ai, 1, 6)); 13888 assert_true (ai_move (ai, 1, 1)); 13889 assert_true (ai_move (ai, 0, 0)); 13890 assert_true (ai_move (ai, 1, 0)); 13891 assert_true (ai_move (ai, 7, 0)); 13892 assert_true (game.pass ()); 13893 assert_true (ai_move (ai, 7, 7)); 13894 assert_true (ai_move (ai, 7, 6)); 13895 assert_true (ai_move (ai, 6, 7)); 13896 assert_true (game.pass ()); 13897 assert_true (ai_move (ai, 0, 7)); 13898 } 13899 13900 private static inline void test_complete_reversi_game_168 () 13901 { 13902 /* 0 1 2 3 4 5 6 7 */ 13903 string [] board = {/* 0 */ " . . . . . . . .", 13904 /* 1 */ " . . . . . . . .", 13905 /* 2 */ " . . L L L . . .", 13906 /* 3 */ " . . . L D . . .", 13907 /* 4 */ " . . . D D D . .", 13908 /* 5 */ " . . . . . . . .", 13909 /* 6 */ " . . . . . . . .", 13910 /* 7 */ " . . . . . . . ."}; 13911 13912 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 13913 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 13914 13915 assert_true (ai_move (ai, 2, 1)); 13916 assert_true (ai_move (ai, 3, 1)); 13917 assert_true (ai_move (ai, 2, 3)); 13918 assert_true (ai_move (ai, 1, 3)); 13919 assert_true (ai_move (ai, 3, 0)); 13920 assert_true (ai_move (ai, 4, 0)); 13921 assert_true (ai_move (ai, 5, 0)); 13922 assert_true (ai_move (ai, 2, 0)); 13923 assert_true (ai_move (ai, 1, 0)); 13924 assert_true (ai_move (ai, 2, 4)); 13925 assert_true (ai_move (ai, 1, 2)); 13926 assert_true (ai_move (ai, 0, 2)); 13927 assert_true (ai_move (ai, 2, 5)); 13928 assert_true (ai_move (ai, 1, 4)); 13929 assert_true (ai_move (ai, 5, 3)); 13930 assert_true (ai_move (ai, 1, 5)); 13931 assert_true (ai_move (ai, 0, 5)); 13932 assert_true (ai_move (ai, 2, 6)); 13933 assert_true (ai_move (ai, 4, 1)); 13934 assert_true (ai_move (ai, 0, 3)); 13935 assert_true (ai_move (ai, 3, 7)); 13936 assert_true (ai_move (ai, 4, 5)); 13937 assert_true (ai_move (ai, 4, 6)); 13938 assert_true (ai_move (ai, 2, 7)); 13939 assert_true (ai_move (ai, 0, 4)); 13940 assert_true (ai_move (ai, 0, 6)); 13941 assert_true (ai_move (ai, 3, 5)); 13942 assert_true (ai_move (ai, 4, 7)); 13943 assert_true (ai_move (ai, 3, 6)); 13944 assert_true (ai_move (ai, 5, 7)); 13945 assert_true (ai_move (ai, 5, 6)); 13946 assert_true (ai_move (ai, 5, 2)); 13947 assert_true (ai_move (ai, 5, 1)); 13948 assert_true (ai_move (ai, 6, 2)); 13949 assert_true (ai_move (ai, 6, 4)); 13950 assert_true (ai_move (ai, 1, 6)); 13951 assert_true (ai_move (ai, 6, 3)); 13952 assert_true (ai_move (ai, 7, 3)); 13953 assert_true (ai_move (ai, 0, 7)); 13954 assert_true (ai_move (ai, 1, 7)); 13955 assert_true (ai_move (ai, 0, 1)); 13956 assert_true (ai_move (ai, 6, 1)); 13957 assert_true (ai_move (ai, 6, 7)); 13958 assert_true (ai_move (ai, 6, 0)); 13959 assert_true (ai_move (ai, 7, 0)); 13960 assert_true (ai_move (ai, 7, 1)); 13961 assert_true (ai_move (ai, 7, 2)); 13962 assert_true (ai_move (ai, 7, 5)); 13963 assert_true (ai_move (ai, 6, 5)); 13964 assert_true (ai_move (ai, 5, 5)); 13965 assert_true (ai_move (ai, 7, 4)); 13966 assert_true (ai_move (ai, 7, 6)); 13967 assert_true (ai_move (ai, 7, 7)); 13968 assert_true (ai_move (ai, 6, 6)); 13969 assert_true (ai_move (ai, 1, 1)); 13970 assert_true (ai_move (ai, 0, 0)); 13971 } 13972 13973 private static inline void test_complete_reversi_game_169 () 13974 { 13975 /* 0 1 2 3 4 5 6 7 */ 13976 string [] board = {/* 0 */ " . . . . . . . .", 13977 /* 1 */ " . . . . . . . .", 13978 /* 2 */ " . . L D . . . .", 13979 /* 3 */ " . . . L D . . .", 13980 /* 4 */ " . . . L D D . .", 13981 /* 5 */ " . . . L . . . .", 13982 /* 6 */ " . . . . . . . .", 13983 /* 7 */ " . . . . . . . ."}; 13984 13985 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 13986 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 13987 13988 assert_true (ai_move (ai, 1, 2)); 13989 assert_true (ai_move (ai, 5, 2)); 13990 assert_true (ai_move (ai, 2, 6)); 13991 assert_true (ai_move (ai, 3, 6)); 13992 assert_true (ai_move (ai, 4, 6)); 13993 assert_true (ai_move (ai, 6, 5)); 13994 assert_true (ai_move (ai, 6, 4)); 13995 assert_true (ai_move (ai, 3, 1)); 13996 assert_true (ai_move (ai, 4, 0)); 13997 assert_true (ai_move (ai, 5, 7)); 13998 assert_true (ai_move (ai, 2, 1)); 13999 assert_true (ai_move (ai, 3, 7)); 14000 assert_true (ai_move (ai, 2, 3)); 14001 assert_true (ai_move (ai, 1, 5)); 14002 assert_true (ai_move (ai, 2, 4)); 14003 assert_true (ai_move (ai, 6, 3)); 14004 assert_true (ai_move (ai, 7, 2)); 14005 assert_true (ai_move (ai, 7, 4)); 14006 assert_true (ai_move (ai, 1, 7)); 14007 assert_true (ai_move (ai, 1, 6)); 14008 assert_true (ai_move (ai, 0, 6)); 14009 assert_true (ai_move (ai, 0, 4)); 14010 assert_true (ai_move (ai, 7, 6)); 14011 assert_true (ai_move (ai, 5, 6)); 14012 assert_true (ai_move (ai, 6, 1)); 14013 assert_true (ai_move (ai, 4, 1)); 14014 assert_true (ai_move (ai, 4, 2)); 14015 assert_true (ai_move (ai, 0, 2)); 14016 assert_true (ai_move (ai, 5, 3)); 14017 assert_true (ai_move (ai, 5, 5)); 14018 assert_true (ai_move (ai, 1, 3)); 14019 assert_true (ai_move (ai, 0, 3)); 14020 assert_true (ai_move (ai, 7, 3)); 14021 assert_true (ai_move (ai, 1, 1)); 14022 assert_true (ai_move (ai, 6, 2)); 14023 assert_true (ai_move (ai, 7, 1)); 14024 assert_true (ai_move (ai, 4, 5)); 14025 assert_true (ai_move (ai, 2, 0)); 14026 assert_true (ai_move (ai, 4, 7)); 14027 assert_true (ai_move (ai, 3, 0)); 14028 assert_true (ai_move (ai, 5, 1)); 14029 assert_true (ai_move (ai, 5, 0)); 14030 assert_true (ai_move (ai, 2, 5)); 14031 assert_true (ai_move (ai, 2, 7)); 14032 assert_true (ai_move (ai, 0, 7)); 14033 assert_true (ai_move (ai, 1, 4)); 14034 assert_true (ai_move (ai, 0, 5)); 14035 assert_true (game.pass ()); 14036 assert_true (ai_move (ai, 0, 1)); 14037 assert_true (game.pass ()); 14038 assert_true (ai_move (ai, 0, 0)); 14039 assert_true (ai_move (ai, 1, 0)); 14040 assert_true (ai_move (ai, 6, 0)); 14041 assert_true (game.pass ()); 14042 assert_true (ai_move (ai, 7, 0)); 14043 assert_true (game.pass ()); 14044 assert_true (ai_move (ai, 7, 5)); 14045 assert_true (ai_move (ai, 6, 6)); 14046 assert_true (ai_move (ai, 6, 7)); 14047 assert_true (ai_move (ai, 7, 7)); 14048 } 14049 14050 private static inline void test_complete_reversi_game_170 () 14051 { 14052 /* 0 1 2 3 4 5 6 7 */ 14053 string [] board = {/* 0 */ " . . . . . . . .", 14054 /* 1 */ " . . . L . . . .", 14055 /* 2 */ " . . L L . . . .", 14056 /* 3 */ " . . . L D . . .", 14057 /* 4 */ " . . . D D D . .", 14058 /* 5 */ " . . . . . . . .", 14059 /* 6 */ " . . . . . . . .", 14060 /* 7 */ " . . . . . . . ."}; 14061 14062 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 14063 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 14064 14065 assert_true (ai_move (ai, 2, 1)); 14066 assert_true (ai_move (ai, 4, 2)); 14067 assert_true (ai_move (ai, 2, 3)); 14068 assert_true (ai_move (ai, 1, 3)); 14069 assert_true (ai_move (ai, 3, 0)); 14070 assert_true (ai_move (ai, 4, 0)); 14071 assert_true (ai_move (ai, 5, 0)); 14072 assert_true (ai_move (ai, 2, 0)); 14073 assert_true (ai_move (ai, 1, 0)); 14074 assert_true (ai_move (ai, 2, 4)); 14075 assert_true (ai_move (ai, 1, 2)); 14076 assert_true (ai_move (ai, 0, 2)); 14077 assert_true (ai_move (ai, 2, 5)); 14078 assert_true (ai_move (ai, 1, 4)); 14079 assert_true (ai_move (ai, 5, 3)); 14080 assert_true (ai_move (ai, 1, 5)); 14081 assert_true (ai_move (ai, 0, 5)); 14082 assert_true (ai_move (ai, 2, 6)); 14083 assert_true (ai_move (ai, 4, 1)); 14084 assert_true (ai_move (ai, 0, 3)); 14085 assert_true (ai_move (ai, 3, 7)); 14086 assert_true (ai_move (ai, 4, 5)); 14087 assert_true (ai_move (ai, 4, 6)); 14088 assert_true (ai_move (ai, 2, 7)); 14089 assert_true (ai_move (ai, 0, 4)); 14090 assert_true (ai_move (ai, 0, 6)); 14091 assert_true (ai_move (ai, 3, 5)); 14092 assert_true (ai_move (ai, 4, 7)); 14093 assert_true (ai_move (ai, 3, 6)); 14094 assert_true (ai_move (ai, 5, 7)); 14095 assert_true (ai_move (ai, 5, 6)); 14096 assert_true (ai_move (ai, 5, 2)); 14097 assert_true (ai_move (ai, 5, 1)); 14098 assert_true (ai_move (ai, 6, 2)); 14099 assert_true (ai_move (ai, 6, 4)); 14100 assert_true (ai_move (ai, 1, 6)); 14101 assert_true (ai_move (ai, 6, 3)); 14102 assert_true (ai_move (ai, 7, 3)); 14103 assert_true (ai_move (ai, 0, 7)); 14104 assert_true (ai_move (ai, 1, 7)); 14105 assert_true (ai_move (ai, 0, 1)); 14106 assert_true (ai_move (ai, 6, 1)); 14107 assert_true (ai_move (ai, 6, 7)); 14108 assert_true (ai_move (ai, 6, 0)); 14109 assert_true (ai_move (ai, 7, 0)); 14110 assert_true (ai_move (ai, 7, 1)); 14111 assert_true (ai_move (ai, 7, 2)); 14112 assert_true (ai_move (ai, 7, 5)); 14113 assert_true (ai_move (ai, 6, 5)); 14114 assert_true (ai_move (ai, 5, 5)); 14115 assert_true (ai_move (ai, 7, 4)); 14116 assert_true (ai_move (ai, 7, 6)); 14117 assert_true (ai_move (ai, 7, 7)); 14118 assert_true (ai_move (ai, 6, 6)); 14119 assert_true (ai_move (ai, 1, 1)); 14120 assert_true (ai_move (ai, 0, 0)); 14121 } 14122 14123 private static inline void test_complete_reversi_game_171 () 14124 { 14125 /* 0 1 2 3 4 5 6 7 */ 14126 string [] board = {/* 0 */ " . . . . . . . .", 14127 /* 1 */ " . . . . . . . .", 14128 /* 2 */ " . . L D . . . .", 14129 /* 3 */ " . . . L D . . .", 14130 /* 4 */ " . . . D L . . .", 14131 /* 5 */ " . . . . D L . .", 14132 /* 6 */ " . . . . . . . .", 14133 /* 7 */ " . . . . . . . ."}; 14134 14135 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 14136 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 14137 14138 assert_true (ai_move (ai, 6, 5)); 14139 assert_true (ai_move (ai, 3, 1)); 14140 assert_true (ai_move (ai, 5, 4)); 14141 assert_true (ai_move (ai, 5, 3)); 14142 assert_true (ai_move (ai, 6, 2)); 14143 assert_true (ai_move (ai, 6, 3)); 14144 assert_true (ai_move (ai, 7, 2)); 14145 assert_true (ai_move (ai, 5, 6)); 14146 assert_true (ai_move (ai, 6, 4)); 14147 assert_true (ai_move (ai, 7, 4)); 14148 assert_true (ai_move (ai, 4, 6)); 14149 assert_true (ai_move (ai, 5, 2)); 14150 assert_true (ai_move (ai, 7, 5)); 14151 assert_true (ai_move (ai, 7, 6)); 14152 assert_true (ai_move (ai, 5, 1)); 14153 assert_true (ai_move (ai, 5, 0)); 14154 assert_true (ai_move (ai, 4, 2)); 14155 assert_true (ai_move (ai, 4, 1)); 14156 assert_true (ai_move (ai, 5, 7)); 14157 assert_true (ai_move (ai, 3, 6)); 14158 assert_true (ai_move (ai, 3, 5)); 14159 assert_true (ai_move (ai, 2, 5)); 14160 assert_true (ai_move (ai, 1, 2)); 14161 assert_true (ai_move (ai, 1, 3)); 14162 assert_true (ai_move (ai, 2, 7)); 14163 assert_true (ai_move (ai, 2, 3)); 14164 assert_true (ai_move (ai, 2, 1)); 14165 assert_true (ai_move (ai, 2, 0)); 14166 assert_true (ai_move (ai, 2, 6)); 14167 assert_true (ai_move (ai, 0, 2)); 14168 assert_true (ai_move (ai, 1, 5)); 14169 assert_true (ai_move (ai, 0, 5)); 14170 assert_true (ai_move (ai, 2, 4)); 14171 assert_true (ai_move (ai, 1, 4)); 14172 assert_true (ai_move (ai, 0, 3)); 14173 assert_true (ai_move (ai, 0, 4)); 14174 assert_true (ai_move (ai, 3, 0)); 14175 assert_true (ai_move (ai, 4, 0)); 14176 assert_true (ai_move (ai, 7, 3)); 14177 assert_true (ai_move (ai, 7, 1)); 14178 assert_true (ai_move (ai, 1, 1)); 14179 assert_true (ai_move (ai, 6, 1)); 14180 assert_true (ai_move (ai, 7, 0)); 14181 assert_true (ai_move (ai, 6, 0)); 14182 assert_true (ai_move (ai, 7, 7)); 14183 assert_true (ai_move (ai, 1, 6)); 14184 assert_true (ai_move (ai, 1, 0)); 14185 assert_true (ai_move (ai, 1, 7)); 14186 assert_true (ai_move (ai, 6, 6)); 14187 assert_true (ai_move (ai, 3, 7)); 14188 assert_true (ai_move (ai, 0, 7)); 14189 assert_true (ai_move (ai, 4, 7)); 14190 assert_true (ai_move (ai, 0, 6)); 14191 assert_true (ai_move (ai, 6, 7)); 14192 assert_true (ai_move (ai, 0, 1)); 14193 assert_true (ai_move (ai, 0, 0)); 14194 } 14195 14196 private static inline void test_complete_reversi_game_172 () 14197 { 14198 /* 0 1 2 3 4 5 6 7 */ 14199 string [] board = {/* 0 */ " . . . . . . . .", 14200 /* 1 */ " . . . . . . . .", 14201 /* 2 */ " . . L D . . . .", 14202 /* 3 */ " . . . L L L . .", 14203 /* 4 */ " . . . D D . . .", 14204 /* 5 */ " . . . . D . . .", 14205 /* 6 */ " . . . . . . . .", 14206 /* 7 */ " . . . . . . . ."}; 14207 14208 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 14209 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 14210 14211 assert_true (ai_move (ai, 1, 2)); 14212 assert_true (ai_move (ai, 3, 1)); 14213 assert_true (ai_move (ai, 6, 2)); 14214 assert_true (ai_move (ai, 1, 3)); 14215 assert_true (ai_move (ai, 5, 2)); 14216 assert_true (ai_move (ai, 0, 2)); 14217 assert_true (ai_move (ai, 2, 1)); 14218 assert_true (ai_move (ai, 3, 0)); 14219 assert_true (ai_move (ai, 2, 3)); 14220 assert_true (ai_move (ai, 2, 4)); 14221 assert_true (ai_move (ai, 1, 5)); 14222 assert_true (ai_move (ai, 4, 2)); 14223 assert_true (ai_move (ai, 5, 1)); 14224 assert_true (ai_move (ai, 7, 2)); 14225 assert_true (ai_move (ai, 4, 1)); 14226 assert_true (ai_move (ai, 6, 4)); 14227 assert_true (ai_move (ai, 1, 4)); 14228 assert_true (ai_move (ai, 5, 0)); 14229 assert_true (ai_move (ai, 6, 3)); 14230 assert_true (ai_move (ai, 2, 5)); 14231 assert_true (ai_move (ai, 3, 5)); 14232 assert_true (ai_move (ai, 4, 0)); 14233 assert_true (ai_move (ai, 2, 0)); 14234 assert_true (ai_move (ai, 1, 0)); 14235 assert_true (ai_move (ai, 0, 4)); 14236 assert_true (ai_move (ai, 2, 6)); 14237 assert_true (ai_move (ai, 4, 6)); 14238 assert_true (ai_move (ai, 3, 6)); 14239 assert_true (ai_move (ai, 3, 7)); 14240 assert_true (ai_move (ai, 5, 5)); 14241 assert_true (ai_move (ai, 5, 4)); 14242 assert_true (ai_move (ai, 5, 7)); 14243 assert_true (ai_move (ai, 2, 7)); 14244 assert_true (ai_move (ai, 6, 5)); 14245 assert_true (ai_move (ai, 5, 6)); 14246 assert_true (ai_move (ai, 7, 3)); 14247 assert_true (ai_move (ai, 7, 5)); 14248 assert_true (ai_move (ai, 6, 6)); 14249 assert_true (ai_move (ai, 1, 6)); 14250 assert_true (ai_move (ai, 0, 3)); 14251 assert_true (ai_move (ai, 0, 1)); 14252 assert_true (ai_move (ai, 1, 1)); 14253 assert_true (ai_move (ai, 7, 4)); 14254 assert_true (ai_move (ai, 7, 6)); 14255 assert_true (ai_move (ai, 7, 1)); 14256 assert_true (ai_move (ai, 7, 0)); 14257 assert_true (ai_move (ai, 6, 0)); 14258 assert_true (ai_move (ai, 0, 5)); 14259 assert_true (ai_move (ai, 0, 0)); 14260 assert_true (ai_move (ai, 6, 1)); 14261 assert_true (ai_move (ai, 7, 7)); 14262 assert_true (ai_move (ai, 0, 7)); 14263 assert_true (ai_move (ai, 0, 6)); 14264 assert_true (ai_move (ai, 1, 7)); 14265 assert_true (game.pass ()); 14266 assert_true (ai_move (ai, 4, 7)); 14267 assert_true (ai_move (ai, 6, 7)); 14268 } 14269 14270 private static inline void test_complete_reversi_game_173 () 14271 { 14272 /* 0 1 2 3 4 5 6 7 */ 14273 string [] board = {/* 0 */ " . . . . . . . .", 14274 /* 1 */ " . . . . . . . .", 14275 /* 2 */ " . . L L L . . .", 14276 /* 3 */ " . . . L D . . .", 14277 /* 4 */ " . . . D D . . .", 14278 /* 5 */ " . . . . D . . .", 14279 /* 6 */ " . . . . . . . .", 14280 /* 7 */ " . . . . . . . ."}; 14281 14282 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 14283 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 14284 14285 assert_true (ai_move (ai, 2, 1)); 14286 assert_true (ai_move (ai, 3, 1)); 14287 assert_true (ai_move (ai, 2, 3)); 14288 assert_true (ai_move (ai, 1, 3)); 14289 assert_true (ai_move (ai, 3, 0)); 14290 assert_true (ai_move (ai, 4, 0)); 14291 assert_true (ai_move (ai, 5, 0)); 14292 assert_true (ai_move (ai, 2, 0)); 14293 assert_true (ai_move (ai, 1, 0)); 14294 assert_true (ai_move (ai, 2, 4)); 14295 assert_true (ai_move (ai, 1, 2)); 14296 assert_true (ai_move (ai, 0, 2)); 14297 assert_true (ai_move (ai, 2, 5)); 14298 assert_true (ai_move (ai, 1, 4)); 14299 assert_true (ai_move (ai, 5, 1)); 14300 assert_true (ai_move (ai, 3, 6)); 14301 assert_true (ai_move (ai, 4, 1)); 14302 assert_true (ai_move (ai, 5, 6)); 14303 assert_true (ai_move (ai, 0, 5)); 14304 assert_true (ai_move (ai, 3, 5)); 14305 assert_true (ai_move (ai, 1, 5)); 14306 assert_true (ai_move (ai, 0, 4)); 14307 assert_true (ai_move (ai, 5, 5)); 14308 assert_true (ai_move (ai, 4, 6)); 14309 assert_true (ai_move (ai, 2, 6)); 14310 assert_true (ai_move (ai, 6, 4)); 14311 assert_true (ai_move (ai, 6, 5)); 14312 assert_true (ai_move (ai, 2, 7)); 14313 assert_true (ai_move (ai, 7, 3)); 14314 assert_true (ai_move (ai, 7, 5)); 14315 assert_true (ai_move (ai, 4, 7)); 14316 assert_true (ai_move (ai, 3, 7)); 14317 assert_true (ai_move (ai, 1, 7)); 14318 assert_true (ai_move (ai, 5, 4)); 14319 assert_true (ai_move (ai, 5, 7)); 14320 assert_true (ai_move (ai, 7, 4)); 14321 assert_true (ai_move (ai, 6, 7)); 14322 assert_true (ai_move (ai, 7, 2)); 14323 assert_true (ai_move (ai, 6, 3)); 14324 assert_true (ai_move (ai, 6, 2)); 14325 assert_true (ai_move (ai, 1, 6)); 14326 assert_true (ai_move (ai, 5, 2)); 14327 assert_true (ai_move (ai, 5, 3)); 14328 assert_true (ai_move (ai, 0, 6)); 14329 assert_true (ai_move (ai, 6, 6)); 14330 assert_true (ai_move (ai, 7, 7)); 14331 assert_true (ai_move (ai, 0, 7)); 14332 assert_true (ai_move (ai, 6, 0)); 14333 assert_true (ai_move (ai, 7, 0)); 14334 assert_true (ai_move (ai, 1, 1)); 14335 assert_true (ai_move (ai, 0, 3)); 14336 assert_true (game.pass ()); 14337 assert_true (ai_move (ai, 7, 1)); 14338 assert_true (ai_move (ai, 6, 1)); 14339 assert_true (ai_move (ai, 7, 6)); 14340 assert_true (game.pass ()); 14341 assert_true (ai_move (ai, 0, 0)); 14342 assert_true (ai_move (ai, 0, 1)); 14343 } 14344 14345 private static inline void test_complete_reversi_game_174 () 14346 { 14347 /* 0 1 2 3 4 5 6 7 */ 14348 string [] board = {/* 0 */ " . . . . . . . .", 14349 /* 1 */ " . . . . . . . .", 14350 /* 2 */ " . . L D . . . .", 14351 /* 3 */ " . . . L D . . .", 14352 /* 4 */ " . . . L D . . .", 14353 /* 5 */ " . . . L D . . .", 14354 /* 6 */ " . . . . . . . .", 14355 /* 7 */ " . . . . . . . ."}; 14356 14357 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 14358 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 14359 14360 assert_true (ai_move (ai, 1, 2)); 14361 assert_true (ai_move (ai, 5, 6)); 14362 assert_true (ai_move (ai, 4, 6)); 14363 assert_true (ai_move (ai, 5, 7)); 14364 assert_true (ai_move (ai, 2, 6)); 14365 assert_true (ai_move (ai, 2, 4)); 14366 assert_true (ai_move (ai, 2, 5)); 14367 assert_true (ai_move (ai, 3, 1)); 14368 assert_true (ai_move (ai, 1, 3)); 14369 assert_true (ai_move (ai, 1, 5)); 14370 assert_true (ai_move (ai, 1, 4)); 14371 assert_true (ai_move (ai, 3, 6)); 14372 assert_true (ai_move (ai, 2, 7)); 14373 assert_true (ai_move (ai, 3, 7)); 14374 assert_true (ai_move (ai, 2, 1)); 14375 assert_true (ai_move (ai, 2, 3)); 14376 assert_true (ai_move (ai, 0, 5)); 14377 assert_true (ai_move (ai, 2, 0)); 14378 assert_true (ai_move (ai, 4, 0)); 14379 assert_true (ai_move (ai, 0, 2)); 14380 assert_true (ai_move (ai, 4, 2)); 14381 assert_true (ai_move (ai, 0, 3)); 14382 assert_true (ai_move (ai, 0, 4)); 14383 assert_true (ai_move (ai, 0, 6)); 14384 assert_true (ai_move (ai, 4, 7)); 14385 assert_true (ai_move (ai, 1, 7)); 14386 assert_true (ai_move (ai, 1, 1)); 14387 assert_true (ai_move (ai, 0, 1)); 14388 assert_true (ai_move (ai, 6, 7)); 14389 assert_true (ai_move (ai, 7, 7)); 14390 assert_true (ai_move (ai, 1, 6)); 14391 assert_true (ai_move (ai, 6, 5)); 14392 assert_true (ai_move (ai, 6, 6)); 14393 assert_true (ai_move (ai, 0, 7)); 14394 assert_true (ai_move (ai, 7, 4)); 14395 assert_true (ai_move (ai, 5, 2)); 14396 assert_true (ai_move (ai, 5, 1)); 14397 assert_true (ai_move (ai, 3, 0)); 14398 assert_true (ai_move (ai, 6, 2)); 14399 assert_true (ai_move (ai, 5, 0)); 14400 assert_true (ai_move (ai, 4, 1)); 14401 assert_true (ai_move (ai, 7, 2)); 14402 assert_true (ai_move (ai, 6, 3)); 14403 assert_true (ai_move (ai, 6, 0)); 14404 assert_true (ai_move (ai, 5, 4)); 14405 assert_true (ai_move (ai, 7, 5)); 14406 assert_true (ai_move (ai, 5, 3)); 14407 assert_true (ai_move (ai, 6, 1)); 14408 assert_true (ai_move (ai, 7, 6)); 14409 assert_true (ai_move (ai, 7, 3)); 14410 assert_true (ai_move (ai, 6, 4)); 14411 assert_true (ai_move (ai, 5, 5)); 14412 assert_true (ai_move (ai, 7, 1)); 14413 assert_true (ai_move (ai, 0, 0)); 14414 assert_true (ai_move (ai, 1, 0)); 14415 assert_true (ai_move (ai, 7, 0)); 14416 } 14417 14418 private static inline void test_complete_reversi_game_175 () 14419 { 14420 /* 0 1 2 3 4 5 6 7 */ 14421 string [] board = {/* 0 */ " . . . . . . . .", 14422 /* 1 */ " . . . L . . . .", 14423 /* 2 */ " . . L L . . . .", 14424 /* 3 */ " . . . L D . . .", 14425 /* 4 */ " . . . D D . . .", 14426 /* 5 */ " . . . . D . . .", 14427 /* 6 */ " . . . . . . . .", 14428 /* 7 */ " . . . . . . . ."}; 14429 14430 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 14431 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 14432 14433 assert_true (ai_move (ai, 2, 1)); 14434 assert_true (ai_move (ai, 4, 2)); 14435 assert_true (ai_move (ai, 2, 3)); 14436 assert_true (ai_move (ai, 1, 3)); 14437 assert_true (ai_move (ai, 3, 0)); 14438 assert_true (ai_move (ai, 4, 0)); 14439 assert_true (ai_move (ai, 5, 0)); 14440 assert_true (ai_move (ai, 2, 0)); 14441 assert_true (ai_move (ai, 1, 0)); 14442 assert_true (ai_move (ai, 2, 4)); 14443 assert_true (ai_move (ai, 1, 2)); 14444 assert_true (ai_move (ai, 0, 2)); 14445 assert_true (ai_move (ai, 2, 5)); 14446 assert_true (ai_move (ai, 1, 4)); 14447 assert_true (ai_move (ai, 5, 1)); 14448 assert_true (ai_move (ai, 3, 6)); 14449 assert_true (ai_move (ai, 4, 1)); 14450 assert_true (ai_move (ai, 5, 6)); 14451 assert_true (ai_move (ai, 0, 5)); 14452 assert_true (ai_move (ai, 3, 5)); 14453 assert_true (ai_move (ai, 1, 5)); 14454 assert_true (ai_move (ai, 0, 4)); 14455 assert_true (ai_move (ai, 5, 5)); 14456 assert_true (ai_move (ai, 4, 6)); 14457 assert_true (ai_move (ai, 2, 6)); 14458 assert_true (ai_move (ai, 6, 4)); 14459 assert_true (ai_move (ai, 6, 5)); 14460 assert_true (ai_move (ai, 2, 7)); 14461 assert_true (ai_move (ai, 7, 3)); 14462 assert_true (ai_move (ai, 7, 5)); 14463 assert_true (ai_move (ai, 4, 7)); 14464 assert_true (ai_move (ai, 3, 7)); 14465 assert_true (ai_move (ai, 1, 7)); 14466 assert_true (ai_move (ai, 5, 4)); 14467 assert_true (ai_move (ai, 5, 7)); 14468 assert_true (ai_move (ai, 7, 4)); 14469 assert_true (ai_move (ai, 6, 7)); 14470 assert_true (ai_move (ai, 7, 2)); 14471 assert_true (ai_move (ai, 6, 3)); 14472 assert_true (ai_move (ai, 6, 2)); 14473 assert_true (ai_move (ai, 1, 6)); 14474 assert_true (ai_move (ai, 5, 2)); 14475 assert_true (ai_move (ai, 5, 3)); 14476 assert_true (ai_move (ai, 0, 6)); 14477 assert_true (ai_move (ai, 6, 6)); 14478 assert_true (ai_move (ai, 7, 7)); 14479 assert_true (ai_move (ai, 0, 7)); 14480 assert_true (ai_move (ai, 6, 0)); 14481 assert_true (ai_move (ai, 7, 0)); 14482 assert_true (ai_move (ai, 1, 1)); 14483 assert_true (ai_move (ai, 0, 3)); 14484 assert_true (game.pass ()); 14485 assert_true (ai_move (ai, 7, 1)); 14486 assert_true (ai_move (ai, 6, 1)); 14487 assert_true (ai_move (ai, 7, 6)); 14488 assert_true (game.pass ()); 14489 assert_true (ai_move (ai, 0, 0)); 14490 assert_true (ai_move (ai, 0, 1)); 14491 } 14492 14493 private static inline void test_complete_reversi_game_176 () 14494 { 14495 /* 0 1 2 3 4 5 6 7 */ 14496 string [] board = {/* 0 */ " . . . . . . . .", 14497 /* 1 */ " . . . . . . . .", 14498 /* 2 */ " . . L L L . . .", 14499 /* 3 */ " . . D D L . . .", 14500 /* 4 */ " . . . D L . . .", 14501 /* 5 */ " . . . . . . . .", 14502 /* 6 */ " . . . . . . . .", 14503 /* 7 */ " . . . . . . . ."}; 14504 14505 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 14506 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 14507 14508 assert_true (ai_move (ai, 2, 1)); 14509 assert_true (ai_move (ai, 1, 2)); 14510 assert_true (ai_move (ai, 4, 1)); 14511 assert_true (ai_move (ai, 2, 0)); 14512 assert_true (ai_move (ai, 0, 2)); 14513 assert_true (ai_move (ai, 0, 3)); 14514 assert_true (ai_move (ai, 0, 4)); 14515 assert_true (ai_move (ai, 4, 0)); 14516 assert_true (ai_move (ai, 5, 0)); 14517 assert_true (ai_move (ai, 2, 5)); 14518 assert_true (ai_move (ai, 5, 2)); 14519 assert_true (ai_move (ai, 6, 2)); 14520 assert_true (ai_move (ai, 3, 1)); 14521 assert_true (ai_move (ai, 5, 1)); 14522 assert_true (ai_move (ai, 5, 4)); 14523 assert_true (ai_move (ai, 1, 4)); 14524 assert_true (ai_move (ai, 1, 3)); 14525 assert_true (ai_move (ai, 2, 4)); 14526 assert_true (ai_move (ai, 5, 3)); 14527 assert_true (ai_move (ai, 6, 3)); 14528 assert_true (ai_move (ai, 7, 2)); 14529 assert_true (ai_move (ai, 5, 5)); 14530 assert_true (ai_move (ai, 2, 6)); 14531 assert_true (ai_move (ai, 3, 6)); 14532 assert_true (ai_move (ai, 5, 6)); 14533 assert_true (ai_move (ai, 6, 4)); 14534 assert_true (ai_move (ai, 0, 5)); 14535 assert_true (ai_move (ai, 4, 6)); 14536 assert_true (ai_move (ai, 4, 7)); 14537 assert_true (ai_move (ai, 1, 1)); 14538 assert_true (ai_move (ai, 3, 5)); 14539 assert_true (ai_move (ai, 2, 7)); 14540 assert_true (ai_move (ai, 1, 5)); 14541 assert_true (ai_move (ai, 7, 4)); 14542 assert_true (ai_move (ai, 7, 3)); 14543 assert_true (ai_move (ai, 0, 1)); 14544 assert_true (ai_move (ai, 0, 0)); 14545 assert_true (ai_move (ai, 5, 7)); 14546 assert_true (ai_move (ai, 7, 5)); 14547 assert_true (ai_move (ai, 3, 7)); 14548 assert_true (ai_move (ai, 4, 5)); 14549 assert_true (ai_move (ai, 6, 5)); 14550 assert_true (ai_move (ai, 6, 1)); 14551 assert_true (ai_move (ai, 0, 6)); 14552 assert_true (ai_move (ai, 1, 0)); 14553 assert_true (ai_move (ai, 7, 1)); 14554 assert_true (ai_move (ai, 7, 0)); 14555 assert_true (ai_move (ai, 6, 0)); 14556 assert_true (ai_move (ai, 3, 0)); 14557 assert_true (ai_move (ai, 1, 6)); 14558 assert_true (ai_move (ai, 7, 6)); 14559 assert_true (ai_move (ai, 6, 6)); 14560 assert_true (ai_move (ai, 7, 7)); 14561 assert_true (ai_move (ai, 6, 7)); 14562 assert_true (ai_move (ai, 1, 7)); 14563 assert_true (ai_move (ai, 0, 7)); 14564 } 14565 14566 private static inline void test_complete_reversi_game_177 () 14567 { 14568 /* 0 1 2 3 4 5 6 7 */ 14569 string [] board = {/* 0 */ " . . . . . . . .", 14570 /* 1 */ " . . . . . . . .", 14571 /* 2 */ " . . L D . . . .", 14572 /* 3 */ " . . L D D . . .", 14573 /* 4 */ " . . L L L . . .", 14574 /* 5 */ " . . . . . . . .", 14575 /* 6 */ " . . . . . . . .", 14576 /* 7 */ " . . . . . . . ."}; 14577 14578 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 14579 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 14580 14581 assert_true (ai_move (ai, 1, 2)); 14582 assert_true (ai_move (ai, 2, 1)); 14583 assert_true (ai_move (ai, 1, 4)); 14584 assert_true (ai_move (ai, 0, 2)); 14585 assert_true (ai_move (ai, 2, 0)); 14586 assert_true (ai_move (ai, 3, 0)); 14587 assert_true (ai_move (ai, 4, 0)); 14588 assert_true (ai_move (ai, 0, 4)); 14589 assert_true (ai_move (ai, 0, 5)); 14590 assert_true (ai_move (ai, 5, 2)); 14591 assert_true (ai_move (ai, 2, 5)); 14592 assert_true (ai_move (ai, 2, 6)); 14593 assert_true (ai_move (ai, 1, 3)); 14594 assert_true (ai_move (ai, 1, 5)); 14595 assert_true (ai_move (ai, 4, 5)); 14596 assert_true (ai_move (ai, 4, 1)); 14597 assert_true (ai_move (ai, 3, 1)); 14598 assert_true (ai_move (ai, 4, 2)); 14599 assert_true (ai_move (ai, 3, 5)); 14600 assert_true (ai_move (ai, 3, 6)); 14601 assert_true (ai_move (ai, 2, 7)); 14602 assert_true (ai_move (ai, 5, 5)); 14603 assert_true (ai_move (ai, 6, 2)); 14604 assert_true (ai_move (ai, 6, 3)); 14605 assert_true (ai_move (ai, 6, 5)); 14606 assert_true (ai_move (ai, 4, 6)); 14607 assert_true (ai_move (ai, 5, 0)); 14608 assert_true (ai_move (ai, 6, 4)); 14609 assert_true (ai_move (ai, 7, 4)); 14610 assert_true (ai_move (ai, 1, 1)); 14611 assert_true (ai_move (ai, 5, 3)); 14612 assert_true (ai_move (ai, 7, 2)); 14613 assert_true (ai_move (ai, 5, 1)); 14614 assert_true (ai_move (ai, 4, 7)); 14615 assert_true (ai_move (ai, 3, 7)); 14616 assert_true (ai_move (ai, 1, 0)); 14617 assert_true (ai_move (ai, 0, 0)); 14618 assert_true (ai_move (ai, 7, 5)); 14619 assert_true (ai_move (ai, 5, 7)); 14620 assert_true (ai_move (ai, 7, 3)); 14621 assert_true (ai_move (ai, 5, 4)); 14622 assert_true (ai_move (ai, 5, 6)); 14623 assert_true (ai_move (ai, 1, 6)); 14624 assert_true (ai_move (ai, 6, 0)); 14625 assert_true (ai_move (ai, 0, 1)); 14626 assert_true (ai_move (ai, 1, 7)); 14627 assert_true (ai_move (ai, 0, 7)); 14628 assert_true (ai_move (ai, 0, 6)); 14629 assert_true (ai_move (ai, 0, 3)); 14630 assert_true (ai_move (ai, 6, 1)); 14631 assert_true (ai_move (ai, 6, 7)); 14632 assert_true (ai_move (ai, 6, 6)); 14633 assert_true (ai_move (ai, 7, 7)); 14634 assert_true (ai_move (ai, 7, 6)); 14635 assert_true (ai_move (ai, 7, 1)); 14636 assert_true (ai_move (ai, 7, 0)); 14637 } 14638 14639 private static inline void test_complete_reversi_game_178 () 14640 { 14641 /* 0 1 2 3 4 5 6 7 */ 14642 string [] board = {/* 0 */ " . . . . . . . .", 14643 /* 1 */ " . . . . . . . .", 14644 /* 2 */ " . D D D . . . .", 14645 /* 3 */ " . . . L L L . .", 14646 /* 4 */ " . . . D L . . .", 14647 /* 5 */ " . . . . . . . .", 14648 /* 6 */ " . . . . . . . .", 14649 /* 7 */ " . . . . . . . ."}; 14650 14651 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 14652 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 14653 14654 assert_true (ai_move (ai, 5, 2)); 14655 assert_true (ai_move (ai, 4, 2)); 14656 assert_true (ai_move (ai, 5, 4)); 14657 assert_true (ai_move (ai, 6, 2)); 14658 assert_true (ai_move (ai, 5, 1)); 14659 assert_true (ai_move (ai, 6, 4)); 14660 assert_true (ai_move (ai, 6, 3)); 14661 assert_true (ai_move (ai, 7, 3)); 14662 assert_true (ai_move (ai, 4, 1)); 14663 assert_true (ai_move (ai, 3, 1)); 14664 assert_true (ai_move (ai, 4, 0)); 14665 assert_true (ai_move (ai, 2, 0)); 14666 assert_true (ai_move (ai, 2, 4)); 14667 assert_true (ai_move (ai, 3, 0)); 14668 assert_true (ai_move (ai, 7, 5)); 14669 assert_true (ai_move (ai, 5, 0)); 14670 assert_true (ai_move (ai, 2, 1)); 14671 assert_true (ai_move (ai, 2, 3)); 14672 assert_true (ai_move (ai, 7, 1)); 14673 assert_true (ai_move (ai, 1, 5)); 14674 assert_true (ai_move (ai, 1, 4)); 14675 assert_true (ai_move (ai, 0, 2)); 14676 assert_true (ai_move (ai, 1, 3)); 14677 assert_true (ai_move (ai, 0, 5)); 14678 assert_true (ai_move (ai, 6, 1)); 14679 assert_true (ai_move (ai, 5, 5)); 14680 assert_true (ai_move (ai, 3, 5)); 14681 assert_true (ai_move (ai, 0, 3)); 14682 assert_true (ai_move (ai, 7, 4)); 14683 assert_true (ai_move (ai, 7, 6)); 14684 assert_true (ai_move (ai, 5, 6)); 14685 assert_true (ai_move (ai, 5, 7)); 14686 assert_true (ai_move (ai, 6, 5)); 14687 assert_true (ai_move (ai, 4, 6)); 14688 assert_true (ai_move (ai, 3, 6)); 14689 assert_true (ai_move (ai, 6, 6)); 14690 assert_true (ai_move (ai, 7, 2)); 14691 assert_true (ai_move (ai, 7, 0)); 14692 assert_true (ai_move (ai, 7, 7)); 14693 assert_true (ai_move (ai, 2, 5)); 14694 assert_true (ai_move (ai, 3, 7)); 14695 assert_true (ai_move (ai, 4, 5)); 14696 assert_true (ai_move (ai, 1, 1)); 14697 assert_true (ai_move (ai, 2, 7)); 14698 assert_true (ai_move (ai, 2, 6)); 14699 assert_true (ai_move (ai, 4, 7)); 14700 assert_true (ai_move (ai, 6, 7)); 14701 assert_true (ai_move (ai, 1, 7)); 14702 assert_true (ai_move (ai, 0, 7)); 14703 assert_true (ai_move (ai, 0, 0)); 14704 assert_true (ai_move (ai, 1, 6)); 14705 assert_true (ai_move (ai, 0, 6)); 14706 assert_true (ai_move (ai, 0, 4)); 14707 assert_true (game.pass ()); 14708 assert_true (ai_move (ai, 0, 1)); 14709 assert_true (game.pass ()); 14710 assert_true (ai_move (ai, 1, 0)); 14711 assert_true (game.pass ()); 14712 assert_true (ai_move (ai, 6, 0)); 14713 } 14714 14715 private static inline void test_complete_reversi_game_179 () 14716 { 14717 /* 0 1 2 3 4 5 6 7 */ 14718 string [] board = {/* 0 */ " . . . . . . . .", 14719 /* 1 */ " . . . . . . . .", 14720 /* 2 */ " . D D D L . . .", 14721 /* 3 */ " . . . L L . . .", 14722 /* 4 */ " . . . D L . . .", 14723 /* 5 */ " . . . . . . . .", 14724 /* 6 */ " . . . . . . . .", 14725 /* 7 */ " . . . . . . . ."}; 14726 14727 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 14728 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 14729 14730 assert_true (ai_move (ai, 5, 2)); 14731 assert_true (ai_move (ai, 5, 1)); 14732 assert_true (ai_move (ai, 4, 1)); 14733 assert_true (ai_move (ai, 5, 3)); 14734 assert_true (ai_move (ai, 6, 2)); 14735 assert_true (ai_move (ai, 4, 0)); 14736 assert_true (ai_move (ai, 3, 0)); 14737 assert_true (ai_move (ai, 2, 0)); 14738 assert_true (ai_move (ai, 5, 0)); 14739 assert_true (ai_move (ai, 6, 0)); 14740 assert_true (ai_move (ai, 3, 5)); 14741 assert_true (ai_move (ai, 3, 1)); 14742 assert_true (ai_move (ai, 2, 3)); 14743 assert_true (ai_move (ai, 6, 3)); 14744 assert_true (ai_move (ai, 7, 3)); 14745 assert_true (ai_move (ai, 1, 3)); 14746 assert_true (ai_move (ai, 0, 3)); 14747 assert_true (ai_move (ai, 1, 4)); 14748 assert_true (ai_move (ai, 2, 1)); 14749 assert_true (ai_move (ai, 2, 4)); 14750 assert_true (ai_move (ai, 0, 5)); 14751 assert_true (ai_move (ai, 6, 4)); 14752 assert_true (ai_move (ai, 2, 5)); 14753 assert_true (ai_move (ai, 1, 5)); 14754 assert_true (ai_move (ai, 5, 5)); 14755 assert_true (ai_move (ai, 7, 2)); 14756 assert_true (ai_move (ai, 7, 1)); 14757 assert_true (ai_move (ai, 2, 6)); 14758 assert_true (ai_move (ai, 3, 6)); 14759 assert_true (ai_move (ai, 7, 5)); 14760 assert_true (ai_move (ai, 2, 7)); 14761 assert_true (ai_move (ai, 4, 6)); 14762 assert_true (ai_move (ai, 4, 5)); 14763 assert_true (ai_move (ai, 3, 7)); 14764 assert_true (ai_move (ai, 5, 7)); 14765 assert_true (ai_move (ai, 1, 7)); 14766 assert_true (ai_move (ai, 6, 5)); 14767 assert_true (ai_move (ai, 0, 2)); 14768 assert_true (ai_move (ai, 4, 7)); 14769 assert_true (ai_move (ai, 6, 7)); 14770 assert_true (ai_move (ai, 6, 1)); 14771 assert_true (ai_move (ai, 0, 4)); 14772 assert_true (ai_move (ai, 0, 1)); 14773 assert_true (ai_move (ai, 5, 6)); 14774 assert_true (ai_move (ai, 5, 4)); 14775 assert_true (ai_move (ai, 7, 4)); 14776 assert_true (ai_move (ai, 7, 6)); 14777 assert_true (ai_move (ai, 6, 6)); 14778 assert_true (ai_move (ai, 0, 6)); 14779 assert_true (ai_move (ai, 1, 0)); 14780 assert_true (ai_move (ai, 7, 7)); 14781 assert_true (ai_move (ai, 7, 0)); 14782 assert_true (ai_move (ai, 0, 7)); 14783 assert_true (ai_move (ai, 1, 1)); 14784 assert_true (ai_move (ai, 0, 0)); 14785 assert_true (ai_move (ai, 1, 6)); 14786 } 14787 14788 private static inline void test_complete_reversi_game_180 () 14789 { 14790 /* 0 1 2 3 4 5 6 7 */ 14791 string [] board = {/* 0 */ " . . . . . . . .", 14792 /* 1 */ " . . . . . . . .", 14793 /* 2 */ " . D D D . . . .", 14794 /* 3 */ " . . . L D . . .", 14795 /* 4 */ " . . . L L . . .", 14796 /* 5 */ " . . . L . . . .", 14797 /* 6 */ " . . . . . . . .", 14798 /* 7 */ " . . . . . . . ."}; 14799 14800 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 14801 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 14802 14803 assert_true (ai_move (ai, 2, 3)); 14804 assert_true (ai_move (ai, 5, 2)); 14805 assert_true (ai_move (ai, 5, 4)); 14806 assert_true (ai_move (ai, 6, 4)); 14807 assert_true (ai_move (ai, 6, 5)); 14808 assert_true (ai_move (ai, 4, 2)); 14809 assert_true (ai_move (ai, 5, 1)); 14810 assert_true (ai_move (ai, 4, 1)); 14811 assert_true (ai_move (ai, 6, 2)); 14812 assert_true (ai_move (ai, 2, 1)); 14813 assert_true (ai_move (ai, 2, 0)); 14814 assert_true (ai_move (ai, 1, 4)); 14815 assert_true (ai_move (ai, 1, 3)); 14816 assert_true (ai_move (ai, 0, 2)); 14817 assert_true (ai_move (ai, 3, 0)); 14818 assert_true (ai_move (ai, 5, 0)); 14819 assert_true (ai_move (ai, 3, 1)); 14820 assert_true (ai_move (ai, 7, 2)); 14821 assert_true (ai_move (ai, 5, 3)); 14822 assert_true (ai_move (ai, 5, 5)); 14823 assert_true (ai_move (ai, 0, 3)); 14824 assert_true (ai_move (ai, 0, 4)); 14825 assert_true (ai_move (ai, 0, 5)); 14826 assert_true (ai_move (ai, 0, 6)); 14827 assert_true (ai_move (ai, 6, 3)); 14828 assert_true (ai_move (ai, 0, 1)); 14829 assert_true (ai_move (ai, 4, 6)); 14830 assert_true (ai_move (ai, 5, 6)); 14831 assert_true (ai_move (ai, 4, 5)); 14832 assert_true (ai_move (ai, 1, 5)); 14833 assert_true (ai_move (ai, 2, 4)); 14834 assert_true (ai_move (ai, 7, 3)); 14835 assert_true (ai_move (ai, 5, 7)); 14836 assert_true (ai_move (ai, 3, 6)); 14837 assert_true (ai_move (ai, 2, 5)); 14838 assert_true (ai_move (ai, 2, 6)); 14839 assert_true (ai_move (ai, 2, 7)); 14840 assert_true (ai_move (ai, 7, 5)); 14841 assert_true (ai_move (ai, 7, 4)); 14842 assert_true (ai_move (ai, 4, 0)); 14843 assert_true (ai_move (ai, 6, 0)); 14844 assert_true (ai_move (ai, 3, 7)); 14845 assert_true (ai_move (ai, 4, 7)); 14846 assert_true (ai_move (ai, 1, 1)); 14847 assert_true (ai_move (ai, 1, 0)); 14848 assert_true (ai_move (ai, 6, 7)); 14849 assert_true (ai_move (ai, 7, 7)); 14850 assert_true (ai_move (ai, 1, 6)); 14851 assert_true (ai_move (ai, 6, 6)); 14852 assert_true (ai_move (ai, 6, 1)); 14853 assert_true (ai_move (ai, 7, 6)); 14854 assert_true (game.pass ()); 14855 assert_true (ai_move (ai, 0, 0)); 14856 assert_true (game.pass ()); 14857 assert_true (ai_move (ai, 0, 7)); 14858 assert_true (game.pass ()); 14859 assert_true (ai_move (ai, 1, 7)); 14860 assert_true (game.pass ()); 14861 assert_true (ai_move (ai, 7, 1)); 14862 assert_true (ai_move (ai, 7, 0)); 14863 } 14864 14865 private static inline void test_complete_reversi_game_181 () 14866 { 14867 /* 0 1 2 3 4 5 6 7 */ 14868 string [] board = {/* 0 */ " . . . . . . . .", 14869 /* 1 */ " . . . L . . . .", 14870 /* 2 */ " . D D L . . . .", 14871 /* 3 */ " . . . L D . . .", 14872 /* 4 */ " . . . D L . . .", 14873 /* 5 */ " . . . . . . . .", 14874 /* 6 */ " . . . . . . . .", 14875 /* 7 */ " . . . . . . . ."}; 14876 14877 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 14878 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 14879 14880 assert_true (ai_move (ai, 4, 2)); 14881 assert_true (ai_move (ai, 1, 3)); 14882 assert_true (ai_move (ai, 2, 0)); 14883 assert_true (ai_move (ai, 0, 2)); 14884 assert_true (ai_move (ai, 0, 4)); 14885 assert_true (ai_move (ai, 5, 2)); 14886 assert_true (ai_move (ai, 2, 1)); 14887 assert_true (ai_move (ai, 4, 0)); 14888 assert_true (ai_move (ai, 3, 0)); 14889 assert_true (ai_move (ai, 1, 0)); 14890 assert_true (ai_move (ai, 2, 3)); 14891 assert_true (ai_move (ai, 1, 4)); 14892 assert_true (ai_move (ai, 2, 4)); 14893 assert_true (ai_move (ai, 5, 3)); 14894 assert_true (ai_move (ai, 6, 2)); 14895 assert_true (ai_move (ai, 5, 1)); 14896 assert_true (ai_move (ai, 6, 4)); 14897 assert_true (ai_move (ai, 5, 4)); 14898 assert_true (ai_move (ai, 6, 5)); 14899 assert_true (ai_move (ai, 5, 5)); 14900 assert_true (ai_move (ai, 4, 6)); 14901 assert_true (ai_move (ai, 5, 6)); 14902 assert_true (ai_move (ai, 6, 3)); 14903 assert_true (ai_move (ai, 4, 1)); 14904 assert_true (ai_move (ai, 4, 5)); 14905 assert_true (ai_move (ai, 0, 5)); 14906 assert_true (ai_move (ai, 0, 3)); 14907 assert_true (ai_move (ai, 2, 5)); 14908 assert_true (ai_move (ai, 5, 7)); 14909 assert_true (ai_move (ai, 7, 2)); 14910 assert_true (ai_move (ai, 3, 6)); 14911 assert_true (ai_move (ai, 2, 6)); 14912 assert_true (ai_move (ai, 5, 0)); 14913 assert_true (ai_move (ai, 6, 0)); 14914 assert_true (ai_move (ai, 1, 5)); 14915 assert_true (ai_move (ai, 3, 5)); 14916 assert_true (ai_move (ai, 2, 7)); 14917 assert_true (ai_move (ai, 7, 5)); 14918 assert_true (ai_move (ai, 7, 4)); 14919 assert_true (ai_move (ai, 7, 3)); 14920 assert_true (ai_move (ai, 6, 6)); 14921 assert_true (ai_move (ai, 7, 6)); 14922 assert_true (ai_move (ai, 1, 1)); 14923 assert_true (ai_move (ai, 3, 7)); 14924 assert_true (ai_move (ai, 4, 7)); 14925 assert_true (ai_move (ai, 6, 1)); 14926 assert_true (ai_move (ai, 7, 0)); 14927 assert_true (ai_move (ai, 0, 0)); 14928 assert_true (ai_move (ai, 7, 1)); 14929 assert_true (ai_move (ai, 7, 7)); 14930 assert_true (ai_move (ai, 0, 1)); 14931 assert_true (ai_move (ai, 0, 6)); 14932 assert_true (ai_move (ai, 1, 6)); 14933 assert_true (ai_move (ai, 1, 7)); 14934 assert_true (ai_move (ai, 6, 7)); 14935 assert_true (game.pass ()); 14936 assert_true (ai_move (ai, 0, 7)); 14937 } 14938 14939 private static inline void test_complete_reversi_game_182 () 14940 { 14941 /* 0 1 2 3 4 5 6 7 */ 14942 string [] board = {/* 0 */ " . . . . . . . .", 14943 /* 1 */ " . . . . . . . .", 14944 /* 2 */ " . D D D . . . .", 14945 /* 3 */ " . . . L D . . .", 14946 /* 4 */ " . . L L L . . .", 14947 /* 5 */ " . . . . . . . .", 14948 /* 6 */ " . . . . . . . .", 14949 /* 7 */ " . . . . . . . ."}; 14950 14951 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 14952 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 14953 14954 assert_true (ai_move (ai, 4, 5)); 14955 assert_true (ai_move (ai, 5, 6)); 14956 assert_true (ai_move (ai, 4, 6)); 14957 assert_true (ai_move (ai, 5, 2)); 14958 assert_true (ai_move (ai, 5, 4)); 14959 assert_true (ai_move (ai, 3, 1)); 14960 assert_true (ai_move (ai, 4, 2)); 14961 assert_true (ai_move (ai, 1, 3)); 14962 assert_true (ai_move (ai, 6, 2)); 14963 assert_true (ai_move (ai, 0, 2)); 14964 assert_true (ai_move (ai, 2, 0)); 14965 assert_true (ai_move (ai, 4, 0)); 14966 assert_true (ai_move (ai, 3, 0)); 14967 assert_true (ai_move (ai, 1, 0)); 14968 assert_true (ai_move (ai, 0, 4)); 14969 assert_true (ai_move (ai, 1, 4)); 14970 assert_true (ai_move (ai, 2, 5)); 14971 assert_true (ai_move (ai, 2, 6)); 14972 assert_true (ai_move (ai, 1, 5)); 14973 assert_true (ai_move (ai, 0, 5)); 14974 assert_true (ai_move (ai, 0, 6)); 14975 assert_true (ai_move (ai, 7, 2)); 14976 assert_true (ai_move (ai, 5, 3)); 14977 assert_true (ai_move (ai, 6, 5)); 14978 assert_true (ai_move (ai, 3, 5)); 14979 assert_true (ai_move (ai, 6, 3)); 14980 assert_true (ai_move (ai, 2, 3)); 14981 assert_true (ai_move (ai, 4, 1)); 14982 assert_true (ai_move (ai, 2, 1)); 14983 assert_true (ai_move (ai, 5, 7)); 14984 assert_true (ai_move (ai, 3, 6)); 14985 assert_true (ai_move (ai, 3, 7)); 14986 assert_true (ai_move (ai, 6, 4)); 14987 assert_true (ai_move (ai, 5, 1)); 14988 assert_true (ai_move (ai, 5, 0)); 14989 assert_true (ai_move (ai, 6, 0)); 14990 assert_true (ai_move (ai, 1, 7)); 14991 assert_true (ai_move (ai, 5, 5)); 14992 assert_true (ai_move (ai, 7, 5)); 14993 assert_true (ai_move (ai, 2, 7)); 14994 assert_true (ai_move (ai, 7, 4)); 14995 assert_true (ai_move (ai, 6, 1)); 14996 assert_true (ai_move (ai, 4, 7)); 14997 assert_true (ai_move (ai, 0, 7)); 14998 assert_true (ai_move (ai, 0, 3)); 14999 assert_true (ai_move (ai, 1, 6)); 15000 assert_true (ai_move (ai, 7, 1)); 15001 assert_true (ai_move (ai, 7, 3)); 15002 assert_true (ai_move (ai, 6, 6)); 15003 assert_true (ai_move (ai, 7, 0)); 15004 assert_true (ai_move (ai, 0, 1)); 15005 assert_true (ai_move (ai, 0, 0)); 15006 assert_true (game.pass ()); 15007 assert_true (ai_move (ai, 1, 1)); 15008 assert_true (game.pass ()); 15009 assert_true (ai_move (ai, 7, 7)); 15010 assert_true (ai_move (ai, 7, 6)); 15011 assert_true (ai_move (ai, 6, 7)); 15012 } 15013 15014 private static inline void test_complete_reversi_game_183 () 15015 { 15016 /* 0 1 2 3 4 5 6 7 */ 15017 string [] board = {/* 0 */ " . . . . . . . .", 15018 /* 1 */ " . L . . . . . .", 15019 /* 2 */ " . D L D . . . .", 15020 /* 3 */ " . . . L D . . .", 15021 /* 4 */ " . . . D L . . .", 15022 /* 5 */ " . . . . . . . .", 15023 /* 6 */ " . . . . . . . .", 15024 /* 7 */ " . . . . . . . ."}; 15025 15026 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 15027 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 15028 15029 assert_true (ai_move (ai, 2, 3)); 15030 assert_true (ai_move (ai, 0, 2)); 15031 assert_true (ai_move (ai, 2, 1)); 15032 assert_true (ai_move (ai, 3, 0)); 15033 assert_true (ai_move (ai, 2, 0)); 15034 assert_true (ai_move (ai, 1, 0)); 15035 assert_true (ai_move (ai, 0, 3)); 15036 assert_true (ai_move (ai, 3, 1)); 15037 assert_true (ai_move (ai, 0, 1)); 15038 assert_true (ai_move (ai, 1, 3)); 15039 assert_true (ai_move (ai, 0, 0)); 15040 assert_true (ai_move (ai, 4, 2)); 15041 assert_true (ai_move (ai, 4, 0)); 15042 assert_true (ai_move (ai, 1, 4)); 15043 assert_true (ai_move (ai, 5, 2)); 15044 assert_true (ai_move (ai, 5, 4)); 15045 assert_true (ai_move (ai, 4, 1)); 15046 assert_true (ai_move (ai, 6, 2)); 15047 assert_true (ai_move (ai, 0, 5)); 15048 assert_true (ai_move (ai, 1, 5)); 15049 assert_true (ai_move (ai, 2, 5)); 15050 assert_true (ai_move (ai, 2, 4)); 15051 assert_true (ai_move (ai, 0, 4)); 15052 assert_true (ai_move (ai, 2, 6)); 15053 assert_true (ai_move (ai, 6, 3)); 15054 assert_true (ai_move (ai, 7, 2)); 15055 assert_true (ai_move (ai, 3, 6)); 15056 assert_true (ai_move (ai, 4, 6)); 15057 assert_true (ai_move (ai, 5, 1)); 15058 assert_true (ai_move (ai, 6, 1)); 15059 assert_true (ai_move (ai, 7, 4)); 15060 assert_true (ai_move (ai, 6, 4)); 15061 assert_true (ai_move (ai, 2, 7)); 15062 assert_true (ai_move (ai, 1, 6)); 15063 assert_true (ai_move (ai, 4, 7)); 15064 assert_true (game.pass ()); 15065 assert_true (ai_move (ai, 5, 6)); 15066 assert_true (ai_move (ai, 6, 6)); 15067 assert_true (ai_move (ai, 5, 5)); 15068 assert_true (ai_move (ai, 4, 5)); 15069 assert_true (ai_move (ai, 3, 5)); 15070 assert_true (game.pass ()); 15071 assert_true (ai_move (ai, 0, 7)); 15072 assert_true (ai_move (ai, 0, 6)); 15073 assert_true (ai_move (ai, 1, 7)); 15074 assert_true (ai_move (ai, 6, 0)); 15075 assert_true (ai_move (ai, 5, 0)); 15076 assert_true (ai_move (ai, 3, 7)); 15077 assert_true (ai_move (ai, 7, 3)); 15078 assert_true (ai_move (ai, 7, 5)); 15079 assert_true (ai_move (ai, 6, 5)); 15080 assert_true (ai_move (ai, 5, 7)); 15081 assert_true (ai_move (ai, 5, 3)); 15082 assert_true (ai_move (ai, 7, 1)); 15083 assert_true (ai_move (ai, 7, 7)); 15084 assert_true (ai_move (ai, 6, 7)); 15085 assert_true (ai_move (ai, 7, 6)); 15086 assert_true (game.pass ()); 15087 assert_true (ai_move (ai, 7, 0)); 15088 } 15089 15090 private static inline void test_complete_reversi_game_184 () 15091 { 15092 /* 0 1 2 3 4 5 6 7 */ 15093 string [] board = {/* 0 */ " . . . . . . . .", 15094 /* 1 */ " . . . . . . . .", 15095 /* 2 */ " . . . . L . . .", 15096 /* 3 */ " . . D D L . . .", 15097 /* 4 */ " . . . D L . . .", 15098 /* 5 */ " . . . . L D . .", 15099 /* 6 */ " . . . . . . . .", 15100 /* 7 */ " . . . . . . . ."}; 15101 15102 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 15103 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 15104 15105 assert_true (ai_move (ai, 5, 6)); 15106 assert_true (ai_move (ai, 2, 5)); 15107 assert_true (ai_move (ai, 5, 1)); 15108 assert_true (ai_move (ai, 4, 1)); 15109 assert_true (ai_move (ai, 3, 1)); 15110 assert_true (ai_move (ai, 1, 2)); 15111 assert_true (ai_move (ai, 1, 3)); 15112 assert_true (ai_move (ai, 4, 6)); 15113 assert_true (ai_move (ai, 3, 7)); 15114 assert_true (ai_move (ai, 2, 0)); 15115 assert_true (ai_move (ai, 2, 1)); 15116 assert_true (ai_move (ai, 3, 0)); 15117 assert_true (ai_move (ai, 3, 5)); 15118 assert_true (ai_move (ai, 4, 0)); 15119 assert_true (ai_move (ai, 1, 5)); 15120 assert_true (ai_move (ai, 6, 2)); 15121 assert_true (ai_move (ai, 5, 4)); 15122 assert_true (ai_move (ai, 2, 2)); 15123 assert_true (ai_move (ai, 5, 3)); 15124 assert_true (ai_move (ai, 1, 4)); 15125 assert_true (ai_move (ai, 0, 5)); 15126 assert_true (ai_move (ai, 6, 4)); 15127 assert_true (ai_move (ai, 6, 3)); 15128 assert_true (ai_move (ai, 2, 6)); 15129 assert_true (ai_move (ai, 2, 4)); 15130 assert_true (ai_move (ai, 5, 7)); 15131 assert_true (ai_move (ai, 3, 6)); 15132 assert_true (ai_move (ai, 2, 7)); 15133 assert_true (ai_move (ai, 4, 7)); 15134 assert_true (ai_move (ai, 7, 3)); 15135 assert_true (ai_move (ai, 6, 5)); 15136 assert_true (ai_move (ai, 0, 4)); 15137 assert_true (ai_move (ai, 5, 2)); 15138 assert_true (ai_move (ai, 7, 5)); 15139 assert_true (ai_move (ai, 3, 2)); 15140 assert_true (ai_move (ai, 0, 6)); 15141 assert_true (ai_move (ai, 1, 6)); 15142 assert_true (ai_move (ai, 1, 7)); 15143 assert_true (ai_move (ai, 0, 7)); 15144 assert_true (ai_move (ai, 6, 6)); 15145 assert_true (ai_move (ai, 0, 3)); 15146 assert_true (ai_move (ai, 0, 2)); 15147 assert_true (ai_move (ai, 0, 1)); 15148 assert_true (ai_move (ai, 1, 1)); 15149 assert_true (ai_move (ai, 5, 0)); 15150 assert_true (ai_move (ai, 6, 0)); 15151 assert_true (ai_move (ai, 6, 1)); 15152 assert_true (ai_move (ai, 7, 2)); 15153 assert_true (ai_move (ai, 6, 7)); 15154 assert_true (game.pass ()); 15155 assert_true (ai_move (ai, 7, 4)); 15156 assert_true (ai_move (ai, 7, 6)); 15157 assert_true (ai_move (ai, 0, 0)); 15158 assert_true (ai_move (ai, 1, 0)); 15159 assert_true (ai_move (ai, 7, 0)); 15160 assert_true (ai_move (ai, 7, 1)); 15161 assert_true (ai_move (ai, 7, 7)); 15162 } 15163 15164 private static inline void test_complete_reversi_game_185 () 15165 { 15166 /* 0 1 2 3 4 5 6 7 */ 15167 string [] board = {/* 0 */ " . . . . . . . .", 15168 /* 1 */ " . . . . . . . .", 15169 /* 2 */ " . . . . L . . .", 15170 /* 3 */ " . . D D L . . .", 15171 /* 4 */ " . . . L D . . .", 15172 /* 5 */ " . . L . . D . .", 15173 /* 6 */ " . . . . . . . .", 15174 /* 7 */ " . . . . . . . ."}; 15175 15176 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 15177 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 15178 15179 assert_true (ai_move (ai, 5, 1)); 15180 assert_true (ai_move (ai, 4, 1)); 15181 assert_true (ai_move (ai, 4, 5)); 15182 assert_true (ai_move (ai, 2, 4)); 15183 assert_true (ai_move (ai, 2, 6)); 15184 assert_true (ai_move (ai, 1, 3)); 15185 assert_true (ai_move (ai, 1, 2)); 15186 assert_true (ai_move (ai, 1, 5)); 15187 assert_true (ai_move (ai, 1, 4)); 15188 assert_true (ai_move (ai, 3, 7)); 15189 assert_true (ai_move (ai, 2, 7)); 15190 assert_true (ai_move (ai, 1, 7)); 15191 assert_true (ai_move (ai, 2, 2)); 15192 assert_true (ai_move (ai, 3, 5)); 15193 assert_true (ai_move (ai, 4, 6)); 15194 assert_true (ai_move (ai, 2, 1)); 15195 assert_true (ai_move (ai, 0, 5)); 15196 assert_true (ai_move (ai, 5, 6)); 15197 assert_true (ai_move (ai, 3, 2)); 15198 assert_true (ai_move (ai, 6, 5)); 15199 assert_true (ai_move (ai, 6, 4)); 15200 assert_true (ai_move (ai, 4, 7)); 15201 assert_true (ai_move (ai, 5, 2)); 15202 assert_true (ai_move (ai, 0, 3)); 15203 assert_true (ai_move (ai, 0, 2)); 15204 assert_true (ai_move (ai, 0, 4)); 15205 assert_true (ai_move (ai, 7, 5)); 15206 assert_true (ai_move (ai, 3, 6)); 15207 assert_true (ai_move (ai, 2, 0)); 15208 assert_true (ai_move (ai, 3, 1)); 15209 assert_true (ai_move (ai, 1, 1)); 15210 assert_true (ai_move (ai, 6, 0)); 15211 assert_true (ai_move (ai, 5, 7)); 15212 assert_true (ai_move (ai, 6, 7)); 15213 assert_true (ai_move (ai, 3, 0)); 15214 assert_true (ai_move (ai, 5, 4)); 15215 assert_true (ai_move (ai, 5, 3)); 15216 assert_true (ai_move (ai, 6, 3)); 15217 assert_true (ai_move (ai, 5, 0)); 15218 assert_true (ai_move (ai, 6, 1)); 15219 assert_true (ai_move (ai, 6, 2)); 15220 assert_true (ai_move (ai, 7, 2)); 15221 assert_true (ai_move (ai, 7, 4)); 15222 assert_true (ai_move (ai, 7, 3)); 15223 assert_true (ai_move (ai, 6, 6)); 15224 assert_true (ai_move (ai, 4, 0)); 15225 assert_true (ai_move (ai, 7, 0)); 15226 assert_true (ai_move (ai, 7, 1)); 15227 assert_true (ai_move (ai, 1, 6)); 15228 assert_true (ai_move (ai, 0, 7)); 15229 assert_true (ai_move (ai, 0, 6)); 15230 assert_true (ai_move (ai, 7, 7)); 15231 assert_true (ai_move (ai, 7, 6)); 15232 assert_true (ai_move (ai, 0, 0)); 15233 assert_true (ai_move (ai, 1, 0)); 15234 assert_true (ai_move (ai, 0, 1)); 15235 } 15236 15237 private static inline void test_complete_reversi_game_186 () 15238 { 15239 /* 0 1 2 3 4 5 6 7 */ 15240 string [] board = {/* 0 */ " . . . . . . . .", 15241 /* 1 */ " . . . . . . . .", 15242 /* 2 */ " . . . . L . . .", 15243 /* 3 */ " . . D L L . . .", 15244 /* 4 */ " . . L D D . . .", 15245 /* 5 */ " . . . . . D . .", 15246 /* 6 */ " . . . . . . . .", 15247 /* 7 */ " . . . . . . . ."}; 15248 15249 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 15250 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 15251 15252 assert_true (ai_move (ai, 2, 5)); 15253 assert_true (ai_move (ai, 1, 5)); 15254 assert_true (ai_move (ai, 1, 4)); 15255 assert_true (ai_move (ai, 3, 5)); 15256 assert_true (ai_move (ai, 3, 6)); 15257 assert_true (ai_move (ai, 1, 2)); 15258 assert_true (ai_move (ai, 2, 6)); 15259 assert_true (ai_move (ai, 0, 5)); 15260 assert_true (ai_move (ai, 2, 2)); 15261 assert_true (ai_move (ai, 4, 7)); 15262 assert_true (ai_move (ai, 5, 1)); 15263 assert_true (ai_move (ai, 2, 1)); 15264 assert_true (ai_move (ai, 1, 3)); 15265 assert_true (ai_move (ai, 4, 1)); 15266 assert_true (ai_move (ai, 4, 5)); 15267 assert_true (ai_move (ai, 6, 5)); 15268 assert_true (ai_move (ai, 5, 6)); 15269 assert_true (ai_move (ai, 5, 7)); 15270 assert_true (ai_move (ai, 2, 0)); 15271 assert_true (ai_move (ai, 0, 2)); 15272 assert_true (ai_move (ai, 7, 5)); 15273 assert_true (ai_move (ai, 3, 1)); 15274 assert_true (ai_move (ai, 2, 7)); 15275 assert_true (ai_move (ai, 3, 0)); 15276 assert_true (ai_move (ai, 5, 2)); 15277 assert_true (ai_move (ai, 6, 2)); 15278 assert_true (ai_move (ai, 5, 3)); 15279 assert_true (ai_move (ai, 7, 4)); 15280 assert_true (ai_move (ai, 4, 0)); 15281 assert_true (ai_move (ai, 3, 2)); 15282 assert_true (ai_move (ai, 6, 3)); 15283 assert_true (ai_move (ai, 3, 7)); 15284 assert_true (ai_move (ai, 6, 7)); 15285 assert_true (ai_move (ai, 5, 0)); 15286 assert_true (ai_move (ai, 6, 0)); 15287 assert_true (ai_move (ai, 7, 6)); 15288 assert_true (ai_move (ai, 1, 0)); 15289 assert_true (ai_move (ai, 5, 4)); 15290 assert_true (ai_move (ai, 4, 6)); 15291 assert_true (ai_move (ai, 6, 4)); 15292 assert_true (ai_move (ai, 1, 1)); 15293 assert_true (ai_move (ai, 6, 1)); 15294 assert_true (ai_move (ai, 1, 7)); 15295 assert_true (ai_move (ai, 6, 6)); 15296 assert_true (ai_move (ai, 7, 7)); 15297 assert_true (ai_move (ai, 1, 6)); 15298 assert_true (ai_move (ai, 0, 3)); 15299 assert_true (ai_move (ai, 0, 4)); 15300 assert_true (ai_move (ai, 7, 3)); 15301 assert_true (ai_move (ai, 7, 1)); 15302 assert_true (ai_move (ai, 7, 0)); 15303 assert_true (ai_move (ai, 7, 2)); 15304 assert_true (ai_move (ai, 0, 7)); 15305 assert_true (ai_move (ai, 0, 0)); 15306 assert_true (ai_move (ai, 0, 6)); 15307 assert_true (ai_move (ai, 0, 1)); 15308 } 15309 15310 private static inline void test_complete_reversi_game_187 () 15311 { 15312 /* 0 1 2 3 4 5 6 7 */ 15313 string [] board = {/* 0 */ " . . . . . . . .", 15314 /* 1 */ " . . . . . . . .", 15315 /* 2 */ " . . . . L . . .", 15316 /* 3 */ " . L L L L . . .", 15317 /* 4 */ " . . . D D . . .", 15318 /* 5 */ " . . . . . D . .", 15319 /* 6 */ " . . . . . . . .", 15320 /* 7 */ " . . . . . . . ."}; 15321 15322 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 15323 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 15324 15325 assert_true (ai_move (ai, 1, 2)); 15326 assert_true (ai_move (ai, 2, 5)); 15327 assert_true (ai_move (ai, 0, 3)); 15328 assert_true (ai_move (ai, 5, 4)); 15329 assert_true (ai_move (ai, 4, 5)); 15330 assert_true (ai_move (ai, 5, 6)); 15331 assert_true (ai_move (ai, 6, 5)); 15332 assert_true (ai_move (ai, 3, 6)); 15333 assert_true (ai_move (ai, 3, 5)); 15334 assert_true (ai_move (ai, 4, 6)); 15335 assert_true (ai_move (ai, 1, 5)); 15336 assert_true (ai_move (ai, 6, 4)); 15337 assert_true (ai_move (ai, 5, 7)); 15338 assert_true (ai_move (ai, 1, 4)); 15339 assert_true (ai_move (ai, 0, 5)); 15340 assert_true (ai_move (ai, 3, 7)); 15341 assert_true (ai_move (ai, 6, 7)); 15342 assert_true (ai_move (ai, 7, 5)); 15343 assert_true (ai_move (ai, 2, 7)); 15344 assert_true (ai_move (ai, 4, 7)); 15345 assert_true (ai_move (ai, 6, 3)); 15346 assert_true (ai_move (ai, 5, 3)); 15347 assert_true (ai_move (ai, 5, 2)); 15348 assert_true (ai_move (ai, 7, 2)); 15349 assert_true (ai_move (ai, 1, 6)); 15350 assert_true (ai_move (ai, 3, 2)); 15351 assert_true (ai_move (ai, 4, 1)); 15352 assert_true (ai_move (ai, 2, 1)); 15353 assert_true (ai_move (ai, 2, 6)); 15354 assert_true (ai_move (ai, 7, 7)); 15355 assert_true (ai_move (ai, 3, 0)); 15356 assert_true (ai_move (ai, 1, 0)); 15357 assert_true (ai_move (ai, 2, 2)); 15358 assert_true (ai_move (ai, 5, 1)); 15359 assert_true (ai_move (ai, 7, 6)); 15360 assert_true (ai_move (ai, 0, 2)); 15361 assert_true (ai_move (ai, 3, 1)); 15362 assert_true (ai_move (ai, 0, 4)); 15363 assert_true (ai_move (ai, 0, 1)); 15364 assert_true (ai_move (ai, 2, 4)); 15365 assert_true (ai_move (ai, 2, 0)); 15366 assert_true (ai_move (ai, 4, 0)); 15367 assert_true (ai_move (ai, 0, 6)); 15368 assert_true (ai_move (ai, 1, 7)); 15369 assert_true (ai_move (ai, 7, 4)); 15370 assert_true (ai_move (ai, 0, 7)); 15371 assert_true (ai_move (ai, 6, 2)); 15372 assert_true (ai_move (ai, 0, 0)); 15373 assert_true (ai_move (ai, 5, 0)); 15374 assert_true (ai_move (ai, 6, 1)); 15375 assert_true (ai_move (ai, 6, 0)); 15376 assert_true (ai_move (ai, 1, 1)); 15377 assert_true (game.pass ()); 15378 assert_true (ai_move (ai, 7, 3)); 15379 assert_true (ai_move (ai, 6, 6)); 15380 assert_true (ai_move (ai, 7, 0)); 15381 assert_true (ai_move (ai, 7, 1)); 15382 } 15383 15384 private static inline void test_complete_reversi_game_188 () 15385 { 15386 /* 0 1 2 3 4 5 6 7 */ 15387 string [] board = {/* 0 */ " . . . . . . . .", 15388 /* 1 */ " . . . . . . . .", 15389 /* 2 */ " . . . . L . . .", 15390 /* 3 */ " . . D D L . . .", 15391 /* 4 */ " . . . D D L . .", 15392 /* 5 */ " . . . . . . L .", 15393 /* 6 */ " . . . . . . . .", 15394 /* 7 */ " . . . . . . . ."}; 15395 15396 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 15397 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 15398 15399 assert_true (ai_move (ai, 6, 4)); 15400 assert_true (ai_move (ai, 2, 5)); 15401 assert_true (ai_move (ai, 5, 1)); 15402 assert_true (ai_move (ai, 4, 1)); 15403 assert_true (ai_move (ai, 4, 5)); 15404 assert_true (ai_move (ai, 6, 3)); 15405 assert_true (ai_move (ai, 7, 2)); 15406 assert_true (ai_move (ai, 6, 2)); 15407 assert_true (ai_move (ai, 7, 3)); 15408 assert_true (ai_move (ai, 3, 6)); 15409 assert_true (ai_move (ai, 4, 6)); 15410 assert_true (ai_move (ai, 5, 6)); 15411 assert_true (ai_move (ai, 4, 7)); 15412 assert_true (ai_move (ai, 1, 2)); 15413 assert_true (ai_move (ai, 3, 5)); 15414 assert_true (ai_move (ai, 3, 2)); 15415 assert_true (ai_move (ai, 1, 4)); 15416 assert_true (ai_move (ai, 1, 5)); 15417 assert_true (ai_move (ai, 2, 6)); 15418 assert_true (ai_move (ai, 3, 7)); 15419 assert_true (ai_move (ai, 2, 7)); 15420 assert_true (ai_move (ai, 5, 7)); 15421 assert_true (ai_move (ai, 6, 7)); 15422 assert_true (ai_move (ai, 5, 5)); 15423 assert_true (ai_move (ai, 7, 4)); 15424 assert_true (ai_move (ai, 0, 5)); 15425 assert_true (ai_move (ai, 2, 1)); 15426 assert_true (ai_move (ai, 2, 2)); 15427 assert_true (ai_move (ai, 4, 0)); 15428 assert_true (ai_move (ai, 2, 0)); 15429 assert_true (ai_move (ai, 0, 2)); 15430 assert_true (ai_move (ai, 3, 1)); 15431 assert_true (ai_move (ai, 0, 4)); 15432 assert_true (ai_move (ai, 1, 3)); 15433 assert_true (ai_move (ai, 0, 6)); 15434 assert_true (ai_move (ai, 0, 3)); 15435 assert_true (ai_move (ai, 5, 3)); 15436 assert_true (ai_move (ai, 2, 4)); 15437 assert_true (ai_move (ai, 1, 6)); 15438 assert_true (ai_move (ai, 5, 2)); 15439 assert_true (ai_move (ai, 3, 0)); 15440 assert_true (ai_move (ai, 5, 0)); 15441 assert_true (ai_move (ai, 6, 1)); 15442 assert_true (ai_move (ai, 0, 7)); 15443 assert_true (ai_move (ai, 6, 6)); 15444 assert_true (ai_move (ai, 6, 0)); 15445 assert_true (ai_move (ai, 0, 1)); 15446 assert_true (ai_move (ai, 7, 5)); 15447 assert_true (ai_move (ai, 7, 6)); 15448 assert_true (ai_move (ai, 1, 7)); 15449 assert_true (ai_move (ai, 1, 0)); 15450 assert_true (ai_move (ai, 7, 0)); 15451 assert_true (ai_move (ai, 1, 1)); 15452 assert_true (ai_move (ai, 7, 1)); 15453 assert_true (game.pass ()); 15454 assert_true (ai_move (ai, 7, 7)); 15455 assert_true (game.pass ()); 15456 assert_true (ai_move (ai, 0, 0)); 15457 } 15458 15459 private static inline void test_complete_reversi_game_189 () 15460 { 15461 /* 0 1 2 3 4 5 6 7 */ 15462 string [] board = {/* 0 */ " . . . . . . . .", 15463 /* 1 */ " . . . . . . . .", 15464 /* 2 */ " . . . . L . . .", 15465 /* 3 */ " . . D D L . . .", 15466 /* 4 */ " . . . D L D . .", 15467 /* 5 */ " . . . . L . . .", 15468 /* 6 */ " . . . . . . . .", 15469 /* 7 */ " . . . . . . . ."}; 15470 15471 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 15472 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 15473 15474 assert_true (ai_move (ai, 5, 6)); 15475 assert_true (ai_move (ai, 4, 6)); 15476 assert_true (ai_move (ai, 5, 1)); 15477 assert_true (ai_move (ai, 6, 4)); 15478 assert_true (ai_move (ai, 5, 2)); 15479 assert_true (ai_move (ai, 2, 2)); 15480 assert_true (ai_move (ai, 2, 1)); 15481 assert_true (ai_move (ai, 5, 3)); 15482 assert_true (ai_move (ai, 2, 4)); 15483 assert_true (ai_move (ai, 5, 0)); 15484 assert_true (ai_move (ai, 6, 2)); 15485 assert_true (ai_move (ai, 7, 3)); 15486 assert_true (ai_move (ai, 7, 2)); 15487 assert_true (ai_move (ai, 4, 1)); 15488 assert_true (ai_move (ai, 3, 0)); 15489 assert_true (ai_move (ai, 3, 2)); 15490 assert_true (ai_move (ai, 3, 1)); 15491 assert_true (ai_move (ai, 6, 3)); 15492 assert_true (ai_move (ai, 7, 5)); 15493 assert_true (ai_move (ai, 7, 4)); 15494 assert_true (ai_move (ai, 3, 5)); 15495 assert_true (ai_move (ai, 2, 0)); 15496 assert_true (ai_move (ai, 1, 0)); 15497 assert_true (ai_move (ai, 2, 5)); 15498 assert_true (ai_move (ai, 2, 6)); 15499 assert_true (ai_move (ai, 1, 4)); 15500 assert_true (ai_move (ai, 5, 5)); 15501 assert_true (ai_move (ai, 5, 7)); 15502 assert_true (ai_move (ai, 1, 2)); 15503 assert_true (ai_move (ai, 1, 5)); 15504 assert_true (ai_move (ai, 0, 5)); 15505 assert_true (ai_move (ai, 1, 3)); 15506 assert_true (ai_move (ai, 6, 5)); 15507 assert_true (ai_move (ai, 3, 6)); 15508 assert_true (ai_move (ai, 0, 4)); 15509 assert_true (ai_move (ai, 2, 7)); 15510 assert_true (ai_move (ai, 0, 3)); 15511 assert_true (ai_move (ai, 0, 2)); 15512 assert_true (ai_move (ai, 0, 1)); 15513 assert_true (ai_move (ai, 6, 6)); 15514 assert_true (ai_move (ai, 3, 7)); 15515 assert_true (ai_move (ai, 4, 7)); 15516 assert_true (ai_move (ai, 1, 6)); 15517 assert_true (ai_move (ai, 0, 7)); 15518 assert_true (ai_move (ai, 1, 7)); 15519 assert_true (ai_move (ai, 0, 6)); 15520 assert_true (ai_move (ai, 4, 0)); 15521 assert_true (ai_move (ai, 0, 0)); 15522 assert_true (ai_move (ai, 7, 7)); 15523 assert_true (ai_move (ai, 1, 1)); 15524 assert_true (ai_move (ai, 6, 7)); 15525 assert_true (ai_move (ai, 6, 0)); 15526 assert_true (ai_move (ai, 6, 1)); 15527 assert_true (ai_move (ai, 7, 6)); 15528 assert_true (game.pass ()); 15529 assert_true (ai_move (ai, 7, 1)); 15530 assert_true (ai_move (ai, 7, 0)); 15531 } 15532 15533 private static inline void test_complete_reversi_game_190 () 15534 { 15535 /* 0 1 2 3 4 5 6 7 */ 15536 string [] board = {/* 0 */ " . . . . . . . .", 15537 /* 1 */ " . . . . . . . .", 15538 /* 2 */ " . . . . L . . .", 15539 /* 3 */ " . . D D L . . .", 15540 /* 4 */ " . . . L D D . .", 15541 /* 5 */ " . . L . . . . .", 15542 /* 6 */ " . . . . . . . .", 15543 /* 7 */ " . . . . . . . ."}; 15544 15545 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 15546 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 15547 15548 assert_true (ai_move (ai, 5, 1)); 15549 assert_true (ai_move (ai, 4, 1)); 15550 assert_true (ai_move (ai, 4, 5)); 15551 assert_true (ai_move (ai, 6, 5)); 15552 assert_true (ai_move (ai, 6, 3)); 15553 assert_true (ai_move (ai, 2, 4)); 15554 assert_true (ai_move (ai, 2, 6)); 15555 assert_true (ai_move (ai, 1, 3)); 15556 assert_true (ai_move (ai, 1, 2)); 15557 assert_true (ai_move (ai, 1, 5)); 15558 assert_true (ai_move (ai, 1, 4)); 15559 assert_true (ai_move (ai, 3, 7)); 15560 assert_true (ai_move (ai, 2, 7)); 15561 assert_true (ai_move (ai, 1, 7)); 15562 assert_true (ai_move (ai, 2, 2)); 15563 assert_true (ai_move (ai, 3, 5)); 15564 assert_true (ai_move (ai, 4, 6)); 15565 assert_true (ai_move (ai, 2, 1)); 15566 assert_true (ai_move (ai, 3, 6)); 15567 assert_true (ai_move (ai, 5, 3)); 15568 assert_true (ai_move (ai, 2, 0)); 15569 assert_true (ai_move (ai, 6, 4)); 15570 assert_true (ai_move (ai, 0, 5)); 15571 assert_true (ai_move (ai, 0, 2)); 15572 assert_true (ai_move (ai, 0, 4)); 15573 assert_true (ai_move (ai, 1, 6)); 15574 assert_true (ai_move (ai, 5, 5)); 15575 assert_true (ai_move (ai, 7, 3)); 15576 assert_true (ai_move (ai, 7, 5)); 15577 assert_true (ai_move (ai, 5, 6)); 15578 assert_true (ai_move (ai, 7, 4)); 15579 assert_true (ai_move (ai, 7, 6)); 15580 assert_true (ai_move (ai, 4, 7)); 15581 assert_true (ai_move (ai, 5, 7)); 15582 assert_true (ai_move (ai, 7, 2)); 15583 assert_true (ai_move (ai, 7, 1)); 15584 assert_true (ai_move (ai, 6, 2)); 15585 assert_true (ai_move (ai, 5, 2)); 15586 assert_true (ai_move (ai, 0, 7)); 15587 assert_true (ai_move (ai, 5, 0)); 15588 assert_true (ai_move (ai, 6, 7)); 15589 assert_true (ai_move (ai, 0, 6)); 15590 assert_true (ai_move (ai, 3, 1)); 15591 assert_true (ai_move (ai, 3, 2)); 15592 assert_true (ai_move (ai, 0, 3)); 15593 assert_true (ai_move (ai, 4, 0)); 15594 assert_true (ai_move (ai, 3, 0)); 15595 assert_true (ai_move (ai, 1, 0)); 15596 assert_true (ai_move (ai, 1, 1)); 15597 assert_true (ai_move (ai, 0, 0)); 15598 assert_true (ai_move (ai, 0, 1)); 15599 assert_true (ai_move (ai, 6, 6)); 15600 assert_true (ai_move (ai, 7, 7)); 15601 assert_true (game.pass ()); 15602 assert_true (ai_move (ai, 7, 0)); 15603 assert_true (game.pass ()); 15604 assert_true (ai_move (ai, 6, 0)); 15605 assert_true (ai_move (ai, 6, 1)); 15606 } 15607 15608 private static inline void test_complete_reversi_game_191 () 15609 { 15610 /* 0 1 2 3 4 5 6 7 */ 15611 string [] board = {/* 0 */ " . . . . . . . .", 15612 /* 1 */ " . . . . . . . .", 15613 /* 2 */ " . . . . L . . .", 15614 /* 3 */ " . . D L L . . .", 15615 /* 4 */ " . . L D D D . .", 15616 /* 5 */ " . . . . . . . .", 15617 /* 6 */ " . . . . . . . .", 15618 /* 7 */ " . . . . . . . ."}; 15619 15620 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 15621 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 15622 15623 assert_true (ai_move (ai, 2, 5)); 15624 assert_true (ai_move (ai, 6, 5)); 15625 assert_true (ai_move (ai, 2, 2)); 15626 assert_true (ai_move (ai, 4, 5)); 15627 assert_true (ai_move (ai, 5, 1)); 15628 assert_true (ai_move (ai, 4, 1)); 15629 assert_true (ai_move (ai, 5, 6)); 15630 assert_true (ai_move (ai, 4, 6)); 15631 assert_true (ai_move (ai, 7, 4)); 15632 assert_true (ai_move (ai, 1, 5)); 15633 assert_true (ai_move (ai, 1, 4)); 15634 assert_true (ai_move (ai, 3, 5)); 15635 assert_true (ai_move (ai, 2, 6)); 15636 assert_true (ai_move (ai, 1, 2)); 15637 assert_true (ai_move (ai, 0, 2)); 15638 assert_true (ai_move (ai, 2, 7)); 15639 assert_true (ai_move (ai, 3, 1)); 15640 assert_true (ai_move (ai, 2, 1)); 15641 assert_true (ai_move (ai, 1, 3)); 15642 assert_true (ai_move (ai, 0, 4)); 15643 assert_true (ai_move (ai, 5, 7)); 15644 assert_true (ai_move (ai, 3, 6)); 15645 assert_true (ai_move (ai, 3, 0)); 15646 assert_true (ai_move (ai, 7, 6)); 15647 assert_true (ai_move (ai, 0, 6)); 15648 assert_true (ai_move (ai, 1, 6)); 15649 assert_true (ai_move (ai, 6, 4)); 15650 assert_true (ai_move (ai, 0, 3)); 15651 assert_true (ai_move (ai, 0, 5)); 15652 assert_true (ai_move (ai, 5, 3)); 15653 assert_true (ai_move (ai, 5, 5)); 15654 assert_true (ai_move (ai, 6, 3)); 15655 assert_true (ai_move (ai, 3, 2)); 15656 assert_true (ai_move (ai, 2, 0)); 15657 assert_true (ai_move (ai, 4, 0)); 15658 assert_true (ai_move (ai, 5, 0)); 15659 assert_true (ai_move (ai, 1, 1)); 15660 assert_true (ai_move (ai, 3, 7)); 15661 assert_true (ai_move (ai, 6, 6)); 15662 assert_true (ai_move (ai, 4, 7)); 15663 assert_true (ai_move (ai, 0, 7)); 15664 assert_true (ai_move (ai, 6, 7)); 15665 assert_true (ai_move (ai, 7, 7)); 15666 assert_true (ai_move (ai, 5, 2)); 15667 assert_true (ai_move (ai, 1, 7)); 15668 assert_true (ai_move (ai, 1, 0)); 15669 assert_true (ai_move (ai, 7, 2)); 15670 assert_true (ai_move (ai, 6, 2)); 15671 assert_true (ai_move (ai, 7, 3)); 15672 assert_true (ai_move (ai, 7, 5)); 15673 assert_true (ai_move (ai, 6, 1)); 15674 assert_true (ai_move (ai, 6, 0)); 15675 assert_true (ai_move (ai, 7, 0)); 15676 assert_true (ai_move (ai, 7, 1)); 15677 assert_true (ai_move (ai, 0, 0)); 15678 assert_true (ai_move (ai, 0, 1)); 15679 } 15680 15681 private static inline void test_complete_reversi_game_192 () 15682 { 15683 /* 0 1 2 3 4 5 6 7 */ 15684 string [] board = {/* 0 */ " . . . . . . . .", 15685 /* 1 */ " . . . . . . . .", 15686 /* 2 */ " . . . . L . . .", 15687 /* 3 */ " . L L L L . . .", 15688 /* 4 */ " . . . D D D . .", 15689 /* 5 */ " . . . . . . . .", 15690 /* 6 */ " . . . . . . . .", 15691 /* 7 */ " . . . . . . . ."}; 15692 15693 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 15694 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 15695 15696 assert_true (ai_move (ai, 1, 2)); 15697 assert_true (ai_move (ai, 6, 5)); 15698 assert_true (ai_move (ai, 6, 4)); 15699 assert_true (ai_move (ai, 2, 5)); 15700 assert_true (ai_move (ai, 0, 3)); 15701 assert_true (ai_move (ai, 4, 5)); 15702 assert_true (ai_move (ai, 3, 6)); 15703 assert_true (ai_move (ai, 5, 6)); 15704 assert_true (ai_move (ai, 1, 4)); 15705 assert_true (ai_move (ai, 6, 3)); 15706 assert_true (ai_move (ai, 7, 2)); 15707 assert_true (ai_move (ai, 4, 6)); 15708 assert_true (ai_move (ai, 7, 4)); 15709 assert_true (ai_move (ai, 2, 7)); 15710 assert_true (ai_move (ai, 6, 6)); 15711 assert_true (ai_move (ai, 0, 1)); 15712 assert_true (ai_move (ai, 2, 1)); 15713 assert_true (ai_move (ai, 0, 5)); 15714 assert_true (ai_move (ai, 4, 7)); 15715 assert_true (ai_move (ai, 2, 6)); 15716 assert_true (ai_move (ai, 1, 5)); 15717 assert_true (ai_move (ai, 3, 5)); 15718 assert_true (ai_move (ai, 3, 2)); 15719 assert_true (ai_move (ai, 3, 1)); 15720 assert_true (ai_move (ai, 4, 1)); 15721 assert_true (ai_move (ai, 6, 7)); 15722 assert_true (ai_move (ai, 2, 4)); 15723 assert_true (ai_move (ai, 2, 2)); 15724 assert_true (ai_move (ai, 1, 1)); 15725 assert_true (ai_move (ai, 2, 0)); 15726 assert_true (ai_move (ai, 3, 0)); 15727 assert_true (ai_move (ai, 5, 0)); 15728 assert_true (ai_move (ai, 1, 0)); 15729 assert_true (ai_move (ai, 0, 4)); 15730 assert_true (ai_move (ai, 0, 6)); 15731 assert_true (ai_move (ai, 4, 0)); 15732 assert_true (ai_move (ai, 5, 5)); 15733 assert_true (ai_move (ai, 7, 3)); 15734 assert_true (ai_move (ai, 6, 0)); 15735 assert_true (ai_move (ai, 7, 5)); 15736 assert_true (ai_move (ai, 7, 6)); 15737 assert_true (ai_move (ai, 5, 2)); 15738 assert_true (ai_move (ai, 6, 2)); 15739 assert_true (ai_move (ai, 0, 0)); 15740 assert_true (ai_move (ai, 0, 2)); 15741 assert_true (ai_move (ai, 0, 7)); 15742 assert_true (ai_move (ai, 5, 7)); 15743 assert_true (ai_move (ai, 3, 7)); 15744 assert_true (ai_move (ai, 1, 7)); 15745 assert_true (ai_move (ai, 7, 7)); 15746 assert_true (ai_move (ai, 5, 3)); 15747 assert_true (ai_move (ai, 7, 0)); 15748 assert_true (ai_move (ai, 5, 1)); 15749 assert_true (ai_move (ai, 7, 1)); 15750 assert_true (game.pass ()); 15751 assert_true (ai_move (ai, 6, 1)); 15752 assert_true (game.pass ()); 15753 assert_true (ai_move (ai, 1, 6)); 15754 } 15755 15756 private static inline void test_complete_reversi_game_193 () 15757 { 15758 /* 0 1 2 3 4 5 6 7 */ 15759 string [] board = {/* 0 */ " . . . . . . . .", 15760 /* 1 */ " . . . . . . . .", 15761 /* 2 */ " . . . . L . . .", 15762 /* 3 */ " . . D D D L . .", 15763 /* 4 */ " . . . D L . L .", 15764 /* 5 */ " . . . . . . . .", 15765 /* 6 */ " . . . . . . . .", 15766 /* 7 */ " . . . . . . . ."}; 15767 15768 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 15769 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 15770 15771 assert_true (ai_move (ai, 6, 3)); 15772 assert_true (ai_move (ai, 6, 2)); 15773 assert_true (ai_move (ai, 4, 1)); 15774 assert_true (ai_move (ai, 3, 1)); 15775 assert_true (ai_move (ai, 5, 1)); 15776 assert_true (ai_move (ai, 2, 2)); 15777 assert_true (ai_move (ai, 2, 1)); 15778 assert_true (ai_move (ai, 3, 5)); 15779 assert_true (ai_move (ai, 7, 5)); 15780 assert_true (ai_move (ai, 1, 3)); 15781 assert_true (ai_move (ai, 0, 4)); 15782 assert_true (ai_move (ai, 2, 0)); 15783 assert_true (ai_move (ai, 4, 5)); 15784 assert_true (ai_move (ai, 5, 6)); 15785 assert_true (ai_move (ai, 4, 6)); 15786 assert_true (ai_move (ai, 5, 7)); 15787 assert_true (ai_move (ai, 2, 6)); 15788 assert_true (ai_move (ai, 2, 4)); 15789 assert_true (ai_move (ai, 2, 5)); 15790 assert_true (ai_move (ai, 3, 6)); 15791 assert_true (ai_move (ai, 2, 7)); 15792 assert_true (ai_move (ai, 1, 5)); 15793 assert_true (ai_move (ai, 0, 5)); 15794 assert_true (ai_move (ai, 3, 7)); 15795 assert_true (ai_move (ai, 1, 4)); 15796 assert_true (ai_move (ai, 0, 2)); 15797 assert_true (ai_move (ai, 1, 2)); 15798 assert_true (ai_move (ai, 0, 3)); 15799 assert_true (ai_move (ai, 1, 6)); 15800 assert_true (ai_move (ai, 5, 4)); 15801 assert_true (ai_move (ai, 0, 1)); 15802 assert_true (ai_move (ai, 7, 4)); 15803 assert_true (ai_move (ai, 5, 5)); 15804 assert_true (ai_move (ai, 5, 2)); 15805 assert_true (ai_move (ai, 6, 5)); 15806 assert_true (ai_move (ai, 3, 2)); 15807 assert_true (ai_move (ai, 7, 2)); 15808 assert_true (ai_move (ai, 7, 3)); 15809 assert_true (ai_move (ai, 3, 0)); 15810 assert_true (ai_move (ai, 5, 0)); 15811 assert_true (ai_move (ai, 4, 0)); 15812 assert_true (ai_move (ai, 0, 7)); 15813 assert_true (ai_move (ai, 1, 7)); 15814 assert_true (ai_move (ai, 0, 6)); 15815 assert_true (ai_move (ai, 4, 7)); 15816 assert_true (ai_move (ai, 0, 0)); 15817 assert_true (ai_move (ai, 1, 0)); 15818 assert_true (ai_move (ai, 1, 1)); 15819 assert_true (ai_move (ai, 6, 1)); 15820 assert_true (ai_move (ai, 7, 0)); 15821 assert_true (ai_move (ai, 6, 0)); 15822 assert_true (ai_move (ai, 6, 6)); 15823 assert_true (ai_move (ai, 7, 6)); 15824 assert_true (ai_move (ai, 7, 1)); 15825 assert_true (ai_move (ai, 6, 7)); 15826 assert_true (ai_move (ai, 7, 7)); 15827 } 15828 15829 private static inline void test_complete_reversi_game_194 () 15830 { 15831 /* 0 1 2 3 4 5 6 7 */ 15832 string [] board = {/* 0 */ " . . . . . . . .", 15833 /* 1 */ " . . . . . . . .", 15834 /* 2 */ " . . . . L . L .", 15835 /* 3 */ " . . D D D L . .", 15836 /* 4 */ " . . . D L . . .", 15837 /* 5 */ " . . . . . . . .", 15838 /* 6 */ " . . . . . . . .", 15839 /* 7 */ " . . . . . . . ."}; 15840 15841 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 15842 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 15843 15844 assert_true (ai_move (ai, 6, 3)); 15845 assert_true (ai_move (ai, 6, 4)); 15846 assert_true (ai_move (ai, 4, 1)); 15847 assert_true (ai_move (ai, 3, 1)); 15848 assert_true (ai_move (ai, 5, 1)); 15849 assert_true (ai_move (ai, 2, 2)); 15850 assert_true (ai_move (ai, 2, 1)); 15851 assert_true (ai_move (ai, 3, 5)); 15852 assert_true (ai_move (ai, 7, 5)); 15853 assert_true (ai_move (ai, 1, 3)); 15854 assert_true (ai_move (ai, 0, 4)); 15855 assert_true (ai_move (ai, 2, 0)); 15856 assert_true (ai_move (ai, 4, 5)); 15857 assert_true (ai_move (ai, 5, 6)); 15858 assert_true (ai_move (ai, 4, 6)); 15859 assert_true (ai_move (ai, 5, 7)); 15860 assert_true (ai_move (ai, 2, 6)); 15861 assert_true (ai_move (ai, 2, 4)); 15862 assert_true (ai_move (ai, 2, 5)); 15863 assert_true (ai_move (ai, 3, 6)); 15864 assert_true (ai_move (ai, 2, 7)); 15865 assert_true (ai_move (ai, 1, 5)); 15866 assert_true (ai_move (ai, 0, 5)); 15867 assert_true (ai_move (ai, 3, 7)); 15868 assert_true (ai_move (ai, 1, 4)); 15869 assert_true (ai_move (ai, 0, 2)); 15870 assert_true (ai_move (ai, 1, 2)); 15871 assert_true (ai_move (ai, 0, 3)); 15872 assert_true (ai_move (ai, 1, 6)); 15873 assert_true (ai_move (ai, 5, 4)); 15874 assert_true (ai_move (ai, 0, 1)); 15875 assert_true (ai_move (ai, 7, 4)); 15876 assert_true (ai_move (ai, 5, 5)); 15877 assert_true (ai_move (ai, 5, 2)); 15878 assert_true (ai_move (ai, 6, 5)); 15879 assert_true (ai_move (ai, 3, 2)); 15880 assert_true (ai_move (ai, 7, 2)); 15881 assert_true (ai_move (ai, 7, 3)); 15882 assert_true (ai_move (ai, 3, 0)); 15883 assert_true (ai_move (ai, 5, 0)); 15884 assert_true (ai_move (ai, 4, 0)); 15885 assert_true (ai_move (ai, 0, 7)); 15886 assert_true (ai_move (ai, 1, 7)); 15887 assert_true (ai_move (ai, 0, 6)); 15888 assert_true (ai_move (ai, 4, 7)); 15889 assert_true (ai_move (ai, 0, 0)); 15890 assert_true (ai_move (ai, 1, 0)); 15891 assert_true (ai_move (ai, 1, 1)); 15892 assert_true (ai_move (ai, 6, 1)); 15893 assert_true (ai_move (ai, 7, 0)); 15894 assert_true (ai_move (ai, 6, 0)); 15895 assert_true (ai_move (ai, 6, 6)); 15896 assert_true (ai_move (ai, 7, 6)); 15897 assert_true (ai_move (ai, 7, 1)); 15898 assert_true (ai_move (ai, 6, 7)); 15899 assert_true (ai_move (ai, 7, 7)); 15900 } 15901 15902 private static inline void test_complete_reversi_game_195 () 15903 { 15904 /* 0 1 2 3 4 5 6 7 */ 15905 string [] board = {/* 0 */ " . . . . . . . .", 15906 /* 1 */ " . . . . . . . .", 15907 /* 2 */ " . . . . L . . .", 15908 /* 3 */ " . . D L D D . .", 15909 /* 4 */ " . . L L L . . .", 15910 /* 5 */ " . . . . . . . .", 15911 /* 6 */ " . . . . . . . .", 15912 /* 7 */ " . . . . . . . ."}; 15913 15914 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 15915 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 15916 15917 assert_true (ai_move (ai, 4, 1)); 15918 assert_true (ai_move (ai, 2, 2)); 15919 assert_true (ai_move (ai, 4, 5)); 15920 assert_true (ai_move (ai, 5, 6)); 15921 assert_true (ai_move (ai, 4, 6)); 15922 assert_true (ai_move (ai, 5, 1)); 15923 assert_true (ai_move (ai, 3, 1)); 15924 assert_true (ai_move (ai, 4, 0)); 15925 assert_true (ai_move (ai, 2, 0)); 15926 assert_true (ai_move (ai, 2, 1)); 15927 assert_true (ai_move (ai, 6, 0)); 15928 assert_true (ai_move (ai, 6, 2)); 15929 assert_true (ai_move (ai, 1, 2)); 15930 assert_true (ai_move (ai, 1, 3)); 15931 assert_true (ai_move (ai, 2, 5)); 15932 assert_true (ai_move (ai, 1, 5)); 15933 assert_true (ai_move (ai, 0, 5)); 15934 assert_true (ai_move (ai, 6, 4)); 15935 assert_true (ai_move (ai, 6, 3)); 15936 assert_true (ai_move (ai, 2, 6)); 15937 assert_true (ai_move (ai, 3, 5)); 15938 assert_true (ai_move (ai, 0, 4)); 15939 assert_true (ai_move (ai, 0, 2)); 15940 assert_true (ai_move (ai, 0, 3)); 15941 assert_true (ai_move (ai, 2, 7)); 15942 assert_true (ai_move (ai, 3, 7)); 15943 assert_true (ai_move (ai, 4, 7)); 15944 assert_true (ai_move (ai, 3, 6)); 15945 assert_true (ai_move (ai, 1, 4)); 15946 assert_true (ai_move (ai, 5, 2)); 15947 assert_true (ai_move (ai, 5, 7)); 15948 assert_true (ai_move (ai, 5, 5)); 15949 assert_true (ai_move (ai, 1, 7)); 15950 assert_true (ai_move (ai, 5, 4)); 15951 assert_true (ai_move (ai, 6, 7)); 15952 assert_true (ai_move (ai, 7, 3)); 15953 assert_true (ai_move (ai, 7, 2)); 15954 assert_true (ai_move (ai, 7, 4)); 15955 assert_true (ai_move (ai, 3, 2)); 15956 assert_true (ai_move (ai, 6, 1)); 15957 assert_true (ai_move (ai, 7, 5)); 15958 assert_true (ai_move (ai, 3, 0)); 15959 assert_true (ai_move (ai, 6, 5)); 15960 assert_true (ai_move (ai, 1, 0)); 15961 assert_true (ai_move (ai, 7, 1)); 15962 assert_true (ai_move (ai, 1, 6)); 15963 assert_true (ai_move (ai, 0, 6)); 15964 assert_true (ai_move (ai, 0, 7)); 15965 assert_true (ai_move (ai, 0, 1)); 15966 assert_true (ai_move (ai, 7, 7)); 15967 assert_true (ai_move (ai, 5, 0)); 15968 assert_true (ai_move (ai, 7, 0)); 15969 assert_true (ai_move (ai, 1, 1)); 15970 assert_true (ai_move (ai, 7, 6)); 15971 assert_true (ai_move (ai, 6, 6)); 15972 assert_true (ai_move (ai, 0, 0)); 15973 } 15974 15975 private static inline void test_complete_reversi_game_196 () 15976 { 15977 /* 0 1 2 3 4 5 6 7 */ 15978 string [] board = {/* 0 */ " . . . . . . . .", 15979 /* 1 */ " . . . . . . . .", 15980 /* 2 */ " . . L . L . . .", 15981 /* 3 */ " . . D L D D . .", 15982 /* 4 */ " . . . D L . . .", 15983 /* 5 */ " . . . . . . . .", 15984 /* 6 */ " . . . . . . . .", 15985 /* 7 */ " . . . . . . . ."}; 15986 15987 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 15988 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 15989 15990 assert_true (ai_move (ai, 2, 1)); 15991 assert_true (ai_move (ai, 6, 2)); 15992 assert_true (ai_move (ai, 6, 3)); 15993 assert_true (ai_move (ai, 1, 3)); 15994 assert_true (ai_move (ai, 2, 4)); 15995 assert_true (ai_move (ai, 3, 1)); 15996 assert_true (ai_move (ai, 3, 2)); 15997 assert_true (ai_move (ai, 2, 5)); 15998 assert_true (ai_move (ai, 5, 2)); 15999 assert_true (ai_move (ai, 2, 0)); 16000 assert_true (ai_move (ai, 1, 5)); 16001 assert_true (ai_move (ai, 0, 5)); 16002 assert_true (ai_move (ai, 2, 6)); 16003 assert_true (ai_move (ai, 3, 7)); 16004 assert_true (ai_move (ai, 1, 4)); 16005 assert_true (ai_move (ai, 5, 4)); 16006 assert_true (ai_move (ai, 4, 1)); 16007 assert_true (ai_move (ai, 7, 2)); 16008 assert_true (ai_move (ai, 7, 4)); 16009 assert_true (ai_move (ai, 7, 3)); 16010 assert_true (ai_move (ai, 2, 7)); 16011 assert_true (ai_move (ai, 7, 5)); 16012 assert_true (ai_move (ai, 4, 7)); 16013 assert_true (ai_move (ai, 3, 0)); 16014 assert_true (ai_move (ai, 0, 3)); 16015 assert_true (ai_move (ai, 5, 1)); 16016 assert_true (ai_move (ai, 3, 5)); 16017 assert_true (ai_move (ai, 4, 5)); 16018 assert_true (ai_move (ai, 3, 6)); 16019 assert_true (ai_move (ai, 0, 4)); 16020 assert_true (ai_move (ai, 0, 2)); 16021 assert_true (ai_move (ai, 0, 1)); 16022 assert_true (ai_move (ai, 1, 2)); 16023 assert_true (ai_move (ai, 4, 6)); 16024 assert_true (ai_move (ai, 6, 1)); 16025 assert_true (ai_move (ai, 1, 1)); 16026 assert_true (ai_move (ai, 4, 0)); 16027 assert_true (ai_move (ai, 5, 0)); 16028 assert_true (ai_move (ai, 7, 0)); 16029 assert_true (ai_move (ai, 7, 1)); 16030 assert_true (ai_move (ai, 7, 6)); 16031 assert_true (ai_move (ai, 1, 6)); 16032 assert_true (ai_move (ai, 6, 4)); 16033 assert_true (ai_move (ai, 6, 5)); 16034 assert_true (ai_move (ai, 5, 6)); 16035 assert_true (ai_move (ai, 6, 7)); 16036 assert_true (ai_move (ai, 0, 7)); 16037 assert_true (ai_move (ai, 6, 0)); 16038 assert_true (ai_move (ai, 0, 6)); 16039 assert_true (ai_move (ai, 1, 7)); 16040 assert_true (ai_move (ai, 5, 7)); 16041 assert_true (ai_move (ai, 6, 6)); 16042 assert_true (ai_move (ai, 1, 0)); 16043 assert_true (game.pass ()); 16044 assert_true (ai_move (ai, 0, 0)); 16045 assert_true (game.pass ()); 16046 assert_true (ai_move (ai, 5, 5)); 16047 assert_true (game.pass ()); 16048 assert_true (ai_move (ai, 7, 7)); 16049 } 16050 16051 private static inline void test_complete_reversi_game_197 () 16052 { 16053 /* 0 1 2 3 4 5 6 7 */ 16054 string [] board = {/* 0 */ " . . . . . . . .", 16055 /* 1 */ " . . . . . . . .", 16056 /* 2 */ " . . . . L L L .", 16057 /* 3 */ " . . D D D . . .", 16058 /* 4 */ " . . . D L . . .", 16059 /* 5 */ " . . . . . . . .", 16060 /* 6 */ " . . . . . . . .", 16061 /* 7 */ " . . . . . . . ."}; 16062 16063 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 16064 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 16065 16066 assert_true (ai_move (ai, 5, 5)); 16067 assert_true (ai_move (ai, 2, 4)); 16068 assert_true (ai_move (ai, 2, 5)); 16069 assert_true (ai_move (ai, 1, 5)); 16070 assert_true (ai_move (ai, 1, 4)); 16071 assert_true (ai_move (ai, 3, 5)); 16072 assert_true (ai_move (ai, 3, 6)); 16073 assert_true (ai_move (ai, 1, 2)); 16074 assert_true (ai_move (ai, 2, 6)); 16075 assert_true (ai_move (ai, 0, 5)); 16076 assert_true (ai_move (ai, 2, 2)); 16077 assert_true (ai_move (ai, 4, 7)); 16078 assert_true (ai_move (ai, 4, 5)); 16079 assert_true (ai_move (ai, 2, 1)); 16080 assert_true (ai_move (ai, 1, 3)); 16081 assert_true (ai_move (ai, 6, 5)); 16082 assert_true (ai_move (ai, 3, 1)); 16083 assert_true (ai_move (ai, 0, 2)); 16084 assert_true (ai_move (ai, 5, 3)); 16085 assert_true (ai_move (ai, 2, 7)); 16086 assert_true (ai_move (ai, 5, 1)); 16087 assert_true (ai_move (ai, 3, 2)); 16088 assert_true (ai_move (ai, 4, 1)); 16089 assert_true (ai_move (ai, 5, 0)); 16090 assert_true (ai_move (ai, 7, 2)); 16091 assert_true (ai_move (ai, 4, 0)); 16092 assert_true (ai_move (ai, 1, 6)); 16093 assert_true (ai_move (ai, 6, 3)); 16094 assert_true (ai_move (ai, 6, 1)); 16095 assert_true (ai_move (ai, 5, 4)); 16096 assert_true (ai_move (ai, 2, 0)); 16097 assert_true (ai_move (ai, 7, 0)); 16098 assert_true (ai_move (ai, 5, 6)); 16099 assert_true (ai_move (ai, 7, 1)); 16100 assert_true (ai_move (ai, 6, 4)); 16101 assert_true (ai_move (ai, 7, 3)); 16102 assert_true (ai_move (ai, 0, 6)); 16103 assert_true (ai_move (ai, 0, 4)); 16104 assert_true (ai_move (ai, 4, 6)); 16105 assert_true (ai_move (ai, 5, 7)); 16106 assert_true (ai_move (ai, 7, 5)); 16107 assert_true (ai_move (ai, 3, 7)); 16108 assert_true (ai_move (ai, 1, 7)); 16109 assert_true (ai_move (ai, 0, 7)); 16110 assert_true (ai_move (ai, 6, 0)); 16111 assert_true (ai_move (ai, 3, 0)); 16112 assert_true (ai_move (ai, 0, 3)); 16113 assert_true (ai_move (ai, 7, 4)); 16114 assert_true (ai_move (ai, 6, 7)); 16115 assert_true (ai_move (ai, 7, 6)); 16116 assert_true (ai_move (ai, 6, 6)); 16117 assert_true (ai_move (ai, 7, 7)); 16118 assert_true (ai_move (ai, 1, 0)); 16119 assert_true (ai_move (ai, 1, 1)); 16120 assert_true (ai_move (ai, 0, 1)); 16121 assert_true (ai_move (ai, 0, 0)); 16122 } 16123 16124 private static inline void test_complete_reversi_game_198 () 16125 { 16126 /* 0 1 2 3 4 5 6 7 */ 16127 string [] board = {/* 0 */ " . . . . . . . .", 16128 /* 1 */ " . . . . . . . .", 16129 /* 2 */ " . . . . L D . .", 16130 /* 3 */ " . . D L D . . .", 16131 /* 4 */ " . . L L L . . .", 16132 /* 5 */ " . . . . . . . .", 16133 /* 6 */ " . . . . . . . .", 16134 /* 7 */ " . . . . . . . ."}; 16135 16136 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 16137 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 16138 16139 assert_true (ai_move (ai, 4, 1)); 16140 assert_true (ai_move (ai, 2, 2)); 16141 assert_true (ai_move (ai, 2, 5)); 16142 assert_true (ai_move (ai, 2, 6)); 16143 assert_true (ai_move (ai, 1, 2)); 16144 assert_true (ai_move (ai, 1, 3)); 16145 assert_true (ai_move (ai, 3, 2)); 16146 assert_true (ai_move (ai, 2, 1)); 16147 assert_true (ai_move (ai, 0, 3)); 16148 assert_true (ai_move (ai, 6, 2)); 16149 assert_true (ai_move (ai, 3, 1)); 16150 assert_true (ai_move (ai, 5, 4)); 16151 assert_true (ai_move (ai, 7, 2)); 16152 assert_true (ai_move (ai, 0, 2)); 16153 assert_true (ai_move (ai, 0, 1)); 16154 assert_true (ai_move (ai, 4, 0)); 16155 assert_true (ai_move (ai, 1, 5)); 16156 assert_true (ai_move (ai, 6, 3)); 16157 assert_true (ai_move (ai, 3, 5)); 16158 assert_true (ai_move (ai, 4, 6)); 16159 assert_true (ai_move (ai, 1, 4)); 16160 assert_true (ai_move (ai, 0, 5)); 16161 assert_true (ai_move (ai, 2, 0)); 16162 assert_true (ai_move (ai, 0, 4)); 16163 assert_true (ai_move (ai, 0, 6)); 16164 assert_true (ai_move (ai, 1, 6)); 16165 assert_true (ai_move (ai, 3, 0)); 16166 assert_true (ai_move (ai, 1, 0)); 16167 assert_true (ai_move (ai, 3, 7)); 16168 assert_true (ai_move (ai, 2, 7)); 16169 assert_true (ai_move (ai, 5, 0)); 16170 assert_true (ai_move (ai, 6, 0)); 16171 assert_true (ai_move (ai, 7, 4)); 16172 assert_true (ai_move (ai, 4, 7)); 16173 assert_true (ai_move (ai, 5, 1)); 16174 assert_true (ai_move (ai, 5, 3)); 16175 assert_true (ai_move (ai, 5, 5)); 16176 assert_true (ai_move (ai, 6, 4)); 16177 assert_true (ai_move (ai, 6, 5)); 16178 assert_true (ai_move (ai, 7, 5)); 16179 assert_true (ai_move (ai, 4, 5)); 16180 assert_true (ai_move (ai, 3, 6)); 16181 assert_true (ai_move (ai, 5, 7)); 16182 assert_true (ai_move (ai, 5, 6)); 16183 assert_true (ai_move (ai, 0, 7)); 16184 assert_true (ai_move (ai, 1, 7)); 16185 assert_true (ai_move (ai, 7, 6)); 16186 assert_true (ai_move (ai, 7, 3)); 16187 assert_true (ai_move (ai, 6, 6)); 16188 assert_true (ai_move (ai, 7, 7)); 16189 assert_true (ai_move (ai, 6, 7)); 16190 assert_true (ai_move (ai, 7, 1)); 16191 assert_true (ai_move (ai, 6, 1)); 16192 assert_true (ai_move (ai, 1, 1)); 16193 assert_true (ai_move (ai, 0, 0)); 16194 assert_true (game.pass ()); 16195 assert_true (ai_move (ai, 7, 0)); 16196 } 16197 16198 private static inline void test_complete_reversi_game_199 () 16199 { 16200 /* 0 1 2 3 4 5 6 7 */ 16201 string [] board = {/* 0 */ " . . . . . . . .", 16202 /* 1 */ " . . . . . . . .", 16203 /* 2 */ " . . L . L D . .", 16204 /* 3 */ " . . D L D . . .", 16205 /* 4 */ " . . . D L . . .", 16206 /* 5 */ " . . . . . . . .", 16207 /* 6 */ " . . . . . . . .", 16208 /* 7 */ " . . . . . . . ."}; 16209 16210 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 16211 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 16212 16213 assert_true (ai_move (ai, 2, 1)); 16214 assert_true (ai_move (ai, 6, 2)); 16215 assert_true (ai_move (ai, 4, 5)); 16216 assert_true (ai_move (ai, 5, 3)); 16217 assert_true (ai_move (ai, 3, 2)); 16218 assert_true (ai_move (ai, 1, 2)); 16219 assert_true (ai_move (ai, 3, 1)); 16220 assert_true (ai_move (ai, 4, 0)); 16221 assert_true (ai_move (ai, 0, 2)); 16222 assert_true (ai_move (ai, 1, 3)); 16223 assert_true (ai_move (ai, 2, 4)); 16224 assert_true (ai_move (ai, 0, 4)); 16225 assert_true (ai_move (ai, 3, 0)); 16226 assert_true (ai_move (ai, 1, 5)); 16227 assert_true (ai_move (ai, 5, 0)); 16228 assert_true (ai_move (ai, 2, 5)); 16229 assert_true (ai_move (ai, 2, 6)); 16230 assert_true (ai_move (ai, 2, 7)); 16231 assert_true (ai_move (ai, 6, 4)); 16232 assert_true (ai_move (ai, 6, 3)); 16233 assert_true (ai_move (ai, 7, 2)); 16234 assert_true (ai_move (ai, 4, 1)); 16235 assert_true (ai_move (ai, 5, 1)); 16236 assert_true (ai_move (ai, 5, 6)); 16237 assert_true (ai_move (ai, 5, 4)); 16238 assert_true (ai_move (ai, 7, 5)); 16239 assert_true (ai_move (ai, 4, 6)); 16240 assert_true (ai_move (ai, 7, 3)); 16241 assert_true (ai_move (ai, 0, 3)); 16242 assert_true (ai_move (ai, 3, 5)); 16243 assert_true (ai_move (ai, 1, 4)); 16244 assert_true (ai_move (ai, 0, 1)); 16245 assert_true (ai_move (ai, 3, 6)); 16246 assert_true (ai_move (ai, 0, 5)); 16247 assert_true (ai_move (ai, 7, 4)); 16248 assert_true (ai_move (ai, 7, 1)); 16249 assert_true (ai_move (ai, 6, 1)); 16250 assert_true (ai_move (ai, 5, 7)); 16251 assert_true (ai_move (ai, 4, 7)); 16252 assert_true (ai_move (ai, 3, 7)); 16253 assert_true (ai_move (ai, 1, 6)); 16254 assert_true (ai_move (ai, 2, 0)); 16255 assert_true (ai_move (ai, 1, 0)); 16256 assert_true (ai_move (ai, 5, 5)); 16257 assert_true (ai_move (ai, 6, 5)); 16258 assert_true (ai_move (ai, 6, 6)); 16259 assert_true (ai_move (ai, 0, 6)); 16260 assert_true (ai_move (ai, 0, 7)); 16261 assert_true (ai_move (ai, 7, 7)); 16262 assert_true (ai_move (ai, 1, 7)); 16263 assert_true (ai_move (ai, 6, 7)); 16264 assert_true (ai_move (ai, 7, 0)); 16265 assert_true (ai_move (ai, 1, 1)); 16266 assert_true (ai_move (ai, 6, 0)); 16267 assert_true (game.pass ()); 16268 assert_true (ai_move (ai, 0, 0)); 16269 assert_true (game.pass ()); 16270 assert_true (ai_move (ai, 7, 6)); 16271 } 16272 16273 private static inline void test_complete_reversi_game_200 () 16274 { 16275 /* 0 1 2 3 4 5 6 7 */ 16276 string [] board = {/* 0 */ " . . . . . . . .", 16277 /* 1 */ " . . . . L D . .", 16278 /* 2 */ " . . . . L . . .", 16279 /* 3 */ " . . D D L . . .", 16280 /* 4 */ " . . . D L . . .", 16281 /* 5 */ " . . . . . . . .", 16282 /* 6 */ " . . . . . . . .", 16283 /* 7 */ " . . . . . . . ."}; 16284 16285 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 16286 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 16287 16288 assert_true (ai_move (ai, 5, 5)); 16289 assert_true (ai_move (ai, 2, 5)); 16290 assert_true (ai_move (ai, 4, 5)); 16291 assert_true (ai_move (ai, 2, 4)); 16292 assert_true (ai_move (ai, 2, 6)); 16293 assert_true (ai_move (ai, 1, 3)); 16294 assert_true (ai_move (ai, 1, 2)); 16295 assert_true (ai_move (ai, 1, 5)); 16296 assert_true (ai_move (ai, 1, 4)); 16297 assert_true (ai_move (ai, 3, 7)); 16298 assert_true (ai_move (ai, 2, 7)); 16299 assert_true (ai_move (ai, 1, 7)); 16300 assert_true (ai_move (ai, 2, 2)); 16301 assert_true (ai_move (ai, 3, 5)); 16302 assert_true (ai_move (ai, 4, 6)); 16303 assert_true (ai_move (ai, 2, 1)); 16304 assert_true (ai_move (ai, 0, 5)); 16305 assert_true (ai_move (ai, 5, 6)); 16306 assert_true (ai_move (ai, 3, 2)); 16307 assert_true (ai_move (ai, 6, 5)); 16308 assert_true (ai_move (ai, 6, 4)); 16309 assert_true (ai_move (ai, 4, 7)); 16310 assert_true (ai_move (ai, 5, 2)); 16311 assert_true (ai_move (ai, 0, 3)); 16312 assert_true (ai_move (ai, 0, 2)); 16313 assert_true (ai_move (ai, 0, 4)); 16314 assert_true (ai_move (ai, 7, 5)); 16315 assert_true (ai_move (ai, 3, 6)); 16316 assert_true (ai_move (ai, 2, 0)); 16317 assert_true (ai_move (ai, 3, 1)); 16318 assert_true (ai_move (ai, 1, 1)); 16319 assert_true (ai_move (ai, 6, 0)); 16320 assert_true (ai_move (ai, 5, 7)); 16321 assert_true (ai_move (ai, 6, 7)); 16322 assert_true (ai_move (ai, 3, 0)); 16323 assert_true (ai_move (ai, 5, 4)); 16324 assert_true (ai_move (ai, 5, 3)); 16325 assert_true (ai_move (ai, 6, 3)); 16326 assert_true (ai_move (ai, 5, 0)); 16327 assert_true (ai_move (ai, 6, 1)); 16328 assert_true (ai_move (ai, 6, 2)); 16329 assert_true (ai_move (ai, 7, 2)); 16330 assert_true (ai_move (ai, 7, 4)); 16331 assert_true (ai_move (ai, 7, 3)); 16332 assert_true (ai_move (ai, 6, 6)); 16333 assert_true (ai_move (ai, 4, 0)); 16334 assert_true (ai_move (ai, 7, 0)); 16335 assert_true (ai_move (ai, 7, 1)); 16336 assert_true (ai_move (ai, 1, 6)); 16337 assert_true (ai_move (ai, 0, 7)); 16338 assert_true (ai_move (ai, 0, 6)); 16339 assert_true (ai_move (ai, 7, 7)); 16340 assert_true (ai_move (ai, 7, 6)); 16341 assert_true (ai_move (ai, 0, 0)); 16342 assert_true (ai_move (ai, 1, 0)); 16343 assert_true (ai_move (ai, 0, 1)); 16344 } 16345 16346 private static inline void test_complete_reversi_game_201 () 16347 { 16348 /* 0 1 2 3 4 5 6 7 */ 16349 string [] board = {/* 0 */ " . . . . . . . .", 16350 /* 1 */ " . . . . . D . .", 16351 /* 2 */ " . . . . D . . .", 16352 /* 3 */ " . . D D L . . .", 16353 /* 4 */ " . . . L L . . .", 16354 /* 5 */ " . . L . . . . .", 16355 /* 6 */ " . . . . . . . .", 16356 /* 7 */ " . . . . . . . ."}; 16357 16358 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 16359 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 16360 16361 assert_true (ai_move (ai, 5, 5)); 16362 assert_true (ai_move (ai, 4, 1)); 16363 assert_true (ai_move (ai, 4, 5)); 16364 assert_true (ai_move (ai, 2, 4)); 16365 assert_true (ai_move (ai, 2, 6)); 16366 assert_true (ai_move (ai, 1, 3)); 16367 assert_true (ai_move (ai, 1, 2)); 16368 assert_true (ai_move (ai, 1, 5)); 16369 assert_true (ai_move (ai, 1, 4)); 16370 assert_true (ai_move (ai, 3, 7)); 16371 assert_true (ai_move (ai, 2, 7)); 16372 assert_true (ai_move (ai, 1, 7)); 16373 assert_true (ai_move (ai, 2, 2)); 16374 assert_true (ai_move (ai, 3, 5)); 16375 assert_true (ai_move (ai, 4, 6)); 16376 assert_true (ai_move (ai, 2, 1)); 16377 assert_true (ai_move (ai, 0, 5)); 16378 assert_true (ai_move (ai, 5, 6)); 16379 assert_true (ai_move (ai, 3, 2)); 16380 assert_true (ai_move (ai, 6, 5)); 16381 assert_true (ai_move (ai, 6, 4)); 16382 assert_true (ai_move (ai, 4, 7)); 16383 assert_true (ai_move (ai, 5, 2)); 16384 assert_true (ai_move (ai, 0, 3)); 16385 assert_true (ai_move (ai, 0, 2)); 16386 assert_true (ai_move (ai, 0, 4)); 16387 assert_true (ai_move (ai, 7, 5)); 16388 assert_true (ai_move (ai, 3, 6)); 16389 assert_true (ai_move (ai, 2, 0)); 16390 assert_true (ai_move (ai, 3, 1)); 16391 assert_true (ai_move (ai, 1, 1)); 16392 assert_true (ai_move (ai, 6, 0)); 16393 assert_true (ai_move (ai, 5, 7)); 16394 assert_true (ai_move (ai, 6, 7)); 16395 assert_true (ai_move (ai, 3, 0)); 16396 assert_true (ai_move (ai, 5, 4)); 16397 assert_true (ai_move (ai, 5, 3)); 16398 assert_true (ai_move (ai, 6, 3)); 16399 assert_true (ai_move (ai, 5, 0)); 16400 assert_true (ai_move (ai, 6, 1)); 16401 assert_true (ai_move (ai, 6, 2)); 16402 assert_true (ai_move (ai, 7, 2)); 16403 assert_true (ai_move (ai, 7, 4)); 16404 assert_true (ai_move (ai, 7, 3)); 16405 assert_true (ai_move (ai, 6, 6)); 16406 assert_true (ai_move (ai, 4, 0)); 16407 assert_true (ai_move (ai, 7, 0)); 16408 assert_true (ai_move (ai, 7, 1)); 16409 assert_true (ai_move (ai, 1, 6)); 16410 assert_true (ai_move (ai, 0, 7)); 16411 assert_true (ai_move (ai, 0, 6)); 16412 assert_true (ai_move (ai, 7, 7)); 16413 assert_true (ai_move (ai, 7, 6)); 16414 assert_true (ai_move (ai, 0, 0)); 16415 assert_true (ai_move (ai, 1, 0)); 16416 assert_true (ai_move (ai, 0, 1)); 16417 } 16418 16419 private static inline void test_complete_reversi_game_202 () 16420 { 16421 /* 0 1 2 3 4 5 6 7 */ 16422 string [] board = {/* 0 */ " . . . . . . . .", 16423 /* 1 */ " . . . . . D . .", 16424 /* 2 */ " . . . . D . . .", 16425 /* 3 */ " . . D D L . . .", 16426 /* 4 */ " . . L L L . . .", 16427 /* 5 */ " . . . . . . . .", 16428 /* 6 */ " . . . . . . . .", 16429 /* 7 */ " . . . . . . . ."}; 16430 16431 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 16432 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 16433 16434 assert_true (ai_move (ai, 2, 5)); 16435 assert_true (ai_move (ai, 4, 1)); 16436 assert_true (ai_move (ai, 4, 5)); 16437 assert_true (ai_move (ai, 4, 6)); 16438 assert_true (ai_move (ai, 5, 6)); 16439 assert_true (ai_move (ai, 2, 2)); 16440 assert_true (ai_move (ai, 2, 1)); 16441 assert_true (ai_move (ai, 1, 5)); 16442 assert_true (ai_move (ai, 1, 4)); 16443 assert_true (ai_move (ai, 3, 5)); 16444 assert_true (ai_move (ai, 0, 5)); 16445 assert_true (ai_move (ai, 3, 6)); 16446 assert_true (ai_move (ai, 5, 7)); 16447 assert_true (ai_move (ai, 2, 6)); 16448 assert_true (ai_move (ai, 3, 7)); 16449 assert_true (ai_move (ai, 4, 7)); 16450 assert_true (ai_move (ai, 3, 2)); 16451 assert_true (ai_move (ai, 1, 3)); 16452 assert_true (ai_move (ai, 1, 2)); 16453 assert_true (ai_move (ai, 3, 1)); 16454 assert_true (ai_move (ai, 3, 0)); 16455 assert_true (ai_move (ai, 6, 5)); 16456 assert_true (ai_move (ai, 5, 0)); 16457 assert_true (ai_move (ai, 4, 0)); 16458 assert_true (ai_move (ai, 5, 5)); 16459 assert_true (ai_move (ai, 6, 2)); 16460 assert_true (ai_move (ai, 7, 5)); 16461 assert_true (ai_move (ai, 0, 2)); 16462 assert_true (ai_move (ai, 5, 4)); 16463 assert_true (ai_move (ai, 0, 4)); 16464 assert_true (ai_move (ai, 5, 2)); 16465 assert_true (ai_move (ai, 7, 4)); 16466 assert_true (ai_move (ai, 7, 2)); 16467 assert_true (ai_move (ai, 7, 3)); 16468 assert_true (ai_move (ai, 6, 1)); 16469 assert_true (ai_move (ai, 5, 3)); 16470 assert_true (ai_move (ai, 6, 4)); 16471 assert_true (ai_move (ai, 6, 3)); 16472 assert_true (ai_move (ai, 7, 1)); 16473 assert_true (ai_move (ai, 2, 7)); 16474 assert_true (ai_move (ai, 1, 7)); 16475 assert_true (ai_move (ai, 2, 0)); 16476 assert_true (ai_move (ai, 1, 0)); 16477 assert_true (ai_move (ai, 6, 6)); 16478 assert_true (ai_move (ai, 1, 6)); 16479 assert_true (ai_move (ai, 1, 1)); 16480 assert_true (ai_move (ai, 0, 3)); 16481 assert_true (ai_move (ai, 7, 0)); 16482 assert_true (ai_move (ai, 0, 1)); 16483 assert_true (ai_move (ai, 0, 0)); 16484 assert_true (ai_move (ai, 6, 0)); 16485 assert_true (ai_move (ai, 7, 6)); 16486 assert_true (ai_move (ai, 6, 7)); 16487 assert_true (ai_move (ai, 7, 7)); 16488 assert_true (game.pass ()); 16489 assert_true (ai_move (ai, 0, 7)); 16490 assert_true (ai_move (ai, 0, 6)); 16491 } 16492 16493 private static inline void test_complete_reversi_game_203 () 16494 { 16495 /* 0 1 2 3 4 5 6 7 */ 16496 string [] board = {/* 0 */ " . . . . . . . .", 16497 /* 1 */ " . . . . . D . .", 16498 /* 2 */ " . . L . D . . .", 16499 /* 3 */ " . . D L L . . .", 16500 /* 4 */ " . . . D L . . .", 16501 /* 5 */ " . . . . . . . .", 16502 /* 6 */ " . . . . . . . .", 16503 /* 7 */ " . . . . . . . ."}; 16504 16505 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 16506 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 16507 16508 assert_true (ai_move (ai, 2, 1)); 16509 assert_true (ai_move (ai, 4, 1)); 16510 assert_true (ai_move (ai, 2, 4)); 16511 assert_true (ai_move (ai, 2, 5)); 16512 assert_true (ai_move (ai, 2, 6)); 16513 assert_true (ai_move (ai, 1, 2)); 16514 assert_true (ai_move (ai, 1, 3)); 16515 assert_true (ai_move (ai, 3, 0)); 16516 assert_true (ai_move (ai, 0, 2)); 16517 assert_true (ai_move (ai, 1, 4)); 16518 assert_true (ai_move (ai, 0, 3)); 16519 assert_true (ai_move (ai, 2, 7)); 16520 assert_true (ai_move (ai, 3, 6)); 16521 assert_true (ai_move (ai, 4, 5)); 16522 assert_true (ai_move (ai, 1, 5)); 16523 assert_true (ai_move (ai, 3, 2)); 16524 assert_true (ai_move (ai, 5, 0)); 16525 assert_true (ai_move (ai, 3, 1)); 16526 assert_true (ai_move (ai, 4, 0)); 16527 assert_true (ai_move (ai, 5, 2)); 16528 assert_true (ai_move (ai, 2, 0)); 16529 assert_true (ai_move (ai, 0, 5)); 16530 assert_true (ai_move (ai, 6, 2)); 16531 assert_true (ai_move (ai, 3, 5)); 16532 assert_true (ai_move (ai, 5, 6)); 16533 assert_true (ai_move (ai, 6, 3)); 16534 assert_true (ai_move (ai, 4, 6)); 16535 assert_true (ai_move (ai, 5, 5)); 16536 assert_true (ai_move (ai, 3, 7)); 16537 assert_true (ai_move (ai, 5, 7)); 16538 assert_true (ai_move (ai, 6, 5)); 16539 assert_true (ai_move (ai, 7, 5)); 16540 assert_true (ai_move (ai, 1, 7)); 16541 assert_true (ai_move (ai, 7, 2)); 16542 assert_true (ai_move (ai, 6, 4)); 16543 assert_true (ai_move (ai, 5, 4)); 16544 assert_true (ai_move (ai, 7, 4)); 16545 assert_true (ai_move (ai, 7, 3)); 16546 assert_true (ai_move (ai, 5, 3)); 16547 assert_true (ai_move (ai, 6, 1)); 16548 assert_true (ai_move (ai, 7, 6)); 16549 assert_true (ai_move (ai, 7, 7)); 16550 assert_true (ai_move (ai, 7, 0)); 16551 assert_true (ai_move (ai, 6, 6)); 16552 assert_true (ai_move (ai, 7, 1)); 16553 assert_true (ai_move (ai, 6, 0)); 16554 assert_true (ai_move (ai, 0, 4)); 16555 assert_true (ai_move (ai, 0, 1)); 16556 assert_true (ai_move (ai, 1, 6)); 16557 assert_true (ai_move (ai, 0, 7)); 16558 assert_true (ai_move (ai, 0, 6)); 16559 assert_true (ai_move (ai, 4, 7)); 16560 assert_true (ai_move (ai, 0, 0)); 16561 assert_true (ai_move (ai, 1, 0)); 16562 assert_true (ai_move (ai, 1, 1)); 16563 assert_true (game.pass ()); 16564 assert_true (ai_move (ai, 6, 7)); 16565 } 16566 16567 private static inline void test_complete_reversi_game_204 () 16568 { 16569 /* 0 1 2 3 4 5 6 7 */ 16570 string [] board = {/* 0 */ " . . . . . . . .", 16571 /* 1 */ " . . . . . D . .", 16572 /* 2 */ " . . . . D . . .", 16573 /* 3 */ " . L L L L . . .", 16574 /* 4 */ " . . . D L . . .", 16575 /* 5 */ " . . . . . . . .", 16576 /* 6 */ " . . . . . . . .", 16577 /* 7 */ " . . . . . . . ."}; 16578 16579 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 16580 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 16581 16582 assert_true (ai_move (ai, 1, 2)); 16583 assert_true (ai_move (ai, 4, 1)); 16584 assert_true (ai_move (ai, 0, 3)); 16585 assert_true (ai_move (ai, 2, 5)); 16586 assert_true (ai_move (ai, 4, 5)); 16587 assert_true (ai_move (ai, 4, 6)); 16588 assert_true (ai_move (ai, 5, 6)); 16589 assert_true (ai_move (ai, 3, 5)); 16590 assert_true (ai_move (ai, 1, 5)); 16591 assert_true (ai_move (ai, 2, 4)); 16592 assert_true (ai_move (ai, 5, 7)); 16593 assert_true (ai_move (ai, 1, 4)); 16594 assert_true (ai_move (ai, 0, 5)); 16595 assert_true (ai_move (ai, 0, 4)); 16596 assert_true (ai_move (ai, 3, 1)); 16597 assert_true (ai_move (ai, 4, 0)); 16598 assert_true (ai_move (ai, 3, 2)); 16599 assert_true (ai_move (ai, 6, 2)); 16600 assert_true (ai_move (ai, 5, 0)); 16601 assert_true (ai_move (ai, 6, 0)); 16602 assert_true (ai_move (ai, 5, 5)); 16603 assert_true (ai_move (ai, 3, 6)); 16604 assert_true (ai_move (ai, 2, 6)); 16605 assert_true (ai_move (ai, 5, 4)); 16606 assert_true (ai_move (ai, 6, 3)); 16607 assert_true (ai_move (ai, 6, 5)); 16608 assert_true (ai_move (ai, 7, 4)); 16609 assert_true (ai_move (ai, 7, 2)); 16610 assert_true (ai_move (ai, 5, 3)); 16611 assert_true (ai_move (ai, 5, 2)); 16612 assert_true (ai_move (ai, 7, 3)); 16613 assert_true (ai_move (ai, 7, 5)); 16614 assert_true (ai_move (ai, 6, 1)); 16615 assert_true (ai_move (ai, 3, 0)); 16616 assert_true (ai_move (ai, 6, 4)); 16617 assert_true (ai_move (ai, 2, 0)); 16618 assert_true (ai_move (ai, 2, 1)); 16619 assert_true (ai_move (ai, 2, 7)); 16620 assert_true (ai_move (ai, 4, 7)); 16621 assert_true (ai_move (ai, 7, 1)); 16622 assert_true (ai_move (ai, 3, 7)); 16623 assert_true (ai_move (ai, 6, 7)); 16624 assert_true (ai_move (ai, 6, 6)); 16625 assert_true (ai_move (ai, 1, 7)); 16626 assert_true (ai_move (ai, 1, 6)); 16627 assert_true (ai_move (ai, 1, 0)); 16628 assert_true (ai_move (ai, 1, 1)); 16629 assert_true (ai_move (ai, 7, 6)); 16630 assert_true (game.pass ()); 16631 assert_true (ai_move (ai, 7, 0)); 16632 assert_true (game.pass ()); 16633 assert_true (ai_move (ai, 7, 7)); 16634 assert_true (game.pass ()); 16635 assert_true (ai_move (ai, 0, 7)); 16636 assert_true (ai_move (ai, 0, 6)); 16637 assert_true (ai_move (ai, 0, 2)); 16638 assert_true (ai_move (ai, 0, 1)); 16639 assert_true (ai_move (ai, 0, 0)); 16640 assert_true (game.pass ()); 16641 assert_true (ai_move (ai, 2, 2)); 16642 } 16643 16644 private static inline void test_complete_reversi_game_205 () 16645 { 16646 /* 0 1 2 3 4 5 6 7 */ 16647 string [] board = {/* 0 */ " . . . . . . . .", 16648 /* 1 */ " . . . . . . . .", 16649 /* 2 */ " . . . . . . . .", 16650 /* 3 */ " . . D D D . . .", 16651 /* 4 */ " . . L L L L . .", 16652 /* 5 */ " . . . . . D . .", 16653 /* 6 */ " . . . . . . . .", 16654 /* 7 */ " . . . . . . . ."}; 16655 16656 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 16657 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 16658 16659 assert_true (ai_move (ai, 5, 3)); 16660 assert_true (ai_move (ai, 1, 2)); 16661 assert_true (ai_move (ai, 1, 3)); 16662 assert_true (ai_move (ai, 6, 4)); 16663 assert_true (ai_move (ai, 6, 5)); 16664 assert_true (ai_move (ai, 4, 6)); 16665 assert_true (ai_move (ai, 5, 6)); 16666 assert_true (ai_move (ai, 0, 2)); 16667 assert_true (ai_move (ai, 7, 3)); 16668 assert_true (ai_move (ai, 2, 2)); 16669 assert_true (ai_move (ai, 4, 5)); 16670 assert_true (ai_move (ai, 5, 2)); 16671 assert_true (ai_move (ai, 5, 1)); 16672 assert_true (ai_move (ai, 6, 3)); 16673 assert_true (ai_move (ai, 6, 2)); 16674 assert_true (ai_move (ai, 7, 6)); 16675 assert_true (ai_move (ai, 7, 4)); 16676 assert_true (ai_move (ai, 5, 7)); 16677 assert_true (ai_move (ai, 3, 7)); 16678 assert_true (ai_move (ai, 5, 0)); 16679 assert_true (ai_move (ai, 4, 1)); 16680 assert_true (ai_move (ai, 7, 2)); 16681 assert_true (ai_move (ai, 7, 1)); 16682 assert_true (ai_move (ai, 3, 0)); 16683 assert_true (ai_move (ai, 4, 7)); 16684 assert_true (ai_move (ai, 2, 7)); 16685 assert_true (ai_move (ai, 4, 2)); 16686 assert_true (ai_move (ai, 3, 2)); 16687 assert_true (ai_move (ai, 2, 1)); 16688 assert_true (ai_move (ai, 3, 6)); 16689 assert_true (ai_move (ai, 3, 5)); 16690 assert_true (ai_move (ai, 2, 0)); 16691 assert_true (ai_move (ai, 1, 1)); 16692 assert_true (ai_move (ai, 3, 1)); 16693 assert_true (ai_move (ai, 2, 5)); 16694 assert_true (ai_move (ai, 2, 6)); 16695 assert_true (ai_move (ai, 1, 5)); 16696 assert_true (ai_move (ai, 6, 7)); 16697 assert_true (ai_move (ai, 1, 0)); 16698 assert_true (ai_move (ai, 1, 4)); 16699 assert_true (ai_move (ai, 0, 5)); 16700 assert_true (ai_move (ai, 0, 3)); 16701 assert_true (ai_move (ai, 4, 0)); 16702 assert_true (ai_move (ai, 0, 0)); 16703 assert_true (ai_move (ai, 1, 6)); 16704 assert_true (ai_move (ai, 6, 0)); 16705 assert_true (ai_move (ai, 0, 4)); 16706 assert_true (ai_move (ai, 0, 6)); 16707 assert_true (ai_move (ai, 0, 7)); 16708 assert_true (ai_move (ai, 7, 5)); 16709 assert_true (ai_move (ai, 7, 7)); 16710 assert_true (ai_move (ai, 1, 7)); 16711 assert_true (ai_move (ai, 0, 1)); 16712 assert_true (ai_move (ai, 6, 1)); 16713 assert_true (ai_move (ai, 7, 0)); 16714 assert_true (game.pass ()); 16715 assert_true (ai_move (ai, 6, 6)); 16716 } 16717 16718 private static inline void test_complete_reversi_game_206 () 16719 { 16720 /* 0 1 2 3 4 5 6 7 */ 16721 string [] board = {/* 0 */ " . . . . . . . .", 16722 /* 1 */ " . . . . . . . .", 16723 /* 2 */ " . . . . . L . .", 16724 /* 3 */ " . . D D L . . .", 16725 /* 4 */ " . . L L D . . .", 16726 /* 5 */ " . . . . . D . .", 16727 /* 6 */ " . . . . . . . .", 16728 /* 7 */ " . . . . . . . ."}; 16729 16730 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 16731 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 16732 16733 assert_true (ai_move (ai, 2, 5)); 16734 assert_true (ai_move (ai, 1, 4)); 16735 assert_true (ai_move (ai, 1, 5)); 16736 assert_true (ai_move (ai, 3, 6)); 16737 assert_true (ai_move (ai, 2, 6)); 16738 assert_true (ai_move (ai, 1, 2)); 16739 assert_true (ai_move (ai, 2, 2)); 16740 assert_true (ai_move (ai, 4, 5)); 16741 assert_true (ai_move (ai, 0, 2)); 16742 assert_true (ai_move (ai, 6, 5)); 16743 assert_true (ai_move (ai, 0, 3)); 16744 assert_true (ai_move (ai, 3, 2)); 16745 assert_true (ai_move (ai, 4, 1)); 16746 assert_true (ai_move (ai, 3, 1)); 16747 assert_true (ai_move (ai, 6, 3)); 16748 assert_true (ai_move (ai, 1, 3)); 16749 assert_true (ai_move (ai, 2, 1)); 16750 assert_true (ai_move (ai, 3, 5)); 16751 assert_true (ai_move (ai, 4, 2)); 16752 assert_true (ai_move (ai, 0, 4)); 16753 assert_true (ai_move (ai, 0, 5)); 16754 assert_true (ai_move (ai, 2, 0)); 16755 assert_true (ai_move (ai, 5, 6)); 16756 assert_true (ai_move (ai, 5, 4)); 16757 assert_true (ai_move (ai, 3, 0)); 16758 assert_true (ai_move (ai, 2, 7)); 16759 assert_true (ai_move (ai, 7, 5)); 16760 assert_true (ai_move (ai, 5, 7)); 16761 assert_true (ai_move (ai, 6, 4)); 16762 assert_true (ai_move (ai, 6, 2)); 16763 assert_true (ai_move (ai, 7, 2)); 16764 assert_true (ai_move (ai, 4, 6)); 16765 assert_true (ai_move (ai, 5, 3)); 16766 assert_true (ai_move (ai, 5, 1)); 16767 assert_true (ai_move (ai, 4, 0)); 16768 assert_true (ai_move (ai, 5, 0)); 16769 assert_true (ai_move (ai, 3, 7)); 16770 assert_true (ai_move (ai, 4, 7)); 16771 assert_true (ai_move (ai, 6, 1)); 16772 assert_true (ai_move (ai, 1, 0)); 16773 assert_true (ai_move (ai, 6, 7)); 16774 assert_true (ai_move (ai, 7, 7)); 16775 assert_true (ai_move (ai, 1, 1)); 16776 assert_true (ai_move (ai, 1, 7)); 16777 assert_true (ai_move (ai, 1, 6)); 16778 assert_true (ai_move (ai, 6, 6)); 16779 assert_true (ai_move (ai, 7, 6)); 16780 assert_true (ai_move (ai, 7, 4)); 16781 assert_true (ai_move (ai, 7, 3)); 16782 assert_true (ai_move (ai, 0, 0)); 16783 assert_true (ai_move (ai, 0, 1)); 16784 assert_true (ai_move (ai, 7, 0)); 16785 assert_true (ai_move (ai, 7, 1)); 16786 assert_true (ai_move (ai, 6, 0)); 16787 assert_true (game.pass ()); 16788 assert_true (ai_move (ai, 0, 6)); 16789 assert_true (ai_move (ai, 0, 7)); 16790 } 16791 16792 private static inline void test_complete_reversi_game_207 () 16793 { 16794 /* 0 1 2 3 4 5 6 7 */ 16795 string [] board = {/* 0 */ " . . . . . . . .", 16796 /* 1 */ " . . . . . . . .", 16797 /* 2 */ " . . . . L . . .", 16798 /* 3 */ " . . D L D . . .", 16799 /* 4 */ " . . L L D . . .", 16800 /* 5 */ " . . . . . D . .", 16801 /* 6 */ " . . . . . . . .", 16802 /* 7 */ " . . . . . . . ."}; 16803 16804 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 16805 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 16806 16807 assert_true (ai_move (ai, 2, 2)); 16808 assert_true (ai_move (ai, 2, 1)); 16809 assert_true (ai_move (ai, 5, 1)); 16810 assert_true (ai_move (ai, 3, 2)); 16811 assert_true (ai_move (ai, 1, 2)); 16812 assert_true (ai_move (ai, 4, 1)); 16813 assert_true (ai_move (ai, 2, 0)); 16814 assert_true (ai_move (ai, 0, 2)); 16815 assert_true (ai_move (ai, 4, 0)); 16816 assert_true (ai_move (ai, 3, 0)); 16817 assert_true (ai_move (ai, 1, 3)); 16818 assert_true (ai_move (ai, 1, 4)); 16819 assert_true (ai_move (ai, 3, 1)); 16820 assert_true (ai_move (ai, 5, 0)); 16821 assert_true (ai_move (ai, 6, 0)); 16822 assert_true (ai_move (ai, 5, 2)); 16823 assert_true (ai_move (ai, 0, 5)); 16824 assert_true (ai_move (ai, 0, 4)); 16825 assert_true (ai_move (ai, 1, 0)); 16826 assert_true (ai_move (ai, 5, 4)); 16827 assert_true (ai_move (ai, 6, 3)); 16828 assert_true (ai_move (ai, 6, 2)); 16829 assert_true (ai_move (ai, 5, 3)); 16830 assert_true (ai_move (ai, 7, 3)); 16831 assert_true (ai_move (ai, 6, 4)); 16832 assert_true (ai_move (ai, 4, 5)); 16833 assert_true (ai_move (ai, 6, 5)); 16834 assert_true (ai_move (ai, 7, 4)); 16835 assert_true (ai_move (ai, 7, 5)); 16836 assert_true (ai_move (ai, 4, 6)); 16837 assert_true (ai_move (ai, 5, 6)); 16838 assert_true (ai_move (ai, 7, 6)); 16839 assert_true (ai_move (ai, 2, 5)); 16840 assert_true (ai_move (ai, 3, 6)); 16841 assert_true (ai_move (ai, 3, 5)); 16842 assert_true (ai_move (ai, 1, 5)); 16843 assert_true (ai_move (ai, 2, 7)); 16844 assert_true (ai_move (ai, 2, 6)); 16845 assert_true (ai_move (ai, 3, 7)); 16846 assert_true (ai_move (ai, 5, 7)); 16847 assert_true (ai_move (ai, 6, 6)); 16848 assert_true (ai_move (ai, 0, 6)); 16849 assert_true (ai_move (ai, 1, 7)); 16850 assert_true (ai_move (ai, 6, 1)); 16851 assert_true (ai_move (ai, 0, 3)); 16852 assert_true (ai_move (ai, 4, 7)); 16853 assert_true (ai_move (ai, 6, 7)); 16854 assert_true (ai_move (ai, 7, 7)); 16855 assert_true (ai_move (ai, 0, 7)); 16856 assert_true (ai_move (ai, 1, 1)); 16857 assert_true (ai_move (ai, 7, 0)); 16858 assert_true (ai_move (ai, 7, 1)); 16859 assert_true (ai_move (ai, 7, 2)); 16860 assert_true (ai_move (ai, 1, 6)); 16861 assert_true (ai_move (ai, 0, 1)); 16862 assert_true (ai_move (ai, 0, 0)); 16863 } 16864 16865 private static inline void test_complete_reversi_game_208 () 16866 { 16867 /* 0 1 2 3 4 5 6 7 */ 16868 string [] board = {/* 0 */ " . . . . . . . .", 16869 /* 1 */ " . . . . . . . .", 16870 /* 2 */ " . . . L . . . .", 16871 /* 3 */ " . . D L D . . .", 16872 /* 4 */ " . . L L D . . .", 16873 /* 5 */ " . . . . . D . .", 16874 /* 6 */ " . . . . . . . .", 16875 /* 7 */ " . . . . . . . ."}; 16876 16877 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 16878 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 16879 16880 assert_true (ai_move (ai, 2, 1)); 16881 assert_true (ai_move (ai, 1, 3)); 16882 assert_true (ai_move (ai, 2, 2)); 16883 assert_true (ai_move (ai, 3, 1)); 16884 assert_true (ai_move (ai, 4, 1)); 16885 assert_true (ai_move (ai, 4, 0)); 16886 assert_true (ai_move (ai, 2, 5)); 16887 assert_true (ai_move (ai, 1, 2)); 16888 assert_true (ai_move (ai, 1, 1)); 16889 assert_true (ai_move (ai, 3, 5)); 16890 assert_true (ai_move (ai, 4, 2)); 16891 assert_true (ai_move (ai, 1, 5)); 16892 assert_true (ai_move (ai, 2, 6)); 16893 assert_true (ai_move (ai, 3, 0)); 16894 assert_true (ai_move (ai, 1, 0)); 16895 assert_true (ai_move (ai, 3, 6)); 16896 assert_true (ai_move (ai, 0, 5)); 16897 assert_true (ai_move (ai, 1, 4)); 16898 assert_true (ai_move (ai, 2, 0)); 16899 assert_true (ai_move (ai, 5, 0)); 16900 assert_true (ai_move (ai, 6, 0)); 16901 assert_true (ai_move (ai, 0, 0)); 16902 assert_true (ai_move (ai, 0, 2)); 16903 assert_true (ai_move (ai, 7, 0)); 16904 assert_true (ai_move (ai, 4, 5)); 16905 assert_true (ai_move (ai, 0, 1)); 16906 assert_true (ai_move (ai, 4, 6)); 16907 assert_true (ai_move (ai, 5, 1)); 16908 assert_true (ai_move (ai, 5, 2)); 16909 assert_true (ai_move (ai, 5, 7)); 16910 assert_true (ai_move (ai, 3, 7)); 16911 assert_true (ai_move (ai, 6, 3)); 16912 assert_true (ai_move (ai, 6, 2)); 16913 assert_true (ai_move (ai, 6, 1)); 16914 assert_true (ai_move (ai, 7, 2)); 16915 assert_true (ai_move (ai, 5, 6)); 16916 assert_true (ai_move (ai, 5, 4)); 16917 assert_true (ai_move (ai, 0, 3)); 16918 assert_true (ai_move (ai, 0, 4)); 16919 assert_true (ai_move (ai, 0, 6)); 16920 assert_true (ai_move (ai, 1, 6)); 16921 assert_true (ai_move (ai, 7, 4)); 16922 assert_true (ai_move (ai, 6, 4)); 16923 assert_true (ai_move (ai, 5, 3)); 16924 assert_true (ai_move (ai, 6, 5)); 16925 assert_true (ai_move (ai, 4, 7)); 16926 assert_true (ai_move (ai, 2, 7)); 16927 assert_true (ai_move (ai, 7, 1)); 16928 assert_true (ai_move (ai, 6, 7)); 16929 assert_true (ai_move (ai, 7, 3)); 16930 assert_true (ai_move (ai, 6, 6)); 16931 assert_true (ai_move (ai, 7, 5)); 16932 assert_true (ai_move (ai, 7, 6)); 16933 assert_true (ai_move (ai, 0, 7)); 16934 assert_true (ai_move (ai, 1, 7)); 16935 assert_true (ai_move (ai, 7, 7)); 16936 } 16937 16938 private static inline void test_complete_reversi_game_209 () 16939 { 16940 /* 0 1 2 3 4 5 6 7 */ 16941 string [] board = {/* 0 */ " . . . . . . . .", 16942 /* 1 */ " . . . . . . . .", 16943 /* 2 */ " . . L . . . . .", 16944 /* 3 */ " . . L D D . . .", 16945 /* 4 */ " . . L L D . . .", 16946 /* 5 */ " . . . . . D . .", 16947 /* 6 */ " . . . . . . . .", 16948 /* 7 */ " . . . . . . . ."}; 16949 16950 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 16951 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 16952 16953 assert_true (ai_move (ai, 1, 3)); 16954 assert_true (ai_move (ai, 1, 2)); 16955 assert_true (ai_move (ai, 3, 1)); 16956 assert_true (ai_move (ai, 2, 1)); 16957 assert_true (ai_move (ai, 1, 5)); 16958 assert_true (ai_move (ai, 2, 5)); 16959 assert_true (ai_move (ai, 1, 4)); 16960 assert_true (ai_move (ai, 0, 5)); 16961 assert_true (ai_move (ai, 2, 6)); 16962 assert_true (ai_move (ai, 3, 6)); 16963 assert_true (ai_move (ai, 0, 4)); 16964 assert_true (ai_move (ai, 2, 7)); 16965 assert_true (ai_move (ai, 3, 5)); 16966 assert_true (ai_move (ai, 0, 3)); 16967 assert_true (ai_move (ai, 2, 0)); 16968 assert_true (ai_move (ai, 4, 0)); 16969 assert_true (ai_move (ai, 1, 6)); 16970 assert_true (ai_move (ai, 4, 5)); 16971 assert_true (ai_move (ai, 0, 6)); 16972 assert_true (ai_move (ai, 0, 7)); 16973 assert_true (ai_move (ai, 4, 6)); 16974 assert_true (ai_move (ai, 5, 7)); 16975 assert_true (ai_move (ai, 4, 2)); 16976 assert_true (ai_move (ai, 6, 4)); 16977 assert_true (ai_move (ai, 6, 5)); 16978 assert_true (ai_move (ai, 5, 6)); 16979 assert_true (ai_move (ai, 7, 3)); 16980 assert_true (ai_move (ai, 5, 4)); 16981 assert_true (ai_move (ai, 1, 7)); 16982 assert_true (ai_move (ai, 7, 5)); 16983 assert_true (ai_move (ai, 5, 3)); 16984 assert_true (ai_move (ai, 3, 0)); 16985 assert_true (ai_move (ai, 5, 0)); 16986 assert_true (ai_move (ai, 7, 4)); 16987 assert_true (ai_move (ai, 0, 2)); 16988 assert_true (ai_move (ai, 0, 1)); 16989 assert_true (ai_move (ai, 4, 7)); 16990 assert_true (ai_move (ai, 3, 7)); 16991 assert_true (ai_move (ai, 6, 3)); 16992 assert_true (ai_move (ai, 7, 2)); 16993 assert_true (ai_move (ai, 6, 6)); 16994 assert_true (ai_move (ai, 5, 1)); 16995 assert_true (ai_move (ai, 4, 1)); 16996 assert_true (ai_move (ai, 7, 7)); 16997 assert_true (ai_move (ai, 6, 7)); 16998 assert_true (ai_move (ai, 5, 2)); 16999 assert_true (ai_move (ai, 3, 2)); 17000 assert_true (game.pass ()); 17001 assert_true (ai_move (ai, 6, 0)); 17002 assert_true (ai_move (ai, 6, 1)); 17003 assert_true (ai_move (ai, 1, 0)); 17004 assert_true (ai_move (ai, 1, 1)); 17005 assert_true (ai_move (ai, 0, 0)); 17006 assert_true (game.pass ()); 17007 assert_true (ai_move (ai, 7, 6)); 17008 assert_true (game.pass ()); 17009 assert_true (ai_move (ai, 7, 0)); 17010 assert_true (ai_move (ai, 6, 2)); 17011 assert_true (ai_move (ai, 7, 1)); 17012 } 17013 17014 private static inline void test_complete_reversi_game_210 () 17015 { 17016 /* 0 1 2 3 4 5 6 7 */ 17017 string [] board = {/* 0 */ " . . . . . . . .", 17018 /* 1 */ " . . . . . . . .", 17019 /* 2 */ " . L . . . . . .", 17020 /* 3 */ " . . L D D . . .", 17021 /* 4 */ " . . L L D . . .", 17022 /* 5 */ " . . . . . D . .", 17023 /* 6 */ " . . . . . . . .", 17024 /* 7 */ " . . . . . . . ."}; 17025 17026 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 17027 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 17028 17029 assert_true (ai_move (ai, 3, 5)); 17030 assert_true (ai_move (ai, 4, 6)); 17031 assert_true (ai_move (ai, 2, 6)); 17032 assert_true (ai_move (ai, 6, 4)); 17033 assert_true (ai_move (ai, 1, 3)); 17034 assert_true (ai_move (ai, 1, 4)); 17035 assert_true (ai_move (ai, 0, 5)); 17036 assert_true (ai_move (ai, 1, 5)); 17037 assert_true (ai_move (ai, 2, 5)); 17038 assert_true (ai_move (ai, 3, 6)); 17039 assert_true (ai_move (ai, 0, 4)); 17040 assert_true (ai_move (ai, 0, 3)); 17041 assert_true (ai_move (ai, 0, 2)); 17042 assert_true (ai_move (ai, 2, 7)); 17043 assert_true (ai_move (ai, 4, 7)); 17044 assert_true (ai_move (ai, 5, 3)); 17045 assert_true (ai_move (ai, 2, 2)); 17046 assert_true (ai_move (ai, 2, 1)); 17047 assert_true (ai_move (ai, 3, 2)); 17048 assert_true (ai_move (ai, 3, 7)); 17049 assert_true (ai_move (ai, 1, 7)); 17050 assert_true (ai_move (ai, 5, 4)); 17051 assert_true (ai_move (ai, 4, 2)); 17052 assert_true (ai_move (ai, 4, 1)); 17053 assert_true (ai_move (ai, 5, 1)); 17054 assert_true (ai_move (ai, 1, 1)); 17055 assert_true (ai_move (ai, 3, 1)); 17056 assert_true (ai_move (ai, 3, 0)); 17057 assert_true (ai_move (ai, 5, 7)); 17058 assert_true (ai_move (ai, 4, 5)); 17059 assert_true (ai_move (ai, 6, 5)); 17060 assert_true (ai_move (ai, 5, 2)); 17061 assert_true (ai_move (ai, 6, 2)); 17062 assert_true (ai_move (ai, 6, 3)); 17063 assert_true (ai_move (ai, 7, 5)); 17064 assert_true (ai_move (ai, 5, 0)); 17065 assert_true (ai_move (ai, 6, 1)); 17066 assert_true (ai_move (ai, 7, 3)); 17067 assert_true (ai_move (ai, 7, 4)); 17068 assert_true (ai_move (ai, 7, 6)); 17069 assert_true (ai_move (ai, 1, 6)); 17070 assert_true (ai_move (ai, 5, 6)); 17071 assert_true (ai_move (ai, 6, 7)); 17072 assert_true (ai_move (ai, 7, 2)); 17073 assert_true (ai_move (ai, 7, 0)); 17074 assert_true (ai_move (ai, 6, 0)); 17075 assert_true (ai_move (ai, 7, 1)); 17076 assert_true (ai_move (ai, 0, 7)); 17077 assert_true (ai_move (ai, 7, 7)); 17078 assert_true (ai_move (ai, 0, 6)); 17079 assert_true (ai_move (ai, 6, 6)); 17080 assert_true (ai_move (ai, 0, 1)); 17081 assert_true (ai_move (ai, 4, 0)); 17082 assert_true (game.pass ()); 17083 assert_true (ai_move (ai, 2, 0)); 17084 assert_true (ai_move (ai, 1, 0)); 17085 assert_true (ai_move (ai, 0, 0)); 17086 } 17087 17088 private static inline void test_complete_reversi_game_211 () 17089 { 17090 /* 0 1 2 3 4 5 6 7 */ 17091 string [] board = {/* 0 */ " . . . . . . . .", 17092 /* 1 */ " . . . . . . . .", 17093 /* 2 */ " . . . . . . . .", 17094 /* 3 */ " . . D D D . . .", 17095 /* 4 */ " . . L L L L . .", 17096 /* 5 */ " . . . . D . . .", 17097 /* 6 */ " . . . . . . . .", 17098 /* 7 */ " . . . . . . . ."}; 17099 17100 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 17101 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 17102 17103 assert_true (ai_move (ai, 1, 5)); 17104 assert_true (ai_move (ai, 5, 6)); 17105 assert_true (ai_move (ai, 6, 5)); 17106 assert_true (ai_move (ai, 6, 3)); 17107 assert_true (ai_move (ai, 4, 7)); 17108 assert_true (ai_move (ai, 1, 4)); 17109 assert_true (ai_move (ai, 0, 5)); 17110 assert_true (ai_move (ai, 1, 2)); 17111 assert_true (ai_move (ai, 3, 2)); 17112 assert_true (ai_move (ai, 2, 2)); 17113 assert_true (ai_move (ai, 0, 2)); 17114 assert_true (ai_move (ai, 4, 1)); 17115 assert_true (ai_move (ai, 2, 1)); 17116 assert_true (ai_move (ai, 3, 1)); 17117 assert_true (ai_move (ai, 4, 0)); 17118 assert_true (ai_move (ai, 2, 0)); 17119 assert_true (ai_move (ai, 1, 3)); 17120 assert_true (ai_move (ai, 3, 0)); 17121 assert_true (ai_move (ai, 1, 0)); 17122 assert_true (ai_move (ai, 5, 2)); 17123 assert_true (ai_move (ai, 5, 0)); 17124 assert_true (ai_move (ai, 4, 2)); 17125 assert_true (ai_move (ai, 2, 5)); 17126 assert_true (ai_move (ai, 5, 1)); 17127 assert_true (ai_move (ai, 3, 5)); 17128 assert_true (ai_move (ai, 2, 6)); 17129 assert_true (ai_move (ai, 3, 6)); 17130 assert_true (ai_move (ai, 2, 7)); 17131 assert_true (ai_move (ai, 5, 3)); 17132 assert_true (ai_move (ai, 6, 2)); 17133 assert_true (ai_move (ai, 7, 2)); 17134 assert_true (ai_move (ai, 6, 7)); 17135 assert_true (ai_move (ai, 7, 4)); 17136 assert_true (ai_move (ai, 7, 3)); 17137 assert_true (ai_move (ai, 5, 5)); 17138 assert_true (ai_move (ai, 7, 5)); 17139 assert_true (ai_move (ai, 7, 6)); 17140 assert_true (ai_move (ai, 4, 6)); 17141 assert_true (ai_move (ai, 6, 4)); 17142 assert_true (ai_move (ai, 0, 3)); 17143 assert_true (ai_move (ai, 0, 4)); 17144 assert_true (ai_move (ai, 6, 6)); 17145 assert_true (ai_move (ai, 7, 7)); 17146 assert_true (ai_move (ai, 7, 1)); 17147 assert_true (ai_move (ai, 5, 7)); 17148 assert_true (ai_move (ai, 6, 1)); 17149 assert_true (ai_move (ai, 3, 7)); 17150 assert_true (ai_move (ai, 1, 1)); 17151 assert_true (ai_move (ai, 1, 7)); 17152 assert_true (ai_move (ai, 0, 1)); 17153 assert_true (ai_move (ai, 0, 0)); 17154 assert_true (ai_move (ai, 1, 6)); 17155 assert_true (ai_move (ai, 0, 7)); 17156 assert_true (game.pass ()); 17157 assert_true (ai_move (ai, 0, 6)); 17158 assert_true (game.pass ()); 17159 assert_true (ai_move (ai, 7, 0)); 17160 assert_true (ai_move (ai, 6, 0)); 17161 } 17162 17163 private static inline void test_complete_reversi_game_212 () 17164 { 17165 /* 0 1 2 3 4 5 6 7 */ 17166 string [] board = {/* 0 */ " . . . . . . . .", 17167 /* 1 */ " . . . . . . . .", 17168 /* 2 */ " . . . . L . . .", 17169 /* 3 */ " . . D L D . . .", 17170 /* 4 */ " . . L D D . . .", 17171 /* 5 */ " . . . . D . . .", 17172 /* 6 */ " . . . . . . . .", 17173 /* 7 */ " . . . . . . . ."}; 17174 17175 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 17176 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 17177 17178 assert_true (ai_move (ai, 2, 5)); 17179 assert_true (ai_move (ai, 1, 5)); 17180 assert_true (ai_move (ai, 1, 4)); 17181 assert_true (ai_move (ai, 3, 5)); 17182 assert_true (ai_move (ai, 3, 6)); 17183 assert_true (ai_move (ai, 1, 2)); 17184 assert_true (ai_move (ai, 4, 6)); 17185 assert_true (ai_move (ai, 2, 6)); 17186 assert_true (ai_move (ai, 0, 5)); 17187 assert_true (ai_move (ai, 3, 7)); 17188 assert_true (ai_move (ai, 4, 7)); 17189 assert_true (ai_move (ai, 5, 7)); 17190 assert_true (ai_move (ai, 5, 6)); 17191 assert_true (ai_move (ai, 6, 5)); 17192 assert_true (ai_move (ai, 4, 1)); 17193 assert_true (ai_move (ai, 5, 1)); 17194 assert_true (ai_move (ai, 2, 7)); 17195 assert_true (ai_move (ai, 1, 7)); 17196 assert_true (ai_move (ai, 3, 2)); 17197 assert_true (ai_move (ai, 5, 5)); 17198 assert_true (ai_move (ai, 5, 2)); 17199 assert_true (ai_move (ai, 0, 3)); 17200 assert_true (ai_move (ai, 7, 5)); 17201 assert_true (ai_move (ai, 6, 4)); 17202 assert_true (ai_move (ai, 5, 0)); 17203 assert_true (ai_move (ai, 5, 4)); 17204 assert_true (ai_move (ai, 6, 3)); 17205 assert_true (ai_move (ai, 7, 3)); 17206 assert_true (ai_move (ai, 1, 3)); 17207 assert_true (ai_move (ai, 0, 2)); 17208 assert_true (ai_move (ai, 5, 3)); 17209 assert_true (ai_move (ai, 2, 2)); 17210 assert_true (ai_move (ai, 1, 6)); 17211 assert_true (ai_move (ai, 2, 1)); 17212 assert_true (ai_move (ai, 2, 0)); 17213 assert_true (ai_move (ai, 3, 1)); 17214 assert_true (ai_move (ai, 3, 0)); 17215 assert_true (ai_move (ai, 4, 0)); 17216 assert_true (ai_move (ai, 6, 6)); 17217 assert_true (ai_move (ai, 6, 7)); 17218 assert_true (ai_move (ai, 1, 1)); 17219 assert_true (ai_move (ai, 0, 4)); 17220 assert_true (ai_move (ai, 0, 1)); 17221 assert_true (ai_move (ai, 0, 7)); 17222 assert_true (ai_move (ai, 0, 6)); 17223 assert_true (ai_move (ai, 0, 0)); 17224 assert_true (ai_move (ai, 1, 0)); 17225 assert_true (ai_move (ai, 7, 7)); 17226 assert_true (ai_move (ai, 7, 6)); 17227 assert_true (ai_move (ai, 7, 4)); 17228 assert_true (ai_move (ai, 7, 2)); 17229 assert_true (ai_move (ai, 6, 2)); 17230 assert_true (ai_move (ai, 7, 1)); 17231 assert_true (ai_move (ai, 7, 0)); 17232 assert_true (ai_move (ai, 6, 1)); 17233 assert_true (ai_move (ai, 6, 0)); 17234 } 17235 17236 private static inline void test_complete_reversi_game_213 () 17237 { 17238 /* 0 1 2 3 4 5 6 7 */ 17239 string [] board = {/* 0 */ " . . . . . . . .", 17240 /* 1 */ " . . . . . . . .", 17241 /* 2 */ " . . L . . . . .", 17242 /* 3 */ " . . L D D . . .", 17243 /* 4 */ " . . L D D . . .", 17244 /* 5 */ " . . . . D . . .", 17245 /* 6 */ " . . . . . . . .", 17246 /* 7 */ " . . . . . . . ."}; 17247 17248 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 17249 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 17250 17251 assert_true (ai_move (ai, 1, 3)); 17252 assert_true (ai_move (ai, 0, 2)); 17253 assert_true (ai_move (ai, 2, 1)); 17254 assert_true (ai_move (ai, 3, 1)); 17255 assert_true (ai_move (ai, 2, 5)); 17256 assert_true (ai_move (ai, 2, 0)); 17257 assert_true (ai_move (ai, 0, 3)); 17258 assert_true (ai_move (ai, 0, 4)); 17259 assert_true (ai_move (ai, 1, 1)); 17260 assert_true (ai_move (ai, 2, 6)); 17261 assert_true (ai_move (ai, 1, 5)); 17262 assert_true (ai_move (ai, 0, 5)); 17263 assert_true (ai_move (ai, 1, 2)); 17264 assert_true (ai_move (ai, 3, 5)); 17265 assert_true (ai_move (ai, 3, 2)); 17266 assert_true (ai_move (ai, 4, 2)); 17267 assert_true (ai_move (ai, 2, 7)); 17268 assert_true (ai_move (ai, 1, 4)); 17269 assert_true (ai_move (ai, 0, 1)); 17270 assert_true (ai_move (ai, 0, 0)); 17271 assert_true (ai_move (ai, 5, 2)); 17272 assert_true (ai_move (ai, 6, 2)); 17273 assert_true (ai_move (ai, 3, 6)); 17274 assert_true (ai_move (ai, 4, 7)); 17275 assert_true (ai_move (ai, 3, 7)); 17276 assert_true (ai_move (ai, 5, 6)); 17277 assert_true (ai_move (ai, 5, 4)); 17278 assert_true (ai_move (ai, 1, 7)); 17279 assert_true (ai_move (ai, 6, 7)); 17280 assert_true (ai_move (ai, 5, 5)); 17281 assert_true (ai_move (ai, 4, 1)); 17282 assert_true (ai_move (ai, 5, 3)); 17283 assert_true (ai_move (ai, 5, 1)); 17284 assert_true (ai_move (ai, 6, 4)); 17285 assert_true (ai_move (ai, 3, 0)); 17286 assert_true (ai_move (ai, 4, 6)); 17287 assert_true (ai_move (ai, 6, 3)); 17288 assert_true (ai_move (ai, 7, 2)); 17289 assert_true (ai_move (ai, 6, 5)); 17290 assert_true (ai_move (ai, 5, 0)); 17291 assert_true (ai_move (ai, 4, 0)); 17292 assert_true (ai_move (ai, 7, 5)); 17293 assert_true (ai_move (ai, 6, 6)); 17294 assert_true (ai_move (ai, 1, 6)); 17295 assert_true (ai_move (ai, 1, 0)); 17296 assert_true (ai_move (ai, 7, 7)); 17297 assert_true (ai_move (ai, 5, 7)); 17298 assert_true (game.pass ()); 17299 assert_true (ai_move (ai, 0, 7)); 17300 assert_true (ai_move (ai, 0, 6)); 17301 assert_true (ai_move (ai, 7, 6)); 17302 assert_true (game.pass ()); 17303 assert_true (ai_move (ai, 7, 3)); 17304 assert_true (ai_move (ai, 7, 4)); 17305 assert_true (ai_move (ai, 6, 1)); 17306 assert_true (ai_move (ai, 7, 0)); 17307 assert_true (ai_move (ai, 7, 1)); 17308 assert_true (ai_move (ai, 6, 0)); 17309 } 17310 17311 private static inline void test_complete_reversi_game_214 () 17312 { 17313 /* 0 1 2 3 4 5 6 7 */ 17314 string [] board = {/* 0 */ " . . . . . . . .", 17315 /* 1 */ " . . . . . . . .", 17316 /* 2 */ " . . . . . . . .", 17317 /* 3 */ " . . D D D . . .", 17318 /* 4 */ " . . L D L . . .", 17319 /* 5 */ " . . . L . . . .", 17320 /* 6 */ " . . . . L . . .", 17321 /* 7 */ " . . . . . . . ."}; 17322 17323 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 17324 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 17325 17326 assert_true (ai_move (ai, 3, 6)); 17327 assert_true (ai_move (ai, 2, 2)); 17328 assert_true (ai_move (ai, 1, 2)); 17329 assert_true (ai_move (ai, 1, 3)); 17330 assert_true (ai_move (ai, 5, 7)); 17331 assert_true (ai_move (ai, 2, 6)); 17332 assert_true (ai_move (ai, 4, 5)); 17333 assert_true (ai_move (ai, 5, 5)); 17334 assert_true (ai_move (ai, 5, 6)); 17335 assert_true (ai_move (ai, 4, 7)); 17336 assert_true (ai_move (ai, 3, 7)); 17337 assert_true (ai_move (ai, 0, 2)); 17338 assert_true (ai_move (ai, 6, 4)); 17339 assert_true (ai_move (ai, 6, 5)); 17340 assert_true (ai_move (ai, 5, 4)); 17341 assert_true (ai_move (ai, 6, 3)); 17342 assert_true (ai_move (ai, 7, 2)); 17343 assert_true (ai_move (ai, 6, 2)); 17344 assert_true (ai_move (ai, 7, 5)); 17345 assert_true (ai_move (ai, 2, 7)); 17346 assert_true (ai_move (ai, 2, 5)); 17347 assert_true (ai_move (ai, 6, 7)); 17348 assert_true (ai_move (ai, 2, 1)); 17349 assert_true (ai_move (ai, 3, 1)); 17350 assert_true (ai_move (ai, 5, 3)); 17351 assert_true (ai_move (ai, 5, 2)); 17352 assert_true (ai_move (ai, 4, 1)); 17353 assert_true (ai_move (ai, 1, 4)); 17354 assert_true (ai_move (ai, 0, 5)); 17355 assert_true (ai_move (ai, 1, 5)); 17356 assert_true (ai_move (ai, 7, 4)); 17357 assert_true (ai_move (ai, 4, 2)); 17358 assert_true (ai_move (ai, 3, 2)); 17359 assert_true (ai_move (ai, 5, 0)); 17360 assert_true (ai_move (ai, 5, 1)); 17361 assert_true (ai_move (ai, 7, 3)); 17362 assert_true (ai_move (ai, 0, 4)); 17363 assert_true (ai_move (ai, 2, 0)); 17364 assert_true (ai_move (ai, 3, 0)); 17365 assert_true (ai_move (ai, 4, 0)); 17366 assert_true (ai_move (ai, 0, 6)); 17367 assert_true (ai_move (ai, 6, 1)); 17368 assert_true (ai_move (ai, 1, 6)); 17369 assert_true (ai_move (ai, 0, 7)); 17370 assert_true (ai_move (ai, 1, 7)); 17371 assert_true (ai_move (ai, 0, 3)); 17372 assert_true (ai_move (ai, 7, 7)); 17373 assert_true (ai_move (ai, 7, 6)); 17374 assert_true (ai_move (ai, 7, 0)); 17375 assert_true (ai_move (ai, 7, 1)); 17376 assert_true (ai_move (ai, 6, 6)); 17377 assert_true (game.pass ()); 17378 assert_true (ai_move (ai, 1, 1)); 17379 assert_true (ai_move (ai, 0, 1)); 17380 assert_true (ai_move (ai, 6, 0)); 17381 assert_true (game.pass ()); 17382 assert_true (ai_move (ai, 1, 0)); 17383 } 17384 17385 private static inline void test_complete_reversi_game_215 () 17386 { 17387 /* 0 1 2 3 4 5 6 7 */ 17388 string [] board = {/* 0 */ " . . . . . . . .", 17389 /* 1 */ " . . . . . . . .", 17390 /* 2 */ " . . . . L . . .", 17391 /* 3 */ " . . D L L . . .", 17392 /* 4 */ " . . L D L . . .", 17393 /* 5 */ " . . . D . . . .", 17394 /* 6 */ " . . . . . . . .", 17395 /* 7 */ " . . . . . . . ."}; 17396 17397 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 17398 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 17399 17400 assert_true (ai_move (ai, 2, 5)); 17401 assert_true (ai_move (ai, 1, 5)); 17402 assert_true (ai_move (ai, 1, 3)); 17403 assert_true (ai_move (ai, 4, 5)); 17404 assert_true (ai_move (ai, 2, 6)); 17405 assert_true (ai_move (ai, 3, 7)); 17406 assert_true (ai_move (ai, 2, 7)); 17407 assert_true (ai_move (ai, 1, 4)); 17408 assert_true (ai_move (ai, 4, 6)); 17409 assert_true (ai_move (ai, 3, 6)); 17410 assert_true (ai_move (ai, 4, 7)); 17411 assert_true (ai_move (ai, 2, 2)); 17412 assert_true (ai_move (ai, 2, 1)); 17413 assert_true (ai_move (ai, 3, 2)); 17414 assert_true (ai_move (ai, 3, 1)); 17415 assert_true (ai_move (ai, 1, 2)); 17416 assert_true (ai_move (ai, 0, 2)); 17417 assert_true (ai_move (ai, 0, 3)); 17418 assert_true (ai_move (ai, 5, 1)); 17419 assert_true (ai_move (ai, 5, 2)); 17420 assert_true (ai_move (ai, 6, 2)); 17421 assert_true (ai_move (ai, 4, 1)); 17422 assert_true (ai_move (ai, 0, 5)); 17423 assert_true (ai_move (ai, 6, 3)); 17424 assert_true (ai_move (ai, 0, 4)); 17425 assert_true (ai_move (ai, 5, 0)); 17426 assert_true (ai_move (ai, 5, 6)); 17427 assert_true (ai_move (ai, 7, 2)); 17428 assert_true (ai_move (ai, 5, 5)); 17429 assert_true (ai_move (ai, 3, 0)); 17430 assert_true (ai_move (ai, 5, 4)); 17431 assert_true (ai_move (ai, 2, 0)); 17432 assert_true (ai_move (ai, 4, 0)); 17433 assert_true (ai_move (ai, 6, 5)); 17434 assert_true (ai_move (ai, 5, 3)); 17435 assert_true (ai_move (ai, 6, 4)); 17436 assert_true (ai_move (ai, 7, 5)); 17437 assert_true (ai_move (ai, 5, 7)); 17438 assert_true (ai_move (ai, 6, 7)); 17439 assert_true (ai_move (ai, 1, 1)); 17440 assert_true (ai_move (ai, 7, 4)); 17441 assert_true (ai_move (ai, 1, 7)); 17442 assert_true (ai_move (ai, 0, 7)); 17443 assert_true (ai_move (ai, 0, 6)); 17444 assert_true (ai_move (ai, 7, 1)); 17445 assert_true (ai_move (ai, 0, 1)); 17446 assert_true (ai_move (ai, 7, 3)); 17447 assert_true (ai_move (ai, 7, 6)); 17448 assert_true (ai_move (ai, 7, 7)); 17449 assert_true (ai_move (ai, 6, 1)); 17450 assert_true (ai_move (ai, 1, 6)); 17451 assert_true (ai_move (ai, 6, 6)); 17452 assert_true (ai_move (ai, 0, 0)); 17453 assert_true (ai_move (ai, 1, 0)); 17454 assert_true (ai_move (ai, 6, 0)); 17455 assert_true (ai_move (ai, 7, 0)); 17456 } 17457 17458 private static inline void test_complete_reversi_game_216 () 17459 { 17460 /* 0 1 2 3 4 5 6 7 */ 17461 string [] board = {/* 0 */ " . . . . . . . .", 17462 /* 1 */ " . . . . . . . .", 17463 /* 2 */ " . . . . . . . .", 17464 /* 3 */ " . . D D D . . .", 17465 /* 4 */ " . . L D L . . .", 17466 /* 5 */ " . . . L . . . .", 17467 /* 6 */ " . . L . . . . .", 17468 /* 7 */ " . . . . . . . ."}; 17469 17470 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 17471 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 17472 17473 assert_true (ai_move (ai, 3, 6)); 17474 assert_true (ai_move (ai, 2, 2)); 17475 assert_true (ai_move (ai, 1, 2)); 17476 assert_true (ai_move (ai, 1, 3)); 17477 assert_true (ai_move (ai, 4, 5)); 17478 assert_true (ai_move (ai, 0, 2)); 17479 assert_true (ai_move (ai, 3, 2)); 17480 assert_true (ai_move (ai, 4, 1)); 17481 assert_true (ai_move (ai, 3, 1)); 17482 assert_true (ai_move (ai, 4, 0)); 17483 assert_true (ai_move (ai, 5, 0)); 17484 assert_true (ai_move (ai, 5, 1)); 17485 assert_true (ai_move (ai, 5, 2)); 17486 assert_true (ai_move (ai, 4, 2)); 17487 assert_true (ai_move (ai, 1, 5)); 17488 assert_true (ai_move (ai, 0, 4)); 17489 assert_true (ai_move (ai, 0, 3)); 17490 assert_true (ai_move (ai, 6, 2)); 17491 assert_true (ai_move (ai, 2, 1)); 17492 assert_true (ai_move (ai, 1, 4)); 17493 assert_true (ai_move (ai, 3, 0)); 17494 assert_true (ai_move (ai, 2, 0)); 17495 assert_true (ai_move (ai, 1, 0)); 17496 assert_true (ai_move (ai, 5, 6)); 17497 assert_true (ai_move (ai, 5, 3)); 17498 assert_true (ai_move (ai, 2, 5)); 17499 assert_true (ai_move (ai, 2, 7)); 17500 assert_true (ai_move (ai, 6, 3)); 17501 assert_true (ai_move (ai, 5, 4)); 17502 assert_true (ai_move (ai, 4, 7)); 17503 assert_true (ai_move (ai, 7, 4)); 17504 assert_true (ai_move (ai, 5, 5)); 17505 assert_true (ai_move (ai, 5, 7)); 17506 assert_true (ai_move (ai, 3, 7)); 17507 assert_true (ai_move (ai, 7, 2)); 17508 assert_true (ai_move (ai, 6, 5)); 17509 assert_true (ai_move (ai, 4, 6)); 17510 assert_true (ai_move (ai, 6, 4)); 17511 assert_true (ai_move (ai, 7, 3)); 17512 assert_true (ai_move (ai, 6, 1)); 17513 assert_true (ai_move (ai, 7, 5)); 17514 assert_true (ai_move (ai, 6, 6)); 17515 assert_true (ai_move (ai, 0, 5)); 17516 assert_true (ai_move (ai, 1, 6)); 17517 assert_true (ai_move (ai, 0, 1)); 17518 assert_true (ai_move (ai, 1, 1)); 17519 assert_true (ai_move (ai, 7, 6)); 17520 assert_true (ai_move (ai, 7, 7)); 17521 assert_true (ai_move (ai, 6, 7)); 17522 assert_true (ai_move (ai, 7, 1)); 17523 assert_true (ai_move (ai, 0, 0)); 17524 assert_true (ai_move (ai, 1, 7)); 17525 assert_true (ai_move (ai, 0, 7)); 17526 assert_true (ai_move (ai, 0, 6)); 17527 assert_true (ai_move (ai, 6, 0)); 17528 assert_true (ai_move (ai, 7, 0)); 17529 } 17530 17531 private static inline void test_complete_reversi_game_217 () 17532 { 17533 /* 0 1 2 3 4 5 6 7 */ 17534 string [] board = {/* 0 */ " . . . . . . . .", 17535 /* 1 */ " . . . . . . . .", 17536 /* 2 */ " . . L . . . . .", 17537 /* 3 */ " . . L L D . . .", 17538 /* 4 */ " . . L D L . . .", 17539 /* 5 */ " . . . D . . . .", 17540 /* 6 */ " . . . . . . . .", 17541 /* 7 */ " . . . . . . . ."}; 17542 17543 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 17544 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 17545 17546 assert_true (ai_move (ai, 1, 2)); 17547 assert_true (ai_move (ai, 1, 3)); 17548 assert_true (ai_move (ai, 4, 5)); 17549 assert_true (ai_move (ai, 0, 2)); 17550 assert_true (ai_move (ai, 3, 2)); 17551 assert_true (ai_move (ai, 4, 1)); 17552 assert_true (ai_move (ai, 3, 1)); 17553 assert_true (ai_move (ai, 4, 0)); 17554 assert_true (ai_move (ai, 5, 0)); 17555 assert_true (ai_move (ai, 5, 1)); 17556 assert_true (ai_move (ai, 5, 2)); 17557 assert_true (ai_move (ai, 4, 2)); 17558 assert_true (ai_move (ai, 1, 5)); 17559 assert_true (ai_move (ai, 2, 5)); 17560 assert_true (ai_move (ai, 1, 4)); 17561 assert_true (ai_move (ai, 5, 6)); 17562 assert_true (ai_move (ai, 2, 6)); 17563 assert_true (ai_move (ai, 2, 7)); 17564 assert_true (ai_move (ai, 3, 6)); 17565 assert_true (ai_move (ai, 0, 5)); 17566 assert_true (ai_move (ai, 5, 4)); 17567 assert_true (ai_move (ai, 6, 2)); 17568 assert_true (ai_move (ai, 6, 3)); 17569 assert_true (ai_move (ai, 6, 0)); 17570 assert_true (ai_move (ai, 7, 2)); 17571 assert_true (ai_move (ai, 5, 3)); 17572 assert_true (ai_move (ai, 2, 1)); 17573 assert_true (ai_move (ai, 3, 0)); 17574 assert_true (ai_move (ai, 0, 3)); 17575 assert_true (ai_move (ai, 0, 4)); 17576 assert_true (ai_move (ai, 5, 5)); 17577 assert_true (ai_move (ai, 6, 5)); 17578 assert_true (ai_move (ai, 6, 4)); 17579 assert_true (ai_move (ai, 1, 6)); 17580 assert_true (ai_move (ai, 4, 6)); 17581 assert_true (ai_move (ai, 3, 7)); 17582 assert_true (ai_move (ai, 2, 0)); 17583 assert_true (ai_move (ai, 1, 0)); 17584 assert_true (ai_move (ai, 7, 5)); 17585 assert_true (ai_move (ai, 5, 7)); 17586 assert_true (ai_move (ai, 4, 7)); 17587 assert_true (ai_move (ai, 7, 3)); 17588 assert_true (ai_move (ai, 6, 6)); 17589 assert_true (ai_move (ai, 7, 1)); 17590 assert_true (ai_move (ai, 1, 1)); 17591 assert_true (ai_move (ai, 0, 1)); 17592 assert_true (ai_move (ai, 0, 0)); 17593 assert_true (ai_move (ai, 7, 6)); 17594 assert_true (ai_move (ai, 7, 4)); 17595 assert_true (ai_move (ai, 6, 7)); 17596 assert_true (ai_move (ai, 7, 0)); 17597 assert_true (game.pass ()); 17598 assert_true (ai_move (ai, 0, 6)); 17599 assert_true (game.pass ()); 17600 assert_true (ai_move (ai, 6, 1)); 17601 assert_true (game.pass ()); 17602 assert_true (ai_move (ai, 0, 7)); 17603 assert_true (ai_move (ai, 1, 7)); 17604 assert_true (ai_move (ai, 7, 7)); 17605 } 17606 17607 private static inline void test_complete_reversi_game_218 () 17608 { 17609 /* 0 1 2 3 4 5 6 7 */ 17610 string [] board = {/* 0 */ " . . . . . . . .", 17611 /* 1 */ " . . . . . . . .", 17612 /* 2 */ " . . . . L . . .", 17613 /* 3 */ " . . D D L . . .", 17614 /* 4 */ " . . D D L . . .", 17615 /* 5 */ " . . D . . . . .", 17616 /* 6 */ " . . . . . . . .", 17617 /* 7 */ " . . . . . . . ."}; 17618 17619 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 17620 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 17621 17622 assert_true (ai_move (ai, 5, 1)); 17623 assert_true (ai_move (ai, 4, 1)); 17624 assert_true (ai_move (ai, 5, 5)); 17625 assert_true (ai_move (ai, 6, 0)); 17626 assert_true (ai_move (ai, 5, 3)); 17627 assert_true (ai_move (ai, 6, 4)); 17628 assert_true (ai_move (ai, 6, 3)); 17629 assert_true (ai_move (ai, 4, 6)); 17630 assert_true (ai_move (ai, 3, 1)); 17631 assert_true (ai_move (ai, 2, 1)); 17632 assert_true (ai_move (ai, 2, 0)); 17633 assert_true (ai_move (ai, 6, 2)); 17634 assert_true (ai_move (ai, 2, 2)); 17635 assert_true (ai_move (ai, 3, 5)); 17636 assert_true (ai_move (ai, 3, 6)); 17637 assert_true (ai_move (ai, 2, 6)); 17638 assert_true (ai_move (ai, 3, 7)); 17639 assert_true (ai_move (ai, 1, 4)); 17640 assert_true (ai_move (ai, 1, 3)); 17641 assert_true (ai_move (ai, 3, 2)); 17642 assert_true (ai_move (ai, 2, 7)); 17643 assert_true (ai_move (ai, 1, 5)); 17644 assert_true (ai_move (ai, 0, 4)); 17645 assert_true (ai_move (ai, 4, 7)); 17646 assert_true (ai_move (ai, 4, 5)); 17647 assert_true (ai_move (ai, 0, 2)); 17648 assert_true (ai_move (ai, 6, 5)); 17649 assert_true (ai_move (ai, 1, 2)); 17650 assert_true (ai_move (ai, 5, 7)); 17651 assert_true (ai_move (ai, 7, 5)); 17652 assert_true (ai_move (ai, 5, 4)); 17653 assert_true (ai_move (ai, 5, 2)); 17654 assert_true (ai_move (ai, 5, 6)); 17655 assert_true (ai_move (ai, 0, 5)); 17656 assert_true (ai_move (ai, 0, 3)); 17657 assert_true (ai_move (ai, 3, 0)); 17658 assert_true (ai_move (ai, 7, 2)); 17659 assert_true (ai_move (ai, 7, 4)); 17660 assert_true (ai_move (ai, 7, 3)); 17661 assert_true (ai_move (ai, 7, 1)); 17662 assert_true (ai_move (ai, 5, 0)); 17663 assert_true (ai_move (ai, 6, 1)); 17664 assert_true (ai_move (ai, 7, 0)); 17665 assert_true (ai_move (ai, 6, 6)); 17666 assert_true (ai_move (ai, 7, 7)); 17667 assert_true (ai_move (ai, 1, 0)); 17668 assert_true (ai_move (ai, 7, 6)); 17669 assert_true (ai_move (ai, 1, 1)); 17670 assert_true (ai_move (ai, 4, 0)); 17671 assert_true (ai_move (ai, 6, 7)); 17672 assert_true (ai_move (ai, 0, 0)); 17673 assert_true (ai_move (ai, 0, 1)); 17674 assert_true (ai_move (ai, 1, 6)); 17675 assert_true (ai_move (ai, 0, 7)); 17676 assert_true (ai_move (ai, 0, 6)); 17677 assert_true (ai_move (ai, 1, 7)); 17678 } 17679 17680 private static inline void test_complete_reversi_game_219 () 17681 { 17682 /* 0 1 2 3 4 5 6 7 */ 17683 string [] board = {/* 0 */ " . . . . . . . .", 17684 /* 1 */ " . . . . . . . .", 17685 /* 2 */ " . . L . . . . .", 17686 /* 3 */ " . . D L D . . .", 17687 /* 4 */ " . . D D L . . .", 17688 /* 5 */ " . . D . . . . .", 17689 /* 6 */ " . . . . . . . .", 17690 /* 7 */ " . . . . . . . ."}; 17691 17692 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 17693 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 17694 17695 assert_true (ai_move (ai, 2, 1)); 17696 assert_true (ai_move (ai, 1, 5)); 17697 assert_true (ai_move (ai, 1, 4)); 17698 assert_true (ai_move (ai, 3, 5)); 17699 assert_true (ai_move (ai, 2, 6)); 17700 assert_true (ai_move (ai, 0, 4)); 17701 assert_true (ai_move (ai, 0, 3)); 17702 assert_true (ai_move (ai, 0, 2)); 17703 assert_true (ai_move (ai, 0, 5)); 17704 assert_true (ai_move (ai, 0, 6)); 17705 assert_true (ai_move (ai, 5, 3)); 17706 assert_true (ai_move (ai, 1, 3)); 17707 assert_true (ai_move (ai, 3, 2)); 17708 assert_true (ai_move (ai, 3, 6)); 17709 assert_true (ai_move (ai, 3, 7)); 17710 assert_true (ai_move (ai, 3, 1)); 17711 assert_true (ai_move (ai, 3, 0)); 17712 assert_true (ai_move (ai, 4, 1)); 17713 assert_true (ai_move (ai, 1, 2)); 17714 assert_true (ai_move (ai, 4, 2)); 17715 assert_true (ai_move (ai, 5, 0)); 17716 assert_true (ai_move (ai, 4, 6)); 17717 assert_true (ai_move (ai, 5, 2)); 17718 assert_true (ai_move (ai, 5, 1)); 17719 assert_true (ai_move (ai, 5, 5)); 17720 assert_true (ai_move (ai, 2, 7)); 17721 assert_true (ai_move (ai, 1, 7)); 17722 assert_true (ai_move (ai, 6, 2)); 17723 assert_true (ai_move (ai, 6, 3)); 17724 assert_true (ai_move (ai, 5, 7)); 17725 assert_true (ai_move (ai, 7, 2)); 17726 assert_true (ai_move (ai, 6, 4)); 17727 assert_true (ai_move (ai, 5, 4)); 17728 assert_true (ai_move (ai, 7, 3)); 17729 assert_true (ai_move (ai, 7, 5)); 17730 assert_true (ai_move (ai, 7, 1)); 17731 assert_true (ai_move (ai, 5, 6)); 17732 assert_true (ai_move (ai, 2, 0)); 17733 assert_true (ai_move (ai, 7, 4)); 17734 assert_true (ai_move (ai, 7, 6)); 17735 assert_true (ai_move (ai, 1, 6)); 17736 assert_true (ai_move (ai, 4, 0)); 17737 assert_true (ai_move (ai, 1, 0)); 17738 assert_true (ai_move (ai, 6, 5)); 17739 assert_true (ai_move (ai, 4, 5)); 17740 assert_true (ai_move (ai, 4, 7)); 17741 assert_true (ai_move (ai, 6, 7)); 17742 assert_true (ai_move (ai, 6, 6)); 17743 assert_true (ai_move (ai, 6, 0)); 17744 assert_true (ai_move (ai, 0, 1)); 17745 assert_true (ai_move (ai, 7, 7)); 17746 assert_true (ai_move (ai, 0, 7)); 17747 assert_true (ai_move (ai, 7, 0)); 17748 assert_true (ai_move (ai, 1, 1)); 17749 assert_true (ai_move (ai, 0, 0)); 17750 assert_true (ai_move (ai, 6, 1)); 17751 } 17752 17753 private static inline void test_complete_reversi_game_220 () 17754 { 17755 /* 0 1 2 3 4 5 6 7 */ 17756 string [] board = {/* 0 */ " . . . . . . . .", 17757 /* 1 */ " . . . . . . . .", 17758 /* 2 */ " . . . . . . . .", 17759 /* 3 */ " . . D D D . . .", 17760 /* 4 */ " . L L L L . . .", 17761 /* 5 */ " . . D . . . . .", 17762 /* 6 */ " . . . . . . . .", 17763 /* 7 */ " . . . . . . . ."}; 17764 17765 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 17766 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 17767 17768 assert_true (ai_move (ai, 1, 5)); 17769 assert_true (ai_move (ai, 3, 6)); 17770 assert_true (ai_move (ai, 2, 6)); 17771 assert_true (ai_move (ai, 1, 2)); 17772 assert_true (ai_move (ai, 2, 2)); 17773 assert_true (ai_move (ai, 5, 2)); 17774 assert_true (ai_move (ai, 0, 2)); 17775 assert_true (ai_move (ai, 3, 2)); 17776 assert_true (ai_move (ai, 0, 3)); 17777 assert_true (ai_move (ai, 2, 1)); 17778 assert_true (ai_move (ai, 2, 0)); 17779 assert_true (ai_move (ai, 0, 5)); 17780 assert_true (ai_move (ai, 1, 3)); 17781 assert_true (ai_move (ai, 2, 7)); 17782 assert_true (ai_move (ai, 4, 1)); 17783 assert_true (ai_move (ai, 0, 6)); 17784 assert_true (ai_move (ai, 6, 3)); 17785 assert_true (ai_move (ai, 3, 1)); 17786 assert_true (ai_move (ai, 4, 0)); 17787 assert_true (ai_move (ai, 3, 0)); 17788 assert_true (ai_move (ai, 4, 2)); 17789 assert_true (ai_move (ai, 5, 1)); 17790 assert_true (ai_move (ai, 5, 0)); 17791 assert_true (ai_move (ai, 6, 2)); 17792 assert_true (ai_move (ai, 7, 2)); 17793 assert_true (ai_move (ai, 7, 4)); 17794 assert_true (ai_move (ai, 6, 4)); 17795 assert_true (ai_move (ai, 5, 4)); 17796 assert_true (ai_move (ai, 5, 3)); 17797 assert_true (ai_move (ai, 6, 1)); 17798 assert_true (ai_move (ai, 6, 5)); 17799 assert_true (ai_move (ai, 5, 5)); 17800 assert_true (ai_move (ai, 5, 6)); 17801 assert_true (ai_move (ai, 4, 5)); 17802 assert_true (ai_move (ai, 7, 5)); 17803 assert_true (ai_move (ai, 5, 7)); 17804 assert_true (ai_move (ai, 7, 3)); 17805 assert_true (ai_move (ai, 7, 1)); 17806 assert_true (ai_move (ai, 7, 0)); 17807 assert_true (ai_move (ai, 6, 0)); 17808 assert_true (ai_move (ai, 3, 5)); 17809 assert_true (ai_move (ai, 4, 6)); 17810 assert_true (ai_move (ai, 3, 7)); 17811 assert_true (ai_move (ai, 4, 7)); 17812 assert_true (ai_move (ai, 6, 7)); 17813 assert_true (ai_move (ai, 7, 7)); 17814 assert_true (ai_move (ai, 1, 6)); 17815 assert_true (ai_move (ai, 1, 7)); 17816 assert_true (game.pass ()); 17817 assert_true (ai_move (ai, 0, 7)); 17818 assert_true (game.pass ()); 17819 assert_true (ai_move (ai, 0, 4)); 17820 assert_true (ai_move (ai, 1, 1)); 17821 assert_true (ai_move (ai, 7, 6)); 17822 assert_true (ai_move (ai, 6, 6)); 17823 assert_true (ai_move (ai, 0, 0)); 17824 assert_true (ai_move (ai, 0, 1)); 17825 assert_true (ai_move (ai, 1, 0)); 17826 } 17827 17828 private static inline void test_complete_reversi_game_221 () 17829 { 17830 /* 0 1 2 3 4 5 6 7 */ 17831 string [] board = {/* 0 */ " . . . . . . . .", 17832 /* 1 */ " . . . . . . . .", 17833 /* 2 */ " . . . . . L . .", 17834 /* 3 */ " . . D D L . . .", 17835 /* 4 */ " . . D L L . . .", 17836 /* 5 */ " . D . . . . . .", 17837 /* 6 */ " . . . . . . . .", 17838 /* 7 */ " . . . . . . . ."}; 17839 17840 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 17841 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 17842 17843 assert_true (ai_move (ai, 4, 5)); 17844 assert_true (ai_move (ai, 4, 6)); 17845 assert_true (ai_move (ai, 5, 6)); 17846 assert_true (ai_move (ai, 2, 2)); 17847 assert_true (ai_move (ai, 2, 1)); 17848 assert_true (ai_move (ai, 1, 3)); 17849 assert_true (ai_move (ai, 1, 2)); 17850 assert_true (ai_move (ai, 3, 1)); 17851 assert_true (ai_move (ai, 3, 2)); 17852 assert_true (ai_move (ai, 2, 5)); 17853 assert_true (ai_move (ai, 3, 5)); 17854 assert_true (ai_move (ai, 2, 6)); 17855 assert_true (ai_move (ai, 2, 7)); 17856 assert_true (ai_move (ai, 5, 5)); 17857 assert_true (ai_move (ai, 6, 5)); 17858 assert_true (ai_move (ai, 6, 4)); 17859 assert_true (ai_move (ai, 5, 4)); 17860 assert_true (ai_move (ai, 1, 4)); 17861 assert_true (ai_move (ai, 0, 2)); 17862 assert_true (ai_move (ai, 3, 6)); 17863 assert_true (ai_move (ai, 5, 7)); 17864 assert_true (ai_move (ai, 2, 0)); 17865 assert_true (ai_move (ai, 0, 5)); 17866 assert_true (ai_move (ai, 7, 5)); 17867 assert_true (ai_move (ai, 3, 7)); 17868 assert_true (ai_move (ai, 4, 7)); 17869 assert_true (ai_move (ai, 4, 0)); 17870 assert_true (ai_move (ai, 4, 1)); 17871 assert_true (ai_move (ai, 7, 3)); 17872 assert_true (ai_move (ai, 7, 4)); 17873 assert_true (ai_move (ai, 4, 2)); 17874 assert_true (ai_move (ai, 3, 0)); 17875 assert_true (ai_move (ai, 6, 2)); 17876 assert_true (ai_move (ai, 5, 0)); 17877 assert_true (ai_move (ai, 6, 3)); 17878 assert_true (ai_move (ai, 5, 3)); 17879 assert_true (ai_move (ai, 5, 1)); 17880 assert_true (ai_move (ai, 7, 2)); 17881 assert_true (ai_move (ai, 1, 6)); 17882 assert_true (ai_move (ai, 1, 1)); 17883 assert_true (ai_move (ai, 7, 6)); 17884 assert_true (ai_move (ai, 7, 7)); 17885 assert_true (ai_move (ai, 6, 7)); 17886 assert_true (ai_move (ai, 6, 0)); 17887 assert_true (ai_move (ai, 1, 0)); 17888 assert_true (ai_move (ai, 0, 0)); 17889 assert_true (ai_move (ai, 0, 1)); 17890 assert_true (ai_move (ai, 0, 3)); 17891 assert_true (ai_move (ai, 6, 6)); 17892 assert_true (ai_move (ai, 7, 1)); 17893 assert_true (ai_move (ai, 0, 4)); 17894 assert_true (ai_move (ai, 0, 7)); 17895 assert_true (ai_move (ai, 0, 6)); 17896 assert_true (ai_move (ai, 1, 7)); 17897 assert_true (ai_move (ai, 6, 1)); 17898 assert_true (ai_move (ai, 7, 0)); 17899 } 17900 17901 private static inline void test_complete_reversi_game_222 () 17902 { 17903 /* 0 1 2 3 4 5 6 7 */ 17904 string [] board = {/* 0 */ " . . . . . . . .", 17905 /* 1 */ " . . . . . . . .", 17906 /* 2 */ " . . . . L . . .", 17907 /* 3 */ " . . D D L . . .", 17908 /* 4 */ " . . D L L . . .", 17909 /* 5 */ " . D . . . . . .", 17910 /* 6 */ " . . . . . . . .", 17911 /* 7 */ " . . . . . . . ."}; 17912 17913 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 17914 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 17915 17916 assert_true (ai_move (ai, 5, 1)); 17917 assert_true (ai_move (ai, 4, 1)); 17918 assert_true (ai_move (ai, 4, 5)); 17919 assert_true (ai_move (ai, 4, 6)); 17920 assert_true (ai_move (ai, 5, 6)); 17921 assert_true (ai_move (ai, 2, 2)); 17922 assert_true (ai_move (ai, 2, 1)); 17923 assert_true (ai_move (ai, 1, 3)); 17924 assert_true (ai_move (ai, 1, 2)); 17925 assert_true (ai_move (ai, 3, 1)); 17926 assert_true (ai_move (ai, 0, 2)); 17927 assert_true (ai_move (ai, 2, 0)); 17928 assert_true (ai_move (ai, 3, 2)); 17929 assert_true (ai_move (ai, 0, 4)); 17930 assert_true (ai_move (ai, 0, 3)); 17931 assert_true (ai_move (ai, 0, 1)); 17932 assert_true (ai_move (ai, 5, 0)); 17933 assert_true (ai_move (ai, 2, 6)); 17934 assert_true (ai_move (ai, 4, 0)); 17935 assert_true (ai_move (ai, 2, 5)); 17936 assert_true (ai_move (ai, 5, 2)); 17937 assert_true (ai_move (ai, 6, 2)); 17938 assert_true (ai_move (ai, 1, 4)); 17939 assert_true (ai_move (ai, 3, 0)); 17940 assert_true (ai_move (ai, 1, 0)); 17941 assert_true (ai_move (ai, 0, 5)); 17942 assert_true (ai_move (ai, 6, 3)); 17943 assert_true (ai_move (ai, 6, 4)); 17944 assert_true (ai_move (ai, 7, 2)); 17945 assert_true (ai_move (ai, 6, 7)); 17946 assert_true (ai_move (ai, 3, 5)); 17947 assert_true (ai_move (ai, 6, 1)); 17948 assert_true (ai_move (ai, 6, 0)); 17949 assert_true (ai_move (ai, 5, 3)); 17950 assert_true (ai_move (ai, 7, 4)); 17951 assert_true (ai_move (ai, 3, 6)); 17952 assert_true (ai_move (ai, 7, 3)); 17953 assert_true (ai_move (ai, 1, 1)); 17954 assert_true (ai_move (ai, 3, 7)); 17955 assert_true (ai_move (ai, 2, 7)); 17956 assert_true (ai_move (ai, 7, 5)); 17957 assert_true (ai_move (ai, 4, 7)); 17958 assert_true (ai_move (ai, 0, 0)); 17959 assert_true (ai_move (ai, 7, 1)); 17960 assert_true (ai_move (ai, 7, 0)); 17961 assert_true (ai_move (ai, 6, 5)); 17962 assert_true (ai_move (ai, 0, 6)); 17963 assert_true (ai_move (ai, 1, 6)); 17964 assert_true (ai_move (ai, 0, 7)); 17965 assert_true (ai_move (ai, 1, 7)); 17966 assert_true (ai_move (ai, 5, 7)); 17967 assert_true (game.pass ()); 17968 assert_true (ai_move (ai, 6, 6)); 17969 assert_true (ai_move (ai, 7, 6)); 17970 assert_true (ai_move (ai, 5, 5)); 17971 assert_true (ai_move (ai, 5, 4)); 17972 assert_true (ai_move (ai, 7, 7)); 17973 } 17974 17975 private static inline void test_complete_reversi_game_223 () 17976 { 17977 /* 0 1 2 3 4 5 6 7 */ 17978 string [] board = {/* 0 */ " . . . . . . . .", 17979 /* 1 */ " . . . . . . . .", 17980 /* 2 */ " . . . L . . . .", 17981 /* 3 */ " . . D L D . . .", 17982 /* 4 */ " . . D L L . . .", 17983 /* 5 */ " . D . . . . . .", 17984 /* 6 */ " . . . . . . . .", 17985 /* 7 */ " . . . . . . . ."}; 17986 17987 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 17988 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 17989 17990 assert_true (ai_move (ai, 2, 1)); 17991 assert_true (ai_move (ai, 3, 1)); 17992 assert_true (ai_move (ai, 2, 5)); 17993 assert_true (ai_move (ai, 4, 2)); 17994 assert_true (ai_move (ai, 5, 2)); 17995 assert_true (ai_move (ai, 6, 2)); 17996 assert_true (ai_move (ai, 4, 5)); 17997 assert_true (ai_move (ai, 1, 3)); 17998 assert_true (ai_move (ai, 1, 2)); 17999 assert_true (ai_move (ai, 1, 4)); 18000 assert_true (ai_move (ai, 0, 4)); 18001 assert_true (ai_move (ai, 0, 5)); 18002 assert_true (ai_move (ai, 0, 6)); 18003 assert_true (ai_move (ai, 2, 6)); 18004 assert_true (ai_move (ai, 3, 5)); 18005 assert_true (ai_move (ai, 3, 6)); 18006 assert_true (ai_move (ai, 2, 7)); 18007 assert_true (ai_move (ai, 4, 7)); 18008 assert_true (ai_move (ai, 3, 7)); 18009 assert_true (ai_move (ai, 1, 7)); 18010 assert_true (ai_move (ai, 5, 1)); 18011 assert_true (ai_move (ai, 5, 5)); 18012 assert_true (ai_move (ai, 5, 3)); 18013 assert_true (ai_move (ai, 4, 0)); 18014 assert_true (ai_move (ai, 5, 0)); 18015 assert_true (ai_move (ai, 6, 4)); 18016 assert_true (ai_move (ai, 5, 4)); 18017 assert_true (ai_move (ai, 2, 2)); 18018 assert_true (ai_move (ai, 3, 0)); 18019 assert_true (ai_move (ai, 6, 5)); 18020 assert_true (ai_move (ai, 4, 1)); 18021 assert_true (ai_move (ai, 6, 3)); 18022 assert_true (ai_move (ai, 0, 3)); 18023 assert_true (ai_move (ai, 0, 2)); 18024 assert_true (ai_move (ai, 0, 1)); 18025 assert_true (ai_move (ai, 2, 0)); 18026 assert_true (ai_move (ai, 1, 0)); 18027 assert_true (ai_move (ai, 1, 1)); 18028 assert_true (ai_move (ai, 4, 6)); 18029 assert_true (ai_move (ai, 5, 6)); 18030 assert_true (ai_move (ai, 1, 6)); 18031 assert_true (ai_move (ai, 6, 0)); 18032 assert_true (ai_move (ai, 7, 0)); 18033 assert_true (game.pass ()); 18034 assert_true (ai_move (ai, 6, 1)); 18035 assert_true (ai_move (ai, 7, 1)); 18036 assert_true (ai_move (ai, 7, 2)); 18037 assert_true (ai_move (ai, 7, 3)); 18038 assert_true (ai_move (ai, 7, 4)); 18039 assert_true (ai_move (ai, 7, 5)); 18040 assert_true (ai_move (ai, 7, 6)); 18041 assert_true (ai_move (ai, 6, 6)); 18042 assert_true (ai_move (ai, 7, 7)); 18043 assert_true (ai_move (ai, 6, 7)); 18044 assert_true (ai_move (ai, 0, 0)); 18045 assert_true (game.pass ()); 18046 assert_true (ai_move (ai, 5, 7)); 18047 assert_true (game.pass ()); 18048 assert_true (ai_move (ai, 0, 7)); 18049 } 18050 18051 private static inline void test_complete_reversi_game_224 () 18052 { 18053 /* 0 1 2 3 4 5 6 7 */ 18054 string [] board = {/* 0 */ " . . . . . . . .", 18055 /* 1 */ " . . . . . . . .", 18056 /* 2 */ " . . L . . . . .", 18057 /* 3 */ " . . D L D . . .", 18058 /* 4 */ " . . D L L . . .", 18059 /* 5 */ " . D . . . . . .", 18060 /* 6 */ " . . . . . . . .", 18061 /* 7 */ " . . . . . . . ."}; 18062 18063 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 18064 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 18065 18066 assert_true (ai_move (ai, 2, 1)); 18067 assert_true (ai_move (ai, 1, 3)); 18068 assert_true (ai_move (ai, 2, 5)); 18069 assert_true (ai_move (ai, 3, 1)); 18070 assert_true (ai_move (ai, 1, 2)); 18071 assert_true (ai_move (ai, 0, 2)); 18072 assert_true (ai_move (ai, 4, 1)); 18073 assert_true (ai_move (ai, 4, 0)); 18074 assert_true (ai_move (ai, 0, 3)); 18075 assert_true (ai_move (ai, 0, 4)); 18076 assert_true (ai_move (ai, 3, 2)); 18077 assert_true (ai_move (ai, 2, 6)); 18078 assert_true (ai_move (ai, 2, 7)); 18079 assert_true (ai_move (ai, 3, 0)); 18080 assert_true (ai_move (ai, 2, 0)); 18081 assert_true (ai_move (ai, 1, 0)); 18082 assert_true (ai_move (ai, 0, 5)); 18083 assert_true (ai_move (ai, 0, 6)); 18084 assert_true (ai_move (ai, 5, 5)); 18085 assert_true (ai_move (ai, 5, 1)); 18086 assert_true (ai_move (ai, 5, 0)); 18087 assert_true (ai_move (ai, 6, 0)); 18088 assert_true (ai_move (ai, 6, 1)); 18089 assert_true (ai_move (ai, 5, 2)); 18090 assert_true (ai_move (ai, 0, 1)); 18091 assert_true (ai_move (ai, 0, 0)); 18092 assert_true (ai_move (ai, 1, 4)); 18093 assert_true (ai_move (ai, 7, 0)); 18094 assert_true (ai_move (ai, 7, 1)); 18095 assert_true (ai_move (ai, 7, 2)); 18096 assert_true (ai_move (ai, 5, 3)); 18097 assert_true (ai_move (ai, 6, 2)); 18098 assert_true (game.pass ()); 18099 assert_true (ai_move (ai, 4, 5)); 18100 assert_true (ai_move (ai, 1, 1)); 18101 assert_true (ai_move (ai, 3, 6)); 18102 assert_true (ai_move (ai, 5, 4)); 18103 assert_true (ai_move (ai, 3, 5)); 18104 assert_true (ai_move (ai, 6, 3)); 18105 assert_true (ai_move (ai, 4, 6)); 18106 assert_true (ai_move (ai, 5, 6)); 18107 assert_true (ai_move (ai, 4, 2)); 18108 assert_true (ai_move (ai, 1, 6)); 18109 assert_true (ai_move (ai, 4, 7)); 18110 assert_true (ai_move (ai, 3, 7)); 18111 assert_true (ai_move (ai, 6, 5)); 18112 assert_true (ai_move (ai, 5, 7)); 18113 assert_true (ai_move (ai, 7, 3)); 18114 assert_true (ai_move (ai, 7, 5)); 18115 assert_true (ai_move (ai, 6, 4)); 18116 assert_true (ai_move (ai, 7, 4)); 18117 assert_true (ai_move (ai, 7, 6)); 18118 assert_true (ai_move (ai, 6, 6)); 18119 assert_true (ai_move (ai, 7, 7)); 18120 assert_true (ai_move (ai, 6, 7)); 18121 assert_true (ai_move (ai, 1, 7)); 18122 assert_true (ai_move (ai, 0, 7)); 18123 } 18124 18125 private static inline void test_complete_reversi_game_225 () 18126 { 18127 /* 0 1 2 3 4 5 6 7 */ 18128 string [] board = {/* 0 */ " . . . . . . . .", 18129 /* 1 */ " . . . . . . . .", 18130 /* 2 */ " . . . . . . . .", 18131 /* 3 */ " . . D D D . . .", 18132 /* 4 */ " . L L L L . . .", 18133 /* 5 */ " . D . . . . . .", 18134 /* 6 */ " . . . . . . . .", 18135 /* 7 */ " . . . . . . . ."}; 18136 18137 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 18138 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 18139 18140 assert_true (ai_move (ai, 0, 5)); 18141 assert_true (ai_move (ai, 1, 2)); 18142 assert_true (ai_move (ai, 3, 2)); 18143 assert_true (ai_move (ai, 2, 2)); 18144 assert_true (ai_move (ai, 0, 2)); 18145 assert_true (ai_move (ai, 2, 1)); 18146 assert_true (ai_move (ai, 3, 0)); 18147 assert_true (ai_move (ai, 4, 1)); 18148 assert_true (ai_move (ai, 5, 2)); 18149 assert_true (ai_move (ai, 4, 2)); 18150 assert_true (ai_move (ai, 5, 1)); 18151 assert_true (ai_move (ai, 6, 2)); 18152 assert_true (ai_move (ai, 3, 1)); 18153 assert_true (ai_move (ai, 2, 5)); 18154 assert_true (ai_move (ai, 2, 6)); 18155 assert_true (ai_move (ai, 5, 0)); 18156 assert_true (ai_move (ai, 6, 3)); 18157 assert_true (ai_move (ai, 4, 0)); 18158 assert_true (ai_move (ai, 6, 0)); 18159 assert_true (ai_move (ai, 1, 3)); 18160 assert_true (ai_move (ai, 0, 4)); 18161 assert_true (ai_move (ai, 2, 7)); 18162 assert_true (ai_move (ai, 3, 6)); 18163 assert_true (ai_move (ai, 4, 5)); 18164 assert_true (ai_move (ai, 7, 2)); 18165 assert_true (ai_move (ai, 0, 3)); 18166 assert_true (ai_move (ai, 3, 5)); 18167 assert_true (ai_move (ai, 7, 4)); 18168 assert_true (ai_move (ai, 5, 6)); 18169 assert_true (ai_move (ai, 5, 4)); 18170 assert_true (ai_move (ai, 4, 7)); 18171 assert_true (ai_move (ai, 1, 6)); 18172 assert_true (ai_move (ai, 6, 5)); 18173 assert_true (ai_move (ai, 5, 3)); 18174 assert_true (ai_move (ai, 7, 3)); 18175 assert_true (ai_move (ai, 5, 5)); 18176 assert_true (ai_move (ai, 4, 6)); 18177 assert_true (ai_move (ai, 2, 0)); 18178 assert_true (ai_move (ai, 1, 0)); 18179 assert_true (ai_move (ai, 0, 6)); 18180 assert_true (ai_move (ai, 6, 4)); 18181 assert_true (ai_move (ai, 0, 1)); 18182 assert_true (ai_move (ai, 7, 5)); 18183 assert_true (ai_move (ai, 3, 7)); 18184 assert_true (ai_move (ai, 1, 1)); 18185 assert_true (ai_move (ai, 5, 7)); 18186 assert_true (ai_move (ai, 6, 6)); 18187 assert_true (ai_move (ai, 6, 1)); 18188 assert_true (ai_move (ai, 7, 0)); 18189 assert_true (ai_move (ai, 7, 1)); 18190 assert_true (ai_move (ai, 0, 7)); 18191 assert_true (ai_move (ai, 7, 6)); 18192 assert_true (ai_move (ai, 0, 0)); 18193 assert_true (ai_move (ai, 1, 7)); 18194 assert_true (ai_move (ai, 7, 7)); 18195 assert_true (ai_move (ai, 6, 7)); 18196 } 18197 18198 private static inline void test_complete_reversi_game_226 () 18199 { 18200 /* 0 1 2 3 4 5 6 7 */ 18201 string [] board = {/* 0 */ " . . . . . . . .", 18202 /* 1 */ " . . . . . . . .", 18203 /* 2 */ " . L . . . . . .", 18204 /* 3 */ " . . L D D . . .", 18205 /* 4 */ " . . D L L . . .", 18206 /* 5 */ " . D . . . . . .", 18207 /* 6 */ " . . . . . . . .", 18208 /* 7 */ " . . . . . . . ."}; 18209 18210 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 18211 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 18212 18213 assert_true (ai_move (ai, 2, 2)); 18214 assert_true (ai_move (ai, 1, 4)); 18215 assert_true (ai_move (ai, 0, 2)); 18216 assert_true (ai_move (ai, 2, 1)); 18217 assert_true (ai_move (ai, 3, 2)); 18218 assert_true (ai_move (ai, 4, 1)); 18219 assert_true (ai_move (ai, 4, 2)); 18220 assert_true (ai_move (ai, 3, 1)); 18221 assert_true (ai_move (ai, 2, 0)); 18222 assert_true (ai_move (ai, 3, 0)); 18223 assert_true (ai_move (ai, 4, 0)); 18224 assert_true (ai_move (ai, 5, 0)); 18225 assert_true (ai_move (ai, 6, 0)); 18226 assert_true (ai_move (ai, 5, 1)); 18227 assert_true (ai_move (ai, 5, 2)); 18228 assert_true (ai_move (ai, 5, 3)); 18229 assert_true (ai_move (ai, 6, 4)); 18230 assert_true (ai_move (ai, 6, 3)); 18231 assert_true (ai_move (ai, 7, 4)); 18232 assert_true (ai_move (ai, 7, 5)); 18233 assert_true (ai_move (ai, 7, 6)); 18234 assert_true (ai_move (ai, 1, 1)); 18235 assert_true (ai_move (ai, 2, 5)); 18236 assert_true (ai_move (ai, 3, 6)); 18237 assert_true (ai_move (ai, 2, 6)); 18238 assert_true (ai_move (ai, 1, 3)); 18239 assert_true (ai_move (ai, 0, 3)); 18240 assert_true (ai_move (ai, 7, 3)); 18241 assert_true (ai_move (ai, 7, 2)); 18242 assert_true (ai_move (ai, 0, 4)); 18243 assert_true (ai_move (ai, 0, 5)); 18244 assert_true (ai_move (ai, 0, 1)); 18245 assert_true (ai_move (ai, 0, 0)); 18246 assert_true (ai_move (ai, 6, 2)); 18247 assert_true (ai_move (ai, 4, 7)); 18248 assert_true (ai_move (ai, 2, 7)); 18249 assert_true (ai_move (ai, 3, 7)); 18250 assert_true (ai_move (ai, 5, 7)); 18251 assert_true (ai_move (ai, 3, 5)); 18252 assert_true (ai_move (ai, 5, 4)); 18253 assert_true (ai_move (ai, 4, 5)); 18254 assert_true (ai_move (ai, 5, 6)); 18255 assert_true (ai_move (ai, 7, 1)); 18256 assert_true (ai_move (ai, 5, 5)); 18257 assert_true (ai_move (ai, 6, 5)); 18258 assert_true (ai_move (ai, 4, 6)); 18259 assert_true (ai_move (ai, 6, 1)); 18260 assert_true (ai_move (ai, 7, 0)); 18261 assert_true (ai_move (ai, 6, 7)); 18262 assert_true (ai_move (ai, 7, 7)); 18263 assert_true (game.pass ()); 18264 assert_true (ai_move (ai, 6, 6)); 18265 assert_true (game.pass ()); 18266 assert_true (ai_move (ai, 1, 6)); 18267 assert_true (ai_move (ai, 1, 7)); 18268 assert_true (ai_move (ai, 1, 0)); 18269 assert_true (game.pass ()); 18270 assert_true (ai_move (ai, 0, 6)); 18271 assert_true (ai_move (ai, 0, 7)); 18272 } 18273 18274 private static inline void test_complete_reversi_game_227 () 18275 { 18276 /* 0 1 2 3 4 5 6 7 */ 18277 string [] board = {/* 0 */ " . . . . . . . .", 18278 /* 1 */ " . . . . . . . .", 18279 /* 2 */ " . . L . . . . .", 18280 /* 3 */ " . . D L D . . .", 18281 /* 4 */ " . . . D L D . .", 18282 /* 5 */ " . . . . . L . .", 18283 /* 6 */ " . . . . . . . .", 18284 /* 7 */ " . . . . . . . ."}; 18285 18286 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 18287 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 18288 18289 assert_true (ai_move (ai, 5, 6)); 18290 assert_true (ai_move (ai, 1, 3)); 18291 assert_true (ai_move (ai, 4, 5)); 18292 assert_true (ai_move (ai, 3, 5)); 18293 assert_true (ai_move (ai, 2, 6)); 18294 assert_true (ai_move (ai, 3, 6)); 18295 assert_true (ai_move (ai, 2, 7)); 18296 assert_true (ai_move (ai, 6, 5)); 18297 assert_true (ai_move (ai, 4, 6)); 18298 assert_true (ai_move (ai, 4, 7)); 18299 assert_true (ai_move (ai, 6, 4)); 18300 assert_true (ai_move (ai, 2, 5)); 18301 assert_true (ai_move (ai, 5, 7)); 18302 assert_true (ai_move (ai, 6, 7)); 18303 assert_true (ai_move (ai, 1, 5)); 18304 assert_true (ai_move (ai, 0, 5)); 18305 assert_true (ai_move (ai, 2, 4)); 18306 assert_true (ai_move (ai, 1, 4)); 18307 assert_true (ai_move (ai, 7, 5)); 18308 assert_true (ai_move (ai, 6, 3)); 18309 assert_true (ai_move (ai, 5, 3)); 18310 assert_true (ai_move (ai, 5, 2)); 18311 assert_true (ai_move (ai, 2, 1)); 18312 assert_true (ai_move (ai, 3, 1)); 18313 assert_true (ai_move (ai, 7, 2)); 18314 assert_true (ai_move (ai, 3, 2)); 18315 assert_true (ai_move (ai, 1, 2)); 18316 assert_true (ai_move (ai, 2, 0)); 18317 assert_true (ai_move (ai, 6, 2)); 18318 assert_true (ai_move (ai, 0, 3)); 18319 assert_true (ai_move (ai, 5, 1)); 18320 assert_true (ai_move (ai, 5, 0)); 18321 assert_true (ai_move (ai, 4, 2)); 18322 assert_true (ai_move (ai, 4, 1)); 18323 assert_true (ai_move (ai, 0, 2)); 18324 assert_true (ai_move (ai, 0, 4)); 18325 assert_true (ai_move (ai, 0, 6)); 18326 assert_true (ai_move (ai, 7, 3)); 18327 assert_true (ai_move (ai, 7, 4)); 18328 assert_true (ai_move (ai, 7, 6)); 18329 assert_true (ai_move (ai, 7, 7)); 18330 assert_true (ai_move (ai, 3, 7)); 18331 assert_true (ai_move (ai, 6, 6)); 18332 assert_true (ai_move (ai, 6, 1)); 18333 assert_true (ai_move (ai, 7, 1)); 18334 assert_true (ai_move (ai, 1, 1)); 18335 assert_true (ai_move (ai, 3, 0)); 18336 assert_true (ai_move (ai, 4, 0)); 18337 assert_true (ai_move (ai, 0, 0)); 18338 assert_true (ai_move (ai, 1, 0)); 18339 assert_true (ai_move (ai, 1, 6)); 18340 assert_true (ai_move (ai, 0, 7)); 18341 assert_true (ai_move (ai, 1, 7)); 18342 assert_true (ai_move (ai, 0, 1)); 18343 assert_true (ai_move (ai, 6, 0)); 18344 assert_true (ai_move (ai, 7, 0)); 18345 } 18346 18347 private static inline void test_complete_reversi_game_228 () 18348 { 18349 /* 0 1 2 3 4 5 6 7 */ 18350 string [] board = {/* 0 */ " . . . . . . . .", 18351 /* 1 */ " . . . . . . . .", 18352 /* 2 */ " . . L . . . . .", 18353 /* 3 */ " . . D L L L . .", 18354 /* 4 */ " . . . D D D . .", 18355 /* 5 */ " . . . . . . . .", 18356 /* 6 */ " . . . . . . . .", 18357 /* 7 */ " . . . . . . . ."}; 18358 18359 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 18360 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 18361 18362 assert_true (ai_move (ai, 2, 1)); 18363 assert_true (ai_move (ai, 6, 5)); 18364 assert_true (ai_move (ai, 6, 4)); 18365 assert_true (ai_move (ai, 7, 5)); 18366 assert_true (ai_move (ai, 6, 2)); 18367 assert_true (ai_move (ai, 4, 2)); 18368 assert_true (ai_move (ai, 5, 2)); 18369 assert_true (ai_move (ai, 1, 3)); 18370 assert_true (ai_move (ai, 3, 1)); 18371 assert_true (ai_move (ai, 5, 1)); 18372 assert_true (ai_move (ai, 4, 1)); 18373 assert_true (ai_move (ai, 6, 3)); 18374 assert_true (ai_move (ai, 7, 2)); 18375 assert_true (ai_move (ai, 7, 3)); 18376 assert_true (ai_move (ai, 1, 2)); 18377 assert_true (ai_move (ai, 3, 2)); 18378 assert_true (ai_move (ai, 5, 0)); 18379 assert_true (ai_move (ai, 0, 2)); 18380 assert_true (ai_move (ai, 0, 4)); 18381 assert_true (ai_move (ai, 2, 0)); 18382 assert_true (ai_move (ai, 2, 4)); 18383 assert_true (ai_move (ai, 3, 0)); 18384 assert_true (ai_move (ai, 4, 0)); 18385 assert_true (ai_move (ai, 6, 0)); 18386 assert_true (ai_move (ai, 7, 4)); 18387 assert_true (ai_move (ai, 7, 1)); 18388 assert_true (ai_move (ai, 1, 1)); 18389 assert_true (ai_move (ai, 1, 0)); 18390 assert_true (ai_move (ai, 7, 6)); 18391 assert_true (ai_move (ai, 7, 7)); 18392 assert_true (ai_move (ai, 6, 1)); 18393 assert_true (ai_move (ai, 5, 6)); 18394 assert_true (ai_move (ai, 6, 6)); 18395 assert_true (ai_move (ai, 7, 0)); 18396 assert_true (ai_move (ai, 4, 7)); 18397 assert_true (ai_move (ai, 2, 5)); 18398 assert_true (ai_move (ai, 1, 5)); 18399 assert_true (ai_move (ai, 0, 3)); 18400 assert_true (ai_move (ai, 2, 6)); 18401 assert_true (ai_move (ai, 0, 5)); 18402 assert_true (ai_move (ai, 1, 4)); 18403 assert_true (ai_move (ai, 2, 7)); 18404 assert_true (ai_move (ai, 3, 6)); 18405 assert_true (ai_move (ai, 0, 6)); 18406 assert_true (ai_move (ai, 4, 5)); 18407 assert_true (ai_move (ai, 5, 7)); 18408 assert_true (ai_move (ai, 3, 5)); 18409 assert_true (ai_move (ai, 1, 6)); 18410 assert_true (ai_move (ai, 6, 7)); 18411 assert_true (ai_move (ai, 3, 7)); 18412 assert_true (ai_move (ai, 4, 6)); 18413 assert_true (ai_move (ai, 5, 5)); 18414 assert_true (ai_move (ai, 1, 7)); 18415 assert_true (ai_move (ai, 0, 0)); 18416 assert_true (ai_move (ai, 0, 1)); 18417 assert_true (ai_move (ai, 0, 7)); 18418 } 18419 18420 private static inline void test_complete_reversi_game_229 () 18421 { 18422 /* 0 1 2 3 4 5 6 7 */ 18423 string [] board = {/* 0 */ " . . . . . . . .", 18424 /* 1 */ " . . . . . . . .", 18425 /* 2 */ " . . L . . . . .", 18426 /* 3 */ " . . D L D . . .", 18427 /* 4 */ " . . . L D D . .", 18428 /* 5 */ " . . . L . . . .", 18429 /* 6 */ " . . . . . . . .", 18430 /* 7 */ " . . . . . . . ."}; 18431 18432 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 18433 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 18434 18435 assert_true (ai_move (ai, 2, 1)); 18436 assert_true (ai_move (ai, 1, 3)); 18437 assert_true (ai_move (ai, 2, 6)); 18438 assert_true (ai_move (ai, 3, 1)); 18439 assert_true (ai_move (ai, 2, 5)); 18440 assert_true (ai_move (ai, 2, 0)); 18441 assert_true (ai_move (ai, 1, 2)); 18442 assert_true (ai_move (ai, 0, 3)); 18443 assert_true (ai_move (ai, 3, 2)); 18444 assert_true (ai_move (ai, 4, 2)); 18445 assert_true (ai_move (ai, 5, 1)); 18446 assert_true (ai_move (ai, 2, 4)); 18447 assert_true (ai_move (ai, 1, 5)); 18448 assert_true (ai_move (ai, 2, 7)); 18449 assert_true (ai_move (ai, 1, 4)); 18450 assert_true (ai_move (ai, 4, 6)); 18451 assert_true (ai_move (ai, 4, 1)); 18452 assert_true (ai_move (ai, 0, 5)); 18453 assert_true (ai_move (ai, 3, 6)); 18454 assert_true (ai_move (ai, 5, 2)); 18455 assert_true (ai_move (ai, 5, 3)); 18456 assert_true (ai_move (ai, 0, 4)); 18457 assert_true (ai_move (ai, 0, 2)); 18458 assert_true (ai_move (ai, 0, 1)); 18459 assert_true (ai_move (ai, 4, 0)); 18460 assert_true (ai_move (ai, 6, 2)); 18461 assert_true (ai_move (ai, 6, 4)); 18462 assert_true (ai_move (ai, 6, 3)); 18463 assert_true (ai_move (ai, 7, 3)); 18464 assert_true (ai_move (ai, 5, 5)); 18465 assert_true (ai_move (ai, 4, 5)); 18466 assert_true (ai_move (ai, 7, 5)); 18467 assert_true (ai_move (ai, 7, 2)); 18468 assert_true (ai_move (ai, 5, 6)); 18469 assert_true (ai_move (ai, 6, 5)); 18470 assert_true (ai_move (ai, 3, 7)); 18471 assert_true (ai_move (ai, 5, 7)); 18472 assert_true (ai_move (ai, 6, 6)); 18473 assert_true (ai_move (ai, 6, 1)); 18474 assert_true (ai_move (ai, 3, 0)); 18475 assert_true (ai_move (ai, 1, 0)); 18476 assert_true (ai_move (ai, 1, 1)); 18477 assert_true (ai_move (ai, 4, 7)); 18478 assert_true (ai_move (ai, 6, 7)); 18479 assert_true (ai_move (ai, 1, 7)); 18480 assert_true (ai_move (ai, 0, 7)); 18481 assert_true (ai_move (ai, 0, 6)); 18482 assert_true (ai_move (ai, 5, 0)); 18483 assert_true (ai_move (ai, 0, 0)); 18484 assert_true (ai_move (ai, 1, 6)); 18485 assert_true (ai_move (ai, 7, 7)); 18486 assert_true (ai_move (ai, 7, 0)); 18487 assert_true (ai_move (ai, 6, 0)); 18488 assert_true (ai_move (ai, 7, 1)); 18489 assert_true (game.pass ()); 18490 assert_true (ai_move (ai, 7, 4)); 18491 assert_true (ai_move (ai, 7, 6)); 18492 } 18493 18494 private static inline void test_complete_reversi_game_230 () 18495 { 18496 /* 0 1 2 3 4 5 6 7 */ 18497 string [] board = {/* 0 */ " . . . . . . . .", 18498 /* 1 */ " . . . . . . . .", 18499 /* 2 */ " . . L . . . . .", 18500 /* 3 */ " . . L L D . . .", 18501 /* 4 */ " . . L D D D . .", 18502 /* 5 */ " . . . . . . . .", 18503 /* 6 */ " . . . . . . . .", 18504 /* 7 */ " . . . . . . . ."}; 18505 18506 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 18507 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 18508 18509 assert_true (ai_move (ai, 1, 2)); 18510 assert_true (ai_move (ai, 1, 3)); 18511 assert_true (ai_move (ai, 3, 2)); 18512 assert_true (ai_move (ai, 3, 1)); 18513 assert_true (ai_move (ai, 0, 3)); 18514 assert_true (ai_move (ai, 0, 4)); 18515 assert_true (ai_move (ai, 0, 5)); 18516 assert_true (ai_move (ai, 0, 2)); 18517 assert_true (ai_move (ai, 0, 1)); 18518 assert_true (ai_move (ai, 4, 2)); 18519 assert_true (ai_move (ai, 2, 1)); 18520 assert_true (ai_move (ai, 2, 0)); 18521 assert_true (ai_move (ai, 5, 2)); 18522 assert_true (ai_move (ai, 4, 1)); 18523 assert_true (ai_move (ai, 1, 5)); 18524 assert_true (ai_move (ai, 6, 3)); 18525 assert_true (ai_move (ai, 1, 4)); 18526 assert_true (ai_move (ai, 6, 5)); 18527 assert_true (ai_move (ai, 5, 0)); 18528 assert_true (ai_move (ai, 5, 3)); 18529 assert_true (ai_move (ai, 5, 1)); 18530 assert_true (ai_move (ai, 4, 0)); 18531 assert_true (ai_move (ai, 5, 5)); 18532 assert_true (ai_move (ai, 6, 4)); 18533 assert_true (ai_move (ai, 6, 2)); 18534 assert_true (ai_move (ai, 4, 6)); 18535 assert_true (ai_move (ai, 5, 6)); 18536 assert_true (ai_move (ai, 7, 2)); 18537 assert_true (ai_move (ai, 3, 7)); 18538 assert_true (ai_move (ai, 5, 7)); 18539 assert_true (ai_move (ai, 7, 4)); 18540 assert_true (ai_move (ai, 7, 3)); 18541 assert_true (ai_move (ai, 7, 1)); 18542 assert_true (ai_move (ai, 4, 5)); 18543 assert_true (ai_move (ai, 7, 5)); 18544 assert_true (ai_move (ai, 4, 7)); 18545 assert_true (ai_move (ai, 7, 6)); 18546 assert_true (ai_move (ai, 2, 7)); 18547 assert_true (ai_move (ai, 3, 6)); 18548 assert_true (ai_move (ai, 2, 6)); 18549 assert_true (ai_move (ai, 6, 1)); 18550 assert_true (ai_move (ai, 2, 5)); 18551 assert_true (ai_move (ai, 3, 5)); 18552 assert_true (ai_move (ai, 6, 0)); 18553 assert_true (ai_move (ai, 6, 6)); 18554 assert_true (ai_move (ai, 7, 7)); 18555 assert_true (ai_move (ai, 7, 0)); 18556 assert_true (ai_move (ai, 0, 6)); 18557 assert_true (ai_move (ai, 0, 7)); 18558 assert_true (ai_move (ai, 1, 1)); 18559 assert_true (ai_move (ai, 3, 0)); 18560 assert_true (game.pass ()); 18561 assert_true (ai_move (ai, 1, 7)); 18562 assert_true (ai_move (ai, 1, 6)); 18563 assert_true (ai_move (ai, 6, 7)); 18564 assert_true (game.pass ()); 18565 assert_true (ai_move (ai, 0, 0)); 18566 assert_true (ai_move (ai, 1, 0)); 18567 } 18568 18569 private static inline void test_complete_reversi_game_231 () 18570 { 18571 /* 0 1 2 3 4 5 6 7 */ 18572 string [] board = {/* 0 */ " . . . . . . . .", 18573 /* 1 */ " . . . . . . . .", 18574 /* 2 */ " . . L . . . . .", 18575 /* 3 */ " . L L L D . . .", 18576 /* 4 */ " . . . D D D . .", 18577 /* 5 */ " . . . . . . . .", 18578 /* 6 */ " . . . . . . . .", 18579 /* 7 */ " . . . . . . . ."}; 18580 18581 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 18582 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 18583 18584 assert_true (ai_move (ai, 1, 2)); 18585 assert_true (ai_move (ai, 2, 4)); 18586 assert_true (ai_move (ai, 3, 2)); 18587 assert_true (ai_move (ai, 3, 1)); 18588 assert_true (ai_move (ai, 0, 3)); 18589 assert_true (ai_move (ai, 0, 4)); 18590 assert_true (ai_move (ai, 0, 5)); 18591 assert_true (ai_move (ai, 0, 2)); 18592 assert_true (ai_move (ai, 0, 1)); 18593 assert_true (ai_move (ai, 4, 2)); 18594 assert_true (ai_move (ai, 2, 1)); 18595 assert_true (ai_move (ai, 2, 0)); 18596 assert_true (ai_move (ai, 5, 2)); 18597 assert_true (ai_move (ai, 4, 1)); 18598 assert_true (ai_move (ai, 1, 5)); 18599 assert_true (ai_move (ai, 6, 3)); 18600 assert_true (ai_move (ai, 1, 4)); 18601 assert_true (ai_move (ai, 6, 5)); 18602 assert_true (ai_move (ai, 5, 0)); 18603 assert_true (ai_move (ai, 5, 3)); 18604 assert_true (ai_move (ai, 5, 1)); 18605 assert_true (ai_move (ai, 4, 0)); 18606 assert_true (ai_move (ai, 5, 5)); 18607 assert_true (ai_move (ai, 6, 4)); 18608 assert_true (ai_move (ai, 6, 2)); 18609 assert_true (ai_move (ai, 4, 6)); 18610 assert_true (ai_move (ai, 5, 6)); 18611 assert_true (ai_move (ai, 7, 2)); 18612 assert_true (ai_move (ai, 3, 7)); 18613 assert_true (ai_move (ai, 5, 7)); 18614 assert_true (ai_move (ai, 7, 4)); 18615 assert_true (ai_move (ai, 7, 3)); 18616 assert_true (ai_move (ai, 7, 1)); 18617 assert_true (ai_move (ai, 4, 5)); 18618 assert_true (ai_move (ai, 7, 5)); 18619 assert_true (ai_move (ai, 4, 7)); 18620 assert_true (ai_move (ai, 7, 6)); 18621 assert_true (ai_move (ai, 2, 7)); 18622 assert_true (ai_move (ai, 3, 6)); 18623 assert_true (ai_move (ai, 2, 6)); 18624 assert_true (ai_move (ai, 6, 1)); 18625 assert_true (ai_move (ai, 2, 5)); 18626 assert_true (ai_move (ai, 3, 5)); 18627 assert_true (ai_move (ai, 6, 0)); 18628 assert_true (ai_move (ai, 6, 6)); 18629 assert_true (ai_move (ai, 7, 7)); 18630 assert_true (ai_move (ai, 7, 0)); 18631 assert_true (ai_move (ai, 0, 6)); 18632 assert_true (ai_move (ai, 0, 7)); 18633 assert_true (ai_move (ai, 1, 1)); 18634 assert_true (ai_move (ai, 3, 0)); 18635 assert_true (game.pass ()); 18636 assert_true (ai_move (ai, 1, 7)); 18637 assert_true (ai_move (ai, 1, 6)); 18638 assert_true (ai_move (ai, 6, 7)); 18639 assert_true (game.pass ()); 18640 assert_true (ai_move (ai, 0, 0)); 18641 assert_true (ai_move (ai, 1, 0)); 18642 } 18643 18644 private static inline void test_complete_reversi_game_232 () 18645 { 18646 /* 0 1 2 3 4 5 6 7 */ 18647 string [] board = {/* 0 */ " . . . . . . . .", 18648 /* 1 */ " . . . . . . . .", 18649 /* 2 */ " . . L . . . . .", 18650 /* 3 */ " . . D L D . . .", 18651 /* 4 */ " . . . D L . . .", 18652 /* 5 */ " . . . . D L . .", 18653 /* 6 */ " . . . . . . . .", 18654 /* 7 */ " . . . . . . . ."}; 18655 18656 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 18657 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 18658 18659 assert_true (ai_move (ai, 6, 5)); 18660 assert_true (ai_move (ai, 1, 3)); 18661 assert_true (ai_move (ai, 5, 4)); 18662 assert_true (ai_move (ai, 3, 5)); 18663 assert_true (ai_move (ai, 2, 5)); 18664 assert_true (ai_move (ai, 5, 6)); 18665 assert_true (ai_move (ai, 3, 6)); 18666 assert_true (ai_move (ai, 7, 4)); 18667 assert_true (ai_move (ai, 7, 5)); 18668 assert_true (ai_move (ai, 7, 6)); 18669 assert_true (ai_move (ai, 4, 7)); 18670 assert_true (ai_move (ai, 1, 5)); 18671 assert_true (ai_move (ai, 4, 6)); 18672 assert_true (ai_move (ai, 5, 7)); 18673 assert_true (ai_move (ai, 1, 4)); 18674 assert_true (ai_move (ai, 3, 7)); 18675 assert_true (ai_move (ai, 0, 5)); 18676 assert_true (ai_move (ai, 6, 3)); 18677 assert_true (ai_move (ai, 6, 4)); 18678 assert_true (ai_move (ai, 7, 3)); 18679 assert_true (ai_move (ai, 2, 7)); 18680 assert_true (ai_move (ai, 1, 7)); 18681 assert_true (ai_move (ai, 2, 6)); 18682 assert_true (ai_move (ai, 2, 4)); 18683 assert_true (ai_move (ai, 4, 2)); 18684 assert_true (ai_move (ai, 0, 4)); 18685 assert_true (ai_move (ai, 1, 6)); 18686 assert_true (ai_move (ai, 5, 1)); 18687 assert_true (ai_move (ai, 4, 1)); 18688 assert_true (ai_move (ai, 3, 1)); 18689 assert_true (ai_move (ai, 2, 0)); 18690 assert_true (ai_move (ai, 2, 1)); 18691 assert_true (ai_move (ai, 4, 0)); 18692 assert_true (ai_move (ai, 3, 2)); 18693 assert_true (ai_move (ai, 5, 2)); 18694 assert_true (ai_move (ai, 6, 2)); 18695 assert_true (ai_move (ai, 3, 0)); 18696 assert_true (ai_move (ai, 5, 3)); 18697 assert_true (ai_move (ai, 7, 2)); 18698 assert_true (ai_move (ai, 7, 1)); 18699 assert_true (ai_move (ai, 5, 0)); 18700 assert_true (ai_move (ai, 0, 7)); 18701 assert_true (ai_move (ai, 0, 3)); 18702 assert_true (ai_move (ai, 1, 2)); 18703 assert_true (ai_move (ai, 1, 0)); 18704 assert_true (ai_move (ai, 6, 1)); 18705 assert_true (ai_move (ai, 0, 2)); 18706 assert_true (ai_move (ai, 6, 0)); 18707 assert_true (ai_move (ai, 7, 0)); 18708 assert_true (ai_move (ai, 1, 1)); 18709 assert_true (ai_move (ai, 7, 7)); 18710 assert_true (game.pass ()); 18711 assert_true (ai_move (ai, 6, 7)); 18712 assert_true (ai_move (ai, 6, 6)); 18713 assert_true (ai_move (ai, 0, 0)); 18714 assert_true (ai_move (ai, 0, 1)); 18715 assert_true (ai_move (ai, 0, 6)); 18716 } 18717 18718 private static inline void test_complete_reversi_game_233 () 18719 { 18720 /* 0 1 2 3 4 5 6 7 */ 18721 string [] board = {/* 0 */ " . . . . . . . .", 18722 /* 1 */ " . . . . . . . .", 18723 /* 2 */ " . . . . . . . .", 18724 /* 3 */ " . . . D D . . .", 18725 /* 4 */ " . . . L L D . .", 18726 /* 5 */ " . . . . . L D .", 18727 /* 6 */ " . . . . . . L .", 18728 /* 7 */ " . . . . . . . ."}; 18729 18730 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 18731 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 18732 18733 assert_true (ai_move (ai, 5, 6)); 18734 assert_true (ai_move (ai, 4, 6)); 18735 assert_true (ai_move (ai, 4, 7)); 18736 assert_true (ai_move (ai, 6, 4)); 18737 assert_true (ai_move (ai, 7, 4)); 18738 assert_true (ai_move (ai, 5, 7)); 18739 assert_true (ai_move (ai, 6, 3)); 18740 assert_true (ai_move (ai, 3, 7)); 18741 assert_true (ai_move (ai, 2, 5)); 18742 assert_true (ai_move (ai, 7, 6)); 18743 assert_true (ai_move (ai, 4, 5)); 18744 assert_true (ai_move (ai, 3, 5)); 18745 assert_true (ai_move (ai, 2, 6)); 18746 assert_true (ai_move (ai, 1, 5)); 18747 assert_true (ai_move (ai, 3, 6)); 18748 assert_true (ai_move (ai, 2, 4)); 18749 assert_true (ai_move (ai, 0, 5)); 18750 assert_true (ai_move (ai, 1, 4)); 18751 assert_true (ai_move (ai, 7, 5)); 18752 assert_true (ai_move (ai, 7, 3)); 18753 assert_true (ai_move (ai, 2, 7)); 18754 assert_true (ai_move (ai, 1, 7)); 18755 assert_true (ai_move (ai, 0, 3)); 18756 assert_true (ai_move (ai, 5, 3)); 18757 assert_true (ai_move (ai, 2, 3)); 18758 assert_true (ai_move (ai, 2, 2)); 18759 assert_true (ai_move (ai, 4, 2)); 18760 assert_true (ai_move (ai, 1, 3)); 18761 assert_true (ai_move (ai, 3, 2)); 18762 assert_true (ai_move (ai, 5, 1)); 18763 assert_true (ai_move (ai, 1, 2)); 18764 assert_true (ai_move (ai, 2, 1)); 18765 assert_true (ai_move (ai, 4, 1)); 18766 assert_true (ai_move (ai, 4, 0)); 18767 assert_true (ai_move (ai, 3, 1)); 18768 assert_true (ai_move (ai, 3, 0)); 18769 assert_true (ai_move (ai, 7, 2)); 18770 assert_true (ai_move (ai, 7, 1)); 18771 assert_true (ai_move (ai, 5, 2)); 18772 assert_true (ai_move (ai, 0, 4)); 18773 assert_true (ai_move (ai, 2, 0)); 18774 assert_true (ai_move (ai, 0, 2)); 18775 assert_true (ai_move (ai, 0, 1)); 18776 assert_true (ai_move (ai, 6, 2)); 18777 assert_true (ai_move (ai, 0, 6)); 18778 assert_true (ai_move (ai, 1, 1)); 18779 assert_true (ai_move (ai, 1, 6)); 18780 assert_true (ai_move (ai, 1, 0)); 18781 assert_true (ai_move (ai, 5, 0)); 18782 assert_true (ai_move (ai, 6, 0)); 18783 assert_true (ai_move (ai, 6, 1)); 18784 assert_true (game.pass ()); 18785 assert_true (ai_move (ai, 6, 7)); 18786 assert_true (ai_move (ai, 7, 7)); 18787 } 18788 18789 private static inline void test_complete_reversi_game_234 () 18790 { 18791 /* 0 1 2 3 4 5 6 7 */ 18792 string [] board = {/* 0 */ " . . . . . . . .", 18793 /* 1 */ " . . . . . . . .", 18794 /* 2 */ " . . . . . . . .", 18795 /* 3 */ " . . . D D . . .", 18796 /* 4 */ " . . . L L L L .", 18797 /* 5 */ " . . . . . D D .", 18798 /* 6 */ " . . . . . . . .", 18799 /* 7 */ " . . . . . . . ."}; 18800 18801 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 18802 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 18803 18804 assert_true (ai_move (ai, 5, 3)); 18805 assert_true (ai_move (ai, 4, 6)); 18806 assert_true (ai_move (ai, 5, 6)); 18807 assert_true (ai_move (ai, 6, 2)); 18808 assert_true (ai_move (ai, 5, 2)); 18809 assert_true (ai_move (ai, 2, 2)); 18810 assert_true (ai_move (ai, 7, 2)); 18811 assert_true (ai_move (ai, 4, 2)); 18812 assert_true (ai_move (ai, 7, 3)); 18813 assert_true (ai_move (ai, 5, 1)); 18814 assert_true (ai_move (ai, 5, 0)); 18815 assert_true (ai_move (ai, 7, 5)); 18816 assert_true (ai_move (ai, 6, 3)); 18817 assert_true (ai_move (ai, 5, 7)); 18818 assert_true (ai_move (ai, 3, 1)); 18819 assert_true (ai_move (ai, 7, 6)); 18820 assert_true (ai_move (ai, 1, 3)); 18821 assert_true (ai_move (ai, 4, 1)); 18822 assert_true (ai_move (ai, 3, 0)); 18823 assert_true (ai_move (ai, 4, 0)); 18824 assert_true (ai_move (ai, 3, 2)); 18825 assert_true (ai_move (ai, 2, 1)); 18826 assert_true (ai_move (ai, 2, 0)); 18827 assert_true (ai_move (ai, 1, 2)); 18828 assert_true (ai_move (ai, 0, 2)); 18829 assert_true (ai_move (ai, 0, 4)); 18830 assert_true (ai_move (ai, 1, 4)); 18831 assert_true (ai_move (ai, 2, 4)); 18832 assert_true (ai_move (ai, 2, 3)); 18833 assert_true (ai_move (ai, 1, 1)); 18834 assert_true (ai_move (ai, 1, 5)); 18835 assert_true (ai_move (ai, 2, 5)); 18836 assert_true (ai_move (ai, 2, 6)); 18837 assert_true (ai_move (ai, 3, 5)); 18838 assert_true (ai_move (ai, 0, 5)); 18839 assert_true (ai_move (ai, 2, 7)); 18840 assert_true (ai_move (ai, 0, 3)); 18841 assert_true (ai_move (ai, 0, 1)); 18842 assert_true (ai_move (ai, 0, 0)); 18843 assert_true (ai_move (ai, 1, 0)); 18844 assert_true (ai_move (ai, 4, 5)); 18845 assert_true (ai_move (ai, 3, 6)); 18846 assert_true (ai_move (ai, 4, 7)); 18847 assert_true (ai_move (ai, 3, 7)); 18848 assert_true (ai_move (ai, 1, 7)); 18849 assert_true (ai_move (ai, 0, 7)); 18850 assert_true (ai_move (ai, 6, 6)); 18851 assert_true (ai_move (ai, 6, 7)); 18852 assert_true (game.pass ()); 18853 assert_true (ai_move (ai, 7, 7)); 18854 assert_true (game.pass ()); 18855 assert_true (ai_move (ai, 7, 4)); 18856 assert_true (ai_move (ai, 6, 1)); 18857 assert_true (ai_move (ai, 0, 6)); 18858 assert_true (ai_move (ai, 1, 6)); 18859 assert_true (ai_move (ai, 7, 0)); 18860 assert_true (ai_move (ai, 7, 1)); 18861 assert_true (ai_move (ai, 6, 0)); 18862 } 18863 18864 private static inline void test_complete_reversi_game_235 () 18865 { 18866 /* 0 1 2 3 4 5 6 7 */ 18867 string [] board = {/* 0 */ " . . . . . . . .", 18868 /* 1 */ " . . . . . . . .", 18869 /* 2 */ " . . . . . L . .", 18870 /* 3 */ " . . . D L . . .", 18871 /* 4 */ " . . . L L D . .", 18872 /* 5 */ " . . . . . D D .", 18873 /* 6 */ " . . . . . . . .", 18874 /* 7 */ " . . . . . . . ."}; 18875 18876 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 18877 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 18878 18879 assert_true (ai_move (ai, 3, 2)); 18880 assert_true (ai_move (ai, 6, 4)); 18881 assert_true (ai_move (ai, 5, 3)); 18882 assert_true (ai_move (ai, 5, 6)); 18883 assert_true (ai_move (ai, 4, 7)); 18884 assert_true (ai_move (ai, 5, 7)); 18885 assert_true (ai_move (ai, 6, 7)); 18886 assert_true (ai_move (ai, 7, 5)); 18887 assert_true (ai_move (ai, 6, 3)); 18888 assert_true (ai_move (ai, 6, 2)); 18889 assert_true (ai_move (ai, 2, 5)); 18890 assert_true (ai_move (ai, 4, 2)); 18891 assert_true (ai_move (ai, 5, 1)); 18892 assert_true (ai_move (ai, 3, 1)); 18893 assert_true (ai_move (ai, 7, 2)); 18894 assert_true (ai_move (ai, 4, 6)); 18895 assert_true (ai_move (ai, 4, 5)); 18896 assert_true (ai_move (ai, 2, 1)); 18897 assert_true (ai_move (ai, 2, 2)); 18898 assert_true (ai_move (ai, 4, 1)); 18899 assert_true (ai_move (ai, 5, 0)); 18900 assert_true (ai_move (ai, 1, 3)); 18901 assert_true (ai_move (ai, 1, 2)); 18902 assert_true (ai_move (ai, 0, 3)); 18903 assert_true (ai_move (ai, 3, 5)); 18904 assert_true (ai_move (ai, 7, 3)); 18905 assert_true (ai_move (ai, 2, 0)); 18906 assert_true (ai_move (ai, 1, 5)); 18907 assert_true (ai_move (ai, 2, 4)); 18908 assert_true (ai_move (ai, 2, 6)); 18909 assert_true (ai_move (ai, 4, 0)); 18910 assert_true (ai_move (ai, 1, 4)); 18911 assert_true (ai_move (ai, 3, 6)); 18912 assert_true (ai_move (ai, 2, 7)); 18913 assert_true (ai_move (ai, 0, 5)); 18914 assert_true (ai_move (ai, 3, 7)); 18915 assert_true (ai_move (ai, 1, 7)); 18916 assert_true (ai_move (ai, 2, 3)); 18917 assert_true (ai_move (ai, 0, 2)); 18918 assert_true (ai_move (ai, 0, 1)); 18919 assert_true (ai_move (ai, 7, 4)); 18920 assert_true (ai_move (ai, 7, 1)); 18921 assert_true (ai_move (ai, 6, 6)); 18922 assert_true (ai_move (ai, 3, 0)); 18923 assert_true (ai_move (ai, 6, 1)); 18924 assert_true (ai_move (ai, 7, 7)); 18925 assert_true (ai_move (ai, 0, 4)); 18926 assert_true (ai_move (ai, 0, 6)); 18927 assert_true (ai_move (ai, 7, 6)); 18928 assert_true (ai_move (ai, 0, 7)); 18929 assert_true (ai_move (ai, 7, 0)); 18930 assert_true (ai_move (ai, 1, 6)); 18931 assert_true (ai_move (ai, 1, 0)); 18932 assert_true (ai_move (ai, 6, 0)); 18933 assert_true (ai_move (ai, 1, 1)); 18934 assert_true (ai_move (ai, 0, 0)); 18935 } 18936 18937 private static inline void test_complete_reversi_game_236 () 18938 { 18939 /* 0 1 2 3 4 5 6 7 */ 18940 string [] board = {/* 0 */ " . . . . . . . .", 18941 /* 1 */ " . . . . . . . .", 18942 /* 2 */ " . . . . L . . .", 18943 /* 3 */ " . . . D L . . .", 18944 /* 4 */ " . . . L L D . .", 18945 /* 5 */ " . . . . . D D .", 18946 /* 6 */ " . . . . . . . .", 18947 /* 7 */ " . . . . . . . ."}; 18948 18949 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 18950 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 18951 18952 assert_true (ai_move (ai, 5, 1)); 18953 assert_true (ai_move (ai, 3, 2)); 18954 assert_true (ai_move (ai, 2, 1)); 18955 assert_true (ai_move (ai, 3, 1)); 18956 assert_true (ai_move (ai, 2, 0)); 18957 assert_true (ai_move (ai, 6, 4)); 18958 assert_true (ai_move (ai, 5, 3)); 18959 assert_true (ai_move (ai, 5, 2)); 18960 assert_true (ai_move (ai, 7, 5)); 18961 assert_true (ai_move (ai, 5, 0)); 18962 assert_true (ai_move (ai, 2, 3)); 18963 assert_true (ai_move (ai, 6, 2)); 18964 assert_true (ai_move (ai, 4, 1)); 18965 assert_true (ai_move (ai, 5, 6)); 18966 assert_true (ai_move (ai, 4, 6)); 18967 assert_true (ai_move (ai, 2, 2)); 18968 assert_true (ai_move (ai, 6, 3)); 18969 assert_true (ai_move (ai, 6, 1)); 18970 assert_true (ai_move (ai, 1, 3)); 18971 assert_true (ai_move (ai, 1, 2)); 18972 assert_true (ai_move (ai, 4, 5)); 18973 assert_true (ai_move (ai, 3, 5)); 18974 assert_true (ai_move (ai, 7, 2)); 18975 assert_true (ai_move (ai, 7, 4)); 18976 assert_true (ai_move (ai, 7, 3)); 18977 assert_true (ai_move (ai, 6, 6)); 18978 assert_true (ai_move (ai, 2, 6)); 18979 assert_true (ai_move (ai, 2, 5)); 18980 assert_true (ai_move (ai, 0, 2)); 18981 assert_true (ai_move (ai, 7, 1)); 18982 assert_true (ai_move (ai, 7, 0)); 18983 assert_true (ai_move (ai, 3, 0)); 18984 assert_true (ai_move (ai, 1, 5)); 18985 assert_true (ai_move (ai, 0, 4)); 18986 assert_true (ai_move (ai, 6, 0)); 18987 assert_true (ai_move (ai, 4, 0)); 18988 assert_true (ai_move (ai, 1, 4)); 18989 assert_true (ai_move (ai, 2, 4)); 18990 assert_true (ai_move (ai, 0, 3)); 18991 assert_true (ai_move (ai, 0, 1)); 18992 assert_true (ai_move (ai, 4, 7)); 18993 assert_true (ai_move (ai, 0, 5)); 18994 assert_true (ai_move (ai, 7, 7)); 18995 assert_true (ai_move (ai, 0, 6)); 18996 assert_true (ai_move (ai, 1, 1)); 18997 assert_true (ai_move (ai, 7, 6)); 18998 assert_true (ai_move (ai, 1, 6)); 18999 assert_true (ai_move (ai, 1, 7)); 19000 assert_true (ai_move (ai, 3, 6)); 19001 assert_true (ai_move (ai, 0, 7)); 19002 assert_true (game.pass ()); 19003 assert_true (ai_move (ai, 2, 7)); 19004 assert_true (ai_move (ai, 3, 7)); 19005 assert_true (ai_move (ai, 5, 7)); 19006 assert_true (ai_move (ai, 6, 7)); 19007 assert_true (ai_move (ai, 0, 0)); 19008 assert_true (ai_move (ai, 1, 0)); 19009 } 19010 19011 private static inline void test_complete_reversi_game_237 () 19012 { 19013 /* 0 1 2 3 4 5 6 7 */ 19014 string [] board = {/* 0 */ " . . . . . . . .", 19015 /* 1 */ " . . . . . . . .", 19016 /* 2 */ " . . . L . . . .", 19017 /* 3 */ " . . . L D . . .", 19018 /* 4 */ " . . . L L D . .", 19019 /* 5 */ " . . . . . D D .", 19020 /* 6 */ " . . . . . . . .", 19021 /* 7 */ " . . . . . . . ."}; 19022 19023 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 19024 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 19025 19026 assert_true (ai_move (ai, 2, 1)); 19027 assert_true (ai_move (ai, 5, 2)); 19028 assert_true (ai_move (ai, 2, 2)); 19029 assert_true (ai_move (ai, 4, 5)); 19030 assert_true (ai_move (ai, 3, 6)); 19031 assert_true (ai_move (ai, 6, 4)); 19032 assert_true (ai_move (ai, 7, 3)); 19033 assert_true (ai_move (ai, 4, 6)); 19034 assert_true (ai_move (ai, 6, 3)); 19035 assert_true (ai_move (ai, 5, 6)); 19036 assert_true (ai_move (ai, 4, 7)); 19037 assert_true (ai_move (ai, 2, 7)); 19038 assert_true (ai_move (ai, 4, 1)); 19039 assert_true (ai_move (ai, 7, 5)); 19040 assert_true (ai_move (ai, 7, 4)); 19041 assert_true (ai_move (ai, 5, 3)); 19042 assert_true (ai_move (ai, 7, 6)); 19043 assert_true (ai_move (ai, 5, 1)); 19044 assert_true (ai_move (ai, 5, 0)); 19045 assert_true (ai_move (ai, 4, 2)); 19046 assert_true (ai_move (ai, 3, 1)); 19047 assert_true (ai_move (ai, 4, 0)); 19048 assert_true (ai_move (ai, 3, 0)); 19049 assert_true (ai_move (ai, 1, 2)); 19050 assert_true (ai_move (ai, 0, 2)); 19051 assert_true (ai_move (ai, 2, 3)); 19052 assert_true (ai_move (ai, 1, 4)); 19053 assert_true (ai_move (ai, 1, 3)); 19054 assert_true (ai_move (ai, 0, 4)); 19055 assert_true (ai_move (ai, 0, 3)); 19056 assert_true (ai_move (ai, 3, 7)); 19057 assert_true (ai_move (ai, 5, 7)); 19058 assert_true (ai_move (ai, 2, 6)); 19059 assert_true (ai_move (ai, 6, 7)); 19060 assert_true (ai_move (ai, 2, 5)); 19061 assert_true (ai_move (ai, 2, 4)); 19062 assert_true (ai_move (ai, 3, 5)); 19063 assert_true (ai_move (ai, 7, 2)); 19064 assert_true (ai_move (ai, 7, 1)); 19065 assert_true (ai_move (ai, 2, 0)); 19066 assert_true (ai_move (ai, 6, 2)); 19067 assert_true (ai_move (ai, 6, 0)); 19068 assert_true (ai_move (ai, 1, 5)); 19069 assert_true (ai_move (ai, 6, 6)); 19070 assert_true (ai_move (ai, 1, 6)); 19071 assert_true (ai_move (ai, 1, 7)); 19072 assert_true (ai_move (ai, 1, 1)); 19073 assert_true (ai_move (ai, 0, 0)); 19074 assert_true (ai_move (ai, 0, 1)); 19075 assert_true (ai_move (ai, 1, 0)); 19076 assert_true (ai_move (ai, 0, 5)); 19077 assert_true (ai_move (ai, 0, 6)); 19078 assert_true (ai_move (ai, 0, 7)); 19079 assert_true (ai_move (ai, 6, 1)); 19080 assert_true (ai_move (ai, 7, 7)); 19081 assert_true (game.pass ()); 19082 assert_true (ai_move (ai, 7, 0)); 19083 } 19084 19085 private static inline void test_complete_reversi_game_238 () 19086 { 19087 /* 0 1 2 3 4 5 6 7 */ 19088 string [] board = {/* 0 */ " . . . . . . . .", 19089 /* 1 */ " . . . . . . . .", 19090 /* 2 */ " . . L . . . . .", 19091 /* 3 */ " . . . L D . . .", 19092 /* 4 */ " . . . L L D . .", 19093 /* 5 */ " . . . . . D D .", 19094 /* 6 */ " . . . . . . . .", 19095 /* 7 */ " . . . . . . . ."}; 19096 19097 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 19098 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 19099 19100 assert_true (ai_move (ai, 2, 5)); 19101 assert_true (ai_move (ai, 5, 3)); 19102 assert_true (ai_move (ai, 5, 2)); 19103 assert_true (ai_move (ai, 6, 2)); 19104 assert_true (ai_move (ai, 6, 3)); 19105 assert_true (ai_move (ai, 6, 4)); 19106 assert_true (ai_move (ai, 7, 2)); 19107 assert_true (ai_move (ai, 5, 6)); 19108 assert_true (ai_move (ai, 7, 3)); 19109 assert_true (ai_move (ai, 5, 1)); 19110 assert_true (ai_move (ai, 4, 1)); 19111 assert_true (ai_move (ai, 7, 5)); 19112 assert_true (ai_move (ai, 5, 0)); 19113 assert_true (ai_move (ai, 3, 5)); 19114 assert_true (ai_move (ai, 4, 5)); 19115 assert_true (ai_move (ai, 3, 6)); 19116 assert_true (ai_move (ai, 2, 6)); 19117 assert_true (ai_move (ai, 1, 4)); 19118 assert_true (ai_move (ai, 1, 5)); 19119 assert_true (ai_move (ai, 0, 5)); 19120 assert_true (ai_move (ai, 2, 7)); 19121 assert_true (ai_move (ai, 4, 7)); 19122 assert_true (ai_move (ai, 5, 7)); 19123 assert_true (ai_move (ai, 4, 6)); 19124 assert_true (ai_move (ai, 3, 7)); 19125 assert_true (ai_move (ai, 7, 4)); 19126 assert_true (ai_move (ai, 7, 6)); 19127 assert_true (ai_move (ai, 4, 2)); 19128 assert_true (ai_move (ai, 3, 1)); 19129 assert_true (ai_move (ai, 6, 1)); 19130 assert_true (ai_move (ai, 0, 3)); 19131 assert_true (ai_move (ai, 1, 6)); 19132 assert_true (ai_move (ai, 3, 2)); 19133 assert_true (ai_move (ai, 7, 1)); 19134 assert_true (ai_move (ai, 7, 0)); 19135 assert_true (ai_move (ai, 2, 0)); 19136 assert_true (ai_move (ai, 2, 4)); 19137 assert_true (ai_move (ai, 1, 7)); 19138 assert_true (ai_move (ai, 0, 7)); 19139 assert_true (ai_move (ai, 1, 3)); 19140 assert_true (ai_move (ai, 0, 2)); 19141 assert_true (ai_move (ai, 1, 2)); 19142 assert_true (ai_move (ai, 0, 6)); 19143 assert_true (ai_move (ai, 0, 4)); 19144 assert_true (ai_move (ai, 2, 3)); 19145 assert_true (ai_move (ai, 6, 0)); 19146 assert_true (ai_move (ai, 4, 0)); 19147 assert_true (ai_move (ai, 2, 1)); 19148 assert_true (ai_move (ai, 3, 0)); 19149 assert_true (ai_move (ai, 6, 6)); 19150 assert_true (ai_move (ai, 6, 7)); 19151 assert_true (ai_move (ai, 1, 0)); 19152 assert_true (ai_move (ai, 0, 0)); 19153 assert_true (ai_move (ai, 0, 1)); 19154 assert_true (ai_move (ai, 1, 1)); 19155 assert_true (game.pass ()); 19156 assert_true (ai_move (ai, 7, 7)); 19157 } 19158 19159 private static inline void test_complete_reversi_game_239 () 19160 { 19161 /* 0 1 2 3 4 5 6 7 */ 19162 string [] board = {/* 0 */ " . . . . . . . .", 19163 /* 1 */ " . . . . . . . .", 19164 /* 2 */ " . . . . . . . .", 19165 /* 3 */ " . . . D D D . .", 19166 /* 4 */ " . . . L L D . .", 19167 /* 5 */ " . . . . . L . .", 19168 /* 6 */ " . . . . . . L .", 19169 /* 7 */ " . . . . . . . ."}; 19170 19171 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 19172 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 19173 19174 assert_true (ai_move (ai, 5, 6)); 19175 assert_true (ai_move (ai, 6, 2)); 19176 assert_true (ai_move (ai, 5, 2)); 19177 assert_true (ai_move (ai, 6, 4)); 19178 assert_true (ai_move (ai, 6, 5)); 19179 assert_true (ai_move (ai, 4, 6)); 19180 assert_true (ai_move (ai, 5, 7)); 19181 assert_true (ai_move (ai, 4, 2)); 19182 assert_true (ai_move (ai, 3, 2)); 19183 assert_true (ai_move (ai, 2, 4)); 19184 assert_true (ai_move (ai, 5, 1)); 19185 assert_true (ai_move (ai, 2, 2)); 19186 assert_true (ai_move (ai, 3, 1)); 19187 assert_true (ai_move (ai, 6, 3)); 19188 assert_true (ai_move (ai, 1, 3)); 19189 assert_true (ai_move (ai, 4, 1)); 19190 assert_true (ai_move (ai, 7, 2)); 19191 assert_true (ai_move (ai, 2, 3)); 19192 assert_true (ai_move (ai, 2, 1)); 19193 assert_true (ai_move (ai, 5, 0)); 19194 assert_true (ai_move (ai, 3, 0)); 19195 assert_true (ai_move (ai, 4, 0)); 19196 assert_true (ai_move (ai, 6, 0)); 19197 assert_true (ai_move (ai, 7, 4)); 19198 assert_true (ai_move (ai, 2, 5)); 19199 assert_true (ai_move (ai, 7, 3)); 19200 assert_true (ai_move (ai, 3, 7)); 19201 assert_true (ai_move (ai, 1, 4)); 19202 assert_true (ai_move (ai, 3, 5)); 19203 assert_true (ai_move (ai, 1, 2)); 19204 assert_true (ai_move (ai, 0, 2)); 19205 assert_true (ai_move (ai, 1, 5)); 19206 assert_true (ai_move (ai, 0, 4)); 19207 assert_true (ai_move (ai, 2, 6)); 19208 assert_true (ai_move (ai, 2, 7)); 19209 assert_true (ai_move (ai, 0, 3)); 19210 assert_true (ai_move (ai, 0, 5)); 19211 assert_true (ai_move (ai, 4, 5)); 19212 assert_true (ai_move (ai, 3, 6)); 19213 assert_true (ai_move (ai, 7, 6)); 19214 assert_true (ai_move (ai, 6, 1)); 19215 assert_true (ai_move (ai, 4, 7)); 19216 assert_true (ai_move (ai, 1, 6)); 19217 assert_true (ai_move (ai, 7, 1)); 19218 assert_true (ai_move (ai, 7, 7)); 19219 assert_true (ai_move (ai, 6, 7)); 19220 assert_true (ai_move (ai, 7, 5)); 19221 assert_true (ai_move (ai, 7, 0)); 19222 assert_true (game.pass ()); 19223 assert_true (ai_move (ai, 2, 0)); 19224 assert_true (ai_move (ai, 1, 0)); 19225 assert_true (ai_move (ai, 0, 0)); 19226 assert_true (ai_move (ai, 1, 1)); 19227 assert_true (ai_move (ai, 0, 1)); 19228 assert_true (game.pass ()); 19229 assert_true (ai_move (ai, 0, 7)); 19230 assert_true (ai_move (ai, 0, 6)); 19231 assert_true (ai_move (ai, 1, 7)); 19232 } 19233 19234 private static inline void test_complete_reversi_game_240 () 19235 { 19236 /* 0 1 2 3 4 5 6 7 */ 19237 string [] board = {/* 0 */ " . . . . . . . .", 19238 /* 1 */ " . . . . . . . .", 19239 /* 2 */ " . . . . . . . .", 19240 /* 3 */ " . . . D D D . .", 19241 /* 4 */ " . . . L L L L .", 19242 /* 5 */ " . . . . . D . .", 19243 /* 6 */ " . . . . . . . .", 19244 /* 7 */ " . . . . . . . ."}; 19245 19246 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 19247 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 19248 19249 assert_true (ai_move (ai, 6, 5)); 19250 assert_true (ai_move (ai, 4, 6)); 19251 assert_true (ai_move (ai, 5, 6)); 19252 assert_true (ai_move (ai, 6, 2)); 19253 assert_true (ai_move (ai, 5, 2)); 19254 assert_true (ai_move (ai, 2, 2)); 19255 assert_true (ai_move (ai, 7, 2)); 19256 assert_true (ai_move (ai, 4, 2)); 19257 assert_true (ai_move (ai, 7, 3)); 19258 assert_true (ai_move (ai, 5, 1)); 19259 assert_true (ai_move (ai, 5, 0)); 19260 assert_true (ai_move (ai, 7, 5)); 19261 assert_true (ai_move (ai, 6, 3)); 19262 assert_true (ai_move (ai, 5, 7)); 19263 assert_true (ai_move (ai, 3, 1)); 19264 assert_true (ai_move (ai, 7, 6)); 19265 assert_true (ai_move (ai, 1, 3)); 19266 assert_true (ai_move (ai, 4, 1)); 19267 assert_true (ai_move (ai, 3, 0)); 19268 assert_true (ai_move (ai, 4, 0)); 19269 assert_true (ai_move (ai, 3, 2)); 19270 assert_true (ai_move (ai, 2, 1)); 19271 assert_true (ai_move (ai, 2, 0)); 19272 assert_true (ai_move (ai, 1, 2)); 19273 assert_true (ai_move (ai, 0, 2)); 19274 assert_true (ai_move (ai, 0, 4)); 19275 assert_true (ai_move (ai, 1, 4)); 19276 assert_true (ai_move (ai, 2, 4)); 19277 assert_true (ai_move (ai, 2, 3)); 19278 assert_true (ai_move (ai, 1, 1)); 19279 assert_true (ai_move (ai, 1, 5)); 19280 assert_true (ai_move (ai, 2, 5)); 19281 assert_true (ai_move (ai, 2, 6)); 19282 assert_true (ai_move (ai, 3, 5)); 19283 assert_true (ai_move (ai, 0, 5)); 19284 assert_true (ai_move (ai, 2, 7)); 19285 assert_true (ai_move (ai, 0, 3)); 19286 assert_true (ai_move (ai, 0, 1)); 19287 assert_true (ai_move (ai, 0, 0)); 19288 assert_true (ai_move (ai, 1, 0)); 19289 assert_true (ai_move (ai, 4, 5)); 19290 assert_true (ai_move (ai, 3, 6)); 19291 assert_true (ai_move (ai, 4, 7)); 19292 assert_true (ai_move (ai, 3, 7)); 19293 assert_true (ai_move (ai, 1, 7)); 19294 assert_true (ai_move (ai, 0, 7)); 19295 assert_true (ai_move (ai, 6, 6)); 19296 assert_true (ai_move (ai, 6, 7)); 19297 assert_true (game.pass ()); 19298 assert_true (ai_move (ai, 7, 7)); 19299 assert_true (game.pass ()); 19300 assert_true (ai_move (ai, 7, 4)); 19301 assert_true (ai_move (ai, 6, 1)); 19302 assert_true (ai_move (ai, 0, 6)); 19303 assert_true (ai_move (ai, 1, 6)); 19304 assert_true (ai_move (ai, 7, 0)); 19305 assert_true (ai_move (ai, 7, 1)); 19306 assert_true (ai_move (ai, 6, 0)); 19307 } 19308 19309 private static inline void test_complete_reversi_game_241 () 19310 { 19311 /* 0 1 2 3 4 5 6 7 */ 19312 string [] board = {/* 0 */ " . . . . . . . .", 19313 /* 1 */ " . . . . . . . .", 19314 /* 2 */ " . . . . . . L .", 19315 /* 3 */ " . . . D D L . .", 19316 /* 4 */ " . . . L L D . .", 19317 /* 5 */ " . . . . . D . .", 19318 /* 6 */ " . . . . . . . .", 19319 /* 7 */ " . . . . . . . ."}; 19320 19321 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 19322 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 19323 19324 assert_true (ai_move (ai, 5, 2)); 19325 assert_true (ai_move (ai, 6, 4)); 19326 assert_true (ai_move (ai, 6, 5)); 19327 assert_true (ai_move (ai, 4, 6)); 19328 assert_true (ai_move (ai, 5, 6)); 19329 assert_true (ai_move (ai, 2, 2)); 19330 assert_true (ai_move (ai, 7, 2)); 19331 assert_true (ai_move (ai, 4, 2)); 19332 assert_true (ai_move (ai, 7, 3)); 19333 assert_true (ai_move (ai, 5, 1)); 19334 assert_true (ai_move (ai, 5, 0)); 19335 assert_true (ai_move (ai, 7, 5)); 19336 assert_true (ai_move (ai, 6, 3)); 19337 assert_true (ai_move (ai, 5, 7)); 19338 assert_true (ai_move (ai, 3, 1)); 19339 assert_true (ai_move (ai, 7, 6)); 19340 assert_true (ai_move (ai, 1, 3)); 19341 assert_true (ai_move (ai, 4, 1)); 19342 assert_true (ai_move (ai, 3, 0)); 19343 assert_true (ai_move (ai, 4, 0)); 19344 assert_true (ai_move (ai, 3, 2)); 19345 assert_true (ai_move (ai, 2, 1)); 19346 assert_true (ai_move (ai, 2, 0)); 19347 assert_true (ai_move (ai, 1, 2)); 19348 assert_true (ai_move (ai, 0, 2)); 19349 assert_true (ai_move (ai, 0, 4)); 19350 assert_true (ai_move (ai, 1, 4)); 19351 assert_true (ai_move (ai, 2, 4)); 19352 assert_true (ai_move (ai, 2, 3)); 19353 assert_true (ai_move (ai, 1, 1)); 19354 assert_true (ai_move (ai, 1, 5)); 19355 assert_true (ai_move (ai, 2, 5)); 19356 assert_true (ai_move (ai, 2, 6)); 19357 assert_true (ai_move (ai, 3, 5)); 19358 assert_true (ai_move (ai, 0, 5)); 19359 assert_true (ai_move (ai, 2, 7)); 19360 assert_true (ai_move (ai, 0, 3)); 19361 assert_true (ai_move (ai, 0, 1)); 19362 assert_true (ai_move (ai, 0, 0)); 19363 assert_true (ai_move (ai, 1, 0)); 19364 assert_true (ai_move (ai, 4, 5)); 19365 assert_true (ai_move (ai, 3, 6)); 19366 assert_true (ai_move (ai, 4, 7)); 19367 assert_true (ai_move (ai, 3, 7)); 19368 assert_true (ai_move (ai, 1, 7)); 19369 assert_true (ai_move (ai, 0, 7)); 19370 assert_true (ai_move (ai, 6, 6)); 19371 assert_true (ai_move (ai, 6, 7)); 19372 assert_true (game.pass ()); 19373 assert_true (ai_move (ai, 7, 7)); 19374 assert_true (game.pass ()); 19375 assert_true (ai_move (ai, 7, 4)); 19376 assert_true (ai_move (ai, 6, 1)); 19377 assert_true (ai_move (ai, 0, 6)); 19378 assert_true (ai_move (ai, 1, 6)); 19379 assert_true (ai_move (ai, 7, 0)); 19380 assert_true (ai_move (ai, 7, 1)); 19381 assert_true (ai_move (ai, 6, 0)); 19382 } 19383 19384 private static inline void test_complete_reversi_game_242 () 19385 { 19386 /* 0 1 2 3 4 5 6 7 */ 19387 string [] board = {/* 0 */ " . . . . . . . .", 19388 /* 1 */ " . . . . . . . .", 19389 /* 2 */ " . . . . . L . .", 19390 /* 3 */ " . . . D L D . .", 19391 /* 4 */ " . . . L L D . .", 19392 /* 5 */ " . . . . . D . .", 19393 /* 6 */ " . . . . . . . .", 19394 /* 7 */ " . . . . . . . ."}; 19395 19396 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 19397 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 19398 19399 assert_true (ai_move (ai, 5, 1)); 19400 assert_true (ai_move (ai, 6, 4)); 19401 assert_true (ai_move (ai, 7, 5)); 19402 assert_true (ai_move (ai, 6, 1)); 19403 assert_true (ai_move (ai, 3, 5)); 19404 assert_true (ai_move (ai, 5, 6)); 19405 assert_true (ai_move (ai, 4, 6)); 19406 assert_true (ai_move (ai, 6, 3)); 19407 assert_true (ai_move (ai, 5, 7)); 19408 assert_true (ai_move (ai, 5, 0)); 19409 assert_true (ai_move (ai, 4, 2)); 19410 assert_true (ai_move (ai, 3, 2)); 19411 assert_true (ai_move (ai, 4, 1)); 19412 assert_true (ai_move (ai, 7, 4)); 19413 assert_true (ai_move (ai, 2, 2)); 19414 assert_true (ai_move (ai, 1, 2)); 19415 assert_true (ai_move (ai, 6, 5)); 19416 assert_true (ai_move (ai, 2, 5)); 19417 assert_true (ai_move (ai, 2, 4)); 19418 assert_true (ai_move (ai, 3, 1)); 19419 assert_true (ai_move (ai, 2, 0)); 19420 assert_true (ai_move (ai, 4, 0)); 19421 assert_true (ai_move (ai, 7, 3)); 19422 assert_true (ai_move (ai, 1, 5)); 19423 assert_true (ai_move (ai, 1, 4)); 19424 assert_true (ai_move (ai, 2, 3)); 19425 assert_true (ai_move (ai, 3, 6)); 19426 assert_true (ai_move (ai, 2, 6)); 19427 assert_true (ai_move (ai, 0, 5)); 19428 assert_true (ai_move (ai, 0, 4)); 19429 assert_true (ai_move (ai, 7, 0)); 19430 assert_true (ai_move (ai, 4, 7)); 19431 assert_true (ai_move (ai, 0, 3)); 19432 assert_true (ai_move (ai, 6, 2)); 19433 assert_true (ai_move (ai, 4, 5)); 19434 assert_true (ai_move (ai, 6, 0)); 19435 assert_true (ai_move (ai, 3, 0)); 19436 assert_true (ai_move (ai, 7, 2)); 19437 assert_true (ai_move (ai, 7, 1)); 19438 assert_true (ai_move (ai, 2, 1)); 19439 assert_true (ai_move (ai, 0, 2)); 19440 assert_true (ai_move (ai, 6, 7)); 19441 assert_true (ai_move (ai, 1, 3)); 19442 assert_true (ai_move (ai, 6, 6)); 19443 assert_true (ai_move (ai, 2, 7)); 19444 assert_true (ai_move (ai, 1, 1)); 19445 assert_true (ai_move (ai, 1, 0)); 19446 assert_true (ai_move (ai, 0, 0)); 19447 assert_true (ai_move (ai, 0, 1)); 19448 assert_true (ai_move (ai, 0, 6)); 19449 assert_true (ai_move (ai, 7, 7)); 19450 assert_true (ai_move (ai, 3, 7)); 19451 assert_true (ai_move (ai, 7, 6)); 19452 assert_true (ai_move (ai, 1, 6)); 19453 assert_true (ai_move (ai, 0, 7)); 19454 assert_true (ai_move (ai, 1, 7)); 19455 } 19456 19457 private static inline void test_complete_reversi_game_243 () 19458 { 19459 /* 0 1 2 3 4 5 6 7 */ 19460 string [] board = {/* 0 */ " . . . . . . . .", 19461 /* 1 */ " . . . . . . . .", 19462 /* 2 */ " . . . . L . . .", 19463 /* 3 */ " . . . D L D . .", 19464 /* 4 */ " . . . L L D . .", 19465 /* 5 */ " . . . . . D . .", 19466 /* 6 */ " . . . . . . . .", 19467 /* 7 */ " . . . . . . . ."}; 19468 19469 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 19470 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 19471 19472 assert_true (ai_move (ai, 5, 1)); 19473 assert_true (ai_move (ai, 4, 1)); 19474 assert_true (ai_move (ai, 3, 1)); 19475 assert_true (ai_move (ai, 6, 4)); 19476 assert_true (ai_move (ai, 7, 5)); 19477 assert_true (ai_move (ai, 4, 0)); 19478 assert_true (ai_move (ai, 2, 4)); 19479 assert_true (ai_move (ai, 6, 3)); 19480 assert_true (ai_move (ai, 5, 2)); 19481 assert_true (ai_move (ai, 6, 2)); 19482 assert_true (ai_move (ai, 5, 0)); 19483 assert_true (ai_move (ai, 3, 5)); 19484 assert_true (ai_move (ai, 7, 4)); 19485 assert_true (ai_move (ai, 5, 6)); 19486 assert_true (ai_move (ai, 6, 5)); 19487 assert_true (ai_move (ai, 1, 3)); 19488 assert_true (ai_move (ai, 4, 6)); 19489 assert_true (ai_move (ai, 7, 3)); 19490 assert_true (ai_move (ai, 7, 2)); 19491 assert_true (ai_move (ai, 2, 0)); 19492 assert_true (ai_move (ai, 3, 6)); 19493 assert_true (ai_move (ai, 5, 7)); 19494 assert_true (ai_move (ai, 2, 6)); 19495 assert_true (ai_move (ai, 4, 5)); 19496 assert_true (ai_move (ai, 1, 5)); 19497 assert_true (ai_move (ai, 2, 7)); 19498 assert_true (ai_move (ai, 0, 2)); 19499 assert_true (ai_move (ai, 2, 2)); 19500 assert_true (ai_move (ai, 3, 0)); 19501 assert_true (ai_move (ai, 6, 0)); 19502 assert_true (ai_move (ai, 2, 1)); 19503 assert_true (ai_move (ai, 1, 2)); 19504 assert_true (ai_move (ai, 3, 2)); 19505 assert_true (ai_move (ai, 0, 4)); 19506 assert_true (ai_move (ai, 1, 4)); 19507 assert_true (ai_move (ai, 2, 5)); 19508 assert_true (ai_move (ai, 3, 7)); 19509 assert_true (ai_move (ai, 4, 7)); 19510 assert_true (ai_move (ai, 1, 6)); 19511 assert_true (ai_move (ai, 2, 3)); 19512 assert_true (ai_move (ai, 1, 7)); 19513 assert_true (ai_move (ai, 0, 7)); 19514 assert_true (ai_move (ai, 0, 6)); 19515 assert_true (ai_move (ai, 0, 5)); 19516 assert_true (ai_move (ai, 1, 1)); 19517 assert_true (ai_move (ai, 0, 3)); 19518 assert_true (ai_move (ai, 1, 0)); 19519 assert_true (ai_move (ai, 0, 0)); 19520 assert_true (ai_move (ai, 0, 1)); 19521 assert_true (ai_move (ai, 6, 1)); 19522 assert_true (ai_move (ai, 6, 7)); 19523 assert_true (ai_move (ai, 7, 7)); 19524 assert_true (ai_move (ai, 7, 0)); 19525 assert_true (ai_move (ai, 7, 6)); 19526 assert_true (ai_move (ai, 6, 6)); 19527 assert_true (ai_move (ai, 7, 1)); 19528 } 19529 19530 private static inline void test_complete_reversi_game_244 () 19531 { 19532 /* 0 1 2 3 4 5 6 7 */ 19533 string [] board = {/* 0 */ " . . . . . . . .", 19534 /* 1 */ " . . . . . . . .", 19535 /* 2 */ " . . . L . . . .", 19536 /* 3 */ " . . . L D D . .", 19537 /* 4 */ " . . . L L D . .", 19538 /* 5 */ " . . . . . D . .", 19539 /* 6 */ " . . . . . . . .", 19540 /* 7 */ " . . . . . . . ."}; 19541 19542 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 19543 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 19544 19545 assert_true (ai_move (ai, 2, 1)); 19546 assert_true (ai_move (ai, 3, 1)); 19547 assert_true (ai_move (ai, 3, 5)); 19548 assert_true (ai_move (ai, 3, 6)); 19549 assert_true (ai_move (ai, 2, 6)); 19550 assert_true (ai_move (ai, 5, 2)); 19551 assert_true (ai_move (ai, 5, 1)); 19552 assert_true (ai_move (ai, 6, 5)); 19553 assert_true (ai_move (ai, 6, 4)); 19554 assert_true (ai_move (ai, 4, 5)); 19555 assert_true (ai_move (ai, 7, 5)); 19556 assert_true (ai_move (ai, 4, 6)); 19557 assert_true (ai_move (ai, 2, 7)); 19558 assert_true (ai_move (ai, 5, 6)); 19559 assert_true (ai_move (ai, 4, 7)); 19560 assert_true (ai_move (ai, 3, 7)); 19561 assert_true (ai_move (ai, 4, 2)); 19562 assert_true (ai_move (ai, 6, 3)); 19563 assert_true (ai_move (ai, 6, 2)); 19564 assert_true (ai_move (ai, 4, 1)); 19565 assert_true (ai_move (ai, 4, 0)); 19566 assert_true (ai_move (ai, 1, 5)); 19567 assert_true (ai_move (ai, 2, 0)); 19568 assert_true (ai_move (ai, 3, 0)); 19569 assert_true (ai_move (ai, 2, 5)); 19570 assert_true (ai_move (ai, 1, 2)); 19571 assert_true (ai_move (ai, 0, 5)); 19572 assert_true (ai_move (ai, 7, 2)); 19573 assert_true (ai_move (ai, 2, 4)); 19574 assert_true (ai_move (ai, 7, 4)); 19575 assert_true (ai_move (ai, 2, 2)); 19576 assert_true (ai_move (ai, 0, 4)); 19577 assert_true (ai_move (ai, 0, 2)); 19578 assert_true (ai_move (ai, 0, 3)); 19579 assert_true (ai_move (ai, 1, 1)); 19580 assert_true (ai_move (ai, 2, 3)); 19581 assert_true (ai_move (ai, 1, 4)); 19582 assert_true (ai_move (ai, 1, 3)); 19583 assert_true (ai_move (ai, 0, 1)); 19584 assert_true (ai_move (ai, 5, 7)); 19585 assert_true (ai_move (ai, 6, 7)); 19586 assert_true (ai_move (ai, 5, 0)); 19587 assert_true (ai_move (ai, 6, 0)); 19588 assert_true (ai_move (ai, 1, 6)); 19589 assert_true (ai_move (ai, 6, 6)); 19590 assert_true (ai_move (ai, 6, 1)); 19591 assert_true (ai_move (ai, 7, 3)); 19592 assert_true (ai_move (ai, 0, 0)); 19593 assert_true (ai_move (ai, 7, 1)); 19594 assert_true (ai_move (ai, 7, 0)); 19595 assert_true (ai_move (ai, 1, 0)); 19596 assert_true (ai_move (ai, 0, 6)); 19597 assert_true (ai_move (ai, 1, 7)); 19598 assert_true (ai_move (ai, 0, 7)); 19599 assert_true (game.pass ()); 19600 assert_true (ai_move (ai, 7, 7)); 19601 assert_true (ai_move (ai, 7, 6)); 19602 } 19603 19604 private static inline void test_complete_reversi_game_245 () 19605 { 19606 /* 0 1 2 3 4 5 6 7 */ 19607 string [] board = {/* 0 */ " . . . . . . . .", 19608 /* 1 */ " . . . . . . . .", 19609 /* 2 */ " . . L . . . . .", 19610 /* 3 */ " . . . L D D . .", 19611 /* 4 */ " . . . L L D . .", 19612 /* 5 */ " . . . . . D . .", 19613 /* 6 */ " . . . . . . . .", 19614 /* 7 */ " . . . . . . . ."}; 19615 19616 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 19617 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 19618 19619 assert_true (ai_move (ai, 3, 5)); 19620 assert_true (ai_move (ai, 3, 6)); 19621 assert_true (ai_move (ai, 2, 6)); 19622 assert_true (ai_move (ai, 5, 2)); 19623 assert_true (ai_move (ai, 5, 1)); 19624 assert_true (ai_move (ai, 6, 5)); 19625 assert_true (ai_move (ai, 6, 4)); 19626 assert_true (ai_move (ai, 4, 5)); 19627 assert_true (ai_move (ai, 7, 5)); 19628 assert_true (ai_move (ai, 4, 6)); 19629 assert_true (ai_move (ai, 2, 7)); 19630 assert_true (ai_move (ai, 5, 6)); 19631 assert_true (ai_move (ai, 4, 7)); 19632 assert_true (ai_move (ai, 3, 7)); 19633 assert_true (ai_move (ai, 4, 2)); 19634 assert_true (ai_move (ai, 1, 5)); 19635 assert_true (ai_move (ai, 2, 5)); 19636 assert_true (ai_move (ai, 6, 3)); 19637 assert_true (ai_move (ai, 6, 2)); 19638 assert_true (ai_move (ai, 4, 1)); 19639 assert_true (ai_move (ai, 0, 5)); 19640 assert_true (ai_move (ai, 7, 2)); 19641 assert_true (ai_move (ai, 3, 0)); 19642 assert_true (ai_move (ai, 0, 4)); 19643 assert_true (ai_move (ai, 0, 3)); 19644 assert_true (ai_move (ai, 2, 4)); 19645 assert_true (ai_move (ai, 1, 4)); 19646 assert_true (ai_move (ai, 2, 3)); 19647 assert_true (ai_move (ai, 2, 1)); 19648 assert_true (ai_move (ai, 7, 3)); 19649 assert_true (ai_move (ai, 5, 7)); 19650 assert_true (ai_move (ai, 5, 0)); 19651 assert_true (ai_move (ai, 3, 1)); 19652 assert_true (ai_move (ai, 3, 2)); 19653 assert_true (ai_move (ai, 4, 0)); 19654 assert_true (ai_move (ai, 2, 0)); 19655 assert_true (ai_move (ai, 7, 4)); 19656 assert_true (ai_move (ai, 7, 6)); 19657 assert_true (ai_move (ai, 0, 6)); 19658 assert_true (ai_move (ai, 1, 0)); 19659 assert_true (ai_move (ai, 6, 6)); 19660 assert_true (ai_move (ai, 1, 2)); 19661 assert_true (ai_move (ai, 0, 2)); 19662 assert_true (ai_move (ai, 7, 7)); 19663 assert_true (ai_move (ai, 6, 7)); 19664 assert_true (ai_move (ai, 1, 3)); 19665 assert_true (ai_move (ai, 1, 1)); 19666 assert_true (ai_move (ai, 0, 0)); 19667 assert_true (ai_move (ai, 7, 1)); 19668 assert_true (ai_move (ai, 0, 1)); 19669 assert_true (ai_move (ai, 6, 0)); 19670 assert_true (ai_move (ai, 0, 7)); 19671 assert_true (game.pass ()); 19672 assert_true (ai_move (ai, 1, 7)); 19673 assert_true (ai_move (ai, 1, 6)); 19674 assert_true (ai_move (ai, 6, 1)); 19675 assert_true (ai_move (ai, 7, 0)); 19676 } 19677 19678 private static inline void test_complete_reversi_game_246 () 19679 { 19680 /* 0 1 2 3 4 5 6 7 */ 19681 string [] board = {/* 0 */ " . . . . . . . .", 19682 /* 1 */ " . . . . . . . .", 19683 /* 2 */ " . . . . . . . .", 19684 /* 3 */ " . . . D D . . .", 19685 /* 4 */ " . . . L D L . .", 19686 /* 5 */ " . . . . L L . .", 19687 /* 6 */ " . . . . . L . .", 19688 /* 7 */ " . . . . . . . ."}; 19689 19690 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 19691 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 19692 19693 assert_true (ai_move (ai, 2, 5)); 19694 assert_true (ai_move (ai, 3, 2)); 19695 assert_true (ai_move (ai, 4, 6)); 19696 assert_true (ai_move (ai, 3, 6)); 19697 assert_true (ai_move (ai, 3, 1)); 19698 assert_true (ai_move (ai, 1, 4)); 19699 assert_true (ai_move (ai, 4, 2)); 19700 assert_true (ai_move (ai, 2, 3)); 19701 assert_true (ai_move (ai, 1, 3)); 19702 assert_true (ai_move (ai, 5, 2)); 19703 assert_true (ai_move (ai, 6, 2)); 19704 assert_true (ai_move (ai, 2, 1)); 19705 assert_true (ai_move (ai, 4, 1)); 19706 assert_true (ai_move (ai, 4, 0)); 19707 assert_true (ai_move (ai, 5, 0)); 19708 assert_true (ai_move (ai, 2, 0)); 19709 assert_true (ai_move (ai, 5, 3)); 19710 assert_true (ai_move (ai, 5, 1)); 19711 assert_true (ai_move (ai, 6, 3)); 19712 assert_true (ai_move (ai, 6, 4)); 19713 assert_true (ai_move (ai, 2, 4)); 19714 assert_true (ai_move (ai, 7, 4)); 19715 assert_true (ai_move (ai, 2, 6)); 19716 assert_true (ai_move (ai, 7, 3)); 19717 assert_true (ai_move (ai, 7, 2)); 19718 assert_true (ai_move (ai, 7, 1)); 19719 assert_true (ai_move (ai, 1, 5)); 19720 assert_true (ai_move (ai, 2, 2)); 19721 assert_true (ai_move (ai, 5, 7)); 19722 assert_true (ai_move (ai, 6, 5)); 19723 assert_true (ai_move (ai, 1, 2)); 19724 assert_true (ai_move (ai, 0, 2)); 19725 assert_true (ai_move (ai, 4, 7)); 19726 assert_true (ai_move (ai, 0, 3)); 19727 assert_true (ai_move (ai, 3, 5)); 19728 assert_true (ai_move (ai, 0, 4)); 19729 assert_true (ai_move (ai, 7, 5)); 19730 assert_true (ai_move (ai, 7, 6)); 19731 assert_true (ai_move (ai, 0, 5)); 19732 assert_true (ai_move (ai, 6, 6)); 19733 assert_true (ai_move (ai, 0, 1)); 19734 assert_true (ai_move (ai, 2, 7)); 19735 assert_true (ai_move (ai, 3, 0)); 19736 assert_true (ai_move (ai, 6, 0)); 19737 assert_true (ai_move (ai, 3, 7)); 19738 assert_true (ai_move (ai, 6, 7)); 19739 assert_true (ai_move (ai, 6, 1)); 19740 assert_true (ai_move (ai, 1, 1)); 19741 assert_true (ai_move (ai, 1, 0)); 19742 assert_true (ai_move (ai, 0, 0)); 19743 assert_true (game.pass ()); 19744 assert_true (ai_move (ai, 0, 6)); 19745 assert_true (ai_move (ai, 1, 6)); 19746 assert_true (ai_move (ai, 1, 7)); 19747 } 19748 19749 private static inline void test_complete_reversi_game_247 () 19750 { 19751 /* 0 1 2 3 4 5 6 7 */ 19752 string [] board = {/* 0 */ " . . . . . . . .", 19753 /* 1 */ " . . . . . . . .", 19754 /* 2 */ " . . . . . L . .", 19755 /* 3 */ " . . . D L . . .", 19756 /* 4 */ " . . . L D L . .", 19757 /* 5 */ " . . . . D D . .", 19758 /* 6 */ " . . . . . . . .", 19759 /* 7 */ " . . . . . . . ."}; 19760 19761 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 19762 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 19763 19764 assert_true (ai_move (ai, 6, 4)); 19765 assert_true (ai_move (ai, 5, 6)); 19766 assert_true (ai_move (ai, 3, 6)); 19767 assert_true (ai_move (ai, 6, 5)); 19768 assert_true (ai_move (ai, 7, 5)); 19769 assert_true (ai_move (ai, 2, 7)); 19770 assert_true (ai_move (ai, 4, 6)); 19771 assert_true (ai_move (ai, 7, 4)); 19772 assert_true (ai_move (ai, 3, 5)); 19773 assert_true (ai_move (ai, 2, 5)); 19774 assert_true (ai_move (ai, 1, 5)); 19775 assert_true (ai_move (ai, 1, 4)); 19776 assert_true (ai_move (ai, 3, 7)); 19777 assert_true (ai_move (ai, 0, 5)); 19778 assert_true (ai_move (ai, 7, 3)); 19779 assert_true (ai_move (ai, 4, 7)); 19780 assert_true (ai_move (ai, 5, 7)); 19781 assert_true (ai_move (ai, 6, 7)); 19782 assert_true (ai_move (ai, 2, 6)); 19783 assert_true (ai_move (ai, 2, 4)); 19784 assert_true (ai_move (ai, 2, 3)); 19785 assert_true (ai_move (ai, 1, 7)); 19786 assert_true (ai_move (ai, 6, 3)); 19787 assert_true (ai_move (ai, 5, 3)); 19788 assert_true (ai_move (ai, 4, 1)); 19789 assert_true (ai_move (ai, 5, 1)); 19790 assert_true (ai_move (ai, 3, 2)); 19791 assert_true (ai_move (ai, 7, 2)); 19792 assert_true (ai_move (ai, 7, 1)); 19793 assert_true (ai_move (ai, 1, 2)); 19794 assert_true (ai_move (ai, 2, 2)); 19795 assert_true (ai_move (ai, 2, 1)); 19796 assert_true (ai_move (ai, 1, 3)); 19797 assert_true (ai_move (ai, 4, 2)); 19798 assert_true (ai_move (ai, 3, 1)); 19799 assert_true (ai_move (ai, 6, 2)); 19800 assert_true (ai_move (ai, 2, 0)); 19801 assert_true (ai_move (ai, 0, 3)); 19802 assert_true (ai_move (ai, 0, 2)); 19803 assert_true (ai_move (ai, 4, 0)); 19804 assert_true (ai_move (ai, 3, 0)); 19805 assert_true (ai_move (ai, 5, 0)); 19806 assert_true (ai_move (ai, 6, 0)); 19807 assert_true (ai_move (ai, 6, 1)); 19808 assert_true (ai_move (ai, 0, 4)); 19809 assert_true (ai_move (ai, 0, 1)); 19810 assert_true (ai_move (ai, 7, 0)); 19811 assert_true (ai_move (ai, 1, 1)); 19812 assert_true (ai_move (ai, 0, 0)); 19813 assert_true (ai_move (ai, 1, 0)); 19814 assert_true (ai_move (ai, 0, 6)); 19815 assert_true (ai_move (ai, 6, 6)); 19816 assert_true (ai_move (ai, 7, 6)); 19817 assert_true (ai_move (ai, 1, 6)); 19818 assert_true (ai_move (ai, 7, 7)); 19819 assert_true (game.pass ()); 19820 assert_true (ai_move (ai, 0, 7)); 19821 } 19822 19823 private static inline void test_complete_reversi_game_248 () 19824 { 19825 /* 0 1 2 3 4 5 6 7 */ 19826 string [] board = {/* 0 */ " . . . . . . . .", 19827 /* 1 */ " . . . . . . . .", 19828 /* 2 */ " . . . . . . . .", 19829 /* 3 */ " . . . D D . . .", 19830 /* 4 */ " . . . L D L . .", 19831 /* 5 */ " . . . . L D . .", 19832 /* 6 */ " . . . L . . . .", 19833 /* 7 */ " . . . . . . . ."}; 19834 19835 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 19836 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 19837 19838 assert_true (ai_move (ai, 4, 6)); 19839 assert_true (ai_move (ai, 5, 2)); 19840 assert_true (ai_move (ai, 6, 4)); 19841 assert_true (ai_move (ai, 6, 3)); 19842 assert_true (ai_move (ai, 4, 2)); 19843 assert_true (ai_move (ai, 6, 5)); 19844 assert_true (ai_move (ai, 6, 2)); 19845 assert_true (ai_move (ai, 4, 7)); 19846 assert_true (ai_move (ai, 2, 4)); 19847 assert_true (ai_move (ai, 3, 2)); 19848 assert_true (ai_move (ai, 2, 2)); 19849 assert_true (ai_move (ai, 4, 1)); 19850 assert_true (ai_move (ai, 5, 1)); 19851 assert_true (ai_move (ai, 5, 0)); 19852 assert_true (ai_move (ai, 5, 6)); 19853 assert_true (ai_move (ai, 5, 7)); 19854 assert_true (ai_move (ai, 7, 5)); 19855 assert_true (ai_move (ai, 2, 1)); 19856 assert_true (ai_move (ai, 3, 1)); 19857 assert_true (ai_move (ai, 1, 2)); 19858 assert_true (ai_move (ai, 1, 3)); 19859 assert_true (ai_move (ai, 7, 2)); 19860 assert_true (ai_move (ai, 2, 0)); 19861 assert_true (ai_move (ai, 7, 4)); 19862 assert_true (ai_move (ai, 2, 7)); 19863 assert_true (ai_move (ai, 2, 6)); 19864 assert_true (ai_move (ai, 2, 5)); 19865 assert_true (ai_move (ai, 3, 0)); 19866 assert_true (ai_move (ai, 0, 2)); 19867 assert_true (ai_move (ai, 0, 4)); 19868 assert_true (ai_move (ai, 2, 3)); 19869 assert_true (ai_move (ai, 0, 3)); 19870 assert_true (ai_move (ai, 0, 5)); 19871 assert_true (ai_move (ai, 3, 5)); 19872 assert_true (ai_move (ai, 1, 4)); 19873 assert_true (ai_move (ai, 5, 3)); 19874 assert_true (ai_move (ai, 0, 1)); 19875 assert_true (ai_move (ai, 1, 5)); 19876 assert_true (ai_move (ai, 3, 7)); 19877 assert_true (ai_move (ai, 1, 7)); 19878 assert_true (ai_move (ai, 6, 6)); 19879 assert_true (ai_move (ai, 1, 0)); 19880 assert_true (ai_move (ai, 0, 6)); 19881 assert_true (ai_move (ai, 1, 1)); 19882 assert_true (ai_move (ai, 0, 0)); 19883 assert_true (ai_move (ai, 6, 7)); 19884 assert_true (ai_move (ai, 4, 0)); 19885 assert_true (ai_move (ai, 7, 6)); 19886 assert_true (ai_move (ai, 6, 0)); 19887 assert_true (ai_move (ai, 6, 1)); 19888 assert_true (ai_move (ai, 7, 3)); 19889 assert_true (ai_move (ai, 1, 6)); 19890 assert_true (ai_move (ai, 0, 7)); 19891 assert_true (ai_move (ai, 7, 1)); 19892 assert_true (ai_move (ai, 7, 7)); 19893 assert_true (game.pass ()); 19894 assert_true (ai_move (ai, 7, 0)); 19895 } 19896 19897 private static inline void test_complete_reversi_game_249 () 19898 { 19899 /* 0 1 2 3 4 5 6 7 */ 19900 string [] board = {/* 0 */ " . . . . . . . .", 19901 /* 1 */ " . . . . . . . .", 19902 /* 2 */ " . . . L . . . .", 19903 /* 3 */ " . . . L L . . .", 19904 /* 4 */ " . . . L D L . .", 19905 /* 5 */ " . . . . D D . .", 19906 /* 6 */ " . . . . . . . .", 19907 /* 7 */ " . . . . . . . ."}; 19908 19909 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 19910 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 19911 19912 assert_true (ai_move (ai, 5, 3)); 19913 assert_true (ai_move (ai, 6, 5)); 19914 assert_true (ai_move (ai, 6, 3)); 19915 assert_true (ai_move (ai, 3, 5)); 19916 assert_true (ai_move (ai, 5, 6)); 19917 assert_true (ai_move (ai, 4, 7)); 19918 assert_true (ai_move (ai, 5, 7)); 19919 assert_true (ai_move (ai, 6, 4)); 19920 assert_true (ai_move (ai, 3, 6)); 19921 assert_true (ai_move (ai, 4, 6)); 19922 assert_true (ai_move (ai, 3, 7)); 19923 assert_true (ai_move (ai, 5, 2)); 19924 assert_true (ai_move (ai, 5, 1)); 19925 assert_true (ai_move (ai, 4, 2)); 19926 assert_true (ai_move (ai, 4, 1)); 19927 assert_true (ai_move (ai, 6, 2)); 19928 assert_true (ai_move (ai, 7, 2)); 19929 assert_true (ai_move (ai, 7, 3)); 19930 assert_true (ai_move (ai, 2, 1)); 19931 assert_true (ai_move (ai, 2, 2)); 19932 assert_true (ai_move (ai, 1, 2)); 19933 assert_true (ai_move (ai, 3, 1)); 19934 assert_true (ai_move (ai, 7, 5)); 19935 assert_true (ai_move (ai, 1, 3)); 19936 assert_true (ai_move (ai, 7, 4)); 19937 assert_true (ai_move (ai, 2, 0)); 19938 assert_true (ai_move (ai, 2, 6)); 19939 assert_true (ai_move (ai, 0, 2)); 19940 assert_true (ai_move (ai, 2, 5)); 19941 assert_true (ai_move (ai, 4, 0)); 19942 assert_true (ai_move (ai, 2, 4)); 19943 assert_true (ai_move (ai, 5, 0)); 19944 assert_true (ai_move (ai, 3, 0)); 19945 assert_true (ai_move (ai, 1, 5)); 19946 assert_true (ai_move (ai, 2, 3)); 19947 assert_true (ai_move (ai, 1, 4)); 19948 assert_true (ai_move (ai, 0, 5)); 19949 assert_true (ai_move (ai, 2, 7)); 19950 assert_true (ai_move (ai, 1, 7)); 19951 assert_true (ai_move (ai, 6, 1)); 19952 assert_true (ai_move (ai, 0, 4)); 19953 assert_true (ai_move (ai, 6, 7)); 19954 assert_true (ai_move (ai, 7, 7)); 19955 assert_true (ai_move (ai, 7, 6)); 19956 assert_true (ai_move (ai, 0, 1)); 19957 assert_true (ai_move (ai, 7, 1)); 19958 assert_true (ai_move (ai, 0, 3)); 19959 assert_true (ai_move (ai, 0, 6)); 19960 assert_true (ai_move (ai, 0, 7)); 19961 assert_true (ai_move (ai, 1, 1)); 19962 assert_true (ai_move (ai, 6, 6)); 19963 assert_true (ai_move (ai, 1, 6)); 19964 assert_true (ai_move (ai, 7, 0)); 19965 assert_true (ai_move (ai, 6, 0)); 19966 assert_true (ai_move (ai, 1, 0)); 19967 assert_true (ai_move (ai, 0, 0)); 19968 } 19969 19970 private static inline void test_complete_reversi_game_250 () 19971 { 19972 /* 0 1 2 3 4 5 6 7 */ 19973 string [] board = {/* 0 */ " . . . . . . . .", 19974 /* 1 */ " . . . . . . . .", 19975 /* 2 */ " . . . . . . . .", 19976 /* 3 */ " . . . D D . . .", 19977 /* 4 */ " . . . D L L . .", 19978 /* 5 */ " . . . D . L . .", 19979 /* 6 */ " . . . . . . L .", 19980 /* 7 */ " . . . . . . . ."}; 19981 19982 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 19983 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 19984 19985 assert_true (ai_move (ai, 6, 5)); 19986 assert_true (ai_move (ai, 5, 3)); 19987 assert_true (ai_move (ai, 6, 3)); 19988 assert_true (ai_move (ai, 5, 2)); 19989 assert_true (ai_move (ai, 4, 1)); 19990 assert_true (ai_move (ai, 5, 1)); 19991 assert_true (ai_move (ai, 4, 5)); 19992 assert_true (ai_move (ai, 5, 6)); 19993 assert_true (ai_move (ai, 6, 4)); 19994 assert_true (ai_move (ai, 2, 6)); 19995 assert_true (ai_move (ai, 5, 7)); 19996 assert_true (ai_move (ai, 7, 3)); 19997 assert_true (ai_move (ai, 2, 5)); 19998 assert_true (ai_move (ai, 3, 6)); 19999 assert_true (ai_move (ai, 5, 0)); 20000 assert_true (ai_move (ai, 7, 5)); 20001 assert_true (ai_move (ai, 4, 6)); 20002 assert_true (ai_move (ai, 2, 2)); 20003 assert_true (ai_move (ai, 3, 2)); 20004 assert_true (ai_move (ai, 1, 5)); 20005 assert_true (ai_move (ai, 7, 4)); 20006 assert_true (ai_move (ai, 7, 2)); 20007 assert_true (ai_move (ai, 0, 5)); 20008 assert_true (ai_move (ai, 1, 4)); 20009 assert_true (ai_move (ai, 6, 2)); 20010 assert_true (ai_move (ai, 3, 7)); 20011 assert_true (ai_move (ai, 4, 7)); 20012 assert_true (ai_move (ai, 6, 7)); 20013 assert_true (ai_move (ai, 2, 3)); 20014 assert_true (ai_move (ai, 4, 2)); 20015 assert_true (ai_move (ai, 2, 1)); 20016 assert_true (ai_move (ai, 0, 4)); 20017 assert_true (ai_move (ai, 0, 3)); 20018 assert_true (ai_move (ai, 3, 0)); 20019 assert_true (ai_move (ai, 4, 0)); 20020 assert_true (ai_move (ai, 2, 4)); 20021 assert_true (ai_move (ai, 2, 0)); 20022 assert_true (ai_move (ai, 3, 1)); 20023 assert_true (ai_move (ai, 0, 6)); 20024 assert_true (ai_move (ai, 1, 2)); 20025 assert_true (ai_move (ai, 0, 2)); 20026 assert_true (ai_move (ai, 1, 3)); 20027 assert_true (ai_move (ai, 2, 7)); 20028 assert_true (ai_move (ai, 1, 7)); 20029 assert_true (ai_move (ai, 7, 7)); 20030 assert_true (ai_move (ai, 7, 6)); 20031 assert_true (ai_move (ai, 0, 7)); 20032 assert_true (ai_move (ai, 1, 6)); 20033 assert_true (ai_move (ai, 6, 1)); 20034 assert_true (ai_move (ai, 7, 0)); 20035 assert_true (ai_move (ai, 7, 1)); 20036 assert_true (ai_move (ai, 6, 0)); 20037 assert_true (game.pass ()); 20038 assert_true (ai_move (ai, 1, 0)); 20039 assert_true (ai_move (ai, 1, 1)); 20040 assert_true (ai_move (ai, 0, 1)); 20041 assert_true (ai_move (ai, 0, 0)); 20042 } 20043 20044 private static inline void test_complete_reversi_game_251 () 20045 { 20046 /* 0 1 2 3 4 5 6 7 */ 20047 string [] board = {/* 0 */ " . . . . . . . .", 20048 /* 1 */ " . . . . . . . .", 20049 /* 2 */ " . . . . . . . .", 20050 /* 3 */ " . . . D D . . .", 20051 /* 4 */ " . . . D L L . .", 20052 /* 5 */ " . . . D . L . .", 20053 /* 6 */ " . . . . . L . .", 20054 /* 7 */ " . . . . . . . ."}; 20055 20056 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 20057 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 20058 20059 assert_true (ai_move (ai, 6, 5)); 20060 assert_true (ai_move (ai, 6, 4)); 20061 assert_true (ai_move (ai, 4, 7)); 20062 assert_true (ai_move (ai, 7, 5)); 20063 assert_true (ai_move (ai, 4, 5)); 20064 assert_true (ai_move (ai, 5, 7)); 20065 assert_true (ai_move (ai, 6, 3)); 20066 assert_true (ai_move (ai, 5, 3)); 20067 assert_true (ai_move (ai, 6, 2)); 20068 assert_true (ai_move (ai, 4, 2)); 20069 assert_true (ai_move (ai, 5, 1)); 20070 assert_true (ai_move (ai, 3, 1)); 20071 assert_true (ai_move (ai, 4, 1)); 20072 assert_true (ai_move (ai, 7, 2)); 20073 assert_true (ai_move (ai, 2, 0)); 20074 assert_true (ai_move (ai, 5, 2)); 20075 assert_true (ai_move (ai, 6, 7)); 20076 assert_true (ai_move (ai, 3, 2)); 20077 assert_true (ai_move (ai, 2, 3)); 20078 assert_true (ai_move (ai, 2, 1)); 20079 assert_true (ai_move (ai, 2, 2)); 20080 assert_true (ai_move (ai, 1, 2)); 20081 assert_true (ai_move (ai, 1, 3)); 20082 assert_true (ai_move (ai, 2, 6)); 20083 assert_true (ai_move (ai, 2, 5)); 20084 assert_true (ai_move (ai, 1, 5)); 20085 assert_true (ai_move (ai, 0, 2)); 20086 assert_true (ai_move (ai, 5, 0)); 20087 assert_true (ai_move (ai, 3, 6)); 20088 assert_true (ai_move (ai, 2, 7)); 20089 assert_true (ai_move (ai, 1, 4)); 20090 assert_true (ai_move (ai, 4, 6)); 20091 assert_true (ai_move (ai, 6, 6)); 20092 assert_true (ai_move (ai, 0, 3)); 20093 assert_true (ai_move (ai, 2, 4)); 20094 assert_true (ai_move (ai, 3, 0)); 20095 assert_true (ai_move (ai, 0, 4)); 20096 assert_true (ai_move (ai, 0, 5)); 20097 assert_true (ai_move (ai, 0, 6)); 20098 assert_true (ai_move (ai, 7, 7)); 20099 assert_true (ai_move (ai, 3, 7)); 20100 assert_true (ai_move (ai, 1, 0)); 20101 assert_true (ai_move (ai, 4, 0)); 20102 assert_true (ai_move (ai, 1, 1)); 20103 assert_true (ai_move (ai, 1, 6)); 20104 assert_true (ai_move (ai, 0, 7)); 20105 assert_true (ai_move (ai, 1, 7)); 20106 assert_true (ai_move (ai, 0, 1)); 20107 assert_true (ai_move (ai, 7, 6)); 20108 assert_true (game.pass ()); 20109 assert_true (ai_move (ai, 7, 4)); 20110 assert_true (ai_move (ai, 7, 3)); 20111 assert_true (ai_move (ai, 0, 0)); 20112 assert_true (ai_move (ai, 6, 1)); 20113 assert_true (ai_move (ai, 7, 0)); 20114 assert_true (ai_move (ai, 6, 0)); 20115 assert_true (ai_move (ai, 7, 1)); 20116 } 20117 20118 private static inline void test_complete_reversi_game_252 () 20119 { 20120 /* 0 1 2 3 4 5 6 7 */ 20121 string [] board = {/* 0 */ " . . . . . . . .", 20122 /* 1 */ " . . . . . . . .", 20123 /* 2 */ " . . . . L . . .", 20124 /* 3 */ " . . . D L . . .", 20125 /* 4 */ " . . . D L L . .", 20126 /* 5 */ " . . . D . D . .", 20127 /* 6 */ " . . . . . . . .", 20128 /* 7 */ " . . . . . . . ."}; 20129 20130 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 20131 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 20132 20133 assert_true (ai_move (ai, 5, 1)); 20134 assert_true (ai_move (ai, 5, 6)); 20135 assert_true (ai_move (ai, 5, 2)); 20136 assert_true (ai_move (ai, 2, 6)); 20137 assert_true (ai_move (ai, 3, 6)); 20138 assert_true (ai_move (ai, 2, 2)); 20139 assert_true (ai_move (ai, 2, 4)); 20140 assert_true (ai_move (ai, 3, 2)); 20141 assert_true (ai_move (ai, 1, 2)); 20142 assert_true (ai_move (ai, 4, 1)); 20143 assert_true (ai_move (ai, 5, 0)); 20144 assert_true (ai_move (ai, 6, 2)); 20145 assert_true (ai_move (ai, 6, 3)); 20146 assert_true (ai_move (ai, 6, 4)); 20147 assert_true (ai_move (ai, 7, 2)); 20148 assert_true (ai_move (ai, 3, 0)); 20149 assert_true (ai_move (ai, 5, 3)); 20150 assert_true (ai_move (ai, 2, 1)); 20151 assert_true (ai_move (ai, 2, 3)); 20152 assert_true (ai_move (ai, 0, 2)); 20153 assert_true (ai_move (ai, 2, 0)); 20154 assert_true (ai_move (ai, 4, 0)); 20155 assert_true (ai_move (ai, 3, 1)); 20156 assert_true (ai_move (ai, 1, 3)); 20157 assert_true (ai_move (ai, 1, 4)); 20158 assert_true (ai_move (ai, 7, 3)); 20159 assert_true (ai_move (ai, 5, 7)); 20160 assert_true (ai_move (ai, 7, 1)); 20161 assert_true (ai_move (ai, 7, 5)); 20162 assert_true (ai_move (ai, 6, 5)); 20163 assert_true (ai_move (ai, 0, 3)); 20164 assert_true (ai_move (ai, 4, 5)); 20165 assert_true (ai_move (ai, 0, 1)); 20166 assert_true (ai_move (ai, 2, 7)); 20167 assert_true (ai_move (ai, 3, 7)); 20168 assert_true (ai_move (ai, 2, 5)); 20169 assert_true (ai_move (ai, 1, 5)); 20170 assert_true (ai_move (ai, 4, 7)); 20171 assert_true (ai_move (ai, 1, 7)); 20172 assert_true (ai_move (ai, 4, 6)); 20173 assert_true (ai_move (ai, 1, 1)); 20174 assert_true (ai_move (ai, 0, 4)); 20175 assert_true (ai_move (ai, 0, 5)); 20176 assert_true (ai_move (ai, 6, 1)); 20177 assert_true (ai_move (ai, 7, 4)); 20178 assert_true (ai_move (ai, 7, 6)); 20179 assert_true (ai_move (ai, 6, 6)); 20180 assert_true (ai_move (ai, 6, 0)); 20181 assert_true (ai_move (ai, 7, 0)); 20182 assert_true (ai_move (ai, 7, 7)); 20183 assert_true (ai_move (ai, 6, 7)); 20184 assert_true (ai_move (ai, 0, 7)); 20185 assert_true (game.pass ()); 20186 assert_true (ai_move (ai, 0, 6)); 20187 assert_true (ai_move (ai, 1, 6)); 20188 assert_true (ai_move (ai, 0, 0)); 20189 assert_true (ai_move (ai, 1, 0)); 20190 } 20191 20192 private static inline void test_complete_reversi_game_253 () 20193 { 20194 /* 0 1 2 3 4 5 6 7 */ 20195 string [] board = {/* 0 */ " . . . . . . . .", 20196 /* 1 */ " . . . . . . . .", 20197 /* 2 */ " . . . L . . . .", 20198 /* 3 */ " . . . D L . . .", 20199 /* 4 */ " . . . D L L . .", 20200 /* 5 */ " . . . D . D . .", 20201 /* 6 */ " . . . . . . . .", 20202 /* 7 */ " . . . . . . . ."}; 20203 20204 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 20205 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 20206 20207 assert_true (ai_move (ai, 3, 1)); 20208 assert_true (ai_move (ai, 5, 6)); 20209 assert_true (ai_move (ai, 5, 2)); 20210 assert_true (ai_move (ai, 2, 1)); 20211 assert_true (ai_move (ai, 5, 3)); 20212 assert_true (ai_move (ai, 5, 1)); 20213 assert_true (ai_move (ai, 6, 4)); 20214 assert_true (ai_move (ai, 7, 5)); 20215 assert_true (ai_move (ai, 7, 4)); 20216 assert_true (ai_move (ai, 7, 3)); 20217 assert_true (ai_move (ai, 1, 0)); 20218 assert_true (ai_move (ai, 2, 6)); 20219 assert_true (ai_move (ai, 4, 5)); 20220 assert_true (ai_move (ai, 2, 4)); 20221 assert_true (ai_move (ai, 6, 5)); 20222 assert_true (ai_move (ai, 4, 6)); 20223 assert_true (ai_move (ai, 3, 6)); 20224 assert_true (ai_move (ai, 2, 2)); 20225 assert_true (ai_move (ai, 1, 2)); 20226 assert_true (ai_move (ai, 4, 2)); 20227 assert_true (ai_move (ai, 1, 3)); 20228 assert_true (ai_move (ai, 1, 5)); 20229 assert_true (ai_move (ai, 1, 4)); 20230 assert_true (ai_move (ai, 2, 3)); 20231 assert_true (ai_move (ai, 6, 3)); 20232 assert_true (ai_move (ai, 6, 2)); 20233 assert_true (ai_move (ai, 4, 1)); 20234 assert_true (ai_move (ai, 7, 2)); 20235 assert_true (ai_move (ai, 5, 7)); 20236 assert_true (ai_move (ai, 0, 2)); 20237 assert_true (ai_move (ai, 2, 5)); 20238 assert_true (ai_move (ai, 0, 5)); 20239 assert_true (ai_move (ai, 5, 0)); 20240 assert_true (ai_move (ai, 7, 6)); 20241 assert_true (ai_move (ai, 2, 7)); 20242 assert_true (ai_move (ai, 0, 3)); 20243 assert_true (ai_move (ai, 0, 4)); 20244 assert_true (ai_move (ai, 2, 0)); 20245 assert_true (ai_move (ai, 3, 0)); 20246 assert_true (ai_move (ai, 4, 0)); 20247 assert_true (ai_move (ai, 1, 1)); 20248 assert_true (ai_move (ai, 4, 7)); 20249 assert_true (ai_move (ai, 3, 7)); 20250 assert_true (ai_move (ai, 6, 1)); 20251 assert_true (ai_move (ai, 6, 7)); 20252 assert_true (ai_move (ai, 1, 6)); 20253 assert_true (ai_move (ai, 0, 1)); 20254 assert_true (ai_move (ai, 0, 0)); 20255 assert_true (ai_move (ai, 7, 0)); 20256 assert_true (ai_move (ai, 1, 7)); 20257 assert_true (ai_move (ai, 0, 7)); 20258 assert_true (ai_move (ai, 0, 6)); 20259 assert_true (ai_move (ai, 6, 0)); 20260 assert_true (ai_move (ai, 6, 6)); 20261 assert_true (ai_move (ai, 7, 1)); 20262 assert_true (game.pass ()); 20263 assert_true (ai_move (ai, 7, 7)); 20264 } 20265 20266 private static inline void test_complete_reversi_game_254 () 20267 { 20268 /* 0 1 2 3 4 5 6 7 */ 20269 string [] board = {/* 0 */ " . . . . . . . .", 20270 /* 1 */ " . . . . . . . .", 20271 /* 2 */ " . . . . . . . .", 20272 /* 3 */ " . . . D D . . .", 20273 /* 4 */ " . . . D L L . .", 20274 /* 5 */ " . . . L . D . .", 20275 /* 6 */ " . . L . . . . .", 20276 /* 7 */ " . . . . . . . ."}; 20277 20278 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 20279 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 20280 20281 assert_true (ai_move (ai, 6, 5)); 20282 assert_true (ai_move (ai, 6, 4)); 20283 assert_true (ai_move (ai, 5, 3)); 20284 assert_true (ai_move (ai, 4, 6)); 20285 assert_true (ai_move (ai, 5, 6)); 20286 assert_true (ai_move (ai, 6, 2)); 20287 assert_true (ai_move (ai, 5, 2)); 20288 assert_true (ai_move (ai, 4, 2)); 20289 assert_true (ai_move (ai, 3, 7)); 20290 assert_true (ai_move (ai, 2, 5)); 20291 assert_true (ai_move (ai, 3, 2)); 20292 assert_true (ai_move (ai, 2, 4)); 20293 assert_true (ai_move (ai, 5, 1)); 20294 assert_true (ai_move (ai, 6, 3)); 20295 assert_true (ai_move (ai, 7, 2)); 20296 assert_true (ai_move (ai, 2, 2)); 20297 assert_true (ai_move (ai, 2, 3)); 20298 assert_true (ai_move (ai, 1, 2)); 20299 assert_true (ai_move (ai, 2, 1)); 20300 assert_true (ai_move (ai, 4, 1)); 20301 assert_true (ai_move (ai, 7, 5)); 20302 assert_true (ai_move (ai, 3, 0)); 20303 assert_true (ai_move (ai, 4, 5)); 20304 assert_true (ai_move (ai, 5, 7)); 20305 assert_true (ai_move (ai, 4, 0)); 20306 assert_true (ai_move (ai, 5, 0)); 20307 assert_true (ai_move (ai, 0, 2)); 20308 assert_true (ai_move (ai, 3, 1)); 20309 assert_true (ai_move (ai, 2, 0)); 20310 assert_true (ai_move (ai, 1, 0)); 20311 assert_true (ai_move (ai, 3, 6)); 20312 assert_true (ai_move (ai, 1, 3)); 20313 assert_true (ai_move (ai, 0, 3)); 20314 assert_true (ai_move (ai, 1, 4)); 20315 assert_true (ai_move (ai, 0, 4)); 20316 assert_true (ai_move (ai, 4, 7)); 20317 assert_true (ai_move (ai, 6, 7)); 20318 assert_true (ai_move (ai, 1, 5)); 20319 assert_true (ai_move (ai, 2, 7)); 20320 assert_true (ai_move (ai, 0, 5)); 20321 assert_true (ai_move (ai, 0, 6)); 20322 assert_true (ai_move (ai, 7, 4)); 20323 assert_true (ai_move (ai, 7, 3)); 20324 assert_true (ai_move (ai, 6, 6)); 20325 assert_true (ai_move (ai, 1, 7)); 20326 assert_true (ai_move (ai, 1, 1)); 20327 assert_true (ai_move (ai, 0, 1)); 20328 assert_true (ai_move (ai, 6, 1)); 20329 assert_true (ai_move (ai, 7, 0)); 20330 assert_true (ai_move (ai, 7, 1)); 20331 assert_true (ai_move (ai, 6, 0)); 20332 assert_true (ai_move (ai, 7, 7)); 20333 assert_true (ai_move (ai, 0, 0)); 20334 assert_true (ai_move (ai, 0, 7)); 20335 assert_true (ai_move (ai, 7, 6)); 20336 assert_true (ai_move (ai, 1, 6)); 20337 } 20338 20339 private static inline void test_complete_reversi_game_255 () 20340 { 20341 /* 0 1 2 3 4 5 6 7 */ 20342 string [] board = {/* 0 */ " . . . . . . . .", 20343 /* 1 */ " . . . . . . . .", 20344 /* 2 */ " . . . . . . . .", 20345 /* 3 */ " . . . D D . . .", 20346 /* 4 */ " . . L L L L . .", 20347 /* 5 */ " . . . D . D . .", 20348 /* 6 */ " . . . . . . . .", 20349 /* 7 */ " . . . . . . . ."}; 20350 20351 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 20352 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 20353 20354 assert_true (ai_move (ai, 6, 5)); 20355 assert_true (ai_move (ai, 2, 6)); 20356 assert_true (ai_move (ai, 1, 5)); 20357 assert_true (ai_move (ai, 1, 3)); 20358 assert_true (ai_move (ai, 3, 7)); 20359 assert_true (ai_move (ai, 6, 4)); 20360 assert_true (ai_move (ai, 7, 3)); 20361 assert_true (ai_move (ai, 5, 2)); 20362 assert_true (ai_move (ai, 3, 2)); 20363 assert_true (ai_move (ai, 2, 2)); 20364 assert_true (ai_move (ai, 1, 2)); 20365 assert_true (ai_move (ai, 3, 1)); 20366 assert_true (ai_move (ai, 2, 1)); 20367 assert_true (ai_move (ai, 2, 0)); 20368 assert_true (ai_move (ai, 2, 5)); 20369 assert_true (ai_move (ai, 2, 7)); 20370 assert_true (ai_move (ai, 3, 6)); 20371 assert_true (ai_move (ai, 0, 5)); 20372 assert_true (ai_move (ai, 0, 4)); 20373 assert_true (ai_move (ai, 0, 3)); 20374 assert_true (ai_move (ai, 3, 0)); 20375 assert_true (ai_move (ai, 4, 7)); 20376 assert_true (ai_move (ai, 4, 6)); 20377 assert_true (ai_move (ai, 4, 0)); 20378 assert_true (ai_move (ai, 2, 3)); 20379 assert_true (ai_move (ai, 4, 2)); 20380 assert_true (ai_move (ai, 4, 1)); 20381 assert_true (ai_move (ai, 5, 1)); 20382 assert_true (ai_move (ai, 6, 2)); 20383 assert_true (ai_move (ai, 5, 3)); 20384 assert_true (ai_move (ai, 6, 3)); 20385 assert_true (ai_move (ai, 5, 6)); 20386 assert_true (ai_move (ai, 4, 5)); 20387 assert_true (ai_move (ai, 1, 4)); 20388 assert_true (ai_move (ai, 0, 2)); 20389 assert_true (ai_move (ai, 0, 1)); 20390 assert_true (ai_move (ai, 5, 7)); 20391 assert_true (ai_move (ai, 7, 2)); 20392 assert_true (ai_move (ai, 1, 7)); 20393 assert_true (ai_move (ai, 7, 4)); 20394 assert_true (ai_move (ai, 5, 0)); 20395 assert_true (ai_move (ai, 7, 5)); 20396 assert_true (ai_move (ai, 1, 0)); 20397 assert_true (ai_move (ai, 0, 6)); 20398 assert_true (ai_move (ai, 1, 6)); 20399 assert_true (ai_move (ai, 6, 1)); 20400 assert_true (ai_move (ai, 7, 0)); 20401 assert_true (ai_move (ai, 6, 0)); 20402 assert_true (ai_move (ai, 7, 1)); 20403 assert_true (ai_move (ai, 0, 0)); 20404 assert_true (ai_move (ai, 7, 6)); 20405 assert_true (ai_move (ai, 6, 7)); 20406 assert_true (ai_move (ai, 7, 7)); 20407 assert_true (ai_move (ai, 6, 6)); 20408 assert_true (ai_move (ai, 1, 1)); 20409 } 20410 20411 private static inline void test_complete_reversi_game_256 () 20412 { 20413 /* 0 1 2 3 4 5 6 7 */ 20414 string [] board = {/* 0 */ " . . . . . . . .", 20415 /* 1 */ " . . . . . . . .", 20416 /* 2 */ " . . L . . . . .", 20417 /* 3 */ " . . . L D . . .", 20418 /* 4 */ " . . . D L L . .", 20419 /* 5 */ " . . . D . D . .", 20420 /* 6 */ " . . . . . . . .", 20421 /* 7 */ " . . . . . . . ."}; 20422 20423 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 20424 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 20425 20426 assert_true (ai_move (ai, 5, 3)); 20427 assert_true (ai_move (ai, 6, 3)); 20428 assert_true (ai_move (ai, 6, 2)); 20429 assert_true (ai_move (ai, 6, 5)); 20430 assert_true (ai_move (ai, 6, 4)); 20431 assert_true (ai_move (ai, 7, 3)); 20432 assert_true (ai_move (ai, 7, 5)); 20433 assert_true (ai_move (ai, 5, 1)); 20434 assert_true (ai_move (ai, 7, 2)); 20435 assert_true (ai_move (ai, 7, 1)); 20436 assert_true (ai_move (ai, 4, 2)); 20437 assert_true (ai_move (ai, 4, 5)); 20438 assert_true (ai_move (ai, 5, 6)); 20439 assert_true (ai_move (ai, 5, 7)); 20440 assert_true (ai_move (ai, 4, 6)); 20441 assert_true (ai_move (ai, 5, 2)); 20442 assert_true (ai_move (ai, 5, 0)); 20443 assert_true (ai_move (ai, 4, 1)); 20444 assert_true (ai_move (ai, 4, 7)); 20445 assert_true (ai_move (ai, 3, 2)); 20446 assert_true (ai_move (ai, 4, 0)); 20447 assert_true (ai_move (ai, 3, 0)); 20448 assert_true (ai_move (ai, 2, 0)); 20449 assert_true (ai_move (ai, 2, 6)); 20450 assert_true (ai_move (ai, 3, 6)); 20451 assert_true (ai_move (ai, 2, 7)); 20452 assert_true (ai_move (ai, 3, 7)); 20453 assert_true (ai_move (ai, 3, 1)); 20454 assert_true (ai_move (ai, 2, 1)); 20455 assert_true (ai_move (ai, 2, 4)); 20456 assert_true (ai_move (ai, 1, 2)); 20457 assert_true (ai_move (ai, 0, 2)); 20458 assert_true (ai_move (ai, 2, 5)); 20459 assert_true (ai_move (ai, 6, 0)); 20460 assert_true (ai_move (ai, 7, 0)); 20461 assert_true (ai_move (ai, 7, 4)); 20462 assert_true (ai_move (ai, 6, 1)); 20463 assert_true (ai_move (ai, 6, 6)); 20464 assert_true (ai_move (ai, 2, 3)); 20465 assert_true (ai_move (ai, 1, 3)); 20466 assert_true (ai_move (ai, 1, 4)); 20467 assert_true (ai_move (ai, 1, 5)); 20468 assert_true (ai_move (ai, 7, 7)); 20469 assert_true (ai_move (ai, 7, 6)); 20470 assert_true (ai_move (ai, 6, 7)); 20471 assert_true (ai_move (ai, 1, 0)); 20472 assert_true (ai_move (ai, 1, 7)); 20473 assert_true (ai_move (ai, 1, 6)); 20474 assert_true (ai_move (ai, 0, 7)); 20475 assert_true (ai_move (ai, 0, 6)); 20476 assert_true (ai_move (ai, 0, 0)); 20477 assert_true (game.pass ()); 20478 assert_true (ai_move (ai, 0, 1)); 20479 assert_true (ai_move (ai, 0, 3)); 20480 assert_true (ai_move (ai, 0, 5)); 20481 assert_true (ai_move (ai, 0, 4)); 20482 assert_true (ai_move (ai, 1, 1)); 20483 } 20484 20485 private static inline void test_complete_reversi_game_257 () 20486 { 20487 /* 0 1 2 3 4 5 6 7 */ 20488 string [] board = {/* 0 */ " . . . . . . . .", 20489 /* 1 */ " . . . . . . . .", 20490 /* 2 */ " . . . . . . . .", 20491 /* 3 */ " . . . D D . . .", 20492 /* 4 */ " . . . D L L . .", 20493 /* 5 */ " . . D . . L . .", 20494 /* 6 */ " . . . . . . L .", 20495 /* 7 */ " . . . . . . . ."}; 20496 20497 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 20498 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 20499 20500 assert_true (ai_move (ai, 6, 5)); 20501 assert_true (ai_move (ai, 5, 3)); 20502 assert_true (ai_move (ai, 6, 3)); 20503 assert_true (ai_move (ai, 5, 2)); 20504 assert_true (ai_move (ai, 4, 1)); 20505 assert_true (ai_move (ai, 5, 1)); 20506 assert_true (ai_move (ai, 6, 4)); 20507 assert_true (ai_move (ai, 7, 4)); 20508 assert_true (ai_move (ai, 4, 5)); 20509 assert_true (ai_move (ai, 3, 6)); 20510 assert_true (ai_move (ai, 3, 5)); 20511 assert_true (ai_move (ai, 1, 4)); 20512 assert_true (ai_move (ai, 1, 5)); 20513 assert_true (ai_move (ai, 5, 6)); 20514 assert_true (ai_move (ai, 4, 2)); 20515 assert_true (ai_move (ai, 7, 3)); 20516 assert_true (ai_move (ai, 6, 2)); 20517 assert_true (ai_move (ai, 3, 0)); 20518 assert_true (ai_move (ai, 7, 2)); 20519 assert_true (ai_move (ai, 3, 1)); 20520 assert_true (ai_move (ai, 3, 2)); 20521 assert_true (ai_move (ai, 2, 1)); 20522 assert_true (ai_move (ai, 7, 5)); 20523 assert_true (ai_move (ai, 7, 6)); 20524 assert_true (ai_move (ai, 7, 7)); 20525 assert_true (ai_move (ai, 0, 5)); 20526 assert_true (ai_move (ai, 5, 7)); 20527 assert_true (ai_move (ai, 2, 4)); 20528 assert_true (ai_move (ai, 4, 6)); 20529 assert_true (ai_move (ai, 6, 7)); 20530 assert_true (ai_move (ai, 2, 0)); 20531 assert_true (ai_move (ai, 1, 0)); 20532 assert_true (ai_move (ai, 1, 3)); 20533 assert_true (ai_move (ai, 1, 2)); 20534 assert_true (ai_move (ai, 2, 6)); 20535 assert_true (ai_move (ai, 2, 3)); 20536 assert_true (ai_move (ai, 4, 7)); 20537 assert_true (ai_move (ai, 2, 7)); 20538 assert_true (ai_move (ai, 3, 7)); 20539 assert_true (ai_move (ai, 6, 1)); 20540 assert_true (ai_move (ai, 0, 4)); 20541 assert_true (ai_move (ai, 0, 3)); 20542 assert_true (ai_move (ai, 2, 2)); 20543 assert_true (ai_move (ai, 4, 0)); 20544 assert_true (ai_move (ai, 7, 1)); 20545 assert_true (ai_move (ai, 0, 6)); 20546 assert_true (ai_move (ai, 7, 0)); 20547 assert_true (ai_move (ai, 1, 6)); 20548 assert_true (ai_move (ai, 0, 2)); 20549 assert_true (ai_move (ai, 0, 1)); 20550 assert_true (ai_move (ai, 0, 7)); 20551 assert_true (ai_move (ai, 1, 1)); 20552 assert_true (ai_move (ai, 1, 7)); 20553 assert_true (ai_move (ai, 6, 0)); 20554 assert_true (ai_move (ai, 0, 0)); 20555 assert_true (game.pass ()); 20556 assert_true (ai_move (ai, 5, 0)); 20557 } 20558 20559 private static inline void test_complete_reversi_game_258 () 20560 { 20561 /* 0 1 2 3 4 5 6 7 */ 20562 string [] board = {/* 0 */ " . . . . . . . .", 20563 /* 1 */ " . . . . . . . .", 20564 /* 2 */ " . . . . . . . .", 20565 /* 3 */ " . . . D D . . .", 20566 /* 4 */ " . . . D L L . .", 20567 /* 5 */ " . . D . . L . .", 20568 /* 6 */ " . . . . . L . .", 20569 /* 7 */ " . . . . . . . ."}; 20570 20571 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 20572 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 20573 20574 assert_true (ai_move (ai, 6, 5)); 20575 assert_true (ai_move (ai, 5, 3)); 20576 assert_true (ai_move (ai, 4, 7)); 20577 assert_true (ai_move (ai, 5, 7)); 20578 assert_true (ai_move (ai, 6, 3)); 20579 assert_true (ai_move (ai, 3, 7)); 20580 assert_true (ai_move (ai, 3, 5)); 20581 assert_true (ai_move (ai, 5, 2)); 20582 assert_true (ai_move (ai, 4, 5)); 20583 assert_true (ai_move (ai, 2, 6)); 20584 assert_true (ai_move (ai, 4, 1)); 20585 assert_true (ai_move (ai, 1, 5)); 20586 assert_true (ai_move (ai, 3, 6)); 20587 assert_true (ai_move (ai, 5, 1)); 20588 assert_true (ai_move (ai, 1, 4)); 20589 assert_true (ai_move (ai, 4, 6)); 20590 assert_true (ai_move (ai, 0, 5)); 20591 assert_true (ai_move (ai, 6, 4)); 20592 assert_true (ai_move (ai, 2, 7)); 20593 assert_true (ai_move (ai, 1, 7)); 20594 assert_true (ai_move (ai, 5, 0)); 20595 assert_true (ai_move (ai, 7, 2)); 20596 assert_true (ai_move (ai, 7, 5)); 20597 assert_true (ai_move (ai, 2, 4)); 20598 assert_true (ai_move (ai, 6, 2)); 20599 assert_true (ai_move (ai, 0, 3)); 20600 assert_true (ai_move (ai, 2, 3)); 20601 assert_true (ai_move (ai, 1, 2)); 20602 assert_true (ai_move (ai, 3, 2)); 20603 assert_true (ai_move (ai, 2, 1)); 20604 assert_true (ai_move (ai, 3, 1)); 20605 assert_true (ai_move (ai, 4, 2)); 20606 assert_true (ai_move (ai, 7, 3)); 20607 assert_true (ai_move (ai, 1, 3)); 20608 assert_true (ai_move (ai, 1, 0)); 20609 assert_true (ai_move (ai, 2, 0)); 20610 assert_true (ai_move (ai, 3, 0)); 20611 assert_true (ai_move (ai, 4, 0)); 20612 assert_true (ai_move (ai, 1, 1)); 20613 assert_true (ai_move (ai, 0, 2)); 20614 assert_true (ai_move (ai, 7, 1)); 20615 assert_true (ai_move (ai, 0, 0)); 20616 assert_true (ai_move (ai, 6, 7)); 20617 assert_true (ai_move (ai, 7, 7)); 20618 assert_true (ai_move (ai, 6, 1)); 20619 assert_true (ai_move (ai, 7, 4)); 20620 assert_true (ai_move (ai, 7, 6)); 20621 assert_true (ai_move (ai, 6, 6)); 20622 assert_true (ai_move (ai, 1, 6)); 20623 assert_true (ai_move (ai, 2, 2)); 20624 assert_true (ai_move (ai, 0, 1)); 20625 assert_true (ai_move (ai, 0, 4)); 20626 assert_true (ai_move (ai, 0, 6)); 20627 assert_true (ai_move (ai, 0, 7)); 20628 assert_true (game.pass ()); 20629 assert_true (ai_move (ai, 7, 0)); 20630 assert_true (ai_move (ai, 6, 0)); 20631 } 20632 20633 private static inline void test_complete_reversi_game_259 () 20634 { 20635 /* 0 1 2 3 4 5 6 7 */ 20636 string [] board = {/* 0 */ " . . . . . . . .", 20637 /* 1 */ " . . . . . . . .", 20638 /* 2 */ " . . . . L . . .", 20639 /* 3 */ " . . . D L . . .", 20640 /* 4 */ " . . . D L L . .", 20641 /* 5 */ " . . D . . D . .", 20642 /* 6 */ " . . . . . . . .", 20643 /* 7 */ " . . . . . . . ."}; 20644 20645 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 20646 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 20647 20648 assert_true (ai_move (ai, 5, 1)); 20649 assert_true (ai_move (ai, 5, 6)); 20650 assert_true (ai_move (ai, 5, 2)); 20651 assert_true (ai_move (ai, 2, 2)); 20652 assert_true (ai_move (ai, 2, 4)); 20653 assert_true (ai_move (ai, 3, 2)); 20654 assert_true (ai_move (ai, 1, 2)); 20655 assert_true (ai_move (ai, 4, 1)); 20656 assert_true (ai_move (ai, 5, 0)); 20657 assert_true (ai_move (ai, 6, 2)); 20658 assert_true (ai_move (ai, 6, 3)); 20659 assert_true (ai_move (ai, 7, 2)); 20660 assert_true (ai_move (ai, 7, 4)); 20661 assert_true (ai_move (ai, 2, 3)); 20662 assert_true (ai_move (ai, 1, 4)); 20663 assert_true (ai_move (ai, 1, 3)); 20664 assert_true (ai_move (ai, 7, 3)); 20665 assert_true (ai_move (ai, 7, 5)); 20666 assert_true (ai_move (ai, 0, 2)); 20667 assert_true (ai_move (ai, 5, 3)); 20668 assert_true (ai_move (ai, 4, 5)); 20669 assert_true (ai_move (ai, 3, 1)); 20670 assert_true (ai_move (ai, 6, 5)); 20671 assert_true (ai_move (ai, 7, 1)); 20672 assert_true (ai_move (ai, 2, 1)); 20673 assert_true (ai_move (ai, 2, 6)); 20674 assert_true (ai_move (ai, 3, 5)); 20675 assert_true (ai_move (ai, 1, 5)); 20676 assert_true (ai_move (ai, 2, 7)); 20677 assert_true (ai_move (ai, 2, 0)); 20678 assert_true (ai_move (ai, 0, 5)); 20679 assert_true (ai_move (ai, 3, 6)); 20680 assert_true (ai_move (ai, 3, 0)); 20681 assert_true (ai_move (ai, 7, 6)); 20682 assert_true (ai_move (ai, 4, 6)); 20683 assert_true (ai_move (ai, 3, 7)); 20684 assert_true (ai_move (ai, 6, 4)); 20685 assert_true (ai_move (ai, 5, 7)); 20686 assert_true (ai_move (ai, 4, 7)); 20687 assert_true (ai_move (ai, 1, 7)); 20688 assert_true (ai_move (ai, 1, 0)); 20689 assert_true (ai_move (ai, 4, 0)); 20690 assert_true (ai_move (ai, 6, 0)); 20691 assert_true (ai_move (ai, 0, 0)); 20692 assert_true (ai_move (ai, 1, 6)); 20693 assert_true (ai_move (ai, 7, 0)); 20694 assert_true (ai_move (ai, 6, 1)); 20695 assert_true (ai_move (ai, 0, 7)); 20696 assert_true (ai_move (ai, 0, 6)); 20697 assert_true (ai_move (ai, 0, 1)); 20698 assert_true (ai_move (ai, 1, 1)); 20699 assert_true (ai_move (ai, 0, 4)); 20700 assert_true (ai_move (ai, 0, 3)); 20701 assert_true (ai_move (ai, 6, 6)); 20702 assert_true (ai_move (ai, 6, 7)); 20703 assert_true (ai_move (ai, 7, 7)); 20704 } 20705 20706 private static inline void test_complete_reversi_game_260 () 20707 { 20708 /* 0 1 2 3 4 5 6 7 */ 20709 string [] board = {/* 0 */ " . . . . . . . .", 20710 /* 1 */ " . . . . . . . .", 20711 /* 2 */ " . . . L . . . .", 20712 /* 3 */ " . . . D L . . .", 20713 /* 4 */ " . . . D L L . .", 20714 /* 5 */ " . . D . . D . .", 20715 /* 6 */ " . . . . . . . .", 20716 /* 7 */ " . . . . . . . ."}; 20717 20718 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 20719 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 20720 20721 assert_true (ai_move (ai, 3, 1)); 20722 assert_true (ai_move (ai, 5, 6)); 20723 assert_true (ai_move (ai, 5, 2)); 20724 assert_true (ai_move (ai, 2, 1)); 20725 assert_true (ai_move (ai, 5, 3)); 20726 assert_true (ai_move (ai, 6, 2)); 20727 assert_true (ai_move (ai, 6, 3)); 20728 assert_true (ai_move (ai, 5, 1)); 20729 assert_true (ai_move (ai, 6, 5)); 20730 assert_true (ai_move (ai, 7, 5)); 20731 assert_true (ai_move (ai, 4, 1)); 20732 assert_true (ai_move (ai, 5, 0)); 20733 assert_true (ai_move (ai, 7, 2)); 20734 assert_true (ai_move (ai, 6, 4)); 20735 assert_true (ai_move (ai, 4, 5)); 20736 assert_true (ai_move (ai, 3, 0)); 20737 assert_true (ai_move (ai, 5, 7)); 20738 assert_true (ai_move (ai, 4, 6)); 20739 assert_true (ai_move (ai, 3, 5)); 20740 assert_true (ai_move (ai, 1, 5)); 20741 assert_true (ai_move (ai, 3, 6)); 20742 assert_true (ai_move (ai, 2, 6)); 20743 assert_true (ai_move (ai, 2, 4)); 20744 assert_true (ai_move (ai, 7, 3)); 20745 assert_true (ai_move (ai, 2, 7)); 20746 assert_true (ai_move (ai, 2, 2)); 20747 assert_true (ai_move (ai, 4, 2)); 20748 assert_true (ai_move (ai, 2, 3)); 20749 assert_true (ai_move (ai, 4, 0)); 20750 assert_true (ai_move (ai, 1, 4)); 20751 assert_true (ai_move (ai, 0, 3)); 20752 assert_true (ai_move (ai, 0, 5)); 20753 assert_true (ai_move (ai, 1, 3)); 20754 assert_true (ai_move (ai, 2, 0)); 20755 assert_true (ai_move (ai, 1, 2)); 20756 assert_true (ai_move (ai, 0, 4)); 20757 assert_true (ai_move (ai, 0, 6)); 20758 assert_true (ai_move (ai, 0, 2)); 20759 assert_true (ai_move (ai, 0, 1)); 20760 assert_true (ai_move (ai, 4, 7)); 20761 assert_true (ai_move (ai, 3, 7)); 20762 assert_true (ai_move (ai, 1, 1)); 20763 assert_true (ai_move (ai, 6, 7)); 20764 assert_true (ai_move (ai, 7, 1)); 20765 assert_true (ai_move (ai, 7, 4)); 20766 assert_true (ai_move (ai, 6, 1)); 20767 assert_true (ai_move (ai, 7, 0)); 20768 assert_true (ai_move (ai, 6, 0)); 20769 assert_true (ai_move (ai, 7, 6)); 20770 assert_true (ai_move (ai, 6, 6)); 20771 assert_true (ai_move (ai, 1, 6)); 20772 assert_true (ai_move (ai, 0, 7)); 20773 assert_true (ai_move (ai, 1, 7)); 20774 assert_true (ai_move (ai, 7, 7)); 20775 assert_true (ai_move (ai, 1, 0)); 20776 assert_true (ai_move (ai, 0, 0)); 20777 } 20778 20779 private static inline void test_complete_reversi_game_261 () 20780 { 20781 /* 0 1 2 3 4 5 6 7 */ 20782 string [] board = {/* 0 */ " . . . . . . . .", 20783 /* 1 */ " . . . . . . . .", 20784 /* 2 */ " . . . . . . . .", 20785 /* 3 */ " . . . D D . . .", 20786 /* 4 */ " . . L L L L . .", 20787 /* 5 */ " . . D . . D . .", 20788 /* 6 */ " . . . . . . . .", 20789 /* 7 */ " . . . . . . . ."}; 20790 20791 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 20792 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 20793 20794 assert_true (ai_move (ai, 5, 3)); 20795 assert_true (ai_move (ai, 2, 6)); 20796 assert_true (ai_move (ai, 1, 5)); 20797 assert_true (ai_move (ai, 2, 3)); 20798 assert_true (ai_move (ai, 1, 3)); 20799 assert_true (ai_move (ai, 1, 2)); 20800 assert_true (ai_move (ai, 3, 7)); 20801 assert_true (ai_move (ai, 2, 7)); 20802 assert_true (ai_move (ai, 1, 7)); 20803 assert_true (ai_move (ai, 6, 4)); 20804 assert_true (ai_move (ai, 6, 5)); 20805 assert_true (ai_move (ai, 4, 6)); 20806 assert_true (ai_move (ai, 5, 6)); 20807 assert_true (ai_move (ai, 0, 5)); 20808 assert_true (ai_move (ai, 7, 3)); 20809 assert_true (ai_move (ai, 3, 2)); 20810 assert_true (ai_move (ai, 2, 1)); 20811 assert_true (ai_move (ai, 3, 0)); 20812 assert_true (ai_move (ai, 4, 5)); 20813 assert_true (ai_move (ai, 3, 1)); 20814 assert_true (ai_move (ai, 4, 7)); 20815 assert_true (ai_move (ai, 1, 4)); 20816 assert_true (ai_move (ai, 3, 5)); 20817 assert_true (ai_move (ai, 3, 6)); 20818 assert_true (ai_move (ai, 2, 2)); 20819 assert_true (ai_move (ai, 7, 5)); 20820 assert_true (ai_move (ai, 4, 2)); 20821 assert_true (ai_move (ai, 5, 2)); 20822 assert_true (ai_move (ai, 6, 3)); 20823 assert_true (ai_move (ai, 7, 4)); 20824 assert_true (ai_move (ai, 7, 2)); 20825 assert_true (ai_move (ai, 7, 1)); 20826 assert_true (ai_move (ai, 5, 1)); 20827 assert_true (ai_move (ai, 6, 2)); 20828 assert_true (ai_move (ai, 4, 1)); 20829 assert_true (ai_move (ai, 5, 0)); 20830 assert_true (ai_move (ai, 4, 0)); 20831 assert_true (ai_move (ai, 5, 7)); 20832 assert_true (ai_move (ai, 6, 7)); 20833 assert_true (ai_move (ai, 1, 6)); 20834 assert_true (ai_move (ai, 0, 3)); 20835 assert_true (ai_move (ai, 0, 2)); 20836 assert_true (ai_move (ai, 0, 4)); 20837 assert_true (ai_move (ai, 2, 0)); 20838 assert_true (ai_move (ai, 6, 6)); 20839 assert_true (ai_move (ai, 0, 6)); 20840 assert_true (ai_move (ai, 1, 1)); 20841 assert_true (ai_move (ai, 7, 6)); 20842 assert_true (ai_move (ai, 7, 7)); 20843 assert_true (ai_move (ai, 0, 1)); 20844 assert_true (ai_move (ai, 7, 0)); 20845 assert_true (game.pass ()); 20846 assert_true (ai_move (ai, 6, 0)); 20847 assert_true (ai_move (ai, 6, 1)); 20848 assert_true (ai_move (ai, 1, 0)); 20849 assert_true (game.pass ()); 20850 assert_true (ai_move (ai, 0, 0)); 20851 assert_true (game.pass ()); 20852 assert_true (ai_move (ai, 0, 7)); 20853 } 20854 20855 private static inline void test_complete_reversi_game_262 () 20856 { 20857 /* 0 1 2 3 4 5 6 7 */ 20858 string [] board = {/* 0 */ " . . . . . . . .", 20859 /* 1 */ " . . . . . . . .", 20860 /* 2 */ " . . L . . . . .", 20861 /* 3 */ " . . . L D . . .", 20862 /* 4 */ " . . . D L L . .", 20863 /* 5 */ " . . D . . D . .", 20864 /* 6 */ " . . . . . . . .", 20865 /* 7 */ " . . . . . . . ."}; 20866 20867 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 20868 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 20869 20870 assert_true (ai_move (ai, 5, 3)); 20871 assert_true (ai_move (ai, 6, 4)); 20872 assert_true (ai_move (ai, 6, 5)); 20873 assert_true (ai_move (ai, 4, 6)); 20874 assert_true (ai_move (ai, 5, 6)); 20875 assert_true (ai_move (ai, 6, 2)); 20876 assert_true (ai_move (ai, 5, 2)); 20877 assert_true (ai_move (ai, 3, 5)); 20878 assert_true (ai_move (ai, 7, 2)); 20879 assert_true (ai_move (ai, 1, 5)); 20880 assert_true (ai_move (ai, 7, 3)); 20881 assert_true (ai_move (ai, 4, 2)); 20882 assert_true (ai_move (ai, 3, 1)); 20883 assert_true (ai_move (ai, 4, 1)); 20884 assert_true (ai_move (ai, 1, 3)); 20885 assert_true (ai_move (ai, 6, 3)); 20886 assert_true (ai_move (ai, 5, 1)); 20887 assert_true (ai_move (ai, 4, 5)); 20888 assert_true (ai_move (ai, 3, 2)); 20889 assert_true (ai_move (ai, 7, 4)); 20890 assert_true (ai_move (ai, 7, 5)); 20891 assert_true (ai_move (ai, 5, 0)); 20892 assert_true (ai_move (ai, 2, 6)); 20893 assert_true (ai_move (ai, 2, 4)); 20894 assert_true (ai_move (ai, 4, 0)); 20895 assert_true (ai_move (ai, 5, 7)); 20896 assert_true (ai_move (ai, 0, 5)); 20897 assert_true (ai_move (ai, 2, 7)); 20898 assert_true (ai_move (ai, 1, 4)); 20899 assert_true (ai_move (ai, 1, 2)); 20900 assert_true (ai_move (ai, 0, 2)); 20901 assert_true (ai_move (ai, 3, 6)); 20902 assert_true (ai_move (ai, 2, 3)); 20903 assert_true (ai_move (ai, 2, 1)); 20904 assert_true (ai_move (ai, 3, 0)); 20905 assert_true (ai_move (ai, 2, 0)); 20906 assert_true (ai_move (ai, 4, 7)); 20907 assert_true (ai_move (ai, 3, 7)); 20908 assert_true (ai_move (ai, 1, 1)); 20909 assert_true (ai_move (ai, 6, 0)); 20910 assert_true (ai_move (ai, 1, 7)); 20911 assert_true (ai_move (ai, 0, 7)); 20912 assert_true (ai_move (ai, 6, 1)); 20913 assert_true (ai_move (ai, 6, 7)); 20914 assert_true (ai_move (ai, 6, 6)); 20915 assert_true (ai_move (ai, 1, 6)); 20916 assert_true (ai_move (ai, 0, 6)); 20917 assert_true (ai_move (ai, 0, 4)); 20918 assert_true (ai_move (ai, 0, 3)); 20919 assert_true (ai_move (ai, 7, 0)); 20920 assert_true (ai_move (ai, 7, 1)); 20921 assert_true (ai_move (ai, 0, 0)); 20922 assert_true (ai_move (ai, 0, 1)); 20923 assert_true (ai_move (ai, 1, 0)); 20924 assert_true (game.pass ()); 20925 assert_true (ai_move (ai, 7, 6)); 20926 assert_true (ai_move (ai, 7, 7)); 20927 } 20928 20929 private static inline void test_complete_reversi_game_263 () 20930 { 20931 /* 0 1 2 3 4 5 6 7 */ 20932 string [] board = {/* 0 */ " . . . . . . . .", 20933 /* 1 */ " . . . . . . . .", 20934 /* 2 */ " . . . . . L . .", 20935 /* 3 */ " . . . D D L . .", 20936 /* 4 */ " . . . L L L . .", 20937 /* 5 */ " . . . . . D . .", 20938 /* 6 */ " . . . . . . . .", 20939 /* 7 */ " . . . . . . . ."}; 20940 20941 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 20942 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 20943 20944 assert_true (ai_move (ai, 6, 5)); 20945 assert_true (ai_move (ai, 6, 4)); 20946 assert_true (ai_move (ai, 5, 1)); 20947 assert_true (ai_move (ai, 6, 2)); 20948 assert_true (ai_move (ai, 7, 2)); 20949 assert_true (ai_move (ai, 5, 6)); 20950 assert_true (ai_move (ai, 4, 7)); 20951 assert_true (ai_move (ai, 5, 7)); 20952 assert_true (ai_move (ai, 6, 7)); 20953 assert_true (ai_move (ai, 7, 4)); 20954 assert_true (ai_move (ai, 6, 3)); 20955 assert_true (ai_move (ai, 5, 0)); 20956 assert_true (ai_move (ai, 4, 1)); 20957 assert_true (ai_move (ai, 4, 2)); 20958 assert_true (ai_move (ai, 3, 2)); 20959 assert_true (ai_move (ai, 2, 1)); 20960 assert_true (ai_move (ai, 2, 2)); 20961 assert_true (ai_move (ai, 4, 0)); 20962 assert_true (ai_move (ai, 4, 5)); 20963 assert_true (ai_move (ai, 3, 5)); 20964 assert_true (ai_move (ai, 2, 0)); 20965 assert_true (ai_move (ai, 1, 2)); 20966 assert_true (ai_move (ai, 3, 1)); 20967 assert_true (ai_move (ai, 2, 3)); 20968 assert_true (ai_move (ai, 7, 5)); 20969 assert_true (ai_move (ai, 7, 3)); 20970 assert_true (ai_move (ai, 1, 3)); 20971 assert_true (ai_move (ai, 6, 1)); 20972 assert_true (ai_move (ai, 4, 6)); 20973 assert_true (ai_move (ai, 3, 6)); 20974 assert_true (ai_move (ai, 2, 7)); 20975 assert_true (ai_move (ai, 3, 0)); 20976 assert_true (ai_move (ai, 2, 6)); 20977 assert_true (ai_move (ai, 2, 5)); 20978 assert_true (ai_move (ai, 1, 5)); 20979 assert_true (ai_move (ai, 1, 0)); 20980 assert_true (ai_move (ai, 0, 2)); 20981 assert_true (ai_move (ai, 1, 1)); 20982 assert_true (ai_move (ai, 0, 0)); 20983 assert_true (ai_move (ai, 0, 4)); 20984 assert_true (ai_move (ai, 1, 4)); 20985 assert_true (ai_move (ai, 2, 4)); 20986 assert_true (ai_move (ai, 7, 0)); 20987 assert_true (ai_move (ai, 6, 0)); 20988 assert_true (ai_move (ai, 7, 1)); 20989 assert_true (ai_move (ai, 0, 1)); 20990 assert_true (ai_move (ai, 0, 3)); 20991 assert_true (ai_move (ai, 0, 5)); 20992 assert_true (ai_move (ai, 0, 6)); 20993 assert_true (ai_move (ai, 0, 7)); 20994 assert_true (game.pass ()); 20995 assert_true (ai_move (ai, 1, 6)); 20996 assert_true (ai_move (ai, 1, 7)); 20997 assert_true (ai_move (ai, 3, 7)); 20998 assert_true (ai_move (ai, 6, 6)); 20999 assert_true (ai_move (ai, 7, 7)); 21000 assert_true (ai_move (ai, 7, 6)); 21001 } 21002 21003 private static inline void test_complete_reversi_game_264 () 21004 { 21005 /* 0 1 2 3 4 5 6 7 */ 21006 string [] board = {/* 0 */ " . . . . . . . .", 21007 /* 1 */ " . . . . . . . .", 21008 /* 2 */ " . . . L . L . .", 21009 /* 3 */ " . . . L D D . .", 21010 /* 4 */ " . . . L D . . .", 21011 /* 5 */ " . . . . . D . .", 21012 /* 6 */ " . . . . . . . .", 21013 /* 7 */ " . . . . . . . ."}; 21014 21015 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 21016 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 21017 21018 assert_true (ai_move (ai, 5, 1)); 21019 assert_true (ai_move (ai, 5, 4)); 21020 assert_true (ai_move (ai, 3, 5)); 21021 assert_true (ai_move (ai, 4, 5)); 21022 assert_true (ai_move (ai, 2, 2)); 21023 assert_true (ai_move (ai, 6, 5)); 21024 assert_true (ai_move (ai, 5, 6)); 21025 assert_true (ai_move (ai, 1, 2)); 21026 assert_true (ai_move (ai, 4, 6)); 21027 assert_true (ai_move (ai, 2, 5)); 21028 assert_true (ai_move (ai, 6, 4)); 21029 assert_true (ai_move (ai, 6, 2)); 21030 assert_true (ai_move (ai, 7, 3)); 21031 assert_true (ai_move (ai, 7, 5)); 21032 assert_true (ai_move (ai, 1, 5)); 21033 assert_true (ai_move (ai, 5, 7)); 21034 assert_true (ai_move (ai, 2, 3)); 21035 assert_true (ai_move (ai, 1, 4)); 21036 assert_true (ai_move (ai, 0, 3)); 21037 assert_true (ai_move (ai, 5, 0)); 21038 assert_true (ai_move (ai, 1, 3)); 21039 assert_true (ai_move (ai, 7, 2)); 21040 assert_true (ai_move (ai, 7, 4)); 21041 assert_true (ai_move (ai, 6, 3)); 21042 assert_true (ai_move (ai, 4, 7)); 21043 assert_true (ai_move (ai, 3, 7)); 21044 assert_true (ai_move (ai, 4, 2)); 21045 assert_true (ai_move (ai, 3, 1)); 21046 assert_true (ai_move (ai, 4, 1)); 21047 assert_true (ai_move (ai, 2, 6)); 21048 assert_true (ai_move (ai, 0, 2)); 21049 assert_true (ai_move (ai, 3, 6)); 21050 assert_true (ai_move (ai, 2, 1)); 21051 assert_true (ai_move (ai, 2, 0)); 21052 assert_true (ai_move (ai, 6, 6)); 21053 assert_true (ai_move (ai, 2, 4)); 21054 assert_true (ai_move (ai, 3, 0)); 21055 assert_true (ai_move (ai, 7, 7)); 21056 assert_true (ai_move (ai, 2, 7)); 21057 assert_true (ai_move (ai, 6, 7)); 21058 assert_true (ai_move (ai, 7, 6)); 21059 assert_true (ai_move (ai, 4, 0)); 21060 assert_true (ai_move (ai, 6, 0)); 21061 assert_true (ai_move (ai, 7, 0)); 21062 assert_true (ai_move (ai, 7, 1)); 21063 assert_true (ai_move (ai, 1, 0)); 21064 assert_true (ai_move (ai, 1, 1)); 21065 assert_true (ai_move (ai, 6, 1)); 21066 assert_true (game.pass ()); 21067 assert_true (ai_move (ai, 1, 7)); 21068 assert_true (ai_move (ai, 1, 6)); 21069 assert_true (ai_move (ai, 0, 4)); 21070 assert_true (ai_move (ai, 0, 6)); 21071 assert_true (ai_move (ai, 0, 5)); 21072 assert_true (game.pass ()); 21073 assert_true (ai_move (ai, 0, 1)); 21074 assert_true (ai_move (ai, 0, 0)); 21075 } 21076 21077 private static inline void test_complete_reversi_game_265 () 21078 { 21079 /* 0 1 2 3 4 5 6 7 */ 21080 string [] board = {/* 0 */ " . . . . . . . .", 21081 /* 1 */ " . . . . . . . .", 21082 /* 2 */ " . . . . D L . .", 21083 /* 3 */ " . . . D D . . .", 21084 /* 4 */ " . . . L L L . .", 21085 /* 5 */ " . . . . . D . .", 21086 /* 6 */ " . . . . . . . .", 21087 /* 7 */ " . . . . . . . ."}; 21088 21089 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 21090 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 21091 21092 assert_true (ai_move (ai, 6, 5)); 21093 assert_true (ai_move (ai, 6, 4)); 21094 assert_true (ai_move (ai, 5, 3)); 21095 assert_true (ai_move (ai, 5, 6)); 21096 assert_true (ai_move (ai, 6, 2)); 21097 assert_true (ai_move (ai, 5, 1)); 21098 assert_true (ai_move (ai, 4, 0)); 21099 assert_true (ai_move (ai, 5, 0)); 21100 assert_true (ai_move (ai, 4, 7)); 21101 assert_true (ai_move (ai, 3, 0)); 21102 assert_true (ai_move (ai, 7, 5)); 21103 assert_true (ai_move (ai, 7, 2)); 21104 assert_true (ai_move (ai, 4, 6)); 21105 assert_true (ai_move (ai, 5, 7)); 21106 assert_true (ai_move (ai, 6, 7)); 21107 assert_true (ai_move (ai, 7, 3)); 21108 assert_true (ai_move (ai, 6, 3)); 21109 assert_true (ai_move (ai, 3, 6)); 21110 assert_true (ai_move (ai, 4, 1)); 21111 assert_true (ai_move (ai, 3, 1)); 21112 assert_true (ai_move (ai, 3, 7)); 21113 assert_true (ai_move (ai, 2, 2)); 21114 assert_true (ai_move (ai, 2, 0)); 21115 assert_true (ai_move (ai, 1, 0)); 21116 assert_true (ai_move (ai, 1, 3)); 21117 assert_true (ai_move (ai, 2, 1)); 21118 assert_true (ai_move (ai, 2, 3)); 21119 assert_true (ai_move (ai, 3, 2)); 21120 assert_true (ai_move (ai, 2, 5)); 21121 assert_true (ai_move (ai, 2, 4)); 21122 assert_true (ai_move (ai, 4, 5)); 21123 assert_true (ai_move (ai, 2, 6)); 21124 assert_true (ai_move (ai, 3, 5)); 21125 assert_true (ai_move (ai, 1, 4)); 21126 assert_true (ai_move (ai, 1, 2)); 21127 assert_true (ai_move (ai, 0, 3)); 21128 assert_true (ai_move (ai, 1, 5)); 21129 assert_true (ai_move (ai, 2, 7)); 21130 assert_true (ai_move (ai, 1, 7)); 21131 assert_true (ai_move (ai, 0, 5)); 21132 assert_true (ai_move (ai, 0, 4)); 21133 assert_true (ai_move (ai, 7, 4)); 21134 assert_true (ai_move (ai, 7, 1)); 21135 assert_true (ai_move (ai, 0, 6)); 21136 assert_true (ai_move (ai, 0, 7)); 21137 assert_true (ai_move (ai, 1, 6)); 21138 assert_true (ai_move (ai, 0, 2)); 21139 assert_true (ai_move (ai, 1, 1)); 21140 assert_true (ai_move (ai, 0, 1)); 21141 assert_true (ai_move (ai, 6, 6)); 21142 assert_true (ai_move (ai, 7, 6)); 21143 assert_true (ai_move (ai, 7, 7)); 21144 assert_true (ai_move (ai, 6, 0)); 21145 assert_true (ai_move (ai, 7, 0)); 21146 assert_true (game.pass ()); 21147 assert_true (ai_move (ai, 6, 1)); 21148 } 21149 21150 private static inline void test_complete_reversi_game_266 () 21151 { 21152 /* 0 1 2 3 4 5 6 7 */ 21153 string [] board = {/* 0 */ " . . . . . . . .", 21154 /* 1 */ " . . . . . . . .", 21155 /* 2 */ " . . . L L L . .", 21156 /* 3 */ " . . . L D . . .", 21157 /* 4 */ " . . . L D . . .", 21158 /* 5 */ " . . . . . D . .", 21159 /* 6 */ " . . . . . . . .", 21160 /* 7 */ " . . . . . . . ."}; 21161 21162 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 21163 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 21164 21165 assert_true (ai_move (ai, 4, 1)); 21166 assert_true (ai_move (ai, 5, 1)); 21167 assert_true (ai_move (ai, 6, 3)); 21168 assert_true (ai_move (ai, 6, 2)); 21169 assert_true (ai_move (ai, 2, 1)); 21170 assert_true (ai_move (ai, 2, 2)); 21171 assert_true (ai_move (ai, 2, 5)); 21172 assert_true (ai_move (ai, 2, 0)); 21173 assert_true (ai_move (ai, 2, 3)); 21174 assert_true (ai_move (ai, 3, 0)); 21175 assert_true (ai_move (ai, 1, 2)); 21176 assert_true (ai_move (ai, 0, 2)); 21177 assert_true (ai_move (ai, 5, 0)); 21178 assert_true (ai_move (ai, 3, 1)); 21179 assert_true (ai_move (ai, 7, 2)); 21180 assert_true (ai_move (ai, 1, 4)); 21181 assert_true (ai_move (ai, 6, 0)); 21182 assert_true (ai_move (ai, 3, 6)); 21183 assert_true (ai_move (ai, 1, 3)); 21184 assert_true (ai_move (ai, 0, 4)); 21185 assert_true (ai_move (ai, 0, 3)); 21186 assert_true (ai_move (ai, 2, 4)); 21187 assert_true (ai_move (ai, 1, 5)); 21188 assert_true (ai_move (ai, 0, 5)); 21189 assert_true (ai_move (ai, 2, 6)); 21190 assert_true (ai_move (ai, 2, 7)); 21191 assert_true (ai_move (ai, 4, 7)); 21192 assert_true (ai_move (ai, 3, 5)); 21193 assert_true (ai_move (ai, 1, 6)); 21194 assert_true (ai_move (ai, 5, 3)); 21195 assert_true (ai_move (ai, 4, 5)); 21196 assert_true (ai_move (ai, 4, 6)); 21197 assert_true (ai_move (ai, 3, 7)); 21198 assert_true (ai_move (ai, 6, 5)); 21199 assert_true (ai_move (ai, 1, 7)); 21200 assert_true (ai_move (ai, 7, 3)); 21201 assert_true (ai_move (ai, 7, 4)); 21202 assert_true (ai_move (ai, 5, 7)); 21203 assert_true (ai_move (ai, 6, 7)); 21204 assert_true (ai_move (ai, 0, 7)); 21205 assert_true (ai_move (ai, 7, 5)); 21206 assert_true (ai_move (ai, 7, 7)); 21207 assert_true (ai_move (ai, 0, 6)); 21208 assert_true (ai_move (ai, 6, 6)); 21209 assert_true (ai_move (ai, 5, 6)); 21210 assert_true (ai_move (ai, 5, 4)); 21211 assert_true (ai_move (ai, 6, 4)); 21212 assert_true (ai_move (ai, 7, 6)); 21213 assert_true (ai_move (ai, 4, 0)); 21214 assert_true (ai_move (ai, 7, 0)); 21215 assert_true (ai_move (ai, 1, 0)); 21216 assert_true (ai_move (ai, 7, 1)); 21217 assert_true (ai_move (ai, 6, 1)); 21218 assert_true (ai_move (ai, 0, 0)); 21219 assert_true (ai_move (ai, 1, 1)); 21220 assert_true (ai_move (ai, 0, 1)); 21221 } 21222 21223 private static inline void test_complete_reversi_game_267 () 21224 { 21225 /* 0 1 2 3 4 5 6 7 */ 21226 string [] board = {/* 0 */ " . . . . . . . .", 21227 /* 1 */ " . . . . . . . .", 21228 /* 2 */ " . . . . . L . .", 21229 /* 3 */ " . . . D L . . .", 21230 /* 4 */ " . . . D L . . .", 21231 /* 5 */ " . . . D L D . .", 21232 /* 6 */ " . . . . . . . .", 21233 /* 7 */ " . . . . . . . ."}; 21234 21235 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 21236 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 21237 21238 assert_true (ai_move (ai, 5, 6)); 21239 assert_true (ai_move (ai, 4, 6)); 21240 assert_true (ai_move (ai, 5, 7)); 21241 assert_true (ai_move (ai, 6, 5)); 21242 assert_true (ai_move (ai, 6, 4)); 21243 assert_true (ai_move (ai, 2, 6)); 21244 assert_true (ai_move (ai, 2, 4)); 21245 assert_true (ai_move (ai, 6, 3)); 21246 assert_true (ai_move (ai, 7, 3)); 21247 assert_true (ai_move (ai, 4, 7)); 21248 assert_true (ai_move (ai, 7, 5)); 21249 assert_true (ai_move (ai, 5, 4)); 21250 assert_true (ai_move (ai, 3, 7)); 21251 assert_true (ai_move (ai, 7, 4)); 21252 assert_true (ai_move (ai, 1, 5)); 21253 assert_true (ai_move (ai, 1, 4)); 21254 assert_true (ai_move (ai, 1, 3)); 21255 assert_true (ai_move (ai, 0, 4)); 21256 assert_true (ai_move (ai, 4, 2)); 21257 assert_true (ai_move (ai, 2, 5)); 21258 assert_true (ai_move (ai, 2, 3)); 21259 assert_true (ai_move (ai, 3, 6)); 21260 assert_true (ai_move (ai, 6, 2)); 21261 assert_true (ai_move (ai, 5, 3)); 21262 assert_true (ai_move (ai, 0, 5)); 21263 assert_true (ai_move (ai, 0, 2)); 21264 assert_true (ai_move (ai, 0, 3)); 21265 assert_true (ai_move (ai, 0, 6)); 21266 assert_true (ai_move (ai, 1, 6)); 21267 assert_true (ai_move (ai, 1, 2)); 21268 assert_true (ai_move (ai, 2, 2)); 21269 assert_true (ai_move (ai, 0, 7)); 21270 assert_true (ai_move (ai, 6, 7)); 21271 assert_true (ai_move (ai, 2, 1)); 21272 assert_true (ai_move (ai, 3, 2)); 21273 assert_true (ai_move (ai, 5, 1)); 21274 assert_true (ai_move (ai, 5, 0)); 21275 assert_true (ai_move (ai, 7, 2)); 21276 assert_true (ai_move (ai, 7, 1)); 21277 assert_true (ai_move (ai, 6, 6)); 21278 assert_true (ai_move (ai, 3, 1)); 21279 assert_true (ai_move (ai, 4, 0)); 21280 assert_true (ai_move (ai, 4, 1)); 21281 assert_true (ai_move (ai, 6, 0)); 21282 assert_true (ai_move (ai, 2, 0)); 21283 assert_true (ai_move (ai, 1, 1)); 21284 assert_true (ai_move (ai, 2, 7)); 21285 assert_true (ai_move (ai, 1, 7)); 21286 assert_true (ai_move (ai, 7, 6)); 21287 assert_true (ai_move (ai, 7, 7)); 21288 assert_true (ai_move (ai, 3, 0)); 21289 assert_true (ai_move (ai, 7, 0)); 21290 assert_true (ai_move (ai, 6, 1)); 21291 assert_true (ai_move (ai, 1, 0)); 21292 assert_true (ai_move (ai, 0, 1)); 21293 assert_true (ai_move (ai, 0, 0)); 21294 } 21295 21296 private static inline void test_complete_reversi_game_268 () 21297 { 21298 /* 0 1 2 3 4 5 6 7 */ 21299 string [] board = {/* 0 */ " . . . . . . . .", 21300 /* 1 */ " . . . . . . . .", 21301 /* 2 */ " . . . . . L . .", 21302 /* 3 */ " . . . D L . . .", 21303 /* 4 */ " . . . L D . . .", 21304 /* 5 */ " . . L D . D . .", 21305 /* 6 */ " . . . . . . . .", 21306 /* 7 */ " . . . . . . . ."}; 21307 21308 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 21309 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 21310 21311 assert_true (ai_move (ai, 1, 5)); 21312 assert_true (ai_move (ai, 5, 4)); 21313 assert_true (ai_move (ai, 5, 3)); 21314 assert_true (ai_move (ai, 5, 6)); 21315 assert_true (ai_move (ai, 6, 4)); 21316 assert_true (ai_move (ai, 7, 5)); 21317 assert_true (ai_move (ai, 2, 4)); 21318 assert_true (ai_move (ai, 2, 6)); 21319 assert_true (ai_move (ai, 3, 6)); 21320 assert_true (ai_move (ai, 0, 4)); 21321 assert_true (ai_move (ai, 4, 5)); 21322 assert_true (ai_move (ai, 4, 2)); 21323 assert_true (ai_move (ai, 2, 2)); 21324 assert_true (ai_move (ai, 2, 3)); 21325 assert_true (ai_move (ai, 4, 6)); 21326 assert_true (ai_move (ai, 6, 5)); 21327 assert_true (ai_move (ai, 6, 3)); 21328 assert_true (ai_move (ai, 5, 7)); 21329 assert_true (ai_move (ai, 6, 2)); 21330 assert_true (ai_move (ai, 2, 1)); 21331 assert_true (ai_move (ai, 2, 7)); 21332 assert_true (ai_move (ai, 7, 2)); 21333 assert_true (ai_move (ai, 0, 5)); 21334 assert_true (ai_move (ai, 7, 3)); 21335 assert_true (ai_move (ai, 7, 4)); 21336 assert_true (ai_move (ai, 3, 7)); 21337 assert_true (ai_move (ai, 5, 1)); 21338 assert_true (ai_move (ai, 5, 0)); 21339 assert_true (ai_move (ai, 0, 3)); 21340 assert_true (ai_move (ai, 1, 4)); 21341 assert_true (ai_move (ai, 4, 1)); 21342 assert_true (ai_move (ai, 3, 1)); 21343 assert_true (ai_move (ai, 3, 2)); 21344 assert_true (ai_move (ai, 1, 2)); 21345 assert_true (ai_move (ai, 1, 6)); 21346 assert_true (ai_move (ai, 1, 7)); 21347 assert_true (ai_move (ai, 6, 1)); 21348 assert_true (ai_move (ai, 1, 3)); 21349 assert_true (ai_move (ai, 0, 7)); 21350 assert_true (ai_move (ai, 0, 6)); 21351 assert_true (ai_move (ai, 4, 7)); 21352 assert_true (ai_move (ai, 7, 0)); 21353 assert_true (ai_move (ai, 2, 0)); 21354 assert_true (ai_move (ai, 7, 1)); 21355 assert_true (ai_move (ai, 3, 0)); 21356 assert_true (ai_move (ai, 0, 2)); 21357 assert_true (ai_move (ai, 0, 1)); 21358 assert_true (ai_move (ai, 4, 0)); 21359 assert_true (ai_move (ai, 6, 7)); 21360 assert_true (ai_move (ai, 1, 0)); 21361 assert_true (ai_move (ai, 6, 0)); 21362 assert_true (ai_move (ai, 6, 6)); 21363 assert_true (ai_move (ai, 0, 0)); 21364 assert_true (ai_move (ai, 1, 1)); 21365 assert_true (ai_move (ai, 7, 6)); 21366 assert_true (ai_move (ai, 7, 7)); 21367 } 21368 21369 private static inline void test_complete_reversi_game_269 () 21370 { 21371 /* 0 1 2 3 4 5 6 7 */ 21372 string [] board = {/* 0 */ " . . . . . . . .", 21373 /* 1 */ " . . . . . . . .", 21374 /* 2 */ " . . . . . L . .", 21375 /* 3 */ " . . L L L . . .", 21376 /* 4 */ " . . . D D . . .", 21377 /* 5 */ " . . . D . D . .", 21378 /* 6 */ " . . . . . . . .", 21379 /* 7 */ " . . . . . . . ."}; 21380 21381 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 21382 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 21383 21384 assert_true (ai_move (ai, 1, 2)); 21385 assert_true (ai_move (ai, 1, 3)); 21386 assert_true (ai_move (ai, 1, 4)); 21387 assert_true (ai_move (ai, 0, 3)); 21388 assert_true (ai_move (ai, 3, 2)); 21389 assert_true (ai_move (ai, 2, 1)); 21390 assert_true (ai_move (ai, 3, 1)); 21391 assert_true (ai_move (ai, 1, 5)); 21392 assert_true (ai_move (ai, 0, 5)); 21393 assert_true (ai_move (ai, 4, 1)); 21394 assert_true (ai_move (ai, 2, 5)); 21395 assert_true (ai_move (ai, 4, 5)); 21396 assert_true (ai_move (ai, 5, 0)); 21397 assert_true (ai_move (ai, 6, 5)); 21398 assert_true (ai_move (ai, 6, 3)); 21399 assert_true (ai_move (ai, 2, 6)); 21400 assert_true (ai_move (ai, 2, 7)); 21401 assert_true (ai_move (ai, 5, 1)); 21402 assert_true (ai_move (ai, 5, 4)); 21403 assert_true (ai_move (ai, 6, 4)); 21404 assert_true (ai_move (ai, 7, 5)); 21405 assert_true (ai_move (ai, 5, 6)); 21406 assert_true (ai_move (ai, 3, 6)); 21407 assert_true (ai_move (ai, 4, 6)); 21408 assert_true (ai_move (ai, 5, 7)); 21409 assert_true (ai_move (ai, 6, 2)); 21410 assert_true (ai_move (ai, 7, 3)); 21411 assert_true (ai_move (ai, 4, 2)); 21412 assert_true (ai_move (ai, 3, 0)); 21413 assert_true (ai_move (ai, 2, 0)); 21414 assert_true (ai_move (ai, 7, 4)); 21415 assert_true (ai_move (ai, 5, 3)); 21416 assert_true (ai_move (ai, 7, 2)); 21417 assert_true (ai_move (ai, 4, 0)); 21418 assert_true (ai_move (ai, 1, 0)); 21419 assert_true (ai_move (ai, 2, 4)); 21420 assert_true (ai_move (ai, 6, 0)); 21421 assert_true (ai_move (ai, 2, 2)); 21422 assert_true (ai_move (ai, 0, 4)); 21423 assert_true (ai_move (ai, 0, 6)); 21424 assert_true (ai_move (ai, 0, 2)); 21425 assert_true (ai_move (ai, 0, 1)); 21426 assert_true (ai_move (ai, 1, 6)); 21427 assert_true (ai_move (ai, 0, 7)); 21428 assert_true (ai_move (ai, 1, 7)); 21429 assert_true (ai_move (ai, 3, 7)); 21430 assert_true (ai_move (ai, 4, 7)); 21431 assert_true (ai_move (ai, 6, 7)); 21432 assert_true (ai_move (ai, 6, 6)); 21433 assert_true (ai_move (ai, 7, 7)); 21434 assert_true (ai_move (ai, 7, 6)); 21435 assert_true (ai_move (ai, 7, 1)); 21436 assert_true (ai_move (ai, 6, 1)); 21437 assert_true (ai_move (ai, 7, 0)); 21438 assert_true (ai_move (ai, 1, 1)); 21439 assert_true (ai_move (ai, 0, 0)); 21440 } 21441 21442 private static inline void test_complete_reversi_game_270 () 21443 { 21444 /* 0 1 2 3 4 5 6 7 */ 21445 string [] board = {/* 0 */ " . . . . . . . .", 21446 /* 1 */ " . . . . . . . .", 21447 /* 2 */ " . . . . . L . .", 21448 /* 3 */ " . . . D L . . .", 21449 /* 4 */ " . . D D L . . .", 21450 /* 5 */ " . . . . L D . .", 21451 /* 6 */ " . . . . . . . .", 21452 /* 7 */ " . . . . . . . ."}; 21453 21454 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 21455 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 21456 21457 assert_true (ai_move (ai, 5, 6)); 21458 assert_true (ai_move (ai, 2, 2)); 21459 assert_true (ai_move (ai, 5, 4)); 21460 assert_true (ai_move (ai, 1, 5)); 21461 assert_true (ai_move (ai, 1, 4)); 21462 assert_true (ai_move (ai, 6, 5)); 21463 assert_true (ai_move (ai, 5, 3)); 21464 assert_true (ai_move (ai, 6, 3)); 21465 assert_true (ai_move (ai, 5, 1)); 21466 assert_true (ai_move (ai, 4, 1)); 21467 assert_true (ai_move (ai, 7, 5)); 21468 assert_true (ai_move (ai, 5, 0)); 21469 assert_true (ai_move (ai, 7, 2)); 21470 assert_true (ai_move (ai, 7, 4)); 21471 assert_true (ai_move (ai, 7, 3)); 21472 assert_true (ai_move (ai, 1, 3)); 21473 assert_true (ai_move (ai, 3, 0)); 21474 assert_true (ai_move (ai, 3, 2)); 21475 assert_true (ai_move (ai, 0, 2)); 21476 assert_true (ai_move (ai, 0, 4)); 21477 assert_true (ai_move (ai, 0, 6)); 21478 assert_true (ai_move (ai, 2, 6)); 21479 assert_true (ai_move (ai, 3, 1)); 21480 assert_true (ai_move (ai, 4, 0)); 21481 assert_true (ai_move (ai, 1, 2)); 21482 assert_true (ai_move (ai, 2, 0)); 21483 assert_true (ai_move (ai, 4, 2)); 21484 assert_true (ai_move (ai, 4, 6)); 21485 assert_true (ai_move (ai, 3, 5)); 21486 assert_true (ai_move (ai, 2, 1)); 21487 assert_true (ai_move (ai, 3, 6)); 21488 assert_true (ai_move (ai, 2, 3)); 21489 assert_true (ai_move (ai, 0, 3)); 21490 assert_true (ai_move (ai, 0, 1)); 21491 assert_true (ai_move (ai, 1, 7)); 21492 assert_true (ai_move (ai, 2, 5)); 21493 assert_true (ai_move (ai, 1, 1)); 21494 assert_true (ai_move (ai, 4, 7)); 21495 assert_true (ai_move (ai, 2, 7)); 21496 assert_true (ai_move (ai, 0, 0)); 21497 assert_true (ai_move (ai, 5, 7)); 21498 assert_true (ai_move (ai, 3, 7)); 21499 assert_true (ai_move (ai, 0, 5)); 21500 assert_true (ai_move (ai, 6, 2)); 21501 assert_true (ai_move (ai, 7, 1)); 21502 assert_true (ai_move (ai, 0, 7)); 21503 assert_true (ai_move (ai, 1, 6)); 21504 assert_true (ai_move (ai, 6, 7)); 21505 assert_true (ai_move (ai, 1, 0)); 21506 assert_true (ai_move (ai, 6, 4)); 21507 assert_true (ai_move (ai, 6, 1)); 21508 assert_true (ai_move (ai, 6, 6)); 21509 assert_true (ai_move (ai, 7, 7)); 21510 assert_true (ai_move (ai, 7, 6)); 21511 assert_true (ai_move (ai, 6, 0)); 21512 assert_true (ai_move (ai, 7, 0)); 21513 } 21514 21515 private static inline void test_complete_reversi_game_271 () 21516 { 21517 /* 0 1 2 3 4 5 6 7 */ 21518 string [] board = {/* 0 */ " . . . . . . . .", 21519 /* 1 */ " . . . . . . . .", 21520 /* 2 */ " . . . . . L . .", 21521 /* 3 */ " . . . D L . . .", 21522 /* 4 */ " . . D L D . . .", 21523 /* 5 */ " . . L . . D . .", 21524 /* 6 */ " . . . . . . . .", 21525 /* 7 */ " . . . . . . . ."}; 21526 21527 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 21528 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 21529 21530 assert_true (ai_move (ai, 2, 6)); 21531 assert_true (ai_move (ai, 2, 3)); 21532 assert_true (ai_move (ai, 2, 2)); 21533 assert_true (ai_move (ai, 1, 2)); 21534 assert_true (ai_move (ai, 1, 3)); 21535 assert_true (ai_move (ai, 3, 2)); 21536 assert_true (ai_move (ai, 2, 1)); 21537 assert_true (ai_move (ai, 0, 3)); 21538 assert_true (ai_move (ai, 0, 4)); 21539 assert_true (ai_move (ai, 0, 5)); 21540 assert_true (ai_move (ai, 0, 2)); 21541 assert_true (ai_move (ai, 0, 1)); 21542 assert_true (ai_move (ai, 5, 4)); 21543 assert_true (ai_move (ai, 1, 4)); 21544 assert_true (ai_move (ai, 3, 5)); 21545 assert_true (ai_move (ai, 3, 1)); 21546 assert_true (ai_move (ai, 3, 0)); 21547 assert_true (ai_move (ai, 3, 6)); 21548 assert_true (ai_move (ai, 3, 7)); 21549 assert_true (ai_move (ai, 4, 6)); 21550 assert_true (ai_move (ai, 1, 5)); 21551 assert_true (ai_move (ai, 4, 5)); 21552 assert_true (ai_move (ai, 5, 7)); 21553 assert_true (ai_move (ai, 6, 5)); 21554 assert_true (ai_move (ai, 6, 4)); 21555 assert_true (ai_move (ai, 4, 1)); 21556 assert_true (ai_move (ai, 7, 5)); 21557 assert_true (ai_move (ai, 2, 0)); 21558 assert_true (ai_move (ai, 6, 3)); 21559 assert_true (ai_move (ai, 4, 0)); 21560 assert_true (ai_move (ai, 1, 1)); 21561 assert_true (ai_move (ai, 5, 0)); 21562 assert_true (ai_move (ai, 5, 6)); 21563 assert_true (ai_move (ai, 4, 2)); 21564 assert_true (ai_move (ai, 5, 1)); 21565 assert_true (ai_move (ai, 1, 0)); 21566 assert_true (ai_move (ai, 1, 6)); 21567 assert_true (ai_move (ai, 4, 7)); 21568 assert_true (ai_move (ai, 5, 3)); 21569 assert_true (ai_move (ai, 7, 2)); 21570 assert_true (ai_move (ai, 7, 3)); 21571 assert_true (ai_move (ai, 6, 2)); 21572 assert_true (ai_move (ai, 2, 7)); 21573 assert_true (ai_move (ai, 7, 4)); 21574 assert_true (ai_move (ai, 7, 1)); 21575 assert_true (ai_move (ai, 0, 0)); 21576 assert_true (ai_move (ai, 7, 6)); 21577 assert_true (ai_move (ai, 0, 7)); 21578 assert_true (ai_move (ai, 1, 7)); 21579 assert_true (ai_move (ai, 0, 6)); 21580 assert_true (ai_move (ai, 6, 1)); 21581 assert_true (ai_move (ai, 6, 6)); 21582 assert_true (ai_move (ai, 6, 7)); 21583 assert_true (ai_move (ai, 6, 0)); 21584 assert_true (game.pass ()); 21585 assert_true (ai_move (ai, 7, 0)); 21586 assert_true (game.pass ()); 21587 assert_true (ai_move (ai, 7, 7)); 21588 } 21589 21590 private static inline void test_complete_reversi_game_272 () 21591 { 21592 /* 0 1 2 3 4 5 6 7 */ 21593 string [] board = {/* 0 */ " . . . . . . . .", 21594 /* 1 */ " . . . . . . . .", 21595 /* 2 */ " . . . . . L . .", 21596 /* 3 */ " . . L L L . . .", 21597 /* 4 */ " . . D D D . . .", 21598 /* 5 */ " . . . . . D . .", 21599 /* 6 */ " . . . . . . . .", 21600 /* 7 */ " . . . . . . . ."}; 21601 21602 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 21603 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 21604 21605 assert_true (ai_move (ai, 1, 2)); 21606 assert_true (ai_move (ai, 1, 3)); 21607 assert_true (ai_move (ai, 0, 2)); 21608 assert_true (ai_move (ai, 1, 5)); 21609 assert_true (ai_move (ai, 3, 5)); 21610 assert_true (ai_move (ai, 2, 5)); 21611 assert_true (ai_move (ai, 0, 5)); 21612 assert_true (ai_move (ai, 2, 6)); 21613 assert_true (ai_move (ai, 3, 7)); 21614 assert_true (ai_move (ai, 4, 6)); 21615 assert_true (ai_move (ai, 1, 4)); 21616 assert_true (ai_move (ai, 6, 4)); 21617 assert_true (ai_move (ai, 4, 5)); 21618 assert_true (ai_move (ai, 2, 7)); 21619 assert_true (ai_move (ai, 3, 6)); 21620 assert_true (ai_move (ai, 4, 7)); 21621 assert_true (ai_move (ai, 6, 5)); 21622 assert_true (ai_move (ai, 1, 6)); 21623 assert_true (ai_move (ai, 4, 2)); 21624 assert_true (ai_move (ai, 7, 5)); 21625 assert_true (ai_move (ai, 3, 2)); 21626 assert_true (ai_move (ai, 4, 1)); 21627 assert_true (ai_move (ai, 5, 3)); 21628 assert_true (ai_move (ai, 5, 4)); 21629 assert_true (ai_move (ai, 5, 7)); 21630 assert_true (ai_move (ai, 2, 1)); 21631 assert_true (ai_move (ai, 6, 3)); 21632 assert_true (ai_move (ai, 2, 2)); 21633 assert_true (ai_move (ai, 5, 6)); 21634 assert_true (ai_move (ai, 7, 3)); 21635 assert_true (ai_move (ai, 6, 2)); 21636 assert_true (ai_move (ai, 3, 1)); 21637 assert_true (ai_move (ai, 5, 0)); 21638 assert_true (ai_move (ai, 5, 1)); 21639 assert_true (ai_move (ai, 4, 0)); 21640 assert_true (ai_move (ai, 6, 7)); 21641 assert_true (ai_move (ai, 6, 0)); 21642 assert_true (ai_move (ai, 2, 0)); 21643 assert_true (ai_move (ai, 7, 2)); 21644 assert_true (ai_move (ai, 6, 1)); 21645 assert_true (ai_move (ai, 7, 4)); 21646 assert_true (ai_move (ai, 7, 1)); 21647 assert_true (ai_move (ai, 6, 6)); 21648 assert_true (ai_move (ai, 7, 7)); 21649 assert_true (ai_move (ai, 7, 6)); 21650 assert_true (ai_move (ai, 0, 1)); 21651 assert_true (ai_move (ai, 7, 0)); 21652 assert_true (ai_move (ai, 1, 1)); 21653 assert_true (ai_move (ai, 3, 0)); 21654 assert_true (ai_move (ai, 0, 3)); 21655 assert_true (ai_move (ai, 0, 4)); 21656 assert_true (ai_move (ai, 0, 6)); 21657 assert_true (ai_move (ai, 0, 7)); 21658 assert_true (ai_move (ai, 1, 7)); 21659 assert_true (ai_move (ai, 0, 0)); 21660 assert_true (ai_move (ai, 1, 0)); 21661 } 21662 21663 private static inline void test_complete_reversi_game_273 () 21664 { 21665 /* 0 1 2 3 4 5 6 7 */ 21666 string [] board = {/* 0 */ " . . . . . . . .", 21667 /* 1 */ " . . . . . . . .", 21668 /* 2 */ " . . . L . . . .", 21669 /* 3 */ " . . . L D . . .", 21670 /* 4 */ " . . . D L . . .", 21671 /* 5 */ " . . D . . L . .", 21672 /* 6 */ " . . . . . . L .", 21673 /* 7 */ " . . . . . . . ."}; 21674 21675 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 21676 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 21677 21678 assert_true (ai_move (ai, 5, 4)); 21679 assert_true (ai_move (ai, 3, 5)); 21680 assert_true (ai_move (ai, 2, 6)); 21681 assert_true (ai_move (ai, 3, 6)); 21682 assert_true (ai_move (ai, 4, 5)); 21683 assert_true (ai_move (ai, 1, 4)); 21684 assert_true (ai_move (ai, 1, 5)); 21685 assert_true (ai_move (ai, 5, 6)); 21686 assert_true (ai_move (ai, 2, 1)); 21687 assert_true (ai_move (ai, 6, 3)); 21688 assert_true (ai_move (ai, 6, 4)); 21689 assert_true (ai_move (ai, 0, 5)); 21690 assert_true (ai_move (ai, 2, 7)); 21691 assert_true (ai_move (ai, 3, 1)); 21692 assert_true (ai_move (ai, 0, 3)); 21693 assert_true (ai_move (ai, 2, 3)); 21694 assert_true (ai_move (ai, 4, 6)); 21695 assert_true (ai_move (ai, 4, 7)); 21696 assert_true (ai_move (ai, 0, 4)); 21697 assert_true (ai_move (ai, 0, 2)); 21698 assert_true (ai_move (ai, 2, 4)); 21699 assert_true (ai_move (ai, 0, 6)); 21700 assert_true (ai_move (ai, 5, 7)); 21701 assert_true (ai_move (ai, 3, 7)); 21702 assert_true (ai_move (ai, 7, 2)); 21703 assert_true (ai_move (ai, 6, 5)); 21704 assert_true (ai_move (ai, 5, 3)); 21705 assert_true (ai_move (ai, 7, 4)); 21706 assert_true (ai_move (ai, 7, 3)); 21707 assert_true (ai_move (ai, 5, 2)); 21708 assert_true (ai_move (ai, 5, 1)); 21709 assert_true (ai_move (ai, 4, 1)); 21710 assert_true (ai_move (ai, 6, 2)); 21711 assert_true (ai_move (ai, 5, 0)); 21712 assert_true (ai_move (ai, 3, 0)); 21713 assert_true (ai_move (ai, 7, 1)); 21714 assert_true (ai_move (ai, 1, 2)); 21715 assert_true (ai_move (ai, 7, 5)); 21716 assert_true (ai_move (ai, 1, 3)); 21717 assert_true (ai_move (ai, 4, 2)); 21718 assert_true (ai_move (ai, 2, 2)); 21719 assert_true (ai_move (ai, 2, 0)); 21720 assert_true (ai_move (ai, 4, 0)); 21721 assert_true (ai_move (ai, 1, 1)); 21722 assert_true (ai_move (ai, 6, 1)); 21723 assert_true (ai_move (ai, 7, 0)); 21724 assert_true (ai_move (ai, 6, 0)); 21725 assert_true (ai_move (ai, 6, 7)); 21726 assert_true (ai_move (ai, 7, 7)); 21727 assert_true (game.pass ()); 21728 assert_true (ai_move (ai, 0, 0)); 21729 assert_true (ai_move (ai, 7, 6)); 21730 assert_true (ai_move (ai, 0, 1)); 21731 assert_true (ai_move (ai, 1, 0)); 21732 assert_true (ai_move (ai, 0, 7)); 21733 assert_true (game.pass ()); 21734 assert_true (ai_move (ai, 1, 7)); 21735 assert_true (ai_move (ai, 1, 6)); 21736 } 21737 21738 private static inline void test_complete_reversi_game_274 () 21739 { 21740 /* 0 1 2 3 4 5 6 7 */ 21741 string [] board = {/* 0 */ " . . . . . . . .", 21742 /* 1 */ " . . . . . . . .", 21743 /* 2 */ " . . . L . . . .", 21744 /* 3 */ " . . . L L . . .", 21745 /* 4 */ " . . . D D L . .", 21746 /* 5 */ " . . D . . D . .", 21747 /* 6 */ " . . . . . . . .", 21748 /* 7 */ " . . . . . . . ."}; 21749 21750 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 21751 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 21752 21753 assert_true (ai_move (ai, 5, 3)); 21754 assert_true (ai_move (ai, 6, 5)); 21755 assert_true (ai_move (ai, 6, 4)); 21756 assert_true (ai_move (ai, 4, 5)); 21757 assert_true (ai_move (ai, 4, 6)); 21758 assert_true (ai_move (ai, 6, 2)); 21759 assert_true (ai_move (ai, 5, 6)); 21760 assert_true (ai_move (ai, 7, 5)); 21761 assert_true (ai_move (ai, 5, 2)); 21762 assert_true (ai_move (ai, 3, 7)); 21763 assert_true (ai_move (ai, 2, 1)); 21764 assert_true (ai_move (ai, 5, 1)); 21765 assert_true (ai_move (ai, 6, 3)); 21766 assert_true (ai_move (ai, 3, 1)); 21767 assert_true (ai_move (ai, 3, 5)); 21768 assert_true (ai_move (ai, 1, 5)); 21769 assert_true (ai_move (ai, 2, 6)); 21770 assert_true (ai_move (ai, 2, 7)); 21771 assert_true (ai_move (ai, 5, 0)); 21772 assert_true (ai_move (ai, 7, 2)); 21773 assert_true (ai_move (ai, 0, 5)); 21774 assert_true (ai_move (ai, 4, 1)); 21775 assert_true (ai_move (ai, 5, 7)); 21776 assert_true (ai_move (ai, 4, 0)); 21777 assert_true (ai_move (ai, 2, 2)); 21778 assert_true (ai_move (ai, 1, 2)); 21779 assert_true (ai_move (ai, 2, 3)); 21780 assert_true (ai_move (ai, 0, 4)); 21781 assert_true (ai_move (ai, 3, 0)); 21782 assert_true (ai_move (ai, 4, 2)); 21783 assert_true (ai_move (ai, 1, 3)); 21784 assert_true (ai_move (ai, 4, 7)); 21785 assert_true (ai_move (ai, 1, 7)); 21786 assert_true (ai_move (ai, 2, 0)); 21787 assert_true (ai_move (ai, 1, 0)); 21788 assert_true (ai_move (ai, 0, 6)); 21789 assert_true (ai_move (ai, 6, 0)); 21790 assert_true (ai_move (ai, 2, 4)); 21791 assert_true (ai_move (ai, 3, 6)); 21792 assert_true (ai_move (ai, 1, 4)); 21793 assert_true (ai_move (ai, 6, 1)); 21794 assert_true (ai_move (ai, 1, 1)); 21795 assert_true (ai_move (ai, 6, 7)); 21796 assert_true (ai_move (ai, 1, 6)); 21797 assert_true (ai_move (ai, 0, 7)); 21798 assert_true (ai_move (ai, 6, 6)); 21799 assert_true (ai_move (ai, 7, 3)); 21800 assert_true (ai_move (ai, 7, 4)); 21801 assert_true (ai_move (ai, 0, 3)); 21802 assert_true (ai_move (ai, 0, 1)); 21803 assert_true (ai_move (ai, 0, 0)); 21804 assert_true (ai_move (ai, 0, 2)); 21805 assert_true (ai_move (ai, 7, 7)); 21806 assert_true (ai_move (ai, 7, 0)); 21807 assert_true (ai_move (ai, 7, 6)); 21808 assert_true (ai_move (ai, 7, 1)); 21809 } 21810 21811 private static inline void test_complete_reversi_game_275 () 21812 { 21813 /* 0 1 2 3 4 5 6 7 */ 21814 string [] board = {/* 0 */ " . . . . . . . .", 21815 /* 1 */ " . . . . . . . .", 21816 /* 2 */ " . . . L . . . .", 21817 /* 3 */ " . . . L L L . .", 21818 /* 4 */ " . . . D D . . .", 21819 /* 5 */ " . . D . . D . .", 21820 /* 6 */ " . . . . . . . .", 21821 /* 7 */ " . . . . . . . ."}; 21822 21823 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 21824 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 21825 21826 assert_true (ai_move (ai, 6, 2)); 21827 assert_true (ai_move (ai, 6, 3)); 21828 assert_true (ai_move (ai, 6, 4)); 21829 assert_true (ai_move (ai, 7, 3)); 21830 assert_true (ai_move (ai, 5, 2)); 21831 assert_true (ai_move (ai, 4, 1)); 21832 assert_true (ai_move (ai, 4, 2)); 21833 assert_true (ai_move (ai, 7, 2)); 21834 assert_true (ai_move (ai, 5, 1)); 21835 assert_true (ai_move (ai, 4, 0)); 21836 assert_true (ai_move (ai, 5, 0)); 21837 assert_true (ai_move (ai, 6, 5)); 21838 assert_true (ai_move (ai, 3, 0)); 21839 assert_true (ai_move (ai, 4, 6)); 21840 assert_true (ai_move (ai, 7, 5)); 21841 assert_true (ai_move (ai, 5, 4)); 21842 assert_true (ai_move (ai, 5, 6)); 21843 assert_true (ai_move (ai, 4, 5)); 21844 assert_true (ai_move (ai, 7, 4)); 21845 assert_true (ai_move (ai, 7, 6)); 21846 assert_true (ai_move (ai, 2, 2)); 21847 assert_true (ai_move (ai, 1, 2)); 21848 assert_true (ai_move (ai, 3, 6)); 21849 assert_true (ai_move (ai, 2, 7)); 21850 assert_true (ai_move (ai, 4, 7)); 21851 assert_true (ai_move (ai, 5, 7)); 21852 assert_true (ai_move (ai, 3, 5)); 21853 assert_true (ai_move (ai, 1, 5)); 21854 assert_true (ai_move (ai, 2, 6)); 21855 assert_true (ai_move (ai, 2, 3)); 21856 assert_true (ai_move (ai, 6, 7)); 21857 assert_true (ai_move (ai, 1, 7)); 21858 assert_true (ai_move (ai, 2, 4)); 21859 assert_true (ai_move (ai, 1, 4)); 21860 assert_true (ai_move (ai, 3, 1)); 21861 assert_true (ai_move (ai, 2, 1)); 21862 assert_true (ai_move (ai, 1, 3)); 21863 assert_true (ai_move (ai, 2, 0)); 21864 assert_true (ai_move (ai, 1, 0)); 21865 assert_true (ai_move (ai, 0, 4)); 21866 assert_true (ai_move (ai, 0, 2)); 21867 assert_true (ai_move (ai, 6, 1)); 21868 assert_true (ai_move (ai, 6, 0)); 21869 assert_true (ai_move (ai, 0, 3)); 21870 assert_true (ai_move (ai, 0, 5)); 21871 assert_true (ai_move (ai, 1, 6)); 21872 assert_true (ai_move (ai, 0, 1)); 21873 assert_true (ai_move (ai, 1, 1)); 21874 assert_true (ai_move (ai, 7, 1)); 21875 assert_true (ai_move (ai, 7, 0)); 21876 assert_true (ai_move (ai, 0, 0)); 21877 assert_true (ai_move (ai, 3, 7)); 21878 assert_true (ai_move (ai, 0, 7)); 21879 assert_true (game.pass ()); 21880 assert_true (ai_move (ai, 0, 6)); 21881 assert_true (game.pass ()); 21882 assert_true (ai_move (ai, 6, 6)); 21883 } 21884 21885 private static inline void test_complete_reversi_game_276 () 21886 { 21887 /* 0 1 2 3 4 5 6 7 */ 21888 string [] board = {/* 0 */ " . . . . . . . .", 21889 /* 1 */ " . . . . . . . .", 21890 /* 2 */ " . . . L . . . .", 21891 /* 3 */ " . . . L D . . .", 21892 /* 4 */ " . . . L D . . .", 21893 /* 5 */ " . . D L . D . .", 21894 /* 6 */ " . . . . . . . .", 21895 /* 7 */ " . . . . . . . ."}; 21896 21897 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 21898 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 21899 21900 assert_true (ai_move (ai, 2, 6)); 21901 assert_true (ai_move (ai, 5, 2)); 21902 assert_true (ai_move (ai, 2, 4)); 21903 assert_true (ai_move (ai, 1, 5)); 21904 assert_true (ai_move (ai, 2, 3)); 21905 assert_true (ai_move (ai, 1, 3)); 21906 assert_true (ai_move (ai, 1, 2)); 21907 assert_true (ai_move (ai, 1, 4)); 21908 assert_true (ai_move (ai, 2, 2)); 21909 assert_true (ai_move (ai, 3, 1)); 21910 assert_true (ai_move (ai, 2, 1)); 21911 assert_true (ai_move (ai, 4, 2)); 21912 assert_true (ai_move (ai, 0, 2)); 21913 assert_true (ai_move (ai, 0, 3)); 21914 assert_true (ai_move (ai, 6, 2)); 21915 assert_true (ai_move (ai, 4, 1)); 21916 assert_true (ai_move (ai, 0, 5)); 21917 assert_true (ai_move (ai, 6, 3)); 21918 assert_true (ai_move (ai, 5, 0)); 21919 assert_true (ai_move (ai, 4, 6)); 21920 assert_true (ai_move (ai, 5, 1)); 21921 assert_true (ai_move (ai, 6, 4)); 21922 assert_true (ai_move (ai, 0, 4)); 21923 assert_true (ai_move (ai, 5, 3)); 21924 assert_true (ai_move (ai, 3, 6)); 21925 assert_true (ai_move (ai, 7, 2)); 21926 assert_true (ai_move (ai, 4, 0)); 21927 assert_true (ai_move (ai, 1, 7)); 21928 assert_true (ai_move (ai, 3, 7)); 21929 assert_true (ai_move (ai, 1, 1)); 21930 assert_true (ai_move (ai, 4, 5)); 21931 assert_true (ai_move (ai, 2, 7)); 21932 assert_true (ai_move (ai, 5, 4)); 21933 assert_true (ai_move (ai, 4, 7)); 21934 assert_true (ai_move (ai, 6, 5)); 21935 assert_true (ai_move (ai, 7, 5)); 21936 assert_true (ai_move (ai, 5, 7)); 21937 assert_true (ai_move (ai, 6, 7)); 21938 assert_true (ai_move (ai, 1, 6)); 21939 assert_true (ai_move (ai, 1, 0)); 21940 assert_true (ai_move (ai, 3, 0)); 21941 assert_true (ai_move (ai, 2, 0)); 21942 assert_true (ai_move (ai, 5, 6)); 21943 assert_true (ai_move (ai, 6, 0)); 21944 assert_true (ai_move (ai, 0, 0)); 21945 assert_true (ai_move (ai, 0, 6)); 21946 assert_true (ai_move (ai, 0, 7)); 21947 assert_true (ai_move (ai, 6, 1)); 21948 assert_true (ai_move (ai, 7, 7)); 21949 assert_true (ai_move (ai, 6, 6)); 21950 assert_true (ai_move (ai, 7, 0)); 21951 assert_true (ai_move (ai, 7, 1)); 21952 assert_true (ai_move (ai, 7, 3)); 21953 assert_true (ai_move (ai, 7, 4)); 21954 assert_true (ai_move (ai, 7, 6)); 21955 assert_true (ai_move (ai, 0, 1)); 21956 } 21957 21958 private static inline void test_complete_reversi_game_277 () 21959 { 21960 /* 0 1 2 3 4 5 6 7 */ 21961 string [] board = {/* 0 */ " . . . . . . . .", 21962 /* 1 */ " . . . . . . . .", 21963 /* 2 */ " . . . L . . . .", 21964 /* 3 */ " . . . L D . . .", 21965 /* 4 */ " . . D D L . . .", 21966 /* 5 */ " . . . . . L . .", 21967 /* 6 */ " . . . . . . L .", 21968 /* 7 */ " . . . . . . . ."}; 21969 21970 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 21971 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 21972 21973 assert_true (ai_move (ai, 5, 4)); 21974 assert_true (ai_move (ai, 1, 5)); 21975 assert_true (ai_move (ai, 1, 4)); 21976 assert_true (ai_move (ai, 1, 3)); 21977 assert_true (ai_move (ai, 0, 4)); 21978 assert_true (ai_move (ai, 3, 5)); 21979 assert_true (ai_move (ai, 2, 1)); 21980 assert_true (ai_move (ai, 6, 4)); 21981 assert_true (ai_move (ai, 2, 6)); 21982 assert_true (ai_move (ai, 5, 3)); 21983 assert_true (ai_move (ai, 1, 2)); 21984 assert_true (ai_move (ai, 3, 1)); 21985 assert_true (ai_move (ai, 4, 6)); 21986 assert_true (ai_move (ai, 3, 7)); 21987 assert_true (ai_move (ai, 5, 7)); 21988 assert_true (ai_move (ai, 3, 6)); 21989 assert_true (ai_move (ai, 7, 3)); 21990 assert_true (ai_move (ai, 5, 6)); 21991 assert_true (ai_move (ai, 5, 2)); 21992 assert_true (ai_move (ai, 6, 2)); 21993 assert_true (ai_move (ai, 7, 2)); 21994 assert_true (ai_move (ai, 5, 1)); 21995 assert_true (ai_move (ai, 5, 0)); 21996 assert_true (ai_move (ai, 6, 5)); 21997 assert_true (ai_move (ai, 7, 4)); 21998 assert_true (ai_move (ai, 7, 6)); 21999 assert_true (ai_move (ai, 2, 2)); 22000 assert_true (ai_move (ai, 4, 5)); 22001 assert_true (ai_move (ai, 2, 3)); 22002 assert_true (ai_move (ai, 4, 7)); 22003 assert_true (ai_move (ai, 6, 3)); 22004 assert_true (ai_move (ai, 2, 5)); 22005 assert_true (ai_move (ai, 2, 7)); 22006 assert_true (ai_move (ai, 2, 0)); 22007 assert_true (ai_move (ai, 4, 0)); 22008 assert_true (ai_move (ai, 3, 0)); 22009 assert_true (ai_move (ai, 4, 1)); 22010 assert_true (ai_move (ai, 6, 0)); 22011 assert_true (ai_move (ai, 7, 7)); 22012 assert_true (ai_move (ai, 0, 2)); 22013 assert_true (ai_move (ai, 7, 5)); 22014 assert_true (ai_move (ai, 6, 1)); 22015 assert_true (ai_move (ai, 4, 2)); 22016 assert_true (ai_move (ai, 0, 5)); 22017 assert_true (ai_move (ai, 0, 3)); 22018 assert_true (ai_move (ai, 6, 7)); 22019 assert_true (ai_move (ai, 7, 1)); 22020 assert_true (ai_move (ai, 1, 1)); 22021 assert_true (ai_move (ai, 0, 0)); 22022 assert_true (ai_move (ai, 0, 1)); 22023 assert_true (ai_move (ai, 1, 0)); 22024 assert_true (ai_move (ai, 1, 7)); 22025 assert_true (ai_move (ai, 0, 7)); 22026 assert_true (ai_move (ai, 1, 6)); 22027 assert_true (ai_move (ai, 7, 0)); 22028 assert_true (game.pass ()); 22029 assert_true (ai_move (ai, 0, 6)); 22030 } 22031 22032 private static inline void test_complete_reversi_game_278 () 22033 { 22034 /* 0 1 2 3 4 5 6 7 */ 22035 string [] board = {/* 0 */ " . . . . . . . .", 22036 /* 1 */ " . . . . . . . .", 22037 /* 2 */ " . . . L . . . .", 22038 /* 3 */ " . . . L L . . .", 22039 /* 4 */ " . . D D D L . .", 22040 /* 5 */ " . . . . . D . .", 22041 /* 6 */ " . . . . . . . .", 22042 /* 7 */ " . . . . . . . ."}; 22043 22044 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 22045 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 22046 22047 assert_true (ai_move (ai, 5, 3)); 22048 assert_true (ai_move (ai, 1, 5)); 22049 assert_true (ai_move (ai, 5, 2)); 22050 assert_true (ai_move (ai, 3, 5)); 22051 assert_true (ai_move (ai, 2, 1)); 22052 assert_true (ai_move (ai, 3, 1)); 22053 assert_true (ai_move (ai, 2, 6)); 22054 assert_true (ai_move (ai, 4, 6)); 22055 assert_true (ai_move (ai, 0, 4)); 22056 assert_true (ai_move (ai, 6, 5)); 22057 assert_true (ai_move (ai, 6, 4)); 22058 assert_true (ai_move (ai, 4, 5)); 22059 assert_true (ai_move (ai, 5, 6)); 22060 assert_true (ai_move (ai, 7, 3)); 22061 assert_true (ai_move (ai, 7, 5)); 22062 assert_true (ai_move (ai, 6, 3)); 22063 assert_true (ai_move (ai, 4, 1)); 22064 assert_true (ai_move (ai, 5, 7)); 22065 assert_true (ai_move (ai, 2, 3)); 22066 assert_true (ai_move (ai, 5, 1)); 22067 assert_true (ai_move (ai, 7, 4)); 22068 assert_true (ai_move (ai, 7, 6)); 22069 assert_true (ai_move (ai, 5, 0)); 22070 assert_true (ai_move (ai, 7, 2)); 22071 assert_true (ai_move (ai, 4, 2)); 22072 assert_true (ai_move (ai, 2, 0)); 22073 assert_true (ai_move (ai, 4, 7)); 22074 assert_true (ai_move (ai, 1, 4)); 22075 assert_true (ai_move (ai, 6, 2)); 22076 assert_true (ai_move (ai, 7, 1)); 22077 assert_true (ai_move (ai, 0, 5)); 22078 assert_true (ai_move (ai, 2, 2)); 22079 assert_true (ai_move (ai, 2, 5)); 22080 assert_true (ai_move (ai, 3, 6)); 22081 assert_true (ai_move (ai, 6, 7)); 22082 assert_true (ai_move (ai, 2, 7)); 22083 assert_true (ai_move (ai, 1, 2)); 22084 assert_true (ai_move (ai, 1, 3)); 22085 assert_true (ai_move (ai, 0, 3)); 22086 assert_true (ai_move (ai, 3, 0)); 22087 assert_true (ai_move (ai, 4, 0)); 22088 assert_true (ai_move (ai, 6, 0)); 22089 assert_true (ai_move (ai, 6, 6)); 22090 assert_true (ai_move (ai, 0, 2)); 22091 assert_true (ai_move (ai, 1, 1)); 22092 assert_true (ai_move (ai, 0, 6)); 22093 assert_true (ai_move (ai, 1, 7)); 22094 assert_true (ai_move (ai, 3, 7)); 22095 assert_true (ai_move (ai, 6, 1)); 22096 assert_true (ai_move (ai, 7, 0)); 22097 assert_true (ai_move (ai, 1, 6)); 22098 assert_true (ai_move (ai, 7, 7)); 22099 assert_true (game.pass ()); 22100 assert_true (ai_move (ai, 0, 0)); 22101 assert_true (ai_move (ai, 1, 0)); 22102 assert_true (ai_move (ai, 0, 1)); 22103 assert_true (game.pass ()); 22104 assert_true (ai_move (ai, 0, 7)); 22105 } 22106 22107 private static inline void test_complete_reversi_game_279 () 22108 { 22109 /* 0 1 2 3 4 5 6 7 */ 22110 string [] board = {/* 0 */ " . . . . . . . .", 22111 /* 1 */ " . . . . . . . .", 22112 /* 2 */ " . . . L . . . .", 22113 /* 3 */ " . . . L L L . .", 22114 /* 4 */ " . . D D D . . .", 22115 /* 5 */ " . . . . . D . .", 22116 /* 6 */ " . . . . . . . .", 22117 /* 7 */ " . . . . . . . ."}; 22118 22119 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 22120 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 22121 22122 assert_true (ai_move (ai, 6, 2)); 22123 assert_true (ai_move (ai, 6, 3)); 22124 assert_true (ai_move (ai, 6, 4)); 22125 assert_true (ai_move (ai, 1, 5)); 22126 assert_true (ai_move (ai, 1, 4)); 22127 assert_true (ai_move (ai, 7, 3)); 22128 assert_true (ai_move (ai, 2, 2)); 22129 assert_true (ai_move (ai, 1, 2)); 22130 assert_true (ai_move (ai, 3, 1)); 22131 assert_true (ai_move (ai, 2, 1)); 22132 assert_true (ai_move (ai, 1, 3)); 22133 assert_true (ai_move (ai, 5, 1)); 22134 assert_true (ai_move (ai, 2, 0)); 22135 assert_true (ai_move (ai, 7, 5)); 22136 assert_true (ai_move (ai, 0, 2)); 22137 assert_true (ai_move (ai, 4, 6)); 22138 assert_true (ai_move (ai, 4, 2)); 22139 assert_true (ai_move (ai, 3, 5)); 22140 assert_true (ai_move (ai, 3, 6)); 22141 assert_true (ai_move (ai, 2, 6)); 22142 assert_true (ai_move (ai, 3, 7)); 22143 assert_true (ai_move (ai, 4, 1)); 22144 assert_true (ai_move (ai, 5, 2)); 22145 assert_true (ai_move (ai, 2, 3)); 22146 assert_true (ai_move (ai, 7, 2)); 22147 assert_true (ai_move (ai, 0, 5)); 22148 assert_true (ai_move (ai, 5, 0)); 22149 assert_true (ai_move (ai, 0, 3)); 22150 assert_true (ai_move (ai, 4, 0)); 22151 assert_true (ai_move (ai, 4, 5)); 22152 assert_true (ai_move (ai, 5, 6)); 22153 assert_true (ai_move (ai, 2, 5)); 22154 assert_true (ai_move (ai, 2, 7)); 22155 assert_true (ai_move (ai, 5, 7)); 22156 assert_true (ai_move (ai, 7, 4)); 22157 assert_true (ai_move (ai, 7, 1)); 22158 assert_true (ai_move (ai, 6, 5)); 22159 assert_true (ai_move (ai, 5, 4)); 22160 assert_true (ai_move (ai, 4, 7)); 22161 assert_true (ai_move (ai, 1, 7)); 22162 assert_true (ai_move (ai, 0, 4)); 22163 assert_true (ai_move (ai, 0, 1)); 22164 assert_true (ai_move (ai, 6, 6)); 22165 assert_true (ai_move (ai, 3, 0)); 22166 assert_true (ai_move (ai, 1, 0)); 22167 assert_true (ai_move (ai, 0, 0)); 22168 assert_true (ai_move (ai, 0, 6)); 22169 assert_true (ai_move (ai, 1, 1)); 22170 assert_true (ai_move (ai, 6, 1)); 22171 assert_true (ai_move (ai, 6, 0)); 22172 assert_true (ai_move (ai, 1, 6)); 22173 assert_true (ai_move (ai, 7, 7)); 22174 assert_true (ai_move (ai, 7, 6)); 22175 assert_true (ai_move (ai, 7, 0)); 22176 assert_true (game.pass ()); 22177 assert_true (ai_move (ai, 6, 7)); 22178 assert_true (game.pass ()); 22179 assert_true (ai_move (ai, 0, 7)); 22180 } 22181 22182 private static inline void test_complete_reversi_game_280 () 22183 { 22184 /* 0 1 2 3 4 5 6 7 */ 22185 string [] board = {/* 0 */ " . . . . . . . .", 22186 /* 1 */ " . . . . . . . .", 22187 /* 2 */ " . . . L . . . .", 22188 /* 3 */ " . . . L D . . .", 22189 /* 4 */ " . . D L D . . .", 22190 /* 5 */ " . . . L . D . .", 22191 /* 6 */ " . . . . . . . .", 22192 /* 7 */ " . . . . . . . ."}; 22193 22194 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 22195 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 22196 22197 assert_true (ai_move (ai, 4, 6)); 22198 assert_true (ai_move (ai, 1, 5)); 22199 assert_true (ai_move (ai, 2, 1)); 22200 assert_true (ai_move (ai, 3, 6)); 22201 assert_true (ai_move (ai, 1, 3)); 22202 assert_true (ai_move (ai, 1, 4)); 22203 assert_true (ai_move (ai, 3, 7)); 22204 assert_true (ai_move (ai, 3, 1)); 22205 assert_true (ai_move (ai, 4, 1)); 22206 assert_true (ai_move (ai, 0, 2)); 22207 assert_true (ai_move (ai, 2, 2)); 22208 assert_true (ai_move (ai, 1, 2)); 22209 assert_true (ai_move (ai, 2, 3)); 22210 assert_true (ai_move (ai, 2, 0)); 22211 assert_true (ai_move (ai, 0, 5)); 22212 assert_true (ai_move (ai, 4, 0)); 22213 assert_true (ai_move (ai, 3, 0)); 22214 assert_true (ai_move (ai, 0, 4)); 22215 assert_true (ai_move (ai, 5, 0)); 22216 assert_true (ai_move (ai, 6, 0)); 22217 assert_true (ai_move (ai, 4, 5)); 22218 assert_true (ai_move (ai, 5, 2)); 22219 assert_true (ai_move (ai, 2, 5)); 22220 assert_true (ai_move (ai, 5, 7)); 22221 assert_true (ai_move (ai, 2, 6)); 22222 assert_true (ai_move (ai, 6, 4)); 22223 assert_true (ai_move (ai, 6, 5)); 22224 assert_true (ai_move (ai, 4, 7)); 22225 assert_true (ai_move (ai, 2, 7)); 22226 assert_true (ai_move (ai, 1, 7)); 22227 assert_true (ai_move (ai, 5, 6)); 22228 assert_true (ai_move (ai, 7, 5)); 22229 assert_true (ai_move (ai, 5, 4)); 22230 assert_true (ai_move (ai, 6, 3)); 22231 assert_true (ai_move (ai, 5, 3)); 22232 assert_true (ai_move (ai, 6, 7)); 22233 assert_true (ai_move (ai, 5, 1)); 22234 assert_true (ai_move (ai, 6, 2)); 22235 assert_true (ai_move (ai, 1, 6)); 22236 assert_true (ai_move (ai, 4, 2)); 22237 assert_true (ai_move (ai, 6, 1)); 22238 assert_true (ai_move (ai, 6, 6)); 22239 assert_true (ai_move (ai, 7, 1)); 22240 assert_true (ai_move (ai, 7, 3)); 22241 assert_true (ai_move (ai, 0, 3)); 22242 assert_true (ai_move (ai, 0, 6)); 22243 assert_true (ai_move (ai, 0, 7)); 22244 assert_true (ai_move (ai, 7, 2)); 22245 assert_true (ai_move (ai, 7, 0)); 22246 assert_true (game.pass ()); 22247 assert_true (ai_move (ai, 1, 0)); 22248 assert_true (ai_move (ai, 1, 1)); 22249 assert_true (ai_move (ai, 7, 7)); 22250 assert_true (ai_move (ai, 7, 6)); 22251 assert_true (ai_move (ai, 7, 4)); 22252 assert_true (game.pass ()); 22253 assert_true (ai_move (ai, 0, 1)); 22254 assert_true (ai_move (ai, 0, 0)); 22255 } 22256 22257 private static inline void test_complete_reversi_game_281 () 22258 { 22259 /* 0 1 2 3 4 5 6 7 */ 22260 string [] board = {/* 0 */ " . . . . . . . .", 22261 /* 1 */ " . . . . . . . .", 22262 /* 2 */ " . . . L . . . .", 22263 /* 3 */ " . . . L D . . .", 22264 /* 4 */ " . . L D D . . .", 22265 /* 5 */ " . L . . . D . .", 22266 /* 6 */ " . . . . . . . .", 22267 /* 7 */ " . . . . . . . ."}; 22268 22269 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 22270 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 22271 22272 assert_true (ai_move (ai, 1, 4)); 22273 assert_true (ai_move (ai, 5, 3)); 22274 assert_true (ai_move (ai, 6, 2)); 22275 assert_true (ai_move (ai, 6, 3)); 22276 assert_true (ai_move (ai, 6, 4)); 22277 assert_true (ai_move (ai, 7, 3)); 22278 assert_true (ai_move (ai, 2, 2)); 22279 assert_true (ai_move (ai, 1, 2)); 22280 assert_true (ai_move (ai, 3, 1)); 22281 assert_true (ai_move (ai, 2, 1)); 22282 assert_true (ai_move (ai, 1, 3)); 22283 assert_true (ai_move (ai, 5, 1)); 22284 assert_true (ai_move (ai, 2, 0)); 22285 assert_true (ai_move (ai, 7, 5)); 22286 assert_true (ai_move (ai, 0, 2)); 22287 assert_true (ai_move (ai, 4, 6)); 22288 assert_true (ai_move (ai, 4, 2)); 22289 assert_true (ai_move (ai, 3, 5)); 22290 assert_true (ai_move (ai, 3, 6)); 22291 assert_true (ai_move (ai, 2, 6)); 22292 assert_true (ai_move (ai, 3, 7)); 22293 assert_true (ai_move (ai, 4, 1)); 22294 assert_true (ai_move (ai, 5, 2)); 22295 assert_true (ai_move (ai, 2, 3)); 22296 assert_true (ai_move (ai, 7, 2)); 22297 assert_true (ai_move (ai, 0, 5)); 22298 assert_true (ai_move (ai, 5, 0)); 22299 assert_true (ai_move (ai, 0, 3)); 22300 assert_true (ai_move (ai, 4, 0)); 22301 assert_true (ai_move (ai, 4, 5)); 22302 assert_true (ai_move (ai, 5, 6)); 22303 assert_true (ai_move (ai, 2, 5)); 22304 assert_true (ai_move (ai, 2, 7)); 22305 assert_true (ai_move (ai, 5, 7)); 22306 assert_true (ai_move (ai, 7, 4)); 22307 assert_true (ai_move (ai, 7, 1)); 22308 assert_true (ai_move (ai, 6, 5)); 22309 assert_true (ai_move (ai, 5, 4)); 22310 assert_true (ai_move (ai, 4, 7)); 22311 assert_true (ai_move (ai, 1, 7)); 22312 assert_true (ai_move (ai, 0, 4)); 22313 assert_true (ai_move (ai, 0, 1)); 22314 assert_true (ai_move (ai, 6, 6)); 22315 assert_true (ai_move (ai, 3, 0)); 22316 assert_true (ai_move (ai, 1, 0)); 22317 assert_true (ai_move (ai, 0, 0)); 22318 assert_true (ai_move (ai, 0, 6)); 22319 assert_true (ai_move (ai, 1, 1)); 22320 assert_true (ai_move (ai, 6, 1)); 22321 assert_true (ai_move (ai, 6, 0)); 22322 assert_true (ai_move (ai, 1, 6)); 22323 assert_true (ai_move (ai, 7, 7)); 22324 assert_true (ai_move (ai, 7, 6)); 22325 assert_true (ai_move (ai, 7, 0)); 22326 assert_true (game.pass ()); 22327 assert_true (ai_move (ai, 6, 7)); 22328 assert_true (game.pass ()); 22329 assert_true (ai_move (ai, 0, 7)); 22330 } 22331 22332 private static inline void test_complete_reversi_game_282 () 22333 { 22334 /* 0 1 2 3 4 5 6 7 */ 22335 string [] board = {/* 0 */ " . . . . . . . .", 22336 /* 1 */ " . . . . . . . .", 22337 /* 2 */ " . . . L . . . .", 22338 /* 3 */ " . . D D L . . .", 22339 /* 4 */ " . . . L L L . .", 22340 /* 5 */ " . . . . . D . .", 22341 /* 6 */ " . . . . . . . .", 22342 /* 7 */ " . . . . . . . ."}; 22343 22344 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 22345 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 22346 22347 assert_true (ai_move (ai, 4, 1)); 22348 assert_true (ai_move (ai, 5, 6)); 22349 assert_true (ai_move (ai, 5, 3)); 22350 assert_true (ai_move (ai, 6, 2)); 22351 assert_true (ai_move (ai, 6, 3)); 22352 assert_true (ai_move (ai, 5, 2)); 22353 assert_true (ai_move (ai, 3, 5)); 22354 assert_true (ai_move (ai, 7, 4)); 22355 assert_true (ai_move (ai, 6, 4)); 22356 assert_true (ai_move (ai, 6, 5)); 22357 assert_true (ai_move (ai, 4, 2)); 22358 assert_true (ai_move (ai, 3, 1)); 22359 assert_true (ai_move (ai, 5, 1)); 22360 assert_true (ai_move (ai, 4, 0)); 22361 assert_true (ai_move (ai, 2, 0)); 22362 assert_true (ai_move (ai, 3, 0)); 22363 assert_true (ai_move (ai, 5, 0)); 22364 assert_true (ai_move (ai, 2, 5)); 22365 assert_true (ai_move (ai, 6, 0)); 22366 assert_true (ai_move (ai, 1, 2)); 22367 assert_true (ai_move (ai, 7, 2)); 22368 assert_true (ai_move (ai, 3, 6)); 22369 assert_true (ai_move (ai, 7, 3)); 22370 assert_true (ai_move (ai, 7, 1)); 22371 assert_true (ai_move (ai, 4, 5)); 22372 assert_true (ai_move (ai, 2, 1)); 22373 assert_true (ai_move (ai, 5, 7)); 22374 assert_true (ai_move (ai, 4, 6)); 22375 assert_true (ai_move (ai, 2, 2)); 22376 assert_true (ai_move (ai, 4, 7)); 22377 assert_true (ai_move (ai, 2, 7)); 22378 assert_true (ai_move (ai, 3, 7)); 22379 assert_true (ai_move (ai, 1, 3)); 22380 assert_true (ai_move (ai, 1, 4)); 22381 assert_true (ai_move (ai, 1, 5)); 22382 assert_true (ai_move (ai, 2, 4)); 22383 assert_true (ai_move (ai, 0, 2)); 22384 assert_true (ai_move (ai, 2, 6)); 22385 assert_true (ai_move (ai, 0, 5)); 22386 assert_true (ai_move (ai, 0, 3)); 22387 assert_true (ai_move (ai, 0, 4)); 22388 assert_true (ai_move (ai, 6, 1)); 22389 assert_true (ai_move (ai, 7, 5)); 22390 assert_true (ai_move (ai, 7, 6)); 22391 assert_true (ai_move (ai, 1, 6)); 22392 assert_true (ai_move (ai, 0, 7)); 22393 assert_true (ai_move (ai, 1, 7)); 22394 assert_true (ai_move (ai, 0, 6)); 22395 assert_true (ai_move (ai, 6, 6)); 22396 assert_true (ai_move (ai, 0, 1)); 22397 assert_true (ai_move (ai, 1, 1)); 22398 assert_true (ai_move (ai, 7, 7)); 22399 assert_true (ai_move (ai, 6, 7)); 22400 assert_true (ai_move (ai, 1, 0)); 22401 assert_true (ai_move (ai, 0, 0)); 22402 } 22403 22404 private static inline void test_complete_reversi_game_283 () 22405 { 22406 /* 0 1 2 3 4 5 6 7 */ 22407 string [] board = {/* 0 */ " . . . . . . . .", 22408 /* 1 */ " . . . . . . . .", 22409 /* 2 */ " . . . L . L . .", 22410 /* 3 */ " . . D D L . . .", 22411 /* 4 */ " . . . L D . . .", 22412 /* 5 */ " . . . . . D . .", 22413 /* 6 */ " . . . . . . . .", 22414 /* 7 */ " . . . . . . . ."}; 22415 22416 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 22417 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 22418 22419 assert_true (ai_move (ai, 4, 1)); 22420 assert_true (ai_move (ai, 2, 1)); 22421 assert_true (ai_move (ai, 6, 3)); 22422 assert_true (ai_move (ai, 1, 2)); 22423 assert_true (ai_move (ai, 3, 1)); 22424 assert_true (ai_move (ai, 4, 5)); 22425 assert_true (ai_move (ai, 1, 4)); 22426 assert_true (ai_move (ai, 6, 5)); 22427 assert_true (ai_move (ai, 5, 3)); 22428 assert_true (ai_move (ai, 5, 4)); 22429 assert_true (ai_move (ai, 3, 6)); 22430 assert_true (ai_move (ai, 4, 6)); 22431 assert_true (ai_move (ai, 2, 4)); 22432 assert_true (ai_move (ai, 5, 0)); 22433 assert_true (ai_move (ai, 5, 1)); 22434 assert_true (ai_move (ai, 3, 0)); 22435 assert_true (ai_move (ai, 5, 6)); 22436 assert_true (ai_move (ai, 1, 3)); 22437 assert_true (ai_move (ai, 7, 4)); 22438 assert_true (ai_move (ai, 0, 5)); 22439 assert_true (ai_move (ai, 0, 2)); 22440 assert_true (ai_move (ai, 0, 3)); 22441 assert_true (ai_move (ai, 2, 2)); 22442 assert_true (ai_move (ai, 2, 5)); 22443 assert_true (ai_move (ai, 4, 2)); 22444 assert_true (ai_move (ai, 6, 4)); 22445 assert_true (ai_move (ai, 2, 6)); 22446 assert_true (ai_move (ai, 3, 5)); 22447 assert_true (ai_move (ai, 6, 2)); 22448 assert_true (ai_move (ai, 4, 0)); 22449 assert_true (ai_move (ai, 7, 5)); 22450 assert_true (ai_move (ai, 3, 7)); 22451 assert_true (ai_move (ai, 2, 0)); 22452 assert_true (ai_move (ai, 1, 0)); 22453 assert_true (ai_move (ai, 2, 7)); 22454 assert_true (ai_move (ai, 1, 5)); 22455 assert_true (ai_move (ai, 4, 7)); 22456 assert_true (ai_move (ai, 6, 0)); 22457 assert_true (ai_move (ai, 1, 7)); 22458 assert_true (ai_move (ai, 5, 7)); 22459 assert_true (ai_move (ai, 6, 7)); 22460 assert_true (ai_move (ai, 6, 1)); 22461 assert_true (ai_move (ai, 0, 4)); 22462 assert_true (ai_move (ai, 0, 1)); 22463 assert_true (ai_move (ai, 6, 6)); 22464 assert_true (ai_move (ai, 0, 6)); 22465 assert_true (ai_move (ai, 7, 0)); 22466 assert_true (ai_move (ai, 1, 6)); 22467 assert_true (ai_move (ai, 0, 0)); 22468 assert_true (ai_move (ai, 7, 2)); 22469 assert_true (ai_move (ai, 0, 7)); 22470 assert_true (ai_move (ai, 7, 3)); 22471 assert_true (ai_move (ai, 7, 1)); 22472 assert_true (ai_move (ai, 1, 1)); 22473 assert_true (game.pass ()); 22474 assert_true (ai_move (ai, 7, 7)); 22475 assert_true (ai_move (ai, 7, 6)); 22476 } 22477 22478 private static inline void test_complete_reversi_game_284 () 22479 { 22480 /* 0 1 2 3 4 5 6 7 */ 22481 string [] board = {/* 0 */ " . . . . . . . .", 22482 /* 1 */ " . . . . . . . .", 22483 /* 2 */ " . . . L . . . .", 22484 /* 3 */ " . . L D D . . .", 22485 /* 4 */ " . L . L D . . .", 22486 /* 5 */ " . . . . . D . .", 22487 /* 6 */ " . . . . . . . .", 22488 /* 7 */ " . . . . . . . ."}; 22489 22490 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 22491 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 22492 22493 assert_true (ai_move (ai, 1, 3)); 22494 assert_true (ai_move (ai, 5, 2)); 22495 assert_true (ai_move (ai, 5, 3)); 22496 assert_true (ai_move (ai, 1, 2)); 22497 assert_true (ai_move (ai, 5, 1)); 22498 assert_true (ai_move (ai, 5, 4)); 22499 assert_true (ai_move (ai, 3, 1)); 22500 assert_true (ai_move (ai, 5, 6)); 22501 assert_true (ai_move (ai, 5, 7)); 22502 assert_true (ai_move (ai, 2, 1)); 22503 assert_true (ai_move (ai, 0, 3)); 22504 assert_true (ai_move (ai, 6, 5)); 22505 assert_true (ai_move (ai, 7, 5)); 22506 assert_true (ai_move (ai, 6, 3)); 22507 assert_true (ai_move (ai, 4, 1)); 22508 assert_true (ai_move (ai, 5, 0)); 22509 assert_true (ai_move (ai, 2, 5)); 22510 assert_true (ai_move (ai, 3, 0)); 22511 assert_true (ai_move (ai, 3, 5)); 22512 assert_true (ai_move (ai, 0, 5)); 22513 assert_true (ai_move (ai, 6, 4)); 22514 assert_true (ai_move (ai, 2, 6)); 22515 assert_true (ai_move (ai, 3, 6)); 22516 assert_true (ai_move (ai, 7, 4)); 22517 assert_true (ai_move (ai, 2, 7)); 22518 assert_true (ai_move (ai, 7, 6)); 22519 assert_true (ai_move (ai, 1, 5)); 22520 assert_true (ai_move (ai, 4, 6)); 22521 assert_true (ai_move (ai, 6, 6)); 22522 assert_true (ai_move (ai, 4, 7)); 22523 assert_true (ai_move (ai, 3, 7)); 22524 assert_true (ai_move (ai, 2, 4)); 22525 assert_true (ai_move (ai, 2, 2)); 22526 assert_true (ai_move (ai, 4, 5)); 22527 assert_true (ai_move (ai, 7, 2)); 22528 assert_true (ai_move (ai, 4, 2)); 22529 assert_true (ai_move (ai, 6, 2)); 22530 assert_true (ai_move (ai, 6, 1)); 22531 assert_true (ai_move (ai, 0, 4)); 22532 assert_true (ai_move (ai, 0, 2)); 22533 assert_true (ai_move (ai, 6, 7)); 22534 assert_true (ai_move (ai, 0, 6)); 22535 assert_true (ai_move (ai, 7, 3)); 22536 assert_true (ai_move (ai, 7, 1)); 22537 assert_true (ai_move (ai, 4, 0)); 22538 assert_true (ai_move (ai, 2, 0)); 22539 assert_true (ai_move (ai, 1, 6)); 22540 assert_true (ai_move (ai, 0, 7)); 22541 assert_true (ai_move (ai, 6, 0)); 22542 assert_true (ai_move (ai, 1, 7)); 22543 assert_true (ai_move (ai, 1, 0)); 22544 assert_true (ai_move (ai, 7, 7)); 22545 assert_true (ai_move (ai, 1, 1)); 22546 assert_true (ai_move (ai, 0, 0)); 22547 assert_true (ai_move (ai, 0, 1)); 22548 assert_true (ai_move (ai, 7, 0)); 22549 } 22550 22551 private static inline void test_complete_reversi_game_285 () 22552 { 22553 /* 0 1 2 3 4 5 6 7 */ 22554 string [] board = {/* 0 */ " . . . . . . . .", 22555 /* 1 */ " . . . . . . . .", 22556 /* 2 */ " . L . L . . . .", 22557 /* 3 */ " . . L D D . . .", 22558 /* 4 */ " . . . L D . . .", 22559 /* 5 */ " . . . . . D . .", 22560 /* 6 */ " . . . . . . . .", 22561 /* 7 */ " . . . . . . . ."}; 22562 22563 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 22564 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 22565 22566 assert_true (ai_move (ai, 1, 3)); 22567 assert_true (ai_move (ai, 5, 2)); 22568 assert_true (ai_move (ai, 5, 3)); 22569 assert_true (ai_move (ai, 1, 4)); 22570 assert_true (ai_move (ai, 5, 1)); 22571 assert_true (ai_move (ai, 5, 4)); 22572 assert_true (ai_move (ai, 3, 1)); 22573 assert_true (ai_move (ai, 5, 6)); 22574 assert_true (ai_move (ai, 5, 7)); 22575 assert_true (ai_move (ai, 2, 1)); 22576 assert_true (ai_move (ai, 0, 3)); 22577 assert_true (ai_move (ai, 6, 5)); 22578 assert_true (ai_move (ai, 7, 5)); 22579 assert_true (ai_move (ai, 6, 3)); 22580 assert_true (ai_move (ai, 4, 1)); 22581 assert_true (ai_move (ai, 5, 0)); 22582 assert_true (ai_move (ai, 2, 5)); 22583 assert_true (ai_move (ai, 3, 0)); 22584 assert_true (ai_move (ai, 3, 5)); 22585 assert_true (ai_move (ai, 0, 5)); 22586 assert_true (ai_move (ai, 6, 4)); 22587 assert_true (ai_move (ai, 2, 6)); 22588 assert_true (ai_move (ai, 3, 6)); 22589 assert_true (ai_move (ai, 7, 4)); 22590 assert_true (ai_move (ai, 2, 7)); 22591 assert_true (ai_move (ai, 7, 6)); 22592 assert_true (ai_move (ai, 1, 5)); 22593 assert_true (ai_move (ai, 4, 6)); 22594 assert_true (ai_move (ai, 6, 6)); 22595 assert_true (ai_move (ai, 4, 7)); 22596 assert_true (ai_move (ai, 3, 7)); 22597 assert_true (ai_move (ai, 2, 4)); 22598 assert_true (ai_move (ai, 2, 2)); 22599 assert_true (ai_move (ai, 4, 5)); 22600 assert_true (ai_move (ai, 7, 2)); 22601 assert_true (ai_move (ai, 4, 2)); 22602 assert_true (ai_move (ai, 6, 2)); 22603 assert_true (ai_move (ai, 6, 1)); 22604 assert_true (ai_move (ai, 0, 4)); 22605 assert_true (ai_move (ai, 0, 2)); 22606 assert_true (ai_move (ai, 6, 7)); 22607 assert_true (ai_move (ai, 0, 6)); 22608 assert_true (ai_move (ai, 7, 3)); 22609 assert_true (ai_move (ai, 7, 1)); 22610 assert_true (ai_move (ai, 4, 0)); 22611 assert_true (ai_move (ai, 2, 0)); 22612 assert_true (ai_move (ai, 1, 6)); 22613 assert_true (ai_move (ai, 0, 7)); 22614 assert_true (ai_move (ai, 6, 0)); 22615 assert_true (ai_move (ai, 1, 7)); 22616 assert_true (ai_move (ai, 1, 0)); 22617 assert_true (ai_move (ai, 7, 7)); 22618 assert_true (ai_move (ai, 1, 1)); 22619 assert_true (ai_move (ai, 0, 0)); 22620 assert_true (ai_move (ai, 0, 1)); 22621 assert_true (ai_move (ai, 7, 0)); 22622 } 22623 22624 private static inline void test_complete_reversi_game_286 () 22625 { 22626 /* 0 1 2 3 4 5 6 7 */ 22627 string [] board = {/* 0 */ " . . . . . . . .", 22628 /* 1 */ " . . . . . . . .", 22629 /* 2 */ " . . D L . . . .", 22630 /* 3 */ " . . . D L . . .", 22631 /* 4 */ " . . . L L L . .", 22632 /* 5 */ " . . . . . D . .", 22633 /* 6 */ " . . . . . . . .", 22634 /* 7 */ " . . . . . . . ."}; 22635 22636 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 22637 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 22638 22639 assert_true (ai_move (ai, 4, 2)); 22640 assert_true (ai_move (ai, 5, 6)); 22641 assert_true (ai_move (ai, 5, 3)); 22642 assert_true (ai_move (ai, 6, 2)); 22643 assert_true (ai_move (ai, 6, 4)); 22644 assert_true (ai_move (ai, 5, 2)); 22645 assert_true (ai_move (ai, 4, 6)); 22646 assert_true (ai_move (ai, 4, 1)); 22647 assert_true (ai_move (ai, 6, 5)); 22648 assert_true (ai_move (ai, 1, 2)); 22649 assert_true (ai_move (ai, 6, 3)); 22650 assert_true (ai_move (ai, 7, 5)); 22651 assert_true (ai_move (ai, 2, 1)); 22652 assert_true (ai_move (ai, 4, 5)); 22653 assert_true (ai_move (ai, 2, 3)); 22654 assert_true (ai_move (ai, 7, 2)); 22655 assert_true (ai_move (ai, 0, 2)); 22656 assert_true (ai_move (ai, 2, 4)); 22657 assert_true (ai_move (ai, 5, 0)); 22658 assert_true (ai_move (ai, 3, 1)); 22659 assert_true (ai_move (ai, 4, 0)); 22660 assert_true (ai_move (ai, 1, 4)); 22661 assert_true (ai_move (ai, 1, 3)); 22662 assert_true (ai_move (ai, 2, 0)); 22663 assert_true (ai_move (ai, 0, 5)); 22664 assert_true (ai_move (ai, 3, 0)); 22665 assert_true (ai_move (ai, 1, 0)); 22666 assert_true (ai_move (ai, 4, 7)); 22667 assert_true (ai_move (ai, 5, 1)); 22668 assert_true (ai_move (ai, 0, 3)); 22669 assert_true (ai_move (ai, 5, 7)); 22670 assert_true (ai_move (ai, 0, 4)); 22671 assert_true (ai_move (ai, 3, 7)); 22672 assert_true (ai_move (ai, 6, 6)); 22673 assert_true (ai_move (ai, 1, 5)); 22674 assert_true (ai_move (ai, 2, 5)); 22675 assert_true (ai_move (ai, 2, 6)); 22676 assert_true (ai_move (ai, 6, 7)); 22677 assert_true (ai_move (ai, 7, 3)); 22678 assert_true (ai_move (ai, 2, 7)); 22679 assert_true (ai_move (ai, 7, 1)); 22680 assert_true (ai_move (ai, 3, 6)); 22681 assert_true (ai_move (ai, 1, 6)); 22682 assert_true (ai_move (ai, 7, 4)); 22683 assert_true (ai_move (ai, 3, 5)); 22684 assert_true (ai_move (ai, 1, 1)); 22685 assert_true (ai_move (ai, 7, 6)); 22686 assert_true (ai_move (ai, 7, 7)); 22687 assert_true (ai_move (ai, 0, 1)); 22688 assert_true (ai_move (ai, 7, 0)); 22689 assert_true (game.pass ()); 22690 assert_true (ai_move (ai, 6, 0)); 22691 assert_true (ai_move (ai, 6, 1)); 22692 assert_true (ai_move (ai, 0, 0)); 22693 assert_true (game.pass ()); 22694 assert_true (ai_move (ai, 0, 7)); 22695 assert_true (ai_move (ai, 0, 6)); 22696 assert_true (ai_move (ai, 1, 7)); 22697 } 22698 22699 private static inline void test_complete_reversi_game_287 () 22700 { 22701 /* 0 1 2 3 4 5 6 7 */ 22702 string [] board = {/* 0 */ " . . . . . . . .", 22703 /* 1 */ " . . . . . . . .", 22704 /* 2 */ " . . D L . L . .", 22705 /* 3 */ " . . . D L . . .", 22706 /* 4 */ " . . . L D . . .", 22707 /* 5 */ " . . . . . D . .", 22708 /* 6 */ " . . . . . . . .", 22709 /* 7 */ " . . . . . . . ."}; 22710 22711 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 22712 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 22713 22714 assert_true (ai_move (ai, 3, 1)); 22715 assert_true (ai_move (ai, 5, 4)); 22716 assert_true (ai_move (ai, 6, 5)); 22717 assert_true (ai_move (ai, 6, 4)); 22718 assert_true (ai_move (ai, 5, 3)); 22719 assert_true (ai_move (ai, 5, 6)); 22720 assert_true (ai_move (ai, 4, 7)); 22721 assert_true (ai_move (ai, 5, 7)); 22722 assert_true (ai_move (ai, 6, 7)); 22723 assert_true (ai_move (ai, 7, 5)); 22724 assert_true (ai_move (ai, 6, 3)); 22725 assert_true (ai_move (ai, 6, 2)); 22726 assert_true (ai_move (ai, 2, 5)); 22727 assert_true (ai_move (ai, 4, 2)); 22728 assert_true (ai_move (ai, 5, 1)); 22729 assert_true (ai_move (ai, 4, 6)); 22730 assert_true (ai_move (ai, 3, 6)); 22731 assert_true (ai_move (ai, 4, 1)); 22732 assert_true (ai_move (ai, 3, 5)); 22733 assert_true (ai_move (ai, 1, 2)); 22734 assert_true (ai_move (ai, 1, 3)); 22735 assert_true (ai_move (ai, 5, 0)); 22736 assert_true (ai_move (ai, 2, 1)); 22737 assert_true (ai_move (ai, 2, 0)); 22738 assert_true (ai_move (ai, 0, 2)); 22739 assert_true (ai_move (ai, 2, 6)); 22740 assert_true (ai_move (ai, 7, 2)); 22741 assert_true (ai_move (ai, 1, 5)); 22742 assert_true (ai_move (ai, 1, 4)); 22743 assert_true (ai_move (ai, 7, 4)); 22744 assert_true (ai_move (ai, 7, 3)); 22745 assert_true (ai_move (ai, 7, 1)); 22746 assert_true (ai_move (ai, 4, 5)); 22747 assert_true (ai_move (ai, 2, 7)); 22748 assert_true (ai_move (ai, 0, 5)); 22749 assert_true (ai_move (ai, 3, 7)); 22750 assert_true (ai_move (ai, 1, 7)); 22751 assert_true (ai_move (ai, 0, 4)); 22752 assert_true (ai_move (ai, 0, 3)); 22753 assert_true (ai_move (ai, 1, 0)); 22754 assert_true (ai_move (ai, 2, 4)); 22755 assert_true (ai_move (ai, 2, 3)); 22756 assert_true (ai_move (ai, 6, 1)); 22757 assert_true (ai_move (ai, 0, 1)); 22758 assert_true (ai_move (ai, 0, 0)); 22759 assert_true (ai_move (ai, 0, 6)); 22760 assert_true (ai_move (ai, 1, 6)); 22761 assert_true (ai_move (ai, 6, 6)); 22762 assert_true (ai_move (ai, 0, 7)); 22763 assert_true (ai_move (ai, 6, 0)); 22764 assert_true (ai_move (ai, 3, 0)); 22765 assert_true (ai_move (ai, 4, 0)); 22766 assert_true (ai_move (ai, 1, 1)); 22767 assert_true (game.pass ()); 22768 assert_true (ai_move (ai, 7, 7)); 22769 assert_true (ai_move (ai, 7, 6)); 22770 assert_true (ai_move (ai, 7, 0)); 22771 } 22772 22773 private static inline void test_complete_reversi_game_288 () 22774 { 22775 /* 0 1 2 3 4 5 6 7 */ 22776 string [] board = {/* 0 */ " . . . . . . . .", 22777 /* 1 */ " . . . . . . . .", 22778 /* 2 */ " . L L L . . . .", 22779 /* 3 */ " . . . D D . . .", 22780 /* 4 */ " . . . L D . . .", 22781 /* 5 */ " . . . . . D . .", 22782 /* 6 */ " . . . . . . . .", 22783 /* 7 */ " . . . . . . . ."}; 22784 22785 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 22786 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 22787 22788 assert_true (ai_move (ai, 1, 1)); 22789 assert_true (ai_move (ai, 5, 4)); 22790 assert_true (ai_move (ai, 0, 2)); 22791 assert_true (ai_move (ai, 5, 6)); 22792 assert_true (ai_move (ai, 4, 2)); 22793 assert_true (ai_move (ai, 2, 1)); 22794 assert_true (ai_move (ai, 3, 0)); 22795 assert_true (ai_move (ai, 5, 2)); 22796 assert_true (ai_move (ai, 3, 1)); 22797 assert_true (ai_move (ai, 2, 4)); 22798 assert_true (ai_move (ai, 6, 2)); 22799 assert_true (ai_move (ai, 5, 1)); 22800 assert_true (ai_move (ai, 5, 3)); 22801 assert_true (ai_move (ai, 4, 1)); 22802 assert_true (ai_move (ai, 4, 0)); 22803 assert_true (ai_move (ai, 2, 3)); 22804 assert_true (ai_move (ai, 1, 5)); 22805 assert_true (ai_move (ai, 7, 2)); 22806 assert_true (ai_move (ai, 6, 5)); 22807 assert_true (ai_move (ai, 5, 0)); 22808 assert_true (ai_move (ai, 1, 4)); 22809 assert_true (ai_move (ai, 2, 0)); 22810 assert_true (ai_move (ai, 5, 7)); 22811 assert_true (ai_move (ai, 1, 3)); 22812 assert_true (ai_move (ai, 0, 3)); 22813 assert_true (ai_move (ai, 6, 4)); 22814 assert_true (ai_move (ai, 2, 5)); 22815 assert_true (ai_move (ai, 1, 0)); 22816 assert_true (ai_move (ai, 7, 3)); 22817 assert_true (ai_move (ai, 2, 6)); 22818 assert_true (ai_move (ai, 3, 5)); 22819 assert_true (ai_move (ai, 4, 5)); 22820 assert_true (ai_move (ai, 2, 7)); 22821 assert_true (ai_move (ai, 3, 6)); 22822 assert_true (ai_move (ai, 4, 7)); 22823 assert_true (ai_move (ai, 7, 4)); 22824 assert_true (ai_move (ai, 4, 6)); 22825 assert_true (ai_move (ai, 3, 7)); 22826 assert_true (ai_move (ai, 6, 3)); 22827 assert_true (ai_move (ai, 7, 5)); 22828 assert_true (ai_move (ai, 6, 6)); 22829 assert_true (ai_move (ai, 0, 5)); 22830 assert_true (ai_move (ai, 0, 4)); 22831 assert_true (ai_move (ai, 0, 0)); 22832 assert_true (ai_move (ai, 0, 6)); 22833 assert_true (ai_move (ai, 0, 1)); 22834 assert_true (ai_move (ai, 1, 6)); 22835 assert_true (ai_move (ai, 0, 7)); 22836 assert_true (ai_move (ai, 1, 7)); 22837 assert_true (ai_move (ai, 7, 7)); 22838 assert_true (ai_move (ai, 6, 7)); 22839 assert_true (ai_move (ai, 7, 6)); 22840 assert_true (ai_move (ai, 6, 1)); 22841 assert_true (ai_move (ai, 7, 0)); 22842 assert_true (ai_move (ai, 6, 0)); 22843 assert_true (ai_move (ai, 7, 1)); 22844 } 22845 22846 private static inline void test_complete_reversi_game_289 () 22847 { 22848 /* 0 1 2 3 4 5 6 7 */ 22849 string [] board = {/* 0 */ " . . . . . . . .", 22850 /* 1 */ " . . D . . . . .", 22851 /* 2 */ " . . . D . . . .", 22852 /* 3 */ " . . . L D . . .", 22853 /* 4 */ " . . . L L . . .", 22854 /* 5 */ " . . . . . L . .", 22855 /* 6 */ " . . . . . . L .", 22856 /* 7 */ " . . . . . . . ."}; 22857 22858 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 22859 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 22860 22861 assert_true (ai_move (ai, 4, 5)); 22862 assert_true (ai_move (ai, 3, 5)); 22863 assert_true (ai_move (ai, 2, 4)); 22864 assert_true (ai_move (ai, 1, 5)); 22865 assert_true (ai_move (ai, 1, 4)); 22866 assert_true (ai_move (ai, 3, 1)); 22867 assert_true (ai_move (ai, 5, 6)); 22868 assert_true (ai_move (ai, 5, 7)); 22869 assert_true (ai_move (ai, 2, 5)); 22870 assert_true (ai_move (ai, 2, 3)); 22871 assert_true (ai_move (ai, 4, 6)); 22872 assert_true (ai_move (ai, 2, 6)); 22873 assert_true (ai_move (ai, 3, 6)); 22874 assert_true (ai_move (ai, 1, 3)); 22875 assert_true (ai_move (ai, 0, 4)); 22876 assert_true (ai_move (ai, 0, 5)); 22877 assert_true (ai_move (ai, 0, 2)); 22878 assert_true (ai_move (ai, 4, 7)); 22879 assert_true (ai_move (ai, 2, 7)); 22880 assert_true (ai_move (ai, 0, 3)); 22881 assert_true (ai_move (ai, 0, 6)); 22882 assert_true (ai_move (ai, 5, 4)); 22883 assert_true (ai_move (ai, 2, 2)); 22884 assert_true (ai_move (ai, 1, 2)); 22885 assert_true (ai_move (ai, 4, 0)); 22886 assert_true (ai_move (ai, 3, 7)); 22887 assert_true (ai_move (ai, 6, 7)); 22888 assert_true (ai_move (ai, 1, 1)); 22889 assert_true (ai_move (ai, 6, 4)); 22890 assert_true (ai_move (ai, 6, 3)); 22891 assert_true (ai_move (ai, 4, 1)); 22892 assert_true (ai_move (ai, 4, 2)); 22893 assert_true (ai_move (ai, 5, 2)); 22894 assert_true (ai_move (ai, 3, 0)); 22895 assert_true (ai_move (ai, 5, 0)); 22896 assert_true (ai_move (ai, 5, 1)); 22897 assert_true (ai_move (ai, 5, 3)); 22898 assert_true (ai_move (ai, 6, 2)); 22899 assert_true (ai_move (ai, 7, 2)); 22900 assert_true (ai_move (ai, 6, 5)); 22901 assert_true (ai_move (ai, 7, 4)); 22902 assert_true (ai_move (ai, 6, 0)); 22903 assert_true (ai_move (ai, 6, 1)); 22904 assert_true (ai_move (ai, 2, 0)); 22905 assert_true (ai_move (ai, 0, 0)); 22906 assert_true (ai_move (ai, 0, 1)); 22907 assert_true (ai_move (ai, 1, 0)); 22908 assert_true (ai_move (ai, 7, 0)); 22909 assert_true (ai_move (ai, 7, 7)); 22910 assert_true (ai_move (ai, 0, 7)); 22911 assert_true (ai_move (ai, 7, 1)); 22912 assert_true (ai_move (ai, 7, 3)); 22913 assert_true (game.pass ()); 22914 assert_true (ai_move (ai, 1, 7)); 22915 assert_true (ai_move (ai, 1, 6)); 22916 assert_true (ai_move (ai, 7, 6)); 22917 assert_true (ai_move (ai, 7, 5)); 22918 } 22919 22920 private static inline void test_complete_reversi_game_290 () 22921 { 22922 /* 0 1 2 3 4 5 6 7 */ 22923 string [] board = {/* 0 */ " . . . . . . . .", 22924 /* 1 */ " . . D . . . . .", 22925 /* 2 */ " . . . D . . . .", 22926 /* 3 */ " . . . L D . . .", 22927 /* 4 */ " . . . L L L . .", 22928 /* 5 */ " . . . . . D . .", 22929 /* 6 */ " . . . . . . . .", 22930 /* 7 */ " . . . . . . . ."}; 22931 22932 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 22933 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 22934 22935 assert_true (ai_move (ai, 6, 5)); 22936 assert_true (ai_move (ai, 5, 2)); 22937 assert_true (ai_move (ai, 2, 2)); 22938 assert_true (ai_move (ai, 4, 5)); 22939 assert_true (ai_move (ai, 3, 6)); 22940 assert_true (ai_move (ai, 6, 4)); 22941 assert_true (ai_move (ai, 7, 3)); 22942 assert_true (ai_move (ai, 4, 6)); 22943 assert_true (ai_move (ai, 6, 3)); 22944 assert_true (ai_move (ai, 5, 6)); 22945 assert_true (ai_move (ai, 4, 7)); 22946 assert_true (ai_move (ai, 2, 7)); 22947 assert_true (ai_move (ai, 4, 1)); 22948 assert_true (ai_move (ai, 7, 5)); 22949 assert_true (ai_move (ai, 7, 4)); 22950 assert_true (ai_move (ai, 5, 3)); 22951 assert_true (ai_move (ai, 7, 6)); 22952 assert_true (ai_move (ai, 5, 1)); 22953 assert_true (ai_move (ai, 5, 0)); 22954 assert_true (ai_move (ai, 4, 2)); 22955 assert_true (ai_move (ai, 3, 1)); 22956 assert_true (ai_move (ai, 4, 0)); 22957 assert_true (ai_move (ai, 3, 0)); 22958 assert_true (ai_move (ai, 1, 2)); 22959 assert_true (ai_move (ai, 0, 2)); 22960 assert_true (ai_move (ai, 2, 3)); 22961 assert_true (ai_move (ai, 1, 4)); 22962 assert_true (ai_move (ai, 1, 3)); 22963 assert_true (ai_move (ai, 0, 4)); 22964 assert_true (ai_move (ai, 0, 3)); 22965 assert_true (ai_move (ai, 3, 7)); 22966 assert_true (ai_move (ai, 5, 7)); 22967 assert_true (ai_move (ai, 2, 6)); 22968 assert_true (ai_move (ai, 6, 7)); 22969 assert_true (ai_move (ai, 2, 5)); 22970 assert_true (ai_move (ai, 2, 4)); 22971 assert_true (ai_move (ai, 3, 5)); 22972 assert_true (ai_move (ai, 7, 2)); 22973 assert_true (ai_move (ai, 7, 1)); 22974 assert_true (ai_move (ai, 2, 0)); 22975 assert_true (ai_move (ai, 6, 2)); 22976 assert_true (ai_move (ai, 6, 0)); 22977 assert_true (ai_move (ai, 1, 5)); 22978 assert_true (ai_move (ai, 6, 6)); 22979 assert_true (ai_move (ai, 1, 6)); 22980 assert_true (ai_move (ai, 1, 7)); 22981 assert_true (ai_move (ai, 1, 1)); 22982 assert_true (ai_move (ai, 0, 0)); 22983 assert_true (ai_move (ai, 0, 1)); 22984 assert_true (ai_move (ai, 1, 0)); 22985 assert_true (ai_move (ai, 0, 5)); 22986 assert_true (ai_move (ai, 0, 6)); 22987 assert_true (ai_move (ai, 0, 7)); 22988 assert_true (ai_move (ai, 6, 1)); 22989 assert_true (ai_move (ai, 7, 7)); 22990 assert_true (game.pass ()); 22991 assert_true (ai_move (ai, 7, 0)); 22992 } 22993 22994 private static inline void test_complete_reversi_game_291 () 22995 { 22996 /* 0 1 2 3 4 5 6 7 */ 22997 string [] board = {/* 0 */ " . . . . . . . .", 22998 /* 1 */ " . . D . . . . .", 22999 /* 2 */ " . . . D . . . .", 23000 /* 3 */ " . . . L L L . .", 23001 /* 4 */ " . . . L D . . .", 23002 /* 5 */ " . . . . . D . .", 23003 /* 6 */ " . . . . . . . .", 23004 /* 7 */ " . . . . . . . ."}; 23005 23006 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 23007 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 23008 23009 assert_true (ai_move (ai, 6, 2)); 23010 assert_true (ai_move (ai, 5, 4)); 23011 assert_true (ai_move (ai, 6, 5)); 23012 assert_true (ai_move (ai, 3, 1)); 23013 assert_true (ai_move (ai, 3, 5)); 23014 assert_true (ai_move (ai, 3, 6)); 23015 assert_true (ai_move (ai, 2, 6)); 23016 assert_true (ai_move (ai, 5, 2)); 23017 assert_true (ai_move (ai, 5, 1)); 23018 assert_true (ai_move (ai, 6, 3)); 23019 assert_true (ai_move (ai, 7, 2)); 23020 assert_true (ai_move (ai, 4, 5)); 23021 assert_true (ai_move (ai, 2, 7)); 23022 assert_true (ai_move (ai, 6, 4)); 23023 assert_true (ai_move (ai, 7, 3)); 23024 assert_true (ai_move (ai, 7, 5)); 23025 assert_true (ai_move (ai, 4, 1)); 23026 assert_true (ai_move (ai, 4, 6)); 23027 assert_true (ai_move (ai, 5, 7)); 23028 assert_true (ai_move (ai, 4, 7)); 23029 assert_true (ai_move (ai, 3, 7)); 23030 assert_true (ai_move (ai, 2, 5)); 23031 assert_true (ai_move (ai, 1, 5)); 23032 assert_true (ai_move (ai, 5, 6)); 23033 assert_true (ai_move (ai, 4, 2)); 23034 assert_true (ai_move (ai, 0, 5)); 23035 assert_true (ai_move (ai, 1, 4)); 23036 assert_true (ai_move (ai, 5, 0)); 23037 assert_true (ai_move (ai, 3, 0)); 23038 assert_true (ai_move (ai, 2, 0)); 23039 assert_true (ai_move (ai, 4, 0)); 23040 assert_true (ai_move (ai, 2, 2)); 23041 assert_true (ai_move (ai, 1, 2)); 23042 assert_true (ai_move (ai, 2, 3)); 23043 assert_true (ai_move (ai, 0, 4)); 23044 assert_true (ai_move (ai, 0, 2)); 23045 assert_true (ai_move (ai, 0, 6)); 23046 assert_true (ai_move (ai, 7, 4)); 23047 assert_true (ai_move (ai, 7, 6)); 23048 assert_true (ai_move (ai, 6, 0)); 23049 assert_true (ai_move (ai, 7, 0)); 23050 assert_true (ai_move (ai, 7, 1)); 23051 assert_true (ai_move (ai, 6, 6)); 23052 assert_true (ai_move (ai, 7, 7)); 23053 assert_true (ai_move (ai, 6, 1)); 23054 assert_true (ai_move (ai, 6, 7)); 23055 assert_true (ai_move (ai, 1, 0)); 23056 assert_true (ai_move (ai, 1, 7)); 23057 assert_true (ai_move (ai, 1, 3)); 23058 assert_true (ai_move (ai, 2, 4)); 23059 assert_true (ai_move (ai, 1, 6)); 23060 assert_true (ai_move (ai, 0, 3)); 23061 assert_true (ai_move (ai, 0, 1)); 23062 assert_true (ai_move (ai, 1, 1)); 23063 assert_true (game.pass ()); 23064 assert_true (ai_move (ai, 0, 7)); 23065 assert_true (game.pass ()); 23066 assert_true (ai_move (ai, 0, 0)); 23067 } 23068 23069 private static inline void test_complete_reversi_game_292 () 23070 { 23071 /* 0 1 2 3 4 5 6 7 */ 23072 string [] board = {/* 0 */ " . . . . . . . .", 23073 /* 1 */ " . . D . . . . .", 23074 /* 2 */ " . . . D . L . .", 23075 /* 3 */ " . . . L L . . .", 23076 /* 4 */ " . . . L D . . .", 23077 /* 5 */ " . . . . . D . .", 23078 /* 6 */ " . . . . . . . .", 23079 /* 7 */ " . . . . . . . ."}; 23080 23081 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 23082 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 23083 23084 assert_true (ai_move (ai, 2, 2)); 23085 assert_true (ai_move (ai, 5, 4)); 23086 assert_true (ai_move (ai, 6, 5)); 23087 assert_true (ai_move (ai, 6, 4)); 23088 assert_true (ai_move (ai, 5, 3)); 23089 assert_true (ai_move (ai, 5, 6)); 23090 assert_true (ai_move (ai, 4, 7)); 23091 assert_true (ai_move (ai, 5, 7)); 23092 assert_true (ai_move (ai, 6, 7)); 23093 assert_true (ai_move (ai, 7, 5)); 23094 assert_true (ai_move (ai, 6, 3)); 23095 assert_true (ai_move (ai, 6, 2)); 23096 assert_true (ai_move (ai, 2, 5)); 23097 assert_true (ai_move (ai, 4, 2)); 23098 assert_true (ai_move (ai, 5, 1)); 23099 assert_true (ai_move (ai, 4, 6)); 23100 assert_true (ai_move (ai, 3, 6)); 23101 assert_true (ai_move (ai, 3, 1)); 23102 assert_true (ai_move (ai, 7, 2)); 23103 assert_true (ai_move (ai, 5, 0)); 23104 assert_true (ai_move (ai, 3, 5)); 23105 assert_true (ai_move (ai, 1, 3)); 23106 assert_true (ai_move (ai, 1, 2)); 23107 assert_true (ai_move (ai, 7, 4)); 23108 assert_true (ai_move (ai, 7, 3)); 23109 assert_true (ai_move (ai, 7, 1)); 23110 assert_true (ai_move (ai, 3, 0)); 23111 assert_true (ai_move (ai, 4, 5)); 23112 assert_true (ai_move (ai, 4, 0)); 23113 assert_true (ai_move (ai, 2, 0)); 23114 assert_true (ai_move (ai, 0, 4)); 23115 assert_true (ai_move (ai, 1, 5)); 23116 assert_true (ai_move (ai, 1, 4)); 23117 assert_true (ai_move (ai, 6, 0)); 23118 assert_true (ai_move (ai, 2, 4)); 23119 assert_true (ai_move (ai, 2, 6)); 23120 assert_true (ai_move (ai, 0, 5)); 23121 assert_true (ai_move (ai, 1, 0)); 23122 assert_true (ai_move (ai, 3, 7)); 23123 assert_true (ai_move (ai, 0, 3)); 23124 assert_true (ai_move (ai, 0, 2)); 23125 assert_true (ai_move (ai, 2, 3)); 23126 assert_true (ai_move (ai, 4, 1)); 23127 assert_true (ai_move (ai, 2, 7)); 23128 assert_true (ai_move (ai, 1, 7)); 23129 assert_true (ai_move (ai, 6, 1)); 23130 assert_true (ai_move (ai, 7, 0)); 23131 assert_true (ai_move (ai, 0, 1)); 23132 assert_true (ai_move (ai, 0, 0)); 23133 assert_true (ai_move (ai, 6, 6)); 23134 assert_true (ai_move (ai, 1, 6)); 23135 assert_true (ai_move (ai, 0, 6)); 23136 assert_true (ai_move (ai, 7, 6)); 23137 assert_true (game.pass ()); 23138 assert_true (ai_move (ai, 1, 1)); 23139 assert_true (game.pass ()); 23140 assert_true (ai_move (ai, 7, 7)); 23141 assert_true (game.pass ()); 23142 assert_true (ai_move (ai, 0, 7)); 23143 } 23144 23145 private static inline void test_complete_reversi_game_293 () 23146 { 23147 /* 0 1 2 3 4 5 6 7 */ 23148 string [] board = {/* 0 */ " . . . . . . . .", 23149 /* 1 */ " . . D L . . . .", 23150 /* 2 */ " . . . L . . . .", 23151 /* 3 */ " . . . L D . . .", 23152 /* 4 */ " . . . L D . . .", 23153 /* 5 */ " . . . . . D . .", 23154 /* 6 */ " . . . . . . . .", 23155 /* 7 */ " . . . . . . . ."}; 23156 23157 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 23158 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 23159 23160 assert_true (ai_move (ai, 2, 5)); 23161 assert_true (ai_move (ai, 5, 3)); 23162 assert_true (ai_move (ai, 6, 2)); 23163 assert_true (ai_move (ai, 6, 3)); 23164 assert_true (ai_move (ai, 6, 4)); 23165 assert_true (ai_move (ai, 7, 3)); 23166 assert_true (ai_move (ai, 4, 1)); 23167 assert_true (ai_move (ai, 5, 0)); 23168 assert_true (ai_move (ai, 5, 2)); 23169 assert_true (ai_move (ai, 5, 1)); 23170 assert_true (ai_move (ai, 4, 2)); 23171 assert_true (ai_move (ai, 5, 4)); 23172 assert_true (ai_move (ai, 7, 2)); 23173 assert_true (ai_move (ai, 7, 5)); 23174 assert_true (ai_move (ai, 2, 4)); 23175 assert_true (ai_move (ai, 5, 6)); 23176 assert_true (ai_move (ai, 2, 2)); 23177 assert_true (ai_move (ai, 2, 0)); 23178 assert_true (ai_move (ai, 5, 7)); 23179 assert_true (ai_move (ai, 4, 6)); 23180 assert_true (ai_move (ai, 3, 5)); 23181 assert_true (ai_move (ai, 6, 5)); 23182 assert_true (ai_move (ai, 4, 5)); 23183 assert_true (ai_move (ai, 7, 4)); 23184 assert_true (ai_move (ai, 7, 6)); 23185 assert_true (ai_move (ai, 1, 2)); 23186 assert_true (ai_move (ai, 0, 2)); 23187 assert_true (ai_move (ai, 1, 5)); 23188 assert_true (ai_move (ai, 2, 6)); 23189 assert_true (ai_move (ai, 1, 3)); 23190 assert_true (ai_move (ai, 3, 6)); 23191 assert_true (ai_move (ai, 2, 3)); 23192 assert_true (ai_move (ai, 0, 5)); 23193 assert_true (ai_move (ai, 2, 7)); 23194 assert_true (ai_move (ai, 1, 4)); 23195 assert_true (ai_move (ai, 4, 7)); 23196 assert_true (ai_move (ai, 3, 7)); 23197 assert_true (ai_move (ai, 6, 7)); 23198 assert_true (ai_move (ai, 1, 1)); 23199 assert_true (ai_move (ai, 0, 4)); 23200 assert_true (ai_move (ai, 0, 3)); 23201 assert_true (ai_move (ai, 1, 6)); 23202 assert_true (ai_move (ai, 4, 0)); 23203 assert_true (ai_move (ai, 6, 1)); 23204 assert_true (ai_move (ai, 7, 1)); 23205 assert_true (ai_move (ai, 7, 0)); 23206 assert_true (ai_move (ai, 6, 0)); 23207 assert_true (ai_move (ai, 7, 7)); 23208 assert_true (ai_move (ai, 0, 7)); 23209 assert_true (ai_move (ai, 3, 0)); 23210 assert_true (ai_move (ai, 0, 6)); 23211 assert_true (ai_move (ai, 6, 6)); 23212 assert_true (ai_move (ai, 1, 7)); 23213 assert_true (ai_move (ai, 0, 0)); 23214 assert_true (ai_move (ai, 0, 1)); 23215 assert_true (ai_move (ai, 1, 0)); 23216 } 23217 23218 private static inline void test_complete_reversi_game_294 () 23219 { 23220 /* 0 1 2 3 4 5 6 7 */ 23221 string [] board = {/* 0 */ " . . . . . . . .", 23222 /* 1 */ " . . . . . . . .", 23223 /* 2 */ " . . . . . . . .", 23224 /* 3 */ " . . . D D . . .", 23225 /* 4 */ " . . . L L L . .", 23226 /* 5 */ " . . . . D . . .", 23227 /* 6 */ " . . . . D L . .", 23228 /* 7 */ " . . . . . . . ."}; 23229 23230 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 23231 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 23232 23233 assert_true (ai_move (ai, 6, 3)); 23234 assert_true (ai_move (ai, 6, 4)); 23235 assert_true (ai_move (ai, 2, 5)); 23236 assert_true (ai_move (ai, 2, 2)); 23237 assert_true (ai_move (ai, 6, 5)); 23238 assert_true (ai_move (ai, 3, 6)); 23239 assert_true (ai_move (ai, 2, 7)); 23240 assert_true (ai_move (ai, 2, 3)); 23241 assert_true (ai_move (ai, 1, 3)); 23242 assert_true (ai_move (ai, 1, 2)); 23243 assert_true (ai_move (ai, 3, 1)); 23244 assert_true (ai_move (ai, 2, 1)); 23245 assert_true (ai_move (ai, 3, 5)); 23246 assert_true (ai_move (ai, 1, 5)); 23247 assert_true (ai_move (ai, 1, 4)); 23248 assert_true (ai_move (ai, 0, 5)); 23249 assert_true (ai_move (ai, 0, 3)); 23250 assert_true (ai_move (ai, 0, 4)); 23251 assert_true (ai_move (ai, 0, 6)); 23252 assert_true (ai_move (ai, 2, 4)); 23253 assert_true (ai_move (ai, 2, 0)); 23254 assert_true (ai_move (ai, 2, 6)); 23255 assert_true (ai_move (ai, 0, 2)); 23256 assert_true (ai_move (ai, 3, 2)); 23257 assert_true (ai_move (ai, 4, 1)); 23258 assert_true (ai_move (ai, 3, 0)); 23259 assert_true (ai_move (ai, 4, 0)); 23260 assert_true (ai_move (ai, 4, 2)); 23261 assert_true (ai_move (ai, 5, 7)); 23262 assert_true (ai_move (ai, 7, 2)); 23263 assert_true (ai_move (ai, 5, 2)); 23264 assert_true (ai_move (ai, 5, 3)); 23265 assert_true (ai_move (ai, 7, 4)); 23266 assert_true (ai_move (ai, 5, 1)); 23267 assert_true (ai_move (ai, 3, 7)); 23268 assert_true (ai_move (ai, 4, 7)); 23269 assert_true (ai_move (ai, 6, 2)); 23270 assert_true (ai_move (ai, 5, 5)); 23271 assert_true (ai_move (ai, 6, 7)); 23272 assert_true (ai_move (ai, 1, 1)); 23273 assert_true (ai_move (ai, 0, 1)); 23274 assert_true (ai_move (ai, 0, 0)); 23275 assert_true (ai_move (ai, 1, 0)); 23276 assert_true (ai_move (ai, 0, 7)); 23277 assert_true (ai_move (ai, 6, 6)); 23278 assert_true (ai_move (ai, 5, 0)); 23279 assert_true (ai_move (ai, 6, 0)); 23280 assert_true (ai_move (ai, 1, 7)); 23281 assert_true (ai_move (ai, 6, 1)); 23282 assert_true (ai_move (ai, 1, 6)); 23283 assert_true (game.pass ()); 23284 assert_true (ai_move (ai, 7, 0)); 23285 assert_true (ai_move (ai, 7, 1)); 23286 assert_true (ai_move (ai, 7, 3)); 23287 assert_true (ai_move (ai, 7, 5)); 23288 assert_true (ai_move (ai, 7, 7)); 23289 assert_true (ai_move (ai, 7, 6)); 23290 } 23291 23292 private static inline void test_complete_reversi_game_295 () 23293 { 23294 /* 0 1 2 3 4 5 6 7 */ 23295 string [] board = {/* 0 */ " . . . . . . . .", 23296 /* 1 */ " . . . . . . . .", 23297 /* 2 */ " . . . . . L . .", 23298 /* 3 */ " . . . D L . . .", 23299 /* 4 */ " . . . L D . . .", 23300 /* 5 */ " . . . . D . . .", 23301 /* 6 */ " . . . . D L . .", 23302 /* 7 */ " . . . . . . . ."}; 23303 23304 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 23305 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 23306 23307 assert_true (ai_move (ai, 5, 3)); 23308 assert_true (ai_move (ai, 3, 6)); 23309 assert_true (ai_move (ai, 5, 1)); 23310 assert_true (ai_move (ai, 3, 2)); 23311 assert_true (ai_move (ai, 2, 1)); 23312 assert_true (ai_move (ai, 3, 1)); 23313 assert_true (ai_move (ai, 4, 7)); 23314 assert_true (ai_move (ai, 5, 5)); 23315 assert_true (ai_move (ai, 6, 4)); 23316 assert_true (ai_move (ai, 6, 2)); 23317 assert_true (ai_move (ai, 4, 2)); 23318 assert_true (ai_move (ai, 4, 0)); 23319 assert_true (ai_move (ai, 5, 7)); 23320 assert_true (ai_move (ai, 4, 1)); 23321 assert_true (ai_move (ai, 2, 0)); 23322 assert_true (ai_move (ai, 5, 4)); 23323 assert_true (ai_move (ai, 7, 2)); 23324 assert_true (ai_move (ai, 6, 5)); 23325 assert_true (ai_move (ai, 2, 2)); 23326 assert_true (ai_move (ai, 2, 3)); 23327 assert_true (ai_move (ai, 3, 0)); 23328 assert_true (ai_move (ai, 1, 2)); 23329 assert_true (ai_move (ai, 5, 0)); 23330 assert_true (ai_move (ai, 6, 3)); 23331 assert_true (ai_move (ai, 0, 2)); 23332 assert_true (ai_move (ai, 3, 7)); 23333 assert_true (ai_move (ai, 7, 5)); 23334 assert_true (ai_move (ai, 1, 1)); 23335 assert_true (ai_move (ai, 1, 3)); 23336 assert_true (ai_move (ai, 1, 0)); 23337 assert_true (ai_move (ai, 0, 0)); 23338 assert_true (ai_move (ai, 2, 4)); 23339 assert_true (ai_move (ai, 7, 3)); 23340 assert_true (ai_move (ai, 6, 7)); 23341 assert_true (ai_move (ai, 2, 5)); 23342 assert_true (ai_move (ai, 7, 4)); 23343 assert_true (ai_move (ai, 3, 5)); 23344 assert_true (ai_move (ai, 1, 4)); 23345 assert_true (ai_move (ai, 2, 6)); 23346 assert_true (ai_move (ai, 1, 5)); 23347 assert_true (ai_move (ai, 0, 4)); 23348 assert_true (ai_move (ai, 0, 3)); 23349 assert_true (ai_move (ai, 0, 5)); 23350 assert_true (ai_move (ai, 0, 1)); 23351 assert_true (ai_move (ai, 2, 7)); 23352 assert_true (ai_move (ai, 1, 7)); 23353 assert_true (ai_move (ai, 1, 6)); 23354 assert_true (ai_move (ai, 0, 7)); 23355 assert_true (ai_move (ai, 0, 6)); 23356 assert_true (ai_move (ai, 6, 6)); 23357 assert_true (ai_move (ai, 7, 7)); 23358 assert_true (ai_move (ai, 7, 6)); 23359 assert_true (game.pass ()); 23360 assert_true (ai_move (ai, 6, 1)); 23361 assert_true (ai_move (ai, 7, 0)); 23362 assert_true (ai_move (ai, 7, 1)); 23363 assert_true (ai_move (ai, 6, 0)); 23364 } 23365 23366 private static inline void test_complete_reversi_game_296 () 23367 { 23368 /* 0 1 2 3 4 5 6 7 */ 23369 string [] board = {/* 0 */ " . . . . . . . .", 23370 /* 1 */ " . . . . . . . .", 23371 /* 2 */ " . . . . . . . .", 23372 /* 3 */ " . . . D D . . .", 23373 /* 4 */ " . . . L D . . .", 23374 /* 5 */ " . . . . D . . .", 23375 /* 6 */ " . . . L L L . .", 23376 /* 7 */ " . . . . . . . ."}; 23377 23378 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 23379 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 23380 23381 assert_true (ai_move (ai, 2, 7)); 23382 assert_true (ai_move (ai, 2, 6)); 23383 assert_true (ai_move (ai, 4, 7)); 23384 assert_true (ai_move (ai, 5, 2)); 23385 assert_true (ai_move (ai, 6, 5)); 23386 assert_true (ai_move (ai, 3, 2)); 23387 assert_true (ai_move (ai, 2, 5)); 23388 assert_true (ai_move (ai, 5, 4)); 23389 assert_true (ai_move (ai, 6, 3)); 23390 assert_true (ai_move (ai, 6, 4)); 23391 assert_true (ai_move (ai, 4, 1)); 23392 assert_true (ai_move (ai, 5, 0)); 23393 assert_true (ai_move (ai, 3, 0)); 23394 assert_true (ai_move (ai, 7, 2)); 23395 assert_true (ai_move (ai, 7, 4)); 23396 assert_true (ai_move (ai, 6, 2)); 23397 assert_true (ai_move (ai, 2, 1)); 23398 assert_true (ai_move (ai, 3, 1)); 23399 assert_true (ai_move (ai, 2, 3)); 23400 assert_true (ai_move (ai, 5, 1)); 23401 assert_true (ai_move (ai, 5, 5)); 23402 assert_true (ai_move (ai, 3, 7)); 23403 assert_true (ai_move (ai, 6, 6)); 23404 assert_true (ai_move (ai, 5, 3)); 23405 assert_true (ai_move (ai, 7, 3)); 23406 assert_true (ai_move (ai, 7, 5)); 23407 assert_true (ai_move (ai, 7, 1)); 23408 assert_true (ai_move (ai, 7, 0)); 23409 assert_true (ai_move (ai, 4, 2)); 23410 assert_true (ai_move (ai, 2, 2)); 23411 assert_true (ai_move (ai, 2, 0)); 23412 assert_true (ai_move (ai, 4, 0)); 23413 assert_true (ai_move (ai, 1, 2)); 23414 assert_true (ai_move (ai, 0, 2)); 23415 assert_true (ai_move (ai, 1, 1)); 23416 assert_true (ai_move (ai, 1, 3)); 23417 assert_true (ai_move (ai, 6, 0)); 23418 assert_true (ai_move (ai, 2, 4)); 23419 assert_true (ai_move (ai, 0, 4)); 23420 assert_true (ai_move (ai, 3, 5)); 23421 assert_true (ai_move (ai, 1, 4)); 23422 assert_true (ai_move (ai, 0, 0)); 23423 assert_true (ai_move (ai, 1, 0)); 23424 assert_true (ai_move (ai, 0, 1)); 23425 assert_true (ai_move (ai, 5, 7)); 23426 assert_true (ai_move (ai, 0, 3)); 23427 assert_true (ai_move (ai, 0, 5)); 23428 assert_true (ai_move (ai, 1, 5)); 23429 assert_true (ai_move (ai, 7, 6)); 23430 assert_true (ai_move (ai, 0, 6)); 23431 assert_true (ai_move (ai, 6, 1)); 23432 assert_true (ai_move (ai, 7, 7)); 23433 assert_true (ai_move (ai, 6, 7)); 23434 assert_true (ai_move (ai, 1, 7)); 23435 assert_true (ai_move (ai, 0, 7)); 23436 assert_true (game.pass ()); 23437 assert_true (ai_move (ai, 1, 6)); 23438 } 23439 23440 private static inline void test_complete_reversi_game_297 () 23441 { 23442 /* 0 1 2 3 4 5 6 7 */ 23443 string [] board = {/* 0 */ " . . . . . . . .", 23444 /* 1 */ " . . . . . . . .", 23445 /* 2 */ " . . . L . . . .", 23446 /* 3 */ " . . . L D . . .", 23447 /* 4 */ " . . . L D . . .", 23448 /* 5 */ " . . . . D . . .", 23449 /* 6 */ " . . . . D L . .", 23450 /* 7 */ " . . . . . . . ."}; 23451 23452 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 23453 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 23454 23455 assert_true (ai_move (ai, 2, 1)); 23456 assert_true (ai_move (ai, 3, 1)); 23457 assert_true (ai_move (ai, 2, 5)); 23458 assert_true (ai_move (ai, 5, 4)); 23459 assert_true (ai_move (ai, 6, 3)); 23460 assert_true (ai_move (ai, 6, 5)); 23461 assert_true (ai_move (ai, 6, 4)); 23462 assert_true (ai_move (ai, 3, 6)); 23463 assert_true (ai_move (ai, 2, 7)); 23464 assert_true (ai_move (ai, 2, 6)); 23465 assert_true (ai_move (ai, 5, 2)); 23466 assert_true (ai_move (ai, 2, 4)); 23467 assert_true (ai_move (ai, 1, 4)); 23468 assert_true (ai_move (ai, 1, 5)); 23469 assert_true (ai_move (ai, 2, 2)); 23470 assert_true (ai_move (ai, 1, 2)); 23471 assert_true (ai_move (ai, 2, 3)); 23472 assert_true (ai_move (ai, 1, 3)); 23473 assert_true (ai_move (ai, 0, 2)); 23474 assert_true (ai_move (ai, 0, 4)); 23475 assert_true (ai_move (ai, 4, 2)); 23476 assert_true (ai_move (ai, 3, 7)); 23477 assert_true (ai_move (ai, 0, 3)); 23478 assert_true (ai_move (ai, 2, 0)); 23479 assert_true (ai_move (ai, 0, 5)); 23480 assert_true (ai_move (ai, 3, 5)); 23481 assert_true (ai_move (ai, 4, 1)); 23482 assert_true (ai_move (ai, 1, 7)); 23483 assert_true (ai_move (ai, 5, 7)); 23484 assert_true (ai_move (ai, 5, 1)); 23485 assert_true (ai_move (ai, 5, 5)); 23486 assert_true (ai_move (ai, 7, 2)); 23487 assert_true (ai_move (ai, 5, 3)); 23488 assert_true (ai_move (ai, 6, 2)); 23489 assert_true (ai_move (ai, 7, 3)); 23490 assert_true (ai_move (ai, 7, 5)); 23491 assert_true (ai_move (ai, 7, 4)); 23492 assert_true (ai_move (ai, 1, 1)); 23493 assert_true (ai_move (ai, 4, 0)); 23494 assert_true (ai_move (ai, 5, 0)); 23495 assert_true (ai_move (ai, 3, 0)); 23496 assert_true (ai_move (ai, 1, 0)); 23497 assert_true (ai_move (ai, 0, 6)); 23498 assert_true (ai_move (ai, 6, 1)); 23499 assert_true (ai_move (ai, 4, 7)); 23500 assert_true (ai_move (ai, 6, 7)); 23501 assert_true (ai_move (ai, 7, 0)); 23502 assert_true (ai_move (ai, 7, 1)); 23503 assert_true (ai_move (ai, 6, 0)); 23504 assert_true (ai_move (ai, 6, 6)); 23505 assert_true (ai_move (ai, 1, 6)); 23506 assert_true (ai_move (ai, 7, 6)); 23507 assert_true (ai_move (ai, 7, 7)); 23508 assert_true (ai_move (ai, 0, 7)); 23509 assert_true (ai_move (ai, 0, 0)); 23510 assert_true (ai_move (ai, 0, 1)); 23511 } 23512 23513 private static inline void test_complete_reversi_game_298 () 23514 { 23515 /* 0 1 2 3 4 5 6 7 */ 23516 string [] board = {/* 0 */ " . . . . . . . .", 23517 /* 1 */ " . . . . . . . .", 23518 /* 2 */ " . . . . L . . .", 23519 /* 3 */ " . . . D L . . .", 23520 /* 4 */ " . . . D L . . .", 23521 /* 5 */ " . . . D L . . .", 23522 /* 6 */ " . . . . . L . .", 23523 /* 7 */ " . . . . . . . ."}; 23524 23525 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 23526 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 23527 23528 assert_true (ai_move (ai, 5, 1)); 23529 assert_true (ai_move (ai, 2, 6)); 23530 assert_true (ai_move (ai, 3, 6)); 23531 assert_true (ai_move (ai, 4, 1)); 23532 assert_true (ai_move (ai, 3, 1)); 23533 assert_true (ai_move (ai, 4, 0)); 23534 assert_true (ai_move (ai, 5, 4)); 23535 assert_true (ai_move (ai, 6, 5)); 23536 assert_true (ai_move (ai, 6, 3)); 23537 assert_true (ai_move (ai, 6, 2)); 23538 assert_true (ai_move (ai, 3, 2)); 23539 assert_true (ai_move (ai, 2, 2)); 23540 assert_true (ai_move (ai, 2, 1)); 23541 assert_true (ai_move (ai, 2, 0)); 23542 assert_true (ai_move (ai, 3, 0)); 23543 assert_true (ai_move (ai, 6, 4)); 23544 assert_true (ai_move (ai, 1, 3)); 23545 assert_true (ai_move (ai, 1, 2)); 23546 assert_true (ai_move (ai, 7, 2)); 23547 assert_true (ai_move (ai, 2, 3)); 23548 assert_true (ai_move (ai, 4, 6)); 23549 assert_true (ai_move (ai, 5, 2)); 23550 assert_true (ai_move (ai, 0, 2)); 23551 assert_true (ai_move (ai, 7, 4)); 23552 assert_true (ai_move (ai, 1, 4)); 23553 assert_true (ai_move (ai, 2, 4)); 23554 assert_true (ai_move (ai, 5, 3)); 23555 assert_true (ai_move (ai, 0, 5)); 23556 assert_true (ai_move (ai, 7, 3)); 23557 assert_true (ai_move (ai, 5, 5)); 23558 assert_true (ai_move (ai, 7, 5)); 23559 assert_true (ai_move (ai, 6, 6)); 23560 assert_true (ai_move (ai, 1, 5)); 23561 assert_true (ai_move (ai, 2, 5)); 23562 assert_true (ai_move (ai, 4, 7)); 23563 assert_true (ai_move (ai, 2, 7)); 23564 assert_true (ai_move (ai, 3, 7)); 23565 assert_true (ai_move (ai, 5, 7)); 23566 assert_true (ai_move (ai, 7, 7)); 23567 assert_true (ai_move (ai, 0, 4)); 23568 assert_true (ai_move (ai, 0, 3)); 23569 assert_true (ai_move (ai, 0, 1)); 23570 assert_true (ai_move (ai, 5, 0)); 23571 assert_true (ai_move (ai, 6, 0)); 23572 assert_true (ai_move (ai, 6, 7)); 23573 assert_true (ai_move (ai, 7, 6)); 23574 assert_true (ai_move (ai, 1, 7)); 23575 assert_true (ai_move (ai, 6, 1)); 23576 assert_true (ai_move (ai, 7, 0)); 23577 assert_true (ai_move (ai, 7, 1)); 23578 assert_true (ai_move (ai, 1, 0)); 23579 assert_true (ai_move (ai, 1, 6)); 23580 assert_true (ai_move (ai, 0, 7)); 23581 assert_true (ai_move (ai, 1, 1)); 23582 assert_true (ai_move (ai, 0, 0)); 23583 assert_true (ai_move (ai, 0, 6)); 23584 } 23585 23586 private static inline void test_complete_reversi_game_299 () 23587 { 23588 /* 0 1 2 3 4 5 6 7 */ 23589 string [] board = {/* 0 */ " . . . . . . . .", 23590 /* 1 */ " . . . . . . . .", 23591 /* 2 */ " . . . . . . . .", 23592 /* 3 */ " . . . D D . . .", 23593 /* 4 */ " . . . D D . . .", 23594 /* 5 */ " . . L L L . . .", 23595 /* 6 */ " . . . . . L . .", 23596 /* 7 */ " . . . . . . . ."}; 23597 23598 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 23599 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 23600 23601 assert_true (ai_move (ai, 3, 6)); 23602 assert_true (ai_move (ai, 4, 7)); 23603 assert_true (ai_move (ai, 1, 5)); 23604 assert_true (ai_move (ai, 1, 4)); 23605 assert_true (ai_move (ai, 5, 5)); 23606 assert_true (ai_move (ai, 6, 5)); 23607 assert_true (ai_move (ai, 2, 6)); 23608 assert_true (ai_move (ai, 2, 7)); 23609 assert_true (ai_move (ai, 1, 3)); 23610 assert_true (ai_move (ai, 0, 5)); 23611 assert_true (ai_move (ai, 3, 7)); 23612 assert_true (ai_move (ai, 4, 6)); 23613 assert_true (ai_move (ai, 7, 5)); 23614 assert_true (ai_move (ai, 5, 4)); 23615 assert_true (ai_move (ai, 6, 4)); 23616 assert_true (ai_move (ai, 7, 4)); 23617 assert_true (ai_move (ai, 7, 3)); 23618 assert_true (ai_move (ai, 0, 3)); 23619 assert_true (ai_move (ai, 6, 7)); 23620 assert_true (ai_move (ai, 6, 3)); 23621 assert_true (ai_move (ai, 5, 3)); 23622 assert_true (ai_move (ai, 7, 2)); 23623 assert_true (ai_move (ai, 7, 1)); 23624 assert_true (ai_move (ai, 5, 7)); 23625 assert_true (ai_move (ai, 7, 6)); 23626 assert_true (ai_move (ai, 2, 4)); 23627 assert_true (ai_move (ai, 6, 6)); 23628 assert_true (ai_move (ai, 5, 2)); 23629 assert_true (ai_move (ai, 6, 2)); 23630 assert_true (ai_move (ai, 0, 2)); 23631 assert_true (ai_move (ai, 5, 1)); 23632 assert_true (ai_move (ai, 5, 0)); 23633 assert_true (ai_move (ai, 4, 1)); 23634 assert_true (ai_move (ai, 2, 3)); 23635 assert_true (ai_move (ai, 1, 2)); 23636 assert_true (ai_move (ai, 2, 2)); 23637 assert_true (ai_move (ai, 4, 0)); 23638 assert_true (ai_move (ai, 3, 0)); 23639 assert_true (ai_move (ai, 4, 2)); 23640 assert_true (ai_move (ai, 3, 2)); 23641 assert_true (ai_move (ai, 2, 1)); 23642 assert_true (ai_move (ai, 3, 1)); 23643 assert_true (ai_move (ai, 1, 6)); 23644 assert_true (ai_move (ai, 2, 0)); 23645 assert_true (ai_move (ai, 0, 4)); 23646 assert_true (ai_move (ai, 6, 0)); 23647 assert_true (ai_move (ai, 1, 1)); 23648 assert_true (ai_move (ai, 0, 6)); 23649 assert_true (ai_move (ai, 1, 0)); 23650 assert_true (ai_move (ai, 0, 0)); 23651 assert_true (ai_move (ai, 0, 1)); 23652 assert_true (ai_move (ai, 1, 7)); 23653 assert_true (ai_move (ai, 0, 7)); 23654 assert_true (ai_move (ai, 7, 7)); 23655 assert_true (ai_move (ai, 6, 1)); 23656 assert_true (ai_move (ai, 7, 0)); 23657 } 23658 23659 private static inline void test_complete_reversi_game_300 () 23660 { 23661 /* 0 1 2 3 4 5 6 7 */ 23662 string [] board = {/* 0 */ " . . . . . . . .", 23663 /* 1 */ " . . . . . . . .", 23664 /* 2 */ " . . . . . . . .", 23665 /* 3 */ " . . L D D . . .", 23666 /* 4 */ " . . . L D . . .", 23667 /* 5 */ " . . . D L . . .", 23668 /* 6 */ " . . . . . L . .", 23669 /* 7 */ " . . . . . . . ."}; 23670 23671 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 23672 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 23673 23674 assert_true (ai_move (ai, 4, 6)); 23675 assert_true (ai_move (ai, 5, 2)); 23676 assert_true (ai_move (ai, 1, 3)); 23677 assert_true (ai_move (ai, 1, 2)); 23678 assert_true (ai_move (ai, 2, 4)); 23679 assert_true (ai_move (ai, 2, 5)); 23680 assert_true (ai_move (ai, 1, 5)); 23681 assert_true (ai_move (ai, 2, 6)); 23682 assert_true (ai_move (ai, 1, 4)); 23683 assert_true (ai_move (ai, 5, 5)); 23684 assert_true (ai_move (ai, 3, 6)); 23685 assert_true (ai_move (ai, 0, 5)); 23686 assert_true (ai_move (ai, 5, 4)); 23687 assert_true (ai_move (ai, 0, 2)); 23688 assert_true (ai_move (ai, 6, 5)); 23689 assert_true (ai_move (ai, 7, 5)); 23690 assert_true (ai_move (ai, 6, 4)); 23691 assert_true (ai_move (ai, 3, 7)); 23692 assert_true (ai_move (ai, 2, 7)); 23693 assert_true (ai_move (ai, 1, 7)); 23694 assert_true (ai_move (ai, 5, 7)); 23695 assert_true (ai_move (ai, 4, 2)); 23696 assert_true (ai_move (ai, 7, 4)); 23697 assert_true (ai_move (ai, 6, 3)); 23698 assert_true (ai_move (ai, 5, 3)); 23699 assert_true (ai_move (ai, 6, 2)); 23700 assert_true (ai_move (ai, 5, 1)); 23701 assert_true (ai_move (ai, 4, 1)); 23702 assert_true (ai_move (ai, 0, 4)); 23703 assert_true (ai_move (ai, 0, 3)); 23704 assert_true (ai_move (ai, 7, 2)); 23705 assert_true (ai_move (ai, 5, 0)); 23706 assert_true (ai_move (ai, 3, 1)); 23707 assert_true (ai_move (ai, 3, 2)); 23708 assert_true (ai_move (ai, 4, 0)); 23709 assert_true (ai_move (ai, 3, 0)); 23710 assert_true (ai_move (ai, 2, 0)); 23711 assert_true (ai_move (ai, 1, 0)); 23712 assert_true (ai_move (ai, 2, 2)); 23713 assert_true (ai_move (ai, 2, 1)); 23714 assert_true (ai_move (ai, 7, 6)); 23715 assert_true (ai_move (ai, 7, 3)); 23716 assert_true (ai_move (ai, 6, 6)); 23717 assert_true (ai_move (ai, 7, 7)); 23718 assert_true (ai_move (ai, 6, 1)); 23719 assert_true (ai_move (ai, 6, 7)); 23720 assert_true (ai_move (ai, 4, 7)); 23721 assert_true (ai_move (ai, 7, 0)); 23722 assert_true (ai_move (ai, 0, 7)); 23723 assert_true (ai_move (ai, 7, 1)); 23724 assert_true (ai_move (ai, 0, 6)); 23725 assert_true (ai_move (ai, 1, 6)); 23726 assert_true (ai_move (ai, 0, 1)); 23727 assert_true (ai_move (ai, 1, 1)); 23728 assert_true (ai_move (ai, 0, 0)); 23729 assert_true (game.pass ()); 23730 assert_true (ai_move (ai, 6, 0)); 23731 } 23732 23733 private static inline void test_complete_reversi_game_301 () 23734 { 23735 /* 0 1 2 3 4 5 6 7 */ 23736 string [] board = {/* 0 */ " . . . . . . . .", 23737 /* 1 */ " . . . . . . . .", 23738 /* 2 */ " . . . . L . . .", 23739 /* 3 */ " . . . D L . . .", 23740 /* 4 */ " . . . D L . . .", 23741 /* 5 */ " . . D . L . . .", 23742 /* 6 */ " . . . . . L . .", 23743 /* 7 */ " . . . . . . . ."}; 23744 23745 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 23746 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 23747 23748 assert_true (ai_move (ai, 5, 1)); 23749 assert_true (ai_move (ai, 4, 1)); 23750 assert_true (ai_move (ai, 3, 1)); 23751 assert_true (ai_move (ai, 4, 0)); 23752 assert_true (ai_move (ai, 5, 3)); 23753 assert_true (ai_move (ai, 6, 2)); 23754 assert_true (ai_move (ai, 6, 4)); 23755 assert_true (ai_move (ai, 2, 1)); 23756 assert_true (ai_move (ai, 2, 0)); 23757 assert_true (ai_move (ai, 2, 3)); 23758 assert_true (ai_move (ai, 1, 3)); 23759 assert_true (ai_move (ai, 1, 2)); 23760 assert_true (ai_move (ai, 2, 2)); 23761 assert_true (ai_move (ai, 0, 3)); 23762 assert_true (ai_move (ai, 0, 2)); 23763 assert_true (ai_move (ai, 3, 2)); 23764 assert_true (ai_move (ai, 1, 4)); 23765 assert_true (ai_move (ai, 0, 1)); 23766 assert_true (ai_move (ai, 2, 4)); 23767 assert_true (ai_move (ai, 3, 5)); 23768 assert_true (ai_move (ai, 1, 5)); 23769 assert_true (ai_move (ai, 0, 4)); 23770 assert_true (ai_move (ai, 0, 5)); 23771 assert_true (ai_move (ai, 0, 6)); 23772 assert_true (ai_move (ai, 5, 0)); 23773 assert_true (ai_move (ai, 6, 0)); 23774 assert_true (ai_move (ai, 2, 6)); 23775 assert_true (ai_move (ai, 3, 6)); 23776 assert_true (ai_move (ai, 3, 7)); 23777 assert_true (ai_move (ai, 4, 6)); 23778 assert_true (ai_move (ai, 5, 4)); 23779 assert_true (ai_move (ai, 5, 5)); 23780 assert_true (ai_move (ai, 4, 7)); 23781 assert_true (ai_move (ai, 5, 2)); 23782 assert_true (ai_move (ai, 6, 5)); 23783 assert_true (ai_move (ai, 7, 5)); 23784 assert_true (ai_move (ai, 6, 3)); 23785 assert_true (ai_move (ai, 7, 2)); 23786 assert_true (ai_move (ai, 7, 3)); 23787 assert_true (ai_move (ai, 7, 4)); 23788 assert_true (ai_move (ai, 1, 6)); 23789 assert_true (ai_move (ai, 5, 7)); 23790 assert_true (ai_move (ai, 6, 7)); 23791 assert_true (ai_move (ai, 1, 0)); 23792 assert_true (ai_move (ai, 0, 0)); 23793 assert_true (ai_move (ai, 0, 7)); 23794 assert_true (ai_move (ai, 1, 1)); 23795 assert_true (ai_move (ai, 6, 1)); 23796 assert_true (ai_move (ai, 7, 6)); 23797 assert_true (ai_move (ai, 2, 7)); 23798 assert_true (ai_move (ai, 6, 6)); 23799 assert_true (ai_move (ai, 7, 7)); 23800 assert_true (ai_move (ai, 1, 7)); 23801 assert_true (ai_move (ai, 3, 0)); 23802 assert_true (ai_move (ai, 7, 0)); 23803 assert_true (ai_move (ai, 7, 1)); 23804 } 23805 23806 private static inline void test_complete_reversi_game_302 () 23807 { 23808 /* 0 1 2 3 4 5 6 7 */ 23809 string [] board = {/* 0 */ " . . . . . . . .", 23810 /* 1 */ " . . . . . . . .", 23811 /* 2 */ " . . . . . . . .", 23812 /* 3 */ " . . L D D . . .", 23813 /* 4 */ " . . . L D . . .", 23814 /* 5 */ " . . D . L . . .", 23815 /* 6 */ " . . . . . L . .", 23816 /* 7 */ " . . . . . . . ."}; 23817 23818 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 23819 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 23820 23821 assert_true (ai_move (ai, 4, 6)); 23822 assert_true (ai_move (ai, 3, 6)); 23823 assert_true (ai_move (ai, 2, 7)); 23824 assert_true (ai_move (ai, 2, 6)); 23825 assert_true (ai_move (ai, 1, 3)); 23826 assert_true (ai_move (ai, 1, 4)); 23827 assert_true (ai_move (ai, 4, 7)); 23828 assert_true (ai_move (ai, 5, 2)); 23829 assert_true (ai_move (ai, 6, 5)); 23830 assert_true (ai_move (ai, 1, 2)); 23831 assert_true (ai_move (ai, 4, 2)); 23832 assert_true (ai_move (ai, 3, 2)); 23833 assert_true (ai_move (ai, 4, 1)); 23834 assert_true (ai_move (ai, 5, 1)); 23835 assert_true (ai_move (ai, 6, 3)); 23836 assert_true (ai_move (ai, 6, 2)); 23837 assert_true (ai_move (ai, 2, 1)); 23838 assert_true (ai_move (ai, 2, 2)); 23839 assert_true (ai_move (ai, 2, 4)); 23840 assert_true (ai_move (ai, 1, 5)); 23841 assert_true (ai_move (ai, 7, 2)); 23842 assert_true (ai_move (ai, 2, 0)); 23843 assert_true (ai_move (ai, 0, 2)); 23844 assert_true (ai_move (ai, 3, 5)); 23845 assert_true (ai_move (ai, 0, 5)); 23846 assert_true (ai_move (ai, 5, 7)); 23847 assert_true (ai_move (ai, 3, 7)); 23848 assert_true (ai_move (ai, 1, 7)); 23849 assert_true (ai_move (ai, 0, 4)); 23850 assert_true (ai_move (ai, 5, 5)); 23851 assert_true (ai_move (ai, 5, 0)); 23852 assert_true (ai_move (ai, 3, 1)); 23853 assert_true (ai_move (ai, 4, 0)); 23854 assert_true (ai_move (ai, 0, 3)); 23855 assert_true (ai_move (ai, 1, 6)); 23856 assert_true (ai_move (ai, 7, 5)); 23857 assert_true (ai_move (ai, 6, 6)); 23858 assert_true (ai_move (ai, 6, 4)); 23859 assert_true (ai_move (ai, 5, 4)); 23860 assert_true (ai_move (ai, 5, 3)); 23861 assert_true (ai_move (ai, 3, 0)); 23862 assert_true (ai_move (ai, 6, 0)); 23863 assert_true (ai_move (ai, 7, 6)); 23864 assert_true (ai_move (ai, 7, 7)); 23865 assert_true (ai_move (ai, 7, 4)); 23866 assert_true (ai_move (ai, 1, 1)); 23867 assert_true (ai_move (ai, 6, 1)); 23868 assert_true (ai_move (ai, 7, 3)); 23869 assert_true (ai_move (ai, 6, 7)); 23870 assert_true (ai_move (ai, 0, 1)); 23871 assert_true (ai_move (ai, 0, 7)); 23872 assert_true (ai_move (ai, 7, 1)); 23873 assert_true (ai_move (ai, 0, 0)); 23874 assert_true (ai_move (ai, 0, 6)); 23875 assert_true (ai_move (ai, 1, 0)); 23876 assert_true (game.pass ()); 23877 assert_true (ai_move (ai, 7, 0)); 23878 } 23879 23880 private static inline void test_complete_reversi_game_303 () 23881 { 23882 /* 0 1 2 3 4 5 6 7 */ 23883 string [] board = {/* 0 */ " . . . . . . . .", 23884 /* 1 */ " . . . . . . . .", 23885 /* 2 */ " . . . . L . . .", 23886 /* 3 */ " . . . D L . . .", 23887 /* 4 */ " . . D D L . . .", 23888 /* 5 */ " . . . . L . . .", 23889 /* 6 */ " . . . . . L . .", 23890 /* 7 */ " . . . . . . . ."}; 23891 23892 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 23893 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 23894 23895 assert_true (ai_move (ai, 5, 1)); 23896 assert_true (ai_move (ai, 4, 1)); 23897 assert_true (ai_move (ai, 3, 1)); 23898 assert_true (ai_move (ai, 4, 0)); 23899 assert_true (ai_move (ai, 5, 3)); 23900 assert_true (ai_move (ai, 6, 2)); 23901 assert_true (ai_move (ai, 6, 4)); 23902 assert_true (ai_move (ai, 2, 1)); 23903 assert_true (ai_move (ai, 2, 0)); 23904 assert_true (ai_move (ai, 2, 3)); 23905 assert_true (ai_move (ai, 1, 3)); 23906 assert_true (ai_move (ai, 1, 2)); 23907 assert_true (ai_move (ai, 2, 5)); 23908 assert_true (ai_move (ai, 2, 6)); 23909 assert_true (ai_move (ai, 1, 4)); 23910 assert_true (ai_move (ai, 0, 5)); 23911 assert_true (ai_move (ai, 1, 5)); 23912 assert_true (ai_move (ai, 2, 2)); 23913 assert_true (ai_move (ai, 3, 6)); 23914 assert_true (ai_move (ai, 0, 3)); 23915 assert_true (ai_move (ai, 0, 2)); 23916 assert_true (ai_move (ai, 0, 4)); 23917 assert_true (ai_move (ai, 0, 6)); 23918 assert_true (ai_move (ai, 3, 5)); 23919 assert_true (ai_move (ai, 3, 2)); 23920 assert_true (ai_move (ai, 2, 7)); 23921 assert_true (ai_move (ai, 5, 4)); 23922 assert_true (ai_move (ai, 6, 5)); 23923 assert_true (ai_move (ai, 5, 2)); 23924 assert_true (ai_move (ai, 7, 5)); 23925 assert_true (ai_move (ai, 5, 0)); 23926 assert_true (ai_move (ai, 6, 0)); 23927 assert_true (ai_move (ai, 6, 3)); 23928 assert_true (ai_move (ai, 7, 2)); 23929 assert_true (ai_move (ai, 5, 5)); 23930 assert_true (ai_move (ai, 4, 6)); 23931 assert_true (ai_move (ai, 5, 7)); 23932 assert_true (ai_move (ai, 3, 7)); 23933 assert_true (ai_move (ai, 6, 6)); 23934 assert_true (ai_move (ai, 4, 7)); 23935 assert_true (ai_move (ai, 1, 7)); 23936 assert_true (ai_move (ai, 6, 1)); 23937 assert_true (ai_move (ai, 6, 7)); 23938 assert_true (ai_move (ai, 3, 0)); 23939 assert_true (ai_move (ai, 7, 0)); 23940 assert_true (ai_move (ai, 7, 1)); 23941 assert_true (ai_move (ai, 1, 0)); 23942 assert_true (ai_move (ai, 1, 1)); 23943 assert_true (ai_move (ai, 0, 0)); 23944 assert_true (ai_move (ai, 0, 1)); 23945 assert_true (ai_move (ai, 7, 3)); 23946 assert_true (ai_move (ai, 0, 7)); 23947 assert_true (ai_move (ai, 7, 4)); 23948 assert_true (ai_move (ai, 7, 7)); 23949 assert_true (ai_move (ai, 7, 6)); 23950 assert_true (ai_move (ai, 1, 6)); 23951 } 23952 23953 private static inline void test_complete_reversi_game_304 () 23954 { 23955 /* 0 1 2 3 4 5 6 7 */ 23956 string [] board = {/* 0 */ " . . . . . . . .", 23957 /* 1 */ " . . . . . . . .", 23958 /* 2 */ " . . . . . . . .", 23959 /* 3 */ " . . L D D . . .", 23960 /* 4 */ " . . D L D . . .", 23961 /* 5 */ " . . . . L . . .", 23962 /* 6 */ " . . . . . L . .", 23963 /* 7 */ " . . . . . . . ."}; 23964 23965 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 23966 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 23967 23968 assert_true (ai_move (ai, 2, 2)); 23969 assert_true (ai_move (ai, 1, 2)); 23970 assert_true (ai_move (ai, 1, 3)); 23971 assert_true (ai_move (ai, 3, 2)); 23972 assert_true (ai_move (ai, 3, 1)); 23973 assert_true (ai_move (ai, 1, 5)); 23974 assert_true (ai_move (ai, 2, 1)); 23975 assert_true (ai_move (ai, 0, 2)); 23976 assert_true (ai_move (ai, 2, 5)); 23977 assert_true (ai_move (ai, 4, 0)); 23978 assert_true (ai_move (ai, 0, 5)); 23979 assert_true (ai_move (ai, 2, 0)); 23980 assert_true (ai_move (ai, 0, 3)); 23981 assert_true (ai_move (ai, 5, 5)); 23982 assert_true (ai_move (ai, 4, 2)); 23983 assert_true (ai_move (ai, 5, 2)); 23984 assert_true (ai_move (ai, 5, 1)); 23985 assert_true (ai_move (ai, 5, 3)); 23986 assert_true (ai_move (ai, 6, 3)); 23987 assert_true (ai_move (ai, 2, 6)); 23988 assert_true (ai_move (ai, 4, 1)); 23989 assert_true (ai_move (ai, 5, 0)); 23990 assert_true (ai_move (ai, 1, 4)); 23991 assert_true (ai_move (ai, 6, 4)); 23992 assert_true (ai_move (ai, 3, 5)); 23993 assert_true (ai_move (ai, 4, 6)); 23994 assert_true (ai_move (ai, 3, 6)); 23995 assert_true (ai_move (ai, 5, 4)); 23996 assert_true (ai_move (ai, 6, 2)); 23997 assert_true (ai_move (ai, 2, 7)); 23998 assert_true (ai_move (ai, 6, 5)); 23999 assert_true (ai_move (ai, 7, 2)); 24000 assert_true (ai_move (ai, 7, 3)); 24001 assert_true (ai_move (ai, 7, 4)); 24002 assert_true (ai_move (ai, 6, 1)); 24003 assert_true (ai_move (ai, 0, 4)); 24004 assert_true (ai_move (ai, 0, 1)); 24005 assert_true (ai_move (ai, 7, 1)); 24006 assert_true (ai_move (ai, 0, 6)); 24007 assert_true (ai_move (ai, 1, 6)); 24008 assert_true (ai_move (ai, 4, 7)); 24009 assert_true (ai_move (ai, 3, 7)); 24010 assert_true (ai_move (ai, 5, 7)); 24011 assert_true (ai_move (ai, 6, 7)); 24012 assert_true (ai_move (ai, 3, 0)); 24013 assert_true (ai_move (ai, 1, 0)); 24014 assert_true (ai_move (ai, 0, 0)); 24015 assert_true (ai_move (ai, 1, 1)); 24016 assert_true (ai_move (ai, 6, 0)); 24017 assert_true (game.pass ()); 24018 assert_true (ai_move (ai, 7, 5)); 24019 assert_true (ai_move (ai, 7, 6)); 24020 assert_true (ai_move (ai, 7, 0)); 24021 assert_true (ai_move (ai, 6, 6)); 24022 assert_true (ai_move (ai, 7, 7)); 24023 assert_true (game.pass ()); 24024 assert_true (ai_move (ai, 1, 7)); 24025 } 24026 24027 private static inline void test_complete_reversi_game_305 () 24028 { 24029 /* 0 1 2 3 4 5 6 7 */ 24030 string [] board = {/* 0 */ " . . . . . . . .", 24031 /* 1 */ " . . . . . . . .", 24032 /* 2 */ " . . . . . . . .", 24033 /* 3 */ " . . . D D . . .", 24034 /* 4 */ " . . . L L L L .", 24035 /* 5 */ " . . . . D . D .", 24036 /* 6 */ " . . . . . . . .", 24037 /* 7 */ " . . . . . . . ."}; 24038 24039 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 24040 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 24041 24042 assert_true (ai_move (ai, 2, 5)); 24043 assert_true (ai_move (ai, 2, 2)); 24044 assert_true (ai_move (ai, 3, 2)); 24045 assert_true (ai_move (ai, 4, 6)); 24046 assert_true (ai_move (ai, 1, 2)); 24047 assert_true (ai_move (ai, 4, 2)); 24048 assert_true (ai_move (ai, 5, 6)); 24049 assert_true (ai_move (ai, 3, 6)); 24050 assert_true (ai_move (ai, 5, 1)); 24051 assert_true (ai_move (ai, 1, 4)); 24052 assert_true (ai_move (ai, 5, 2)); 24053 assert_true (ai_move (ai, 2, 4)); 24054 assert_true (ai_move (ai, 2, 3)); 24055 assert_true (ai_move (ai, 2, 1)); 24056 assert_true (ai_move (ai, 1, 3)); 24057 assert_true (ai_move (ai, 0, 4)); 24058 assert_true (ai_move (ai, 4, 1)); 24059 assert_true (ai_move (ai, 6, 2)); 24060 assert_true (ai_move (ai, 3, 1)); 24061 assert_true (ai_move (ai, 2, 0)); 24062 assert_true (ai_move (ai, 0, 5)); 24063 assert_true (ai_move (ai, 5, 0)); 24064 assert_true (ai_move (ai, 1, 5)); 24065 assert_true (ai_move (ai, 3, 5)); 24066 assert_true (ai_move (ai, 7, 2)); 24067 assert_true (ai_move (ai, 5, 3)); 24068 assert_true (ai_move (ai, 0, 3)); 24069 assert_true (ai_move (ai, 5, 5)); 24070 assert_true (ai_move (ai, 5, 7)); 24071 assert_true (ai_move (ai, 2, 6)); 24072 assert_true (ai_move (ai, 2, 7)); 24073 assert_true (ai_move (ai, 0, 2)); 24074 assert_true (ai_move (ai, 0, 1)); 24075 assert_true (ai_move (ai, 4, 0)); 24076 assert_true (ai_move (ai, 7, 3)); 24077 assert_true (ai_move (ai, 7, 5)); 24078 assert_true (ai_move (ai, 4, 7)); 24079 assert_true (ai_move (ai, 3, 7)); 24080 assert_true (ai_move (ai, 6, 3)); 24081 assert_true (ai_move (ai, 7, 4)); 24082 assert_true (ai_move (ai, 7, 6)); 24083 assert_true (ai_move (ai, 7, 1)); 24084 assert_true (ai_move (ai, 7, 0)); 24085 assert_true (ai_move (ai, 1, 6)); 24086 assert_true (ai_move (ai, 6, 0)); 24087 assert_true (ai_move (ai, 6, 1)); 24088 assert_true (ai_move (ai, 3, 0)); 24089 assert_true (ai_move (ai, 1, 7)); 24090 assert_true (ai_move (ai, 0, 7)); 24091 assert_true (ai_move (ai, 0, 6)); 24092 assert_true (ai_move (ai, 1, 1)); 24093 assert_true (ai_move (ai, 0, 0)); 24094 assert_true (ai_move (ai, 1, 0)); 24095 assert_true (ai_move (ai, 6, 7)); 24096 assert_true (ai_move (ai, 7, 7)); 24097 assert_true (ai_move (ai, 6, 6)); 24098 } 24099 24100 private static inline void test_complete_reversi_game_306 () 24101 { 24102 /* 0 1 2 3 4 5 6 7 */ 24103 string [] board = {/* 0 */ " . . . . . . . .", 24104 /* 1 */ " . . . . . . . .", 24105 /* 2 */ " . . . . . . . .", 24106 /* 3 */ " . . . D D . . .", 24107 /* 4 */ " . . . L L D . .", 24108 /* 5 */ " . . . . L . D .", 24109 /* 6 */ " . . . . . L . .", 24110 /* 7 */ " . . . . . . . ."}; 24111 24112 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 24113 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 24114 24115 assert_true (ai_move (ai, 3, 6)); 24116 assert_true (ai_move (ai, 4, 6)); 24117 assert_true (ai_move (ai, 2, 5)); 24118 assert_true (ai_move (ai, 6, 3)); 24119 assert_true (ai_move (ai, 7, 2)); 24120 assert_true (ai_move (ai, 6, 4)); 24121 assert_true (ai_move (ai, 4, 7)); 24122 assert_true (ai_move (ai, 2, 2)); 24123 assert_true (ai_move (ai, 3, 2)); 24124 assert_true (ai_move (ai, 2, 7)); 24125 assert_true (ai_move (ai, 1, 2)); 24126 assert_true (ai_move (ai, 1, 4)); 24127 assert_true (ai_move (ai, 2, 6)); 24128 assert_true (ai_move (ai, 2, 4)); 24129 assert_true (ai_move (ai, 0, 3)); 24130 assert_true (ai_move (ai, 6, 2)); 24131 assert_true (ai_move (ai, 2, 3)); 24132 assert_true (ai_move (ai, 4, 2)); 24133 assert_true (ai_move (ai, 5, 1)); 24134 assert_true (ai_move (ai, 4, 1)); 24135 assert_true (ai_move (ai, 7, 3)); 24136 assert_true (ai_move (ai, 0, 2)); 24137 assert_true (ai_move (ai, 5, 2)); 24138 assert_true (ai_move (ai, 1, 5)); 24139 assert_true (ai_move (ai, 0, 5)); 24140 assert_true (ai_move (ai, 1, 3)); 24141 assert_true (ai_move (ai, 2, 1)); 24142 assert_true (ai_move (ai, 3, 1)); 24143 assert_true (ai_move (ai, 5, 0)); 24144 assert_true (ai_move (ai, 2, 0)); 24145 assert_true (ai_move (ai, 5, 3)); 24146 assert_true (ai_move (ai, 3, 5)); 24147 assert_true (ai_move (ai, 5, 5)); 24148 assert_true (ai_move (ai, 6, 6)); 24149 assert_true (ai_move (ai, 3, 0)); 24150 assert_true (ai_move (ai, 0, 4)); 24151 assert_true (ai_move (ai, 0, 1)); 24152 assert_true (ai_move (ai, 1, 1)); 24153 assert_true (ai_move (ai, 1, 0)); 24154 assert_true (ai_move (ai, 0, 0)); 24155 assert_true (ai_move (ai, 7, 6)); 24156 assert_true (ai_move (ai, 0, 6)); 24157 assert_true (ai_move (ai, 1, 6)); 24158 assert_true (ai_move (ai, 4, 0)); 24159 assert_true (game.pass ()); 24160 assert_true (ai_move (ai, 6, 0)); 24161 assert_true (ai_move (ai, 6, 1)); 24162 assert_true (ai_move (ai, 7, 7)); 24163 assert_true (ai_move (ai, 6, 7)); 24164 assert_true (ai_move (ai, 7, 5)); 24165 assert_true (ai_move (ai, 7, 4)); 24166 assert_true (ai_move (ai, 0, 7)); 24167 assert_true (ai_move (ai, 1, 7)); 24168 assert_true (ai_move (ai, 7, 0)); 24169 assert_true (ai_move (ai, 7, 1)); 24170 assert_true (ai_move (ai, 5, 7)); 24171 assert_true (ai_move (ai, 3, 7)); 24172 } 24173 24174 private static inline void test_complete_reversi_game_307 () 24175 { 24176 /* 0 1 2 3 4 5 6 7 */ 24177 string [] board = {/* 0 */ " . . . . . . . .", 24178 /* 1 */ " . . . . . . . .", 24179 /* 2 */ " . . . . . L . .", 24180 /* 3 */ " . . . D L . . .", 24181 /* 4 */ " . . . L L D . .", 24182 /* 5 */ " . . . . D . D .", 24183 /* 6 */ " . . . . . . . .", 24184 /* 7 */ " . . . . . . . ."}; 24185 24186 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 24187 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 24188 24189 assert_true (ai_move (ai, 5, 5)); 24190 assert_true (ai_move (ai, 5, 6)); 24191 assert_true (ai_move (ai, 5, 7)); 24192 assert_true (ai_move (ai, 6, 3)); 24193 assert_true (ai_move (ai, 4, 6)); 24194 assert_true (ai_move (ai, 3, 6)); 24195 assert_true (ai_move (ai, 3, 5)); 24196 assert_true (ai_move (ai, 4, 7)); 24197 assert_true (ai_move (ai, 3, 7)); 24198 assert_true (ai_move (ai, 7, 5)); 24199 assert_true (ai_move (ai, 6, 4)); 24200 assert_true (ai_move (ai, 5, 3)); 24201 assert_true (ai_move (ai, 5, 1)); 24202 assert_true (ai_move (ai, 4, 1)); 24203 assert_true (ai_move (ai, 3, 2)); 24204 assert_true (ai_move (ai, 5, 0)); 24205 assert_true (ai_move (ai, 7, 2)); 24206 assert_true (ai_move (ai, 7, 4)); 24207 assert_true (ai_move (ai, 6, 1)); 24208 assert_true (ai_move (ai, 4, 2)); 24209 assert_true (ai_move (ai, 4, 0)); 24210 assert_true (ai_move (ai, 2, 1)); 24211 assert_true (ai_move (ai, 3, 1)); 24212 assert_true (ai_move (ai, 2, 7)); 24213 assert_true (ai_move (ai, 1, 7)); 24214 assert_true (ai_move (ai, 2, 0)); 24215 assert_true (ai_move (ai, 6, 0)); 24216 assert_true (ai_move (ai, 2, 6)); 24217 assert_true (ai_move (ai, 2, 4)); 24218 assert_true (ai_move (ai, 2, 2)); 24219 assert_true (ai_move (ai, 1, 2)); 24220 assert_true (ai_move (ai, 1, 3)); 24221 assert_true (ai_move (ai, 6, 2)); 24222 assert_true (ai_move (ai, 1, 5)); 24223 assert_true (ai_move (ai, 2, 5)); 24224 assert_true (ai_move (ai, 3, 0)); 24225 assert_true (ai_move (ai, 1, 0)); 24226 assert_true (ai_move (ai, 0, 2)); 24227 assert_true (ai_move (ai, 1, 4)); 24228 assert_true (ai_move (ai, 2, 3)); 24229 assert_true (ai_move (ai, 0, 5)); 24230 assert_true (ai_move (ai, 0, 4)); 24231 assert_true (ai_move (ai, 7, 3)); 24232 assert_true (ai_move (ai, 6, 6)); 24233 assert_true (ai_move (ai, 0, 3)); 24234 assert_true (ai_move (ai, 0, 6)); 24235 assert_true (ai_move (ai, 7, 7)); 24236 assert_true (ai_move (ai, 0, 1)); 24237 assert_true (ai_move (ai, 7, 6)); 24238 assert_true (ai_move (ai, 6, 7)); 24239 assert_true (ai_move (ai, 1, 1)); 24240 assert_true (ai_move (ai, 0, 7)); 24241 assert_true (ai_move (ai, 1, 6)); 24242 assert_true (ai_move (ai, 7, 0)); 24243 assert_true (ai_move (ai, 7, 1)); 24244 assert_true (ai_move (ai, 0, 0)); 24245 } 24246 24247 private static inline void test_complete_reversi_game_308 () 24248 { 24249 /* 0 1 2 3 4 5 6 7 */ 24250 string [] board = {/* 0 */ " . . . . . . . .", 24251 /* 1 */ " . . . . . . . .", 24252 /* 2 */ " . . . . . . . .", 24253 /* 3 */ " . . . D D . . .", 24254 /* 4 */ " . . . L L D . .", 24255 /* 5 */ " . . . . L . D .", 24256 /* 6 */ " . . . . L . . .", 24257 /* 7 */ " . . . . . . . ."}; 24258 24259 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 24260 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 24261 24262 assert_true (ai_move (ai, 3, 6)); 24263 assert_true (ai_move (ai, 5, 6)); 24264 assert_true (ai_move (ai, 2, 5)); 24265 assert_true (ai_move (ai, 6, 3)); 24266 assert_true (ai_move (ai, 7, 2)); 24267 assert_true (ai_move (ai, 6, 4)); 24268 assert_true (ai_move (ai, 4, 7)); 24269 assert_true (ai_move (ai, 2, 2)); 24270 assert_true (ai_move (ai, 3, 2)); 24271 assert_true (ai_move (ai, 2, 7)); 24272 assert_true (ai_move (ai, 1, 2)); 24273 assert_true (ai_move (ai, 1, 4)); 24274 assert_true (ai_move (ai, 2, 6)); 24275 assert_true (ai_move (ai, 2, 4)); 24276 assert_true (ai_move (ai, 0, 3)); 24277 assert_true (ai_move (ai, 6, 2)); 24278 assert_true (ai_move (ai, 2, 3)); 24279 assert_true (ai_move (ai, 4, 2)); 24280 assert_true (ai_move (ai, 5, 1)); 24281 assert_true (ai_move (ai, 4, 1)); 24282 assert_true (ai_move (ai, 7, 3)); 24283 assert_true (ai_move (ai, 0, 2)); 24284 assert_true (ai_move (ai, 5, 2)); 24285 assert_true (ai_move (ai, 1, 5)); 24286 assert_true (ai_move (ai, 0, 5)); 24287 assert_true (ai_move (ai, 1, 3)); 24288 assert_true (ai_move (ai, 2, 1)); 24289 assert_true (ai_move (ai, 3, 1)); 24290 assert_true (ai_move (ai, 5, 0)); 24291 assert_true (ai_move (ai, 2, 0)); 24292 assert_true (ai_move (ai, 5, 3)); 24293 assert_true (ai_move (ai, 3, 5)); 24294 assert_true (ai_move (ai, 5, 5)); 24295 assert_true (ai_move (ai, 6, 6)); 24296 assert_true (ai_move (ai, 3, 0)); 24297 assert_true (ai_move (ai, 0, 4)); 24298 assert_true (ai_move (ai, 0, 1)); 24299 assert_true (ai_move (ai, 1, 1)); 24300 assert_true (ai_move (ai, 1, 0)); 24301 assert_true (ai_move (ai, 0, 0)); 24302 assert_true (ai_move (ai, 7, 6)); 24303 assert_true (ai_move (ai, 0, 6)); 24304 assert_true (ai_move (ai, 1, 6)); 24305 assert_true (ai_move (ai, 4, 0)); 24306 assert_true (game.pass ()); 24307 assert_true (ai_move (ai, 6, 0)); 24308 assert_true (ai_move (ai, 6, 1)); 24309 assert_true (ai_move (ai, 7, 7)); 24310 assert_true (ai_move (ai, 6, 7)); 24311 assert_true (ai_move (ai, 7, 5)); 24312 assert_true (ai_move (ai, 7, 4)); 24313 assert_true (ai_move (ai, 0, 7)); 24314 assert_true (ai_move (ai, 1, 7)); 24315 assert_true (ai_move (ai, 7, 0)); 24316 assert_true (ai_move (ai, 7, 1)); 24317 assert_true (ai_move (ai, 5, 7)); 24318 assert_true (ai_move (ai, 3, 7)); 24319 } 24320 24321 private static inline void test_complete_reversi_game_309 () 24322 { 24323 /* 0 1 2 3 4 5 6 7 */ 24324 string [] board = {/* 0 */ " . . . . . . . .", 24325 /* 1 */ " . . . . . . . .", 24326 /* 2 */ " . . . . L . . .", 24327 /* 3 */ " . . . D L . . .", 24328 /* 4 */ " . . . L L D . .", 24329 /* 5 */ " . . . . D . D .", 24330 /* 6 */ " . . . . . . . .", 24331 /* 7 */ " . . . . . . . ."}; 24332 24333 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 24334 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 24335 24336 assert_true (ai_move (ai, 5, 1)); 24337 assert_true (ai_move (ai, 6, 4)); 24338 assert_true (ai_move (ai, 2, 3)); 24339 assert_true (ai_move (ai, 4, 1)); 24340 assert_true (ai_move (ai, 3, 2)); 24341 assert_true (ai_move (ai, 1, 4)); 24342 assert_true (ai_move (ai, 5, 5)); 24343 assert_true (ai_move (ai, 5, 6)); 24344 assert_true (ai_move (ai, 4, 6)); 24345 assert_true (ai_move (ai, 7, 4)); 24346 assert_true (ai_move (ai, 7, 5)); 24347 assert_true (ai_move (ai, 5, 2)); 24348 assert_true (ai_move (ai, 5, 7)); 24349 assert_true (ai_move (ai, 5, 0)); 24350 assert_true (ai_move (ai, 7, 3)); 24351 assert_true (ai_move (ai, 2, 4)); 24352 assert_true (ai_move (ai, 2, 2)); 24353 assert_true (ai_move (ai, 2, 1)); 24354 assert_true (ai_move (ai, 5, 3)); 24355 assert_true (ai_move (ai, 6, 3)); 24356 assert_true (ai_move (ai, 6, 2)); 24357 assert_true (ai_move (ai, 7, 2)); 24358 assert_true (ai_move (ai, 7, 1)); 24359 assert_true (ai_move (ai, 4, 7)); 24360 assert_true (ai_move (ai, 3, 1)); 24361 assert_true (ai_move (ai, 3, 0)); 24362 assert_true (ai_move (ai, 4, 0)); 24363 assert_true (ai_move (ai, 6, 7)); 24364 assert_true (ai_move (ai, 1, 2)); 24365 assert_true (ai_move (ai, 1, 3)); 24366 assert_true (ai_move (ai, 0, 3)); 24367 assert_true (ai_move (ai, 0, 4)); 24368 assert_true (ai_move (ai, 0, 5)); 24369 assert_true (ai_move (ai, 0, 2)); 24370 assert_true (ai_move (ai, 0, 1)); 24371 assert_true (ai_move (ai, 1, 5)); 24372 assert_true (ai_move (ai, 2, 6)); 24373 assert_true (ai_move (ai, 6, 6)); 24374 assert_true (ai_move (ai, 3, 7)); 24375 assert_true (ai_move (ai, 2, 7)); 24376 assert_true (ai_move (ai, 3, 6)); 24377 assert_true (ai_move (ai, 7, 6)); 24378 assert_true (ai_move (ai, 7, 7)); 24379 assert_true (ai_move (ai, 3, 5)); 24380 assert_true (ai_move (ai, 1, 7)); 24381 assert_true (ai_move (ai, 6, 1)); 24382 assert_true (ai_move (ai, 2, 5)); 24383 assert_true (ai_move (ai, 1, 6)); 24384 assert_true (ai_move (ai, 1, 0)); 24385 assert_true (ai_move (ai, 2, 0)); 24386 assert_true (ai_move (ai, 7, 0)); 24387 assert_true (ai_move (ai, 0, 0)); 24388 assert_true (ai_move (ai, 6, 0)); 24389 assert_true (ai_move (ai, 0, 6)); 24390 assert_true (ai_move (ai, 0, 7)); 24391 assert_true (ai_move (ai, 1, 1)); 24392 } 24393 24394 private static inline void test_complete_reversi_game_310 () 24395 { 24396 /* 0 1 2 3 4 5 6 7 */ 24397 string [] board = {/* 0 */ " . . . . . . . .", 24398 /* 1 */ " . . . . . . . .", 24399 /* 2 */ " . . . L . . . .", 24400 /* 3 */ " . . . L D . . .", 24401 /* 4 */ " . . . L L D . .", 24402 /* 5 */ " . . . . D . D .", 24403 /* 6 */ " . . . . . . . .", 24404 /* 7 */ " . . . . . . . ."}; 24405 24406 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 24407 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 24408 24409 assert_true (ai_move (ai, 2, 1)); 24410 assert_true (ai_move (ai, 6, 4)); 24411 assert_true (ai_move (ai, 2, 5)); 24412 assert_true (ai_move (ai, 3, 1)); 24413 assert_true (ai_move (ai, 6, 3)); 24414 assert_true (ai_move (ai, 2, 4)); 24415 assert_true (ai_move (ai, 4, 1)); 24416 assert_true (ai_move (ai, 2, 6)); 24417 assert_true (ai_move (ai, 2, 3)); 24418 assert_true (ai_move (ai, 4, 6)); 24419 assert_true (ai_move (ai, 5, 6)); 24420 assert_true (ai_move (ai, 7, 4)); 24421 assert_true (ai_move (ai, 1, 4)); 24422 assert_true (ai_move (ai, 3, 6)); 24423 assert_true (ai_move (ai, 2, 7)); 24424 assert_true (ai_move (ai, 4, 7)); 24425 assert_true (ai_move (ai, 7, 6)); 24426 assert_true (ai_move (ai, 5, 2)); 24427 assert_true (ai_move (ai, 7, 2)); 24428 assert_true (ai_move (ai, 3, 0)); 24429 assert_true (ai_move (ai, 5, 0)); 24430 assert_true (ai_move (ai, 6, 2)); 24431 assert_true (ai_move (ai, 4, 2)); 24432 assert_true (ai_move (ai, 0, 3)); 24433 assert_true (ai_move (ai, 0, 5)); 24434 assert_true (ai_move (ai, 2, 2)); 24435 assert_true (ai_move (ai, 1, 2)); 24436 assert_true (ai_move (ai, 1, 3)); 24437 assert_true (ai_move (ai, 1, 5)); 24438 assert_true (ai_move (ai, 3, 5)); 24439 assert_true (ai_move (ai, 5, 3)); 24440 assert_true (ai_move (ai, 2, 0)); 24441 assert_true (ai_move (ai, 7, 3)); 24442 assert_true (ai_move (ai, 7, 1)); 24443 assert_true (ai_move (ai, 3, 7)); 24444 assert_true (ai_move (ai, 5, 5)); 24445 assert_true (ai_move (ai, 1, 6)); 24446 assert_true (ai_move (ai, 5, 1)); 24447 assert_true (ai_move (ai, 5, 7)); 24448 assert_true (ai_move (ai, 0, 2)); 24449 assert_true (ai_move (ai, 4, 0)); 24450 assert_true (ai_move (ai, 6, 0)); 24451 assert_true (ai_move (ai, 6, 1)); 24452 assert_true (ai_move (ai, 6, 6)); 24453 assert_true (ai_move (ai, 1, 0)); 24454 assert_true (ai_move (ai, 0, 0)); 24455 assert_true (ai_move (ai, 0, 1)); 24456 assert_true (ai_move (ai, 0, 4)); 24457 assert_true (ai_move (ai, 7, 5)); 24458 assert_true (ai_move (ai, 7, 7)); 24459 assert_true (ai_move (ai, 6, 7)); 24460 assert_true (ai_move (ai, 1, 1)); 24461 assert_true (game.pass ()); 24462 assert_true (ai_move (ai, 1, 7)); 24463 assert_true (ai_move (ai, 0, 7)); 24464 assert_true (ai_move (ai, 0, 6)); 24465 assert_true (game.pass ()); 24466 assert_true (ai_move (ai, 7, 0)); 24467 } 24468 24469 private static inline void test_complete_reversi_game_311 () 24470 { 24471 /* 0 1 2 3 4 5 6 7 */ 24472 string [] board = {/* 0 */ " . . . . . . . .", 24473 /* 1 */ " . . . . . . . .", 24474 /* 2 */ " . . L . . . . .", 24475 /* 3 */ " . . . L D . . .", 24476 /* 4 */ " . . . L L D . .", 24477 /* 5 */ " . . . . D . D .", 24478 /* 6 */ " . . . . . . . .", 24479 /* 7 */ " . . . . . . . ."}; 24480 24481 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 24482 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 24483 24484 assert_true (ai_move (ai, 2, 5)); 24485 assert_true (ai_move (ai, 2, 4)); 24486 assert_true (ai_move (ai, 2, 3)); 24487 assert_true (ai_move (ai, 6, 4)); 24488 assert_true (ai_move (ai, 2, 1)); 24489 assert_true (ai_move (ai, 4, 6)); 24490 assert_true (ai_move (ai, 5, 6)); 24491 assert_true (ai_move (ai, 3, 6)); 24492 assert_true (ai_move (ai, 6, 3)); 24493 assert_true (ai_move (ai, 7, 4)); 24494 assert_true (ai_move (ai, 2, 7)); 24495 assert_true (ai_move (ai, 5, 2)); 24496 assert_true (ai_move (ai, 4, 7)); 24497 assert_true (ai_move (ai, 4, 2)); 24498 assert_true (ai_move (ai, 7, 2)); 24499 assert_true (ai_move (ai, 6, 2)); 24500 assert_true (ai_move (ai, 3, 2)); 24501 assert_true (ai_move (ai, 1, 4)); 24502 assert_true (ai_move (ai, 1, 5)); 24503 assert_true (ai_move (ai, 1, 2)); 24504 assert_true (ai_move (ai, 1, 3)); 24505 assert_true (ai_move (ai, 3, 1)); 24506 assert_true (ai_move (ai, 0, 2)); 24507 assert_true (ai_move (ai, 5, 1)); 24508 assert_true (ai_move (ai, 5, 0)); 24509 assert_true (ai_move (ai, 0, 5)); 24510 assert_true (ai_move (ai, 0, 3)); 24511 assert_true (ai_move (ai, 3, 5)); 24512 assert_true (ai_move (ai, 2, 6)); 24513 assert_true (ai_move (ai, 0, 4)); 24514 assert_true (ai_move (ai, 0, 6)); 24515 assert_true (ai_move (ai, 4, 1)); 24516 assert_true (ai_move (ai, 3, 0)); 24517 assert_true (ai_move (ai, 4, 0)); 24518 assert_true (ai_move (ai, 5, 5)); 24519 assert_true (ai_move (ai, 7, 5)); 24520 assert_true (ai_move (ai, 5, 3)); 24521 assert_true (ai_move (ai, 2, 0)); 24522 assert_true (ai_move (ai, 1, 0)); 24523 assert_true (ai_move (ai, 5, 7)); 24524 assert_true (ai_move (ai, 1, 1)); 24525 assert_true (ai_move (ai, 3, 7)); 24526 assert_true (ai_move (ai, 6, 7)); 24527 assert_true (ai_move (ai, 0, 0)); 24528 assert_true (ai_move (ai, 7, 3)); 24529 assert_true (ai_move (ai, 6, 0)); 24530 assert_true (ai_move (ai, 7, 6)); 24531 assert_true (ai_move (ai, 6, 6)); 24532 assert_true (ai_move (ai, 6, 1)); 24533 assert_true (ai_move (ai, 0, 1)); 24534 assert_true (game.pass ()); 24535 assert_true (ai_move (ai, 0, 7)); 24536 assert_true (game.pass ()); 24537 assert_true (ai_move (ai, 1, 7)); 24538 assert_true (ai_move (ai, 1, 6)); 24539 assert_true (ai_move (ai, 7, 7)); 24540 assert_true (game.pass ()); 24541 assert_true (ai_move (ai, 7, 1)); 24542 assert_true (ai_move (ai, 7, 0)); 24543 } 24544 24545 private static inline void test_complete_reversi_game_312 () 24546 { 24547 /* 0 1 2 3 4 5 6 7 */ 24548 string [] board = {/* 0 */ " . . . . . . . .", 24549 /* 1 */ " . . . . . . . .", 24550 /* 2 */ " . . . . . . . .", 24551 /* 3 */ " . . . D D . D .", 24552 /* 4 */ " . . . L L L L .", 24553 /* 5 */ " . . . . D . . .", 24554 /* 6 */ " . . . . . . . .", 24555 /* 7 */ " . . . . . . . ."}; 24556 24557 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 24558 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 24559 24560 assert_true (ai_move (ai, 2, 5)); 24561 assert_true (ai_move (ai, 4, 6)); 24562 assert_true (ai_move (ai, 3, 6)); 24563 assert_true (ai_move (ai, 2, 6)); 24564 assert_true (ai_move (ai, 2, 7)); 24565 assert_true (ai_move (ai, 6, 2)); 24566 assert_true (ai_move (ai, 5, 5)); 24567 assert_true (ai_move (ai, 2, 4)); 24568 assert_true (ai_move (ai, 6, 5)); 24569 assert_true (ai_move (ai, 5, 6)); 24570 assert_true (ai_move (ai, 5, 7)); 24571 assert_true (ai_move (ai, 7, 5)); 24572 assert_true (ai_move (ai, 1, 5)); 24573 assert_true (ai_move (ai, 1, 4)); 24574 assert_true (ai_move (ai, 6, 6)); 24575 assert_true (ai_move (ai, 5, 2)); 24576 assert_true (ai_move (ai, 3, 7)); 24577 assert_true (ai_move (ai, 0, 6)); 24578 assert_true (ai_move (ai, 0, 5)); 24579 assert_true (ai_move (ai, 0, 4)); 24580 assert_true (ai_move (ai, 3, 5)); 24581 assert_true (ai_move (ai, 4, 7)); 24582 assert_true (ai_move (ai, 2, 3)); 24583 assert_true (ai_move (ai, 5, 3)); 24584 assert_true (ai_move (ai, 7, 2)); 24585 assert_true (ai_move (ai, 7, 4)); 24586 assert_true (ai_move (ai, 5, 1)); 24587 assert_true (ai_move (ai, 4, 1)); 24588 assert_true (ai_move (ai, 7, 6)); 24589 assert_true (ai_move (ai, 1, 6)); 24590 assert_true (ai_move (ai, 3, 2)); 24591 assert_true (ai_move (ai, 1, 7)); 24592 assert_true (ai_move (ai, 7, 3)); 24593 assert_true (ai_move (ai, 1, 3)); 24594 assert_true (ai_move (ai, 0, 2)); 24595 assert_true (ai_move (ai, 5, 0)); 24596 assert_true (ai_move (ai, 4, 2)); 24597 assert_true (ai_move (ai, 3, 1)); 24598 assert_true (ai_move (ai, 2, 2)); 24599 assert_true (ai_move (ai, 2, 1)); 24600 assert_true (ai_move (ai, 1, 1)); 24601 assert_true (ai_move (ai, 6, 7)); 24602 assert_true (ai_move (ai, 7, 7)); 24603 assert_true (ai_move (ai, 6, 1)); 24604 assert_true (ai_move (ai, 1, 2)); 24605 assert_true (ai_move (ai, 0, 3)); 24606 assert_true (ai_move (ai, 0, 7)); 24607 assert_true (ai_move (ai, 0, 0)); 24608 assert_true (ai_move (ai, 7, 1)); 24609 assert_true (game.pass ()); 24610 assert_true (ai_move (ai, 7, 0)); 24611 assert_true (ai_move (ai, 6, 0)); 24612 assert_true (ai_move (ai, 4, 0)); 24613 assert_true (ai_move (ai, 3, 0)); 24614 assert_true (ai_move (ai, 2, 0)); 24615 assert_true (ai_move (ai, 0, 1)); 24616 assert_true (ai_move (ai, 1, 0)); 24617 } 24618 24619 private static inline void test_complete_reversi_game_313 () 24620 { 24621 /* 0 1 2 3 4 5 6 7 */ 24622 string [] board = {/* 0 */ " . . . . . . . .", 24623 /* 1 */ " . . . . . . . .", 24624 /* 2 */ " . . . . . . . .", 24625 /* 3 */ " . . . D D . D .", 24626 /* 4 */ " . . . L L D . .", 24627 /* 5 */ " . . . . L . . .", 24628 /* 6 */ " . . . . . L . .", 24629 /* 7 */ " . . . . . . . ."}; 24630 24631 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 24632 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 24633 24634 assert_true (ai_move (ai, 3, 6)); 24635 assert_true (ai_move (ai, 4, 6)); 24636 assert_true (ai_move (ai, 2, 5)); 24637 assert_true (ai_move (ai, 6, 4)); 24638 assert_true (ai_move (ai, 6, 5)); 24639 assert_true (ai_move (ai, 2, 2)); 24640 assert_true (ai_move (ai, 3, 2)); 24641 assert_true (ai_move (ai, 2, 7)); 24642 assert_true (ai_move (ai, 1, 2)); 24643 assert_true (ai_move (ai, 1, 4)); 24644 assert_true (ai_move (ai, 6, 7)); 24645 assert_true (ai_move (ai, 7, 4)); 24646 assert_true (ai_move (ai, 2, 6)); 24647 assert_true (ai_move (ai, 2, 4)); 24648 assert_true (ai_move (ai, 0, 3)); 24649 assert_true (ai_move (ai, 7, 2)); 24650 assert_true (ai_move (ai, 2, 3)); 24651 assert_true (ai_move (ai, 4, 2)); 24652 assert_true (ai_move (ai, 5, 2)); 24653 assert_true (ai_move (ai, 4, 1)); 24654 assert_true (ai_move (ai, 5, 1)); 24655 assert_true (ai_move (ai, 5, 0)); 24656 assert_true (ai_move (ai, 4, 0)); 24657 assert_true (ai_move (ai, 1, 3)); 24658 assert_true (ai_move (ai, 0, 2)); 24659 assert_true (ai_move (ai, 3, 0)); 24660 assert_true (ai_move (ai, 5, 3)); 24661 assert_true (ai_move (ai, 3, 1)); 24662 assert_true (ai_move (ai, 7, 3)); 24663 assert_true (ai_move (ai, 6, 2)); 24664 assert_true (ai_move (ai, 7, 5)); 24665 assert_true (ai_move (ai, 7, 6)); 24666 assert_true (ai_move (ai, 5, 5)); 24667 assert_true (ai_move (ai, 5, 7)); 24668 assert_true (ai_move (ai, 4, 7)); 24669 assert_true (ai_move (ai, 0, 5)); 24670 assert_true (ai_move (ai, 2, 1)); 24671 assert_true (ai_move (ai, 2, 0)); 24672 assert_true (ai_move (ai, 1, 5)); 24673 assert_true (ai_move (ai, 3, 5)); 24674 assert_true (ai_move (ai, 0, 4)); 24675 assert_true (ai_move (ai, 0, 1)); 24676 assert_true (ai_move (ai, 1, 6)); 24677 assert_true (ai_move (ai, 0, 7)); 24678 assert_true (ai_move (ai, 1, 7)); 24679 assert_true (ai_move (ai, 3, 7)); 24680 assert_true (ai_move (ai, 6, 1)); 24681 assert_true (ai_move (ai, 0, 6)); 24682 assert_true (ai_move (ai, 7, 1)); 24683 assert_true (ai_move (ai, 7, 7)); 24684 assert_true (ai_move (ai, 1, 0)); 24685 assert_true (ai_move (ai, 0, 0)); 24686 assert_true (ai_move (ai, 1, 1)); 24687 assert_true (ai_move (ai, 7, 0)); 24688 assert_true (ai_move (ai, 6, 0)); 24689 assert_true (game.pass ()); 24690 assert_true (ai_move (ai, 6, 6)); 24691 } 24692 24693 private static inline void test_complete_reversi_game_314 () 24694 { 24695 /* 0 1 2 3 4 5 6 7 */ 24696 string [] board = {/* 0 */ " . . . . . . . .", 24697 /* 1 */ " . . . . . . . .", 24698 /* 2 */ " . . . . . L . .", 24699 /* 3 */ " . . . D L . D .", 24700 /* 4 */ " . . . L L D . .", 24701 /* 5 */ " . . . . D . . .", 24702 /* 6 */ " . . . . . . . .", 24703 /* 7 */ " . . . . . . . ."}; 24704 24705 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 24706 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 24707 24708 assert_true (ai_move (ai, 4, 1)); 24709 assert_true (ai_move (ai, 6, 5)); 24710 assert_true (ai_move (ai, 2, 3)); 24711 assert_true (ai_move (ai, 3, 6)); 24712 assert_true (ai_move (ai, 5, 6)); 24713 assert_true (ai_move (ai, 4, 6)); 24714 assert_true (ai_move (ai, 7, 4)); 24715 assert_true (ai_move (ai, 7, 2)); 24716 assert_true (ai_move (ai, 6, 4)); 24717 assert_true (ai_move (ai, 2, 5)); 24718 assert_true (ai_move (ai, 5, 3)); 24719 assert_true (ai_move (ai, 1, 2)); 24720 assert_true (ai_move (ai, 6, 2)); 24721 assert_true (ai_move (ai, 3, 2)); 24722 assert_true (ai_move (ai, 2, 1)); 24723 assert_true (ai_move (ai, 3, 1)); 24724 assert_true (ai_move (ai, 0, 3)); 24725 assert_true (ai_move (ai, 5, 0)); 24726 assert_true (ai_move (ai, 3, 0)); 24727 assert_true (ai_move (ai, 5, 1)); 24728 assert_true (ai_move (ai, 2, 7)); 24729 assert_true (ai_move (ai, 4, 7)); 24730 assert_true (ai_move (ai, 2, 4)); 24731 assert_true (ai_move (ai, 1, 5)); 24732 assert_true (ai_move (ai, 1, 4)); 24733 assert_true (ai_move (ai, 0, 5)); 24734 assert_true (ai_move (ai, 0, 4)); 24735 assert_true (ai_move (ai, 0, 2)); 24736 assert_true (ai_move (ai, 2, 6)); 24737 assert_true (ai_move (ai, 1, 3)); 24738 assert_true (ai_move (ai, 4, 0)); 24739 assert_true (ai_move (ai, 2, 0)); 24740 assert_true (ai_move (ai, 2, 2)); 24741 assert_true (ai_move (ai, 1, 0)); 24742 assert_true (ai_move (ai, 4, 2)); 24743 assert_true (ai_move (ai, 7, 5)); 24744 assert_true (ai_move (ai, 1, 6)); 24745 assert_true (ai_move (ai, 6, 0)); 24746 assert_true (ai_move (ai, 7, 6)); 24747 assert_true (ai_move (ai, 7, 1)); 24748 assert_true (ai_move (ai, 6, 1)); 24749 assert_true (ai_move (ai, 3, 5)); 24750 assert_true (ai_move (ai, 5, 5)); 24751 assert_true (ai_move (ai, 7, 0)); 24752 assert_true (ai_move (ai, 0, 6)); 24753 assert_true (ai_move (ai, 0, 7)); 24754 assert_true (ai_move (ai, 1, 7)); 24755 assert_true (ai_move (ai, 3, 7)); 24756 assert_true (ai_move (ai, 5, 7)); 24757 assert_true (ai_move (ai, 7, 3)); 24758 assert_true (ai_move (ai, 6, 6)); 24759 assert_true (ai_move (ai, 0, 1)); 24760 assert_true (ai_move (ai, 1, 1)); 24761 assert_true (ai_move (ai, 6, 7)); 24762 assert_true (ai_move (ai, 7, 7)); 24763 } 24764 24765 private static inline void test_complete_reversi_game_315 () 24766 { 24767 /* 0 1 2 3 4 5 6 7 */ 24768 string [] board = {/* 0 */ " . . . . . . . .", 24769 /* 1 */ " . . . . . . . .", 24770 /* 2 */ " . . . . . . . .", 24771 /* 3 */ " . . . D D . D .", 24772 /* 4 */ " . . . L L D . .", 24773 /* 5 */ " . . . . L . . .", 24774 /* 6 */ " . . . . L . . .", 24775 /* 7 */ " . . . . . . . ."}; 24776 24777 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 24778 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 24779 24780 assert_true (ai_move (ai, 3, 6)); 24781 assert_true (ai_move (ai, 5, 6)); 24782 assert_true (ai_move (ai, 2, 5)); 24783 assert_true (ai_move (ai, 6, 4)); 24784 assert_true (ai_move (ai, 6, 5)); 24785 assert_true (ai_move (ai, 2, 2)); 24786 assert_true (ai_move (ai, 3, 2)); 24787 assert_true (ai_move (ai, 2, 7)); 24788 assert_true (ai_move (ai, 1, 2)); 24789 assert_true (ai_move (ai, 1, 4)); 24790 assert_true (ai_move (ai, 6, 7)); 24791 assert_true (ai_move (ai, 7, 4)); 24792 assert_true (ai_move (ai, 2, 6)); 24793 assert_true (ai_move (ai, 2, 4)); 24794 assert_true (ai_move (ai, 0, 3)); 24795 assert_true (ai_move (ai, 7, 2)); 24796 assert_true (ai_move (ai, 2, 3)); 24797 assert_true (ai_move (ai, 4, 2)); 24798 assert_true (ai_move (ai, 5, 2)); 24799 assert_true (ai_move (ai, 4, 1)); 24800 assert_true (ai_move (ai, 5, 1)); 24801 assert_true (ai_move (ai, 5, 0)); 24802 assert_true (ai_move (ai, 4, 0)); 24803 assert_true (ai_move (ai, 1, 3)); 24804 assert_true (ai_move (ai, 0, 2)); 24805 assert_true (ai_move (ai, 3, 0)); 24806 assert_true (ai_move (ai, 5, 3)); 24807 assert_true (ai_move (ai, 3, 1)); 24808 assert_true (ai_move (ai, 7, 3)); 24809 assert_true (ai_move (ai, 6, 2)); 24810 assert_true (ai_move (ai, 7, 5)); 24811 assert_true (ai_move (ai, 7, 6)); 24812 assert_true (ai_move (ai, 5, 5)); 24813 assert_true (ai_move (ai, 5, 7)); 24814 assert_true (ai_move (ai, 4, 7)); 24815 assert_true (ai_move (ai, 0, 5)); 24816 assert_true (ai_move (ai, 2, 1)); 24817 assert_true (ai_move (ai, 2, 0)); 24818 assert_true (ai_move (ai, 1, 5)); 24819 assert_true (ai_move (ai, 3, 5)); 24820 assert_true (ai_move (ai, 0, 4)); 24821 assert_true (ai_move (ai, 0, 1)); 24822 assert_true (ai_move (ai, 1, 6)); 24823 assert_true (ai_move (ai, 0, 7)); 24824 assert_true (ai_move (ai, 1, 7)); 24825 assert_true (ai_move (ai, 3, 7)); 24826 assert_true (ai_move (ai, 6, 1)); 24827 assert_true (ai_move (ai, 0, 6)); 24828 assert_true (ai_move (ai, 7, 1)); 24829 assert_true (ai_move (ai, 7, 7)); 24830 assert_true (ai_move (ai, 1, 0)); 24831 assert_true (ai_move (ai, 0, 0)); 24832 assert_true (ai_move (ai, 1, 1)); 24833 assert_true (ai_move (ai, 7, 0)); 24834 assert_true (ai_move (ai, 6, 0)); 24835 assert_true (game.pass ()); 24836 assert_true (ai_move (ai, 6, 6)); 24837 } 24838 24839 private static inline void test_complete_reversi_game_316 () 24840 { 24841 /* 0 1 2 3 4 5 6 7 */ 24842 string [] board = {/* 0 */ " . . . . . . . .", 24843 /* 1 */ " . . . . . . . .", 24844 /* 2 */ " . . . . L . . .", 24845 /* 3 */ " . . . D L . D .", 24846 /* 4 */ " . . . L L D . .", 24847 /* 5 */ " . . . . D . . .", 24848 /* 6 */ " . . . . . . . .", 24849 /* 7 */ " . . . . . . . ."}; 24850 24851 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 24852 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 24853 24854 assert_true (ai_move (ai, 5, 1)); 24855 assert_true (ai_move (ai, 6, 5)); 24856 assert_true (ai_move (ai, 2, 3)); 24857 assert_true (ai_move (ai, 4, 1)); 24858 assert_true (ai_move (ai, 3, 1)); 24859 assert_true (ai_move (ai, 3, 6)); 24860 assert_true (ai_move (ai, 5, 6)); 24861 assert_true (ai_move (ai, 4, 6)); 24862 assert_true (ai_move (ai, 7, 4)); 24863 assert_true (ai_move (ai, 7, 2)); 24864 assert_true (ai_move (ai, 3, 2)); 24865 assert_true (ai_move (ai, 6, 4)); 24866 assert_true (ai_move (ai, 5, 2)); 24867 assert_true (ai_move (ai, 2, 4)); 24868 assert_true (ai_move (ai, 1, 5)); 24869 assert_true (ai_move (ai, 1, 4)); 24870 assert_true (ai_move (ai, 0, 5)); 24871 assert_true (ai_move (ai, 1, 2)); 24872 assert_true (ai_move (ai, 1, 3)); 24873 assert_true (ai_move (ai, 0, 2)); 24874 assert_true (ai_move (ai, 0, 3)); 24875 assert_true (ai_move (ai, 2, 2)); 24876 assert_true (ai_move (ai, 2, 1)); 24877 assert_true (ai_move (ai, 5, 0)); 24878 assert_true (ai_move (ai, 2, 5)); 24879 assert_true (ai_move (ai, 3, 0)); 24880 assert_true (ai_move (ai, 2, 0)); 24881 assert_true (ai_move (ai, 6, 2)); 24882 assert_true (ai_move (ai, 5, 3)); 24883 assert_true (ai_move (ai, 4, 0)); 24884 assert_true (ai_move (ai, 6, 0)); 24885 assert_true (ai_move (ai, 7, 6)); 24886 assert_true (ai_move (ai, 5, 5)); 24887 assert_true (ai_move (ai, 4, 7)); 24888 assert_true (ai_move (ai, 5, 7)); 24889 assert_true (ai_move (ai, 3, 5)); 24890 assert_true (ai_move (ai, 0, 4)); 24891 assert_true (ai_move (ai, 0, 6)); 24892 assert_true (ai_move (ai, 2, 7)); 24893 assert_true (ai_move (ai, 3, 7)); 24894 assert_true (ai_move (ai, 2, 6)); 24895 assert_true (ai_move (ai, 0, 1)); 24896 assert_true (ai_move (ai, 7, 3)); 24897 assert_true (ai_move (ai, 7, 5)); 24898 assert_true (ai_move (ai, 6, 6)); 24899 assert_true (ai_move (ai, 7, 1)); 24900 assert_true (ai_move (ai, 1, 1)); 24901 assert_true (ai_move (ai, 7, 7)); 24902 assert_true (ai_move (ai, 6, 7)); 24903 assert_true (ai_move (ai, 0, 0)); 24904 assert_true (ai_move (ai, 6, 1)); 24905 assert_true (ai_move (ai, 1, 0)); 24906 assert_true (ai_move (ai, 1, 6)); 24907 assert_true (ai_move (ai, 7, 0)); 24908 assert_true (game.pass ()); 24909 assert_true (ai_move (ai, 1, 7)); 24910 assert_true (ai_move (ai, 0, 7)); 24911 } 24912 24913 private static inline void test_complete_reversi_game_317 () 24914 { 24915 /* 0 1 2 3 4 5 6 7 */ 24916 string [] board = {/* 0 */ " . . . . . . . .", 24917 /* 1 */ " . . . . . . . .", 24918 /* 2 */ " . . . L . . . .", 24919 /* 3 */ " . . . L D . D .", 24920 /* 4 */ " . . . L L D . .", 24921 /* 5 */ " . . . . D . . .", 24922 /* 6 */ " . . . . . . . .", 24923 /* 7 */ " . . . . . . . ."}; 24924 24925 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 24926 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 24927 24928 assert_true (ai_move (ai, 2, 1)); 24929 assert_true (ai_move (ai, 6, 4)); 24930 assert_true (ai_move (ai, 2, 5)); 24931 assert_true (ai_move (ai, 3, 1)); 24932 assert_true (ai_move (ai, 6, 5)); 24933 assert_true (ai_move (ai, 2, 4)); 24934 assert_true (ai_move (ai, 4, 1)); 24935 assert_true (ai_move (ai, 2, 6)); 24936 assert_true (ai_move (ai, 2, 3)); 24937 assert_true (ai_move (ai, 4, 6)); 24938 assert_true (ai_move (ai, 5, 6)); 24939 assert_true (ai_move (ai, 7, 4)); 24940 assert_true (ai_move (ai, 1, 4)); 24941 assert_true (ai_move (ai, 3, 6)); 24942 assert_true (ai_move (ai, 2, 7)); 24943 assert_true (ai_move (ai, 4, 7)); 24944 assert_true (ai_move (ai, 7, 6)); 24945 assert_true (ai_move (ai, 5, 2)); 24946 assert_true (ai_move (ai, 7, 2)); 24947 assert_true (ai_move (ai, 3, 0)); 24948 assert_true (ai_move (ai, 5, 0)); 24949 assert_true (ai_move (ai, 6, 2)); 24950 assert_true (ai_move (ai, 4, 2)); 24951 assert_true (ai_move (ai, 0, 3)); 24952 assert_true (ai_move (ai, 0, 5)); 24953 assert_true (ai_move (ai, 2, 2)); 24954 assert_true (ai_move (ai, 1, 2)); 24955 assert_true (ai_move (ai, 1, 3)); 24956 assert_true (ai_move (ai, 1, 5)); 24957 assert_true (ai_move (ai, 3, 5)); 24958 assert_true (ai_move (ai, 5, 3)); 24959 assert_true (ai_move (ai, 2, 0)); 24960 assert_true (ai_move (ai, 7, 3)); 24961 assert_true (ai_move (ai, 7, 1)); 24962 assert_true (ai_move (ai, 3, 7)); 24963 assert_true (ai_move (ai, 5, 5)); 24964 assert_true (ai_move (ai, 1, 6)); 24965 assert_true (ai_move (ai, 5, 1)); 24966 assert_true (ai_move (ai, 5, 7)); 24967 assert_true (ai_move (ai, 0, 2)); 24968 assert_true (ai_move (ai, 4, 0)); 24969 assert_true (ai_move (ai, 6, 0)); 24970 assert_true (ai_move (ai, 6, 1)); 24971 assert_true (ai_move (ai, 6, 6)); 24972 assert_true (ai_move (ai, 1, 0)); 24973 assert_true (ai_move (ai, 0, 0)); 24974 assert_true (ai_move (ai, 0, 1)); 24975 assert_true (ai_move (ai, 0, 4)); 24976 assert_true (ai_move (ai, 7, 5)); 24977 assert_true (ai_move (ai, 7, 7)); 24978 assert_true (ai_move (ai, 6, 7)); 24979 assert_true (ai_move (ai, 1, 1)); 24980 assert_true (game.pass ()); 24981 assert_true (ai_move (ai, 1, 7)); 24982 assert_true (ai_move (ai, 0, 7)); 24983 assert_true (ai_move (ai, 0, 6)); 24984 assert_true (game.pass ()); 24985 assert_true (ai_move (ai, 7, 0)); 24986 } 24987 24988 private static inline void test_complete_reversi_game_318 () 24989 { 24990 /* 0 1 2 3 4 5 6 7 */ 24991 string [] board = {/* 0 */ " . . . . . . . .", 24992 /* 1 */ " . . . . . . . .", 24993 /* 2 */ " . . L . . . . .", 24994 /* 3 */ " . . . L D . D .", 24995 /* 4 */ " . . . L L D . .", 24996 /* 5 */ " . . . . D . . .", 24997 /* 6 */ " . . . . . . . .", 24998 /* 7 */ " . . . . . . . ."}; 24999 25000 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 25001 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 25002 25003 assert_true (ai_move (ai, 2, 5)); 25004 assert_true (ai_move (ai, 2, 4)); 25005 assert_true (ai_move (ai, 2, 3)); 25006 assert_true (ai_move (ai, 6, 4)); 25007 assert_true (ai_move (ai, 2, 1)); 25008 assert_true (ai_move (ai, 4, 6)); 25009 assert_true (ai_move (ai, 3, 6)); 25010 assert_true (ai_move (ai, 2, 6)); 25011 assert_true (ai_move (ai, 7, 4)); 25012 assert_true (ai_move (ai, 2, 0)); 25013 assert_true (ai_move (ai, 1, 4)); 25014 assert_true (ai_move (ai, 0, 5)); 25015 assert_true (ai_move (ai, 4, 7)); 25016 assert_true (ai_move (ai, 4, 2)); 25017 assert_true (ai_move (ai, 5, 1)); 25018 assert_true (ai_move (ai, 6, 5)); 25019 assert_true (ai_move (ai, 5, 6)); 25020 assert_true (ai_move (ai, 4, 1)); 25021 assert_true (ai_move (ai, 0, 4)); 25022 assert_true (ai_move (ai, 0, 3)); 25023 assert_true (ai_move (ai, 2, 7)); 25024 assert_true (ai_move (ai, 7, 2)); 25025 assert_true (ai_move (ai, 3, 1)); 25026 assert_true (ai_move (ai, 1, 5)); 25027 assert_true (ai_move (ai, 5, 3)); 25028 assert_true (ai_move (ai, 6, 2)); 25029 assert_true (ai_move (ai, 7, 3)); 25030 assert_true (ai_move (ai, 7, 5)); 25031 assert_true (ai_move (ai, 1, 2)); 25032 assert_true (ai_move (ai, 1, 3)); 25033 assert_true (ai_move (ai, 3, 0)); 25034 assert_true (ai_move (ai, 7, 1)); 25035 assert_true (ai_move (ai, 1, 0)); 25036 assert_true (ai_move (ai, 0, 2)); 25037 assert_true (ai_move (ai, 5, 2)); 25038 assert_true (ai_move (ai, 5, 5)); 25039 assert_true (ai_move (ai, 3, 2)); 25040 assert_true (ai_move (ai, 3, 5)); 25041 assert_true (ai_move (ai, 1, 6)); 25042 assert_true (ai_move (ai, 5, 0)); 25043 assert_true (ai_move (ai, 0, 6)); 25044 assert_true (ai_move (ai, 0, 7)); 25045 assert_true (ai_move (ai, 1, 7)); 25046 assert_true (ai_move (ai, 3, 7)); 25047 assert_true (ai_move (ai, 5, 7)); 25048 assert_true (ai_move (ai, 6, 7)); 25049 assert_true (ai_move (ai, 1, 1)); 25050 assert_true (ai_move (ai, 4, 0)); 25051 assert_true (ai_move (ai, 6, 0)); 25052 assert_true (ai_move (ai, 0, 0)); 25053 assert_true (ai_move (ai, 7, 6)); 25054 assert_true (ai_move (ai, 7, 0)); 25055 assert_true (ai_move (ai, 6, 1)); 25056 assert_true (ai_move (ai, 0, 1)); 25057 assert_true (ai_move (ai, 6, 6)); 25058 assert_true (ai_move (ai, 7, 7)); 25059 } 25060 25061 private static inline void test_complete_reversi_game_319 () 25062 { 25063 /* 0 1 2 3 4 5 6 7 */ 25064 string [] board = {/* 0 */ " . . . . . . . .", 25065 /* 1 */ " . . . . . . . .", 25066 /* 2 */ " . . . . . . . .", 25067 /* 3 */ " . . . D D . . .", 25068 /* 4 */ " . . . L D L . .", 25069 /* 5 */ " . . . . L L . .", 25070 /* 6 */ " . . . . . L . .", 25071 /* 7 */ " . . . . . . . ."}; 25072 25073 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 25074 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 25075 25076 assert_true (ai_move (ai, 2, 5)); 25077 assert_true (ai_move (ai, 3, 2)); 25078 assert_true (ai_move (ai, 4, 6)); 25079 assert_true (ai_move (ai, 3, 6)); 25080 assert_true (ai_move (ai, 3, 1)); 25081 assert_true (ai_move (ai, 1, 4)); 25082 assert_true (ai_move (ai, 4, 2)); 25083 assert_true (ai_move (ai, 2, 3)); 25084 assert_true (ai_move (ai, 1, 3)); 25085 assert_true (ai_move (ai, 5, 2)); 25086 assert_true (ai_move (ai, 6, 2)); 25087 assert_true (ai_move (ai, 2, 1)); 25088 assert_true (ai_move (ai, 4, 1)); 25089 assert_true (ai_move (ai, 4, 0)); 25090 assert_true (ai_move (ai, 5, 0)); 25091 assert_true (ai_move (ai, 2, 0)); 25092 assert_true (ai_move (ai, 5, 3)); 25093 assert_true (ai_move (ai, 5, 1)); 25094 assert_true (ai_move (ai, 6, 3)); 25095 assert_true (ai_move (ai, 6, 4)); 25096 assert_true (ai_move (ai, 2, 4)); 25097 assert_true (ai_move (ai, 7, 4)); 25098 assert_true (ai_move (ai, 2, 6)); 25099 assert_true (ai_move (ai, 7, 3)); 25100 assert_true (ai_move (ai, 7, 2)); 25101 assert_true (ai_move (ai, 7, 1)); 25102 assert_true (ai_move (ai, 1, 5)); 25103 assert_true (ai_move (ai, 2, 2)); 25104 assert_true (ai_move (ai, 5, 7)); 25105 assert_true (ai_move (ai, 6, 5)); 25106 assert_true (ai_move (ai, 1, 2)); 25107 assert_true (ai_move (ai, 0, 2)); 25108 assert_true (ai_move (ai, 4, 7)); 25109 assert_true (ai_move (ai, 0, 3)); 25110 assert_true (ai_move (ai, 3, 5)); 25111 assert_true (ai_move (ai, 0, 4)); 25112 assert_true (ai_move (ai, 7, 5)); 25113 assert_true (ai_move (ai, 7, 6)); 25114 assert_true (ai_move (ai, 0, 5)); 25115 assert_true (ai_move (ai, 6, 6)); 25116 assert_true (ai_move (ai, 0, 1)); 25117 assert_true (ai_move (ai, 2, 7)); 25118 assert_true (ai_move (ai, 3, 0)); 25119 assert_true (ai_move (ai, 6, 0)); 25120 assert_true (ai_move (ai, 3, 7)); 25121 assert_true (ai_move (ai, 6, 7)); 25122 assert_true (ai_move (ai, 6, 1)); 25123 assert_true (ai_move (ai, 1, 1)); 25124 assert_true (ai_move (ai, 1, 0)); 25125 assert_true (ai_move (ai, 0, 0)); 25126 assert_true (game.pass ()); 25127 assert_true (ai_move (ai, 0, 6)); 25128 assert_true (ai_move (ai, 1, 6)); 25129 assert_true (ai_move (ai, 1, 7)); 25130 } 25131 25132 private static inline void test_complete_reversi_game_320 () 25133 { 25134 /* 0 1 2 3 4 5 6 7 */ 25135 string [] board = {/* 0 */ " . . . . . . . .", 25136 /* 1 */ " . . . . . . . .", 25137 /* 2 */ " . . . . . L . .", 25138 /* 3 */ " . . . D L . . .", 25139 /* 4 */ " . . . L D L . .", 25140 /* 5 */ " . . . . D D . .", 25141 /* 6 */ " . . . . . . . .", 25142 /* 7 */ " . . . . . . . ."}; 25143 25144 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 25145 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 25146 25147 assert_true (ai_move (ai, 6, 4)); 25148 assert_true (ai_move (ai, 5, 6)); 25149 assert_true (ai_move (ai, 3, 6)); 25150 assert_true (ai_move (ai, 6, 5)); 25151 assert_true (ai_move (ai, 7, 5)); 25152 assert_true (ai_move (ai, 2, 7)); 25153 assert_true (ai_move (ai, 4, 6)); 25154 assert_true (ai_move (ai, 7, 4)); 25155 assert_true (ai_move (ai, 3, 5)); 25156 assert_true (ai_move (ai, 2, 5)); 25157 assert_true (ai_move (ai, 1, 5)); 25158 assert_true (ai_move (ai, 1, 4)); 25159 assert_true (ai_move (ai, 3, 7)); 25160 assert_true (ai_move (ai, 0, 5)); 25161 assert_true (ai_move (ai, 7, 3)); 25162 assert_true (ai_move (ai, 4, 7)); 25163 assert_true (ai_move (ai, 5, 7)); 25164 assert_true (ai_move (ai, 6, 7)); 25165 assert_true (ai_move (ai, 2, 6)); 25166 assert_true (ai_move (ai, 2, 4)); 25167 assert_true (ai_move (ai, 2, 3)); 25168 assert_true (ai_move (ai, 1, 7)); 25169 assert_true (ai_move (ai, 6, 3)); 25170 assert_true (ai_move (ai, 5, 3)); 25171 assert_true (ai_move (ai, 4, 1)); 25172 assert_true (ai_move (ai, 5, 1)); 25173 assert_true (ai_move (ai, 3, 2)); 25174 assert_true (ai_move (ai, 7, 2)); 25175 assert_true (ai_move (ai, 7, 1)); 25176 assert_true (ai_move (ai, 1, 2)); 25177 assert_true (ai_move (ai, 2, 2)); 25178 assert_true (ai_move (ai, 2, 1)); 25179 assert_true (ai_move (ai, 1, 3)); 25180 assert_true (ai_move (ai, 4, 2)); 25181 assert_true (ai_move (ai, 3, 1)); 25182 assert_true (ai_move (ai, 6, 2)); 25183 assert_true (ai_move (ai, 2, 0)); 25184 assert_true (ai_move (ai, 0, 3)); 25185 assert_true (ai_move (ai, 0, 2)); 25186 assert_true (ai_move (ai, 4, 0)); 25187 assert_true (ai_move (ai, 3, 0)); 25188 assert_true (ai_move (ai, 5, 0)); 25189 assert_true (ai_move (ai, 6, 0)); 25190 assert_true (ai_move (ai, 6, 1)); 25191 assert_true (ai_move (ai, 0, 4)); 25192 assert_true (ai_move (ai, 0, 1)); 25193 assert_true (ai_move (ai, 7, 0)); 25194 assert_true (ai_move (ai, 1, 1)); 25195 assert_true (ai_move (ai, 0, 0)); 25196 assert_true (ai_move (ai, 1, 0)); 25197 assert_true (ai_move (ai, 0, 6)); 25198 assert_true (ai_move (ai, 6, 6)); 25199 assert_true (ai_move (ai, 7, 6)); 25200 assert_true (ai_move (ai, 1, 6)); 25201 assert_true (ai_move (ai, 7, 7)); 25202 assert_true (game.pass ()); 25203 assert_true (ai_move (ai, 0, 7)); 25204 } 25205 25206 private static inline void test_complete_reversi_game_321 () 25207 { 25208 /* 0 1 2 3 4 5 6 7 */ 25209 string [] board = {/* 0 */ " . . . . . . . .", 25210 /* 1 */ " . . . . . . . .", 25211 /* 2 */ " . . . . . . . .", 25212 /* 3 */ " . . . D D . . .", 25213 /* 4 */ " . . . L D L . .", 25214 /* 5 */ " . . . . L D . .", 25215 /* 6 */ " . . . L . . . .", 25216 /* 7 */ " . . . . . . . ."}; 25217 25218 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 25219 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 25220 25221 assert_true (ai_move (ai, 4, 6)); 25222 assert_true (ai_move (ai, 5, 2)); 25223 assert_true (ai_move (ai, 6, 4)); 25224 assert_true (ai_move (ai, 6, 3)); 25225 assert_true (ai_move (ai, 4, 2)); 25226 assert_true (ai_move (ai, 6, 5)); 25227 assert_true (ai_move (ai, 6, 2)); 25228 assert_true (ai_move (ai, 4, 7)); 25229 assert_true (ai_move (ai, 2, 4)); 25230 assert_true (ai_move (ai, 3, 2)); 25231 assert_true (ai_move (ai, 2, 2)); 25232 assert_true (ai_move (ai, 4, 1)); 25233 assert_true (ai_move (ai, 5, 1)); 25234 assert_true (ai_move (ai, 5, 0)); 25235 assert_true (ai_move (ai, 5, 6)); 25236 assert_true (ai_move (ai, 5, 7)); 25237 assert_true (ai_move (ai, 7, 5)); 25238 assert_true (ai_move (ai, 2, 1)); 25239 assert_true (ai_move (ai, 3, 1)); 25240 assert_true (ai_move (ai, 1, 2)); 25241 assert_true (ai_move (ai, 1, 3)); 25242 assert_true (ai_move (ai, 7, 2)); 25243 assert_true (ai_move (ai, 2, 0)); 25244 assert_true (ai_move (ai, 7, 4)); 25245 assert_true (ai_move (ai, 2, 7)); 25246 assert_true (ai_move (ai, 2, 6)); 25247 assert_true (ai_move (ai, 2, 5)); 25248 assert_true (ai_move (ai, 3, 0)); 25249 assert_true (ai_move (ai, 0, 2)); 25250 assert_true (ai_move (ai, 0, 4)); 25251 assert_true (ai_move (ai, 2, 3)); 25252 assert_true (ai_move (ai, 0, 3)); 25253 assert_true (ai_move (ai, 0, 5)); 25254 assert_true (ai_move (ai, 3, 5)); 25255 assert_true (ai_move (ai, 1, 4)); 25256 assert_true (ai_move (ai, 5, 3)); 25257 assert_true (ai_move (ai, 0, 1)); 25258 assert_true (ai_move (ai, 1, 5)); 25259 assert_true (ai_move (ai, 3, 7)); 25260 assert_true (ai_move (ai, 1, 7)); 25261 assert_true (ai_move (ai, 6, 6)); 25262 assert_true (ai_move (ai, 1, 0)); 25263 assert_true (ai_move (ai, 0, 6)); 25264 assert_true (ai_move (ai, 1, 1)); 25265 assert_true (ai_move (ai, 0, 0)); 25266 assert_true (ai_move (ai, 6, 7)); 25267 assert_true (ai_move (ai, 4, 0)); 25268 assert_true (ai_move (ai, 7, 6)); 25269 assert_true (ai_move (ai, 6, 0)); 25270 assert_true (ai_move (ai, 6, 1)); 25271 assert_true (ai_move (ai, 7, 3)); 25272 assert_true (ai_move (ai, 1, 6)); 25273 assert_true (ai_move (ai, 0, 7)); 25274 assert_true (ai_move (ai, 7, 1)); 25275 assert_true (ai_move (ai, 7, 7)); 25276 assert_true (game.pass ()); 25277 assert_true (ai_move (ai, 7, 0)); 25278 } 25279 25280 private static inline void test_complete_reversi_game_322 () 25281 { 25282 /* 0 1 2 3 4 5 6 7 */ 25283 string [] board = {/* 0 */ " . . . . . . . .", 25284 /* 1 */ " . . . . . . . .", 25285 /* 2 */ " . . . L . . . .", 25286 /* 3 */ " . . . L L . . .", 25287 /* 4 */ " . . . L D L . .", 25288 /* 5 */ " . . . . D D . .", 25289 /* 6 */ " . . . . . . . .", 25290 /* 7 */ " . . . . . . . ."}; 25291 25292 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 25293 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 25294 25295 assert_true (ai_move (ai, 5, 3)); 25296 assert_true (ai_move (ai, 6, 5)); 25297 assert_true (ai_move (ai, 6, 3)); 25298 assert_true (ai_move (ai, 3, 5)); 25299 assert_true (ai_move (ai, 5, 6)); 25300 assert_true (ai_move (ai, 4, 7)); 25301 assert_true (ai_move (ai, 5, 7)); 25302 assert_true (ai_move (ai, 6, 4)); 25303 assert_true (ai_move (ai, 3, 6)); 25304 assert_true (ai_move (ai, 4, 6)); 25305 assert_true (ai_move (ai, 3, 7)); 25306 assert_true (ai_move (ai, 5, 2)); 25307 assert_true (ai_move (ai, 5, 1)); 25308 assert_true (ai_move (ai, 4, 2)); 25309 assert_true (ai_move (ai, 4, 1)); 25310 assert_true (ai_move (ai, 6, 2)); 25311 assert_true (ai_move (ai, 7, 2)); 25312 assert_true (ai_move (ai, 7, 3)); 25313 assert_true (ai_move (ai, 2, 1)); 25314 assert_true (ai_move (ai, 2, 2)); 25315 assert_true (ai_move (ai, 1, 2)); 25316 assert_true (ai_move (ai, 3, 1)); 25317 assert_true (ai_move (ai, 7, 5)); 25318 assert_true (ai_move (ai, 1, 3)); 25319 assert_true (ai_move (ai, 7, 4)); 25320 assert_true (ai_move (ai, 2, 0)); 25321 assert_true (ai_move (ai, 2, 6)); 25322 assert_true (ai_move (ai, 0, 2)); 25323 assert_true (ai_move (ai, 2, 5)); 25324 assert_true (ai_move (ai, 4, 0)); 25325 assert_true (ai_move (ai, 2, 4)); 25326 assert_true (ai_move (ai, 5, 0)); 25327 assert_true (ai_move (ai, 3, 0)); 25328 assert_true (ai_move (ai, 1, 5)); 25329 assert_true (ai_move (ai, 2, 3)); 25330 assert_true (ai_move (ai, 1, 4)); 25331 assert_true (ai_move (ai, 0, 5)); 25332 assert_true (ai_move (ai, 2, 7)); 25333 assert_true (ai_move (ai, 1, 7)); 25334 assert_true (ai_move (ai, 6, 1)); 25335 assert_true (ai_move (ai, 0, 4)); 25336 assert_true (ai_move (ai, 6, 7)); 25337 assert_true (ai_move (ai, 7, 7)); 25338 assert_true (ai_move (ai, 7, 6)); 25339 assert_true (ai_move (ai, 0, 1)); 25340 assert_true (ai_move (ai, 7, 1)); 25341 assert_true (ai_move (ai, 0, 3)); 25342 assert_true (ai_move (ai, 0, 6)); 25343 assert_true (ai_move (ai, 0, 7)); 25344 assert_true (ai_move (ai, 1, 1)); 25345 assert_true (ai_move (ai, 6, 6)); 25346 assert_true (ai_move (ai, 1, 6)); 25347 assert_true (ai_move (ai, 7, 0)); 25348 assert_true (ai_move (ai, 6, 0)); 25349 assert_true (ai_move (ai, 1, 0)); 25350 assert_true (ai_move (ai, 0, 0)); 25351 } 25352 25353 private static inline void test_complete_reversi_game_323 () 25354 { 25355 /* 0 1 2 3 4 5 6 7 */ 25356 string [] board = {/* 0 */ " . . . . . . . .", 25357 /* 1 */ " . . . . . . . .", 25358 /* 2 */ " . . . . . . . .", 25359 /* 3 */ " . . . D D . . .", 25360 /* 4 */ " . . . D L L . .", 25361 /* 5 */ " . . . D L . . .", 25362 /* 6 */ " . . . . L . . .", 25363 /* 7 */ " . . . . . . . ."}; 25364 25365 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 25366 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 25367 25368 assert_true (ai_move (ai, 5, 6)); 25369 assert_true (ai_move (ai, 3, 6)); 25370 assert_true (ai_move (ai, 4, 7)); 25371 assert_true (ai_move (ai, 2, 4)); 25372 assert_true (ai_move (ai, 5, 5)); 25373 assert_true (ai_move (ai, 5, 2)); 25374 assert_true (ai_move (ai, 6, 3)); 25375 assert_true (ai_move (ai, 6, 5)); 25376 assert_true (ai_move (ai, 7, 4)); 25377 assert_true (ai_move (ai, 7, 2)); 25378 assert_true (ai_move (ai, 6, 4)); 25379 assert_true (ai_move (ai, 5, 7)); 25380 assert_true (ai_move (ai, 2, 5)); 25381 assert_true (ai_move (ai, 3, 7)); 25382 assert_true (ai_move (ai, 2, 6)); 25383 assert_true (ai_move (ai, 5, 3)); 25384 assert_true (ai_move (ai, 1, 5)); 25385 assert_true (ai_move (ai, 2, 7)); 25386 assert_true (ai_move (ai, 3, 2)); 25387 assert_true (ai_move (ai, 7, 3)); 25388 assert_true (ai_move (ai, 5, 1)); 25389 assert_true (ai_move (ai, 7, 5)); 25390 assert_true (ai_move (ai, 6, 6)); 25391 assert_true (ai_move (ai, 5, 0)); 25392 assert_true (ai_move (ai, 7, 6)); 25393 assert_true (ai_move (ai, 7, 7)); 25394 assert_true (ai_move (ai, 6, 2)); 25395 assert_true (ai_move (ai, 4, 2)); 25396 assert_true (ai_move (ai, 4, 0)); 25397 assert_true (ai_move (ai, 1, 7)); 25398 assert_true (ai_move (ai, 4, 1)); 25399 assert_true (ai_move (ai, 1, 4)); 25400 assert_true (ai_move (ai, 1, 3)); 25401 assert_true (ai_move (ai, 0, 2)); 25402 assert_true (ai_move (ai, 2, 3)); 25403 assert_true (ai_move (ai, 1, 2)); 25404 assert_true (ai_move (ai, 0, 3)); 25405 assert_true (ai_move (ai, 7, 1)); 25406 assert_true (ai_move (ai, 6, 0)); 25407 assert_true (ai_move (ai, 0, 5)); 25408 assert_true (ai_move (ai, 2, 1)); 25409 assert_true (ai_move (ai, 0, 4)); 25410 assert_true (ai_move (ai, 6, 7)); 25411 assert_true (ai_move (ai, 6, 1)); 25412 assert_true (ai_move (ai, 0, 7)); 25413 assert_true (ai_move (ai, 1, 1)); 25414 assert_true (ai_move (ai, 0, 6)); 25415 assert_true (ai_move (ai, 2, 2)); 25416 assert_true (ai_move (ai, 3, 1)); 25417 assert_true (ai_move (ai, 1, 6)); 25418 assert_true (ai_move (ai, 7, 0)); 25419 assert_true (ai_move (ai, 2, 0)); 25420 assert_true (ai_move (ai, 3, 0)); 25421 assert_true (game.pass ()); 25422 assert_true (ai_move (ai, 0, 0)); 25423 assert_true (ai_move (ai, 1, 0)); 25424 assert_true (ai_move (ai, 0, 1)); 25425 } 25426 25427 private static inline void test_complete_reversi_game_324 () 25428 { 25429 /* 0 1 2 3 4 5 6 7 */ 25430 string [] board = {/* 0 */ " . . . . . . . .", 25431 /* 1 */ " . . . . . . . .", 25432 /* 2 */ " . . . . L . . .", 25433 /* 3 */ " . . . D L . . .", 25434 /* 4 */ " . . . D L L . .", 25435 /* 5 */ " . . . D D . . .", 25436 /* 6 */ " . . . . . . . .", 25437 /* 7 */ " . . . . . . . ."}; 25438 25439 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 25440 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 25441 25442 assert_true (ai_move (ai, 5, 1)); 25443 assert_true (ai_move (ai, 4, 1)); 25444 assert_true (ai_move (ai, 6, 3)); 25445 assert_true (ai_move (ai, 6, 5)); 25446 assert_true (ai_move (ai, 6, 4)); 25447 assert_true (ai_move (ai, 2, 3)); 25448 assert_true (ai_move (ai, 1, 2)); 25449 assert_true (ai_move (ai, 1, 3)); 25450 assert_true (ai_move (ai, 3, 1)); 25451 assert_true (ai_move (ai, 2, 0)); 25452 assert_true (ai_move (ai, 5, 2)); 25453 assert_true (ai_move (ai, 4, 0)); 25454 assert_true (ai_move (ai, 3, 0)); 25455 assert_true (ai_move (ai, 5, 5)); 25456 assert_true (ai_move (ai, 5, 6)); 25457 assert_true (ai_move (ai, 2, 5)); 25458 assert_true (ai_move (ai, 5, 0)); 25459 assert_true (ai_move (ai, 6, 0)); 25460 assert_true (ai_move (ai, 4, 6)); 25461 assert_true (ai_move (ai, 5, 7)); 25462 assert_true (ai_move (ai, 3, 7)); 25463 assert_true (ai_move (ai, 7, 4)); 25464 assert_true (ai_move (ai, 2, 4)); 25465 assert_true (ai_move (ai, 1, 5)); 25466 assert_true (ai_move (ai, 7, 5)); 25467 assert_true (ai_move (ai, 7, 6)); 25468 assert_true (ai_move (ai, 7, 2)); 25469 assert_true (ai_move (ai, 3, 6)); 25470 assert_true (ai_move (ai, 2, 7)); 25471 assert_true (ai_move (ai, 6, 6)); 25472 assert_true (ai_move (ai, 1, 4)); 25473 assert_true (ai_move (ai, 0, 2)); 25474 assert_true (ai_move (ai, 2, 6)); 25475 assert_true (ai_move (ai, 2, 2)); 25476 assert_true (ai_move (ai, 2, 1)); 25477 assert_true (ai_move (ai, 3, 2)); 25478 assert_true (ai_move (ai, 5, 3)); 25479 assert_true (ai_move (ai, 6, 7)); 25480 assert_true (ai_move (ai, 0, 4)); 25481 assert_true (ai_move (ai, 0, 5)); 25482 assert_true (ai_move (ai, 0, 3)); 25483 assert_true (ai_move (ai, 4, 7)); 25484 assert_true (ai_move (ai, 6, 2)); 25485 assert_true (ai_move (ai, 1, 7)); 25486 assert_true (ai_move (ai, 7, 7)); 25487 assert_true (ai_move (ai, 1, 6)); 25488 assert_true (ai_move (ai, 0, 7)); 25489 assert_true (ai_move (ai, 7, 3)); 25490 assert_true (ai_move (ai, 0, 6)); 25491 assert_true (ai_move (ai, 1, 0)); 25492 assert_true (ai_move (ai, 0, 1)); 25493 assert_true (ai_move (ai, 6, 1)); 25494 assert_true (ai_move (ai, 7, 0)); 25495 assert_true (ai_move (ai, 7, 1)); 25496 assert_true (ai_move (ai, 0, 0)); 25497 assert_true (ai_move (ai, 1, 1)); 25498 } 25499 25500 private static inline void test_complete_reversi_game_325 () 25501 { 25502 /* 0 1 2 3 4 5 6 7 */ 25503 string [] board = {/* 0 */ " . . . . . . . .", 25504 /* 1 */ " . . . . . . . .", 25505 /* 2 */ " . . . . . . . .", 25506 /* 3 */ " . . . D D . . .", 25507 /* 4 */ " . . . D L L . .", 25508 /* 5 */ " . . . D L . . .", 25509 /* 6 */ " . . . L . . . .", 25510 /* 7 */ " . . . . . . . ."}; 25511 25512 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 25513 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 25514 25515 assert_true (ai_move (ai, 5, 6)); 25516 assert_true (ai_move (ai, 4, 6)); 25517 assert_true (ai_move (ai, 4, 7)); 25518 assert_true (ai_move (ai, 2, 4)); 25519 assert_true (ai_move (ai, 5, 5)); 25520 assert_true (ai_move (ai, 5, 2)); 25521 assert_true (ai_move (ai, 6, 3)); 25522 assert_true (ai_move (ai, 6, 5)); 25523 assert_true (ai_move (ai, 7, 4)); 25524 assert_true (ai_move (ai, 7, 2)); 25525 assert_true (ai_move (ai, 6, 4)); 25526 assert_true (ai_move (ai, 5, 7)); 25527 assert_true (ai_move (ai, 2, 5)); 25528 assert_true (ai_move (ai, 3, 7)); 25529 assert_true (ai_move (ai, 2, 6)); 25530 assert_true (ai_move (ai, 5, 3)); 25531 assert_true (ai_move (ai, 1, 5)); 25532 assert_true (ai_move (ai, 2, 7)); 25533 assert_true (ai_move (ai, 3, 2)); 25534 assert_true (ai_move (ai, 7, 3)); 25535 assert_true (ai_move (ai, 5, 1)); 25536 assert_true (ai_move (ai, 7, 5)); 25537 assert_true (ai_move (ai, 6, 6)); 25538 assert_true (ai_move (ai, 5, 0)); 25539 assert_true (ai_move (ai, 7, 6)); 25540 assert_true (ai_move (ai, 7, 7)); 25541 assert_true (ai_move (ai, 6, 2)); 25542 assert_true (ai_move (ai, 4, 2)); 25543 assert_true (ai_move (ai, 4, 0)); 25544 assert_true (ai_move (ai, 1, 7)); 25545 assert_true (ai_move (ai, 4, 1)); 25546 assert_true (ai_move (ai, 1, 4)); 25547 assert_true (ai_move (ai, 1, 3)); 25548 assert_true (ai_move (ai, 0, 2)); 25549 assert_true (ai_move (ai, 2, 3)); 25550 assert_true (ai_move (ai, 1, 2)); 25551 assert_true (ai_move (ai, 0, 3)); 25552 assert_true (ai_move (ai, 7, 1)); 25553 assert_true (ai_move (ai, 6, 0)); 25554 assert_true (ai_move (ai, 0, 5)); 25555 assert_true (ai_move (ai, 2, 1)); 25556 assert_true (ai_move (ai, 0, 4)); 25557 assert_true (ai_move (ai, 6, 7)); 25558 assert_true (ai_move (ai, 6, 1)); 25559 assert_true (ai_move (ai, 0, 7)); 25560 assert_true (ai_move (ai, 1, 1)); 25561 assert_true (ai_move (ai, 0, 6)); 25562 assert_true (ai_move (ai, 2, 2)); 25563 assert_true (ai_move (ai, 3, 1)); 25564 assert_true (ai_move (ai, 1, 6)); 25565 assert_true (ai_move (ai, 7, 0)); 25566 assert_true (ai_move (ai, 2, 0)); 25567 assert_true (ai_move (ai, 3, 0)); 25568 assert_true (game.pass ()); 25569 assert_true (ai_move (ai, 0, 0)); 25570 assert_true (ai_move (ai, 1, 0)); 25571 assert_true (ai_move (ai, 0, 1)); 25572 } 25573 25574 private static inline void test_complete_reversi_game_326 () 25575 { 25576 /* 0 1 2 3 4 5 6 7 */ 25577 string [] board = {/* 0 */ " . . . . . . . .", 25578 /* 1 */ " . . . . . . . .", 25579 /* 2 */ " . . . L . . . .", 25580 /* 3 */ " . . . D L . . .", 25581 /* 4 */ " . . . D L L . .", 25582 /* 5 */ " . . . D D . . .", 25583 /* 6 */ " . . . . . . . .", 25584 /* 7 */ " . . . . . . . ."}; 25585 25586 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 25587 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 25588 25589 assert_true (ai_move (ai, 6, 3)); 25590 assert_true (ai_move (ai, 6, 5)); 25591 assert_true (ai_move (ai, 3, 1)); 25592 assert_true (ai_move (ai, 2, 1)); 25593 assert_true (ai_move (ai, 5, 2)); 25594 assert_true (ai_move (ai, 4, 6)); 25595 assert_true (ai_move (ai, 3, 6)); 25596 assert_true (ai_move (ai, 6, 4)); 25597 assert_true (ai_move (ai, 4, 7)); 25598 assert_true (ai_move (ai, 7, 2)); 25599 assert_true (ai_move (ai, 5, 3)); 25600 assert_true (ai_move (ai, 5, 1)); 25601 assert_true (ai_move (ai, 6, 2)); 25602 assert_true (ai_move (ai, 4, 2)); 25603 assert_true (ai_move (ai, 2, 2)); 25604 assert_true (ai_move (ai, 1, 2)); 25605 assert_true (ai_move (ai, 1, 3)); 25606 assert_true (ai_move (ai, 4, 1)); 25607 assert_true (ai_move (ai, 0, 2)); 25608 assert_true (ai_move (ai, 2, 3)); 25609 assert_true (ai_move (ai, 7, 4)); 25610 assert_true (ai_move (ai, 5, 5)); 25611 assert_true (ai_move (ai, 7, 5)); 25612 assert_true (ai_move (ai, 5, 6)); 25613 assert_true (ai_move (ai, 2, 0)); 25614 assert_true (ai_move (ai, 7, 3)); 25615 assert_true (ai_move (ai, 7, 1)); 25616 assert_true (ai_move (ai, 6, 6)); 25617 assert_true (ai_move (ai, 5, 0)); 25618 assert_true (ai_move (ai, 2, 7)); 25619 assert_true (ai_move (ai, 2, 6)); 25620 assert_true (ai_move (ai, 0, 4)); 25621 assert_true (ai_move (ai, 0, 3)); 25622 assert_true (ai_move (ai, 2, 4)); 25623 assert_true (ai_move (ai, 1, 5)); 25624 assert_true (ai_move (ai, 2, 5)); 25625 assert_true (ai_move (ai, 1, 4)); 25626 assert_true (ai_move (ai, 0, 5)); 25627 assert_true (ai_move (ai, 0, 6)); 25628 assert_true (ai_move (ai, 5, 7)); 25629 assert_true (ai_move (ai, 3, 7)); 25630 assert_true (ai_move (ai, 3, 0)); 25631 assert_true (ai_move (ai, 4, 0)); 25632 assert_true (ai_move (ai, 1, 1)); 25633 assert_true (ai_move (ai, 0, 0)); 25634 assert_true (ai_move (ai, 0, 1)); 25635 assert_true (ai_move (ai, 1, 6)); 25636 assert_true (ai_move (ai, 0, 7)); 25637 assert_true (ai_move (ai, 1, 7)); 25638 assert_true (ai_move (ai, 6, 0)); 25639 assert_true (ai_move (ai, 1, 0)); 25640 assert_true (ai_move (ai, 6, 1)); 25641 assert_true (ai_move (ai, 7, 7)); 25642 assert_true (ai_move (ai, 6, 7)); 25643 assert_true (ai_move (ai, 7, 6)); 25644 assert_true (game.pass ()); 25645 assert_true (ai_move (ai, 7, 0)); 25646 } 25647 25648 private static inline void test_complete_reversi_game_327 () 25649 { 25650 /* 0 1 2 3 4 5 6 7 */ 25651 string [] board = {/* 0 */ " . . . . . . . .", 25652 /* 1 */ " . . . . . . . .", 25653 /* 2 */ " . . . . . . . .", 25654 /* 3 */ " . . . D D . . .", 25655 /* 4 */ " . . . D L L . .", 25656 /* 5 */ " . . . L D . . .", 25657 /* 6 */ " . . L . . . . .", 25658 /* 7 */ " . . . . . . . ."}; 25659 25660 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 25661 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 25662 25663 assert_true (ai_move (ai, 2, 5)); 25664 assert_true (ai_move (ai, 4, 6)); 25665 assert_true (ai_move (ai, 5, 6)); 25666 assert_true (ai_move (ai, 3, 6)); 25667 assert_true (ai_move (ai, 6, 5)); 25668 assert_true (ai_move (ai, 1, 5)); 25669 assert_true (ai_move (ai, 3, 7)); 25670 assert_true (ai_move (ai, 2, 4)); 25671 assert_true (ai_move (ai, 0, 4)); 25672 assert_true (ai_move (ai, 0, 5)); 25673 assert_true (ai_move (ai, 5, 3)); 25674 assert_true (ai_move (ai, 0, 3)); 25675 assert_true (ai_move (ai, 5, 7)); 25676 assert_true (ai_move (ai, 6, 3)); 25677 assert_true (ai_move (ai, 6, 4)); 25678 assert_true (ai_move (ai, 7, 4)); 25679 assert_true (ai_move (ai, 1, 4)); 25680 assert_true (ai_move (ai, 6, 2)); 25681 assert_true (ai_move (ai, 1, 3)); 25682 assert_true (ai_move (ai, 5, 2)); 25683 assert_true (ai_move (ai, 7, 3)); 25684 assert_true (ai_move (ai, 7, 2)); 25685 assert_true (ai_move (ai, 5, 1)); 25686 assert_true (ai_move (ai, 4, 1)); 25687 assert_true (ai_move (ai, 3, 1)); 25688 assert_true (ai_move (ai, 5, 0)); 25689 assert_true (ai_move (ai, 7, 5)); 25690 assert_true (ai_move (ai, 5, 5)); 25691 assert_true (ai_move (ai, 7, 1)); 25692 assert_true (ai_move (ai, 3, 0)); 25693 assert_true (ai_move (ai, 4, 2)); 25694 assert_true (ai_move (ai, 2, 0)); 25695 assert_true (ai_move (ai, 3, 2)); 25696 assert_true (ai_move (ai, 2, 1)); 25697 assert_true (ai_move (ai, 2, 2)); 25698 assert_true (ai_move (ai, 2, 7)); 25699 assert_true (ai_move (ai, 2, 3)); 25700 assert_true (ai_move (ai, 4, 7)); 25701 assert_true (ai_move (ai, 1, 7)); 25702 assert_true (ai_move (ai, 0, 2)); 25703 assert_true (ai_move (ai, 6, 6)); 25704 assert_true (ai_move (ai, 1, 2)); 25705 assert_true (ai_move (ai, 1, 1)); 25706 assert_true (ai_move (ai, 6, 1)); 25707 assert_true (ai_move (ai, 7, 0)); 25708 assert_true (ai_move (ai, 6, 0)); 25709 assert_true (ai_move (ai, 4, 0)); 25710 assert_true (ai_move (ai, 1, 6)); 25711 assert_true (ai_move (ai, 1, 0)); 25712 assert_true (ai_move (ai, 0, 1)); 25713 assert_true (ai_move (ai, 0, 0)); 25714 assert_true (ai_move (ai, 7, 6)); 25715 assert_true (ai_move (ai, 0, 6)); 25716 assert_true (game.pass ()); 25717 assert_true (ai_move (ai, 0, 7)); 25718 assert_true (game.pass ()); 25719 assert_true (ai_move (ai, 7, 7)); 25720 assert_true (ai_move (ai, 6, 7)); 25721 } 25722 25723 private static inline void test_complete_reversi_game_328 () 25724 { 25725 /* 0 1 2 3 4 5 6 7 */ 25726 string [] board = {/* 0 */ " . . . . . . . .", 25727 /* 1 */ " . . . . . . . .", 25728 /* 2 */ " . . . . . . . .", 25729 /* 3 */ " . . . D D . . .", 25730 /* 4 */ " . . L L L L . .", 25731 /* 5 */ " . . . D D . . .", 25732 /* 6 */ " . . . . . . . .", 25733 /* 7 */ " . . . . . . . ."}; 25734 25735 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 25736 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 25737 25738 assert_true (ai_move (ai, 6, 5)); 25739 assert_true (ai_move (ai, 2, 6)); 25740 assert_true (ai_move (ai, 5, 5)); 25741 assert_true (ai_move (ai, 5, 6)); 25742 assert_true (ai_move (ai, 4, 6)); 25743 assert_true (ai_move (ai, 5, 7)); 25744 assert_true (ai_move (ai, 1, 5)); 25745 assert_true (ai_move (ai, 1, 3)); 25746 assert_true (ai_move (ai, 2, 5)); 25747 assert_true (ai_move (ai, 0, 4)); 25748 assert_true (ai_move (ai, 2, 3)); 25749 assert_true (ai_move (ai, 6, 4)); 25750 assert_true (ai_move (ai, 0, 5)); 25751 assert_true (ai_move (ai, 7, 5)); 25752 assert_true (ai_move (ai, 3, 7)); 25753 assert_true (ai_move (ai, 0, 6)); 25754 assert_true (ai_move (ai, 7, 3)); 25755 assert_true (ai_move (ai, 3, 2)); 25756 assert_true (ai_move (ai, 6, 3)); 25757 assert_true (ai_move (ai, 1, 4)); 25758 assert_true (ai_move (ai, 2, 2)); 25759 assert_true (ai_move (ai, 3, 1)); 25760 assert_true (ai_move (ai, 4, 1)); 25761 assert_true (ai_move (ai, 2, 7)); 25762 assert_true (ai_move (ai, 0, 2)); 25763 assert_true (ai_move (ai, 2, 1)); 25764 assert_true (ai_move (ai, 1, 2)); 25765 assert_true (ai_move (ai, 4, 2)); 25766 assert_true (ai_move (ai, 5, 2)); 25767 assert_true (ai_move (ai, 5, 0)); 25768 assert_true (ai_move (ai, 1, 6)); 25769 assert_true (ai_move (ai, 3, 6)); 25770 assert_true (ai_move (ai, 3, 0)); 25771 assert_true (ai_move (ai, 4, 7)); 25772 assert_true (ai_move (ai, 6, 6)); 25773 assert_true (ai_move (ai, 6, 7)); 25774 assert_true (ai_move (ai, 1, 7)); 25775 assert_true (ai_move (ai, 0, 7)); 25776 assert_true (game.pass ()); 25777 assert_true (ai_move (ai, 5, 3)); 25778 assert_true (ai_move (ai, 7, 4)); 25779 assert_true (ai_move (ai, 7, 2)); 25780 assert_true (ai_move (ai, 6, 2)); 25781 assert_true (ai_move (ai, 7, 1)); 25782 assert_true (ai_move (ai, 6, 1)); 25783 assert_true (ai_move (ai, 7, 0)); 25784 assert_true (ai_move (ai, 6, 0)); 25785 assert_true (ai_move (ai, 0, 3)); 25786 assert_true (ai_move (ai, 4, 0)); 25787 assert_true (ai_move (ai, 0, 1)); 25788 assert_true (ai_move (ai, 1, 1)); 25789 assert_true (ai_move (ai, 0, 0)); 25790 assert_true (ai_move (ai, 1, 0)); 25791 assert_true (ai_move (ai, 2, 0)); 25792 assert_true (ai_move (ai, 5, 1)); 25793 assert_true (ai_move (ai, 7, 7)); 25794 assert_true (ai_move (ai, 7, 6)); 25795 } 25796 25797 private static inline void test_complete_reversi_game_329 () 25798 { 25799 /* 0 1 2 3 4 5 6 7 */ 25800 string [] board = {/* 0 */ " . . . . . . . .", 25801 /* 1 */ " . . . . . . . .", 25802 /* 2 */ " . . L . . . . .", 25803 /* 3 */ " . . . L D . . .", 25804 /* 4 */ " . . . D L L . .", 25805 /* 5 */ " . . . D D . . .", 25806 /* 6 */ " . . . . . . . .", 25807 /* 7 */ " . . . . . . . ."}; 25808 25809 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 25810 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 25811 25812 assert_true (ai_move (ai, 6, 5)); 25813 assert_true (ai_move (ai, 6, 4)); 25814 assert_true (ai_move (ai, 3, 2)); 25815 assert_true (ai_move (ai, 3, 6)); 25816 assert_true (ai_move (ai, 5, 6)); 25817 assert_true (ai_move (ai, 4, 6)); 25818 assert_true (ai_move (ai, 1, 2)); 25819 assert_true (ai_move (ai, 2, 5)); 25820 assert_true (ai_move (ai, 6, 3)); 25821 assert_true (ai_move (ai, 7, 4)); 25822 assert_true (ai_move (ai, 3, 7)); 25823 assert_true (ai_move (ai, 2, 6)); 25824 assert_true (ai_move (ai, 1, 5)); 25825 assert_true (ai_move (ai, 2, 7)); 25826 assert_true (ai_move (ai, 1, 7)); 25827 assert_true (ai_move (ai, 0, 5)); 25828 assert_true (ai_move (ai, 2, 4)); 25829 assert_true (ai_move (ai, 5, 2)); 25830 assert_true (ai_move (ai, 5, 7)); 25831 assert_true (ai_move (ai, 1, 4)); 25832 assert_true (ai_move (ai, 5, 3)); 25833 assert_true (ai_move (ai, 4, 7)); 25834 assert_true (ai_move (ai, 1, 6)); 25835 assert_true (ai_move (ai, 2, 1)); 25836 assert_true (ai_move (ai, 5, 5)); 25837 assert_true (ai_move (ai, 2, 3)); 25838 assert_true (ai_move (ai, 2, 0)); 25839 assert_true (ai_move (ai, 4, 2)); 25840 assert_true (ai_move (ai, 6, 2)); 25841 assert_true (ai_move (ai, 1, 3)); 25842 assert_true (ai_move (ai, 0, 2)); 25843 assert_true (ai_move (ai, 0, 3)); 25844 assert_true (ai_move (ai, 7, 5)); 25845 assert_true (ai_move (ai, 3, 1)); 25846 assert_true (ai_move (ai, 7, 3)); 25847 assert_true (ai_move (ai, 4, 1)); 25848 assert_true (ai_move (ai, 1, 1)); 25849 assert_true (ai_move (ai, 7, 2)); 25850 assert_true (ai_move (ai, 7, 1)); 25851 assert_true (ai_move (ai, 0, 7)); 25852 assert_true (ai_move (ai, 3, 0)); 25853 assert_true (ai_move (ai, 4, 0)); 25854 assert_true (ai_move (ai, 5, 0)); 25855 assert_true (ai_move (ai, 5, 1)); 25856 assert_true (ai_move (ai, 6, 0)); 25857 assert_true (ai_move (ai, 0, 0)); 25858 assert_true (ai_move (ai, 0, 1)); 25859 assert_true (ai_move (ai, 1, 0)); 25860 assert_true (ai_move (ai, 0, 4)); 25861 assert_true (ai_move (ai, 7, 0)); 25862 assert_true (ai_move (ai, 0, 6)); 25863 assert_true (ai_move (ai, 7, 6)); 25864 assert_true (ai_move (ai, 6, 1)); 25865 assert_true (ai_move (ai, 6, 6)); 25866 assert_true (ai_move (ai, 6, 7)); 25867 assert_true (ai_move (ai, 7, 7)); 25868 } 25869 25870 private static inline void test_complete_reversi_game_330 () 25871 { 25872 /* 0 1 2 3 4 5 6 7 */ 25873 string [] board = {/* 0 */ " . . . . . . . .", 25874 /* 1 */ " . . . . . . . .", 25875 /* 2 */ " . . . . . . . .", 25876 /* 3 */ " . . . D D . . .", 25877 /* 4 */ " . . . D L L . .", 25878 /* 5 */ " . . D . L . . .", 25879 /* 6 */ " . . . . L . . .", 25880 /* 7 */ " . . . . . . . ."}; 25881 25882 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 25883 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 25884 25885 assert_true (ai_move (ai, 6, 5)); 25886 assert_true (ai_move (ai, 6, 3)); 25887 assert_true (ai_move (ai, 5, 6)); 25888 assert_true (ai_move (ai, 3, 6)); 25889 assert_true (ai_move (ai, 6, 4)); 25890 assert_true (ai_move (ai, 1, 4)); 25891 assert_true (ai_move (ai, 4, 7)); 25892 assert_true (ai_move (ai, 5, 2)); 25893 assert_true (ai_move (ai, 3, 2)); 25894 assert_true (ai_move (ai, 6, 7)); 25895 assert_true (ai_move (ai, 7, 2)); 25896 assert_true (ai_move (ai, 3, 1)); 25897 assert_true (ai_move (ai, 4, 1)); 25898 assert_true (ai_move (ai, 5, 0)); 25899 assert_true (ai_move (ai, 2, 7)); 25900 assert_true (ai_move (ai, 2, 6)); 25901 assert_true (ai_move (ai, 3, 0)); 25902 assert_true (ai_move (ai, 5, 1)); 25903 assert_true (ai_move (ai, 2, 1)); 25904 assert_true (ai_move (ai, 2, 3)); 25905 assert_true (ai_move (ai, 1, 2)); 25906 assert_true (ai_move (ai, 1, 3)); 25907 assert_true (ai_move (ai, 2, 4)); 25908 assert_true (ai_move (ai, 1, 5)); 25909 assert_true (ai_move (ai, 0, 5)); 25910 assert_true (ai_move (ai, 3, 5)); 25911 assert_true (ai_move (ai, 0, 4)); 25912 assert_true (ai_move (ai, 0, 3)); 25913 assert_true (ai_move (ai, 3, 7)); 25914 assert_true (ai_move (ai, 0, 6)); 25915 assert_true (ai_move (ai, 5, 5)); 25916 assert_true (ai_move (ai, 7, 5)); 25917 assert_true (ai_move (ai, 7, 4)); 25918 assert_true (ai_move (ai, 7, 3)); 25919 assert_true (ai_move (ai, 7, 6)); 25920 assert_true (ai_move (ai, 6, 2)); 25921 assert_true (ai_move (ai, 5, 3)); 25922 assert_true (ai_move (ai, 1, 0)); 25923 assert_true (ai_move (ai, 7, 1)); 25924 assert_true (ai_move (ai, 1, 7)); 25925 assert_true (ai_move (ai, 0, 7)); 25926 assert_true (ai_move (ai, 4, 2)); 25927 assert_true (ai_move (ai, 0, 2)); 25928 assert_true (ai_move (ai, 5, 7)); 25929 assert_true (ai_move (ai, 1, 6)); 25930 assert_true (ai_move (ai, 0, 1)); 25931 assert_true (ai_move (ai, 7, 7)); 25932 assert_true (ai_move (ai, 6, 1)); 25933 assert_true (ai_move (ai, 2, 2)); 25934 assert_true (ai_move (ai, 6, 6)); 25935 assert_true (ai_move (ai, 0, 0)); 25936 assert_true (ai_move (ai, 1, 1)); 25937 assert_true (ai_move (ai, 2, 0)); 25938 assert_true (game.pass ()); 25939 assert_true (ai_move (ai, 4, 0)); 25940 assert_true (ai_move (ai, 6, 0)); 25941 assert_true (ai_move (ai, 7, 0)); 25942 } 25943 25944 private static inline void test_complete_reversi_game_331 () 25945 { 25946 /* 0 1 2 3 4 5 6 7 */ 25947 string [] board = {/* 0 */ " . . . . . . . .", 25948 /* 1 */ " . . . . . . . .", 25949 /* 2 */ " . . . . L . . .", 25950 /* 3 */ " . . . D L . . .", 25951 /* 4 */ " . . . D L L . .", 25952 /* 5 */ " . . D . D . . .", 25953 /* 6 */ " . . . . . . . .", 25954 /* 7 */ " . . . . . . . ."}; 25955 25956 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 25957 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 25958 25959 assert_true (ai_move (ai, 5, 1)); 25960 assert_true (ai_move (ai, 4, 1)); 25961 assert_true (ai_move (ai, 6, 3)); 25962 assert_true (ai_move (ai, 6, 5)); 25963 assert_true (ai_move (ai, 6, 4)); 25964 assert_true (ai_move (ai, 2, 3)); 25965 assert_true (ai_move (ai, 1, 2)); 25966 assert_true (ai_move (ai, 1, 3)); 25967 assert_true (ai_move (ai, 1, 4)); 25968 assert_true (ai_move (ai, 0, 3)); 25969 assert_true (ai_move (ai, 3, 1)); 25970 assert_true (ai_move (ai, 2, 0)); 25971 assert_true (ai_move (ai, 5, 2)); 25972 assert_true (ai_move (ai, 2, 1)); 25973 assert_true (ai_move (ai, 3, 2)); 25974 assert_true (ai_move (ai, 1, 5)); 25975 assert_true (ai_move (ai, 0, 5)); 25976 assert_true (ai_move (ai, 3, 6)); 25977 assert_true (ai_move (ai, 3, 5)); 25978 assert_true (ai_move (ai, 6, 2)); 25979 assert_true (ai_move (ai, 7, 2)); 25980 assert_true (ai_move (ai, 5, 0)); 25981 assert_true (ai_move (ai, 2, 2)); 25982 assert_true (ai_move (ai, 5, 6)); 25983 assert_true (ai_move (ai, 7, 4)); 25984 assert_true (ai_move (ai, 1, 6)); 25985 assert_true (ai_move (ai, 5, 5)); 25986 assert_true (ai_move (ai, 5, 3)); 25987 assert_true (ai_move (ai, 2, 4)); 25988 assert_true (ai_move (ai, 4, 6)); 25989 assert_true (ai_move (ai, 7, 5)); 25990 assert_true (ai_move (ai, 2, 6)); 25991 assert_true (ai_move (ai, 0, 4)); 25992 assert_true (ai_move (ai, 0, 6)); 25993 assert_true (ai_move (ai, 5, 7)); 25994 assert_true (ai_move (ai, 4, 7)); 25995 assert_true (ai_move (ai, 3, 7)); 25996 assert_true (ai_move (ai, 2, 7)); 25997 assert_true (ai_move (ai, 3, 0)); 25998 assert_true (ai_move (ai, 6, 7)); 25999 assert_true (ai_move (ai, 4, 0)); 26000 assert_true (ai_move (ai, 0, 2)); 26001 assert_true (ai_move (ai, 0, 7)); 26002 assert_true (ai_move (ai, 1, 1)); 26003 assert_true (ai_move (ai, 1, 7)); 26004 assert_true (ai_move (ai, 6, 6)); 26005 assert_true (ai_move (ai, 7, 7)); 26006 assert_true (ai_move (ai, 7, 3)); 26007 assert_true (ai_move (ai, 7, 6)); 26008 assert_true (ai_move (ai, 6, 0)); 26009 assert_true (ai_move (ai, 0, 0)); 26010 assert_true (ai_move (ai, 0, 1)); 26011 assert_true (ai_move (ai, 1, 0)); 26012 assert_true (ai_move (ai, 6, 1)); 26013 assert_true (ai_move (ai, 7, 0)); 26014 assert_true (ai_move (ai, 7, 1)); 26015 } 26016 26017 private static inline void test_complete_reversi_game_332 () 26018 { 26019 /* 0 1 2 3 4 5 6 7 */ 26020 string [] board = {/* 0 */ " . . . . . . . .", 26021 /* 1 */ " . . . . . . . .", 26022 /* 2 */ " . . . . . . . .", 26023 /* 3 */ " . . . D D . . .", 26024 /* 4 */ " . . . D L L . .", 26025 /* 5 */ " . . D . L . . .", 26026 /* 6 */ " . . . L . . . .", 26027 /* 7 */ " . . . . . . . ."}; 26028 26029 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 26030 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 26031 26032 assert_true (ai_move (ai, 5, 6)); 26033 assert_true (ai_move (ai, 1, 4)); 26034 assert_true (ai_move (ai, 6, 5)); 26035 assert_true (ai_move (ai, 4, 6)); 26036 assert_true (ai_move (ai, 2, 7)); 26037 assert_true (ai_move (ai, 6, 4)); 26038 assert_true (ai_move (ai, 4, 7)); 26039 assert_true (ai_move (ai, 2, 2)); 26040 assert_true (ai_move (ai, 0, 3)); 26041 assert_true (ai_move (ai, 2, 4)); 26042 assert_true (ai_move (ai, 6, 3)); 26043 assert_true (ai_move (ai, 2, 6)); 26044 assert_true (ai_move (ai, 2, 3)); 26045 assert_true (ai_move (ai, 7, 4)); 26046 assert_true (ai_move (ai, 2, 1)); 26047 assert_true (ai_move (ai, 5, 2)); 26048 assert_true (ai_move (ai, 7, 2)); 26049 assert_true (ai_move (ai, 6, 2)); 26050 assert_true (ai_move (ai, 4, 2)); 26051 assert_true (ai_move (ai, 4, 1)); 26052 assert_true (ai_move (ai, 3, 2)); 26053 assert_true (ai_move (ai, 0, 5)); 26054 assert_true (ai_move (ai, 3, 1)); 26055 assert_true (ai_move (ai, 2, 0)); 26056 assert_true (ai_move (ai, 1, 2)); 26057 assert_true (ai_move (ai, 5, 3)); 26058 assert_true (ai_move (ai, 7, 3)); 26059 assert_true (ai_move (ai, 0, 2)); 26060 assert_true (ai_move (ai, 5, 1)); 26061 assert_true (ai_move (ai, 0, 4)); 26062 assert_true (ai_move (ai, 7, 5)); 26063 assert_true (ai_move (ai, 3, 5)); 26064 assert_true (ai_move (ai, 3, 0)); 26065 assert_true (ai_move (ai, 5, 0)); 26066 assert_true (ai_move (ai, 4, 0)); 26067 assert_true (ai_move (ai, 5, 5)); 26068 assert_true (ai_move (ai, 1, 3)); 26069 assert_true (ai_move (ai, 1, 5)); 26070 assert_true (ai_move (ai, 6, 1)); 26071 assert_true (ai_move (ai, 7, 0)); 26072 assert_true (ai_move (ai, 6, 0)); 26073 assert_true (ai_move (ai, 1, 1)); 26074 assert_true (ai_move (ai, 0, 6)); 26075 assert_true (ai_move (ai, 0, 7)); 26076 assert_true (ai_move (ai, 1, 6)); 26077 assert_true (ai_move (ai, 1, 7)); 26078 assert_true (ai_move (ai, 0, 0)); 26079 assert_true (ai_move (ai, 1, 0)); 26080 assert_true (ai_move (ai, 0, 1)); 26081 assert_true (ai_move (ai, 7, 1)); 26082 assert_true (ai_move (ai, 6, 6)); 26083 assert_true (ai_move (ai, 3, 7)); 26084 assert_true (game.pass ()); 26085 assert_true (ai_move (ai, 5, 7)); 26086 assert_true (ai_move (ai, 6, 7)); 26087 assert_true (ai_move (ai, 7, 6)); 26088 assert_true (ai_move (ai, 7, 7)); 26089 } 26090 26091 private static inline void test_complete_reversi_game_333 () 26092 { 26093 /* 0 1 2 3 4 5 6 7 */ 26094 string [] board = {/* 0 */ " . . . . . . . .", 26095 /* 1 */ " . . . . . . . .", 26096 /* 2 */ " . . . L . . . .", 26097 /* 3 */ " . . . D L . . .", 26098 /* 4 */ " . . . D L L . .", 26099 /* 5 */ " . . D . D . . .", 26100 /* 6 */ " . . . . . . . .", 26101 /* 7 */ " . . . . . . . ."}; 26102 26103 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 26104 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 26105 26106 assert_true (ai_move (ai, 6, 3)); 26107 assert_true (ai_move (ai, 6, 5)); 26108 assert_true (ai_move (ai, 3, 1)); 26109 assert_true (ai_move (ai, 2, 1)); 26110 assert_true (ai_move (ai, 5, 2)); 26111 assert_true (ai_move (ai, 4, 6)); 26112 assert_true (ai_move (ai, 3, 6)); 26113 assert_true (ai_move (ai, 6, 4)); 26114 assert_true (ai_move (ai, 4, 7)); 26115 assert_true (ai_move (ai, 7, 2)); 26116 assert_true (ai_move (ai, 7, 6)); 26117 assert_true (ai_move (ai, 3, 0)); 26118 assert_true (ai_move (ai, 5, 5)); 26119 assert_true (ai_move (ai, 4, 1)); 26120 assert_true (ai_move (ai, 6, 1)); 26121 assert_true (ai_move (ai, 3, 7)); 26122 assert_true (ai_move (ai, 2, 7)); 26123 assert_true (ai_move (ai, 5, 3)); 26124 assert_true (ai_move (ai, 5, 6)); 26125 assert_true (ai_move (ai, 4, 2)); 26126 assert_true (ai_move (ai, 2, 2)); 26127 assert_true (ai_move (ai, 5, 1)); 26128 assert_true (ai_move (ai, 5, 0)); 26129 assert_true (ai_move (ai, 2, 3)); 26130 assert_true (ai_move (ai, 1, 2)); 26131 assert_true (ai_move (ai, 1, 3)); 26132 assert_true (ai_move (ai, 2, 0)); 26133 assert_true (ai_move (ai, 4, 0)); 26134 assert_true (ai_move (ai, 7, 5)); 26135 assert_true (ai_move (ai, 6, 2)); 26136 assert_true (ai_move (ai, 2, 4)); 26137 assert_true (ai_move (ai, 5, 7)); 26138 assert_true (ai_move (ai, 7, 1)); 26139 assert_true (ai_move (ai, 1, 7)); 26140 assert_true (ai_move (ai, 1, 4)); 26141 assert_true (ai_move (ai, 0, 5)); 26142 assert_true (ai_move (ai, 0, 3)); 26143 assert_true (ai_move (ai, 0, 2)); 26144 assert_true (ai_move (ai, 0, 1)); 26145 assert_true (ai_move (ai, 2, 6)); 26146 assert_true (ai_move (ai, 3, 5)); 26147 assert_true (ai_move (ai, 1, 5)); 26148 assert_true (ai_move (ai, 7, 3)); 26149 assert_true (ai_move (ai, 7, 4)); 26150 assert_true (ai_move (ai, 6, 6)); 26151 assert_true (ai_move (ai, 7, 7)); 26152 assert_true (ai_move (ai, 6, 7)); 26153 assert_true (ai_move (ai, 7, 0)); 26154 assert_true (ai_move (ai, 0, 7)); 26155 assert_true (ai_move (ai, 6, 0)); 26156 assert_true (ai_move (ai, 1, 6)); 26157 assert_true (ai_move (ai, 1, 0)); 26158 assert_true (ai_move (ai, 1, 1)); 26159 assert_true (ai_move (ai, 0, 0)); 26160 assert_true (game.pass ()); 26161 assert_true (ai_move (ai, 0, 6)); 26162 assert_true (ai_move (ai, 0, 4)); 26163 } 26164 26165 private static inline void test_complete_reversi_game_334 () 26166 { 26167 /* 0 1 2 3 4 5 6 7 */ 26168 string [] board = {/* 0 */ " . . . . . . . .", 26169 /* 1 */ " . . . . . . . .", 26170 /* 2 */ " . . . . . . . .", 26171 /* 3 */ " . . . D D . . .", 26172 /* 4 */ " . . L L L L . .", 26173 /* 5 */ " . . D . D . . .", 26174 /* 6 */ " . . . . . . . .", 26175 /* 7 */ " . . . . . . . ."}; 26176 26177 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 26178 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 26179 26180 assert_true (ai_move (ai, 1, 5)); 26181 assert_true (ai_move (ai, 5, 6)); 26182 assert_true (ai_move (ai, 6, 5)); 26183 assert_true (ai_move (ai, 6, 3)); 26184 assert_true (ai_move (ai, 4, 7)); 26185 assert_true (ai_move (ai, 1, 4)); 26186 assert_true (ai_move (ai, 0, 3)); 26187 assert_true (ai_move (ai, 2, 2)); 26188 assert_true (ai_move (ai, 4, 2)); 26189 assert_true (ai_move (ai, 5, 2)); 26190 assert_true (ai_move (ai, 6, 2)); 26191 assert_true (ai_move (ai, 4, 1)); 26192 assert_true (ai_move (ai, 5, 1)); 26193 assert_true (ai_move (ai, 5, 0)); 26194 assert_true (ai_move (ai, 5, 5)); 26195 assert_true (ai_move (ai, 5, 7)); 26196 assert_true (ai_move (ai, 4, 6)); 26197 assert_true (ai_move (ai, 7, 5)); 26198 assert_true (ai_move (ai, 7, 4)); 26199 assert_true (ai_move (ai, 7, 3)); 26200 assert_true (ai_move (ai, 4, 0)); 26201 assert_true (ai_move (ai, 3, 7)); 26202 assert_true (ai_move (ai, 3, 6)); 26203 assert_true (ai_move (ai, 3, 0)); 26204 assert_true (ai_move (ai, 5, 3)); 26205 assert_true (ai_move (ai, 3, 2)); 26206 assert_true (ai_move (ai, 3, 1)); 26207 assert_true (ai_move (ai, 2, 1)); 26208 assert_true (ai_move (ai, 1, 2)); 26209 assert_true (ai_move (ai, 2, 3)); 26210 assert_true (ai_move (ai, 1, 3)); 26211 assert_true (ai_move (ai, 2, 6)); 26212 assert_true (ai_move (ai, 3, 5)); 26213 assert_true (ai_move (ai, 6, 4)); 26214 assert_true (ai_move (ai, 7, 2)); 26215 assert_true (ai_move (ai, 7, 1)); 26216 assert_true (ai_move (ai, 2, 7)); 26217 assert_true (ai_move (ai, 0, 2)); 26218 assert_true (ai_move (ai, 6, 7)); 26219 assert_true (ai_move (ai, 0, 4)); 26220 assert_true (ai_move (ai, 2, 0)); 26221 assert_true (ai_move (ai, 0, 5)); 26222 assert_true (ai_move (ai, 6, 0)); 26223 assert_true (ai_move (ai, 7, 6)); 26224 assert_true (ai_move (ai, 6, 6)); 26225 assert_true (ai_move (ai, 1, 1)); 26226 assert_true (ai_move (ai, 0, 0)); 26227 assert_true (ai_move (ai, 1, 0)); 26228 assert_true (ai_move (ai, 0, 1)); 26229 assert_true (ai_move (ai, 7, 0)); 26230 assert_true (ai_move (ai, 0, 6)); 26231 assert_true (ai_move (ai, 1, 7)); 26232 assert_true (ai_move (ai, 0, 7)); 26233 assert_true (ai_move (ai, 1, 6)); 26234 assert_true (ai_move (ai, 6, 1)); 26235 } 26236 26237 private static inline void test_complete_reversi_game_335 () 26238 { 26239 /* 0 1 2 3 4 5 6 7 */ 26240 string [] board = {/* 0 */ " . . . . . . . .", 26241 /* 1 */ " . . . . . . . .", 26242 /* 2 */ " . . L . . . . .", 26243 /* 3 */ " . . . L D . . .", 26244 /* 4 */ " . . . D L L . .", 26245 /* 5 */ " . . D . D . . .", 26246 /* 6 */ " . . . . . . . .", 26247 /* 7 */ " . . . . . . . ."}; 26248 26249 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 26250 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 26251 26252 assert_true (ai_move (ai, 6, 5)); 26253 assert_true (ai_move (ai, 2, 4)); 26254 assert_true (ai_move (ai, 2, 3)); 26255 assert_true (ai_move (ai, 6, 4)); 26256 assert_true (ai_move (ai, 2, 1)); 26257 assert_true (ai_move (ai, 4, 6)); 26258 assert_true (ai_move (ai, 5, 6)); 26259 assert_true (ai_move (ai, 3, 6)); 26260 assert_true (ai_move (ai, 6, 3)); 26261 assert_true (ai_move (ai, 7, 4)); 26262 assert_true (ai_move (ai, 2, 7)); 26263 assert_true (ai_move (ai, 5, 2)); 26264 assert_true (ai_move (ai, 4, 7)); 26265 assert_true (ai_move (ai, 4, 2)); 26266 assert_true (ai_move (ai, 7, 2)); 26267 assert_true (ai_move (ai, 6, 2)); 26268 assert_true (ai_move (ai, 3, 2)); 26269 assert_true (ai_move (ai, 1, 4)); 26270 assert_true (ai_move (ai, 1, 5)); 26271 assert_true (ai_move (ai, 1, 2)); 26272 assert_true (ai_move (ai, 1, 3)); 26273 assert_true (ai_move (ai, 3, 1)); 26274 assert_true (ai_move (ai, 0, 2)); 26275 assert_true (ai_move (ai, 5, 1)); 26276 assert_true (ai_move (ai, 5, 0)); 26277 assert_true (ai_move (ai, 0, 5)); 26278 assert_true (ai_move (ai, 0, 3)); 26279 assert_true (ai_move (ai, 3, 5)); 26280 assert_true (ai_move (ai, 2, 6)); 26281 assert_true (ai_move (ai, 0, 4)); 26282 assert_true (ai_move (ai, 0, 6)); 26283 assert_true (ai_move (ai, 4, 1)); 26284 assert_true (ai_move (ai, 3, 0)); 26285 assert_true (ai_move (ai, 4, 0)); 26286 assert_true (ai_move (ai, 5, 5)); 26287 assert_true (ai_move (ai, 7, 5)); 26288 assert_true (ai_move (ai, 5, 3)); 26289 assert_true (ai_move (ai, 2, 0)); 26290 assert_true (ai_move (ai, 1, 0)); 26291 assert_true (ai_move (ai, 5, 7)); 26292 assert_true (ai_move (ai, 1, 1)); 26293 assert_true (ai_move (ai, 3, 7)); 26294 assert_true (ai_move (ai, 6, 7)); 26295 assert_true (ai_move (ai, 0, 0)); 26296 assert_true (ai_move (ai, 7, 3)); 26297 assert_true (ai_move (ai, 6, 0)); 26298 assert_true (ai_move (ai, 7, 6)); 26299 assert_true (ai_move (ai, 6, 6)); 26300 assert_true (ai_move (ai, 6, 1)); 26301 assert_true (ai_move (ai, 0, 1)); 26302 assert_true (game.pass ()); 26303 assert_true (ai_move (ai, 0, 7)); 26304 assert_true (game.pass ()); 26305 assert_true (ai_move (ai, 1, 7)); 26306 assert_true (ai_move (ai, 1, 6)); 26307 assert_true (ai_move (ai, 7, 7)); 26308 assert_true (game.pass ()); 26309 assert_true (ai_move (ai, 7, 1)); 26310 assert_true (ai_move (ai, 7, 0)); 26311 } 26312 26313 private static inline void test_complete_reversi_game_336 () 26314 { 26315 /* 0 1 2 3 4 5 6 7 */ 26316 string [] board = {/* 0 */ " . . . . . . . .", 26317 /* 1 */ " . . . . . . . .", 26318 /* 2 */ " . . . . . . . .", 26319 /* 3 */ " . . D D D . . .", 26320 /* 4 */ " . . . D L L . .", 26321 /* 5 */ " . . . . L . . .", 26322 /* 6 */ " . . . . L . . .", 26323 /* 7 */ " . . . . . . . ."}; 26324 26325 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 26326 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 26327 26328 assert_true (ai_move (ai, 6, 5)); 26329 assert_true (ai_move (ai, 6, 3)); 26330 assert_true (ai_move (ai, 6, 4)); 26331 assert_true (ai_move (ai, 1, 2)); 26332 assert_true (ai_move (ai, 2, 5)); 26333 assert_true (ai_move (ai, 4, 2)); 26334 assert_true (ai_move (ai, 5, 6)); 26335 assert_true (ai_move (ai, 3, 6)); 26336 assert_true (ai_move (ai, 1, 3)); 26337 assert_true (ai_move (ai, 7, 4)); 26338 assert_true (ai_move (ai, 5, 1)); 26339 assert_true (ai_move (ai, 4, 1)); 26340 assert_true (ai_move (ai, 4, 7)); 26341 assert_true (ai_move (ai, 2, 7)); 26342 assert_true (ai_move (ai, 3, 2)); 26343 assert_true (ai_move (ai, 2, 2)); 26344 assert_true (ai_move (ai, 2, 1)); 26345 assert_true (ai_move (ai, 5, 3)); 26346 assert_true (ai_move (ai, 0, 2)); 26347 assert_true (ai_move (ai, 1, 4)); 26348 assert_true (ai_move (ai, 5, 2)); 26349 assert_true (ai_move (ai, 6, 2)); 26350 assert_true (ai_move (ai, 7, 5)); 26351 assert_true (ai_move (ai, 3, 1)); 26352 assert_true (ai_move (ai, 2, 0)); 26353 assert_true (ai_move (ai, 2, 4)); 26354 assert_true (ai_move (ai, 3, 0)); 26355 assert_true (ai_move (ai, 0, 3)); 26356 assert_true (ai_move (ai, 0, 5)); 26357 assert_true (ai_move (ai, 0, 4)); 26358 assert_true (ai_move (ai, 1, 5)); 26359 assert_true (ai_move (ai, 2, 6)); 26360 assert_true (ai_move (ai, 7, 3)); 26361 assert_true (ai_move (ai, 6, 1)); 26362 assert_true (ai_move (ai, 3, 5)); 26363 assert_true (ai_move (ai, 1, 6)); 26364 assert_true (ai_move (ai, 5, 5)); 26365 assert_true (ai_move (ai, 5, 7)); 26366 assert_true (ai_move (ai, 3, 7)); 26367 assert_true (ai_move (ai, 7, 2)); 26368 assert_true (ai_move (ai, 6, 6)); 26369 assert_true (ai_move (ai, 5, 0)); 26370 assert_true (ai_move (ai, 4, 0)); 26371 assert_true (ai_move (ai, 1, 0)); 26372 assert_true (ai_move (ai, 7, 1)); 26373 assert_true (ai_move (ai, 7, 0)); 26374 assert_true (ai_move (ai, 6, 0)); 26375 assert_true (ai_move (ai, 1, 7)); 26376 assert_true (ai_move (ai, 0, 0)); 26377 assert_true (ai_move (ai, 0, 1)); 26378 assert_true (ai_move (ai, 0, 7)); 26379 assert_true (ai_move (ai, 1, 1)); 26380 assert_true (ai_move (ai, 6, 7)); 26381 assert_true (ai_move (ai, 0, 6)); 26382 assert_true (game.pass ()); 26383 assert_true (ai_move (ai, 7, 6)); 26384 assert_true (ai_move (ai, 7, 7)); 26385 } 26386 26387 private static inline void test_complete_reversi_game_337 () 26388 { 26389 /* 0 1 2 3 4 5 6 7 */ 26390 string [] board = {/* 0 */ " . . . . . . . .", 26391 /* 1 */ " . . . . . . . .", 26392 /* 2 */ " . . . . L . . .", 26393 /* 3 */ " . . D D L . . .", 26394 /* 4 */ " . . . D L L . .", 26395 /* 5 */ " . . . . D . . .", 26396 /* 6 */ " . . . . . . . .", 26397 /* 7 */ " . . . . . . . ."}; 26398 26399 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 26400 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 26401 26402 assert_true (ai_move (ai, 5, 1)); 26403 assert_true (ai_move (ai, 4, 1)); 26404 assert_true (ai_move (ai, 6, 3)); 26405 assert_true (ai_move (ai, 6, 5)); 26406 assert_true (ai_move (ai, 3, 1)); 26407 assert_true (ai_move (ai, 3, 6)); 26408 assert_true (ai_move (ai, 5, 6)); 26409 assert_true (ai_move (ai, 4, 6)); 26410 assert_true (ai_move (ai, 7, 4)); 26411 assert_true (ai_move (ai, 7, 2)); 26412 assert_true (ai_move (ai, 3, 2)); 26413 assert_true (ai_move (ai, 6, 4)); 26414 assert_true (ai_move (ai, 5, 2)); 26415 assert_true (ai_move (ai, 2, 4)); 26416 assert_true (ai_move (ai, 1, 5)); 26417 assert_true (ai_move (ai, 1, 4)); 26418 assert_true (ai_move (ai, 0, 5)); 26419 assert_true (ai_move (ai, 1, 2)); 26420 assert_true (ai_move (ai, 1, 3)); 26421 assert_true (ai_move (ai, 0, 2)); 26422 assert_true (ai_move (ai, 0, 3)); 26423 assert_true (ai_move (ai, 2, 2)); 26424 assert_true (ai_move (ai, 2, 1)); 26425 assert_true (ai_move (ai, 5, 0)); 26426 assert_true (ai_move (ai, 2, 5)); 26427 assert_true (ai_move (ai, 3, 0)); 26428 assert_true (ai_move (ai, 2, 0)); 26429 assert_true (ai_move (ai, 6, 2)); 26430 assert_true (ai_move (ai, 5, 3)); 26431 assert_true (ai_move (ai, 4, 0)); 26432 assert_true (ai_move (ai, 6, 0)); 26433 assert_true (ai_move (ai, 7, 6)); 26434 assert_true (ai_move (ai, 5, 5)); 26435 assert_true (ai_move (ai, 4, 7)); 26436 assert_true (ai_move (ai, 5, 7)); 26437 assert_true (ai_move (ai, 3, 5)); 26438 assert_true (ai_move (ai, 0, 4)); 26439 assert_true (ai_move (ai, 0, 6)); 26440 assert_true (ai_move (ai, 2, 7)); 26441 assert_true (ai_move (ai, 3, 7)); 26442 assert_true (ai_move (ai, 2, 6)); 26443 assert_true (ai_move (ai, 0, 1)); 26444 assert_true (ai_move (ai, 7, 3)); 26445 assert_true (ai_move (ai, 7, 5)); 26446 assert_true (ai_move (ai, 6, 6)); 26447 assert_true (ai_move (ai, 7, 1)); 26448 assert_true (ai_move (ai, 1, 1)); 26449 assert_true (ai_move (ai, 7, 7)); 26450 assert_true (ai_move (ai, 6, 7)); 26451 assert_true (ai_move (ai, 0, 0)); 26452 assert_true (ai_move (ai, 6, 1)); 26453 assert_true (ai_move (ai, 1, 0)); 26454 assert_true (ai_move (ai, 1, 6)); 26455 assert_true (ai_move (ai, 7, 0)); 26456 assert_true (game.pass ()); 26457 assert_true (ai_move (ai, 1, 7)); 26458 assert_true (ai_move (ai, 0, 7)); 26459 } 26460 26461 private static inline void test_complete_reversi_game_338 () 26462 { 26463 /* 0 1 2 3 4 5 6 7 */ 26464 string [] board = {/* 0 */ " . . . . . . . .", 26465 /* 1 */ " . . . . . . . .", 26466 /* 2 */ " . . . . . . . .", 26467 /* 3 */ " . . D D D . . .", 26468 /* 4 */ " . . . D L L . .", 26469 /* 5 */ " . . . . L . . .", 26470 /* 6 */ " . . . L . . . .", 26471 /* 7 */ " . . . . . . . ."}; 26472 26473 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 26474 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 26475 26476 assert_true (ai_move (ai, 6, 5)); 26477 assert_true (ai_move (ai, 6, 3)); 26478 assert_true (ai_move (ai, 6, 4)); 26479 assert_true (ai_move (ai, 1, 2)); 26480 assert_true (ai_move (ai, 4, 6)); 26481 assert_true (ai_move (ai, 5, 2)); 26482 assert_true (ai_move (ai, 1, 3)); 26483 assert_true (ai_move (ai, 1, 4)); 26484 assert_true (ai_move (ai, 7, 2)); 26485 assert_true (ai_move (ai, 5, 6)); 26486 assert_true (ai_move (ai, 4, 1)); 26487 assert_true (ai_move (ai, 3, 2)); 26488 assert_true (ai_move (ai, 2, 7)); 26489 assert_true (ai_move (ai, 5, 0)); 26490 assert_true (ai_move (ai, 3, 0)); 26491 assert_true (ai_move (ai, 2, 6)); 26492 assert_true (ai_move (ai, 4, 7)); 26493 assert_true (ai_move (ai, 5, 5)); 26494 assert_true (ai_move (ai, 2, 1)); 26495 assert_true (ai_move (ai, 3, 5)); 26496 assert_true (ai_move (ai, 2, 5)); 26497 assert_true (ai_move (ai, 3, 1)); 26498 assert_true (ai_move (ai, 5, 3)); 26499 assert_true (ai_move (ai, 5, 1)); 26500 assert_true (ai_move (ai, 2, 2)); 26501 assert_true (ai_move (ai, 2, 0)); 26502 assert_true (ai_move (ai, 1, 1)); 26503 assert_true (ai_move (ai, 5, 7)); 26504 assert_true (ai_move (ai, 2, 4)); 26505 assert_true (ai_move (ai, 4, 0)); 26506 assert_true (ai_move (ai, 6, 2)); 26507 assert_true (ai_move (ai, 1, 5)); 26508 assert_true (ai_move (ai, 0, 5)); 26509 assert_true (ai_move (ai, 0, 4)); 26510 assert_true (ai_move (ai, 4, 2)); 26511 assert_true (ai_move (ai, 7, 5)); 26512 assert_true (ai_move (ai, 7, 3)); 26513 assert_true (ai_move (ai, 0, 6)); 26514 assert_true (ai_move (ai, 0, 2)); 26515 assert_true (ai_move (ai, 3, 7)); 26516 assert_true (ai_move (ai, 6, 7)); 26517 assert_true (ai_move (ai, 0, 0)); 26518 assert_true (ai_move (ai, 1, 7)); 26519 assert_true (ai_move (ai, 0, 1)); 26520 assert_true (ai_move (ai, 0, 3)); 26521 assert_true (ai_move (ai, 6, 6)); 26522 assert_true (ai_move (ai, 0, 7)); 26523 assert_true (ai_move (ai, 1, 6)); 26524 assert_true (ai_move (ai, 1, 0)); 26525 assert_true (ai_move (ai, 7, 4)); 26526 assert_true (ai_move (ai, 7, 7)); 26527 assert_true (ai_move (ai, 7, 1)); 26528 assert_true (ai_move (ai, 7, 6)); 26529 assert_true (game.pass ()); 26530 assert_true (ai_move (ai, 7, 0)); 26531 assert_true (game.pass ()); 26532 assert_true (ai_move (ai, 6, 1)); 26533 assert_true (ai_move (ai, 6, 0)); 26534 } 26535 26536 private static inline void test_complete_reversi_game_339 () 26537 { 26538 /* 0 1 2 3 4 5 6 7 */ 26539 string [] board = {/* 0 */ " . . . . . . . .", 26540 /* 1 */ " . . . . . . . .", 26541 /* 2 */ " . . . L . . . .", 26542 /* 3 */ " . . D D L . . .", 26543 /* 4 */ " . . . D L L . .", 26544 /* 5 */ " . . . . D . . .", 26545 /* 6 */ " . . . . . . . .", 26546 /* 7 */ " . . . . . . . ."}; 26547 26548 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 26549 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 26550 26551 assert_true (ai_move (ai, 6, 3)); 26552 assert_true (ai_move (ai, 6, 5)); 26553 assert_true (ai_move (ai, 4, 1)); 26554 assert_true (ai_move (ai, 2, 1)); 26555 assert_true (ai_move (ai, 3, 1)); 26556 assert_true (ai_move (ai, 3, 6)); 26557 assert_true (ai_move (ai, 5, 6)); 26558 assert_true (ai_move (ai, 4, 6)); 26559 assert_true (ai_move (ai, 7, 4)); 26560 assert_true (ai_move (ai, 7, 2)); 26561 assert_true (ai_move (ai, 6, 4)); 26562 assert_true (ai_move (ai, 2, 5)); 26563 assert_true (ai_move (ai, 5, 2)); 26564 assert_true (ai_move (ai, 1, 2)); 26565 assert_true (ai_move (ai, 1, 4)); 26566 assert_true (ai_move (ai, 0, 3)); 26567 assert_true (ai_move (ai, 5, 3)); 26568 assert_true (ai_move (ai, 5, 0)); 26569 assert_true (ai_move (ai, 3, 0)); 26570 assert_true (ai_move (ai, 5, 1)); 26571 assert_true (ai_move (ai, 1, 3)); 26572 assert_true (ai_move (ai, 5, 5)); 26573 assert_true (ai_move (ai, 4, 2)); 26574 assert_true (ai_move (ai, 5, 7)); 26575 assert_true (ai_move (ai, 6, 2)); 26576 assert_true (ai_move (ai, 2, 4)); 26577 assert_true (ai_move (ai, 2, 6)); 26578 assert_true (ai_move (ai, 1, 5)); 26579 assert_true (ai_move (ai, 2, 2)); 26580 assert_true (ai_move (ai, 3, 5)); 26581 assert_true (ai_move (ai, 2, 7)); 26582 assert_true (ai_move (ai, 7, 5)); 26583 assert_true (ai_move (ai, 0, 5)); 26584 assert_true (ai_move (ai, 3, 7)); 26585 assert_true (ai_move (ai, 2, 0)); 26586 assert_true (ai_move (ai, 7, 3)); 26587 assert_true (ai_move (ai, 0, 2)); 26588 assert_true (ai_move (ai, 0, 4)); 26589 assert_true (ai_move (ai, 4, 0)); 26590 assert_true (ai_move (ai, 1, 0)); 26591 assert_true (ai_move (ai, 4, 7)); 26592 assert_true (ai_move (ai, 1, 7)); 26593 assert_true (ai_move (ai, 1, 1)); 26594 assert_true (ai_move (ai, 0, 0)); 26595 assert_true (ai_move (ai, 0, 1)); 26596 assert_true (ai_move (ai, 1, 6)); 26597 assert_true (ai_move (ai, 0, 7)); 26598 assert_true (ai_move (ai, 0, 6)); 26599 assert_true (ai_move (ai, 6, 7)); 26600 assert_true (ai_move (ai, 6, 1)); 26601 assert_true (ai_move (ai, 7, 0)); 26602 assert_true (ai_move (ai, 6, 0)); 26603 assert_true (ai_move (ai, 7, 1)); 26604 assert_true (ai_move (ai, 6, 6)); 26605 assert_true (ai_move (ai, 7, 6)); 26606 assert_true (game.pass ()); 26607 assert_true (ai_move (ai, 7, 7)); 26608 } 26609 26610 private static inline void test_complete_reversi_game_340 () 26611 { 26612 /* 0 1 2 3 4 5 6 7 */ 26613 string [] board = {/* 0 */ " . . . . . . . .", 26614 /* 1 */ " . . . . . . . .", 26615 /* 2 */ " . . . . . . . .", 26616 /* 3 */ " . . D D D . . .", 26617 /* 4 */ " . . L L L L . .", 26618 /* 5 */ " . . . . D . . .", 26619 /* 6 */ " . . . . . . . .", 26620 /* 7 */ " . . . . . . . ."}; 26621 26622 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 26623 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 26624 26625 assert_true (ai_move (ai, 1, 5)); 26626 assert_true (ai_move (ai, 5, 6)); 26627 assert_true (ai_move (ai, 6, 5)); 26628 assert_true (ai_move (ai, 6, 3)); 26629 assert_true (ai_move (ai, 4, 7)); 26630 assert_true (ai_move (ai, 1, 4)); 26631 assert_true (ai_move (ai, 0, 5)); 26632 assert_true (ai_move (ai, 1, 2)); 26633 assert_true (ai_move (ai, 3, 2)); 26634 assert_true (ai_move (ai, 2, 2)); 26635 assert_true (ai_move (ai, 0, 2)); 26636 assert_true (ai_move (ai, 4, 1)); 26637 assert_true (ai_move (ai, 2, 1)); 26638 assert_true (ai_move (ai, 3, 1)); 26639 assert_true (ai_move (ai, 4, 0)); 26640 assert_true (ai_move (ai, 2, 0)); 26641 assert_true (ai_move (ai, 1, 3)); 26642 assert_true (ai_move (ai, 3, 0)); 26643 assert_true (ai_move (ai, 1, 0)); 26644 assert_true (ai_move (ai, 5, 2)); 26645 assert_true (ai_move (ai, 5, 0)); 26646 assert_true (ai_move (ai, 4, 2)); 26647 assert_true (ai_move (ai, 2, 5)); 26648 assert_true (ai_move (ai, 5, 1)); 26649 assert_true (ai_move (ai, 3, 5)); 26650 assert_true (ai_move (ai, 2, 6)); 26651 assert_true (ai_move (ai, 3, 6)); 26652 assert_true (ai_move (ai, 2, 7)); 26653 assert_true (ai_move (ai, 5, 3)); 26654 assert_true (ai_move (ai, 6, 2)); 26655 assert_true (ai_move (ai, 7, 2)); 26656 assert_true (ai_move (ai, 6, 7)); 26657 assert_true (ai_move (ai, 7, 4)); 26658 assert_true (ai_move (ai, 7, 3)); 26659 assert_true (ai_move (ai, 5, 5)); 26660 assert_true (ai_move (ai, 7, 5)); 26661 assert_true (ai_move (ai, 7, 6)); 26662 assert_true (ai_move (ai, 4, 6)); 26663 assert_true (ai_move (ai, 6, 4)); 26664 assert_true (ai_move (ai, 0, 3)); 26665 assert_true (ai_move (ai, 0, 4)); 26666 assert_true (ai_move (ai, 6, 6)); 26667 assert_true (ai_move (ai, 7, 7)); 26668 assert_true (ai_move (ai, 7, 1)); 26669 assert_true (ai_move (ai, 5, 7)); 26670 assert_true (ai_move (ai, 6, 1)); 26671 assert_true (ai_move (ai, 3, 7)); 26672 assert_true (ai_move (ai, 1, 1)); 26673 assert_true (ai_move (ai, 1, 7)); 26674 assert_true (ai_move (ai, 0, 1)); 26675 assert_true (ai_move (ai, 0, 0)); 26676 assert_true (ai_move (ai, 1, 6)); 26677 assert_true (ai_move (ai, 0, 7)); 26678 assert_true (game.pass ()); 26679 assert_true (ai_move (ai, 0, 6)); 26680 assert_true (game.pass ()); 26681 assert_true (ai_move (ai, 7, 0)); 26682 assert_true (ai_move (ai, 6, 0)); 26683 } 26684 26685 private static inline void test_complete_reversi_game_341 () 26686 { 26687 /* 0 1 2 3 4 5 6 7 */ 26688 string [] board = {/* 0 */ " . . . . . . . .", 26689 /* 1 */ " . . . . . . . .", 26690 /* 2 */ " . . L . . . . .", 26691 /* 3 */ " . . D L D . . .", 26692 /* 4 */ " . . . D L L . .", 26693 /* 5 */ " . . . . D . . .", 26694 /* 6 */ " . . . . . . . .", 26695 /* 7 */ " . . . . . . . ."}; 26696 26697 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 26698 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 26699 26700 assert_true (ai_move (ai, 2, 1)); 26701 assert_true (ai_move (ai, 3, 6)); 26702 assert_true (ai_move (ai, 6, 5)); 26703 assert_true (ai_move (ai, 6, 3)); 26704 assert_true (ai_move (ai, 5, 6)); 26705 assert_true (ai_move (ai, 4, 6)); 26706 assert_true (ai_move (ai, 3, 2)); 26707 assert_true (ai_move (ai, 4, 2)); 26708 assert_true (ai_move (ai, 5, 1)); 26709 assert_true (ai_move (ai, 4, 1)); 26710 assert_true (ai_move (ai, 3, 1)); 26711 assert_true (ai_move (ai, 4, 0)); 26712 assert_true (ai_move (ai, 5, 0)); 26713 assert_true (ai_move (ai, 6, 0)); 26714 assert_true (ai_move (ai, 6, 4)); 26715 assert_true (ai_move (ai, 1, 2)); 26716 assert_true (ai_move (ai, 1, 4)); 26717 assert_true (ai_move (ai, 3, 0)); 26718 assert_true (ai_move (ai, 7, 2)); 26719 assert_true (ai_move (ai, 2, 4)); 26720 assert_true (ai_move (ai, 4, 7)); 26721 assert_true (ai_move (ai, 5, 2)); 26722 assert_true (ai_move (ai, 2, 7)); 26723 assert_true (ai_move (ai, 0, 5)); 26724 assert_true (ai_move (ai, 0, 4)); 26725 assert_true (ai_move (ai, 1, 5)); 26726 assert_true (ai_move (ai, 0, 6)); 26727 assert_true (ai_move (ai, 1, 3)); 26728 assert_true (ai_move (ai, 2, 6)); 26729 assert_true (ai_move (ai, 5, 5)); 26730 assert_true (ai_move (ai, 0, 1)); 26731 assert_true (ai_move (ai, 5, 3)); 26732 assert_true (ai_move (ai, 6, 2)); 26733 assert_true (ai_move (ai, 2, 5)); 26734 assert_true (ai_move (ai, 3, 5)); 26735 assert_true (ai_move (ai, 7, 5)); 26736 assert_true (ai_move (ai, 7, 3)); 26737 assert_true (ai_move (ai, 7, 4)); 26738 assert_true (ai_move (ai, 7, 6)); 26739 assert_true (ai_move (ai, 3, 7)); 26740 assert_true (ai_move (ai, 2, 0)); 26741 assert_true (ai_move (ai, 1, 0)); 26742 assert_true (ai_move (ai, 6, 1)); 26743 assert_true (ai_move (ai, 5, 7)); 26744 assert_true (ai_move (ai, 6, 7)); 26745 assert_true (ai_move (ai, 7, 0)); 26746 assert_true (ai_move (ai, 6, 6)); 26747 assert_true (ai_move (ai, 7, 1)); 26748 assert_true (ai_move (ai, 1, 1)); 26749 assert_true (ai_move (ai, 7, 7)); 26750 assert_true (ai_move (ai, 0, 2)); 26751 assert_true (ai_move (ai, 0, 3)); 26752 assert_true (game.pass ()); 26753 assert_true (ai_move (ai, 1, 7)); 26754 assert_true (ai_move (ai, 1, 6)); 26755 assert_true (ai_move (ai, 0, 7)); 26756 assert_true (game.pass ()); 26757 assert_true (ai_move (ai, 0, 0)); 26758 } 26759 26760 private static inline void test_complete_reversi_game_342 () 26761 { 26762 /* 0 1 2 3 4 5 6 7 */ 26763 string [] board = {/* 0 */ " . . . . . . . .", 26764 /* 1 */ " . . . . . . . .", 26765 /* 2 */ " . . . . . L . .", 26766 /* 3 */ " . . . D D D . .", 26767 /* 4 */ " . . . L D . . .", 26768 /* 5 */ " . . . . L . . .", 26769 /* 6 */ " . . . . . L . .", 26770 /* 7 */ " . . . . . . . ."}; 26771 26772 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 26773 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 26774 26775 assert_true (ai_move (ai, 5, 1)); 26776 assert_true (ai_move (ai, 3, 2)); 26777 assert_true (ai_move (ai, 4, 6)); 26778 assert_true (ai_move (ai, 3, 6)); 26779 assert_true (ai_move (ai, 2, 1)); 26780 assert_true (ai_move (ai, 3, 1)); 26781 assert_true (ai_move (ai, 4, 7)); 26782 assert_true (ai_move (ai, 5, 5)); 26783 assert_true (ai_move (ai, 6, 4)); 26784 assert_true (ai_move (ai, 6, 2)); 26785 assert_true (ai_move (ai, 4, 2)); 26786 assert_true (ai_move (ai, 4, 0)); 26787 assert_true (ai_move (ai, 5, 7)); 26788 assert_true (ai_move (ai, 4, 1)); 26789 assert_true (ai_move (ai, 2, 0)); 26790 assert_true (ai_move (ai, 5, 4)); 26791 assert_true (ai_move (ai, 7, 2)); 26792 assert_true (ai_move (ai, 6, 5)); 26793 assert_true (ai_move (ai, 2, 2)); 26794 assert_true (ai_move (ai, 2, 3)); 26795 assert_true (ai_move (ai, 3, 0)); 26796 assert_true (ai_move (ai, 1, 2)); 26797 assert_true (ai_move (ai, 5, 0)); 26798 assert_true (ai_move (ai, 6, 3)); 26799 assert_true (ai_move (ai, 0, 2)); 26800 assert_true (ai_move (ai, 3, 7)); 26801 assert_true (ai_move (ai, 7, 5)); 26802 assert_true (ai_move (ai, 1, 1)); 26803 assert_true (ai_move (ai, 1, 3)); 26804 assert_true (ai_move (ai, 1, 0)); 26805 assert_true (ai_move (ai, 0, 0)); 26806 assert_true (ai_move (ai, 2, 4)); 26807 assert_true (ai_move (ai, 7, 3)); 26808 assert_true (ai_move (ai, 6, 7)); 26809 assert_true (ai_move (ai, 2, 5)); 26810 assert_true (ai_move (ai, 7, 4)); 26811 assert_true (ai_move (ai, 3, 5)); 26812 assert_true (ai_move (ai, 1, 4)); 26813 assert_true (ai_move (ai, 2, 6)); 26814 assert_true (ai_move (ai, 1, 5)); 26815 assert_true (ai_move (ai, 0, 4)); 26816 assert_true (ai_move (ai, 0, 3)); 26817 assert_true (ai_move (ai, 0, 5)); 26818 assert_true (ai_move (ai, 0, 1)); 26819 assert_true (ai_move (ai, 2, 7)); 26820 assert_true (ai_move (ai, 1, 7)); 26821 assert_true (ai_move (ai, 1, 6)); 26822 assert_true (ai_move (ai, 0, 7)); 26823 assert_true (ai_move (ai, 0, 6)); 26824 assert_true (ai_move (ai, 6, 6)); 26825 assert_true (ai_move (ai, 7, 7)); 26826 assert_true (ai_move (ai, 7, 6)); 26827 assert_true (game.pass ()); 26828 assert_true (ai_move (ai, 6, 1)); 26829 assert_true (ai_move (ai, 7, 0)); 26830 assert_true (ai_move (ai, 7, 1)); 26831 assert_true (ai_move (ai, 6, 0)); 26832 } 26833 26834 private static inline void test_complete_reversi_game_343 () 26835 { 26836 /* 0 1 2 3 4 5 6 7 */ 26837 string [] board = {/* 0 */ " . . . . . . . .", 26838 /* 1 */ " . . . . . . . .", 26839 /* 2 */ " . . . . . L . .", 26840 /* 3 */ " . . . D D L . .", 26841 /* 4 */ " . . . L L L . .", 26842 /* 5 */ " . . . . D . . .", 26843 /* 6 */ " . . . . . . . .", 26844 /* 7 */ " . . . . . . . ."}; 26845 26846 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 26847 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 26848 26849 assert_true (ai_move (ai, 2, 5)); 26850 assert_true (ai_move (ai, 4, 6)); 26851 assert_true (ai_move (ai, 5, 6)); 26852 assert_true (ai_move (ai, 3, 6)); 26853 assert_true (ai_move (ai, 6, 3)); 26854 assert_true (ai_move (ai, 6, 2)); 26855 assert_true (ai_move (ai, 4, 1)); 26856 assert_true (ai_move (ai, 5, 1)); 26857 assert_true (ai_move (ai, 6, 5)); 26858 assert_true (ai_move (ai, 1, 4)); 26859 assert_true (ai_move (ai, 5, 0)); 26860 assert_true (ai_move (ai, 7, 2)); 26861 assert_true (ai_move (ai, 7, 4)); 26862 assert_true (ai_move (ai, 6, 4)); 26863 assert_true (ai_move (ai, 7, 5)); 26864 assert_true (ai_move (ai, 3, 0)); 26865 assert_true (ai_move (ai, 3, 2)); 26866 assert_true (ai_move (ai, 4, 0)); 26867 assert_true (ai_move (ai, 2, 0)); 26868 assert_true (ai_move (ai, 2, 4)); 26869 assert_true (ai_move (ai, 1, 5)); 26870 assert_true (ai_move (ai, 0, 5)); 26871 assert_true (ai_move (ai, 2, 3)); 26872 assert_true (ai_move (ai, 3, 1)); 26873 assert_true (ai_move (ai, 2, 2)); 26874 assert_true (ai_move (ai, 4, 2)); 26875 assert_true (ai_move (ai, 2, 7)); 26876 assert_true (ai_move (ai, 1, 3)); 26877 assert_true (ai_move (ai, 1, 2)); 26878 assert_true (ai_move (ai, 3, 5)); 26879 assert_true (ai_move (ai, 2, 6)); 26880 assert_true (ai_move (ai, 5, 5)); 26881 assert_true (ai_move (ai, 4, 7)); 26882 assert_true (ai_move (ai, 2, 1)); 26883 assert_true (ai_move (ai, 1, 0)); 26884 assert_true (ai_move (ai, 0, 2)); 26885 assert_true (ai_move (ai, 6, 0)); 26886 assert_true (ai_move (ai, 7, 3)); 26887 assert_true (ai_move (ai, 7, 1)); 26888 assert_true (ai_move (ai, 6, 7)); 26889 assert_true (ai_move (ai, 5, 7)); 26890 assert_true (ai_move (ai, 6, 6)); 26891 assert_true (ai_move (ai, 7, 7)); 26892 assert_true (ai_move (ai, 3, 7)); 26893 assert_true (ai_move (ai, 7, 6)); 26894 assert_true (ai_move (ai, 1, 1)); 26895 assert_true (ai_move (ai, 0, 0)); 26896 assert_true (ai_move (ai, 0, 1)); 26897 assert_true (ai_move (ai, 0, 3)); 26898 assert_true (ai_move (ai, 0, 4)); 26899 assert_true (ai_move (ai, 0, 6)); 26900 assert_true (ai_move (ai, 1, 6)); 26901 assert_true (ai_move (ai, 0, 7)); 26902 assert_true (ai_move (ai, 1, 7)); 26903 assert_true (ai_move (ai, 6, 1)); 26904 assert_true (ai_move (ai, 7, 0)); 26905 } 26906 26907 private static inline void test_complete_reversi_game_344 () 26908 { 26909 /* 0 1 2 3 4 5 6 7 */ 26910 string [] board = {/* 0 */ " . . . . . . . .", 26911 /* 1 */ " . . . . . . . .", 26912 /* 2 */ " . . . L . L . .", 26913 /* 3 */ " . . . L D D . .", 26914 /* 4 */ " . . . L D . . .", 26915 /* 5 */ " . . . . D . . .", 26916 /* 6 */ " . . . . . . . .", 26917 /* 7 */ " . . . . . . . ."}; 26918 26919 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 26920 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 26921 26922 assert_true (ai_move (ai, 5, 1)); 26923 assert_true (ai_move (ai, 5, 6)); 26924 assert_true (ai_move (ai, 4, 6)); 26925 assert_true (ai_move (ai, 3, 6)); 26926 assert_true (ai_move (ai, 2, 1)); 26927 assert_true (ai_move (ai, 3, 1)); 26928 assert_true (ai_move (ai, 4, 7)); 26929 assert_true (ai_move (ai, 5, 5)); 26930 assert_true (ai_move (ai, 6, 4)); 26931 assert_true (ai_move (ai, 6, 2)); 26932 assert_true (ai_move (ai, 4, 2)); 26933 assert_true (ai_move (ai, 4, 0)); 26934 assert_true (ai_move (ai, 5, 7)); 26935 assert_true (ai_move (ai, 4, 1)); 26936 assert_true (ai_move (ai, 2, 0)); 26937 assert_true (ai_move (ai, 5, 4)); 26938 assert_true (ai_move (ai, 7, 2)); 26939 assert_true (ai_move (ai, 6, 5)); 26940 assert_true (ai_move (ai, 2, 2)); 26941 assert_true (ai_move (ai, 2, 3)); 26942 assert_true (ai_move (ai, 3, 0)); 26943 assert_true (ai_move (ai, 1, 2)); 26944 assert_true (ai_move (ai, 5, 0)); 26945 assert_true (ai_move (ai, 6, 3)); 26946 assert_true (ai_move (ai, 0, 2)); 26947 assert_true (ai_move (ai, 3, 7)); 26948 assert_true (ai_move (ai, 7, 5)); 26949 assert_true (ai_move (ai, 1, 1)); 26950 assert_true (ai_move (ai, 1, 3)); 26951 assert_true (ai_move (ai, 1, 0)); 26952 assert_true (ai_move (ai, 0, 0)); 26953 assert_true (ai_move (ai, 2, 4)); 26954 assert_true (ai_move (ai, 7, 3)); 26955 assert_true (ai_move (ai, 6, 7)); 26956 assert_true (ai_move (ai, 2, 5)); 26957 assert_true (ai_move (ai, 7, 4)); 26958 assert_true (ai_move (ai, 3, 5)); 26959 assert_true (ai_move (ai, 1, 4)); 26960 assert_true (ai_move (ai, 2, 6)); 26961 assert_true (ai_move (ai, 1, 5)); 26962 assert_true (ai_move (ai, 0, 4)); 26963 assert_true (ai_move (ai, 0, 3)); 26964 assert_true (ai_move (ai, 0, 5)); 26965 assert_true (ai_move (ai, 0, 1)); 26966 assert_true (ai_move (ai, 2, 7)); 26967 assert_true (ai_move (ai, 1, 7)); 26968 assert_true (ai_move (ai, 1, 6)); 26969 assert_true (ai_move (ai, 0, 7)); 26970 assert_true (ai_move (ai, 0, 6)); 26971 assert_true (ai_move (ai, 6, 6)); 26972 assert_true (ai_move (ai, 7, 7)); 26973 assert_true (ai_move (ai, 7, 6)); 26974 assert_true (game.pass ()); 26975 assert_true (ai_move (ai, 6, 1)); 26976 assert_true (ai_move (ai, 7, 0)); 26977 assert_true (ai_move (ai, 7, 1)); 26978 assert_true (ai_move (ai, 6, 0)); 26979 } 26980 26981 private static inline void test_complete_reversi_game_345 () 26982 { 26983 /* 0 1 2 3 4 5 6 7 */ 26984 string [] board = {/* 0 */ " . . . . . . . .", 26985 /* 1 */ " . . . . . . . .", 26986 /* 2 */ " . . . . D L . .", 26987 /* 3 */ " . . . D D . . .", 26988 /* 4 */ " . . . L D . . .", 26989 /* 5 */ " . . . . L . . .", 26990 /* 6 */ " . . . . . L . .", 26991 /* 7 */ " . . . . . . . ."}; 26992 26993 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 26994 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 26995 26996 assert_true (ai_move (ai, 6, 2)); 26997 assert_true (ai_move (ai, 5, 4)); 26998 assert_true (ai_move (ai, 6, 5)); 26999 assert_true (ai_move (ai, 6, 4)); 27000 assert_true (ai_move (ai, 4, 7)); 27001 assert_true (ai_move (ai, 2, 2)); 27002 assert_true (ai_move (ai, 2, 4)); 27003 assert_true (ai_move (ai, 1, 4)); 27004 assert_true (ai_move (ai, 1, 5)); 27005 assert_true (ai_move (ai, 7, 6)); 27006 assert_true (ai_move (ai, 0, 4)); 27007 assert_true (ai_move (ai, 6, 7)); 27008 assert_true (ai_move (ai, 2, 5)); 27009 assert_true (ai_move (ai, 3, 2)); 27010 assert_true (ai_move (ai, 1, 2)); 27011 assert_true (ai_move (ai, 1, 1)); 27012 assert_true (ai_move (ai, 4, 6)); 27013 assert_true (ai_move (ai, 5, 1)); 27014 assert_true (ai_move (ai, 6, 3)); 27015 assert_true (ai_move (ai, 3, 1)); 27016 assert_true (ai_move (ai, 4, 1)); 27017 assert_true (ai_move (ai, 7, 2)); 27018 assert_true (ai_move (ai, 2, 3)); 27019 assert_true (ai_move (ai, 2, 6)); 27020 assert_true (ai_move (ai, 3, 5)); 27021 assert_true (ai_move (ai, 1, 3)); 27022 assert_true (ai_move (ai, 0, 3)); 27023 assert_true (ai_move (ai, 0, 2)); 27024 assert_true (ai_move (ai, 0, 1)); 27025 assert_true (ai_move (ai, 5, 3)); 27026 assert_true (ai_move (ai, 4, 0)); 27027 assert_true (ai_move (ai, 5, 5)); 27028 assert_true (ai_move (ai, 7, 5)); 27029 assert_true (ai_move (ai, 7, 3)); 27030 assert_true (ai_move (ai, 7, 4)); 27031 assert_true (ai_move (ai, 2, 0)); 27032 assert_true (ai_move (ai, 3, 0)); 27033 assert_true (ai_move (ai, 5, 0)); 27034 assert_true (ai_move (ai, 0, 0)); 27035 assert_true (ai_move (ai, 2, 1)); 27036 assert_true (ai_move (ai, 1, 0)); 27037 assert_true (ai_move (ai, 3, 6)); 27038 assert_true (ai_move (ai, 6, 0)); 27039 assert_true (ai_move (ai, 0, 5)); 27040 assert_true (ai_move (ai, 1, 6)); 27041 assert_true (ai_move (ai, 6, 6)); 27042 assert_true (ai_move (ai, 0, 6)); 27043 assert_true (ai_move (ai, 6, 1)); 27044 assert_true (ai_move (ai, 7, 0)); 27045 assert_true (ai_move (ai, 7, 1)); 27046 assert_true (ai_move (ai, 2, 7)); 27047 assert_true (ai_move (ai, 0, 7)); 27048 assert_true (ai_move (ai, 3, 7)); 27049 assert_true (ai_move (ai, 1, 7)); 27050 assert_true (ai_move (ai, 5, 7)); 27051 assert_true (ai_move (ai, 7, 7)); 27052 } 27053 27054 private static inline void test_complete_reversi_game_346 () 27055 { 27056 /* 0 1 2 3 4 5 6 7 */ 27057 string [] board = {/* 0 */ " . . . . . . . .", 27058 /* 1 */ " . . . . . . . .", 27059 /* 2 */ " . . . . D L . .", 27060 /* 3 */ " . . . D D . . .", 27061 /* 4 */ " . . . L L L . .", 27062 /* 5 */ " . . . . D . . .", 27063 /* 6 */ " . . . . . . . .", 27064 /* 7 */ " . . . . . . . ."}; 27065 27066 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 27067 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 27068 27069 assert_true (ai_move (ai, 6, 2)); 27070 assert_true (ai_move (ai, 5, 6)); 27071 assert_true (ai_move (ai, 6, 5)); 27072 assert_true (ai_move (ai, 6, 4)); 27073 assert_true (ai_move (ai, 4, 7)); 27074 assert_true (ai_move (ai, 2, 2)); 27075 assert_true (ai_move (ai, 2, 4)); 27076 assert_true (ai_move (ai, 1, 4)); 27077 assert_true (ai_move (ai, 1, 5)); 27078 assert_true (ai_move (ai, 7, 6)); 27079 assert_true (ai_move (ai, 0, 4)); 27080 assert_true (ai_move (ai, 6, 7)); 27081 assert_true (ai_move (ai, 2, 5)); 27082 assert_true (ai_move (ai, 3, 2)); 27083 assert_true (ai_move (ai, 1, 2)); 27084 assert_true (ai_move (ai, 1, 1)); 27085 assert_true (ai_move (ai, 4, 6)); 27086 assert_true (ai_move (ai, 5, 1)); 27087 assert_true (ai_move (ai, 6, 3)); 27088 assert_true (ai_move (ai, 3, 1)); 27089 assert_true (ai_move (ai, 4, 1)); 27090 assert_true (ai_move (ai, 7, 2)); 27091 assert_true (ai_move (ai, 2, 3)); 27092 assert_true (ai_move (ai, 2, 6)); 27093 assert_true (ai_move (ai, 3, 5)); 27094 assert_true (ai_move (ai, 1, 3)); 27095 assert_true (ai_move (ai, 0, 3)); 27096 assert_true (ai_move (ai, 0, 2)); 27097 assert_true (ai_move (ai, 0, 1)); 27098 assert_true (ai_move (ai, 5, 3)); 27099 assert_true (ai_move (ai, 4, 0)); 27100 assert_true (ai_move (ai, 5, 5)); 27101 assert_true (ai_move (ai, 7, 5)); 27102 assert_true (ai_move (ai, 7, 3)); 27103 assert_true (ai_move (ai, 7, 4)); 27104 assert_true (ai_move (ai, 2, 0)); 27105 assert_true (ai_move (ai, 3, 0)); 27106 assert_true (ai_move (ai, 5, 0)); 27107 assert_true (ai_move (ai, 0, 0)); 27108 assert_true (ai_move (ai, 2, 1)); 27109 assert_true (ai_move (ai, 1, 0)); 27110 assert_true (ai_move (ai, 3, 6)); 27111 assert_true (ai_move (ai, 6, 0)); 27112 assert_true (ai_move (ai, 0, 5)); 27113 assert_true (ai_move (ai, 1, 6)); 27114 assert_true (ai_move (ai, 6, 6)); 27115 assert_true (ai_move (ai, 0, 6)); 27116 assert_true (ai_move (ai, 6, 1)); 27117 assert_true (ai_move (ai, 7, 0)); 27118 assert_true (ai_move (ai, 7, 1)); 27119 assert_true (ai_move (ai, 2, 7)); 27120 assert_true (ai_move (ai, 0, 7)); 27121 assert_true (ai_move (ai, 3, 7)); 27122 assert_true (ai_move (ai, 1, 7)); 27123 assert_true (ai_move (ai, 5, 7)); 27124 assert_true (ai_move (ai, 7, 7)); 27125 } 27126 27127 private static inline void test_complete_reversi_game_347 () 27128 { 27129 /* 0 1 2 3 4 5 6 7 */ 27130 string [] board = {/* 0 */ " . . . . . . . .", 27131 /* 1 */ " . . . . . . . .", 27132 /* 2 */ " . . . L L L . .", 27133 /* 3 */ " . . . L D . . .", 27134 /* 4 */ " . . . L D . . .", 27135 /* 5 */ " . . . . D . . .", 27136 /* 6 */ " . . . . . . . .", 27137 /* 7 */ " . . . . . . . ."}; 27138 27139 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 27140 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 27141 27142 assert_true (ai_move (ai, 4, 1)); 27143 assert_true (ai_move (ai, 5, 1)); 27144 assert_true (ai_move (ai, 6, 3)); 27145 assert_true (ai_move (ai, 6, 2)); 27146 assert_true (ai_move (ai, 2, 1)); 27147 assert_true (ai_move (ai, 2, 2)); 27148 assert_true (ai_move (ai, 2, 5)); 27149 assert_true (ai_move (ai, 2, 0)); 27150 assert_true (ai_move (ai, 2, 3)); 27151 assert_true (ai_move (ai, 3, 0)); 27152 assert_true (ai_move (ai, 1, 2)); 27153 assert_true (ai_move (ai, 0, 2)); 27154 assert_true (ai_move (ai, 5, 0)); 27155 assert_true (ai_move (ai, 3, 1)); 27156 assert_true (ai_move (ai, 7, 2)); 27157 assert_true (ai_move (ai, 1, 4)); 27158 assert_true (ai_move (ai, 6, 0)); 27159 assert_true (ai_move (ai, 3, 6)); 27160 assert_true (ai_move (ai, 2, 7)); 27161 assert_true (ai_move (ai, 4, 7)); 27162 assert_true (ai_move (ai, 1, 3)); 27163 assert_true (ai_move (ai, 0, 4)); 27164 assert_true (ai_move (ai, 1, 6)); 27165 assert_true (ai_move (ai, 2, 4)); 27166 assert_true (ai_move (ai, 1, 5)); 27167 assert_true (ai_move (ai, 2, 6)); 27168 assert_true (ai_move (ai, 0, 3)); 27169 assert_true (ai_move (ai, 5, 3)); 27170 assert_true (ai_move (ai, 5, 4)); 27171 assert_true (ai_move (ai, 6, 5)); 27172 assert_true (ai_move (ai, 3, 5)); 27173 assert_true (ai_move (ai, 4, 6)); 27174 assert_true (ai_move (ai, 3, 7)); 27175 assert_true (ai_move (ai, 6, 4)); 27176 assert_true (ai_move (ai, 0, 5)); 27177 assert_true (ai_move (ai, 7, 3)); 27178 assert_true (ai_move (ai, 0, 1)); 27179 assert_true (ai_move (ai, 7, 1)); 27180 assert_true (ai_move (ai, 1, 7)); 27181 assert_true (ai_move (ai, 0, 7)); 27182 assert_true (ai_move (ai, 5, 5)); 27183 assert_true (ai_move (ai, 0, 6)); 27184 assert_true (ai_move (ai, 4, 0)); 27185 assert_true (ai_move (ai, 7, 0)); 27186 assert_true (ai_move (ai, 1, 0)); 27187 assert_true (ai_move (ai, 0, 0)); 27188 assert_true (ai_move (ai, 5, 6)); 27189 assert_true (ai_move (ai, 6, 1)); 27190 assert_true (ai_move (ai, 7, 5)); 27191 assert_true (ai_move (ai, 1, 1)); 27192 assert_true (game.pass ()); 27193 assert_true (ai_move (ai, 5, 7)); 27194 assert_true (ai_move (ai, 6, 6)); 27195 assert_true (ai_move (ai, 7, 7)); 27196 assert_true (ai_move (ai, 6, 7)); 27197 assert_true (ai_move (ai, 7, 4)); 27198 assert_true (ai_move (ai, 7, 6)); 27199 } 27200 27201 private static inline void test_complete_reversi_game_348 () 27202 { 27203 /* 0 1 2 3 4 5 6 7 */ 27204 string [] board = {/* 0 */ " . . . . . . . .", 27205 /* 1 */ " . . . . . . . .", 27206 /* 2 */ " . . . . . L . .", 27207 /* 3 */ " . . . D L . . .", 27208 /* 4 */ " . . . D L . . .", 27209 /* 5 */ " . . . D L . . .", 27210 /* 6 */ " . . . . L . . .", 27211 /* 7 */ " . . . . . . . ."}; 27212 27213 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 27214 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 27215 27216 assert_true (ai_move (ai, 5, 6)); 27217 assert_true (ai_move (ai, 2, 6)); 27218 assert_true (ai_move (ai, 2, 5)); 27219 assert_true (ai_move (ai, 2, 2)); 27220 assert_true (ai_move (ai, 2, 7)); 27221 assert_true (ai_move (ai, 3, 6)); 27222 assert_true (ai_move (ai, 2, 3)); 27223 assert_true (ai_move (ai, 5, 5)); 27224 assert_true (ai_move (ai, 2, 1)); 27225 assert_true (ai_move (ai, 5, 7)); 27226 assert_true (ai_move (ai, 3, 7)); 27227 assert_true (ai_move (ai, 1, 5)); 27228 assert_true (ai_move (ai, 2, 4)); 27229 assert_true (ai_move (ai, 1, 3)); 27230 assert_true (ai_move (ai, 1, 4)); 27231 assert_true (ai_move (ai, 3, 1)); 27232 assert_true (ai_move (ai, 6, 5)); 27233 assert_true (ai_move (ai, 7, 5)); 27234 assert_true (ai_move (ai, 0, 4)); 27235 assert_true (ai_move (ai, 2, 0)); 27236 assert_true (ai_move (ai, 5, 3)); 27237 assert_true (ai_move (ai, 4, 7)); 27238 assert_true (ai_move (ai, 6, 7)); 27239 assert_true (ai_move (ai, 5, 4)); 27240 assert_true (ai_move (ai, 6, 3)); 27241 assert_true (ai_move (ai, 0, 3)); 27242 assert_true (ai_move (ai, 6, 4)); 27243 assert_true (ai_move (ai, 0, 5)); 27244 assert_true (ai_move (ai, 7, 4)); 27245 assert_true (ai_move (ai, 7, 3)); 27246 assert_true (ai_move (ai, 5, 1)); 27247 assert_true (ai_move (ai, 4, 1)); 27248 assert_true (ai_move (ai, 7, 2)); 27249 assert_true (ai_move (ai, 7, 1)); 27250 assert_true (ai_move (ai, 1, 2)); 27251 assert_true (ai_move (ai, 3, 2)); 27252 assert_true (ai_move (ai, 0, 2)); 27253 assert_true (ai_move (ai, 0, 1)); 27254 assert_true (ai_move (ai, 4, 0)); 27255 assert_true (ai_move (ai, 3, 0)); 27256 assert_true (ai_move (ai, 4, 2)); 27257 assert_true (ai_move (ai, 7, 6)); 27258 assert_true (ai_move (ai, 6, 2)); 27259 assert_true (ai_move (ai, 5, 0)); 27260 assert_true (ai_move (ai, 6, 6)); 27261 assert_true (ai_move (ai, 1, 7)); 27262 assert_true (ai_move (ai, 0, 7)); 27263 assert_true (ai_move (ai, 7, 7)); 27264 assert_true (ai_move (ai, 0, 6)); 27265 assert_true (ai_move (ai, 1, 1)); 27266 assert_true (ai_move (ai, 0, 0)); 27267 assert_true (ai_move (ai, 1, 6)); 27268 assert_true (ai_move (ai, 1, 0)); 27269 assert_true (ai_move (ai, 6, 1)); 27270 assert_true (ai_move (ai, 6, 0)); 27271 assert_true (ai_move (ai, 7, 0)); 27272 } 27273 27274 private static inline void test_complete_reversi_game_349 () 27275 { 27276 /* 0 1 2 3 4 5 6 7 */ 27277 string [] board = {/* 0 */ " . . . . . . . .", 27278 /* 1 */ " . . . . . . . .", 27279 /* 2 */ " . . . . . L . .", 27280 /* 3 */ " . . . D L . . .", 27281 /* 4 */ " . . . L D . . .", 27282 /* 5 */ " . . L D D . . .", 27283 /* 6 */ " . . . . . . . .", 27284 /* 7 */ " . . . . . . . ."}; 27285 27286 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 27287 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 27288 27289 assert_true (ai_move (ai, 1, 5)); 27290 assert_true (ai_move (ai, 3, 6)); 27291 assert_true (ai_move (ai, 2, 6)); 27292 assert_true (ai_move (ai, 1, 4)); 27293 assert_true (ai_move (ai, 2, 4)); 27294 assert_true (ai_move (ai, 2, 3)); 27295 assert_true (ai_move (ai, 2, 2)); 27296 assert_true (ai_move (ai, 3, 2)); 27297 assert_true (ai_move (ai, 4, 6)); 27298 assert_true (ai_move (ai, 2, 1)); 27299 assert_true (ai_move (ai, 1, 2)); 27300 assert_true (ai_move (ai, 2, 7)); 27301 assert_true (ai_move (ai, 3, 7)); 27302 assert_true (ai_move (ai, 0, 5)); 27303 assert_true (ai_move (ai, 1, 3)); 27304 assert_true (ai_move (ai, 0, 2)); 27305 assert_true (ai_move (ai, 2, 0)); 27306 assert_true (ai_move (ai, 0, 3)); 27307 assert_true (ai_move (ai, 1, 7)); 27308 assert_true (ai_move (ai, 3, 1)); 27309 assert_true (ai_move (ai, 4, 1)); 27310 assert_true (ai_move (ai, 5, 7)); 27311 assert_true (ai_move (ai, 5, 6)); 27312 assert_true (ai_move (ai, 4, 0)); 27313 assert_true (ai_move (ai, 6, 3)); 27314 assert_true (ai_move (ai, 4, 2)); 27315 assert_true (ai_move (ai, 5, 3)); 27316 assert_true (ai_move (ai, 5, 1)); 27317 assert_true (ai_move (ai, 3, 0)); 27318 assert_true (ai_move (ai, 6, 4)); 27319 assert_true (ai_move (ai, 5, 0)); 27320 assert_true (ai_move (ai, 7, 3)); 27321 assert_true (ai_move (ai, 5, 4)); 27322 assert_true (ai_move (ai, 6, 2)); 27323 assert_true (ai_move (ai, 7, 5)); 27324 assert_true (ai_move (ai, 5, 5)); 27325 assert_true (ai_move (ai, 6, 5)); 27326 assert_true (ai_move (ai, 7, 4)); 27327 assert_true (ai_move (ai, 7, 2)); 27328 assert_true (ai_move (ai, 6, 1)); 27329 assert_true (ai_move (ai, 0, 4)); 27330 assert_true (ai_move (ai, 6, 0)); 27331 assert_true (ai_move (ai, 7, 0)); 27332 assert_true (ai_move (ai, 7, 1)); 27333 assert_true (ai_move (ai, 1, 6)); 27334 assert_true (ai_move (ai, 4, 7)); 27335 assert_true (ai_move (ai, 6, 7)); 27336 assert_true (ai_move (ai, 0, 7)); 27337 assert_true (ai_move (ai, 6, 6)); 27338 assert_true (ai_move (ai, 0, 6)); 27339 assert_true (ai_move (ai, 0, 1)); 27340 assert_true (ai_move (ai, 7, 7)); 27341 assert_true (ai_move (ai, 7, 6)); 27342 assert_true (ai_move (ai, 0, 0)); 27343 assert_true (game.pass ()); 27344 assert_true (ai_move (ai, 1, 1)); 27345 assert_true (ai_move (ai, 1, 0)); 27346 } 27347 27348 private static inline void test_complete_reversi_game_350 () 27349 { 27350 /* 0 1 2 3 4 5 6 7 */ 27351 string [] board = {/* 0 */ " . . . . . . . .", 27352 /* 1 */ " . . . . . . . .", 27353 /* 2 */ " . . . . . L . .", 27354 /* 3 */ " . . L L L . . .", 27355 /* 4 */ " . . . D D . . .", 27356 /* 5 */ " . . . D D . . .", 27357 /* 6 */ " . . . . . . . .", 27358 /* 7 */ " . . . . . . . ."}; 27359 27360 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 27361 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 27362 27363 assert_true (ai_move (ai, 1, 2)); 27364 assert_true (ai_move (ai, 1, 3)); 27365 assert_true (ai_move (ai, 1, 4)); 27366 assert_true (ai_move (ai, 0, 3)); 27367 assert_true (ai_move (ai, 3, 2)); 27368 assert_true (ai_move (ai, 2, 1)); 27369 assert_true (ai_move (ai, 3, 1)); 27370 assert_true (ai_move (ai, 1, 5)); 27371 assert_true (ai_move (ai, 0, 5)); 27372 assert_true (ai_move (ai, 4, 1)); 27373 assert_true (ai_move (ai, 2, 5)); 27374 assert_true (ai_move (ai, 4, 6)); 27375 assert_true (ai_move (ai, 5, 6)); 27376 assert_true (ai_move (ai, 2, 6)); 27377 assert_true (ai_move (ai, 2, 7)); 27378 assert_true (ai_move (ai, 5, 5)); 27379 assert_true (ai_move (ai, 6, 5)); 27380 assert_true (ai_move (ai, 6, 4)); 27381 assert_true (ai_move (ai, 3, 6)); 27382 assert_true (ai_move (ai, 7, 5)); 27383 assert_true (ai_move (ai, 6, 6)); 27384 assert_true (ai_move (ai, 4, 7)); 27385 assert_true (ai_move (ai, 2, 4)); 27386 assert_true (ai_move (ai, 5, 4)); 27387 assert_true (ai_move (ai, 6, 7)); 27388 assert_true (ai_move (ai, 2, 2)); 27389 assert_true (ai_move (ai, 3, 7)); 27390 assert_true (ai_move (ai, 1, 7)); 27391 assert_true (ai_move (ai, 0, 4)); 27392 assert_true (ai_move (ai, 0, 6)); 27393 assert_true (ai_move (ai, 2, 0)); 27394 assert_true (ai_move (ai, 1, 6)); 27395 assert_true (ai_move (ai, 5, 3)); 27396 assert_true (ai_move (ai, 6, 2)); 27397 assert_true (ai_move (ai, 4, 2)); 27398 assert_true (ai_move (ai, 6, 3)); 27399 assert_true (ai_move (ai, 5, 1)); 27400 assert_true (ai_move (ai, 5, 0)); 27401 assert_true (ai_move (ai, 3, 0)); 27402 assert_true (ai_move (ai, 4, 0)); 27403 assert_true (ai_move (ai, 6, 0)); 27404 assert_true (ai_move (ai, 6, 1)); 27405 assert_true (ai_move (ai, 0, 1)); 27406 assert_true (ai_move (ai, 0, 2)); 27407 assert_true (ai_move (ai, 0, 7)); 27408 assert_true (ai_move (ai, 5, 7)); 27409 assert_true (ai_move (ai, 7, 7)); 27410 assert_true (ai_move (ai, 7, 6)); 27411 assert_true (ai_move (ai, 7, 4)); 27412 assert_true (ai_move (ai, 7, 2)); 27413 assert_true (ai_move (ai, 7, 3)); 27414 assert_true (ai_move (ai, 7, 1)); 27415 assert_true (ai_move (ai, 7, 0)); 27416 assert_true (ai_move (ai, 1, 1)); 27417 assert_true (ai_move (ai, 1, 0)); 27418 assert_true (ai_move (ai, 0, 0)); 27419 } 27420 27421 private static inline void test_complete_reversi_game_351 () 27422 { 27423 /* 0 1 2 3 4 5 6 7 */ 27424 string [] board = {/* 0 */ " . . . . . . . .", 27425 /* 1 */ " . . . . . . . .", 27426 /* 2 */ " . . . . . L . .", 27427 /* 3 */ " . . . D L . . .", 27428 /* 4 */ " . . D D L . . .", 27429 /* 5 */ " . . . . L . . .", 27430 /* 6 */ " . . . . L . . .", 27431 /* 7 */ " . . . . . . . ."}; 27432 27433 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 27434 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 27435 27436 assert_true (ai_move (ai, 5, 6)); 27437 assert_true (ai_move (ai, 2, 2)); 27438 assert_true (ai_move (ai, 4, 7)); 27439 assert_true (ai_move (ai, 1, 5)); 27440 assert_true (ai_move (ai, 1, 4)); 27441 assert_true (ai_move (ai, 1, 3)); 27442 assert_true (ai_move (ai, 0, 4)); 27443 assert_true (ai_move (ai, 2, 5)); 27444 assert_true (ai_move (ai, 3, 6)); 27445 assert_true (ai_move (ai, 3, 5)); 27446 assert_true (ai_move (ai, 0, 5)); 27447 assert_true (ai_move (ai, 2, 6)); 27448 assert_true (ai_move (ai, 3, 7)); 27449 assert_true (ai_move (ai, 5, 5)); 27450 assert_true (ai_move (ai, 6, 5)); 27451 assert_true (ai_move (ai, 5, 7)); 27452 assert_true (ai_move (ai, 6, 7)); 27453 assert_true (ai_move (ai, 6, 4)); 27454 assert_true (ai_move (ai, 0, 2)); 27455 assert_true (ai_move (ai, 7, 5)); 27456 assert_true (ai_move (ai, 3, 1)); 27457 assert_true (ai_move (ai, 1, 1)); 27458 assert_true (ai_move (ai, 7, 3)); 27459 assert_true (ai_move (ai, 5, 3)); 27460 assert_true (ai_move (ai, 7, 4)); 27461 assert_true (ai_move (ai, 7, 2)); 27462 assert_true (ai_move (ai, 2, 3)); 27463 assert_true (ai_move (ai, 2, 7)); 27464 assert_true (ai_move (ai, 1, 7)); 27465 assert_true (ai_move (ai, 4, 0)); 27466 assert_true (ai_move (ai, 2, 1)); 27467 assert_true (ai_move (ai, 0, 3)); 27468 assert_true (ai_move (ai, 1, 2)); 27469 assert_true (ai_move (ai, 3, 0)); 27470 assert_true (ai_move (ai, 3, 2)); 27471 assert_true (ai_move (ai, 4, 2)); 27472 assert_true (ai_move (ai, 5, 1)); 27473 assert_true (ai_move (ai, 4, 1)); 27474 assert_true (ai_move (ai, 5, 0)); 27475 assert_true (ai_move (ai, 6, 2)); 27476 assert_true (ai_move (ai, 0, 0)); 27477 assert_true (ai_move (ai, 0, 1)); 27478 assert_true (ai_move (ai, 2, 0)); 27479 assert_true (ai_move (ai, 1, 0)); 27480 assert_true (ai_move (ai, 5, 4)); 27481 assert_true (ai_move (ai, 6, 3)); 27482 assert_true (ai_move (ai, 7, 1)); 27483 assert_true (ai_move (ai, 7, 0)); 27484 assert_true (game.pass ()); 27485 assert_true (ai_move (ai, 6, 0)); 27486 assert_true (ai_move (ai, 6, 1)); 27487 assert_true (ai_move (ai, 7, 6)); 27488 assert_true (ai_move (ai, 6, 6)); 27489 assert_true (ai_move (ai, 7, 7)); 27490 assert_true (game.pass ()); 27491 assert_true (ai_move (ai, 0, 7)); 27492 assert_true (game.pass ()); 27493 assert_true (ai_move (ai, 1, 6)); 27494 assert_true (ai_move (ai, 0, 6)); 27495 } 27496 27497 private static inline void test_complete_reversi_game_352 () 27498 { 27499 /* 0 1 2 3 4 5 6 7 */ 27500 string [] board = {/* 0 */ " . . . . . . . .", 27501 /* 1 */ " . . . . . . . .", 27502 /* 2 */ " . . . . . L . .", 27503 /* 3 */ " . . . D L . . .", 27504 /* 4 */ " . . D L D . . .", 27505 /* 5 */ " . . L . D . . .", 27506 /* 6 */ " . . . . . . . .", 27507 /* 7 */ " . . . . . . . ."}; 27508 27509 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 27510 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 27511 27512 assert_true (ai_move (ai, 2, 6)); 27513 assert_true (ai_move (ai, 5, 6)); 27514 assert_true (ai_move (ai, 4, 6)); 27515 assert_true (ai_move (ai, 2, 3)); 27516 assert_true (ai_move (ai, 2, 2)); 27517 assert_true (ai_move (ai, 1, 2)); 27518 assert_true (ai_move (ai, 1, 3)); 27519 assert_true (ai_move (ai, 3, 2)); 27520 assert_true (ai_move (ai, 2, 1)); 27521 assert_true (ai_move (ai, 0, 3)); 27522 assert_true (ai_move (ai, 0, 4)); 27523 assert_true (ai_move (ai, 0, 5)); 27524 assert_true (ai_move (ai, 0, 2)); 27525 assert_true (ai_move (ai, 0, 1)); 27526 assert_true (ai_move (ai, 5, 4)); 27527 assert_true (ai_move (ai, 1, 4)); 27528 assert_true (ai_move (ai, 3, 5)); 27529 assert_true (ai_move (ai, 3, 1)); 27530 assert_true (ai_move (ai, 3, 0)); 27531 assert_true (ai_move (ai, 4, 1)); 27532 assert_true (ai_move (ai, 1, 5)); 27533 assert_true (ai_move (ai, 2, 7)); 27534 assert_true (ai_move (ai, 3, 7)); 27535 assert_true (ai_move (ai, 4, 7)); 27536 assert_true (ai_move (ai, 5, 1)); 27537 assert_true (ai_move (ai, 5, 0)); 27538 assert_true (ai_move (ai, 6, 3)); 27539 assert_true (ai_move (ai, 0, 6)); 27540 assert_true (ai_move (ai, 1, 6)); 27541 assert_true (ai_move (ai, 6, 4)); 27542 assert_true (ai_move (ai, 5, 3)); 27543 assert_true (ai_move (ai, 2, 0)); 27544 assert_true (ai_move (ai, 5, 5)); 27545 assert_true (ai_move (ai, 4, 0)); 27546 assert_true (ai_move (ai, 5, 7)); 27547 assert_true (ai_move (ai, 6, 7)); 27548 assert_true (ai_move (ai, 3, 6)); 27549 assert_true (ai_move (ai, 6, 5)); 27550 assert_true (ai_move (ai, 7, 4)); 27551 assert_true (ai_move (ai, 4, 2)); 27552 assert_true (ai_move (ai, 1, 1)); 27553 assert_true (ai_move (ai, 7, 5)); 27554 assert_true (ai_move (ai, 7, 3)); 27555 assert_true (ai_move (ai, 7, 2)); 27556 assert_true (ai_move (ai, 6, 6)); 27557 assert_true (ai_move (ai, 6, 2)); 27558 assert_true (ai_move (ai, 6, 1)); 27559 assert_true (ai_move (ai, 1, 7)); 27560 assert_true (game.pass ()); 27561 assert_true (ai_move (ai, 7, 6)); 27562 assert_true (ai_move (ai, 7, 7)); 27563 assert_true (ai_move (ai, 1, 0)); 27564 assert_true (ai_move (ai, 0, 7)); 27565 assert_true (ai_move (ai, 7, 1)); 27566 assert_true (ai_move (ai, 0, 0)); 27567 assert_true (game.pass ()); 27568 assert_true (ai_move (ai, 7, 0)); 27569 assert_true (ai_move (ai, 6, 0)); 27570 } 27571 27572 private static inline void test_complete_reversi_game_353 () 27573 { 27574 /* 0 1 2 3 4 5 6 7 */ 27575 string [] board = {/* 0 */ " . . . . . . . .", 27576 /* 1 */ " . . . . . . . .", 27577 /* 2 */ " . . . . . L . .", 27578 /* 3 */ " . . L L L . . .", 27579 /* 4 */ " . . D D D . . .", 27580 /* 5 */ " . . . . D . . .", 27581 /* 6 */ " . . . . . . . .", 27582 /* 7 */ " . . . . . . . ."}; 27583 27584 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 27585 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 27586 27587 assert_true (ai_move (ai, 1, 2)); 27588 assert_true (ai_move (ai, 1, 3)); 27589 assert_true (ai_move (ai, 0, 2)); 27590 assert_true (ai_move (ai, 1, 5)); 27591 assert_true (ai_move (ai, 3, 5)); 27592 assert_true (ai_move (ai, 2, 5)); 27593 assert_true (ai_move (ai, 1, 4)); 27594 assert_true (ai_move (ai, 0, 5)); 27595 assert_true (ai_move (ai, 2, 6)); 27596 assert_true (ai_move (ai, 2, 7)); 27597 assert_true (ai_move (ai, 0, 4)); 27598 assert_true (ai_move (ai, 3, 6)); 27599 assert_true (ai_move (ai, 4, 6)); 27600 assert_true (ai_move (ai, 5, 3)); 27601 assert_true (ai_move (ai, 2, 2)); 27602 assert_true (ai_move (ai, 3, 2)); 27603 assert_true (ai_move (ai, 3, 7)); 27604 assert_true (ai_move (ai, 5, 4)); 27605 assert_true (ai_move (ai, 5, 6)); 27606 assert_true (ai_move (ai, 2, 1)); 27607 assert_true (ai_move (ai, 2, 0)); 27608 assert_true (ai_move (ai, 5, 5)); 27609 assert_true (ai_move (ai, 0, 3)); 27610 assert_true (ai_move (ai, 0, 1)); 27611 assert_true (ai_move (ai, 4, 7)); 27612 assert_true (ai_move (ai, 0, 6)); 27613 assert_true (ai_move (ai, 4, 1)); 27614 assert_true (ai_move (ai, 4, 2)); 27615 assert_true (ai_move (ai, 6, 5)); 27616 assert_true (ai_move (ai, 7, 5)); 27617 assert_true (ai_move (ai, 3, 1)); 27618 assert_true (ai_move (ai, 5, 7)); 27619 assert_true (ai_move (ai, 6, 2)); 27620 assert_true (ai_move (ai, 5, 0)); 27621 assert_true (ai_move (ai, 3, 0)); 27622 assert_true (ai_move (ai, 7, 2)); 27623 assert_true (ai_move (ai, 5, 1)); 27624 assert_true (ai_move (ai, 1, 7)); 27625 assert_true (ai_move (ai, 6, 4)); 27626 assert_true (ai_move (ai, 1, 1)); 27627 assert_true (ai_move (ai, 7, 3)); 27628 assert_true (ai_move (ai, 6, 3)); 27629 assert_true (ai_move (ai, 7, 4)); 27630 assert_true (ai_move (ai, 4, 0)); 27631 assert_true (ai_move (ai, 6, 0)); 27632 assert_true (ai_move (ai, 6, 1)); 27633 assert_true (ai_move (ai, 7, 6)); 27634 assert_true (ai_move (ai, 7, 7)); 27635 assert_true (ai_move (ai, 7, 0)); 27636 assert_true (ai_move (ai, 6, 6)); 27637 assert_true (ai_move (ai, 6, 7)); 27638 assert_true (ai_move (ai, 1, 0)); 27639 assert_true (ai_move (ai, 0, 7)); 27640 assert_true (ai_move (ai, 7, 1)); 27641 assert_true (ai_move (ai, 0, 0)); 27642 assert_true (game.pass ()); 27643 assert_true (ai_move (ai, 1, 6)); 27644 } 27645 27646 private static inline void test_complete_reversi_game_354 () 27647 { 27648 /* 0 1 2 3 4 5 6 7 */ 27649 string [] board = {/* 0 */ " . . . . . . . .", 27650 /* 1 */ " . . . . . . . .", 27651 /* 2 */ " . . . . . L . .", 27652 /* 3 */ " . . D D L . . .", 27653 /* 4 */ " . . . D L . . .", 27654 /* 5 */ " . . . . L . . .", 27655 /* 6 */ " . . . . L . . .", 27656 /* 7 */ " . . . . . . . ."}; 27657 27658 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 27659 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 27660 27661 assert_true (ai_move (ai, 5, 6)); 27662 assert_true (ai_move (ai, 2, 5)); 27663 assert_true (ai_move (ai, 4, 7)); 27664 assert_true (ai_move (ai, 1, 2)); 27665 assert_true (ai_move (ai, 1, 3)); 27666 assert_true (ai_move (ai, 0, 3)); 27667 assert_true (ai_move (ai, 0, 1)); 27668 assert_true (ai_move (ai, 2, 1)); 27669 assert_true (ai_move (ai, 5, 4)); 27670 assert_true (ai_move (ai, 6, 5)); 27671 assert_true (ai_move (ai, 6, 3)); 27672 assert_true (ai_move (ai, 7, 4)); 27673 assert_true (ai_move (ai, 7, 2)); 27674 assert_true (ai_move (ai, 3, 5)); 27675 assert_true (ai_move (ai, 4, 1)); 27676 assert_true (ai_move (ai, 5, 7)); 27677 assert_true (ai_move (ai, 6, 7)); 27678 assert_true (ai_move (ai, 5, 5)); 27679 assert_true (ai_move (ai, 3, 2)); 27680 assert_true (ai_move (ai, 3, 1)); 27681 assert_true (ai_move (ai, 3, 6)); 27682 assert_true (ai_move (ai, 1, 4)); 27683 assert_true (ai_move (ai, 6, 4)); 27684 assert_true (ai_move (ai, 5, 0)); 27685 assert_true (ai_move (ai, 7, 5)); 27686 assert_true (ai_move (ai, 4, 2)); 27687 assert_true (ai_move (ai, 7, 3)); 27688 assert_true (ai_move (ai, 6, 2)); 27689 assert_true (ai_move (ai, 1, 5)); 27690 assert_true (ai_move (ai, 2, 6)); 27691 assert_true (ai_move (ai, 3, 7)); 27692 assert_true (ai_move (ai, 0, 5)); 27693 assert_true (ai_move (ai, 5, 3)); 27694 assert_true (ai_move (ai, 1, 7)); 27695 assert_true (ai_move (ai, 5, 1)); 27696 assert_true (ai_move (ai, 6, 0)); 27697 assert_true (ai_move (ai, 2, 4)); 27698 assert_true (ai_move (ai, 7, 1)); 27699 assert_true (ai_move (ai, 7, 0)); 27700 assert_true (ai_move (ai, 6, 1)); 27701 assert_true (ai_move (ai, 2, 2)); 27702 assert_true (ai_move (ai, 7, 6)); 27703 assert_true (ai_move (ai, 7, 7)); 27704 assert_true (ai_move (ai, 2, 7)); 27705 assert_true (ai_move (ai, 6, 6)); 27706 assert_true (game.pass ()); 27707 assert_true (ai_move (ai, 0, 7)); 27708 assert_true (game.pass ()); 27709 assert_true (ai_move (ai, 1, 6)); 27710 assert_true (game.pass ()); 27711 assert_true (ai_move (ai, 0, 6)); 27712 assert_true (game.pass ()); 27713 assert_true (ai_move (ai, 4, 0)); 27714 assert_true (ai_move (ai, 2, 0)); 27715 assert_true (ai_move (ai, 3, 0)); 27716 assert_true (game.pass ()); 27717 assert_true (ai_move (ai, 1, 0)); 27718 assert_true (ai_move (ai, 1, 1)); 27719 assert_true (ai_move (ai, 0, 0)); 27720 assert_true (game.pass ()); 27721 assert_true (ai_move (ai, 0, 4)); 27722 assert_true (ai_move (ai, 0, 2)); 27723 } 27724 27725 private static inline void test_complete_reversi_game_355 () 27726 { 27727 /* 0 1 2 3 4 5 6 7 */ 27728 string [] board = {/* 0 */ " . . . . . . . .", 27729 /* 1 */ " . . . . . . . .", 27730 /* 2 */ " . . . . . L . .", 27731 /* 3 */ " . . D D L . . .", 27732 /* 4 */ " . . . L D . . .", 27733 /* 5 */ " . . L . D . . .", 27734 /* 6 */ " . . . . . . . .", 27735 /* 7 */ " . . . . . . . ."}; 27736 27737 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 27738 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 27739 27740 assert_true (ai_move (ai, 5, 3)); 27741 assert_true (ai_move (ai, 5, 6)); 27742 assert_true (ai_move (ai, 5, 1)); 27743 assert_true (ai_move (ai, 1, 2)); 27744 assert_true (ai_move (ai, 2, 4)); 27745 assert_true (ai_move (ai, 4, 2)); 27746 assert_true (ai_move (ai, 2, 6)); 27747 assert_true (ai_move (ai, 6, 2)); 27748 assert_true (ai_move (ai, 1, 3)); 27749 assert_true (ai_move (ai, 5, 0)); 27750 assert_true (ai_move (ai, 6, 1)); 27751 assert_true (ai_move (ai, 2, 2)); 27752 assert_true (ai_move (ai, 2, 1)); 27753 assert_true (ai_move (ai, 3, 5)); 27754 assert_true (ai_move (ai, 3, 2)); 27755 assert_true (ai_move (ai, 3, 1)); 27756 assert_true (ai_move (ai, 0, 2)); 27757 assert_true (ai_move (ai, 1, 4)); 27758 assert_true (ai_move (ai, 4, 0)); 27759 assert_true (ai_move (ai, 1, 5)); 27760 assert_true (ai_move (ai, 6, 0)); 27761 assert_true (ai_move (ai, 5, 4)); 27762 assert_true (ai_move (ai, 4, 6)); 27763 assert_true (ai_move (ai, 0, 3)); 27764 assert_true (ai_move (ai, 0, 5)); 27765 assert_true (ai_move (ai, 2, 7)); 27766 assert_true (ai_move (ai, 0, 4)); 27767 assert_true (ai_move (ai, 2, 0)); 27768 assert_true (ai_move (ai, 3, 6)); 27769 assert_true (ai_move (ai, 3, 7)); 27770 assert_true (ai_move (ai, 4, 1)); 27771 assert_true (ai_move (ai, 5, 7)); 27772 assert_true (ai_move (ai, 5, 5)); 27773 assert_true (ai_move (ai, 6, 4)); 27774 assert_true (ai_move (ai, 7, 2)); 27775 assert_true (ai_move (ai, 0, 1)); 27776 assert_true (ai_move (ai, 0, 0)); 27777 assert_true (ai_move (ai, 7, 0)); 27778 assert_true (ai_move (ai, 3, 0)); 27779 assert_true (ai_move (ai, 1, 0)); 27780 assert_true (ai_move (ai, 1, 1)); 27781 assert_true (ai_move (ai, 7, 1)); 27782 assert_true (ai_move (ai, 7, 3)); 27783 assert_true (ai_move (ai, 7, 4)); 27784 assert_true (ai_move (ai, 6, 3)); 27785 assert_true (ai_move (ai, 6, 5)); 27786 assert_true (ai_move (ai, 4, 7)); 27787 assert_true (ai_move (ai, 1, 6)); 27788 assert_true (ai_move (ai, 7, 5)); 27789 assert_true (ai_move (ai, 7, 6)); 27790 assert_true (ai_move (ai, 0, 7)); 27791 assert_true (ai_move (ai, 1, 7)); 27792 assert_true (ai_move (ai, 0, 6)); 27793 assert_true (ai_move (ai, 6, 6)); 27794 assert_true (ai_move (ai, 7, 7)); 27795 assert_true (ai_move (ai, 6, 7)); 27796 } 27797 27798 private static inline void test_complete_reversi_game_356 () 27799 { 27800 /* 0 1 2 3 4 5 6 7 */ 27801 string [] board = {/* 0 */ " . . . . . . . .", 27802 /* 1 */ " . . . . . . . .", 27803 /* 2 */ " . . . . . L . .", 27804 /* 3 */ " . L L L L . . .", 27805 /* 4 */ " . . . D D . . .", 27806 /* 5 */ " . . . . D . . .", 27807 /* 6 */ " . . . . . . . .", 27808 /* 7 */ " . . . . . . . ."}; 27809 27810 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 27811 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 27812 27813 assert_true (ai_move (ai, 1, 2)); 27814 assert_true (ai_move (ai, 2, 5)); 27815 assert_true (ai_move (ai, 0, 3)); 27816 assert_true (ai_move (ai, 5, 6)); 27817 assert_true (ai_move (ai, 4, 6)); 27818 assert_true (ai_move (ai, 4, 7)); 27819 assert_true (ai_move (ai, 6, 7)); 27820 assert_true (ai_move (ai, 6, 5)); 27821 assert_true (ai_move (ai, 3, 2)); 27822 assert_true (ai_move (ai, 2, 1)); 27823 assert_true (ai_move (ai, 4, 1)); 27824 assert_true (ai_move (ai, 3, 0)); 27825 assert_true (ai_move (ai, 5, 0)); 27826 assert_true (ai_move (ai, 2, 4)); 27827 assert_true (ai_move (ai, 6, 3)); 27828 assert_true (ai_move (ai, 0, 2)); 27829 assert_true (ai_move (ai, 0, 1)); 27830 assert_true (ai_move (ai, 2, 2)); 27831 assert_true (ai_move (ai, 5, 4)); 27832 assert_true (ai_move (ai, 6, 4)); 27833 assert_true (ai_move (ai, 1, 4)); 27834 assert_true (ai_move (ai, 3, 6)); 27835 assert_true (ai_move (ai, 3, 1)); 27836 assert_true (ai_move (ai, 7, 2)); 27837 assert_true (ai_move (ai, 2, 0)); 27838 assert_true (ai_move (ai, 5, 3)); 27839 assert_true (ai_move (ai, 4, 0)); 27840 assert_true (ai_move (ai, 5, 1)); 27841 assert_true (ai_move (ai, 2, 6)); 27842 assert_true (ai_move (ai, 1, 5)); 27843 assert_true (ai_move (ai, 0, 4)); 27844 assert_true (ai_move (ai, 2, 7)); 27845 assert_true (ai_move (ai, 4, 2)); 27846 assert_true (ai_move (ai, 0, 6)); 27847 assert_true (ai_move (ai, 6, 2)); 27848 assert_true (ai_move (ai, 7, 1)); 27849 assert_true (ai_move (ai, 3, 5)); 27850 assert_true (ai_move (ai, 6, 0)); 27851 assert_true (ai_move (ai, 7, 0)); 27852 assert_true (ai_move (ai, 6, 1)); 27853 assert_true (ai_move (ai, 5, 5)); 27854 assert_true (ai_move (ai, 1, 0)); 27855 assert_true (ai_move (ai, 0, 0)); 27856 assert_true (ai_move (ai, 0, 5)); 27857 assert_true (ai_move (ai, 1, 1)); 27858 assert_true (game.pass ()); 27859 assert_true (ai_move (ai, 0, 7)); 27860 assert_true (game.pass ()); 27861 assert_true (ai_move (ai, 1, 6)); 27862 assert_true (game.pass ()); 27863 assert_true (ai_move (ai, 1, 7)); 27864 assert_true (game.pass ()); 27865 assert_true (ai_move (ai, 7, 3)); 27866 assert_true (ai_move (ai, 7, 5)); 27867 assert_true (ai_move (ai, 7, 4)); 27868 assert_true (game.pass ()); 27869 assert_true (ai_move (ai, 7, 6)); 27870 assert_true (ai_move (ai, 6, 6)); 27871 assert_true (ai_move (ai, 7, 7)); 27872 assert_true (game.pass ()); 27873 assert_true (ai_move (ai, 3, 7)); 27874 assert_true (ai_move (ai, 5, 7)); 27875 } 27876 27877 private static inline void test_complete_reversi_game_357 () 27878 { 27879 /* 0 1 2 3 4 5 6 7 */ 27880 string [] board = {/* 0 */ " . . . . . . . .", 27881 /* 1 */ " . . . . . . . .", 27882 /* 2 */ " . . . L . . . .", 27883 /* 3 */ " . . . L D . . .", 27884 /* 4 */ " . . . D L . . .", 27885 /* 5 */ " . . D . D L . .", 27886 /* 6 */ " . . . . . . . .", 27887 /* 7 */ " . . . . . . . ."}; 27888 27889 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 27890 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 27891 27892 assert_true (ai_move (ai, 6, 5)); 27893 assert_true (ai_move (ai, 4, 2)); 27894 assert_true (ai_move (ai, 5, 4)); 27895 assert_true (ai_move (ai, 3, 5)); 27896 assert_true (ai_move (ai, 2, 6)); 27897 assert_true (ai_move (ai, 3, 6)); 27898 assert_true (ai_move (ai, 2, 7)); 27899 assert_true (ai_move (ai, 5, 3)); 27900 assert_true (ai_move (ai, 6, 2)); 27901 assert_true (ai_move (ai, 6, 3)); 27902 assert_true (ai_move (ai, 7, 2)); 27903 assert_true (ai_move (ai, 5, 6)); 27904 assert_true (ai_move (ai, 6, 4)); 27905 assert_true (ai_move (ai, 1, 5)); 27906 assert_true (ai_move (ai, 1, 4)); 27907 assert_true (ai_move (ai, 7, 4)); 27908 assert_true (ai_move (ai, 0, 5)); 27909 assert_true (ai_move (ai, 5, 2)); 27910 assert_true (ai_move (ai, 2, 2)); 27911 assert_true (ai_move (ai, 5, 1)); 27912 assert_true (ai_move (ai, 4, 0)); 27913 assert_true (ai_move (ai, 5, 0)); 27914 assert_true (ai_move (ai, 7, 5)); 27915 assert_true (ai_move (ai, 7, 3)); 27916 assert_true (ai_move (ai, 3, 1)); 27917 assert_true (ai_move (ai, 4, 6)); 27918 assert_true (ai_move (ai, 5, 7)); 27919 assert_true (ai_move (ai, 4, 1)); 27920 assert_true (ai_move (ai, 2, 4)); 27921 assert_true (ai_move (ai, 1, 2)); 27922 assert_true (ai_move (ai, 1, 3)); 27923 assert_true (ai_move (ai, 2, 3)); 27924 assert_true (ai_move (ai, 2, 1)); 27925 assert_true (ai_move (ai, 3, 0)); 27926 assert_true (ai_move (ai, 0, 2)); 27927 assert_true (ai_move (ai, 3, 7)); 27928 assert_true (ai_move (ai, 4, 7)); 27929 assert_true (ai_move (ai, 0, 4)); 27930 assert_true (ai_move (ai, 0, 3)); 27931 assert_true (ai_move (ai, 1, 6)); 27932 assert_true (ai_move (ai, 2, 0)); 27933 assert_true (ai_move (ai, 1, 0)); 27934 assert_true (ai_move (ai, 6, 6)); 27935 assert_true (ai_move (ai, 1, 7)); 27936 assert_true (ai_move (ai, 0, 7)); 27937 assert_true (ai_move (ai, 0, 6)); 27938 assert_true (ai_move (ai, 1, 1)); 27939 assert_true (ai_move (ai, 6, 7)); 27940 assert_true (ai_move (ai, 7, 7)); 27941 assert_true (ai_move (ai, 7, 6)); 27942 assert_true (ai_move (ai, 7, 1)); 27943 assert_true (ai_move (ai, 0, 0)); 27944 assert_true (ai_move (ai, 0, 1)); 27945 assert_true (ai_move (ai, 7, 0)); 27946 assert_true (ai_move (ai, 6, 0)); 27947 assert_true (ai_move (ai, 6, 1)); 27948 } 27949 27950 private static inline void test_complete_reversi_game_358 () 27951 { 27952 /* 0 1 2 3 4 5 6 7 */ 27953 string [] board = {/* 0 */ " . . . . . . . .", 27954 /* 1 */ " . . . . . . . .", 27955 /* 2 */ " . . . L . . . .", 27956 /* 3 */ " . . . L L . . .", 27957 /* 4 */ " . . . D D L . .", 27958 /* 5 */ " . . D . D . . .", 27959 /* 6 */ " . . . . . . . .", 27960 /* 7 */ " . . . . . . . ."}; 27961 27962 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 27963 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 27964 27965 assert_true (ai_move (ai, 6, 3)); 27966 assert_true (ai_move (ai, 6, 5)); 27967 assert_true (ai_move (ai, 6, 4)); 27968 assert_true (ai_move (ai, 3, 5)); 27969 assert_true (ai_move (ai, 2, 6)); 27970 assert_true (ai_move (ai, 3, 6)); 27971 assert_true (ai_move (ai, 2, 7)); 27972 assert_true (ai_move (ai, 5, 3)); 27973 assert_true (ai_move (ai, 6, 2)); 27974 assert_true (ai_move (ai, 3, 7)); 27975 assert_true (ai_move (ai, 4, 7)); 27976 assert_true (ai_move (ai, 1, 5)); 27977 assert_true (ai_move (ai, 1, 4)); 27978 assert_true (ai_move (ai, 7, 3)); 27979 assert_true (ai_move (ai, 0, 5)); 27980 assert_true (ai_move (ai, 5, 1)); 27981 assert_true (ai_move (ai, 2, 4)); 27982 assert_true (ai_move (ai, 1, 3)); 27983 assert_true (ai_move (ai, 2, 3)); 27984 assert_true (ai_move (ai, 7, 5)); 27985 assert_true (ai_move (ai, 4, 6)); 27986 assert_true (ai_move (ai, 5, 7)); 27987 assert_true (ai_move (ai, 6, 7)); 27988 assert_true (ai_move (ai, 2, 2)); 27989 assert_true (ai_move (ai, 5, 5)); 27990 assert_true (ai_move (ai, 5, 6)); 27991 assert_true (ai_move (ai, 0, 2)); 27992 assert_true (ai_move (ai, 0, 4)); 27993 assert_true (ai_move (ai, 7, 2)); 27994 assert_true (ai_move (ai, 0, 6)); 27995 assert_true (ai_move (ai, 1, 2)); 27996 assert_true (ai_move (ai, 7, 1)); 27997 assert_true (ai_move (ai, 7, 4)); 27998 assert_true (ai_move (ai, 1, 6)); 27999 assert_true (ai_move (ai, 7, 0)); 28000 assert_true (ai_move (ai, 1, 7)); 28001 assert_true (ai_move (ai, 0, 7)); 28002 assert_true (ai_move (ai, 0, 1)); 28003 assert_true (ai_move (ai, 0, 3)); 28004 assert_true (ai_move (ai, 5, 2)); 28005 assert_true (ai_move (ai, 5, 0)); 28006 assert_true (ai_move (ai, 4, 2)); 28007 assert_true (ai_move (ai, 7, 6)); 28008 assert_true (ai_move (ai, 6, 6)); 28009 assert_true (ai_move (ai, 3, 1)); 28010 assert_true (ai_move (ai, 2, 1)); 28011 assert_true (ai_move (ai, 7, 7)); 28012 assert_true (ai_move (ai, 4, 1)); 28013 assert_true (ai_move (ai, 6, 1)); 28014 assert_true (ai_move (ai, 6, 0)); 28015 assert_true (ai_move (ai, 2, 0)); 28016 assert_true (ai_move (ai, 4, 0)); 28017 assert_true (ai_move (ai, 3, 0)); 28018 assert_true (ai_move (ai, 1, 1)); 28019 assert_true (ai_move (ai, 0, 0)); 28020 assert_true (ai_move (ai, 1, 0)); 28021 } 28022 28023 private static inline void test_complete_reversi_game_359 () 28024 { 28025 /* 0 1 2 3 4 5 6 7 */ 28026 string [] board = {/* 0 */ " . . . . . . . .", 28027 /* 1 */ " . . . . . . . .", 28028 /* 2 */ " . . . L . . . .", 28029 /* 3 */ " . . . L L L . .", 28030 /* 4 */ " . . . D D . . .", 28031 /* 5 */ " . . D . D . . .", 28032 /* 6 */ " . . . . . . . .", 28033 /* 7 */ " . . . . . . . ."}; 28034 28035 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 28036 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 28037 28038 assert_true (ai_move (ai, 6, 2)); 28039 assert_true (ai_move (ai, 6, 3)); 28040 assert_true (ai_move (ai, 6, 4)); 28041 assert_true (ai_move (ai, 7, 3)); 28042 assert_true (ai_move (ai, 5, 2)); 28043 assert_true (ai_move (ai, 4, 1)); 28044 assert_true (ai_move (ai, 4, 2)); 28045 assert_true (ai_move (ai, 7, 2)); 28046 assert_true (ai_move (ai, 5, 1)); 28047 assert_true (ai_move (ai, 4, 0)); 28048 assert_true (ai_move (ai, 5, 0)); 28049 assert_true (ai_move (ai, 6, 5)); 28050 assert_true (ai_move (ai, 7, 5)); 28051 assert_true (ai_move (ai, 5, 4)); 28052 assert_true (ai_move (ai, 5, 5)); 28053 assert_true (ai_move (ai, 3, 6)); 28054 assert_true (ai_move (ai, 2, 1)); 28055 assert_true (ai_move (ai, 3, 1)); 28056 assert_true (ai_move (ai, 5, 6)); 28057 assert_true (ai_move (ai, 1, 4)); 28058 assert_true (ai_move (ai, 2, 4)); 28059 assert_true (ai_move (ai, 6, 0)); 28060 assert_true (ai_move (ai, 2, 2)); 28061 assert_true (ai_move (ai, 5, 7)); 28062 assert_true (ai_move (ai, 4, 6)); 28063 assert_true (ai_move (ai, 1, 2)); 28064 assert_true (ai_move (ai, 2, 0)); 28065 assert_true (ai_move (ai, 1, 5)); 28066 assert_true (ai_move (ai, 1, 3)); 28067 assert_true (ai_move (ai, 0, 2)); 28068 assert_true (ai_move (ai, 4, 7)); 28069 assert_true (ai_move (ai, 7, 4)); 28070 assert_true (ai_move (ai, 7, 1)); 28071 assert_true (ai_move (ai, 3, 7)); 28072 assert_true (ai_move (ai, 2, 7)); 28073 assert_true (ai_move (ai, 1, 7)); 28074 assert_true (ai_move (ai, 3, 0)); 28075 assert_true (ai_move (ai, 1, 0)); 28076 assert_true (ai_move (ai, 2, 3)); 28077 assert_true (ai_move (ai, 2, 6)); 28078 assert_true (ai_move (ai, 0, 5)); 28079 assert_true (ai_move (ai, 3, 5)); 28080 assert_true (ai_move (ai, 0, 4)); 28081 assert_true (ai_move (ai, 6, 1)); 28082 assert_true (ai_move (ai, 6, 6)); 28083 assert_true (ai_move (ai, 7, 7)); 28084 assert_true (ai_move (ai, 6, 7)); 28085 assert_true (ai_move (ai, 1, 1)); 28086 assert_true (ai_move (ai, 0, 7)); 28087 assert_true (ai_move (ai, 7, 6)); 28088 assert_true (ai_move (ai, 1, 6)); 28089 assert_true (ai_move (ai, 7, 0)); 28090 assert_true (ai_move (ai, 0, 1)); 28091 assert_true (ai_move (ai, 0, 3)); 28092 assert_true (game.pass ()); 28093 assert_true (ai_move (ai, 0, 6)); 28094 assert_true (game.pass ()); 28095 assert_true (ai_move (ai, 0, 0)); 28096 } 28097 28098 private static inline void test_complete_reversi_game_360 () 28099 { 28100 /* 0 1 2 3 4 5 6 7 */ 28101 string [] board = {/* 0 */ " . . . . . . . .", 28102 /* 1 */ " . . . . . . . .", 28103 /* 2 */ " . . . L . . . .", 28104 /* 3 */ " . . . L D . . .", 28105 /* 4 */ " . . . L D . . .", 28106 /* 5 */ " . . D L D . . .", 28107 /* 6 */ " . . . . . . . .", 28108 /* 7 */ " . . . . . . . ."}; 28109 28110 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 28111 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 28112 28113 assert_true (ai_move (ai, 2, 6)); 28114 assert_true (ai_move (ai, 3, 6)); 28115 assert_true (ai_move (ai, 2, 1)); 28116 assert_true (ai_move (ai, 1, 5)); 28117 assert_true (ai_move (ai, 2, 7)); 28118 assert_true (ai_move (ai, 3, 1)); 28119 assert_true (ai_move (ai, 1, 4)); 28120 assert_true (ai_move (ai, 5, 6)); 28121 assert_true (ai_move (ai, 5, 4)); 28122 assert_true (ai_move (ai, 5, 2)); 28123 assert_true (ai_move (ai, 0, 5)); 28124 assert_true (ai_move (ai, 6, 5)); 28125 assert_true (ai_move (ai, 6, 4)); 28126 assert_true (ai_move (ai, 3, 7)); 28127 assert_true (ai_move (ai, 4, 6)); 28128 assert_true (ai_move (ai, 1, 7)); 28129 assert_true (ai_move (ai, 2, 4)); 28130 assert_true (ai_move (ai, 5, 3)); 28131 assert_true (ai_move (ai, 5, 1)); 28132 assert_true (ai_move (ai, 1, 3)); 28133 assert_true (ai_move (ai, 0, 2)); 28134 assert_true (ai_move (ai, 6, 2)); 28135 assert_true (ai_move (ai, 7, 3)); 28136 assert_true (ai_move (ai, 5, 0)); 28137 assert_true (ai_move (ai, 4, 0)); 28138 assert_true (ai_move (ai, 3, 0)); 28139 assert_true (ai_move (ai, 7, 6)); 28140 assert_true (ai_move (ai, 7, 2)); 28141 assert_true (ai_move (ai, 4, 1)); 28142 assert_true (ai_move (ai, 4, 2)); 28143 assert_true (ai_move (ai, 6, 7)); 28144 assert_true (ai_move (ai, 2, 3)); 28145 assert_true (ai_move (ai, 1, 2)); 28146 assert_true (ai_move (ai, 2, 0)); 28147 assert_true (ai_move (ai, 6, 1)); 28148 assert_true (ai_move (ai, 7, 0)); 28149 assert_true (ai_move (ai, 6, 3)); 28150 assert_true (ai_move (ai, 5, 5)); 28151 assert_true (ai_move (ai, 5, 7)); 28152 assert_true (ai_move (ai, 6, 0)); 28153 assert_true (ai_move (ai, 6, 6)); 28154 assert_true (ai_move (ai, 7, 4)); 28155 assert_true (ai_move (ai, 7, 1)); 28156 assert_true (ai_move (ai, 7, 5)); 28157 assert_true (ai_move (ai, 2, 2)); 28158 assert_true (ai_move (ai, 1, 0)); 28159 assert_true (ai_move (ai, 1, 1)); 28160 assert_true (ai_move (ai, 0, 4)); 28161 assert_true (ai_move (ai, 0, 3)); 28162 assert_true (ai_move (ai, 1, 6)); 28163 assert_true (ai_move (ai, 0, 7)); 28164 assert_true (ai_move (ai, 4, 7)); 28165 assert_true (ai_move (ai, 0, 6)); 28166 assert_true (ai_move (ai, 0, 0)); 28167 assert_true (ai_move (ai, 0, 1)); 28168 assert_true (ai_move (ai, 7, 7)); 28169 } 28170 28171 private static inline void test_complete_reversi_game_361 () 28172 { 28173 /* 0 1 2 3 4 5 6 7 */ 28174 string [] board = {/* 0 */ " . . . . . . . .", 28175 /* 1 */ " . . . . . . . .", 28176 /* 2 */ " . . . L . . . .", 28177 /* 3 */ " . . . L D . . .", 28178 /* 4 */ " . . D D L . . .", 28179 /* 5 */ " . . . . D L . .", 28180 /* 6 */ " . . . . . . . .", 28181 /* 7 */ " . . . . . . . ."}; 28182 28183 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 28184 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 28185 28186 assert_true (ai_move (ai, 6, 5)); 28187 assert_true (ai_move (ai, 1, 5)); 28188 assert_true (ai_move (ai, 2, 1)); 28189 assert_true (ai_move (ai, 3, 1)); 28190 assert_true (ai_move (ai, 1, 4)); 28191 assert_true (ai_move (ai, 4, 2)); 28192 assert_true (ai_move (ai, 5, 2)); 28193 assert_true (ai_move (ai, 6, 2)); 28194 assert_true (ai_move (ai, 5, 4)); 28195 assert_true (ai_move (ai, 5, 3)); 28196 assert_true (ai_move (ai, 2, 2)); 28197 assert_true (ai_move (ai, 5, 6)); 28198 assert_true (ai_move (ai, 6, 4)); 28199 assert_true (ai_move (ai, 7, 3)); 28200 assert_true (ai_move (ai, 5, 1)); 28201 assert_true (ai_move (ai, 4, 1)); 28202 assert_true (ai_move (ai, 2, 0)); 28203 assert_true (ai_move (ai, 6, 3)); 28204 assert_true (ai_move (ai, 7, 5)); 28205 assert_true (ai_move (ai, 5, 0)); 28206 assert_true (ai_move (ai, 4, 6)); 28207 assert_true (ai_move (ai, 1, 2)); 28208 assert_true (ai_move (ai, 2, 3)); 28209 assert_true (ai_move (ai, 0, 5)); 28210 assert_true (ai_move (ai, 1, 3)); 28211 assert_true (ai_move (ai, 0, 3)); 28212 assert_true (ai_move (ai, 0, 2)); 28213 assert_true (ai_move (ai, 2, 5)); 28214 assert_true (ai_move (ai, 2, 6)); 28215 assert_true (ai_move (ai, 3, 5)); 28216 assert_true (ai_move (ai, 3, 6)); 28217 assert_true (ai_move (ai, 2, 7)); 28218 assert_true (ai_move (ai, 4, 0)); 28219 assert_true (ai_move (ai, 4, 7)); 28220 assert_true (ai_move (ai, 7, 4)); 28221 assert_true (ai_move (ai, 7, 2)); 28222 assert_true (ai_move (ai, 7, 1)); 28223 assert_true (ai_move (ai, 3, 0)); 28224 assert_true (ai_move (ai, 6, 0)); 28225 assert_true (ai_move (ai, 0, 4)); 28226 assert_true (ai_move (ai, 0, 6)); 28227 assert_true (ai_move (ai, 6, 6)); 28228 assert_true (ai_move (ai, 3, 7)); 28229 assert_true (ai_move (ai, 5, 7)); 28230 assert_true (ai_move (ai, 1, 0)); 28231 assert_true (ai_move (ai, 1, 1)); 28232 assert_true (ai_move (ai, 0, 0)); 28233 assert_true (ai_move (ai, 0, 1)); 28234 assert_true (ai_move (ai, 1, 6)); 28235 assert_true (ai_move (ai, 0, 7)); 28236 assert_true (ai_move (ai, 1, 7)); 28237 assert_true (ai_move (ai, 6, 1)); 28238 assert_true (ai_move (ai, 7, 0)); 28239 assert_true (game.pass ()); 28240 assert_true (ai_move (ai, 7, 7)); 28241 assert_true (ai_move (ai, 6, 7)); 28242 assert_true (ai_move (ai, 7, 6)); 28243 } 28244 28245 private static inline void test_complete_reversi_game_362 () 28246 { 28247 /* 0 1 2 3 4 5 6 7 */ 28248 string [] board = {/* 0 */ " . . . . . . . .", 28249 /* 1 */ " . . . . . . . .", 28250 /* 2 */ " . . . L . . . .", 28251 /* 3 */ " . . . L L . . .", 28252 /* 4 */ " . . D D D L . .", 28253 /* 5 */ " . . . . D . . .", 28254 /* 6 */ " . . . . . . . .", 28255 /* 7 */ " . . . . . . . ."}; 28256 28257 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 28258 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 28259 28260 assert_true (ai_move (ai, 6, 3)); 28261 assert_true (ai_move (ai, 1, 5)); 28262 assert_true (ai_move (ai, 1, 4)); 28263 assert_true (ai_move (ai, 6, 5)); 28264 assert_true (ai_move (ai, 6, 4)); 28265 assert_true (ai_move (ai, 1, 3)); 28266 assert_true (ai_move (ai, 0, 4)); 28267 assert_true (ai_move (ai, 2, 5)); 28268 assert_true (ai_move (ai, 3, 6)); 28269 assert_true (ai_move (ai, 3, 5)); 28270 assert_true (ai_move (ai, 0, 5)); 28271 assert_true (ai_move (ai, 2, 6)); 28272 assert_true (ai_move (ai, 3, 7)); 28273 assert_true (ai_move (ai, 2, 7)); 28274 assert_true (ai_move (ai, 1, 2)); 28275 assert_true (ai_move (ai, 0, 2)); 28276 assert_true (ai_move (ai, 2, 3)); 28277 assert_true (ai_move (ai, 2, 2)); 28278 assert_true (ai_move (ai, 4, 1)); 28279 assert_true (ai_move (ai, 5, 6)); 28280 assert_true (ai_move (ai, 4, 6)); 28281 assert_true (ai_move (ai, 2, 1)); 28282 assert_true (ai_move (ai, 4, 2)); 28283 assert_true (ai_move (ai, 0, 3)); 28284 assert_true (ai_move (ai, 0, 1)); 28285 assert_true (ai_move (ai, 5, 7)); 28286 assert_true (ai_move (ai, 4, 7)); 28287 assert_true (ai_move (ai, 5, 0)); 28288 assert_true (ai_move (ai, 7, 4)); 28289 assert_true (ai_move (ai, 5, 1)); 28290 assert_true (ai_move (ai, 1, 6)); 28291 assert_true (ai_move (ai, 7, 2)); 28292 assert_true (ai_move (ai, 5, 5)); 28293 assert_true (ai_move (ai, 5, 3)); 28294 assert_true (ai_move (ai, 5, 2)); 28295 assert_true (ai_move (ai, 7, 3)); 28296 assert_true (ai_move (ai, 6, 2)); 28297 assert_true (ai_move (ai, 7, 5)); 28298 assert_true (ai_move (ai, 2, 0)); 28299 assert_true (ai_move (ai, 7, 6)); 28300 assert_true (ai_move (ai, 3, 0)); 28301 assert_true (ai_move (ai, 4, 0)); 28302 assert_true (ai_move (ai, 3, 1)); 28303 assert_true (ai_move (ai, 1, 0)); 28304 assert_true (ai_move (ai, 1, 7)); 28305 assert_true (ai_move (ai, 0, 7)); 28306 assert_true (ai_move (ai, 6, 1)); 28307 assert_true (ai_move (ai, 0, 6)); 28308 assert_true (ai_move (ai, 1, 1)); 28309 assert_true (ai_move (ai, 0, 0)); 28310 assert_true (ai_move (ai, 6, 6)); 28311 assert_true (ai_move (ai, 6, 7)); 28312 assert_true (game.pass ()); 28313 assert_true (ai_move (ai, 7, 0)); 28314 assert_true (ai_move (ai, 7, 1)); 28315 assert_true (ai_move (ai, 6, 0)); 28316 assert_true (ai_move (ai, 7, 7)); 28317 } 28318 28319 private static inline void test_complete_reversi_game_363 () 28320 { 28321 /* 0 1 2 3 4 5 6 7 */ 28322 string [] board = {/* 0 */ " . . . . . . . .", 28323 /* 1 */ " . . . . . . . .", 28324 /* 2 */ " . . . L . . . .", 28325 /* 3 */ " . . . L L L . .", 28326 /* 4 */ " . . D D D . . .", 28327 /* 5 */ " . . . . D . . .", 28328 /* 6 */ " . . . . . . . .", 28329 /* 7 */ " . . . . . . . ."}; 28330 28331 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 28332 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 28333 28334 assert_true (ai_move (ai, 6, 2)); 28335 assert_true (ai_move (ai, 6, 3)); 28336 assert_true (ai_move (ai, 6, 4)); 28337 assert_true (ai_move (ai, 1, 5)); 28338 assert_true (ai_move (ai, 1, 4)); 28339 assert_true (ai_move (ai, 7, 3)); 28340 assert_true (ai_move (ai, 2, 2)); 28341 assert_true (ai_move (ai, 1, 2)); 28342 assert_true (ai_move (ai, 3, 1)); 28343 assert_true (ai_move (ai, 2, 1)); 28344 assert_true (ai_move (ai, 1, 3)); 28345 assert_true (ai_move (ai, 5, 1)); 28346 assert_true (ai_move (ai, 2, 0)); 28347 assert_true (ai_move (ai, 7, 5)); 28348 assert_true (ai_move (ai, 0, 2)); 28349 assert_true (ai_move (ai, 3, 0)); 28350 assert_true (ai_move (ai, 4, 0)); 28351 assert_true (ai_move (ai, 2, 5)); 28352 assert_true (ai_move (ai, 3, 6)); 28353 assert_true (ai_move (ai, 5, 6)); 28354 assert_true (ai_move (ai, 4, 6)); 28355 assert_true (ai_move (ai, 4, 2)); 28356 assert_true (ai_move (ai, 0, 5)); 28357 assert_true (ai_move (ai, 5, 4)); 28358 assert_true (ai_move (ai, 2, 3)); 28359 assert_true (ai_move (ai, 2, 7)); 28360 assert_true (ai_move (ai, 5, 2)); 28361 assert_true (ai_move (ai, 4, 7)); 28362 assert_true (ai_move (ai, 5, 0)); 28363 assert_true (ai_move (ai, 3, 5)); 28364 assert_true (ai_move (ai, 7, 2)); 28365 assert_true (ai_move (ai, 0, 3)); 28366 assert_true (ai_move (ai, 0, 4)); 28367 assert_true (ai_move (ai, 4, 1)); 28368 assert_true (ai_move (ai, 2, 6)); 28369 assert_true (ai_move (ai, 5, 5)); 28370 assert_true (ai_move (ai, 6, 1)); 28371 assert_true (ai_move (ai, 1, 1)); 28372 assert_true (ai_move (ai, 3, 7)); 28373 assert_true (ai_move (ai, 1, 7)); 28374 assert_true (ai_move (ai, 1, 6)); 28375 assert_true (ai_move (ai, 0, 1)); 28376 assert_true (ai_move (ai, 0, 0)); 28377 assert_true (ai_move (ai, 0, 6)); 28378 assert_true (ai_move (ai, 0, 7)); 28379 assert_true (ai_move (ai, 7, 1)); 28380 assert_true (ai_move (ai, 5, 7)); 28381 assert_true (ai_move (ai, 6, 5)); 28382 assert_true (ai_move (ai, 6, 0)); 28383 assert_true (ai_move (ai, 6, 6)); 28384 assert_true (ai_move (ai, 1, 0)); 28385 assert_true (game.pass ()); 28386 assert_true (ai_move (ai, 7, 7)); 28387 assert_true (ai_move (ai, 7, 6)); 28388 assert_true (ai_move (ai, 7, 4)); 28389 assert_true (ai_move (ai, 6, 7)); 28390 assert_true (ai_move (ai, 7, 0)); 28391 } 28392 28393 private static inline void test_complete_reversi_game_364 () 28394 { 28395 /* 0 1 2 3 4 5 6 7 */ 28396 string [] board = {/* 0 */ " . . . . . . . .", 28397 /* 1 */ " . . . . . . . .", 28398 /* 2 */ " . . . L . . . .", 28399 /* 3 */ " . . . L D . . .", 28400 /* 4 */ " . . D L D . . .", 28401 /* 5 */ " . . . L D . . .", 28402 /* 6 */ " . . . . . . . .", 28403 /* 7 */ " . . . . . . . ."}; 28404 28405 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 28406 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 28407 28408 assert_true (ai_move (ai, 2, 6)); 28409 assert_true (ai_move (ai, 3, 6)); 28410 assert_true (ai_move (ai, 2, 1)); 28411 assert_true (ai_move (ai, 5, 6)); 28412 assert_true (ai_move (ai, 2, 2)); 28413 assert_true (ai_move (ai, 1, 4)); 28414 assert_true (ai_move (ai, 1, 5)); 28415 assert_true (ai_move (ai, 1, 3)); 28416 assert_true (ai_move (ai, 1, 2)); 28417 assert_true (ai_move (ai, 5, 2)); 28418 assert_true (ai_move (ai, 4, 2)); 28419 assert_true (ai_move (ai, 0, 4)); 28420 assert_true (ai_move (ai, 6, 2)); 28421 assert_true (ai_move (ai, 0, 2)); 28422 assert_true (ai_move (ai, 2, 5)); 28423 assert_true (ai_move (ai, 2, 7)); 28424 assert_true (ai_move (ai, 5, 5)); 28425 assert_true (ai_move (ai, 2, 3)); 28426 assert_true (ai_move (ai, 4, 6)); 28427 assert_true (ai_move (ai, 3, 1)); 28428 assert_true (ai_move (ai, 5, 7)); 28429 assert_true (ai_move (ai, 5, 1)); 28430 assert_true (ai_move (ai, 1, 1)); 28431 assert_true (ai_move (ai, 5, 4)); 28432 assert_true (ai_move (ai, 5, 3)); 28433 assert_true (ai_move (ai, 6, 4)); 28434 assert_true (ai_move (ai, 6, 3)); 28435 assert_true (ai_move (ai, 0, 5)); 28436 assert_true (ai_move (ai, 0, 3)); 28437 assert_true (ai_move (ai, 6, 5)); 28438 assert_true (ai_move (ai, 4, 7)); 28439 assert_true (ai_move (ai, 7, 3)); 28440 assert_true (ai_move (ai, 7, 5)); 28441 assert_true (ai_move (ai, 7, 2)); 28442 assert_true (ai_move (ai, 7, 4)); 28443 assert_true (ai_move (ai, 7, 6)); 28444 assert_true (ai_move (ai, 4, 1)); 28445 assert_true (ai_move (ai, 5, 0)); 28446 assert_true (ai_move (ai, 3, 0)); 28447 assert_true (ai_move (ai, 4, 0)); 28448 assert_true (ai_move (ai, 2, 0)); 28449 assert_true (ai_move (ai, 3, 7)); 28450 assert_true (ai_move (ai, 1, 7)); 28451 assert_true (ai_move (ai, 6, 1)); 28452 assert_true (ai_move (ai, 7, 0)); 28453 assert_true (ai_move (ai, 6, 0)); 28454 assert_true (ai_move (ai, 7, 1)); 28455 assert_true (ai_move (ai, 6, 6)); 28456 assert_true (ai_move (ai, 7, 7)); 28457 assert_true (ai_move (ai, 6, 7)); 28458 assert_true (ai_move (ai, 1, 6)); 28459 assert_true (ai_move (ai, 0, 7)); 28460 assert_true (ai_move (ai, 0, 6)); 28461 assert_true (ai_move (ai, 0, 0)); 28462 assert_true (ai_move (ai, 1, 0)); 28463 assert_true (ai_move (ai, 0, 1)); 28464 } 28465 28466 private static inline void test_complete_reversi_game_365 () 28467 { 28468 /* 0 1 2 3 4 5 6 7 */ 28469 string [] board = {/* 0 */ " . . . . . . . .", 28470 /* 1 */ " . . . . . . . .", 28471 /* 2 */ " . . . L . . . .", 28472 /* 3 */ " . . . L D . . .", 28473 /* 4 */ " . . L D D . . .", 28474 /* 5 */ " . L . . D . . .", 28475 /* 6 */ " . . . . . . . .", 28476 /* 7 */ " . . . . . . . ."}; 28477 28478 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 28479 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 28480 28481 assert_true (ai_move (ai, 1, 4)); 28482 assert_true (ai_move (ai, 5, 4)); 28483 assert_true (ai_move (ai, 6, 3)); 28484 assert_true (ai_move (ai, 6, 5)); 28485 assert_true (ai_move (ai, 6, 4)); 28486 assert_true (ai_move (ai, 1, 3)); 28487 assert_true (ai_move (ai, 0, 4)); 28488 assert_true (ai_move (ai, 2, 5)); 28489 assert_true (ai_move (ai, 3, 6)); 28490 assert_true (ai_move (ai, 3, 5)); 28491 assert_true (ai_move (ai, 0, 5)); 28492 assert_true (ai_move (ai, 2, 6)); 28493 assert_true (ai_move (ai, 3, 7)); 28494 assert_true (ai_move (ai, 2, 7)); 28495 assert_true (ai_move (ai, 1, 2)); 28496 assert_true (ai_move (ai, 0, 2)); 28497 assert_true (ai_move (ai, 2, 3)); 28498 assert_true (ai_move (ai, 2, 2)); 28499 assert_true (ai_move (ai, 4, 1)); 28500 assert_true (ai_move (ai, 5, 6)); 28501 assert_true (ai_move (ai, 4, 6)); 28502 assert_true (ai_move (ai, 2, 1)); 28503 assert_true (ai_move (ai, 4, 2)); 28504 assert_true (ai_move (ai, 0, 3)); 28505 assert_true (ai_move (ai, 0, 1)); 28506 assert_true (ai_move (ai, 5, 7)); 28507 assert_true (ai_move (ai, 4, 7)); 28508 assert_true (ai_move (ai, 5, 0)); 28509 assert_true (ai_move (ai, 7, 4)); 28510 assert_true (ai_move (ai, 5, 1)); 28511 assert_true (ai_move (ai, 1, 6)); 28512 assert_true (ai_move (ai, 7, 2)); 28513 assert_true (ai_move (ai, 5, 5)); 28514 assert_true (ai_move (ai, 5, 3)); 28515 assert_true (ai_move (ai, 5, 2)); 28516 assert_true (ai_move (ai, 7, 3)); 28517 assert_true (ai_move (ai, 6, 2)); 28518 assert_true (ai_move (ai, 7, 5)); 28519 assert_true (ai_move (ai, 2, 0)); 28520 assert_true (ai_move (ai, 7, 6)); 28521 assert_true (ai_move (ai, 3, 0)); 28522 assert_true (ai_move (ai, 4, 0)); 28523 assert_true (ai_move (ai, 3, 1)); 28524 assert_true (ai_move (ai, 1, 0)); 28525 assert_true (ai_move (ai, 1, 7)); 28526 assert_true (ai_move (ai, 0, 7)); 28527 assert_true (ai_move (ai, 6, 1)); 28528 assert_true (ai_move (ai, 0, 6)); 28529 assert_true (ai_move (ai, 1, 1)); 28530 assert_true (ai_move (ai, 0, 0)); 28531 assert_true (ai_move (ai, 6, 6)); 28532 assert_true (ai_move (ai, 6, 7)); 28533 assert_true (game.pass ()); 28534 assert_true (ai_move (ai, 7, 0)); 28535 assert_true (ai_move (ai, 7, 1)); 28536 assert_true (ai_move (ai, 6, 0)); 28537 assert_true (ai_move (ai, 7, 7)); 28538 } 28539 28540 private static inline void test_complete_reversi_game_366 () 28541 { 28542 /* 0 1 2 3 4 5 6 7 */ 28543 string [] board = {/* 0 */ " . . . . . . . .", 28544 /* 1 */ " . . . . . . . .", 28545 /* 2 */ " . . . L . . . .", 28546 /* 3 */ " . . D D L . . .", 28547 /* 4 */ " . . . D D L . .", 28548 /* 5 */ " . . . . D . . .", 28549 /* 6 */ " . . . . . . . .", 28550 /* 7 */ " . . . . . . . ."}; 28551 28552 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 28553 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 28554 28555 assert_true (ai_move (ai, 6, 3)); 28556 assert_true (ai_move (ai, 6, 5)); 28557 assert_true (ai_move (ai, 6, 4)); 28558 assert_true (ai_move (ai, 1, 4)); 28559 assert_true (ai_move (ai, 5, 3)); 28560 assert_true (ai_move (ai, 5, 6)); 28561 assert_true (ai_move (ai, 3, 6)); 28562 assert_true (ai_move (ai, 5, 2)); 28563 assert_true (ai_move (ai, 5, 1)); 28564 assert_true (ai_move (ai, 7, 3)); 28565 assert_true (ai_move (ai, 6, 2)); 28566 assert_true (ai_move (ai, 5, 5)); 28567 assert_true (ai_move (ai, 5, 7)); 28568 assert_true (ai_move (ai, 4, 2)); 28569 assert_true (ai_move (ai, 2, 2)); 28570 assert_true (ai_move (ai, 2, 1)); 28571 assert_true (ai_move (ai, 3, 1)); 28572 assert_true (ai_move (ai, 7, 2)); 28573 assert_true (ai_move (ai, 4, 1)); 28574 assert_true (ai_move (ai, 4, 6)); 28575 assert_true (ai_move (ai, 7, 5)); 28576 assert_true (ai_move (ai, 3, 5)); 28577 assert_true (ai_move (ai, 1, 3)); 28578 assert_true (ai_move (ai, 2, 4)); 28579 assert_true (ai_move (ai, 1, 2)); 28580 assert_true (ai_move (ai, 0, 2)); 28581 assert_true (ai_move (ai, 2, 5)); 28582 assert_true (ai_move (ai, 1, 5)); 28583 assert_true (ai_move (ai, 2, 0)); 28584 assert_true (ai_move (ai, 2, 6)); 28585 assert_true (ai_move (ai, 2, 7)); 28586 assert_true (ai_move (ai, 4, 7)); 28587 assert_true (ai_move (ai, 0, 5)); 28588 assert_true (ai_move (ai, 0, 3)); 28589 assert_true (ai_move (ai, 3, 7)); 28590 assert_true (ai_move (ai, 7, 4)); 28591 assert_true (ai_move (ai, 7, 1)); 28592 assert_true (ai_move (ai, 5, 0)); 28593 assert_true (ai_move (ai, 3, 0)); 28594 assert_true (ai_move (ai, 4, 0)); 28595 assert_true (ai_move (ai, 6, 0)); 28596 assert_true (ai_move (ai, 6, 1)); 28597 assert_true (ai_move (ai, 0, 4)); 28598 assert_true (ai_move (ai, 0, 6)); 28599 assert_true (ai_move (ai, 1, 6)); 28600 assert_true (ai_move (ai, 0, 7)); 28601 assert_true (ai_move (ai, 1, 7)); 28602 assert_true (ai_move (ai, 6, 7)); 28603 assert_true (ai_move (ai, 7, 0)); 28604 assert_true (ai_move (ai, 6, 6)); 28605 assert_true (ai_move (ai, 7, 7)); 28606 assert_true (ai_move (ai, 7, 6)); 28607 assert_true (ai_move (ai, 1, 1)); 28608 assert_true (ai_move (ai, 0, 0)); 28609 assert_true (ai_move (ai, 1, 0)); 28610 assert_true (ai_move (ai, 0, 1)); 28611 } 28612 28613 private static inline void test_complete_reversi_game_367 () 28614 { 28615 /* 0 1 2 3 4 5 6 7 */ 28616 string [] board = {/* 0 */ " . . . . . . . .", 28617 /* 1 */ " . . . . . . . .", 28618 /* 2 */ " . . . L . . . .", 28619 /* 3 */ " . . D L D . . .", 28620 /* 4 */ " . . . L D . . .", 28621 /* 5 */ " . . . L D . . .", 28622 /* 6 */ " . . . . . . . .", 28623 /* 7 */ " . . . . . . . ."}; 28624 28625 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 28626 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 28627 28628 assert_true (ai_move (ai, 2, 6)); 28629 assert_true (ai_move (ai, 1, 2)); 28630 assert_true (ai_move (ai, 2, 1)); 28631 assert_true (ai_move (ai, 4, 1)); 28632 assert_true (ai_move (ai, 0, 3)); 28633 assert_true (ai_move (ai, 3, 6)); 28634 assert_true (ai_move (ai, 2, 7)); 28635 assert_true (ai_move (ai, 5, 6)); 28636 assert_true (ai_move (ai, 5, 4)); 28637 assert_true (ai_move (ai, 5, 5)); 28638 assert_true (ai_move (ai, 5, 7)); 28639 assert_true (ai_move (ai, 6, 3)); 28640 assert_true (ai_move (ai, 6, 5)); 28641 assert_true (ai_move (ai, 6, 4)); 28642 assert_true (ai_move (ai, 7, 3)); 28643 assert_true (ai_move (ai, 7, 5)); 28644 assert_true (ai_move (ai, 4, 6)); 28645 assert_true (ai_move (ai, 7, 4)); 28646 assert_true (ai_move (ai, 7, 6)); 28647 assert_true (ai_move (ai, 5, 2)); 28648 assert_true (ai_move (ai, 7, 2)); 28649 assert_true (ai_move (ai, 5, 3)); 28650 assert_true (ai_move (ai, 2, 5)); 28651 assert_true (ai_move (ai, 6, 2)); 28652 assert_true (ai_move (ai, 2, 4)); 28653 assert_true (ai_move (ai, 1, 5)); 28654 assert_true (ai_move (ai, 1, 4)); 28655 assert_true (ai_move (ai, 0, 5)); 28656 assert_true (ai_move (ai, 4, 2)); 28657 assert_true (ai_move (ai, 5, 1)); 28658 assert_true (ai_move (ai, 5, 0)); 28659 assert_true (ai_move (ai, 0, 1)); 28660 assert_true (ai_move (ai, 3, 0)); 28661 assert_true (ai_move (ai, 4, 0)); 28662 assert_true (ai_move (ai, 2, 2)); 28663 assert_true (ai_move (ai, 2, 0)); 28664 assert_true (ai_move (ai, 1, 0)); 28665 assert_true (ai_move (ai, 1, 3)); 28666 assert_true (ai_move (ai, 3, 1)); 28667 assert_true (ai_move (ai, 4, 7)); 28668 assert_true (ai_move (ai, 3, 7)); 28669 assert_true (ai_move (ai, 1, 1)); 28670 assert_true (ai_move (ai, 0, 0)); 28671 assert_true (ai_move (ai, 6, 0)); 28672 assert_true (ai_move (ai, 0, 2)); 28673 assert_true (ai_move (ai, 6, 1)); 28674 assert_true (ai_move (ai, 0, 4)); 28675 assert_true (ai_move (ai, 6, 6)); 28676 assert_true (ai_move (ai, 0, 6)); 28677 assert_true (ai_move (ai, 6, 7)); 28678 assert_true (ai_move (ai, 7, 7)); 28679 assert_true (ai_move (ai, 1, 6)); 28680 assert_true (ai_move (ai, 0, 7)); 28681 assert_true (game.pass ()); 28682 assert_true (ai_move (ai, 1, 7)); 28683 assert_true (game.pass ()); 28684 assert_true (ai_move (ai, 7, 0)); 28685 assert_true (ai_move (ai, 7, 1)); 28686 } 28687 28688 private static inline void test_complete_reversi_game_368 () 28689 { 28690 /* 0 1 2 3 4 5 6 7 */ 28691 string [] board = {/* 0 */ " . . . . . . . .", 28692 /* 1 */ " . . . . . . . .", 28693 /* 2 */ " . . . L . . . .", 28694 /* 3 */ " . . L D D . . .", 28695 /* 4 */ " . L . D D . . .", 28696 /* 5 */ " . . . . D . . .", 28697 /* 6 */ " . . . . . . . .", 28698 /* 7 */ " . . . . . . . ."}; 28699 28700 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 28701 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 28702 28703 assert_true (ai_move (ai, 1, 2)); 28704 assert_true (ai_move (ai, 5, 4)); 28705 assert_true (ai_move (ai, 6, 3)); 28706 assert_true (ai_move (ai, 6, 5)); 28707 assert_true (ai_move (ai, 6, 4)); 28708 assert_true (ai_move (ai, 2, 5)); 28709 assert_true (ai_move (ai, 4, 1)); 28710 assert_true (ai_move (ai, 5, 6)); 28711 assert_true (ai_move (ai, 4, 6)); 28712 assert_true (ai_move (ai, 2, 1)); 28713 assert_true (ai_move (ai, 3, 0)); 28714 assert_true (ai_move (ai, 5, 0)); 28715 assert_true (ai_move (ai, 3, 1)); 28716 assert_true (ai_move (ai, 3, 6)); 28717 assert_true (ai_move (ai, 4, 7)); 28718 assert_true (ai_move (ai, 7, 2)); 28719 assert_true (ai_move (ai, 7, 4)); 28720 assert_true (ai_move (ai, 7, 6)); 28721 assert_true (ai_move (ai, 2, 6)); 28722 assert_true (ai_move (ai, 2, 7)); 28723 assert_true (ai_move (ai, 0, 5)); 28724 assert_true (ai_move (ai, 0, 3)); 28725 assert_true (ai_move (ai, 3, 5)); 28726 assert_true (ai_move (ai, 5, 3)); 28727 assert_true (ai_move (ai, 2, 4)); 28728 assert_true (ai_move (ai, 2, 2)); 28729 assert_true (ai_move (ai, 1, 3)); 28730 assert_true (ai_move (ai, 1, 5)); 28731 assert_true (ai_move (ai, 0, 4)); 28732 assert_true (ai_move (ai, 0, 6)); 28733 assert_true (ai_move (ai, 5, 1)); 28734 assert_true (ai_move (ai, 2, 0)); 28735 assert_true (ai_move (ai, 5, 5)); 28736 assert_true (ai_move (ai, 0, 2)); 28737 assert_true (ai_move (ai, 5, 2)); 28738 assert_true (ai_move (ai, 4, 0)); 28739 assert_true (ai_move (ai, 4, 2)); 28740 assert_true (ai_move (ai, 6, 0)); 28741 assert_true (ai_move (ai, 7, 5)); 28742 assert_true (ai_move (ai, 7, 3)); 28743 assert_true (ai_move (ai, 3, 7)); 28744 assert_true (ai_move (ai, 5, 7)); 28745 assert_true (ai_move (ai, 6, 2)); 28746 assert_true (ai_move (ai, 7, 1)); 28747 assert_true (ai_move (ai, 0, 1)); 28748 assert_true (ai_move (ai, 0, 0)); 28749 assert_true (ai_move (ai, 1, 0)); 28750 assert_true (ai_move (ai, 6, 1)); 28751 assert_true (ai_move (ai, 7, 0)); 28752 assert_true (ai_move (ai, 1, 1)); 28753 assert_true (ai_move (ai, 7, 7)); 28754 assert_true (ai_move (ai, 6, 6)); 28755 assert_true (ai_move (ai, 6, 7)); 28756 assert_true (game.pass ()); 28757 assert_true (ai_move (ai, 1, 7)); 28758 assert_true (ai_move (ai, 1, 6)); 28759 assert_true (ai_move (ai, 0, 7)); 28760 } 28761 28762 private static inline void test_complete_reversi_game_369 () 28763 { 28764 /* 0 1 2 3 4 5 6 7 */ 28765 string [] board = {/* 0 */ " . . . . . . . .", 28766 /* 1 */ " . . . . . . . .", 28767 /* 2 */ " . . D L . . . .", 28768 /* 3 */ " . . . D D . . .", 28769 /* 4 */ " . . . L D . . .", 28770 /* 5 */ " . . . . L . . .", 28771 /* 6 */ " . . . . . L . .", 28772 /* 7 */ " . . . . . . . ."}; 28773 28774 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 28775 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 28776 28777 assert_true (ai_move (ai, 2, 1)); 28778 assert_true (ai_move (ai, 5, 2)); 28779 assert_true (ai_move (ai, 4, 6)); 28780 assert_true (ai_move (ai, 2, 3)); 28781 assert_true (ai_move (ai, 1, 4)); 28782 assert_true (ai_move (ai, 3, 1)); 28783 assert_true (ai_move (ai, 4, 0)); 28784 assert_true (ai_move (ai, 1, 3)); 28785 assert_true (ai_move (ai, 4, 1)); 28786 assert_true (ai_move (ai, 1, 2)); 28787 assert_true (ai_move (ai, 0, 3)); 28788 assert_true (ai_move (ai, 0, 5)); 28789 assert_true (ai_move (ai, 6, 3)); 28790 assert_true (ai_move (ai, 2, 0)); 28791 assert_true (ai_move (ai, 3, 0)); 28792 assert_true (ai_move (ai, 4, 2)); 28793 assert_true (ai_move (ai, 1, 0)); 28794 assert_true (ai_move (ai, 6, 2)); 28795 assert_true (ai_move (ai, 7, 2)); 28796 assert_true (ai_move (ai, 5, 3)); 28797 assert_true (ai_move (ai, 6, 4)); 28798 assert_true (ai_move (ai, 5, 4)); 28799 assert_true (ai_move (ai, 6, 5)); 28800 assert_true (ai_move (ai, 4, 7)); 28801 assert_true (ai_move (ai, 3, 6)); 28802 assert_true (ai_move (ai, 2, 5)); 28803 assert_true (ai_move (ai, 2, 7)); 28804 assert_true (ai_move (ai, 2, 6)); 28805 assert_true (ai_move (ai, 0, 4)); 28806 assert_true (ai_move (ai, 0, 2)); 28807 assert_true (ai_move (ai, 1, 5)); 28808 assert_true (ai_move (ai, 2, 4)); 28809 assert_true (ai_move (ai, 3, 7)); 28810 assert_true (ai_move (ai, 1, 7)); 28811 assert_true (ai_move (ai, 5, 5)); 28812 assert_true (ai_move (ai, 5, 1)); 28813 assert_true (ai_move (ai, 3, 5)); 28814 assert_true (ai_move (ai, 0, 6)); 28815 assert_true (ai_move (ai, 5, 7)); 28816 assert_true (ai_move (ai, 6, 7)); 28817 assert_true (ai_move (ai, 6, 6)); 28818 assert_true (ai_move (ai, 5, 0)); 28819 assert_true (ai_move (ai, 6, 0)); 28820 assert_true (ai_move (ai, 7, 3)); 28821 assert_true (ai_move (ai, 6, 1)); 28822 assert_true (ai_move (ai, 0, 1)); 28823 assert_true (ai_move (ai, 7, 4)); 28824 assert_true (ai_move (ai, 7, 7)); 28825 assert_true (ai_move (ai, 7, 6)); 28826 assert_true (ai_move (ai, 7, 5)); 28827 assert_true (game.pass ()); 28828 assert_true (ai_move (ai, 1, 1)); 28829 assert_true (ai_move (ai, 1, 6)); 28830 assert_true (ai_move (ai, 0, 0)); 28831 assert_true (game.pass ()); 28832 assert_true (ai_move (ai, 7, 1)); 28833 assert_true (ai_move (ai, 7, 0)); 28834 } 28835 28836 private static inline void test_complete_reversi_game_370 () 28837 { 28838 /* 0 1 2 3 4 5 6 7 */ 28839 string [] board = {/* 0 */ " . . . . . . . .", 28840 /* 1 */ " . . . . . . . .", 28841 /* 2 */ " . . D L . . . .", 28842 /* 3 */ " . . . D L . . .", 28843 /* 4 */ " . . . L L L . .", 28844 /* 5 */ " . . . . D . . .", 28845 /* 6 */ " . . . . . . . .", 28846 /* 7 */ " . . . . . . . ."}; 28847 28848 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 28849 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 28850 28851 assert_true (ai_move (ai, 3, 1)); 28852 assert_true (ai_move (ai, 5, 6)); 28853 assert_true (ai_move (ai, 5, 3)); 28854 assert_true (ai_move (ai, 6, 2)); 28855 assert_true (ai_move (ai, 6, 3)); 28856 assert_true (ai_move (ai, 7, 2)); 28857 assert_true (ai_move (ai, 6, 5)); 28858 assert_true (ai_move (ai, 6, 4)); 28859 assert_true (ai_move (ai, 4, 7)); 28860 assert_true (ai_move (ai, 5, 2)); 28861 assert_true (ai_move (ai, 3, 5)); 28862 assert_true (ai_move (ai, 2, 6)); 28863 assert_true (ai_move (ai, 3, 6)); 28864 assert_true (ai_move (ai, 2, 1)); 28865 assert_true (ai_move (ai, 4, 2)); 28866 assert_true (ai_move (ai, 1, 2)); 28867 assert_true (ai_move (ai, 1, 3)); 28868 assert_true (ai_move (ai, 2, 0)); 28869 assert_true (ai_move (ai, 0, 2)); 28870 assert_true (ai_move (ai, 0, 4)); 28871 assert_true (ai_move (ai, 5, 1)); 28872 assert_true (ai_move (ai, 4, 0)); 28873 assert_true (ai_move (ai, 7, 5)); 28874 assert_true (ai_move (ai, 4, 1)); 28875 assert_true (ai_move (ai, 5, 0)); 28876 assert_true (ai_move (ai, 0, 3)); 28877 assert_true (ai_move (ai, 0, 5)); 28878 assert_true (ai_move (ai, 2, 7)); 28879 assert_true (ai_move (ai, 5, 5)); 28880 assert_true (ai_move (ai, 4, 6)); 28881 assert_true (ai_move (ai, 2, 5)); 28882 assert_true (ai_move (ai, 7, 3)); 28883 assert_true (ai_move (ai, 2, 4)); 28884 assert_true (ai_move (ai, 5, 7)); 28885 assert_true (ai_move (ai, 6, 7)); 28886 assert_true (ai_move (ai, 1, 5)); 28887 assert_true (ai_move (ai, 1, 4)); 28888 assert_true (ai_move (ai, 2, 3)); 28889 assert_true (ai_move (ai, 0, 6)); 28890 assert_true (ai_move (ai, 3, 7)); 28891 assert_true (ai_move (ai, 1, 7)); 28892 assert_true (ai_move (ai, 6, 1)); 28893 assert_true (ai_move (ai, 0, 1)); 28894 assert_true (ai_move (ai, 6, 0)); 28895 assert_true (ai_move (ai, 3, 0)); 28896 assert_true (ai_move (ai, 1, 0)); 28897 assert_true (ai_move (ai, 7, 4)); 28898 assert_true (ai_move (ai, 7, 6)); 28899 assert_true (ai_move (ai, 0, 0)); 28900 assert_true (ai_move (ai, 6, 6)); 28901 assert_true (ai_move (ai, 1, 1)); 28902 assert_true (ai_move (ai, 1, 6)); 28903 assert_true (ai_move (ai, 7, 7)); 28904 assert_true (game.pass ()); 28905 assert_true (ai_move (ai, 0, 7)); 28906 assert_true (game.pass ()); 28907 assert_true (ai_move (ai, 7, 1)); 28908 assert_true (ai_move (ai, 7, 0)); 28909 } 28910 28911 private static inline void test_complete_reversi_game_371 () 28912 { 28913 /* 0 1 2 3 4 5 6 7 */ 28914 string [] board = {/* 0 */ " . . . . . . . .", 28915 /* 1 */ " . . . . . . . .", 28916 /* 2 */ " . . D L . L . .", 28917 /* 3 */ " . . . D L . . .", 28918 /* 4 */ " . . . L D . . .", 28919 /* 5 */ " . . . . D . . .", 28920 /* 6 */ " . . . . . . . .", 28921 /* 7 */ " . . . . . . . ."}; 28922 28923 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 28924 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 28925 28926 assert_true (ai_move (ai, 3, 1)); 28927 assert_true (ai_move (ai, 5, 6)); 28928 assert_true (ai_move (ai, 5, 3)); 28929 assert_true (ai_move (ai, 5, 4)); 28930 assert_true (ai_move (ai, 6, 3)); 28931 assert_true (ai_move (ai, 6, 2)); 28932 assert_true (ai_move (ai, 4, 1)); 28933 assert_true (ai_move (ai, 5, 1)); 28934 assert_true (ai_move (ai, 6, 5)); 28935 assert_true (ai_move (ai, 5, 5)); 28936 assert_true (ai_move (ai, 4, 7)); 28937 assert_true (ai_move (ai, 5, 7)); 28938 assert_true (ai_move (ai, 3, 6)); 28939 assert_true (ai_move (ai, 3, 5)); 28940 assert_true (ai_move (ai, 4, 6)); 28941 assert_true (ai_move (ai, 3, 7)); 28942 assert_true (ai_move (ai, 5, 0)); 28943 assert_true (ai_move (ai, 7, 2)); 28944 assert_true (ai_move (ai, 6, 4)); 28945 assert_true (ai_move (ai, 7, 5)); 28946 assert_true (ai_move (ai, 2, 7)); 28947 assert_true (ai_move (ai, 1, 7)); 28948 assert_true (ai_move (ai, 2, 6)); 28949 assert_true (ai_move (ai, 2, 5)); 28950 assert_true (ai_move (ai, 2, 4)); 28951 assert_true (ai_move (ai, 1, 3)); 28952 assert_true (ai_move (ai, 1, 5)); 28953 assert_true (ai_move (ai, 0, 4)); 28954 assert_true (ai_move (ai, 0, 2)); 28955 assert_true (ai_move (ai, 7, 3)); 28956 assert_true (ai_move (ai, 7, 4)); 28957 assert_true (ai_move (ai, 2, 1)); 28958 assert_true (ai_move (ai, 2, 3)); 28959 assert_true (ai_move (ai, 4, 2)); 28960 assert_true (ai_move (ai, 1, 4)); 28961 assert_true (ai_move (ai, 2, 0)); 28962 assert_true (ai_move (ai, 3, 0)); 28963 assert_true (ai_move (ai, 1, 2)); 28964 assert_true (ai_move (ai, 0, 5)); 28965 assert_true (ai_move (ai, 0, 3)); 28966 assert_true (ai_move (ai, 1, 0)); 28967 assert_true (ai_move (ai, 4, 0)); 28968 assert_true (ai_move (ai, 1, 1)); 28969 assert_true (ai_move (ai, 0, 0)); 28970 assert_true (ai_move (ai, 0, 1)); 28971 assert_true (ai_move (ai, 6, 0)); 28972 assert_true (ai_move (ai, 6, 6)); 28973 assert_true (ai_move (ai, 7, 7)); 28974 assert_true (ai_move (ai, 7, 6)); 28975 assert_true (ai_move (ai, 0, 6)); 28976 assert_true (ai_move (ai, 0, 7)); 28977 assert_true (game.pass ()); 28978 assert_true (ai_move (ai, 6, 7)); 28979 assert_true (game.pass ()); 28980 assert_true (ai_move (ai, 1, 6)); 28981 assert_true (game.pass ()); 28982 assert_true (ai_move (ai, 6, 1)); 28983 assert_true (ai_move (ai, 7, 1)); 28984 assert_true (ai_move (ai, 7, 0)); 28985 } 28986 28987 private static inline void test_complete_reversi_game_372 () 28988 { 28989 /* 0 1 2 3 4 5 6 7 */ 28990 string [] board = {/* 0 */ " . . . . . . . .", 28991 /* 1 */ " . . . . . . . .", 28992 /* 2 */ " . L L L . . . .", 28993 /* 3 */ " . . . D D . . .", 28994 /* 4 */ " . . . L D . . .", 28995 /* 5 */ " . . . . D . . .", 28996 /* 6 */ " . . . . . . . .", 28997 /* 7 */ " . . . . . . . ."}; 28998 28999 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 29000 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 29001 29002 assert_true (ai_move (ai, 2, 5)); 29003 assert_true (ai_move (ai, 5, 4)); 29004 assert_true (ai_move (ai, 6, 3)); 29005 assert_true (ai_move (ai, 6, 5)); 29006 assert_true (ai_move (ai, 6, 4)); 29007 assert_true (ai_move (ai, 2, 3)); 29008 assert_true (ai_move (ai, 5, 2)); 29009 assert_true (ai_move (ai, 3, 5)); 29010 assert_true (ai_move (ai, 2, 6)); 29011 assert_true (ai_move (ai, 3, 6)); 29012 assert_true (ai_move (ai, 2, 1)); 29013 assert_true (ai_move (ai, 1, 5)); 29014 assert_true (ai_move (ai, 0, 2)); 29015 assert_true (ai_move (ai, 5, 6)); 29016 assert_true (ai_move (ai, 1, 4)); 29017 assert_true (ai_move (ai, 2, 7)); 29018 assert_true (ai_move (ai, 4, 6)); 29019 assert_true (ai_move (ai, 3, 1)); 29020 assert_true (ai_move (ai, 4, 2)); 29021 assert_true (ai_move (ai, 5, 1)); 29022 assert_true (ai_move (ai, 5, 0)); 29023 assert_true (ai_move (ai, 1, 3)); 29024 assert_true (ai_move (ai, 4, 1)); 29025 assert_true (ai_move (ai, 3, 0)); 29026 assert_true (ai_move (ai, 2, 0)); 29027 assert_true (ai_move (ai, 4, 0)); 29028 assert_true (ai_move (ai, 7, 6)); 29029 assert_true (ai_move (ai, 5, 7)); 29030 assert_true (ai_move (ai, 1, 1)); 29031 assert_true (ai_move (ai, 0, 3)); 29032 assert_true (ai_move (ai, 0, 4)); 29033 assert_true (ai_move (ai, 7, 2)); 29034 assert_true (ai_move (ai, 6, 2)); 29035 assert_true (ai_move (ai, 7, 3)); 29036 assert_true (ai_move (ai, 2, 4)); 29037 assert_true (ai_move (ai, 0, 5)); 29038 assert_true (ai_move (ai, 1, 6)); 29039 assert_true (ai_move (ai, 5, 5)); 29040 assert_true (ai_move (ai, 0, 6)); 29041 assert_true (ai_move (ai, 0, 0)); 29042 assert_true (ai_move (ai, 1, 0)); 29043 assert_true (ai_move (ai, 5, 3)); 29044 assert_true (ai_move (ai, 7, 5)); 29045 assert_true (ai_move (ai, 0, 1)); 29046 assert_true (ai_move (ai, 3, 7)); 29047 assert_true (ai_move (ai, 0, 7)); 29048 assert_true (ai_move (ai, 4, 7)); 29049 assert_true (ai_move (ai, 1, 7)); 29050 assert_true (ai_move (ai, 6, 7)); 29051 assert_true (ai_move (ai, 7, 7)); 29052 assert_true (ai_move (ai, 6, 0)); 29053 assert_true (ai_move (ai, 7, 4)); 29054 assert_true (ai_move (ai, 6, 6)); 29055 assert_true (ai_move (ai, 6, 1)); 29056 assert_true (ai_move (ai, 7, 1)); 29057 assert_true (ai_move (ai, 7, 0)); 29058 } 29059 29060 private static inline void test_complete_reversi_game_373 () 29061 { 29062 /* 0 1 2 3 4 5 6 7 */ 29063 string [] board = {/* 0 */ " . . . . . . . .", 29064 /* 1 */ " . . D . . . . .", 29065 /* 2 */ " . . . D . . . .", 29066 /* 3 */ " . . . L D . . .", 29067 /* 4 */ " . . . L D . . .", 29068 /* 5 */ " . . . . L . . .", 29069 /* 6 */ " . . . . . L . .", 29070 /* 7 */ " . . . . . . . ."}; 29071 29072 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 29073 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 29074 29075 assert_true (ai_move (ai, 4, 6)); 29076 assert_true (ai_move (ai, 3, 1)); 29077 assert_true (ai_move (ai, 2, 5)); 29078 assert_true (ai_move (ai, 5, 4)); 29079 assert_true (ai_move (ai, 6, 3)); 29080 assert_true (ai_move (ai, 6, 5)); 29081 assert_true (ai_move (ai, 6, 4)); 29082 assert_true (ai_move (ai, 3, 6)); 29083 assert_true (ai_move (ai, 2, 7)); 29084 assert_true (ai_move (ai, 2, 6)); 29085 assert_true (ai_move (ai, 5, 2)); 29086 assert_true (ai_move (ai, 2, 4)); 29087 assert_true (ai_move (ai, 1, 4)); 29088 assert_true (ai_move (ai, 1, 5)); 29089 assert_true (ai_move (ai, 2, 2)); 29090 assert_true (ai_move (ai, 1, 2)); 29091 assert_true (ai_move (ai, 2, 3)); 29092 assert_true (ai_move (ai, 1, 3)); 29093 assert_true (ai_move (ai, 0, 2)); 29094 assert_true (ai_move (ai, 0, 4)); 29095 assert_true (ai_move (ai, 4, 2)); 29096 assert_true (ai_move (ai, 3, 7)); 29097 assert_true (ai_move (ai, 0, 3)); 29098 assert_true (ai_move (ai, 2, 0)); 29099 assert_true (ai_move (ai, 0, 5)); 29100 assert_true (ai_move (ai, 3, 5)); 29101 assert_true (ai_move (ai, 4, 1)); 29102 assert_true (ai_move (ai, 1, 7)); 29103 assert_true (ai_move (ai, 5, 7)); 29104 assert_true (ai_move (ai, 5, 1)); 29105 assert_true (ai_move (ai, 5, 5)); 29106 assert_true (ai_move (ai, 7, 2)); 29107 assert_true (ai_move (ai, 5, 3)); 29108 assert_true (ai_move (ai, 6, 2)); 29109 assert_true (ai_move (ai, 7, 3)); 29110 assert_true (ai_move (ai, 7, 5)); 29111 assert_true (ai_move (ai, 7, 4)); 29112 assert_true (ai_move (ai, 1, 1)); 29113 assert_true (ai_move (ai, 4, 0)); 29114 assert_true (ai_move (ai, 5, 0)); 29115 assert_true (ai_move (ai, 3, 0)); 29116 assert_true (ai_move (ai, 1, 0)); 29117 assert_true (ai_move (ai, 0, 6)); 29118 assert_true (ai_move (ai, 6, 1)); 29119 assert_true (ai_move (ai, 4, 7)); 29120 assert_true (ai_move (ai, 6, 7)); 29121 assert_true (ai_move (ai, 7, 0)); 29122 assert_true (ai_move (ai, 7, 1)); 29123 assert_true (ai_move (ai, 6, 0)); 29124 assert_true (ai_move (ai, 6, 6)); 29125 assert_true (ai_move (ai, 1, 6)); 29126 assert_true (ai_move (ai, 7, 6)); 29127 assert_true (ai_move (ai, 7, 7)); 29128 assert_true (ai_move (ai, 0, 7)); 29129 assert_true (ai_move (ai, 0, 0)); 29130 assert_true (ai_move (ai, 0, 1)); 29131 } 29132 29133 private static inline void test_complete_reversi_game_374 () 29134 { 29135 /* 0 1 2 3 4 5 6 7 */ 29136 string [] board = {/* 0 */ " . . . . . . . .", 29137 /* 1 */ " . . D . . . . .", 29138 /* 2 */ " . . . D . . . .", 29139 /* 3 */ " . . . L D . . .", 29140 /* 4 */ " . . . L L . . .", 29141 /* 5 */ " . . . . D L . .", 29142 /* 6 */ " . . . . . . . .", 29143 /* 7 */ " . . . . . . . ."}; 29144 29145 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 29146 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 29147 29148 assert_true (ai_move (ai, 6, 5)); 29149 assert_true (ai_move (ai, 3, 1)); 29150 assert_true (ai_move (ai, 2, 5)); 29151 assert_true (ai_move (ai, 2, 4)); 29152 assert_true (ai_move (ai, 4, 1)); 29153 assert_true (ai_move (ai, 2, 6)); 29154 assert_true (ai_move (ai, 2, 3)); 29155 assert_true (ai_move (ai, 4, 6)); 29156 assert_true (ai_move (ai, 3, 5)); 29157 assert_true (ai_move (ai, 6, 4)); 29158 assert_true (ai_move (ai, 1, 5)); 29159 assert_true (ai_move (ai, 7, 5)); 29160 assert_true (ai_move (ai, 2, 7)); 29161 assert_true (ai_move (ai, 1, 4)); 29162 assert_true (ai_move (ai, 1, 3)); 29163 assert_true (ai_move (ai, 5, 6)); 29164 assert_true (ai_move (ai, 5, 7)); 29165 assert_true (ai_move (ai, 3, 7)); 29166 assert_true (ai_move (ai, 5, 3)); 29167 assert_true (ai_move (ai, 5, 4)); 29168 assert_true (ai_move (ai, 4, 7)); 29169 assert_true (ai_move (ai, 0, 4)); 29170 assert_true (ai_move (ai, 6, 3)); 29171 assert_true (ai_move (ai, 3, 6)); 29172 assert_true (ai_move (ai, 0, 3)); 29173 assert_true (ai_move (ai, 0, 5)); 29174 assert_true (ai_move (ai, 6, 7)); 29175 assert_true (ai_move (ai, 0, 2)); 29176 assert_true (ai_move (ai, 7, 3)); 29177 assert_true (ai_move (ai, 7, 4)); 29178 assert_true (ai_move (ai, 7, 6)); 29179 assert_true (ai_move (ai, 2, 2)); 29180 assert_true (ai_move (ai, 1, 2)); 29181 assert_true (ai_move (ai, 2, 0)); 29182 assert_true (ai_move (ai, 3, 0)); 29183 assert_true (ai_move (ai, 4, 0)); 29184 assert_true (ai_move (ai, 1, 6)); 29185 assert_true (ai_move (ai, 0, 6)); 29186 assert_true (ai_move (ai, 1, 1)); 29187 assert_true (ai_move (ai, 5, 1)); 29188 assert_true (ai_move (ai, 5, 0)); 29189 assert_true (ai_move (ai, 6, 0)); 29190 assert_true (ai_move (ai, 6, 1)); 29191 assert_true (ai_move (ai, 5, 2)); 29192 assert_true (game.pass ()); 29193 assert_true (ai_move (ai, 4, 2)); 29194 assert_true (ai_move (ai, 0, 1)); 29195 assert_true (ai_move (ai, 0, 7)); 29196 assert_true (ai_move (ai, 6, 2)); 29197 assert_true (ai_move (ai, 1, 7)); 29198 assert_true (game.pass ()); 29199 assert_true (ai_move (ai, 7, 0)); 29200 assert_true (ai_move (ai, 7, 1)); 29201 assert_true (ai_move (ai, 7, 7)); 29202 assert_true (game.pass ()); 29203 assert_true (ai_move (ai, 7, 2)); 29204 assert_true (game.pass ()); 29205 assert_true (ai_move (ai, 6, 6)); 29206 assert_true (game.pass ()); 29207 assert_true (ai_move (ai, 1, 0)); 29208 assert_true (ai_move (ai, 0, 0)); 29209 } 29210 29211 private static inline void test_complete_reversi_game_375 () 29212 { 29213 /* 0 1 2 3 4 5 6 7 */ 29214 string [] board = {/* 0 */ " . . . . . . . .", 29215 /* 1 */ " . . D . . . . .", 29216 /* 2 */ " . . . D . . . .", 29217 /* 3 */ " . . . L D . . .", 29218 /* 4 */ " . . . L L L . .", 29219 /* 5 */ " . . . . D . . .", 29220 /* 6 */ " . . . . . . . .", 29221 /* 7 */ " . . . . . . . ."}; 29222 29223 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 29224 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 29225 29226 assert_true (ai_move (ai, 6, 5)); 29227 assert_true (ai_move (ai, 6, 4)); 29228 assert_true (ai_move (ai, 2, 5)); 29229 assert_true (ai_move (ai, 3, 1)); 29230 assert_true (ai_move (ai, 6, 3)); 29231 assert_true (ai_move (ai, 2, 4)); 29232 assert_true (ai_move (ai, 4, 1)); 29233 assert_true (ai_move (ai, 2, 6)); 29234 assert_true (ai_move (ai, 2, 3)); 29235 assert_true (ai_move (ai, 4, 6)); 29236 assert_true (ai_move (ai, 5, 6)); 29237 assert_true (ai_move (ai, 7, 4)); 29238 assert_true (ai_move (ai, 1, 4)); 29239 assert_true (ai_move (ai, 3, 6)); 29240 assert_true (ai_move (ai, 2, 7)); 29241 assert_true (ai_move (ai, 4, 7)); 29242 assert_true (ai_move (ai, 7, 6)); 29243 assert_true (ai_move (ai, 5, 2)); 29244 assert_true (ai_move (ai, 7, 2)); 29245 assert_true (ai_move (ai, 3, 0)); 29246 assert_true (ai_move (ai, 5, 0)); 29247 assert_true (ai_move (ai, 6, 2)); 29248 assert_true (ai_move (ai, 4, 2)); 29249 assert_true (ai_move (ai, 0, 3)); 29250 assert_true (ai_move (ai, 0, 5)); 29251 assert_true (ai_move (ai, 2, 2)); 29252 assert_true (ai_move (ai, 1, 2)); 29253 assert_true (ai_move (ai, 1, 3)); 29254 assert_true (ai_move (ai, 1, 5)); 29255 assert_true (ai_move (ai, 3, 5)); 29256 assert_true (ai_move (ai, 5, 3)); 29257 assert_true (ai_move (ai, 2, 0)); 29258 assert_true (ai_move (ai, 7, 3)); 29259 assert_true (ai_move (ai, 7, 1)); 29260 assert_true (ai_move (ai, 3, 7)); 29261 assert_true (ai_move (ai, 5, 5)); 29262 assert_true (ai_move (ai, 1, 6)); 29263 assert_true (ai_move (ai, 5, 1)); 29264 assert_true (ai_move (ai, 5, 7)); 29265 assert_true (ai_move (ai, 0, 2)); 29266 assert_true (ai_move (ai, 4, 0)); 29267 assert_true (ai_move (ai, 6, 0)); 29268 assert_true (ai_move (ai, 6, 1)); 29269 assert_true (ai_move (ai, 6, 6)); 29270 assert_true (ai_move (ai, 1, 0)); 29271 assert_true (ai_move (ai, 0, 0)); 29272 assert_true (ai_move (ai, 0, 1)); 29273 assert_true (ai_move (ai, 0, 4)); 29274 assert_true (ai_move (ai, 7, 5)); 29275 assert_true (ai_move (ai, 7, 7)); 29276 assert_true (ai_move (ai, 6, 7)); 29277 assert_true (ai_move (ai, 1, 1)); 29278 assert_true (game.pass ()); 29279 assert_true (ai_move (ai, 1, 7)); 29280 assert_true (ai_move (ai, 0, 7)); 29281 assert_true (ai_move (ai, 0, 6)); 29282 assert_true (game.pass ()); 29283 assert_true (ai_move (ai, 7, 0)); 29284 } 29285 29286 private static inline void test_complete_reversi_game_376 () 29287 { 29288 /* 0 1 2 3 4 5 6 7 */ 29289 string [] board = {/* 0 */ " . . . . . . . .", 29290 /* 1 */ " . . D . . . . .", 29291 /* 2 */ " . . . D . . . .", 29292 /* 3 */ " . . . L L L . .", 29293 /* 4 */ " . . . L D . . .", 29294 /* 5 */ " . . . . D . . .", 29295 /* 6 */ " . . . . . . . .", 29296 /* 7 */ " . . . . . . . ."}; 29297 29298 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 29299 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 29300 29301 assert_true (ai_move (ai, 6, 2)); 29302 assert_true (ai_move (ai, 3, 1)); 29303 assert_true (ai_move (ai, 2, 4)); 29304 assert_true (ai_move (ai, 6, 3)); 29305 assert_true (ai_move (ai, 4, 1)); 29306 assert_true (ai_move (ai, 5, 0)); 29307 assert_true (ai_move (ai, 6, 4)); 29308 assert_true (ai_move (ai, 1, 5)); 29309 assert_true (ai_move (ai, 1, 4)); 29310 assert_true (ai_move (ai, 3, 0)); 29311 assert_true (ai_move (ai, 2, 2)); 29312 assert_true (ai_move (ai, 1, 2)); 29313 assert_true (ai_move (ai, 5, 2)); 29314 assert_true (ai_move (ai, 5, 1)); 29315 assert_true (ai_move (ai, 4, 2)); 29316 assert_true (ai_move (ai, 5, 4)); 29317 assert_true (ai_move (ai, 0, 2)); 29318 assert_true (ai_move (ai, 3, 6)); 29319 assert_true (ai_move (ai, 5, 6)); 29320 assert_true (ai_move (ai, 7, 5)); 29321 assert_true (ai_move (ai, 2, 0)); 29322 assert_true (ai_move (ai, 7, 4)); 29323 assert_true (ai_move (ai, 7, 3)); 29324 assert_true (ai_move (ai, 2, 3)); 29325 assert_true (ai_move (ai, 1, 3)); 29326 assert_true (ai_move (ai, 0, 5)); 29327 assert_true (ai_move (ai, 7, 6)); 29328 assert_true (ai_move (ai, 4, 6)); 29329 assert_true (ai_move (ai, 0, 4)); 29330 assert_true (ai_move (ai, 2, 5)); 29331 assert_true (ai_move (ai, 4, 0)); 29332 assert_true (ai_move (ai, 1, 0)); 29333 assert_true (ai_move (ai, 6, 5)); 29334 assert_true (ai_move (ai, 6, 0)); 29335 assert_true (ai_move (ai, 5, 5)); 29336 assert_true (ai_move (ai, 5, 7)); 29337 assert_true (ai_move (ai, 3, 5)); 29338 assert_true (ai_move (ai, 2, 6)); 29339 assert_true (ai_move (ai, 1, 7)); 29340 assert_true (ai_move (ai, 3, 7)); 29341 assert_true (ai_move (ai, 1, 1)); 29342 assert_true (ai_move (ai, 0, 3)); 29343 assert_true (ai_move (ai, 0, 6)); 29344 assert_true (ai_move (ai, 7, 1)); 29345 assert_true (ai_move (ai, 0, 1)); 29346 assert_true (ai_move (ai, 7, 2)); 29347 assert_true (ai_move (ai, 7, 0)); 29348 assert_true (ai_move (ai, 0, 0)); 29349 assert_true (ai_move (ai, 6, 1)); 29350 assert_true (ai_move (ai, 0, 7)); 29351 assert_true (ai_move (ai, 1, 6)); 29352 assert_true (ai_move (ai, 2, 7)); 29353 assert_true (ai_move (ai, 4, 7)); 29354 assert_true (ai_move (ai, 6, 6)); 29355 assert_true (ai_move (ai, 6, 7)); 29356 assert_true (ai_move (ai, 7, 7)); 29357 } 29358 29359 private static inline void test_complete_reversi_game_377 () 29360 { 29361 /* 0 1 2 3 4 5 6 7 */ 29362 string [] board = {/* 0 */ " . . . . . . . .", 29363 /* 1 */ " . . D . . . . .", 29364 /* 2 */ " . . . D . L . .", 29365 /* 3 */ " . . . L L . . .", 29366 /* 4 */ " . . . L D . . .", 29367 /* 5 */ " . . . . D . . .", 29368 /* 6 */ " . . . . . . . .", 29369 /* 7 */ " . . . . . . . ."}; 29370 29371 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 29372 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 29373 29374 assert_true (ai_move (ai, 2, 2)); 29375 assert_true (ai_move (ai, 5, 6)); 29376 assert_true (ai_move (ai, 4, 6)); 29377 assert_true (ai_move (ai, 2, 3)); 29378 assert_true (ai_move (ai, 1, 4)); 29379 assert_true (ai_move (ai, 3, 1)); 29380 assert_true (ai_move (ai, 4, 0)); 29381 assert_true (ai_move (ai, 1, 3)); 29382 assert_true (ai_move (ai, 4, 1)); 29383 assert_true (ai_move (ai, 1, 2)); 29384 assert_true (ai_move (ai, 0, 3)); 29385 assert_true (ai_move (ai, 0, 5)); 29386 assert_true (ai_move (ai, 6, 3)); 29387 assert_true (ai_move (ai, 2, 0)); 29388 assert_true (ai_move (ai, 3, 0)); 29389 assert_true (ai_move (ai, 4, 2)); 29390 assert_true (ai_move (ai, 1, 0)); 29391 assert_true (ai_move (ai, 6, 2)); 29392 assert_true (ai_move (ai, 7, 2)); 29393 assert_true (ai_move (ai, 5, 3)); 29394 assert_true (ai_move (ai, 6, 4)); 29395 assert_true (ai_move (ai, 5, 4)); 29396 assert_true (ai_move (ai, 6, 5)); 29397 assert_true (ai_move (ai, 4, 7)); 29398 assert_true (ai_move (ai, 3, 6)); 29399 assert_true (ai_move (ai, 2, 5)); 29400 assert_true (ai_move (ai, 2, 7)); 29401 assert_true (ai_move (ai, 2, 6)); 29402 assert_true (ai_move (ai, 0, 4)); 29403 assert_true (ai_move (ai, 0, 2)); 29404 assert_true (ai_move (ai, 1, 5)); 29405 assert_true (ai_move (ai, 2, 4)); 29406 assert_true (ai_move (ai, 3, 7)); 29407 assert_true (ai_move (ai, 1, 7)); 29408 assert_true (ai_move (ai, 5, 5)); 29409 assert_true (ai_move (ai, 5, 1)); 29410 assert_true (ai_move (ai, 3, 5)); 29411 assert_true (ai_move (ai, 0, 6)); 29412 assert_true (ai_move (ai, 5, 7)); 29413 assert_true (ai_move (ai, 6, 7)); 29414 assert_true (ai_move (ai, 6, 6)); 29415 assert_true (ai_move (ai, 5, 0)); 29416 assert_true (ai_move (ai, 6, 0)); 29417 assert_true (ai_move (ai, 7, 3)); 29418 assert_true (ai_move (ai, 6, 1)); 29419 assert_true (ai_move (ai, 0, 1)); 29420 assert_true (ai_move (ai, 7, 4)); 29421 assert_true (ai_move (ai, 7, 7)); 29422 assert_true (ai_move (ai, 7, 6)); 29423 assert_true (ai_move (ai, 7, 5)); 29424 assert_true (game.pass ()); 29425 assert_true (ai_move (ai, 1, 1)); 29426 assert_true (ai_move (ai, 1, 6)); 29427 assert_true (ai_move (ai, 0, 0)); 29428 assert_true (game.pass ()); 29429 assert_true (ai_move (ai, 7, 1)); 29430 assert_true (ai_move (ai, 7, 0)); 29431 } 29432 29433 private static inline void test_complete_reversi_game_378 () 29434 { 29435 /* 0 1 2 3 4 5 6 7 */ 29436 string [] board = {/* 0 */ " . . . . . . . .", 29437 /* 1 */ " . . D L . . . .", 29438 /* 2 */ " . . . L . . . .", 29439 /* 3 */ " . . . L D . . .", 29440 /* 4 */ " . . . L D . . .", 29441 /* 5 */ " . . . . D . . .", 29442 /* 6 */ " . . . . . . . .", 29443 /* 7 */ " . . . . . . . ."}; 29444 29445 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 29446 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 29447 29448 assert_true (ai_move (ai, 2, 5)); 29449 assert_true (ai_move (ai, 5, 4)); 29450 assert_true (ai_move (ai, 6, 3)); 29451 assert_true (ai_move (ai, 6, 5)); 29452 assert_true (ai_move (ai, 6, 4)); 29453 assert_true (ai_move (ai, 3, 5)); 29454 assert_true (ai_move (ai, 2, 6)); 29455 assert_true (ai_move (ai, 3, 6)); 29456 assert_true (ai_move (ai, 2, 7)); 29457 assert_true (ai_move (ai, 5, 3)); 29458 assert_true (ai_move (ai, 6, 2)); 29459 assert_true (ai_move (ai, 3, 7)); 29460 assert_true (ai_move (ai, 4, 7)); 29461 assert_true (ai_move (ai, 1, 5)); 29462 assert_true (ai_move (ai, 1, 4)); 29463 assert_true (ai_move (ai, 7, 3)); 29464 assert_true (ai_move (ai, 0, 5)); 29465 assert_true (ai_move (ai, 5, 1)); 29466 assert_true (ai_move (ai, 2, 4)); 29467 assert_true (ai_move (ai, 1, 3)); 29468 assert_true (ai_move (ai, 2, 3)); 29469 assert_true (ai_move (ai, 7, 5)); 29470 assert_true (ai_move (ai, 4, 6)); 29471 assert_true (ai_move (ai, 5, 7)); 29472 assert_true (ai_move (ai, 5, 5)); 29473 assert_true (ai_move (ai, 1, 7)); 29474 assert_true (ai_move (ai, 7, 4)); 29475 assert_true (ai_move (ai, 5, 6)); 29476 assert_true (ai_move (ai, 0, 3)); 29477 assert_true (ai_move (ai, 2, 2)); 29478 assert_true (ai_move (ai, 1, 2)); 29479 assert_true (ai_move (ai, 2, 0)); 29480 assert_true (ai_move (ai, 4, 0)); 29481 assert_true (ai_move (ai, 4, 2)); 29482 assert_true (ai_move (ai, 4, 1)); 29483 assert_true (ai_move (ai, 0, 1)); 29484 assert_true (ai_move (ai, 5, 2)); 29485 assert_true (ai_move (ai, 7, 2)); 29486 assert_true (ai_move (ai, 0, 2)); 29487 assert_true (ai_move (ai, 3, 0)); 29488 assert_true (ai_move (ai, 0, 0)); 29489 assert_true (ai_move (ai, 5, 0)); 29490 assert_true (ai_move (ai, 1, 0)); 29491 assert_true (ai_move (ai, 1, 6)); 29492 assert_true (ai_move (ai, 6, 0)); 29493 assert_true (ai_move (ai, 0, 6)); 29494 assert_true (ai_move (ai, 0, 7)); 29495 assert_true (ai_move (ai, 0, 4)); 29496 assert_true (ai_move (ai, 6, 7)); 29497 assert_true (ai_move (ai, 1, 1)); 29498 assert_true (ai_move (ai, 6, 1)); 29499 assert_true (ai_move (ai, 6, 6)); 29500 assert_true (ai_move (ai, 7, 7)); 29501 assert_true (ai_move (ai, 7, 6)); 29502 assert_true (ai_move (ai, 7, 1)); 29503 assert_true (ai_move (ai, 7, 0)); 29504 } 29505 29506 private static inline void test_complete_reversi_game_379 () 29507 { 29508 /* 0 1 2 3 4 5 6 7 */ 29509 string [] board = {/* 0 */ " . . . . . . . .", 29510 /* 1 */ " . . . . . . . .", 29511 /* 2 */ " . . . . L . . .", 29512 /* 3 */ " . . . D L . . .", 29513 /* 4 */ " . . . D L . . .", 29514 /* 5 */ " . . . D L D . .", 29515 /* 6 */ " . . . . . . . .", 29516 /* 7 */ " . . . . . . . ."}; 29517 29518 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 29519 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 29520 29521 assert_true (ai_move (ai, 5, 6)); 29522 assert_true (ai_move (ai, 4, 6)); 29523 assert_true (ai_move (ai, 5, 1)); 29524 assert_true (ai_move (ai, 6, 5)); 29525 assert_true (ai_move (ai, 5, 7)); 29526 assert_true (ai_move (ai, 4, 1)); 29527 assert_true (ai_move (ai, 6, 4)); 29528 assert_true (ai_move (ai, 2, 6)); 29529 assert_true (ai_move (ai, 2, 4)); 29530 assert_true (ai_move (ai, 2, 2)); 29531 assert_true (ai_move (ai, 7, 5)); 29532 assert_true (ai_move (ai, 1, 5)); 29533 assert_true (ai_move (ai, 1, 4)); 29534 assert_true (ai_move (ai, 4, 7)); 29535 assert_true (ai_move (ai, 3, 6)); 29536 assert_true (ai_move (ai, 6, 7)); 29537 assert_true (ai_move (ai, 5, 4)); 29538 assert_true (ai_move (ai, 2, 3)); 29539 assert_true (ai_move (ai, 2, 1)); 29540 assert_true (ai_move (ai, 6, 3)); 29541 assert_true (ai_move (ai, 7, 2)); 29542 assert_true (ai_move (ai, 1, 2)); 29543 assert_true (ai_move (ai, 0, 3)); 29544 assert_true (ai_move (ai, 2, 0)); 29545 assert_true (ai_move (ai, 3, 0)); 29546 assert_true (ai_move (ai, 4, 0)); 29547 assert_true (ai_move (ai, 0, 6)); 29548 assert_true (ai_move (ai, 0, 2)); 29549 assert_true (ai_move (ai, 3, 1)); 29550 assert_true (ai_move (ai, 3, 2)); 29551 assert_true (ai_move (ai, 1, 7)); 29552 assert_true (ai_move (ai, 5, 3)); 29553 assert_true (ai_move (ai, 6, 2)); 29554 assert_true (ai_move (ai, 5, 0)); 29555 assert_true (ai_move (ai, 1, 1)); 29556 assert_true (ai_move (ai, 0, 0)); 29557 assert_true (ai_move (ai, 1, 3)); 29558 assert_true (ai_move (ai, 2, 5)); 29559 assert_true (ai_move (ai, 2, 7)); 29560 assert_true (ai_move (ai, 1, 0)); 29561 assert_true (ai_move (ai, 1, 6)); 29562 assert_true (ai_move (ai, 0, 4)); 29563 assert_true (ai_move (ai, 0, 1)); 29564 assert_true (ai_move (ai, 0, 5)); 29565 assert_true (ai_move (ai, 5, 2)); 29566 assert_true (ai_move (ai, 6, 0)); 29567 assert_true (ai_move (ai, 6, 1)); 29568 assert_true (ai_move (ai, 7, 4)); 29569 assert_true (ai_move (ai, 7, 3)); 29570 assert_true (ai_move (ai, 6, 6)); 29571 assert_true (ai_move (ai, 7, 7)); 29572 assert_true (ai_move (ai, 3, 7)); 29573 assert_true (ai_move (ai, 7, 6)); 29574 assert_true (ai_move (ai, 7, 0)); 29575 assert_true (ai_move (ai, 7, 1)); 29576 assert_true (ai_move (ai, 0, 7)); 29577 } 29578 29579 private static inline void test_complete_reversi_game_380 () 29580 { 29581 /* 0 1 2 3 4 5 6 7 */ 29582 string [] board = {/* 0 */ " . . . . . . . .", 29583 /* 1 */ " . . . . . . . .", 29584 /* 2 */ " . . . . L . . .", 29585 /* 3 */ " . . . D L . . .", 29586 /* 4 */ " . . . L D . . .", 29587 /* 5 */ " . . L D . D . .", 29588 /* 6 */ " . . . . . . . .", 29589 /* 7 */ " . . . . . . . ."}; 29590 29591 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 29592 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 29593 29594 assert_true (ai_move (ai, 1, 5)); 29595 assert_true (ai_move (ai, 3, 2)); 29596 assert_true (ai_move (ai, 2, 4)); 29597 assert_true (ai_move (ai, 4, 5)); 29598 assert_true (ai_move (ai, 5, 6)); 29599 assert_true (ai_move (ai, 4, 6)); 29600 assert_true (ai_move (ai, 5, 7)); 29601 assert_true (ai_move (ai, 2, 3)); 29602 assert_true (ai_move (ai, 1, 2)); 29603 assert_true (ai_move (ai, 1, 3)); 29604 assert_true (ai_move (ai, 0, 2)); 29605 assert_true (ai_move (ai, 2, 6)); 29606 assert_true (ai_move (ai, 1, 4)); 29607 assert_true (ai_move (ai, 6, 5)); 29608 assert_true (ai_move (ai, 6, 4)); 29609 assert_true (ai_move (ai, 0, 4)); 29610 assert_true (ai_move (ai, 7, 5)); 29611 assert_true (ai_move (ai, 2, 2)); 29612 assert_true (ai_move (ai, 5, 2)); 29613 assert_true (ai_move (ai, 2, 1)); 29614 assert_true (ai_move (ai, 3, 0)); 29615 assert_true (ai_move (ai, 2, 0)); 29616 assert_true (ai_move (ai, 0, 5)); 29617 assert_true (ai_move (ai, 0, 3)); 29618 assert_true (ai_move (ai, 4, 1)); 29619 assert_true (ai_move (ai, 3, 6)); 29620 assert_true (ai_move (ai, 2, 7)); 29621 assert_true (ai_move (ai, 3, 1)); 29622 assert_true (ai_move (ai, 5, 4)); 29623 assert_true (ai_move (ai, 6, 2)); 29624 assert_true (ai_move (ai, 6, 3)); 29625 assert_true (ai_move (ai, 5, 3)); 29626 assert_true (ai_move (ai, 5, 1)); 29627 assert_true (ai_move (ai, 4, 0)); 29628 assert_true (ai_move (ai, 7, 2)); 29629 assert_true (ai_move (ai, 4, 7)); 29630 assert_true (ai_move (ai, 3, 7)); 29631 assert_true (ai_move (ai, 7, 4)); 29632 assert_true (ai_move (ai, 7, 3)); 29633 assert_true (ai_move (ai, 6, 6)); 29634 assert_true (ai_move (ai, 5, 0)); 29635 assert_true (ai_move (ai, 6, 0)); 29636 assert_true (ai_move (ai, 1, 6)); 29637 assert_true (ai_move (ai, 7, 6)); 29638 assert_true (ai_move (ai, 7, 7)); 29639 assert_true (ai_move (ai, 6, 7)); 29640 assert_true (ai_move (ai, 6, 1)); 29641 assert_true (ai_move (ai, 0, 1)); 29642 assert_true (ai_move (ai, 0, 0)); 29643 assert_true (ai_move (ai, 0, 6)); 29644 assert_true (ai_move (ai, 0, 7)); 29645 assert_true (ai_move (ai, 1, 7)); 29646 assert_true (ai_move (ai, 1, 0)); 29647 assert_true (ai_move (ai, 7, 0)); 29648 assert_true (ai_move (ai, 7, 1)); 29649 assert_true (ai_move (ai, 1, 1)); 29650 } 29651 29652 private static inline void test_complete_reversi_game_381 () 29653 { 29654 /* 0 1 2 3 4 5 6 7 */ 29655 string [] board = {/* 0 */ " . . . . . . . .", 29656 /* 1 */ " . . . . . . . .", 29657 /* 2 */ " . . . . L . . .", 29658 /* 3 */ " . . . L L . . .", 29659 /* 4 */ " . . L D D . . .", 29660 /* 5 */ " . . . D . D . .", 29661 /* 6 */ " . . . . . . . .", 29662 /* 7 */ " . . . . . . . ."}; 29663 29664 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 29665 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 29666 29667 assert_true (ai_move (ai, 1, 3)); 29668 assert_true (ai_move (ai, 1, 5)); 29669 assert_true (ai_move (ai, 1, 4)); 29670 assert_true (ai_move (ai, 4, 5)); 29671 assert_true (ai_move (ai, 5, 6)); 29672 assert_true (ai_move (ai, 4, 6)); 29673 assert_true (ai_move (ai, 5, 7)); 29674 assert_true (ai_move (ai, 2, 3)); 29675 assert_true (ai_move (ai, 1, 2)); 29676 assert_true (ai_move (ai, 4, 7)); 29677 assert_true (ai_move (ai, 3, 7)); 29678 assert_true (ai_move (ai, 6, 5)); 29679 assert_true (ai_move (ai, 6, 4)); 29680 assert_true (ai_move (ai, 0, 3)); 29681 assert_true (ai_move (ai, 7, 5)); 29682 assert_true (ai_move (ai, 2, 1)); 29683 assert_true (ai_move (ai, 5, 4)); 29684 assert_true (ai_move (ai, 6, 3)); 29685 assert_true (ai_move (ai, 5, 3)); 29686 assert_true (ai_move (ai, 0, 5)); 29687 assert_true (ai_move (ai, 3, 6)); 29688 assert_true (ai_move (ai, 2, 7)); 29689 assert_true (ai_move (ai, 1, 7)); 29690 assert_true (ai_move (ai, 5, 2)); 29691 assert_true (ai_move (ai, 2, 5)); 29692 assert_true (ai_move (ai, 2, 6)); 29693 assert_true (ai_move (ai, 7, 2)); 29694 assert_true (ai_move (ai, 7, 4)); 29695 assert_true (ai_move (ai, 0, 2)); 29696 assert_true (ai_move (ai, 7, 6)); 29697 assert_true (ai_move (ai, 6, 2)); 29698 assert_true (ai_move (ai, 0, 1)); 29699 assert_true (ai_move (ai, 0, 4)); 29700 assert_true (ai_move (ai, 6, 6)); 29701 assert_true (ai_move (ai, 0, 0)); 29702 assert_true (ai_move (ai, 6, 7)); 29703 assert_true (ai_move (ai, 7, 7)); 29704 assert_true (ai_move (ai, 7, 1)); 29705 assert_true (ai_move (ai, 7, 3)); 29706 assert_true (ai_move (ai, 2, 2)); 29707 assert_true (ai_move (ai, 2, 0)); 29708 assert_true (ai_move (ai, 3, 2)); 29709 assert_true (ai_move (ai, 0, 6)); 29710 assert_true (ai_move (ai, 1, 6)); 29711 assert_true (ai_move (ai, 4, 1)); 29712 assert_true (ai_move (ai, 5, 1)); 29713 assert_true (ai_move (ai, 0, 7)); 29714 assert_true (ai_move (ai, 3, 1)); 29715 assert_true (ai_move (ai, 1, 1)); 29716 assert_true (ai_move (ai, 1, 0)); 29717 assert_true (ai_move (ai, 5, 0)); 29718 assert_true (ai_move (ai, 3, 0)); 29719 assert_true (ai_move (ai, 4, 0)); 29720 assert_true (ai_move (ai, 6, 1)); 29721 assert_true (ai_move (ai, 7, 0)); 29722 assert_true (ai_move (ai, 6, 0)); 29723 } 29724 29725 private static inline void test_complete_reversi_game_382 () 29726 { 29727 /* 0 1 2 3 4 5 6 7 */ 29728 string [] board = {/* 0 */ " . . . . . . . .", 29729 /* 1 */ " . . . . . . . .", 29730 /* 2 */ " . . . . L . . .", 29731 /* 3 */ " . . L L L . . .", 29732 /* 4 */ " . . . D D . . .", 29733 /* 5 */ " . . . D . D . .", 29734 /* 6 */ " . . . . . . . .", 29735 /* 7 */ " . . . . . . . ."}; 29736 29737 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 29738 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 29739 29740 assert_true (ai_move (ai, 1, 2)); 29741 assert_true (ai_move (ai, 1, 3)); 29742 assert_true (ai_move (ai, 1, 4)); 29743 assert_true (ai_move (ai, 0, 3)); 29744 assert_true (ai_move (ai, 2, 2)); 29745 assert_true (ai_move (ai, 3, 1)); 29746 assert_true (ai_move (ai, 3, 2)); 29747 assert_true (ai_move (ai, 0, 2)); 29748 assert_true (ai_move (ai, 2, 1)); 29749 assert_true (ai_move (ai, 3, 0)); 29750 assert_true (ai_move (ai, 2, 0)); 29751 assert_true (ai_move (ai, 1, 5)); 29752 assert_true (ai_move (ai, 0, 5)); 29753 assert_true (ai_move (ai, 2, 4)); 29754 assert_true (ai_move (ai, 2, 5)); 29755 assert_true (ai_move (ai, 4, 6)); 29756 assert_true (ai_move (ai, 5, 1)); 29757 assert_true (ai_move (ai, 4, 1)); 29758 assert_true (ai_move (ai, 2, 6)); 29759 assert_true (ai_move (ai, 6, 4)); 29760 assert_true (ai_move (ai, 5, 4)); 29761 assert_true (ai_move (ai, 1, 0)); 29762 assert_true (ai_move (ai, 5, 2)); 29763 assert_true (ai_move (ai, 2, 7)); 29764 assert_true (ai_move (ai, 3, 6)); 29765 assert_true (ai_move (ai, 6, 2)); 29766 assert_true (ai_move (ai, 5, 0)); 29767 assert_true (ai_move (ai, 6, 5)); 29768 assert_true (ai_move (ai, 6, 3)); 29769 assert_true (ai_move (ai, 7, 2)); 29770 assert_true (ai_move (ai, 3, 7)); 29771 assert_true (ai_move (ai, 0, 4)); 29772 assert_true (ai_move (ai, 0, 1)); 29773 assert_true (ai_move (ai, 4, 7)); 29774 assert_true (ai_move (ai, 5, 7)); 29775 assert_true (ai_move (ai, 6, 7)); 29776 assert_true (ai_move (ai, 4, 0)); 29777 assert_true (ai_move (ai, 6, 0)); 29778 assert_true (ai_move (ai, 5, 3)); 29779 assert_true (ai_move (ai, 5, 6)); 29780 assert_true (ai_move (ai, 7, 5)); 29781 assert_true (ai_move (ai, 4, 5)); 29782 assert_true (ai_move (ai, 7, 4)); 29783 assert_true (ai_move (ai, 1, 1)); 29784 assert_true (ai_move (ai, 1, 6)); 29785 assert_true (ai_move (ai, 0, 7)); 29786 assert_true (ai_move (ai, 1, 7)); 29787 assert_true (ai_move (ai, 6, 1)); 29788 assert_true (ai_move (ai, 7, 7)); 29789 assert_true (ai_move (ai, 0, 6)); 29790 assert_true (ai_move (ai, 6, 6)); 29791 assert_true (ai_move (ai, 0, 0)); 29792 assert_true (ai_move (ai, 7, 1)); 29793 assert_true (ai_move (ai, 7, 3)); 29794 assert_true (game.pass ()); 29795 assert_true (ai_move (ai, 7, 6)); 29796 assert_true (game.pass ()); 29797 assert_true (ai_move (ai, 7, 0)); 29798 } 29799 29800 private static inline void test_complete_reversi_game_383 () 29801 { 29802 /* 0 1 2 3 4 5 6 7 */ 29803 string [] board = {/* 0 */ " . . . . . . . .", 29804 /* 1 */ " . . . . . . . .", 29805 /* 2 */ " . . . . L . . .", 29806 /* 3 */ " . . . D L . . .", 29807 /* 4 */ " . . . D D L . .", 29808 /* 5 */ " . . . D . . L .", 29809 /* 6 */ " . . . . . . . .", 29810 /* 7 */ " . . . . . . . ."}; 29811 29812 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 29813 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 29814 29815 assert_true (ai_move (ai, 6, 4)); 29816 assert_true (ai_move (ai, 2, 4)); 29817 assert_true (ai_move (ai, 1, 3)); 29818 assert_true (ai_move (ai, 1, 5)); 29819 assert_true (ai_move (ai, 1, 4)); 29820 assert_true (ai_move (ai, 6, 3)); 29821 assert_true (ai_move (ai, 7, 4)); 29822 assert_true (ai_move (ai, 5, 5)); 29823 assert_true (ai_move (ai, 4, 6)); 29824 assert_true (ai_move (ai, 4, 5)); 29825 assert_true (ai_move (ai, 7, 5)); 29826 assert_true (ai_move (ai, 5, 6)); 29827 assert_true (ai_move (ai, 4, 7)); 29828 assert_true (ai_move (ai, 5, 7)); 29829 assert_true (ai_move (ai, 6, 2)); 29830 assert_true (ai_move (ai, 7, 2)); 29831 assert_true (ai_move (ai, 5, 3)); 29832 assert_true (ai_move (ai, 5, 2)); 29833 assert_true (ai_move (ai, 3, 1)); 29834 assert_true (ai_move (ai, 2, 6)); 29835 assert_true (ai_move (ai, 3, 6)); 29836 assert_true (ai_move (ai, 5, 1)); 29837 assert_true (ai_move (ai, 3, 2)); 29838 assert_true (ai_move (ai, 7, 3)); 29839 assert_true (ai_move (ai, 7, 1)); 29840 assert_true (ai_move (ai, 2, 7)); 29841 assert_true (ai_move (ai, 3, 7)); 29842 assert_true (ai_move (ai, 2, 0)); 29843 assert_true (ai_move (ai, 0, 4)); 29844 assert_true (ai_move (ai, 2, 1)); 29845 assert_true (ai_move (ai, 6, 6)); 29846 assert_true (ai_move (ai, 0, 2)); 29847 assert_true (ai_move (ai, 2, 5)); 29848 assert_true (ai_move (ai, 2, 3)); 29849 assert_true (ai_move (ai, 2, 2)); 29850 assert_true (ai_move (ai, 0, 3)); 29851 assert_true (ai_move (ai, 1, 2)); 29852 assert_true (ai_move (ai, 0, 5)); 29853 assert_true (ai_move (ai, 5, 0)); 29854 assert_true (ai_move (ai, 0, 6)); 29855 assert_true (ai_move (ai, 4, 0)); 29856 assert_true (ai_move (ai, 3, 0)); 29857 assert_true (ai_move (ai, 4, 1)); 29858 assert_true (ai_move (ai, 6, 0)); 29859 assert_true (ai_move (ai, 6, 7)); 29860 assert_true (ai_move (ai, 7, 7)); 29861 assert_true (ai_move (ai, 1, 1)); 29862 assert_true (ai_move (ai, 7, 6)); 29863 assert_true (ai_move (ai, 6, 1)); 29864 assert_true (ai_move (ai, 7, 0)); 29865 assert_true (ai_move (ai, 1, 6)); 29866 assert_true (ai_move (ai, 1, 7)); 29867 assert_true (game.pass ()); 29868 assert_true (ai_move (ai, 0, 0)); 29869 assert_true (ai_move (ai, 1, 0)); 29870 assert_true (ai_move (ai, 0, 1)); 29871 assert_true (game.pass ()); 29872 assert_true (ai_move (ai, 0, 7)); 29873 } 29874 29875 private static inline void test_complete_reversi_game_384 () 29876 { 29877 /* 0 1 2 3 4 5 6 7 */ 29878 string [] board = {/* 0 */ " . . . . . . . .", 29879 /* 1 */ " . . . . . . . .", 29880 /* 2 */ " . . . . L . . .", 29881 /* 3 */ " . . . D L . . .", 29882 /* 4 */ " . . . D L D . .", 29883 /* 5 */ " . . . D L . . .", 29884 /* 6 */ " . . . . . . . .", 29885 /* 7 */ " . . . . . . . ."}; 29886 29887 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 29888 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 29889 29890 assert_true (ai_move (ai, 5, 6)); 29891 assert_true (ai_move (ai, 4, 6)); 29892 assert_true (ai_move (ai, 5, 1)); 29893 assert_true (ai_move (ai, 2, 6)); 29894 assert_true (ai_move (ai, 5, 2)); 29895 assert_true (ai_move (ai, 6, 4)); 29896 assert_true (ai_move (ai, 6, 5)); 29897 assert_true (ai_move (ai, 6, 3)); 29898 assert_true (ai_move (ai, 6, 2)); 29899 assert_true (ai_move (ai, 2, 2)); 29900 assert_true (ai_move (ai, 3, 2)); 29901 assert_true (ai_move (ai, 7, 4)); 29902 assert_true (ai_move (ai, 1, 2)); 29903 assert_true (ai_move (ai, 7, 2)); 29904 assert_true (ai_move (ai, 5, 5)); 29905 assert_true (ai_move (ai, 5, 7)); 29906 assert_true (ai_move (ai, 2, 5)); 29907 assert_true (ai_move (ai, 5, 3)); 29908 assert_true (ai_move (ai, 3, 6)); 29909 assert_true (ai_move (ai, 4, 1)); 29910 assert_true (ai_move (ai, 2, 7)); 29911 assert_true (ai_move (ai, 2, 1)); 29912 assert_true (ai_move (ai, 6, 1)); 29913 assert_true (ai_move (ai, 2, 4)); 29914 assert_true (ai_move (ai, 2, 3)); 29915 assert_true (ai_move (ai, 1, 4)); 29916 assert_true (ai_move (ai, 1, 3)); 29917 assert_true (ai_move (ai, 7, 5)); 29918 assert_true (ai_move (ai, 7, 3)); 29919 assert_true (ai_move (ai, 1, 5)); 29920 assert_true (ai_move (ai, 3, 7)); 29921 assert_true (ai_move (ai, 0, 3)); 29922 assert_true (ai_move (ai, 0, 5)); 29923 assert_true (ai_move (ai, 0, 2)); 29924 assert_true (ai_move (ai, 0, 4)); 29925 assert_true (ai_move (ai, 0, 6)); 29926 assert_true (ai_move (ai, 3, 1)); 29927 assert_true (ai_move (ai, 2, 0)); 29928 assert_true (ai_move (ai, 4, 0)); 29929 assert_true (ai_move (ai, 3, 0)); 29930 assert_true (ai_move (ai, 5, 0)); 29931 assert_true (ai_move (ai, 4, 7)); 29932 assert_true (ai_move (ai, 6, 7)); 29933 assert_true (ai_move (ai, 1, 1)); 29934 assert_true (ai_move (ai, 0, 0)); 29935 assert_true (ai_move (ai, 1, 0)); 29936 assert_true (ai_move (ai, 0, 1)); 29937 assert_true (ai_move (ai, 1, 6)); 29938 assert_true (ai_move (ai, 0, 7)); 29939 assert_true (ai_move (ai, 1, 7)); 29940 assert_true (ai_move (ai, 6, 6)); 29941 assert_true (ai_move (ai, 7, 7)); 29942 assert_true (ai_move (ai, 7, 6)); 29943 assert_true (ai_move (ai, 7, 0)); 29944 assert_true (ai_move (ai, 6, 0)); 29945 assert_true (ai_move (ai, 7, 1)); 29946 } 29947 29948 private static inline void test_complete_reversi_game_385 () 29949 { 29950 /* 0 1 2 3 4 5 6 7 */ 29951 string [] board = {/* 0 */ " . . . . . . . .", 29952 /* 1 */ " . . . . . . . .", 29953 /* 2 */ " . . . . L . . .", 29954 /* 3 */ " . . . D L . . .", 29955 /* 4 */ " . . . L D D . .", 29956 /* 5 */ " . . L D . . . .", 29957 /* 6 */ " . . . . . . . .", 29958 /* 7 */ " . . . . . . . ."}; 29959 29960 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 29961 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 29962 29963 assert_true (ai_move (ai, 1, 5)); 29964 assert_true (ai_move (ai, 6, 5)); 29965 assert_true (ai_move (ai, 5, 1)); 29966 assert_true (ai_move (ai, 4, 1)); 29967 assert_true (ai_move (ai, 6, 4)); 29968 assert_true (ai_move (ai, 3, 2)); 29969 assert_true (ai_move (ai, 2, 2)); 29970 assert_true (ai_move (ai, 1, 2)); 29971 assert_true (ai_move (ai, 2, 4)); 29972 assert_true (ai_move (ai, 2, 3)); 29973 assert_true (ai_move (ai, 5, 2)); 29974 assert_true (ai_move (ai, 2, 6)); 29975 assert_true (ai_move (ai, 1, 4)); 29976 assert_true (ai_move (ai, 0, 3)); 29977 assert_true (ai_move (ai, 2, 1)); 29978 assert_true (ai_move (ai, 3, 1)); 29979 assert_true (ai_move (ai, 5, 0)); 29980 assert_true (ai_move (ai, 1, 3)); 29981 assert_true (ai_move (ai, 0, 5)); 29982 assert_true (ai_move (ai, 2, 0)); 29983 assert_true (ai_move (ai, 3, 6)); 29984 assert_true (ai_move (ai, 6, 2)); 29985 assert_true (ai_move (ai, 5, 3)); 29986 assert_true (ai_move (ai, 7, 5)); 29987 assert_true (ai_move (ai, 6, 3)); 29988 assert_true (ai_move (ai, 7, 3)); 29989 assert_true (ai_move (ai, 7, 2)); 29990 assert_true (ai_move (ai, 5, 5)); 29991 assert_true (ai_move (ai, 5, 6)); 29992 assert_true (ai_move (ai, 4, 5)); 29993 assert_true (ai_move (ai, 4, 6)); 29994 assert_true (ai_move (ai, 5, 7)); 29995 assert_true (ai_move (ai, 3, 0)); 29996 assert_true (ai_move (ai, 3, 7)); 29997 assert_true (ai_move (ai, 0, 4)); 29998 assert_true (ai_move (ai, 0, 2)); 29999 assert_true (ai_move (ai, 0, 1)); 30000 assert_true (ai_move (ai, 4, 0)); 30001 assert_true (ai_move (ai, 1, 0)); 30002 assert_true (ai_move (ai, 7, 4)); 30003 assert_true (ai_move (ai, 7, 6)); 30004 assert_true (ai_move (ai, 1, 6)); 30005 assert_true (ai_move (ai, 4, 7)); 30006 assert_true (ai_move (ai, 2, 7)); 30007 assert_true (ai_move (ai, 7, 1)); 30008 assert_true (ai_move (ai, 6, 1)); 30009 assert_true (ai_move (ai, 7, 0)); 30010 assert_true (ai_move (ai, 6, 0)); 30011 assert_true (ai_move (ai, 1, 1)); 30012 assert_true (ai_move (ai, 0, 0)); 30013 assert_true (ai_move (ai, 6, 7)); 30014 assert_true (ai_move (ai, 0, 6)); 30015 assert_true (ai_move (ai, 1, 7)); 30016 assert_true (ai_move (ai, 0, 7)); 30017 assert_true (ai_move (ai, 6, 6)); 30018 assert_true (ai_move (ai, 7, 7)); 30019 } 30020 30021 private static inline void test_complete_reversi_game_386 () 30022 { 30023 /* 0 1 2 3 4 5 6 7 */ 30024 string [] board = {/* 0 */ " . . . . . . . .", 30025 /* 1 */ " . . . . . . . .", 30026 /* 2 */ " . . . . L . . .", 30027 /* 3 */ " . . . L L . . .", 30028 /* 4 */ " . . L D D D . .", 30029 /* 5 */ " . . . D . . . .", 30030 /* 6 */ " . . . . . . . .", 30031 /* 7 */ " . . . . . . . ."}; 30032 30033 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 30034 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 30035 30036 assert_true (ai_move (ai, 1, 3)); 30037 assert_true (ai_move (ai, 6, 5)); 30038 assert_true (ai_move (ai, 6, 4)); 30039 assert_true (ai_move (ai, 1, 5)); 30040 assert_true (ai_move (ai, 1, 4)); 30041 assert_true (ai_move (ai, 6, 3)); 30042 assert_true (ai_move (ai, 7, 4)); 30043 assert_true (ai_move (ai, 5, 5)); 30044 assert_true (ai_move (ai, 4, 6)); 30045 assert_true (ai_move (ai, 4, 5)); 30046 assert_true (ai_move (ai, 7, 5)); 30047 assert_true (ai_move (ai, 5, 6)); 30048 assert_true (ai_move (ai, 4, 7)); 30049 assert_true (ai_move (ai, 5, 7)); 30050 assert_true (ai_move (ai, 6, 2)); 30051 assert_true (ai_move (ai, 7, 2)); 30052 assert_true (ai_move (ai, 5, 3)); 30053 assert_true (ai_move (ai, 5, 2)); 30054 assert_true (ai_move (ai, 3, 1)); 30055 assert_true (ai_move (ai, 2, 6)); 30056 assert_true (ai_move (ai, 3, 6)); 30057 assert_true (ai_move (ai, 5, 1)); 30058 assert_true (ai_move (ai, 3, 2)); 30059 assert_true (ai_move (ai, 7, 3)); 30060 assert_true (ai_move (ai, 7, 1)); 30061 assert_true (ai_move (ai, 2, 7)); 30062 assert_true (ai_move (ai, 3, 7)); 30063 assert_true (ai_move (ai, 2, 0)); 30064 assert_true (ai_move (ai, 0, 4)); 30065 assert_true (ai_move (ai, 2, 1)); 30066 assert_true (ai_move (ai, 6, 6)); 30067 assert_true (ai_move (ai, 0, 2)); 30068 assert_true (ai_move (ai, 2, 5)); 30069 assert_true (ai_move (ai, 2, 3)); 30070 assert_true (ai_move (ai, 2, 2)); 30071 assert_true (ai_move (ai, 0, 3)); 30072 assert_true (ai_move (ai, 1, 2)); 30073 assert_true (ai_move (ai, 0, 5)); 30074 assert_true (ai_move (ai, 5, 0)); 30075 assert_true (ai_move (ai, 0, 6)); 30076 assert_true (ai_move (ai, 4, 0)); 30077 assert_true (ai_move (ai, 3, 0)); 30078 assert_true (ai_move (ai, 4, 1)); 30079 assert_true (ai_move (ai, 6, 0)); 30080 assert_true (ai_move (ai, 6, 7)); 30081 assert_true (ai_move (ai, 7, 7)); 30082 assert_true (ai_move (ai, 1, 1)); 30083 assert_true (ai_move (ai, 7, 6)); 30084 assert_true (ai_move (ai, 6, 1)); 30085 assert_true (ai_move (ai, 7, 0)); 30086 assert_true (ai_move (ai, 1, 6)); 30087 assert_true (ai_move (ai, 1, 7)); 30088 assert_true (game.pass ()); 30089 assert_true (ai_move (ai, 0, 0)); 30090 assert_true (ai_move (ai, 1, 0)); 30091 assert_true (ai_move (ai, 0, 1)); 30092 assert_true (game.pass ()); 30093 assert_true (ai_move (ai, 0, 7)); 30094 } 30095 30096 private static inline void test_complete_reversi_game_387 () 30097 { 30098 /* 0 1 2 3 4 5 6 7 */ 30099 string [] board = {/* 0 */ " . . . . . . . .", 30100 /* 1 */ " . . . . . . . .", 30101 /* 2 */ " . . . . L . . .", 30102 /* 3 */ " . . L L L . . .", 30103 /* 4 */ " . . . D D D . .", 30104 /* 5 */ " . . . D . . . .", 30105 /* 6 */ " . . . . . . . .", 30106 /* 7 */ " . . . . . . . ."}; 30107 30108 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 30109 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 30110 30111 assert_true (ai_move (ai, 1, 2)); 30112 assert_true (ai_move (ai, 1, 3)); 30113 assert_true (ai_move (ai, 1, 4)); 30114 assert_true (ai_move (ai, 6, 5)); 30115 assert_true (ai_move (ai, 6, 4)); 30116 assert_true (ai_move (ai, 0, 3)); 30117 assert_true (ai_move (ai, 5, 2)); 30118 assert_true (ai_move (ai, 6, 2)); 30119 assert_true (ai_move (ai, 4, 1)); 30120 assert_true (ai_move (ai, 5, 1)); 30121 assert_true (ai_move (ai, 6, 3)); 30122 assert_true (ai_move (ai, 2, 1)); 30123 assert_true (ai_move (ai, 5, 0)); 30124 assert_true (ai_move (ai, 0, 5)); 30125 assert_true (ai_move (ai, 7, 2)); 30126 assert_true (ai_move (ai, 4, 0)); 30127 assert_true (ai_move (ai, 3, 0)); 30128 assert_true (ai_move (ai, 5, 5)); 30129 assert_true (ai_move (ai, 4, 6)); 30130 assert_true (ai_move (ai, 2, 6)); 30131 assert_true (ai_move (ai, 3, 6)); 30132 assert_true (ai_move (ai, 3, 2)); 30133 assert_true (ai_move (ai, 7, 5)); 30134 assert_true (ai_move (ai, 2, 4)); 30135 assert_true (ai_move (ai, 5, 3)); 30136 assert_true (ai_move (ai, 5, 7)); 30137 assert_true (ai_move (ai, 2, 2)); 30138 assert_true (ai_move (ai, 3, 7)); 30139 assert_true (ai_move (ai, 2, 0)); 30140 assert_true (ai_move (ai, 4, 5)); 30141 assert_true (ai_move (ai, 0, 2)); 30142 assert_true (ai_move (ai, 7, 3)); 30143 assert_true (ai_move (ai, 7, 4)); 30144 assert_true (ai_move (ai, 3, 1)); 30145 assert_true (ai_move (ai, 5, 6)); 30146 assert_true (ai_move (ai, 2, 5)); 30147 assert_true (ai_move (ai, 1, 1)); 30148 assert_true (ai_move (ai, 6, 1)); 30149 assert_true (ai_move (ai, 4, 7)); 30150 assert_true (ai_move (ai, 6, 7)); 30151 assert_true (ai_move (ai, 6, 6)); 30152 assert_true (ai_move (ai, 7, 1)); 30153 assert_true (ai_move (ai, 7, 0)); 30154 assert_true (ai_move (ai, 7, 6)); 30155 assert_true (ai_move (ai, 7, 7)); 30156 assert_true (ai_move (ai, 0, 1)); 30157 assert_true (ai_move (ai, 2, 7)); 30158 assert_true (ai_move (ai, 1, 5)); 30159 assert_true (ai_move (ai, 1, 0)); 30160 assert_true (ai_move (ai, 1, 6)); 30161 assert_true (ai_move (ai, 6, 0)); 30162 assert_true (game.pass ()); 30163 assert_true (ai_move (ai, 0, 7)); 30164 assert_true (ai_move (ai, 0, 6)); 30165 assert_true (ai_move (ai, 0, 4)); 30166 assert_true (ai_move (ai, 1, 7)); 30167 assert_true (ai_move (ai, 0, 0)); 30168 } 30169 30170 private static inline void test_complete_reversi_game_388 () 30171 { 30172 /* 0 1 2 3 4 5 6 7 */ 30173 string [] board = {/* 0 */ " . . . . . . . .", 30174 /* 1 */ " . . . . . . . .", 30175 /* 2 */ " . . . . L . . .", 30176 /* 3 */ " . . . D D L . .", 30177 /* 4 */ " . . . D D . L .", 30178 /* 5 */ " . . . D . . . .", 30179 /* 6 */ " . . . . . . . .", 30180 /* 7 */ " . . . . . . . ."}; 30181 30182 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 30183 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 30184 30185 assert_true (ai_move (ai, 6, 2)); 30186 assert_true (ai_move (ai, 2, 4)); 30187 assert_true (ai_move (ai, 1, 3)); 30188 assert_true (ai_move (ai, 1, 5)); 30189 assert_true (ai_move (ai, 1, 4)); 30190 assert_true (ai_move (ai, 5, 5)); 30191 assert_true (ai_move (ai, 3, 1)); 30192 assert_true (ai_move (ai, 2, 6)); 30193 assert_true (ai_move (ai, 4, 6)); 30194 assert_true (ai_move (ai, 5, 1)); 30195 assert_true (ai_move (ai, 4, 1)); 30196 assert_true (ai_move (ai, 7, 3)); 30197 assert_true (ai_move (ai, 7, 5)); 30198 assert_true (ai_move (ai, 3, 7)); 30199 assert_true (ai_move (ai, 5, 7)); 30200 assert_true (ai_move (ai, 6, 3)); 30201 assert_true (ai_move (ai, 3, 2)); 30202 assert_true (ai_move (ai, 6, 5)); 30203 assert_true (ai_move (ai, 5, 2)); 30204 assert_true (ai_move (ai, 2, 0)); 30205 assert_true (ai_move (ai, 5, 0)); 30206 assert_true (ai_move (ai, 4, 0)); 30207 assert_true (ai_move (ai, 7, 2)); 30208 assert_true (ai_move (ai, 7, 1)); 30209 assert_true (ai_move (ai, 5, 4)); 30210 assert_true (ai_move (ai, 2, 1)); 30211 assert_true (ai_move (ai, 2, 2)); 30212 assert_true (ai_move (ai, 6, 1)); 30213 assert_true (ai_move (ai, 5, 6)); 30214 assert_true (ai_move (ai, 2, 5)); 30215 assert_true (ai_move (ai, 2, 7)); 30216 assert_true (ai_move (ai, 4, 7)); 30217 assert_true (ai_move (ai, 0, 4)); 30218 assert_true (ai_move (ai, 1, 2)); 30219 assert_true (ai_move (ai, 2, 3)); 30220 assert_true (ai_move (ai, 3, 0)); 30221 assert_true (ai_move (ai, 1, 0)); 30222 assert_true (ai_move (ai, 0, 5)); 30223 assert_true (ai_move (ai, 6, 0)); 30224 assert_true (ai_move (ai, 3, 6)); 30225 assert_true (ai_move (ai, 4, 5)); 30226 assert_true (ai_move (ai, 0, 2)); 30227 assert_true (ai_move (ai, 7, 4)); 30228 assert_true (ai_move (ai, 7, 6)); 30229 assert_true (ai_move (ai, 0, 3)); 30230 assert_true (ai_move (ai, 6, 6)); 30231 assert_true (ai_move (ai, 7, 0)); 30232 assert_true (ai_move (ai, 1, 1)); 30233 assert_true (ai_move (ai, 7, 7)); 30234 assert_true (ai_move (ai, 6, 7)); 30235 assert_true (ai_move (ai, 0, 0)); 30236 assert_true (ai_move (ai, 0, 1)); 30237 assert_true (ai_move (ai, 0, 6)); 30238 assert_true (ai_move (ai, 0, 7)); 30239 assert_true (game.pass ()); 30240 assert_true (ai_move (ai, 1, 7)); 30241 assert_true (ai_move (ai, 1, 6)); 30242 } 30243 30244 private static inline void test_complete_reversi_game_389 () 30245 { 30246 /* 0 1 2 3 4 5 6 7 */ 30247 string [] board = {/* 0 */ " . . . . . . . .", 30248 /* 1 */ " . . . . . . . .", 30249 /* 2 */ " . . . . L . . .", 30250 /* 3 */ " . . . D L D . .", 30251 /* 4 */ " . . . D L . . .", 30252 /* 5 */ " . . . D L . . .", 30253 /* 6 */ " . . . . . . . .", 30254 /* 7 */ " . . . . . . . ."}; 30255 30256 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 30257 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 30258 30259 assert_true (ai_move (ai, 5, 6)); 30260 assert_true (ai_move (ai, 6, 2)); 30261 assert_true (ai_move (ai, 5, 1)); 30262 assert_true (ai_move (ai, 3, 1)); 30263 assert_true (ai_move (ai, 7, 3)); 30264 assert_true (ai_move (ai, 4, 6)); 30265 assert_true (ai_move (ai, 5, 7)); 30266 assert_true (ai_move (ai, 2, 6)); 30267 assert_true (ai_move (ai, 2, 4)); 30268 assert_true (ai_move (ai, 2, 5)); 30269 assert_true (ai_move (ai, 2, 7)); 30270 assert_true (ai_move (ai, 1, 3)); 30271 assert_true (ai_move (ai, 1, 5)); 30272 assert_true (ai_move (ai, 1, 4)); 30273 assert_true (ai_move (ai, 0, 3)); 30274 assert_true (ai_move (ai, 0, 5)); 30275 assert_true (ai_move (ai, 3, 6)); 30276 assert_true (ai_move (ai, 0, 4)); 30277 assert_true (ai_move (ai, 0, 6)); 30278 assert_true (ai_move (ai, 2, 2)); 30279 assert_true (ai_move (ai, 0, 2)); 30280 assert_true (ai_move (ai, 2, 3)); 30281 assert_true (ai_move (ai, 5, 5)); 30282 assert_true (ai_move (ai, 1, 2)); 30283 assert_true (ai_move (ai, 5, 4)); 30284 assert_true (ai_move (ai, 6, 5)); 30285 assert_true (ai_move (ai, 6, 4)); 30286 assert_true (ai_move (ai, 7, 5)); 30287 assert_true (ai_move (ai, 3, 2)); 30288 assert_true (ai_move (ai, 2, 1)); 30289 assert_true (ai_move (ai, 2, 0)); 30290 assert_true (ai_move (ai, 7, 1)); 30291 assert_true (ai_move (ai, 4, 0)); 30292 assert_true (ai_move (ai, 3, 0)); 30293 assert_true (ai_move (ai, 5, 2)); 30294 assert_true (ai_move (ai, 5, 0)); 30295 assert_true (ai_move (ai, 6, 0)); 30296 assert_true (ai_move (ai, 6, 3)); 30297 assert_true (ai_move (ai, 4, 1)); 30298 assert_true (ai_move (ai, 3, 7)); 30299 assert_true (ai_move (ai, 4, 7)); 30300 assert_true (ai_move (ai, 6, 1)); 30301 assert_true (ai_move (ai, 7, 0)); 30302 assert_true (ai_move (ai, 1, 0)); 30303 assert_true (ai_move (ai, 7, 2)); 30304 assert_true (ai_move (ai, 1, 1)); 30305 assert_true (ai_move (ai, 7, 4)); 30306 assert_true (ai_move (ai, 1, 6)); 30307 assert_true (ai_move (ai, 7, 6)); 30308 assert_true (ai_move (ai, 1, 7)); 30309 assert_true (ai_move (ai, 0, 7)); 30310 assert_true (ai_move (ai, 6, 6)); 30311 assert_true (ai_move (ai, 7, 7)); 30312 assert_true (game.pass ()); 30313 assert_true (ai_move (ai, 6, 7)); 30314 assert_true (game.pass ()); 30315 assert_true (ai_move (ai, 0, 0)); 30316 assert_true (ai_move (ai, 0, 1)); 30317 } 30318 30319 private static inline void test_complete_reversi_game_390 () 30320 { 30321 /* 0 1 2 3 4 5 6 7 */ 30322 string [] board = {/* 0 */ " . . . . . . . .", 30323 /* 1 */ " . . . . . . . .", 30324 /* 2 */ " . . . . L . . .", 30325 /* 3 */ " . . . L D D . .", 30326 /* 4 */ " . . L D D . . .", 30327 /* 5 */ " . . . D . . . .", 30328 /* 6 */ " . . . . . . . .", 30329 /* 7 */ " . . . . . . . ."}; 30330 30331 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 30332 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 30333 30334 assert_true (ai_move (ai, 3, 1)); 30335 assert_true (ai_move (ai, 5, 1)); 30336 assert_true (ai_move (ai, 4, 1)); 30337 assert_true (ai_move (ai, 4, 6)); 30338 assert_true (ai_move (ai, 3, 2)); 30339 assert_true (ai_move (ai, 6, 2)); 30340 assert_true (ai_move (ai, 6, 4)); 30341 assert_true (ai_move (ai, 2, 2)); 30342 assert_true (ai_move (ai, 1, 2)); 30343 assert_true (ai_move (ai, 3, 0)); 30344 assert_true (ai_move (ai, 2, 1)); 30345 assert_true (ai_move (ai, 5, 2)); 30346 assert_true (ai_move (ai, 7, 2)); 30347 assert_true (ai_move (ai, 2, 3)); 30348 assert_true (ai_move (ai, 2, 5)); 30349 assert_true (ai_move (ai, 1, 5)); 30350 assert_true (ai_move (ai, 1, 4)); 30351 assert_true (ai_move (ai, 2, 0)); 30352 assert_true (ai_move (ai, 1, 3)); 30353 assert_true (ai_move (ai, 6, 3)); 30354 assert_true (ai_move (ai, 5, 0)); 30355 assert_true (ai_move (ai, 5, 4)); 30356 assert_true (ai_move (ai, 3, 6)); 30357 assert_true (ai_move (ai, 4, 5)); 30358 assert_true (ai_move (ai, 2, 6)); 30359 assert_true (ai_move (ai, 2, 7)); 30360 assert_true (ai_move (ai, 5, 5)); 30361 assert_true (ai_move (ai, 5, 6)); 30362 assert_true (ai_move (ai, 0, 5)); 30363 assert_true (ai_move (ai, 6, 5)); 30364 assert_true (ai_move (ai, 7, 5)); 30365 assert_true (ai_move (ai, 7, 3)); 30366 assert_true (ai_move (ai, 5, 7)); 30367 assert_true (ai_move (ai, 3, 7)); 30368 assert_true (ai_move (ai, 7, 4)); 30369 assert_true (ai_move (ai, 4, 0)); 30370 assert_true (ai_move (ai, 1, 0)); 30371 assert_true (ai_move (ai, 0, 2)); 30372 assert_true (ai_move (ai, 0, 4)); 30373 assert_true (ai_move (ai, 0, 3)); 30374 assert_true (ai_move (ai, 0, 1)); 30375 assert_true (ai_move (ai, 1, 1)); 30376 assert_true (ai_move (ai, 4, 7)); 30377 assert_true (ai_move (ai, 6, 7)); 30378 assert_true (ai_move (ai, 6, 6)); 30379 assert_true (ai_move (ai, 7, 7)); 30380 assert_true (ai_move (ai, 7, 6)); 30381 assert_true (ai_move (ai, 7, 1)); 30382 assert_true (ai_move (ai, 0, 0)); 30383 assert_true (ai_move (ai, 6, 1)); 30384 assert_true (ai_move (ai, 7, 0)); 30385 assert_true (ai_move (ai, 6, 0)); 30386 assert_true (ai_move (ai, 1, 6)); 30387 assert_true (ai_move (ai, 0, 7)); 30388 assert_true (ai_move (ai, 0, 6)); 30389 assert_true (ai_move (ai, 1, 7)); 30390 } 30391 30392 private static inline void test_complete_reversi_game_391 () 30393 { 30394 /* 0 1 2 3 4 5 6 7 */ 30395 string [] board = {/* 0 */ " . . . . . . . .", 30396 /* 1 */ " . . . . . . . .", 30397 /* 2 */ " . . . . L L L .", 30398 /* 3 */ " . . . D D . . .", 30399 /* 4 */ " . . . D L . . .", 30400 /* 5 */ " . . . D . . . .", 30401 /* 6 */ " . . . . . . . .", 30402 /* 7 */ " . . . . . . . ."}; 30403 30404 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 30405 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 30406 30407 assert_true (ai_move (ai, 5, 5)); 30408 assert_true (ai_move (ai, 2, 4)); 30409 assert_true (ai_move (ai, 1, 3)); 30410 assert_true (ai_move (ai, 1, 5)); 30411 assert_true (ai_move (ai, 1, 4)); 30412 assert_true (ai_move (ai, 5, 3)); 30413 assert_true (ai_move (ai, 2, 2)); 30414 assert_true (ai_move (ai, 4, 5)); 30415 assert_true (ai_move (ai, 5, 6)); 30416 assert_true (ai_move (ai, 4, 6)); 30417 assert_true (ai_move (ai, 5, 1)); 30418 assert_true (ai_move (ai, 6, 5)); 30419 assert_true (ai_move (ai, 7, 2)); 30420 assert_true (ai_move (ai, 2, 6)); 30421 assert_true (ai_move (ai, 6, 4)); 30422 assert_true (ai_move (ai, 5, 7)); 30423 assert_true (ai_move (ai, 3, 6)); 30424 assert_true (ai_move (ai, 4, 1)); 30425 assert_true (ai_move (ai, 3, 2)); 30426 assert_true (ai_move (ai, 2, 1)); 30427 assert_true (ai_move (ai, 2, 0)); 30428 assert_true (ai_move (ai, 6, 3)); 30429 assert_true (ai_move (ai, 3, 1)); 30430 assert_true (ai_move (ai, 4, 0)); 30431 assert_true (ai_move (ai, 5, 0)); 30432 assert_true (ai_move (ai, 3, 0)); 30433 assert_true (ai_move (ai, 1, 7)); 30434 assert_true (ai_move (ai, 2, 7)); 30435 assert_true (ai_move (ai, 3, 7)); 30436 assert_true (ai_move (ai, 2, 5)); 30437 assert_true (ai_move (ai, 0, 4)); 30438 assert_true (ai_move (ai, 0, 5)); 30439 assert_true (ai_move (ai, 0, 6)); 30440 assert_true (ai_move (ai, 2, 3)); 30441 assert_true (ai_move (ai, 5, 4)); 30442 assert_true (ai_move (ai, 1, 2)); 30443 assert_true (ai_move (ai, 1, 6)); 30444 assert_true (ai_move (ai, 7, 3)); 30445 assert_true (ai_move (ai, 0, 2)); 30446 assert_true (ai_move (ai, 7, 1)); 30447 assert_true (ai_move (ai, 4, 7)); 30448 assert_true (ai_move (ai, 0, 7)); 30449 assert_true (ai_move (ai, 7, 5)); 30450 assert_true (ai_move (ai, 6, 1)); 30451 assert_true (ai_move (ai, 1, 1)); 30452 assert_true (ai_move (ai, 0, 0)); 30453 assert_true (ai_move (ai, 1, 0)); 30454 assert_true (ai_move (ai, 0, 1)); 30455 assert_true (ai_move (ai, 6, 6)); 30456 assert_true (ai_move (ai, 0, 3)); 30457 assert_true (ai_move (ai, 6, 0)); 30458 assert_true (ai_move (ai, 7, 0)); 30459 assert_true (game.pass ()); 30460 assert_true (ai_move (ai, 7, 7)); 30461 assert_true (ai_move (ai, 6, 7)); 30462 assert_true (ai_move (ai, 7, 4)); 30463 assert_true (ai_move (ai, 7, 6)); 30464 } 30465 30466 private static inline void test_complete_reversi_game_392 () 30467 { 30468 /* 0 1 2 3 4 5 6 7 */ 30469 string [] board = {/* 0 */ " . . . . . . . .", 30470 /* 1 */ " . . . . . . . .", 30471 /* 2 */ " . . . . L D . .", 30472 /* 3 */ " . . . D D . . .", 30473 /* 4 */ " . . . D L . . .", 30474 /* 5 */ " . . . L . . . .", 30475 /* 6 */ " . . L . . . . .", 30476 /* 7 */ " . . . . . . . ."}; 30477 30478 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 30479 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 30480 30481 assert_true (ai_move (ai, 5, 1)); 30482 assert_true (ai_move (ai, 2, 2)); 30483 assert_true (ai_move (ai, 3, 6)); 30484 assert_true (ai_move (ai, 5, 3)); 30485 assert_true (ai_move (ai, 6, 4)); 30486 assert_true (ai_move (ai, 4, 1)); 30487 assert_true (ai_move (ai, 3, 0)); 30488 assert_true (ai_move (ai, 6, 3)); 30489 assert_true (ai_move (ai, 3, 1)); 30490 assert_true (ai_move (ai, 6, 2)); 30491 assert_true (ai_move (ai, 7, 3)); 30492 assert_true (ai_move (ai, 7, 5)); 30493 assert_true (ai_move (ai, 1, 3)); 30494 assert_true (ai_move (ai, 5, 0)); 30495 assert_true (ai_move (ai, 4, 0)); 30496 assert_true (ai_move (ai, 3, 2)); 30497 assert_true (ai_move (ai, 6, 0)); 30498 assert_true (ai_move (ai, 1, 2)); 30499 assert_true (ai_move (ai, 0, 2)); 30500 assert_true (ai_move (ai, 2, 3)); 30501 assert_true (ai_move (ai, 1, 4)); 30502 assert_true (ai_move (ai, 2, 4)); 30503 assert_true (ai_move (ai, 1, 5)); 30504 assert_true (ai_move (ai, 3, 7)); 30505 assert_true (ai_move (ai, 4, 6)); 30506 assert_true (ai_move (ai, 5, 5)); 30507 assert_true (ai_move (ai, 5, 7)); 30508 assert_true (ai_move (ai, 5, 6)); 30509 assert_true (ai_move (ai, 7, 4)); 30510 assert_true (ai_move (ai, 7, 2)); 30511 assert_true (ai_move (ai, 6, 5)); 30512 assert_true (ai_move (ai, 5, 4)); 30513 assert_true (ai_move (ai, 4, 7)); 30514 assert_true (ai_move (ai, 6, 7)); 30515 assert_true (ai_move (ai, 2, 5)); 30516 assert_true (ai_move (ai, 2, 1)); 30517 assert_true (ai_move (ai, 4, 5)); 30518 assert_true (ai_move (ai, 7, 6)); 30519 assert_true (ai_move (ai, 2, 7)); 30520 assert_true (ai_move (ai, 1, 7)); 30521 assert_true (ai_move (ai, 1, 6)); 30522 assert_true (ai_move (ai, 2, 0)); 30523 assert_true (ai_move (ai, 1, 0)); 30524 assert_true (ai_move (ai, 0, 3)); 30525 assert_true (ai_move (ai, 1, 1)); 30526 assert_true (ai_move (ai, 7, 1)); 30527 assert_true (ai_move (ai, 0, 4)); 30528 assert_true (ai_move (ai, 0, 7)); 30529 assert_true (ai_move (ai, 0, 6)); 30530 assert_true (ai_move (ai, 0, 5)); 30531 assert_true (game.pass ()); 30532 assert_true (ai_move (ai, 6, 1)); 30533 assert_true (ai_move (ai, 6, 6)); 30534 assert_true (ai_move (ai, 7, 0)); 30535 assert_true (game.pass ()); 30536 assert_true (ai_move (ai, 0, 1)); 30537 assert_true (ai_move (ai, 0, 0)); 30538 } 30539 30540 private static inline void test_complete_reversi_game_393 () 30541 { 30542 /* 0 1 2 3 4 5 6 7 */ 30543 string [] board = {/* 0 */ " . . . . . . . .", 30544 /* 1 */ " . . . . . . . .", 30545 /* 2 */ " . . . . L D . .", 30546 /* 3 */ " . . . L D . . .", 30547 /* 4 */ " . . L L L . . .", 30548 /* 5 */ " . . . D . . . .", 30549 /* 6 */ " . . . . . . . .", 30550 /* 7 */ " . . . . . . . ."}; 30551 30552 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 30553 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 30554 30555 assert_true (ai_move (ai, 4, 1)); 30556 assert_true (ai_move (ai, 2, 6)); 30557 assert_true (ai_move (ai, 2, 3)); 30558 assert_true (ai_move (ai, 1, 2)); 30559 assert_true (ai_move (ai, 1, 3)); 30560 assert_true (ai_move (ai, 0, 2)); 30561 assert_true (ai_move (ai, 1, 5)); 30562 assert_true (ai_move (ai, 1, 4)); 30563 assert_true (ai_move (ai, 3, 7)); 30564 assert_true (ai_move (ai, 2, 2)); 30565 assert_true (ai_move (ai, 4, 5)); 30566 assert_true (ai_move (ai, 5, 6)); 30567 assert_true (ai_move (ai, 4, 6)); 30568 assert_true (ai_move (ai, 5, 1)); 30569 assert_true (ai_move (ai, 3, 2)); 30570 assert_true (ai_move (ai, 6, 2)); 30571 assert_true (ai_move (ai, 6, 3)); 30572 assert_true (ai_move (ai, 5, 0)); 30573 assert_true (ai_move (ai, 7, 2)); 30574 assert_true (ai_move (ai, 7, 4)); 30575 assert_true (ai_move (ai, 2, 1)); 30576 assert_true (ai_move (ai, 3, 0)); 30577 assert_true (ai_move (ai, 0, 5)); 30578 assert_true (ai_move (ai, 3, 1)); 30579 assert_true (ai_move (ai, 2, 0)); 30580 assert_true (ai_move (ai, 7, 3)); 30581 assert_true (ai_move (ai, 7, 5)); 30582 assert_true (ai_move (ai, 5, 7)); 30583 assert_true (ai_move (ai, 2, 5)); 30584 assert_true (ai_move (ai, 3, 6)); 30585 assert_true (ai_move (ai, 5, 5)); 30586 assert_true (ai_move (ai, 0, 3)); 30587 assert_true (ai_move (ai, 5, 4)); 30588 assert_true (ai_move (ai, 2, 7)); 30589 assert_true (ai_move (ai, 1, 7)); 30590 assert_true (ai_move (ai, 6, 5)); 30591 assert_true (ai_move (ai, 6, 4)); 30592 assert_true (ai_move (ai, 5, 3)); 30593 assert_true (ai_move (ai, 7, 6)); 30594 assert_true (ai_move (ai, 4, 7)); 30595 assert_true (ai_move (ai, 6, 7)); 30596 assert_true (ai_move (ai, 1, 1)); 30597 assert_true (ai_move (ai, 7, 1)); 30598 assert_true (ai_move (ai, 1, 0)); 30599 assert_true (ai_move (ai, 4, 0)); 30600 assert_true (ai_move (ai, 6, 0)); 30601 assert_true (ai_move (ai, 0, 4)); 30602 assert_true (ai_move (ai, 0, 6)); 30603 assert_true (ai_move (ai, 7, 0)); 30604 assert_true (ai_move (ai, 1, 6)); 30605 assert_true (ai_move (ai, 6, 1)); 30606 assert_true (ai_move (ai, 6, 6)); 30607 assert_true (ai_move (ai, 0, 7)); 30608 assert_true (game.pass ()); 30609 assert_true (ai_move (ai, 7, 7)); 30610 assert_true (game.pass ()); 30611 assert_true (ai_move (ai, 0, 1)); 30612 assert_true (ai_move (ai, 0, 0)); 30613 } 30614 30615 private static inline void test_complete_reversi_game_394 () 30616 { 30617 /* 0 1 2 3 4 5 6 7 */ 30618 string [] board = {/* 0 */ " . . . . . . . .", 30619 /* 1 */ " . . . . . . . .", 30620 /* 2 */ " . . L . L D . .", 30621 /* 3 */ " . . . L D . . .", 30622 /* 4 */ " . . . D L . . .", 30623 /* 5 */ " . . . D . . . .", 30624 /* 6 */ " . . . . . . . .", 30625 /* 7 */ " . . . . . . . ."}; 30626 30627 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 30628 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 30629 30630 assert_true (ai_move (ai, 4, 1)); 30631 assert_true (ai_move (ai, 2, 6)); 30632 assert_true (ai_move (ai, 2, 3)); 30633 assert_true (ai_move (ai, 2, 4)); 30634 assert_true (ai_move (ai, 1, 3)); 30635 assert_true (ai_move (ai, 1, 2)); 30636 assert_true (ai_move (ai, 3, 1)); 30637 assert_true (ai_move (ai, 2, 1)); 30638 assert_true (ai_move (ai, 1, 5)); 30639 assert_true (ai_move (ai, 2, 5)); 30640 assert_true (ai_move (ai, 3, 7)); 30641 assert_true (ai_move (ai, 2, 7)); 30642 assert_true (ai_move (ai, 4, 6)); 30643 assert_true (ai_move (ai, 4, 5)); 30644 assert_true (ai_move (ai, 3, 6)); 30645 assert_true (ai_move (ai, 4, 7)); 30646 assert_true (ai_move (ai, 2, 0)); 30647 assert_true (ai_move (ai, 0, 2)); 30648 assert_true (ai_move (ai, 1, 4)); 30649 assert_true (ai_move (ai, 0, 5)); 30650 assert_true (ai_move (ai, 5, 7)); 30651 assert_true (ai_move (ai, 6, 7)); 30652 assert_true (ai_move (ai, 5, 6)); 30653 assert_true (ai_move (ai, 5, 5)); 30654 assert_true (ai_move (ai, 5, 4)); 30655 assert_true (ai_move (ai, 6, 3)); 30656 assert_true (ai_move (ai, 6, 5)); 30657 assert_true (ai_move (ai, 7, 4)); 30658 assert_true (ai_move (ai, 7, 2)); 30659 assert_true (ai_move (ai, 0, 3)); 30660 assert_true (ai_move (ai, 0, 4)); 30661 assert_true (ai_move (ai, 5, 1)); 30662 assert_true (ai_move (ai, 5, 3)); 30663 assert_true (ai_move (ai, 3, 2)); 30664 assert_true (ai_move (ai, 6, 4)); 30665 assert_true (ai_move (ai, 5, 0)); 30666 assert_true (ai_move (ai, 4, 0)); 30667 assert_true (ai_move (ai, 6, 2)); 30668 assert_true (ai_move (ai, 7, 5)); 30669 assert_true (ai_move (ai, 7, 3)); 30670 assert_true (ai_move (ai, 6, 0)); 30671 assert_true (ai_move (ai, 3, 0)); 30672 assert_true (ai_move (ai, 6, 1)); 30673 assert_true (ai_move (ai, 7, 0)); 30674 assert_true (ai_move (ai, 7, 1)); 30675 assert_true (ai_move (ai, 1, 0)); 30676 assert_true (ai_move (ai, 1, 6)); 30677 assert_true (ai_move (ai, 0, 7)); 30678 assert_true (ai_move (ai, 0, 6)); 30679 assert_true (ai_move (ai, 7, 6)); 30680 assert_true (ai_move (ai, 7, 7)); 30681 assert_true (game.pass ()); 30682 assert_true (ai_move (ai, 1, 7)); 30683 assert_true (game.pass ()); 30684 assert_true (ai_move (ai, 6, 6)); 30685 assert_true (game.pass ()); 30686 assert_true (ai_move (ai, 1, 1)); 30687 assert_true (ai_move (ai, 0, 1)); 30688 assert_true (ai_move (ai, 0, 0)); 30689 } 30690 30691 private static inline void test_complete_reversi_game_395 () 30692 { 30693 /* 0 1 2 3 4 5 6 7 */ 30694 string [] board = {/* 0 */ " . . . . . . . .", 30695 /* 1 */ " . . . . L D . .", 30696 /* 2 */ " . . . . L . . .", 30697 /* 3 */ " . . . D L . . .", 30698 /* 4 */ " . . . D L . . .", 30699 /* 5 */ " . . . D . . . .", 30700 /* 6 */ " . . . . . . . .", 30701 /* 7 */ " . . . . . . . ."}; 30702 30703 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 30704 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 30705 30706 assert_true (ai_move (ai, 5, 5)); 30707 assert_true (ai_move (ai, 2, 4)); 30708 assert_true (ai_move (ai, 1, 3)); 30709 assert_true (ai_move (ai, 1, 5)); 30710 assert_true (ai_move (ai, 1, 4)); 30711 assert_true (ai_move (ai, 4, 5)); 30712 assert_true (ai_move (ai, 5, 6)); 30713 assert_true (ai_move (ai, 4, 6)); 30714 assert_true (ai_move (ai, 5, 7)); 30715 assert_true (ai_move (ai, 2, 3)); 30716 assert_true (ai_move (ai, 1, 2)); 30717 assert_true (ai_move (ai, 4, 7)); 30718 assert_true (ai_move (ai, 3, 7)); 30719 assert_true (ai_move (ai, 6, 5)); 30720 assert_true (ai_move (ai, 6, 4)); 30721 assert_true (ai_move (ai, 0, 3)); 30722 assert_true (ai_move (ai, 7, 5)); 30723 assert_true (ai_move (ai, 2, 1)); 30724 assert_true (ai_move (ai, 5, 4)); 30725 assert_true (ai_move (ai, 6, 3)); 30726 assert_true (ai_move (ai, 5, 3)); 30727 assert_true (ai_move (ai, 0, 5)); 30728 assert_true (ai_move (ai, 3, 6)); 30729 assert_true (ai_move (ai, 2, 7)); 30730 assert_true (ai_move (ai, 2, 5)); 30731 assert_true (ai_move (ai, 6, 7)); 30732 assert_true (ai_move (ai, 0, 4)); 30733 assert_true (ai_move (ai, 2, 6)); 30734 assert_true (ai_move (ai, 7, 3)); 30735 assert_true (ai_move (ai, 5, 2)); 30736 assert_true (ai_move (ai, 6, 2)); 30737 assert_true (ai_move (ai, 5, 0)); 30738 assert_true (ai_move (ai, 3, 0)); 30739 assert_true (ai_move (ai, 3, 2)); 30740 assert_true (ai_move (ai, 3, 1)); 30741 assert_true (ai_move (ai, 7, 1)); 30742 assert_true (ai_move (ai, 2, 2)); 30743 assert_true (ai_move (ai, 0, 2)); 30744 assert_true (ai_move (ai, 7, 2)); 30745 assert_true (ai_move (ai, 4, 0)); 30746 assert_true (ai_move (ai, 7, 0)); 30747 assert_true (ai_move (ai, 2, 0)); 30748 assert_true (ai_move (ai, 6, 0)); 30749 assert_true (ai_move (ai, 6, 6)); 30750 assert_true (ai_move (ai, 1, 0)); 30751 assert_true (ai_move (ai, 7, 6)); 30752 assert_true (ai_move (ai, 7, 7)); 30753 assert_true (ai_move (ai, 7, 4)); 30754 assert_true (ai_move (ai, 1, 7)); 30755 assert_true (ai_move (ai, 6, 1)); 30756 assert_true (ai_move (ai, 1, 1)); 30757 assert_true (ai_move (ai, 1, 6)); 30758 assert_true (ai_move (ai, 0, 7)); 30759 assert_true (ai_move (ai, 0, 6)); 30760 assert_true (ai_move (ai, 0, 1)); 30761 assert_true (ai_move (ai, 0, 0)); 30762 } 30763 30764 private static inline void test_complete_reversi_game_396 () 30765 { 30766 /* 0 1 2 3 4 5 6 7 */ 30767 string [] board = {/* 0 */ " . . . . . . . .", 30768 /* 1 */ " . . . . . D . .", 30769 /* 2 */ " . . . . D . . .", 30770 /* 3 */ " . . . D L . . .", 30771 /* 4 */ " . . . D L . . .", 30772 /* 5 */ " . . . L . . . .", 30773 /* 6 */ " . . L . . . . .", 30774 /* 7 */ " . . . . . . . ."}; 30775 30776 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 30777 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 30778 30779 assert_true (ai_move (ai, 3, 6)); 30780 assert_true (ai_move (ai, 4, 1)); 30781 assert_true (ai_move (ai, 5, 5)); 30782 assert_true (ai_move (ai, 2, 4)); 30783 assert_true (ai_move (ai, 1, 3)); 30784 assert_true (ai_move (ai, 1, 5)); 30785 assert_true (ai_move (ai, 1, 4)); 30786 assert_true (ai_move (ai, 4, 6)); 30787 assert_true (ai_move (ai, 5, 7)); 30788 assert_true (ai_move (ai, 5, 6)); 30789 assert_true (ai_move (ai, 2, 2)); 30790 assert_true (ai_move (ai, 5, 4)); 30791 assert_true (ai_move (ai, 6, 4)); 30792 assert_true (ai_move (ai, 6, 5)); 30793 assert_true (ai_move (ai, 5, 2)); 30794 assert_true (ai_move (ai, 6, 2)); 30795 assert_true (ai_move (ai, 5, 3)); 30796 assert_true (ai_move (ai, 6, 3)); 30797 assert_true (ai_move (ai, 7, 2)); 30798 assert_true (ai_move (ai, 7, 4)); 30799 assert_true (ai_move (ai, 3, 2)); 30800 assert_true (ai_move (ai, 4, 7)); 30801 assert_true (ai_move (ai, 7, 3)); 30802 assert_true (ai_move (ai, 5, 0)); 30803 assert_true (ai_move (ai, 7, 5)); 30804 assert_true (ai_move (ai, 4, 5)); 30805 assert_true (ai_move (ai, 3, 1)); 30806 assert_true (ai_move (ai, 6, 7)); 30807 assert_true (ai_move (ai, 2, 7)); 30808 assert_true (ai_move (ai, 2, 1)); 30809 assert_true (ai_move (ai, 2, 5)); 30810 assert_true (ai_move (ai, 0, 2)); 30811 assert_true (ai_move (ai, 2, 3)); 30812 assert_true (ai_move (ai, 1, 2)); 30813 assert_true (ai_move (ai, 0, 3)); 30814 assert_true (ai_move (ai, 0, 5)); 30815 assert_true (ai_move (ai, 0, 4)); 30816 assert_true (ai_move (ai, 6, 1)); 30817 assert_true (ai_move (ai, 3, 0)); 30818 assert_true (ai_move (ai, 2, 0)); 30819 assert_true (ai_move (ai, 4, 0)); 30820 assert_true (ai_move (ai, 6, 0)); 30821 assert_true (ai_move (ai, 7, 6)); 30822 assert_true (ai_move (ai, 1, 1)); 30823 assert_true (ai_move (ai, 3, 7)); 30824 assert_true (ai_move (ai, 1, 7)); 30825 assert_true (ai_move (ai, 0, 0)); 30826 assert_true (ai_move (ai, 0, 1)); 30827 assert_true (ai_move (ai, 1, 0)); 30828 assert_true (ai_move (ai, 1, 6)); 30829 assert_true (ai_move (ai, 6, 6)); 30830 assert_true (ai_move (ai, 0, 6)); 30831 assert_true (ai_move (ai, 0, 7)); 30832 assert_true (ai_move (ai, 7, 7)); 30833 assert_true (ai_move (ai, 7, 0)); 30834 assert_true (ai_move (ai, 7, 1)); 30835 } 30836 30837 private static inline void test_complete_reversi_game_397 () 30838 { 30839 /* 0 1 2 3 4 5 6 7 */ 30840 string [] board = {/* 0 */ " . . . . . . . .", 30841 /* 1 */ " . . . . . D . .", 30842 /* 2 */ " . . . . D . . .", 30843 /* 3 */ " . . . D L . . .", 30844 /* 4 */ " . . . L L . . .", 30845 /* 5 */ " . . L D . . . .", 30846 /* 6 */ " . . . . . . . .", 30847 /* 7 */ " . . . . . . . ."}; 30848 30849 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 30850 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 30851 30852 assert_true (ai_move (ai, 1, 5)); 30853 assert_true (ai_move (ai, 4, 1)); 30854 assert_true (ai_move (ai, 5, 5)); 30855 assert_true (ai_move (ai, 5, 4)); 30856 assert_true (ai_move (ai, 3, 1)); 30857 assert_true (ai_move (ai, 5, 6)); 30858 assert_true (ai_move (ai, 5, 3)); 30859 assert_true (ai_move (ai, 3, 6)); 30860 assert_true (ai_move (ai, 4, 5)); 30861 assert_true (ai_move (ai, 1, 4)); 30862 assert_true (ai_move (ai, 6, 5)); 30863 assert_true (ai_move (ai, 0, 5)); 30864 assert_true (ai_move (ai, 5, 7)); 30865 assert_true (ai_move (ai, 6, 4)); 30866 assert_true (ai_move (ai, 6, 3)); 30867 assert_true (ai_move (ai, 2, 6)); 30868 assert_true (ai_move (ai, 2, 7)); 30869 assert_true (ai_move (ai, 4, 7)); 30870 assert_true (ai_move (ai, 2, 3)); 30871 assert_true (ai_move (ai, 2, 4)); 30872 assert_true (ai_move (ai, 3, 7)); 30873 assert_true (ai_move (ai, 7, 4)); 30874 assert_true (ai_move (ai, 1, 3)); 30875 assert_true (ai_move (ai, 4, 6)); 30876 assert_true (ai_move (ai, 7, 3)); 30877 assert_true (ai_move (ai, 7, 5)); 30878 assert_true (ai_move (ai, 1, 7)); 30879 assert_true (ai_move (ai, 7, 2)); 30880 assert_true (ai_move (ai, 0, 3)); 30881 assert_true (ai_move (ai, 0, 4)); 30882 assert_true (ai_move (ai, 0, 6)); 30883 assert_true (ai_move (ai, 5, 2)); 30884 assert_true (ai_move (ai, 6, 2)); 30885 assert_true (ai_move (ai, 5, 0)); 30886 assert_true (ai_move (ai, 4, 0)); 30887 assert_true (ai_move (ai, 3, 0)); 30888 assert_true (ai_move (ai, 6, 6)); 30889 assert_true (ai_move (ai, 7, 6)); 30890 assert_true (ai_move (ai, 6, 1)); 30891 assert_true (ai_move (ai, 2, 1)); 30892 assert_true (ai_move (ai, 2, 0)); 30893 assert_true (ai_move (ai, 1, 0)); 30894 assert_true (ai_move (ai, 1, 1)); 30895 assert_true (ai_move (ai, 2, 2)); 30896 assert_true (game.pass ()); 30897 assert_true (ai_move (ai, 3, 2)); 30898 assert_true (ai_move (ai, 7, 1)); 30899 assert_true (ai_move (ai, 7, 7)); 30900 assert_true (ai_move (ai, 1, 2)); 30901 assert_true (ai_move (ai, 6, 7)); 30902 assert_true (game.pass ()); 30903 assert_true (ai_move (ai, 0, 0)); 30904 assert_true (ai_move (ai, 0, 1)); 30905 assert_true (ai_move (ai, 0, 7)); 30906 assert_true (game.pass ()); 30907 assert_true (ai_move (ai, 0, 2)); 30908 assert_true (game.pass ()); 30909 assert_true (ai_move (ai, 1, 6)); 30910 assert_true (game.pass ()); 30911 assert_true (ai_move (ai, 6, 0)); 30912 assert_true (ai_move (ai, 7, 0)); 30913 } 30914 30915 private static inline void test_complete_reversi_game_398 () 30916 { 30917 /* 0 1 2 3 4 5 6 7 */ 30918 string [] board = {/* 0 */ " . . . . . . . .", 30919 /* 1 */ " . . . . . D . .", 30920 /* 2 */ " . . . . D . . .", 30921 /* 3 */ " . . . D L . . .", 30922 /* 4 */ " . . L L L . . .", 30923 /* 5 */ " . . . D . . . .", 30924 /* 6 */ " . . . . . . . .", 30925 /* 7 */ " . . . . . . . ."}; 30926 30927 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 30928 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 30929 30930 assert_true (ai_move (ai, 1, 5)); 30931 assert_true (ai_move (ai, 1, 4)); 30932 assert_true (ai_move (ai, 5, 5)); 30933 assert_true (ai_move (ai, 4, 1)); 30934 assert_true (ai_move (ai, 1, 3)); 30935 assert_true (ai_move (ai, 5, 4)); 30936 assert_true (ai_move (ai, 3, 1)); 30937 assert_true (ai_move (ai, 5, 6)); 30938 assert_true (ai_move (ai, 5, 3)); 30939 assert_true (ai_move (ai, 3, 6)); 30940 assert_true (ai_move (ai, 2, 6)); 30941 assert_true (ai_move (ai, 0, 4)); 30942 assert_true (ai_move (ai, 6, 4)); 30943 assert_true (ai_move (ai, 4, 6)); 30944 assert_true (ai_move (ai, 5, 7)); 30945 assert_true (ai_move (ai, 3, 7)); 30946 assert_true (ai_move (ai, 1, 7)); 30947 assert_true (ai_move (ai, 2, 2)); 30948 assert_true (ai_move (ai, 0, 2)); 30949 assert_true (ai_move (ai, 4, 0)); 30950 assert_true (ai_move (ai, 2, 0)); 30951 assert_true (ai_move (ai, 6, 2)); 30952 assert_true (ai_move (ai, 2, 5)); 30953 assert_true (ai_move (ai, 1, 2)); 30954 assert_true (ai_move (ai, 3, 2)); 30955 assert_true (ai_move (ai, 7, 3)); 30956 assert_true (ai_move (ai, 0, 5)); 30957 assert_true (ai_move (ai, 5, 2)); 30958 assert_true (ai_move (ai, 0, 3)); 30959 assert_true (ai_move (ai, 2, 3)); 30960 assert_true (ai_move (ai, 6, 3)); 30961 assert_true (ai_move (ai, 7, 2)); 30962 assert_true (ai_move (ai, 6, 5)); 30963 assert_true (ai_move (ai, 7, 5)); 30964 assert_true (ai_move (ai, 4, 7)); 30965 assert_true (ai_move (ai, 6, 7)); 30966 assert_true (ai_move (ai, 5, 0)); 30967 assert_true (ai_move (ai, 6, 0)); 30968 assert_true (ai_move (ai, 7, 4)); 30969 assert_true (ai_move (ai, 4, 5)); 30970 assert_true (ai_move (ai, 6, 6)); 30971 assert_true (ai_move (ai, 2, 1)); 30972 assert_true (ai_move (ai, 1, 0)); 30973 assert_true (ai_move (ai, 6, 1)); 30974 assert_true (ai_move (ai, 7, 0)); 30975 assert_true (ai_move (ai, 7, 1)); 30976 assert_true (ai_move (ai, 3, 0)); 30977 assert_true (ai_move (ai, 0, 6)); 30978 assert_true (ai_move (ai, 0, 7)); 30979 assert_true (ai_move (ai, 1, 6)); 30980 assert_true (ai_move (ai, 2, 7)); 30981 assert_true (ai_move (ai, 7, 7)); 30982 assert_true (ai_move (ai, 7, 6)); 30983 assert_true (ai_move (ai, 0, 1)); 30984 assert_true (ai_move (ai, 1, 1)); 30985 assert_true (ai_move (ai, 0, 0)); 30986 } 30987 30988 private static inline void test_complete_reversi_game_399 () 30989 { 30990 /* 0 1 2 3 4 5 6 7 */ 30991 string [] board = {/* 0 */ " . . . . . . . .", 30992 /* 1 */ " . . . . . D . .", 30993 /* 2 */ " . . . . D . . .", 30994 /* 3 */ " . . L L L . . .", 30995 /* 4 */ " . . . D L . . .", 30996 /* 5 */ " . . . D . . . .", 30997 /* 6 */ " . . . . . . . .", 30998 /* 7 */ " . . . . . . . ."}; 30999 31000 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 31001 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 31002 31003 assert_true (ai_move (ai, 1, 2)); 31004 assert_true (ai_move (ai, 4, 1)); 31005 assert_true (ai_move (ai, 5, 4)); 31006 assert_true (ai_move (ai, 1, 3)); 31007 assert_true (ai_move (ai, 3, 1)); 31008 assert_true (ai_move (ai, 2, 0)); 31009 assert_true (ai_move (ai, 1, 4)); 31010 assert_true (ai_move (ai, 6, 5)); 31011 assert_true (ai_move (ai, 6, 4)); 31012 assert_true (ai_move (ai, 4, 0)); 31013 assert_true (ai_move (ai, 5, 2)); 31014 assert_true (ai_move (ai, 6, 2)); 31015 assert_true (ai_move (ai, 2, 2)); 31016 assert_true (ai_move (ai, 2, 1)); 31017 assert_true (ai_move (ai, 3, 2)); 31018 assert_true (ai_move (ai, 2, 4)); 31019 assert_true (ai_move (ai, 7, 2)); 31020 assert_true (ai_move (ai, 4, 6)); 31021 assert_true (ai_move (ai, 2, 6)); 31022 assert_true (ai_move (ai, 0, 5)); 31023 assert_true (ai_move (ai, 5, 0)); 31024 assert_true (ai_move (ai, 0, 4)); 31025 assert_true (ai_move (ai, 0, 3)); 31026 assert_true (ai_move (ai, 5, 3)); 31027 assert_true (ai_move (ai, 6, 3)); 31028 assert_true (ai_move (ai, 7, 5)); 31029 assert_true (ai_move (ai, 0, 6)); 31030 assert_true (ai_move (ai, 3, 6)); 31031 assert_true (ai_move (ai, 7, 4)); 31032 assert_true (ai_move (ai, 5, 5)); 31033 assert_true (ai_move (ai, 3, 0)); 31034 assert_true (ai_move (ai, 6, 0)); 31035 assert_true (ai_move (ai, 1, 5)); 31036 assert_true (ai_move (ai, 1, 0)); 31037 assert_true (ai_move (ai, 2, 5)); 31038 assert_true (ai_move (ai, 2, 7)); 31039 assert_true (ai_move (ai, 4, 5)); 31040 assert_true (ai_move (ai, 5, 6)); 31041 assert_true (ai_move (ai, 6, 7)); 31042 assert_true (ai_move (ai, 4, 7)); 31043 assert_true (ai_move (ai, 6, 1)); 31044 assert_true (ai_move (ai, 7, 3)); 31045 assert_true (ai_move (ai, 7, 6)); 31046 assert_true (ai_move (ai, 0, 1)); 31047 assert_true (ai_move (ai, 7, 1)); 31048 assert_true (ai_move (ai, 0, 2)); 31049 assert_true (ai_move (ai, 0, 0)); 31050 assert_true (ai_move (ai, 7, 0)); 31051 assert_true (ai_move (ai, 1, 1)); 31052 assert_true (ai_move (ai, 7, 7)); 31053 assert_true (ai_move (ai, 6, 6)); 31054 assert_true (ai_move (ai, 5, 7)); 31055 assert_true (ai_move (ai, 3, 7)); 31056 assert_true (ai_move (ai, 1, 6)); 31057 assert_true (ai_move (ai, 1, 7)); 31058 assert_true (ai_move (ai, 0, 7)); 31059 } 31060 31061 private static inline void test_complete_reversi_game_400 () 31062 { 31063 /* 0 1 2 3 4 5 6 7 */ 31064 string [] board = {/* 0 */ " . . . . . . . .", 31065 /* 1 */ " . . . . . D . .", 31066 /* 2 */ " . . L . D . . .", 31067 /* 3 */ " . . . L L . . .", 31068 /* 4 */ " . . . D L . . .", 31069 /* 5 */ " . . . D . . . .", 31070 /* 6 */ " . . . . . . . .", 31071 /* 7 */ " . . . . . . . ."}; 31072 31073 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 31074 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 31075 31076 assert_true (ai_move (ai, 5, 2)); 31077 assert_true (ai_move (ai, 2, 6)); 31078 assert_true (ai_move (ai, 3, 6)); 31079 assert_true (ai_move (ai, 5, 3)); 31080 assert_true (ai_move (ai, 6, 4)); 31081 assert_true (ai_move (ai, 4, 1)); 31082 assert_true (ai_move (ai, 3, 0)); 31083 assert_true (ai_move (ai, 6, 3)); 31084 assert_true (ai_move (ai, 3, 1)); 31085 assert_true (ai_move (ai, 6, 2)); 31086 assert_true (ai_move (ai, 7, 3)); 31087 assert_true (ai_move (ai, 7, 5)); 31088 assert_true (ai_move (ai, 1, 3)); 31089 assert_true (ai_move (ai, 5, 0)); 31090 assert_true (ai_move (ai, 4, 0)); 31091 assert_true (ai_move (ai, 3, 2)); 31092 assert_true (ai_move (ai, 6, 0)); 31093 assert_true (ai_move (ai, 1, 2)); 31094 assert_true (ai_move (ai, 0, 2)); 31095 assert_true (ai_move (ai, 2, 3)); 31096 assert_true (ai_move (ai, 1, 4)); 31097 assert_true (ai_move (ai, 2, 4)); 31098 assert_true (ai_move (ai, 1, 5)); 31099 assert_true (ai_move (ai, 3, 7)); 31100 assert_true (ai_move (ai, 4, 6)); 31101 assert_true (ai_move (ai, 5, 5)); 31102 assert_true (ai_move (ai, 5, 7)); 31103 assert_true (ai_move (ai, 5, 6)); 31104 assert_true (ai_move (ai, 7, 4)); 31105 assert_true (ai_move (ai, 7, 2)); 31106 assert_true (ai_move (ai, 6, 5)); 31107 assert_true (ai_move (ai, 5, 4)); 31108 assert_true (ai_move (ai, 4, 7)); 31109 assert_true (ai_move (ai, 6, 7)); 31110 assert_true (ai_move (ai, 2, 5)); 31111 assert_true (ai_move (ai, 2, 1)); 31112 assert_true (ai_move (ai, 4, 5)); 31113 assert_true (ai_move (ai, 7, 6)); 31114 assert_true (ai_move (ai, 2, 7)); 31115 assert_true (ai_move (ai, 1, 7)); 31116 assert_true (ai_move (ai, 1, 6)); 31117 assert_true (ai_move (ai, 2, 0)); 31118 assert_true (ai_move (ai, 1, 0)); 31119 assert_true (ai_move (ai, 0, 3)); 31120 assert_true (ai_move (ai, 1, 1)); 31121 assert_true (ai_move (ai, 7, 1)); 31122 assert_true (ai_move (ai, 0, 4)); 31123 assert_true (ai_move (ai, 0, 7)); 31124 assert_true (ai_move (ai, 0, 6)); 31125 assert_true (ai_move (ai, 0, 5)); 31126 assert_true (game.pass ()); 31127 assert_true (ai_move (ai, 6, 1)); 31128 assert_true (ai_move (ai, 6, 6)); 31129 assert_true (ai_move (ai, 7, 0)); 31130 assert_true (game.pass ()); 31131 assert_true (ai_move (ai, 0, 1)); 31132 assert_true (ai_move (ai, 0, 0)); 31133 } 31134 31135 private static inline void test_complete_reversi_game_401 () 31136 { 31137 /* 0 1 2 3 4 5 6 7 */ 31138 string [] board = {/* 0 */ " . . . . . . . .", 31139 /* 1 */ " . . . . . . . .", 31140 /* 2 */ " . . . . . . . .", 31141 /* 3 */ " . . . D D L . .", 31142 /* 4 */ " . . . D L . . .", 31143 /* 5 */ " . . . L . D . .", 31144 /* 6 */ " . . L . . . . .", 31145 /* 7 */ " . . . . . . . ."}; 31146 31147 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 31148 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 31149 31150 assert_true (ai_move (ai, 3, 6)); 31151 assert_true (ai_move (ai, 4, 6)); 31152 assert_true (ai_move (ai, 5, 7)); 31153 assert_true (ai_move (ai, 5, 6)); 31154 assert_true (ai_move (ai, 6, 3)); 31155 assert_true (ai_move (ai, 6, 4)); 31156 assert_true (ai_move (ai, 3, 7)); 31157 assert_true (ai_move (ai, 2, 2)); 31158 assert_true (ai_move (ai, 1, 5)); 31159 assert_true (ai_move (ai, 6, 2)); 31160 assert_true (ai_move (ai, 3, 2)); 31161 assert_true (ai_move (ai, 4, 2)); 31162 assert_true (ai_move (ai, 3, 1)); 31163 assert_true (ai_move (ai, 2, 1)); 31164 assert_true (ai_move (ai, 1, 3)); 31165 assert_true (ai_move (ai, 1, 2)); 31166 assert_true (ai_move (ai, 5, 1)); 31167 assert_true (ai_move (ai, 5, 2)); 31168 assert_true (ai_move (ai, 5, 4)); 31169 assert_true (ai_move (ai, 6, 5)); 31170 assert_true (ai_move (ai, 0, 2)); 31171 assert_true (ai_move (ai, 5, 0)); 31172 assert_true (ai_move (ai, 7, 2)); 31173 assert_true (ai_move (ai, 4, 5)); 31174 assert_true (ai_move (ai, 7, 5)); 31175 assert_true (ai_move (ai, 2, 7)); 31176 assert_true (ai_move (ai, 4, 7)); 31177 assert_true (ai_move (ai, 6, 7)); 31178 assert_true (ai_move (ai, 7, 4)); 31179 assert_true (ai_move (ai, 2, 5)); 31180 assert_true (ai_move (ai, 2, 0)); 31181 assert_true (ai_move (ai, 4, 1)); 31182 assert_true (ai_move (ai, 3, 0)); 31183 assert_true (ai_move (ai, 7, 3)); 31184 assert_true (ai_move (ai, 6, 6)); 31185 assert_true (ai_move (ai, 0, 5)); 31186 assert_true (ai_move (ai, 1, 6)); 31187 assert_true (ai_move (ai, 1, 4)); 31188 assert_true (ai_move (ai, 2, 4)); 31189 assert_true (ai_move (ai, 2, 3)); 31190 assert_true (ai_move (ai, 4, 0)); 31191 assert_true (ai_move (ai, 1, 0)); 31192 assert_true (ai_move (ai, 0, 6)); 31193 assert_true (ai_move (ai, 0, 7)); 31194 assert_true (ai_move (ai, 0, 4)); 31195 assert_true (ai_move (ai, 6, 1)); 31196 assert_true (ai_move (ai, 1, 1)); 31197 assert_true (ai_move (ai, 0, 3)); 31198 assert_true (ai_move (ai, 1, 7)); 31199 assert_true (ai_move (ai, 7, 1)); 31200 assert_true (ai_move (ai, 7, 7)); 31201 assert_true (ai_move (ai, 0, 1)); 31202 assert_true (ai_move (ai, 7, 0)); 31203 assert_true (ai_move (ai, 7, 6)); 31204 assert_true (ai_move (ai, 6, 0)); 31205 assert_true (game.pass ()); 31206 assert_true (ai_move (ai, 0, 0)); 31207 } 31208 31209 private static inline void test_complete_reversi_game_402 () 31210 { 31211 /* 0 1 2 3 4 5 6 7 */ 31212 string [] board = {/* 0 */ " . . . . . . . .", 31213 /* 1 */ " . . . . . . . .", 31214 /* 2 */ " . . . L . . . .", 31215 /* 3 */ " . . . L D . . .", 31216 /* 4 */ " . . . L D . . .", 31217 /* 5 */ " . . . L . D . .", 31218 /* 6 */ " . . L . . . . .", 31219 /* 7 */ " . . . . . . . ."}; 31220 31221 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 31222 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 31223 31224 assert_true (ai_move (ai, 2, 1)); 31225 assert_true (ai_move (ai, 3, 1)); 31226 assert_true (ai_move (ai, 4, 1)); 31227 assert_true (ai_move (ai, 3, 0)); 31228 assert_true (ai_move (ai, 2, 3)); 31229 assert_true (ai_move (ai, 1, 2)); 31230 assert_true (ai_move (ai, 1, 4)); 31231 assert_true (ai_move (ai, 5, 1)); 31232 assert_true (ai_move (ai, 5, 0)); 31233 assert_true (ai_move (ai, 5, 3)); 31234 assert_true (ai_move (ai, 6, 3)); 31235 assert_true (ai_move (ai, 6, 2)); 31236 assert_true (ai_move (ai, 5, 2)); 31237 assert_true (ai_move (ai, 7, 3)); 31238 assert_true (ai_move (ai, 7, 2)); 31239 assert_true (ai_move (ai, 4, 2)); 31240 assert_true (ai_move (ai, 6, 4)); 31241 assert_true (ai_move (ai, 7, 1)); 31242 assert_true (ai_move (ai, 5, 4)); 31243 assert_true (ai_move (ai, 4, 5)); 31244 assert_true (ai_move (ai, 6, 5)); 31245 assert_true (ai_move (ai, 7, 4)); 31246 assert_true (ai_move (ai, 7, 5)); 31247 assert_true (ai_move (ai, 7, 6)); 31248 assert_true (ai_move (ai, 2, 0)); 31249 assert_true (ai_move (ai, 1, 0)); 31250 assert_true (ai_move (ai, 5, 6)); 31251 assert_true (ai_move (ai, 4, 6)); 31252 assert_true (ai_move (ai, 4, 7)); 31253 assert_true (ai_move (ai, 3, 6)); 31254 assert_true (ai_move (ai, 2, 4)); 31255 assert_true (ai_move (ai, 2, 5)); 31256 assert_true (ai_move (ai, 3, 7)); 31257 assert_true (ai_move (ai, 2, 2)); 31258 assert_true (ai_move (ai, 1, 5)); 31259 assert_true (ai_move (ai, 0, 5)); 31260 assert_true (ai_move (ai, 1, 3)); 31261 assert_true (ai_move (ai, 0, 2)); 31262 assert_true (ai_move (ai, 0, 3)); 31263 assert_true (ai_move (ai, 0, 4)); 31264 assert_true (ai_move (ai, 6, 6)); 31265 assert_true (ai_move (ai, 2, 7)); 31266 assert_true (ai_move (ai, 1, 7)); 31267 assert_true (ai_move (ai, 6, 0)); 31268 assert_true (ai_move (ai, 7, 0)); 31269 assert_true (ai_move (ai, 7, 7)); 31270 assert_true (ai_move (ai, 6, 1)); 31271 assert_true (ai_move (ai, 1, 1)); 31272 assert_true (ai_move (ai, 0, 6)); 31273 assert_true (ai_move (ai, 5, 7)); 31274 assert_true (ai_move (ai, 1, 6)); 31275 assert_true (ai_move (ai, 0, 7)); 31276 assert_true (ai_move (ai, 6, 7)); 31277 assert_true (ai_move (ai, 4, 0)); 31278 assert_true (ai_move (ai, 0, 0)); 31279 assert_true (ai_move (ai, 0, 1)); 31280 } 31281 31282 private static inline void test_complete_reversi_game_403 () 31283 { 31284 /* 0 1 2 3 4 5 6 7 */ 31285 string [] board = {/* 0 */ " . . . . . . . .", 31286 /* 1 */ " . . . . . . . .", 31287 /* 2 */ " . . . . . . . .", 31288 /* 3 */ " . . . D D L . .", 31289 /* 4 */ " . . . D L D . .", 31290 /* 5 */ " . . . L . . . .", 31291 /* 6 */ " . . L . . . . .", 31292 /* 7 */ " . . . . . . . ."}; 31293 31294 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 31295 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 31296 31297 assert_true (ai_move (ai, 5, 2)); 31298 assert_true (ai_move (ai, 6, 2)); 31299 assert_true (ai_move (ai, 6, 3)); 31300 assert_true (ai_move (ai, 4, 2)); 31301 assert_true (ai_move (ai, 4, 1)); 31302 assert_true (ai_move (ai, 6, 5)); 31303 assert_true (ai_move (ai, 5, 1)); 31304 assert_true (ai_move (ai, 7, 2)); 31305 assert_true (ai_move (ai, 5, 5)); 31306 assert_true (ai_move (ai, 3, 0)); 31307 assert_true (ai_move (ai, 7, 5)); 31308 assert_true (ai_move (ai, 5, 0)); 31309 assert_true (ai_move (ai, 7, 3)); 31310 assert_true (ai_move (ai, 2, 5)); 31311 assert_true (ai_move (ai, 3, 2)); 31312 assert_true (ai_move (ai, 2, 2)); 31313 assert_true (ai_move (ai, 2, 1)); 31314 assert_true (ai_move (ai, 2, 3)); 31315 assert_true (ai_move (ai, 1, 3)); 31316 assert_true (ai_move (ai, 5, 6)); 31317 assert_true (ai_move (ai, 3, 1)); 31318 assert_true (ai_move (ai, 2, 0)); 31319 assert_true (ai_move (ai, 6, 4)); 31320 assert_true (ai_move (ai, 1, 4)); 31321 assert_true (ai_move (ai, 4, 5)); 31322 assert_true (ai_move (ai, 3, 6)); 31323 assert_true (ai_move (ai, 4, 6)); 31324 assert_true (ai_move (ai, 2, 4)); 31325 assert_true (ai_move (ai, 1, 2)); 31326 assert_true (ai_move (ai, 5, 7)); 31327 assert_true (ai_move (ai, 1, 5)); 31328 assert_true (ai_move (ai, 0, 2)); 31329 assert_true (ai_move (ai, 0, 3)); 31330 assert_true (ai_move (ai, 0, 4)); 31331 assert_true (ai_move (ai, 1, 1)); 31332 assert_true (ai_move (ai, 7, 4)); 31333 assert_true (ai_move (ai, 7, 1)); 31334 assert_true (ai_move (ai, 0, 1)); 31335 assert_true (ai_move (ai, 7, 6)); 31336 assert_true (ai_move (ai, 6, 6)); 31337 assert_true (ai_move (ai, 3, 7)); 31338 assert_true (ai_move (ai, 4, 7)); 31339 assert_true (ai_move (ai, 2, 7)); 31340 assert_true (ai_move (ai, 1, 7)); 31341 assert_true (ai_move (ai, 4, 0)); 31342 assert_true (ai_move (ai, 6, 0)); 31343 assert_true (ai_move (ai, 7, 0)); 31344 assert_true (ai_move (ai, 6, 1)); 31345 assert_true (ai_move (ai, 1, 0)); 31346 assert_true (game.pass ()); 31347 assert_true (ai_move (ai, 0, 5)); 31348 assert_true (ai_move (ai, 0, 6)); 31349 assert_true (ai_move (ai, 0, 0)); 31350 assert_true (ai_move (ai, 1, 6)); 31351 assert_true (ai_move (ai, 0, 7)); 31352 assert_true (game.pass ()); 31353 assert_true (ai_move (ai, 6, 7)); 31354 } 31355 31356 private static inline void test_complete_reversi_game_404 () 31357 { 31358 /* 0 1 2 3 4 5 6 7 */ 31359 string [] board = {/* 0 */ " . . . . . . . .", 31360 /* 1 */ " . . . . . . . .", 31361 /* 2 */ " . . . L . . . .", 31362 /* 3 */ " . . . L D . . .", 31363 /* 4 */ " . . . L D D . .", 31364 /* 5 */ " . . . L . . . .", 31365 /* 6 */ " . . L . . . . .", 31366 /* 7 */ " . . . . . . . ."}; 31367 31368 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 31369 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 31370 31371 assert_true (ai_move (ai, 2, 1)); 31372 assert_true (ai_move (ai, 3, 1)); 31373 assert_true (ai_move (ai, 4, 1)); 31374 assert_true (ai_move (ai, 3, 0)); 31375 assert_true (ai_move (ai, 2, 3)); 31376 assert_true (ai_move (ai, 1, 2)); 31377 assert_true (ai_move (ai, 1, 4)); 31378 assert_true (ai_move (ai, 5, 1)); 31379 assert_true (ai_move (ai, 5, 0)); 31380 assert_true (ai_move (ai, 5, 3)); 31381 assert_true (ai_move (ai, 6, 3)); 31382 assert_true (ai_move (ai, 6, 2)); 31383 assert_true (ai_move (ai, 5, 5)); 31384 assert_true (ai_move (ai, 5, 6)); 31385 assert_true (ai_move (ai, 6, 4)); 31386 assert_true (ai_move (ai, 7, 5)); 31387 assert_true (ai_move (ai, 6, 5)); 31388 assert_true (ai_move (ai, 5, 2)); 31389 assert_true (ai_move (ai, 4, 6)); 31390 assert_true (ai_move (ai, 7, 3)); 31391 assert_true (ai_move (ai, 7, 2)); 31392 assert_true (ai_move (ai, 7, 4)); 31393 assert_true (ai_move (ai, 7, 6)); 31394 assert_true (ai_move (ai, 4, 5)); 31395 assert_true (ai_move (ai, 4, 2)); 31396 assert_true (ai_move (ai, 5, 7)); 31397 assert_true (ai_move (ai, 2, 4)); 31398 assert_true (ai_move (ai, 1, 5)); 31399 assert_true (ai_move (ai, 2, 2)); 31400 assert_true (ai_move (ai, 0, 5)); 31401 assert_true (ai_move (ai, 2, 0)); 31402 assert_true (ai_move (ai, 1, 0)); 31403 assert_true (ai_move (ai, 1, 3)); 31404 assert_true (ai_move (ai, 0, 2)); 31405 assert_true (ai_move (ai, 2, 5)); 31406 assert_true (ai_move (ai, 3, 6)); 31407 assert_true (ai_move (ai, 2, 7)); 31408 assert_true (ai_move (ai, 4, 7)); 31409 assert_true (ai_move (ai, 1, 6)); 31410 assert_true (ai_move (ai, 3, 7)); 31411 assert_true (ai_move (ai, 6, 7)); 31412 assert_true (ai_move (ai, 1, 1)); 31413 assert_true (ai_move (ai, 1, 7)); 31414 assert_true (ai_move (ai, 4, 0)); 31415 assert_true (ai_move (ai, 0, 0)); 31416 assert_true (ai_move (ai, 0, 1)); 31417 assert_true (ai_move (ai, 6, 0)); 31418 assert_true (ai_move (ai, 6, 1)); 31419 assert_true (ai_move (ai, 7, 0)); 31420 assert_true (ai_move (ai, 7, 1)); 31421 assert_true (ai_move (ai, 0, 3)); 31422 assert_true (ai_move (ai, 7, 7)); 31423 assert_true (ai_move (ai, 0, 4)); 31424 assert_true (ai_move (ai, 0, 7)); 31425 assert_true (ai_move (ai, 0, 6)); 31426 assert_true (ai_move (ai, 6, 6)); 31427 } 31428 31429 private static inline void test_complete_reversi_game_405 () 31430 { 31431 /* 0 1 2 3 4 5 6 7 */ 31432 string [] board = {/* 0 */ " . . . . . . . .", 31433 /* 1 */ " . . . . . . . .", 31434 /* 2 */ " . . . . . . . .", 31435 /* 3 */ " . . . D D . . .", 31436 /* 4 */ " . . . D D . . .", 31437 /* 5 */ " . . . L L L . .", 31438 /* 6 */ " . . L . . . . .", 31439 /* 7 */ " . . . . . . . ."}; 31440 31441 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 31442 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 31443 31444 assert_true (ai_move (ai, 4, 6)); 31445 assert_true (ai_move (ai, 3, 7)); 31446 assert_true (ai_move (ai, 6, 5)); 31447 assert_true (ai_move (ai, 6, 4)); 31448 assert_true (ai_move (ai, 2, 5)); 31449 assert_true (ai_move (ai, 1, 5)); 31450 assert_true (ai_move (ai, 5, 6)); 31451 assert_true (ai_move (ai, 5, 7)); 31452 assert_true (ai_move (ai, 6, 3)); 31453 assert_true (ai_move (ai, 7, 5)); 31454 assert_true (ai_move (ai, 4, 7)); 31455 assert_true (ai_move (ai, 3, 6)); 31456 assert_true (ai_move (ai, 0, 5)); 31457 assert_true (ai_move (ai, 2, 4)); 31458 assert_true (ai_move (ai, 1, 4)); 31459 assert_true (ai_move (ai, 0, 4)); 31460 assert_true (ai_move (ai, 0, 3)); 31461 assert_true (ai_move (ai, 7, 3)); 31462 assert_true (ai_move (ai, 1, 7)); 31463 assert_true (ai_move (ai, 1, 3)); 31464 assert_true (ai_move (ai, 2, 3)); 31465 assert_true (ai_move (ai, 0, 2)); 31466 assert_true (ai_move (ai, 0, 1)); 31467 assert_true (ai_move (ai, 2, 7)); 31468 assert_true (ai_move (ai, 0, 6)); 31469 assert_true (ai_move (ai, 5, 4)); 31470 assert_true (ai_move (ai, 1, 6)); 31471 assert_true (ai_move (ai, 2, 2)); 31472 assert_true (ai_move (ai, 1, 2)); 31473 assert_true (ai_move (ai, 7, 2)); 31474 assert_true (ai_move (ai, 2, 1)); 31475 assert_true (ai_move (ai, 2, 0)); 31476 assert_true (ai_move (ai, 3, 1)); 31477 assert_true (ai_move (ai, 5, 3)); 31478 assert_true (ai_move (ai, 6, 2)); 31479 assert_true (ai_move (ai, 5, 2)); 31480 assert_true (ai_move (ai, 3, 0)); 31481 assert_true (ai_move (ai, 4, 0)); 31482 assert_true (ai_move (ai, 3, 2)); 31483 assert_true (ai_move (ai, 4, 2)); 31484 assert_true (ai_move (ai, 5, 1)); 31485 assert_true (ai_move (ai, 4, 1)); 31486 assert_true (ai_move (ai, 6, 6)); 31487 assert_true (ai_move (ai, 5, 0)); 31488 assert_true (ai_move (ai, 7, 4)); 31489 assert_true (ai_move (ai, 1, 0)); 31490 assert_true (ai_move (ai, 6, 1)); 31491 assert_true (ai_move (ai, 7, 6)); 31492 assert_true (ai_move (ai, 6, 0)); 31493 assert_true (ai_move (ai, 7, 0)); 31494 assert_true (ai_move (ai, 7, 1)); 31495 assert_true (ai_move (ai, 6, 7)); 31496 assert_true (ai_move (ai, 7, 7)); 31497 assert_true (ai_move (ai, 0, 7)); 31498 assert_true (ai_move (ai, 1, 1)); 31499 assert_true (ai_move (ai, 0, 0)); 31500 } 31501 31502 private static inline void test_complete_reversi_game_406 () 31503 { 31504 /* 0 1 2 3 4 5 6 7 */ 31505 string [] board = {/* 0 */ " . . . . . . . .", 31506 /* 1 */ " . . . . . . . .", 31507 /* 2 */ " . . . . . . . .", 31508 /* 3 */ " . . . D D L . .", 31509 /* 4 */ " . . . D L . . .", 31510 /* 5 */ " . . . L D . . .", 31511 /* 6 */ " . . L . . . . .", 31512 /* 7 */ " . . . . . . . ."}; 31513 31514 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 31515 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 31516 31517 assert_true (ai_move (ai, 3, 6)); 31518 assert_true (ai_move (ai, 2, 2)); 31519 assert_true (ai_move (ai, 6, 3)); 31520 assert_true (ai_move (ai, 6, 2)); 31521 assert_true (ai_move (ai, 5, 4)); 31522 assert_true (ai_move (ai, 5, 5)); 31523 assert_true (ai_move (ai, 6, 5)); 31524 assert_true (ai_move (ai, 5, 6)); 31525 assert_true (ai_move (ai, 6, 4)); 31526 assert_true (ai_move (ai, 2, 5)); 31527 assert_true (ai_move (ai, 4, 6)); 31528 assert_true (ai_move (ai, 7, 5)); 31529 assert_true (ai_move (ai, 2, 4)); 31530 assert_true (ai_move (ai, 7, 2)); 31531 assert_true (ai_move (ai, 1, 5)); 31532 assert_true (ai_move (ai, 0, 5)); 31533 assert_true (ai_move (ai, 1, 4)); 31534 assert_true (ai_move (ai, 4, 7)); 31535 assert_true (ai_move (ai, 5, 7)); 31536 assert_true (ai_move (ai, 6, 7)); 31537 assert_true (ai_move (ai, 2, 7)); 31538 assert_true (ai_move (ai, 3, 2)); 31539 assert_true (ai_move (ai, 0, 4)); 31540 assert_true (ai_move (ai, 1, 3)); 31541 assert_true (ai_move (ai, 2, 3)); 31542 assert_true (ai_move (ai, 1, 2)); 31543 assert_true (ai_move (ai, 2, 1)); 31544 assert_true (ai_move (ai, 3, 1)); 31545 assert_true (ai_move (ai, 7, 4)); 31546 assert_true (ai_move (ai, 7, 3)); 31547 assert_true (ai_move (ai, 0, 2)); 31548 assert_true (ai_move (ai, 2, 0)); 31549 assert_true (ai_move (ai, 4, 1)); 31550 assert_true (ai_move (ai, 4, 2)); 31551 assert_true (ai_move (ai, 3, 0)); 31552 assert_true (ai_move (ai, 4, 0)); 31553 assert_true (ai_move (ai, 5, 0)); 31554 assert_true (ai_move (ai, 6, 0)); 31555 assert_true (ai_move (ai, 5, 2)); 31556 assert_true (ai_move (ai, 5, 1)); 31557 assert_true (ai_move (ai, 0, 6)); 31558 assert_true (ai_move (ai, 0, 3)); 31559 assert_true (ai_move (ai, 1, 6)); 31560 assert_true (ai_move (ai, 0, 7)); 31561 assert_true (ai_move (ai, 1, 1)); 31562 assert_true (ai_move (ai, 1, 7)); 31563 assert_true (ai_move (ai, 3, 7)); 31564 assert_true (ai_move (ai, 0, 0)); 31565 assert_true (ai_move (ai, 7, 7)); 31566 assert_true (ai_move (ai, 0, 1)); 31567 assert_true (ai_move (ai, 7, 6)); 31568 assert_true (ai_move (ai, 6, 6)); 31569 assert_true (ai_move (ai, 7, 1)); 31570 assert_true (ai_move (ai, 6, 1)); 31571 assert_true (ai_move (ai, 7, 0)); 31572 assert_true (game.pass ()); 31573 assert_true (ai_move (ai, 1, 0)); 31574 } 31575 31576 private static inline void test_complete_reversi_game_407 () 31577 { 31578 /* 0 1 2 3 4 5 6 7 */ 31579 string [] board = {/* 0 */ " . . . . . . . .", 31580 /* 1 */ " . . . . . . . .", 31581 /* 2 */ " . . . L . . . .", 31582 /* 3 */ " . . . L D . . .", 31583 /* 4 */ " . . . L D . . .", 31584 /* 5 */ " . . . L D . . .", 31585 /* 6 */ " . . L . . . . .", 31586 /* 7 */ " . . . . . . . ."}; 31587 31588 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 31589 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 31590 31591 assert_true (ai_move (ai, 2, 1)); 31592 assert_true (ai_move (ai, 5, 6)); 31593 assert_true (ai_move (ai, 4, 6)); 31594 assert_true (ai_move (ai, 3, 1)); 31595 assert_true (ai_move (ai, 4, 1)); 31596 assert_true (ai_move (ai, 3, 0)); 31597 assert_true (ai_move (ai, 2, 4)); 31598 assert_true (ai_move (ai, 1, 5)); 31599 assert_true (ai_move (ai, 1, 3)); 31600 assert_true (ai_move (ai, 1, 2)); 31601 assert_true (ai_move (ai, 4, 2)); 31602 assert_true (ai_move (ai, 5, 2)); 31603 assert_true (ai_move (ai, 5, 1)); 31604 assert_true (ai_move (ai, 5, 0)); 31605 assert_true (ai_move (ai, 4, 0)); 31606 assert_true (ai_move (ai, 1, 4)); 31607 assert_true (ai_move (ai, 6, 3)); 31608 assert_true (ai_move (ai, 6, 2)); 31609 assert_true (ai_move (ai, 0, 2)); 31610 assert_true (ai_move (ai, 5, 3)); 31611 assert_true (ai_move (ai, 3, 6)); 31612 assert_true (ai_move (ai, 2, 2)); 31613 assert_true (ai_move (ai, 7, 2)); 31614 assert_true (ai_move (ai, 0, 4)); 31615 assert_true (ai_move (ai, 6, 4)); 31616 assert_true (ai_move (ai, 5, 4)); 31617 assert_true (ai_move (ai, 2, 3)); 31618 assert_true (ai_move (ai, 7, 5)); 31619 assert_true (ai_move (ai, 0, 3)); 31620 assert_true (ai_move (ai, 2, 5)); 31621 assert_true (ai_move (ai, 0, 5)); 31622 assert_true (ai_move (ai, 1, 6)); 31623 assert_true (ai_move (ai, 6, 5)); 31624 assert_true (ai_move (ai, 5, 5)); 31625 assert_true (ai_move (ai, 3, 7)); 31626 assert_true (ai_move (ai, 5, 7)); 31627 assert_true (ai_move (ai, 4, 7)); 31628 assert_true (ai_move (ai, 2, 7)); 31629 assert_true (ai_move (ai, 0, 7)); 31630 assert_true (ai_move (ai, 7, 4)); 31631 assert_true (ai_move (ai, 7, 3)); 31632 assert_true (ai_move (ai, 7, 1)); 31633 assert_true (ai_move (ai, 2, 0)); 31634 assert_true (ai_move (ai, 1, 0)); 31635 assert_true (ai_move (ai, 1, 7)); 31636 assert_true (ai_move (ai, 0, 6)); 31637 assert_true (ai_move (ai, 6, 7)); 31638 assert_true (ai_move (ai, 1, 1)); 31639 assert_true (ai_move (ai, 0, 0)); 31640 assert_true (ai_move (ai, 0, 1)); 31641 assert_true (ai_move (ai, 6, 0)); 31642 assert_true (ai_move (ai, 6, 6)); 31643 assert_true (ai_move (ai, 7, 7)); 31644 assert_true (ai_move (ai, 6, 1)); 31645 assert_true (ai_move (ai, 7, 0)); 31646 assert_true (ai_move (ai, 7, 6)); 31647 } 31648 31649 private static inline void test_complete_reversi_game_408 () 31650 { 31651 /* 0 1 2 3 4 5 6 7 */ 31652 string [] board = {/* 0 */ " . . . . . . . .", 31653 /* 1 */ " . . . . . . . .", 31654 /* 2 */ " . . . . . . . .", 31655 /* 3 */ " . . . D D . . .", 31656 /* 4 */ " . . . D L . . .", 31657 /* 5 */ " . . . D . . . .", 31658 /* 6 */ " . . L L L . . .", 31659 /* 7 */ " . . . . . . . ."}; 31660 31661 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 31662 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 31663 31664 assert_true (ai_move (ai, 5, 7)); 31665 assert_true (ai_move (ai, 5, 6)); 31666 assert_true (ai_move (ai, 3, 7)); 31667 assert_true (ai_move (ai, 2, 2)); 31668 assert_true (ai_move (ai, 1, 5)); 31669 assert_true (ai_move (ai, 5, 3)); 31670 assert_true (ai_move (ai, 5, 5)); 31671 assert_true (ai_move (ai, 2, 4)); 31672 assert_true (ai_move (ai, 1, 3)); 31673 assert_true (ai_move (ai, 1, 4)); 31674 assert_true (ai_move (ai, 3, 1)); 31675 assert_true (ai_move (ai, 0, 2)); 31676 assert_true (ai_move (ai, 0, 4)); 31677 assert_true (ai_move (ai, 1, 2)); 31678 assert_true (ai_move (ai, 4, 2)); 31679 assert_true (ai_move (ai, 4, 1)); 31680 assert_true (ai_move (ai, 6, 4)); 31681 assert_true (ai_move (ai, 6, 2)); 31682 assert_true (ai_move (ai, 4, 0)); 31683 assert_true (ai_move (ai, 2, 3)); 31684 assert_true (ai_move (ai, 3, 2)); 31685 assert_true (ai_move (ai, 2, 1)); 31686 assert_true (ai_move (ai, 2, 0)); 31687 assert_true (ai_move (ai, 5, 2)); 31688 assert_true (ai_move (ai, 5, 1)); 31689 assert_true (ai_move (ai, 7, 5)); 31690 assert_true (ai_move (ai, 7, 2)); 31691 assert_true (ai_move (ai, 5, 0)); 31692 assert_true (ai_move (ai, 0, 5)); 31693 assert_true (ai_move (ai, 7, 3)); 31694 assert_true (ai_move (ai, 7, 4)); 31695 assert_true (ai_move (ai, 7, 1)); 31696 assert_true (ai_move (ai, 0, 3)); 31697 assert_true (ai_move (ai, 0, 6)); 31698 assert_true (ai_move (ai, 2, 5)); 31699 assert_true (ai_move (ai, 4, 5)); 31700 assert_true (ai_move (ai, 5, 4)); 31701 assert_true (ai_move (ai, 6, 5)); 31702 assert_true (ai_move (ai, 6, 3)); 31703 assert_true (ai_move (ai, 3, 0)); 31704 assert_true (ai_move (ai, 6, 0)); 31705 assert_true (ai_move (ai, 1, 1)); 31706 assert_true (ai_move (ai, 1, 6)); 31707 assert_true (ai_move (ai, 0, 7)); 31708 assert_true (ai_move (ai, 1, 7)); 31709 assert_true (ai_move (ai, 2, 7)); 31710 assert_true (ai_move (ai, 4, 7)); 31711 assert_true (ai_move (ai, 6, 7)); 31712 assert_true (ai_move (ai, 1, 0)); 31713 assert_true (ai_move (ai, 0, 1)); 31714 assert_true (ai_move (ai, 6, 1)); 31715 assert_true (ai_move (ai, 7, 0)); 31716 assert_true (ai_move (ai, 7, 6)); 31717 assert_true (ai_move (ai, 0, 0)); 31718 assert_true (ai_move (ai, 6, 6)); 31719 assert_true (ai_move (ai, 7, 7)); 31720 } 31721 31722 private static inline void test_complete_reversi_game_409 () 31723 { 31724 /* 0 1 2 3 4 5 6 7 */ 31725 string [] board = {/* 0 */ " . . . . . . . .", 31726 /* 1 */ " . . . . . . . .", 31727 /* 2 */ " . . . . L . . .", 31728 /* 3 */ " . . . D L . . .", 31729 /* 4 */ " . . . D L . . .", 31730 /* 5 */ " . . . D . . . .", 31731 /* 6 */ " . . L D . . . .", 31732 /* 7 */ " . . . . . . . ."}; 31733 31734 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 31735 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 31736 31737 assert_true (ai_move (ai, 5, 1)); 31738 assert_true (ai_move (ai, 4, 1)); 31739 assert_true (ai_move (ai, 5, 5)); 31740 assert_true (ai_move (ai, 2, 4)); 31741 assert_true (ai_move (ai, 1, 3)); 31742 assert_true (ai_move (ai, 1, 5)); 31743 assert_true (ai_move (ai, 1, 4)); 31744 assert_true (ai_move (ai, 4, 6)); 31745 assert_true (ai_move (ai, 5, 7)); 31746 assert_true (ai_move (ai, 5, 6)); 31747 assert_true (ai_move (ai, 2, 2)); 31748 assert_true (ai_move (ai, 5, 4)); 31749 assert_true (ai_move (ai, 6, 4)); 31750 assert_true (ai_move (ai, 6, 5)); 31751 assert_true (ai_move (ai, 5, 2)); 31752 assert_true (ai_move (ai, 6, 2)); 31753 assert_true (ai_move (ai, 5, 3)); 31754 assert_true (ai_move (ai, 6, 3)); 31755 assert_true (ai_move (ai, 7, 2)); 31756 assert_true (ai_move (ai, 7, 4)); 31757 assert_true (ai_move (ai, 3, 2)); 31758 assert_true (ai_move (ai, 4, 7)); 31759 assert_true (ai_move (ai, 7, 3)); 31760 assert_true (ai_move (ai, 5, 0)); 31761 assert_true (ai_move (ai, 7, 5)); 31762 assert_true (ai_move (ai, 4, 5)); 31763 assert_true (ai_move (ai, 3, 1)); 31764 assert_true (ai_move (ai, 6, 7)); 31765 assert_true (ai_move (ai, 2, 7)); 31766 assert_true (ai_move (ai, 2, 1)); 31767 assert_true (ai_move (ai, 2, 5)); 31768 assert_true (ai_move (ai, 0, 2)); 31769 assert_true (ai_move (ai, 2, 3)); 31770 assert_true (ai_move (ai, 1, 2)); 31771 assert_true (ai_move (ai, 0, 3)); 31772 assert_true (ai_move (ai, 0, 5)); 31773 assert_true (ai_move (ai, 0, 4)); 31774 assert_true (ai_move (ai, 6, 1)); 31775 assert_true (ai_move (ai, 3, 0)); 31776 assert_true (ai_move (ai, 2, 0)); 31777 assert_true (ai_move (ai, 4, 0)); 31778 assert_true (ai_move (ai, 6, 0)); 31779 assert_true (ai_move (ai, 7, 6)); 31780 assert_true (ai_move (ai, 1, 1)); 31781 assert_true (ai_move (ai, 3, 7)); 31782 assert_true (ai_move (ai, 1, 7)); 31783 assert_true (ai_move (ai, 0, 0)); 31784 assert_true (ai_move (ai, 0, 1)); 31785 assert_true (ai_move (ai, 1, 0)); 31786 assert_true (ai_move (ai, 1, 6)); 31787 assert_true (ai_move (ai, 6, 6)); 31788 assert_true (ai_move (ai, 0, 6)); 31789 assert_true (ai_move (ai, 0, 7)); 31790 assert_true (ai_move (ai, 7, 7)); 31791 assert_true (ai_move (ai, 7, 0)); 31792 assert_true (ai_move (ai, 7, 1)); 31793 } 31794 31795 private static inline void test_complete_reversi_game_410 () 31796 { 31797 /* 0 1 2 3 4 5 6 7 */ 31798 string [] board = {/* 0 */ " . . . . . . . .", 31799 /* 1 */ " . . . . . . . .", 31800 /* 2 */ " . . . . . . . .", 31801 /* 3 */ " . . . D D . . .", 31802 /* 4 */ " . . L L L . . .", 31803 /* 5 */ " . . . D . . . .", 31804 /* 6 */ " . . L D . . . .", 31805 /* 7 */ " . . . . . . . ."}; 31806 31807 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 31808 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 31809 31810 assert_true (ai_move (ai, 1, 3)); 31811 assert_true (ai_move (ai, 1, 4)); 31812 assert_true (ai_move (ai, 5, 5)); 31813 assert_true (ai_move (ai, 5, 2)); 31814 assert_true (ai_move (ai, 1, 5)); 31815 assert_true (ai_move (ai, 4, 6)); 31816 assert_true (ai_move (ai, 5, 7)); 31817 assert_true (ai_move (ai, 5, 3)); 31818 assert_true (ai_move (ai, 6, 3)); 31819 assert_true (ai_move (ai, 6, 2)); 31820 assert_true (ai_move (ai, 4, 1)); 31821 assert_true (ai_move (ai, 5, 1)); 31822 assert_true (ai_move (ai, 4, 5)); 31823 assert_true (ai_move (ai, 6, 5)); 31824 assert_true (ai_move (ai, 6, 4)); 31825 assert_true (ai_move (ai, 7, 5)); 31826 assert_true (ai_move (ai, 7, 3)); 31827 assert_true (ai_move (ai, 7, 4)); 31828 assert_true (ai_move (ai, 7, 6)); 31829 assert_true (ai_move (ai, 5, 4)); 31830 assert_true (ai_move (ai, 5, 0)); 31831 assert_true (ai_move (ai, 5, 6)); 31832 assert_true (ai_move (ai, 7, 2)); 31833 assert_true (ai_move (ai, 4, 2)); 31834 assert_true (ai_move (ai, 3, 1)); 31835 assert_true (ai_move (ai, 4, 0)); 31836 assert_true (ai_move (ai, 3, 0)); 31837 assert_true (ai_move (ai, 3, 2)); 31838 assert_true (ai_move (ai, 2, 7)); 31839 assert_true (ai_move (ai, 0, 2)); 31840 assert_true (ai_move (ai, 2, 2)); 31841 assert_true (ai_move (ai, 2, 3)); 31842 assert_true (ai_move (ai, 0, 4)); 31843 assert_true (ai_move (ai, 2, 1)); 31844 assert_true (ai_move (ai, 4, 7)); 31845 assert_true (ai_move (ai, 3, 7)); 31846 assert_true (ai_move (ai, 1, 2)); 31847 assert_true (ai_move (ai, 2, 5)); 31848 assert_true (ai_move (ai, 1, 7)); 31849 assert_true (ai_move (ai, 6, 1)); 31850 assert_true (ai_move (ai, 7, 1)); 31851 assert_true (ai_move (ai, 7, 0)); 31852 assert_true (ai_move (ai, 6, 0)); 31853 assert_true (ai_move (ai, 7, 7)); 31854 assert_true (ai_move (ai, 1, 6)); 31855 assert_true (ai_move (ai, 2, 0)); 31856 assert_true (ai_move (ai, 1, 0)); 31857 assert_true (ai_move (ai, 6, 7)); 31858 assert_true (ai_move (ai, 1, 1)); 31859 assert_true (ai_move (ai, 6, 6)); 31860 assert_true (game.pass ()); 31861 assert_true (ai_move (ai, 0, 0)); 31862 assert_true (ai_move (ai, 0, 1)); 31863 assert_true (ai_move (ai, 0, 3)); 31864 assert_true (ai_move (ai, 0, 5)); 31865 assert_true (ai_move (ai, 0, 7)); 31866 assert_true (ai_move (ai, 0, 6)); 31867 } 31868 31869 private static inline void test_complete_reversi_game_411 () 31870 { 31871 /* 0 1 2 3 4 5 6 7 */ 31872 string [] board = {/* 0 */ " . . . . . . . .", 31873 /* 1 */ " . . . . . . . .", 31874 /* 2 */ " . . L . . . . .", 31875 /* 3 */ " . . . L D . . .", 31876 /* 4 */ " . . . D L . . .", 31877 /* 5 */ " . . . D . . . .", 31878 /* 6 */ " . . L D . . . .", 31879 /* 7 */ " . . . . . . . ."}; 31880 31881 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 31882 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 31883 31884 assert_true (ai_move (ai, 2, 3)); 31885 assert_true (ai_move (ai, 4, 6)); 31886 assert_true (ai_move (ai, 2, 1)); 31887 assert_true (ai_move (ai, 4, 2)); 31888 assert_true (ai_move (ai, 5, 1)); 31889 assert_true (ai_move (ai, 4, 1)); 31890 assert_true (ai_move (ai, 3, 7)); 31891 assert_true (ai_move (ai, 2, 5)); 31892 assert_true (ai_move (ai, 1, 4)); 31893 assert_true (ai_move (ai, 1, 2)); 31894 assert_true (ai_move (ai, 3, 2)); 31895 assert_true (ai_move (ai, 3, 0)); 31896 assert_true (ai_move (ai, 2, 7)); 31897 assert_true (ai_move (ai, 3, 1)); 31898 assert_true (ai_move (ai, 5, 0)); 31899 assert_true (ai_move (ai, 2, 4)); 31900 assert_true (ai_move (ai, 0, 2)); 31901 assert_true (ai_move (ai, 1, 5)); 31902 assert_true (ai_move (ai, 5, 2)); 31903 assert_true (ai_move (ai, 5, 3)); 31904 assert_true (ai_move (ai, 4, 0)); 31905 assert_true (ai_move (ai, 6, 2)); 31906 assert_true (ai_move (ai, 2, 0)); 31907 assert_true (ai_move (ai, 1, 3)); 31908 assert_true (ai_move (ai, 7, 2)); 31909 assert_true (ai_move (ai, 4, 7)); 31910 assert_true (ai_move (ai, 0, 5)); 31911 assert_true (ai_move (ai, 6, 1)); 31912 assert_true (ai_move (ai, 6, 3)); 31913 assert_true (ai_move (ai, 6, 0)); 31914 assert_true (ai_move (ai, 7, 0)); 31915 assert_true (ai_move (ai, 5, 4)); 31916 assert_true (ai_move (ai, 0, 3)); 31917 assert_true (ai_move (ai, 1, 7)); 31918 assert_true (ai_move (ai, 5, 5)); 31919 assert_true (ai_move (ai, 0, 4)); 31920 assert_true (ai_move (ai, 4, 5)); 31921 assert_true (ai_move (ai, 6, 4)); 31922 assert_true (ai_move (ai, 5, 6)); 31923 assert_true (ai_move (ai, 6, 5)); 31924 assert_true (ai_move (ai, 7, 4)); 31925 assert_true (ai_move (ai, 7, 3)); 31926 assert_true (ai_move (ai, 7, 5)); 31927 assert_true (ai_move (ai, 7, 1)); 31928 assert_true (ai_move (ai, 5, 7)); 31929 assert_true (ai_move (ai, 6, 7)); 31930 assert_true (ai_move (ai, 6, 6)); 31931 assert_true (ai_move (ai, 7, 7)); 31932 assert_true (ai_move (ai, 7, 6)); 31933 assert_true (ai_move (ai, 1, 6)); 31934 assert_true (ai_move (ai, 0, 7)); 31935 assert_true (ai_move (ai, 0, 6)); 31936 assert_true (game.pass ()); 31937 assert_true (ai_move (ai, 1, 1)); 31938 assert_true (ai_move (ai, 0, 0)); 31939 assert_true (ai_move (ai, 0, 1)); 31940 assert_true (ai_move (ai, 1, 0)); 31941 } 31942 31943 private static inline void test_complete_reversi_game_412 () 31944 { 31945 /* 0 1 2 3 4 5 6 7 */ 31946 string [] board = {/* 0 */ " . . . . . . . .", 31947 /* 1 */ " . . . . . . . .", 31948 /* 2 */ " . . . . . . . .", 31949 /* 3 */ " . . . D D . . .", 31950 /* 4 */ " . . L L L L . .", 31951 /* 5 */ " . . . D . D . .", 31952 /* 6 */ " . . . . . . . .", 31953 /* 7 */ " . . . . . . . ."}; 31954 31955 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 31956 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 31957 31958 assert_true (ai_move (ai, 6, 5)); 31959 assert_true (ai_move (ai, 2, 6)); 31960 assert_true (ai_move (ai, 1, 5)); 31961 assert_true (ai_move (ai, 1, 3)); 31962 assert_true (ai_move (ai, 3, 7)); 31963 assert_true (ai_move (ai, 6, 4)); 31964 assert_true (ai_move (ai, 7, 3)); 31965 assert_true (ai_move (ai, 5, 2)); 31966 assert_true (ai_move (ai, 3, 2)); 31967 assert_true (ai_move (ai, 2, 2)); 31968 assert_true (ai_move (ai, 1, 2)); 31969 assert_true (ai_move (ai, 3, 1)); 31970 assert_true (ai_move (ai, 2, 1)); 31971 assert_true (ai_move (ai, 2, 0)); 31972 assert_true (ai_move (ai, 2, 5)); 31973 assert_true (ai_move (ai, 2, 7)); 31974 assert_true (ai_move (ai, 3, 6)); 31975 assert_true (ai_move (ai, 0, 5)); 31976 assert_true (ai_move (ai, 0, 4)); 31977 assert_true (ai_move (ai, 0, 3)); 31978 assert_true (ai_move (ai, 3, 0)); 31979 assert_true (ai_move (ai, 4, 7)); 31980 assert_true (ai_move (ai, 4, 6)); 31981 assert_true (ai_move (ai, 4, 0)); 31982 assert_true (ai_move (ai, 2, 3)); 31983 assert_true (ai_move (ai, 4, 2)); 31984 assert_true (ai_move (ai, 4, 1)); 31985 assert_true (ai_move (ai, 5, 1)); 31986 assert_true (ai_move (ai, 6, 2)); 31987 assert_true (ai_move (ai, 5, 3)); 31988 assert_true (ai_move (ai, 6, 3)); 31989 assert_true (ai_move (ai, 5, 6)); 31990 assert_true (ai_move (ai, 4, 5)); 31991 assert_true (ai_move (ai, 1, 4)); 31992 assert_true (ai_move (ai, 0, 2)); 31993 assert_true (ai_move (ai, 0, 1)); 31994 assert_true (ai_move (ai, 5, 7)); 31995 assert_true (ai_move (ai, 7, 2)); 31996 assert_true (ai_move (ai, 1, 7)); 31997 assert_true (ai_move (ai, 7, 4)); 31998 assert_true (ai_move (ai, 5, 0)); 31999 assert_true (ai_move (ai, 7, 5)); 32000 assert_true (ai_move (ai, 1, 0)); 32001 assert_true (ai_move (ai, 0, 6)); 32002 assert_true (ai_move (ai, 1, 6)); 32003 assert_true (ai_move (ai, 6, 1)); 32004 assert_true (ai_move (ai, 7, 0)); 32005 assert_true (ai_move (ai, 6, 0)); 32006 assert_true (ai_move (ai, 7, 1)); 32007 assert_true (ai_move (ai, 0, 0)); 32008 assert_true (ai_move (ai, 7, 6)); 32009 assert_true (ai_move (ai, 6, 7)); 32010 assert_true (ai_move (ai, 7, 7)); 32011 assert_true (ai_move (ai, 6, 6)); 32012 assert_true (ai_move (ai, 1, 1)); 32013 } 32014 32015 private static inline void test_complete_reversi_game_413 () 32016 { 32017 /* 0 1 2 3 4 5 6 7 */ 32018 string [] board = {/* 0 */ " . . . . . . . .", 32019 /* 1 */ " . . . . . . . .", 32020 /* 2 */ " . . . . . L . .", 32021 /* 3 */ " . . . D L . . .", 32022 /* 4 */ " . . L L D . . .", 32023 /* 5 */ " . . . D . D . .", 32024 /* 6 */ " . . . . . . . .", 32025 /* 7 */ " . . . . . . . ."}; 32026 32027 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 32028 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 32029 32030 assert_true (ai_move (ai, 1, 5)); 32031 assert_true (ai_move (ai, 5, 4)); 32032 assert_true (ai_move (ai, 5, 3)); 32033 assert_true (ai_move (ai, 1, 4)); 32034 assert_true (ai_move (ai, 5, 1)); 32035 assert_true (ai_move (ai, 4, 6)); 32036 assert_true (ai_move (ai, 2, 6)); 32037 assert_true (ai_move (ai, 3, 6)); 32038 assert_true (ai_move (ai, 1, 3)); 32039 assert_true (ai_move (ai, 0, 4)); 32040 assert_true (ai_move (ai, 5, 7)); 32041 assert_true (ai_move (ai, 2, 2)); 32042 assert_true (ai_move (ai, 3, 7)); 32043 assert_true (ai_move (ai, 3, 2)); 32044 assert_true (ai_move (ai, 0, 2)); 32045 assert_true (ai_move (ai, 1, 2)); 32046 assert_true (ai_move (ai, 4, 2)); 32047 assert_true (ai_move (ai, 6, 4)); 32048 assert_true (ai_move (ai, 6, 5)); 32049 assert_true (ai_move (ai, 6, 2)); 32050 assert_true (ai_move (ai, 6, 3)); 32051 assert_true (ai_move (ai, 4, 1)); 32052 assert_true (ai_move (ai, 7, 2)); 32053 assert_true (ai_move (ai, 2, 1)); 32054 assert_true (ai_move (ai, 2, 0)); 32055 assert_true (ai_move (ai, 7, 5)); 32056 assert_true (ai_move (ai, 7, 3)); 32057 assert_true (ai_move (ai, 4, 5)); 32058 assert_true (ai_move (ai, 5, 6)); 32059 assert_true (ai_move (ai, 7, 4)); 32060 assert_true (ai_move (ai, 7, 6)); 32061 assert_true (ai_move (ai, 3, 1)); 32062 assert_true (ai_move (ai, 4, 0)); 32063 assert_true (ai_move (ai, 3, 0)); 32064 assert_true (ai_move (ai, 2, 5)); 32065 assert_true (ai_move (ai, 0, 5)); 32066 assert_true (ai_move (ai, 2, 3)); 32067 assert_true (ai_move (ai, 5, 0)); 32068 assert_true (ai_move (ai, 6, 0)); 32069 assert_true (ai_move (ai, 2, 7)); 32070 assert_true (ai_move (ai, 6, 1)); 32071 assert_true (ai_move (ai, 4, 7)); 32072 assert_true (ai_move (ai, 1, 7)); 32073 assert_true (ai_move (ai, 7, 0)); 32074 assert_true (ai_move (ai, 0, 3)); 32075 assert_true (ai_move (ai, 1, 0)); 32076 assert_true (ai_move (ai, 0, 6)); 32077 assert_true (ai_move (ai, 1, 6)); 32078 assert_true (ai_move (ai, 1, 1)); 32079 assert_true (ai_move (ai, 7, 1)); 32080 assert_true (game.pass ()); 32081 assert_true (ai_move (ai, 7, 7)); 32082 assert_true (game.pass ()); 32083 assert_true (ai_move (ai, 6, 7)); 32084 assert_true (ai_move (ai, 6, 6)); 32085 assert_true (ai_move (ai, 0, 7)); 32086 assert_true (game.pass ()); 32087 assert_true (ai_move (ai, 0, 1)); 32088 assert_true (ai_move (ai, 0, 0)); 32089 } 32090 32091 private static inline void test_complete_reversi_game_414 () 32092 { 32093 /* 0 1 2 3 4 5 6 7 */ 32094 string [] board = {/* 0 */ " . . . . . . . .", 32095 /* 1 */ " . . . . . . . .", 32096 /* 2 */ " . . . . . . . .", 32097 /* 3 */ " . . . D D . . .", 32098 /* 4 */ " . . L L D . . .", 32099 /* 5 */ " . . . L . D . .", 32100 /* 6 */ " . . . . L . . .", 32101 /* 7 */ " . . . . . . . ."}; 32102 32103 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 32104 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 32105 32106 assert_true (ai_move (ai, 2, 6)); 32107 assert_true (ai_move (ai, 6, 4)); 32108 assert_true (ai_move (ai, 1, 5)); 32109 assert_true (ai_move (ai, 3, 6)); 32110 assert_true (ai_move (ai, 5, 7)); 32111 assert_true (ai_move (ai, 1, 4)); 32112 assert_true (ai_move (ai, 3, 7)); 32113 assert_true (ai_move (ai, 5, 2)); 32114 assert_true (ai_move (ai, 7, 3)); 32115 assert_true (ai_move (ai, 5, 4)); 32116 assert_true (ai_move (ai, 1, 3)); 32117 assert_true (ai_move (ai, 5, 6)); 32118 assert_true (ai_move (ai, 5, 3)); 32119 assert_true (ai_move (ai, 0, 4)); 32120 assert_true (ai_move (ai, 5, 1)); 32121 assert_true (ai_move (ai, 2, 2)); 32122 assert_true (ai_move (ai, 0, 2)); 32123 assert_true (ai_move (ai, 1, 2)); 32124 assert_true (ai_move (ai, 3, 2)); 32125 assert_true (ai_move (ai, 3, 1)); 32126 assert_true (ai_move (ai, 4, 2)); 32127 assert_true (ai_move (ai, 7, 5)); 32128 assert_true (ai_move (ai, 4, 1)); 32129 assert_true (ai_move (ai, 5, 0)); 32130 assert_true (ai_move (ai, 6, 2)); 32131 assert_true (ai_move (ai, 2, 3)); 32132 assert_true (ai_move (ai, 0, 3)); 32133 assert_true (ai_move (ai, 7, 2)); 32134 assert_true (ai_move (ai, 2, 1)); 32135 assert_true (ai_move (ai, 7, 4)); 32136 assert_true (ai_move (ai, 0, 5)); 32137 assert_true (ai_move (ai, 4, 5)); 32138 assert_true (ai_move (ai, 4, 0)); 32139 assert_true (ai_move (ai, 2, 0)); 32140 assert_true (ai_move (ai, 3, 0)); 32141 assert_true (ai_move (ai, 2, 5)); 32142 assert_true (ai_move (ai, 6, 3)); 32143 assert_true (ai_move (ai, 6, 5)); 32144 assert_true (ai_move (ai, 1, 1)); 32145 assert_true (ai_move (ai, 0, 0)); 32146 assert_true (ai_move (ai, 1, 0)); 32147 assert_true (ai_move (ai, 6, 1)); 32148 assert_true (ai_move (ai, 7, 6)); 32149 assert_true (ai_move (ai, 7, 7)); 32150 assert_true (ai_move (ai, 6, 6)); 32151 assert_true (ai_move (ai, 6, 7)); 32152 assert_true (ai_move (ai, 7, 0)); 32153 assert_true (ai_move (ai, 6, 0)); 32154 assert_true (ai_move (ai, 7, 1)); 32155 assert_true (ai_move (ai, 0, 1)); 32156 assert_true (ai_move (ai, 1, 6)); 32157 assert_true (ai_move (ai, 4, 7)); 32158 assert_true (game.pass ()); 32159 assert_true (ai_move (ai, 2, 7)); 32160 assert_true (ai_move (ai, 1, 7)); 32161 assert_true (ai_move (ai, 0, 6)); 32162 assert_true (ai_move (ai, 0, 7)); 32163 } 32164 32165 private static inline void test_complete_reversi_game_415 () 32166 { 32167 /* 0 1 2 3 4 5 6 7 */ 32168 string [] board = {/* 0 */ " . . . . . . . .", 32169 /* 1 */ " . . . . . . . .", 32170 /* 2 */ " . . . . L . . .", 32171 /* 3 */ " . . . L D . . .", 32172 /* 4 */ " . . L L D . . .", 32173 /* 5 */ " . . . D . D . .", 32174 /* 6 */ " . . . . . . . .", 32175 /* 7 */ " . . . . . . . ."}; 32176 32177 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 32178 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 32179 32180 assert_true (ai_move (ai, 1, 3)); 32181 assert_true (ai_move (ai, 1, 5)); 32182 assert_true (ai_move (ai, 4, 1)); 32183 assert_true (ai_move (ai, 5, 1)); 32184 assert_true (ai_move (ai, 2, 2)); 32185 assert_true (ai_move (ai, 4, 6)); 32186 assert_true (ai_move (ai, 2, 6)); 32187 assert_true (ai_move (ai, 6, 4)); 32188 assert_true (ai_move (ai, 0, 4)); 32189 assert_true (ai_move (ai, 3, 6)); 32190 assert_true (ai_move (ai, 1, 4)); 32191 assert_true (ai_move (ai, 0, 2)); 32192 assert_true (ai_move (ai, 1, 2)); 32193 assert_true (ai_move (ai, 4, 0)); 32194 assert_true (ai_move (ai, 3, 7)); 32195 assert_true (ai_move (ai, 3, 2)); 32196 assert_true (ai_move (ai, 5, 7)); 32197 assert_true (ai_move (ai, 0, 6)); 32198 assert_true (ai_move (ai, 7, 3)); 32199 assert_true (ai_move (ai, 4, 5)); 32200 assert_true (ai_move (ai, 3, 1)); 32201 assert_true (ai_move (ai, 6, 5)); 32202 assert_true (ai_move (ai, 5, 6)); 32203 assert_true (ai_move (ai, 2, 0)); 32204 assert_true (ai_move (ai, 7, 5)); 32205 assert_true (ai_move (ai, 4, 7)); 32206 assert_true (ai_move (ai, 3, 0)); 32207 assert_true (ai_move (ai, 7, 4)); 32208 assert_true (ai_move (ai, 5, 0)); 32209 assert_true (ai_move (ai, 6, 0)); 32210 assert_true (ai_move (ai, 5, 2)); 32211 assert_true (ai_move (ai, 2, 1)); 32212 assert_true (ai_move (ai, 5, 3)); 32213 assert_true (ai_move (ai, 6, 2)); 32214 assert_true (ai_move (ai, 5, 4)); 32215 assert_true (ai_move (ai, 7, 2)); 32216 assert_true (ai_move (ai, 7, 1)); 32217 assert_true (ai_move (ai, 2, 3)); 32218 assert_true (ai_move (ai, 2, 5)); 32219 assert_true (ai_move (ai, 6, 6)); 32220 assert_true (ai_move (ai, 6, 1)); 32221 assert_true (ai_move (ai, 2, 7)); 32222 assert_true (ai_move (ai, 1, 7)); 32223 assert_true (ai_move (ai, 7, 0)); 32224 assert_true (ai_move (ai, 0, 5)); 32225 assert_true (ai_move (ai, 0, 3)); 32226 assert_true (ai_move (ai, 6, 7)); 32227 assert_true (ai_move (ai, 6, 3)); 32228 assert_true (ai_move (ai, 1, 1)); 32229 assert_true (ai_move (ai, 1, 0)); 32230 assert_true (ai_move (ai, 1, 6)); 32231 assert_true (ai_move (ai, 0, 7)); 32232 assert_true (game.pass ()); 32233 assert_true (ai_move (ai, 7, 7)); 32234 assert_true (game.pass ()); 32235 assert_true (ai_move (ai, 7, 6)); 32236 assert_true (game.pass ()); 32237 assert_true (ai_move (ai, 0, 0)); 32238 assert_true (ai_move (ai, 0, 1)); 32239 } 32240 32241 private static inline void test_complete_reversi_game_416 () 32242 { 32243 /* 0 1 2 3 4 5 6 7 */ 32244 string [] board = {/* 0 */ " . . . . . . . .", 32245 /* 1 */ " . . . . . . . .", 32246 /* 2 */ " . . . . . . . .", 32247 /* 3 */ " . . . D D . . .", 32248 /* 4 */ " . . L L D . . .", 32249 /* 5 */ " . . . L . D . .", 32250 /* 6 */ " . . . L . . . .", 32251 /* 7 */ " . . . . . . . ."}; 32252 32253 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 32254 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 32255 32256 assert_true (ai_move (ai, 1, 5)); 32257 assert_true (ai_move (ai, 1, 3)); 32258 assert_true (ai_move (ai, 2, 6)); 32259 assert_true (ai_move (ai, 4, 6)); 32260 assert_true (ai_move (ai, 1, 4)); 32261 assert_true (ai_move (ai, 6, 4)); 32262 assert_true (ai_move (ai, 3, 7)); 32263 assert_true (ai_move (ai, 2, 2)); 32264 assert_true (ai_move (ai, 4, 2)); 32265 assert_true (ai_move (ai, 1, 7)); 32266 assert_true (ai_move (ai, 0, 2)); 32267 assert_true (ai_move (ai, 4, 1)); 32268 assert_true (ai_move (ai, 3, 1)); 32269 assert_true (ai_move (ai, 2, 0)); 32270 assert_true (ai_move (ai, 5, 7)); 32271 assert_true (ai_move (ai, 5, 6)); 32272 assert_true (ai_move (ai, 4, 0)); 32273 assert_true (ai_move (ai, 2, 1)); 32274 assert_true (ai_move (ai, 5, 1)); 32275 assert_true (ai_move (ai, 5, 3)); 32276 assert_true (ai_move (ai, 6, 2)); 32277 assert_true (ai_move (ai, 6, 3)); 32278 assert_true (ai_move (ai, 5, 4)); 32279 assert_true (ai_move (ai, 6, 5)); 32280 assert_true (ai_move (ai, 7, 5)); 32281 assert_true (ai_move (ai, 4, 5)); 32282 assert_true (ai_move (ai, 7, 4)); 32283 assert_true (ai_move (ai, 7, 3)); 32284 assert_true (ai_move (ai, 4, 7)); 32285 assert_true (ai_move (ai, 7, 6)); 32286 assert_true (ai_move (ai, 2, 5)); 32287 assert_true (ai_move (ai, 0, 5)); 32288 assert_true (ai_move (ai, 0, 4)); 32289 assert_true (ai_move (ai, 0, 3)); 32290 assert_true (ai_move (ai, 0, 6)); 32291 assert_true (ai_move (ai, 1, 2)); 32292 assert_true (ai_move (ai, 2, 3)); 32293 assert_true (ai_move (ai, 6, 0)); 32294 assert_true (ai_move (ai, 0, 1)); 32295 assert_true (ai_move (ai, 6, 7)); 32296 assert_true (ai_move (ai, 7, 7)); 32297 assert_true (ai_move (ai, 3, 2)); 32298 assert_true (ai_move (ai, 7, 2)); 32299 assert_true (ai_move (ai, 2, 7)); 32300 assert_true (ai_move (ai, 6, 6)); 32301 assert_true (ai_move (ai, 7, 1)); 32302 assert_true (ai_move (ai, 0, 7)); 32303 assert_true (ai_move (ai, 1, 1)); 32304 assert_true (ai_move (ai, 5, 2)); 32305 assert_true (ai_move (ai, 1, 6)); 32306 assert_true (ai_move (ai, 7, 0)); 32307 assert_true (ai_move (ai, 6, 1)); 32308 assert_true (ai_move (ai, 5, 0)); 32309 assert_true (game.pass ()); 32310 assert_true (ai_move (ai, 3, 0)); 32311 assert_true (ai_move (ai, 1, 0)); 32312 assert_true (ai_move (ai, 0, 0)); 32313 } 32314 32315 private static inline void test_complete_reversi_game_417 () 32316 { 32317 /* 0 1 2 3 4 5 6 7 */ 32318 string [] board = {/* 0 */ " . . . . . . . .", 32319 /* 1 */ " . . . . . . . .", 32320 /* 2 */ " . . . L . . . .", 32321 /* 3 */ " . . . L D . . .", 32322 /* 4 */ " . . L L D . . .", 32323 /* 5 */ " . . . D . D . .", 32324 /* 6 */ " . . . . . . . .", 32325 /* 7 */ " . . . . . . . ."}; 32326 32327 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 32328 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 32329 32330 assert_true (ai_move (ai, 2, 1)); 32331 assert_true (ai_move (ai, 3, 1)); 32332 assert_true (ai_move (ai, 1, 3)); 32333 assert_true (ai_move (ai, 1, 5)); 32334 assert_true (ai_move (ai, 1, 4)); 32335 assert_true (ai_move (ai, 5, 3)); 32336 assert_true (ai_move (ai, 6, 2)); 32337 assert_true (ai_move (ai, 6, 3)); 32338 assert_true (ai_move (ai, 6, 4)); 32339 assert_true (ai_move (ai, 7, 3)); 32340 assert_true (ai_move (ai, 4, 1)); 32341 assert_true (ai_move (ai, 5, 0)); 32342 assert_true (ai_move (ai, 2, 2)); 32343 assert_true (ai_move (ai, 5, 1)); 32344 assert_true (ai_move (ai, 4, 2)); 32345 assert_true (ai_move (ai, 6, 5)); 32346 assert_true (ai_move (ai, 7, 5)); 32347 assert_true (ai_move (ai, 4, 6)); 32348 assert_true (ai_move (ai, 4, 5)); 32349 assert_true (ai_move (ai, 1, 2)); 32350 assert_true (ai_move (ai, 0, 2)); 32351 assert_true (ai_move (ai, 2, 0)); 32352 assert_true (ai_move (ai, 5, 2)); 32353 assert_true (ai_move (ai, 2, 6)); 32354 assert_true (ai_move (ai, 0, 4)); 32355 assert_true (ai_move (ai, 6, 6)); 32356 assert_true (ai_move (ai, 2, 5)); 32357 assert_true (ai_move (ai, 2, 3)); 32358 assert_true (ai_move (ai, 5, 4)); 32359 assert_true (ai_move (ai, 3, 6)); 32360 assert_true (ai_move (ai, 0, 5)); 32361 assert_true (ai_move (ai, 5, 6)); 32362 assert_true (ai_move (ai, 7, 4)); 32363 assert_true (ai_move (ai, 7, 6)); 32364 assert_true (ai_move (ai, 2, 7)); 32365 assert_true (ai_move (ai, 3, 7)); 32366 assert_true (ai_move (ai, 4, 7)); 32367 assert_true (ai_move (ai, 5, 7)); 32368 assert_true (ai_move (ai, 4, 0)); 32369 assert_true (ai_move (ai, 1, 7)); 32370 assert_true (ai_move (ai, 3, 0)); 32371 assert_true (ai_move (ai, 7, 2)); 32372 assert_true (ai_move (ai, 7, 7)); 32373 assert_true (ai_move (ai, 6, 1)); 32374 assert_true (ai_move (ai, 6, 7)); 32375 assert_true (ai_move (ai, 1, 6)); 32376 assert_true (ai_move (ai, 0, 7)); 32377 assert_true (ai_move (ai, 0, 3)); 32378 assert_true (ai_move (ai, 0, 6)); 32379 assert_true (ai_move (ai, 1, 0)); 32380 assert_true (ai_move (ai, 7, 0)); 32381 assert_true (ai_move (ai, 7, 1)); 32382 assert_true (ai_move (ai, 6, 0)); 32383 assert_true (ai_move (ai, 1, 1)); 32384 assert_true (ai_move (ai, 0, 0)); 32385 assert_true (ai_move (ai, 0, 1)); 32386 } 32387 32388 private static inline void test_complete_reversi_game_418 () 32389 { 32390 /* 0 1 2 3 4 5 6 7 */ 32391 string [] board = {/* 0 */ " . . . . . . . .", 32392 /* 1 */ " . . . . . . . .", 32393 /* 2 */ " . . . . . . . .", 32394 /* 3 */ " . . . D D D . .", 32395 /* 4 */ " . . L L L L . .", 32396 /* 5 */ " . . . D . . . .", 32397 /* 6 */ " . . . . . . . .", 32398 /* 7 */ " . . . . . . . ."}; 32399 32400 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 32401 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 32402 32403 assert_true (ai_move (ai, 6, 5)); 32404 assert_true (ai_move (ai, 2, 6)); 32405 assert_true (ai_move (ai, 1, 5)); 32406 assert_true (ai_move (ai, 1, 3)); 32407 assert_true (ai_move (ai, 3, 7)); 32408 assert_true (ai_move (ai, 6, 4)); 32409 assert_true (ai_move (ai, 7, 5)); 32410 assert_true (ai_move (ai, 6, 2)); 32411 assert_true (ai_move (ai, 4, 2)); 32412 assert_true (ai_move (ai, 5, 2)); 32413 assert_true (ai_move (ai, 7, 2)); 32414 assert_true (ai_move (ai, 3, 1)); 32415 assert_true (ai_move (ai, 5, 1)); 32416 assert_true (ai_move (ai, 4, 1)); 32417 assert_true (ai_move (ai, 3, 0)); 32418 assert_true (ai_move (ai, 5, 0)); 32419 assert_true (ai_move (ai, 6, 3)); 32420 assert_true (ai_move (ai, 4, 0)); 32421 assert_true (ai_move (ai, 6, 0)); 32422 assert_true (ai_move (ai, 2, 2)); 32423 assert_true (ai_move (ai, 2, 0)); 32424 assert_true (ai_move (ai, 3, 2)); 32425 assert_true (ai_move (ai, 5, 5)); 32426 assert_true (ai_move (ai, 2, 1)); 32427 assert_true (ai_move (ai, 4, 5)); 32428 assert_true (ai_move (ai, 5, 6)); 32429 assert_true (ai_move (ai, 4, 6)); 32430 assert_true (ai_move (ai, 5, 7)); 32431 assert_true (ai_move (ai, 2, 3)); 32432 assert_true (ai_move (ai, 1, 2)); 32433 assert_true (ai_move (ai, 0, 2)); 32434 assert_true (ai_move (ai, 1, 7)); 32435 assert_true (ai_move (ai, 0, 4)); 32436 assert_true (ai_move (ai, 0, 3)); 32437 assert_true (ai_move (ai, 2, 5)); 32438 assert_true (ai_move (ai, 0, 5)); 32439 assert_true (ai_move (ai, 0, 6)); 32440 assert_true (ai_move (ai, 3, 6)); 32441 assert_true (ai_move (ai, 1, 4)); 32442 assert_true (ai_move (ai, 7, 3)); 32443 assert_true (ai_move (ai, 7, 4)); 32444 assert_true (ai_move (ai, 1, 6)); 32445 assert_true (ai_move (ai, 0, 7)); 32446 assert_true (ai_move (ai, 0, 1)); 32447 assert_true (ai_move (ai, 2, 7)); 32448 assert_true (ai_move (ai, 1, 1)); 32449 assert_true (ai_move (ai, 4, 7)); 32450 assert_true (ai_move (ai, 6, 1)); 32451 assert_true (ai_move (ai, 6, 7)); 32452 assert_true (ai_move (ai, 7, 1)); 32453 assert_true (ai_move (ai, 7, 0)); 32454 assert_true (ai_move (ai, 6, 6)); 32455 assert_true (ai_move (ai, 7, 7)); 32456 assert_true (game.pass ()); 32457 assert_true (ai_move (ai, 7, 6)); 32458 assert_true (game.pass ()); 32459 assert_true (ai_move (ai, 0, 0)); 32460 assert_true (ai_move (ai, 1, 0)); 32461 } 32462 32463 private static inline void test_complete_reversi_game_419 () 32464 { 32465 /* 0 1 2 3 4 5 6 7 */ 32466 string [] board = {/* 0 */ " . . . . . . . .", 32467 /* 1 */ " . . . . . . . .", 32468 /* 2 */ " . . . . . L . .", 32469 /* 3 */ " . . . D L D . .", 32470 /* 4 */ " . . L L D . . .", 32471 /* 5 */ " . . . D . . . .", 32472 /* 6 */ " . . . . . . . .", 32473 /* 7 */ " . . . . . . . ."}; 32474 32475 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 32476 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 32477 32478 assert_true (ai_move (ai, 5, 1)); 32479 assert_true (ai_move (ai, 4, 6)); 32480 assert_true (ai_move (ai, 1, 5)); 32481 assert_true (ai_move (ai, 1, 3)); 32482 assert_true (ai_move (ai, 2, 6)); 32483 assert_true (ai_move (ai, 3, 6)); 32484 assert_true (ai_move (ai, 4, 2)); 32485 assert_true (ai_move (ai, 5, 4)); 32486 assert_true (ai_move (ai, 5, 5)); 32487 assert_true (ai_move (ai, 3, 2)); 32488 assert_true (ai_move (ai, 2, 1)); 32489 assert_true (ai_move (ai, 3, 1)); 32490 assert_true (ai_move (ai, 2, 2)); 32491 assert_true (ai_move (ai, 6, 2)); 32492 assert_true (ai_move (ai, 6, 4)); 32493 assert_true (ai_move (ai, 4, 0)); 32494 assert_true (ai_move (ai, 7, 2)); 32495 assert_true (ai_move (ai, 5, 6)); 32496 assert_true (ai_move (ai, 6, 3)); 32497 assert_true (ai_move (ai, 7, 5)); 32498 assert_true (ai_move (ai, 4, 1)); 32499 assert_true (ai_move (ai, 2, 0)); 32500 assert_true (ai_move (ai, 5, 7)); 32501 assert_true (ai_move (ai, 1, 2)); 32502 assert_true (ai_move (ai, 2, 3)); 32503 assert_true (ai_move (ai, 3, 0)); 32504 assert_true (ai_move (ai, 7, 3)); 32505 assert_true (ai_move (ai, 6, 5)); 32506 assert_true (ai_move (ai, 7, 4)); 32507 assert_true (ai_move (ai, 7, 1)); 32508 assert_true (ai_move (ai, 4, 5)); 32509 assert_true (ai_move (ai, 5, 0)); 32510 assert_true (ai_move (ai, 2, 5)); 32511 assert_true (ai_move (ai, 0, 5)); 32512 assert_true (ai_move (ai, 4, 7)); 32513 assert_true (ai_move (ai, 1, 4)); 32514 assert_true (ai_move (ai, 3, 7)); 32515 assert_true (ai_move (ai, 2, 7)); 32516 assert_true (ai_move (ai, 1, 7)); 32517 assert_true (ai_move (ai, 6, 1)); 32518 assert_true (ai_move (ai, 0, 1)); 32519 assert_true (ai_move (ai, 0, 2)); 32520 assert_true (ai_move (ai, 0, 3)); 32521 assert_true (ai_move (ai, 1, 6)); 32522 assert_true (ai_move (ai, 1, 1)); 32523 assert_true (ai_move (ai, 0, 4)); 32524 assert_true (ai_move (ai, 0, 6)); 32525 assert_true (ai_move (ai, 0, 7)); 32526 assert_true (ai_move (ai, 6, 6)); 32527 assert_true (ai_move (ai, 0, 0)); 32528 assert_true (ai_move (ai, 1, 0)); 32529 assert_true (ai_move (ai, 7, 7)); 32530 assert_true (ai_move (ai, 6, 7)); 32531 assert_true (ai_move (ai, 7, 6)); 32532 assert_true (ai_move (ai, 7, 0)); 32533 assert_true (ai_move (ai, 6, 0)); 32534 } 32535 32536 private static inline void test_complete_reversi_game_420 () 32537 { 32538 /* 0 1 2 3 4 5 6 7 */ 32539 string [] board = {/* 0 */ " . . . . . . . .", 32540 /* 1 */ " . . . . . . . .", 32541 /* 2 */ " . . . . . . . .", 32542 /* 3 */ " . . . D D D . .", 32543 /* 4 */ " . . L L D . . .", 32544 /* 5 */ " . . . L . . . .", 32545 /* 6 */ " . . . . L . . .", 32546 /* 7 */ " . . . . . . . ."}; 32547 32548 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 32549 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 32550 32551 assert_true (ai_move (ai, 1, 5)); 32552 assert_true (ai_move (ai, 1, 3)); 32553 assert_true (ai_move (ai, 1, 4)); 32554 assert_true (ai_move (ai, 6, 2)); 32555 assert_true (ai_move (ai, 3, 6)); 32556 assert_true (ai_move (ai, 2, 2)); 32557 assert_true (ai_move (ai, 6, 3)); 32558 assert_true (ai_move (ai, 6, 4)); 32559 assert_true (ai_move (ai, 0, 2)); 32560 assert_true (ai_move (ai, 2, 6)); 32561 assert_true (ai_move (ai, 3, 1)); 32562 assert_true (ai_move (ai, 4, 2)); 32563 assert_true (ai_move (ai, 5, 7)); 32564 assert_true (ai_move (ai, 2, 0)); 32565 assert_true (ai_move (ai, 4, 0)); 32566 assert_true (ai_move (ai, 5, 6)); 32567 assert_true (ai_move (ai, 3, 7)); 32568 assert_true (ai_move (ai, 2, 5)); 32569 assert_true (ai_move (ai, 5, 1)); 32570 assert_true (ai_move (ai, 4, 5)); 32571 assert_true (ai_move (ai, 5, 5)); 32572 assert_true (ai_move (ai, 4, 1)); 32573 assert_true (ai_move (ai, 2, 3)); 32574 assert_true (ai_move (ai, 2, 1)); 32575 assert_true (ai_move (ai, 5, 2)); 32576 assert_true (ai_move (ai, 5, 0)); 32577 assert_true (ai_move (ai, 6, 1)); 32578 assert_true (ai_move (ai, 2, 7)); 32579 assert_true (ai_move (ai, 5, 4)); 32580 assert_true (ai_move (ai, 3, 0)); 32581 assert_true (ai_move (ai, 1, 2)); 32582 assert_true (ai_move (ai, 6, 5)); 32583 assert_true (ai_move (ai, 7, 5)); 32584 assert_true (ai_move (ai, 7, 4)); 32585 assert_true (ai_move (ai, 3, 2)); 32586 assert_true (ai_move (ai, 0, 5)); 32587 assert_true (ai_move (ai, 0, 3)); 32588 assert_true (ai_move (ai, 7, 6)); 32589 assert_true (ai_move (ai, 7, 2)); 32590 assert_true (ai_move (ai, 4, 7)); 32591 assert_true (ai_move (ai, 1, 7)); 32592 assert_true (ai_move (ai, 7, 0)); 32593 assert_true (ai_move (ai, 6, 7)); 32594 assert_true (ai_move (ai, 7, 1)); 32595 assert_true (ai_move (ai, 7, 3)); 32596 assert_true (ai_move (ai, 1, 6)); 32597 assert_true (ai_move (ai, 7, 7)); 32598 assert_true (ai_move (ai, 6, 6)); 32599 assert_true (ai_move (ai, 6, 0)); 32600 assert_true (ai_move (ai, 0, 4)); 32601 assert_true (ai_move (ai, 0, 7)); 32602 assert_true (ai_move (ai, 0, 1)); 32603 assert_true (ai_move (ai, 0, 6)); 32604 assert_true (game.pass ()); 32605 assert_true (ai_move (ai, 0, 0)); 32606 assert_true (game.pass ()); 32607 assert_true (ai_move (ai, 1, 1)); 32608 assert_true (ai_move (ai, 1, 0)); 32609 } 32610 32611 private static inline void test_complete_reversi_game_421 () 32612 { 32613 /* 0 1 2 3 4 5 6 7 */ 32614 string [] board = {/* 0 */ " . . . . . . . .", 32615 /* 1 */ " . . . . . . . .", 32616 /* 2 */ " . . . . L . . .", 32617 /* 3 */ " . . . L D D . .", 32618 /* 4 */ " . . L L D . . .", 32619 /* 5 */ " . . . D . . . .", 32620 /* 6 */ " . . . . . . . .", 32621 /* 7 */ " . . . . . . . ."}; 32622 32623 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 32624 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 32625 32626 assert_true (ai_move (ai, 3, 1)); 32627 assert_true (ai_move (ai, 5, 1)); 32628 assert_true (ai_move (ai, 4, 1)); 32629 assert_true (ai_move (ai, 4, 6)); 32630 assert_true (ai_move (ai, 2, 6)); 32631 assert_true (ai_move (ai, 3, 6)); 32632 assert_true (ai_move (ai, 2, 2)); 32633 assert_true (ai_move (ai, 5, 4)); 32634 assert_true (ai_move (ai, 1, 5)); 32635 assert_true (ai_move (ai, 6, 2)); 32636 assert_true (ai_move (ai, 6, 3)); 32637 assert_true (ai_move (ai, 1, 3)); 32638 assert_true (ai_move (ai, 6, 5)); 32639 assert_true (ai_move (ai, 6, 4)); 32640 assert_true (ai_move (ai, 7, 5)); 32641 assert_true (ai_move (ai, 7, 4)); 32642 assert_true (ai_move (ai, 7, 3)); 32643 assert_true (ai_move (ai, 2, 0)); 32644 assert_true (ai_move (ai, 2, 1)); 32645 assert_true (ai_move (ai, 5, 2)); 32646 assert_true (ai_move (ai, 0, 4)); 32647 assert_true (ai_move (ai, 7, 2)); 32648 assert_true (ai_move (ai, 7, 1)); 32649 assert_true (ai_move (ai, 3, 2)); 32650 assert_true (ai_move (ai, 5, 0)); 32651 assert_true (ai_move (ai, 1, 2)); 32652 assert_true (ai_move (ai, 0, 2)); 32653 assert_true (ai_move (ai, 5, 5)); 32654 assert_true (ai_move (ai, 2, 3)); 32655 assert_true (ai_move (ai, 1, 1)); 32656 assert_true (ai_move (ai, 4, 5)); 32657 assert_true (ai_move (ai, 3, 0)); 32658 assert_true (ai_move (ai, 4, 0)); 32659 assert_true (ai_move (ai, 6, 0)); 32660 assert_true (ai_move (ai, 2, 5)); 32661 assert_true (ai_move (ai, 5, 6)); 32662 assert_true (ai_move (ai, 6, 1)); 32663 assert_true (ai_move (ai, 0, 5)); 32664 assert_true (ai_move (ai, 1, 6)); 32665 assert_true (ai_move (ai, 1, 4)); 32666 assert_true (ai_move (ai, 5, 7)); 32667 assert_true (ai_move (ai, 1, 0)); 32668 assert_true (ai_move (ai, 2, 7)); 32669 assert_true (ai_move (ai, 3, 7)); 32670 assert_true (ai_move (ai, 4, 7)); 32671 assert_true (ai_move (ai, 0, 3)); 32672 assert_true (ai_move (ai, 0, 6)); 32673 assert_true (ai_move (ai, 7, 0)); 32674 assert_true (ai_move (ai, 1, 7)); 32675 assert_true (ai_move (ai, 7, 6)); 32676 assert_true (ai_move (ai, 0, 0)); 32677 assert_true (ai_move (ai, 0, 1)); 32678 assert_true (ai_move (ai, 6, 6)); 32679 assert_true (ai_move (ai, 0, 7)); 32680 assert_true (game.pass ()); 32681 assert_true (ai_move (ai, 6, 7)); 32682 assert_true (ai_move (ai, 7, 7)); 32683 } 32684 32685 private static inline void test_complete_reversi_game_422 () 32686 { 32687 /* 0 1 2 3 4 5 6 7 */ 32688 string [] board = {/* 0 */ " . . . . . . . .", 32689 /* 1 */ " . . . . . . . .", 32690 /* 2 */ " . . . . . . . .", 32691 /* 3 */ " . . . D D D . .", 32692 /* 4 */ " . . L L D . . .", 32693 /* 5 */ " . . . L . . . .", 32694 /* 6 */ " . . . L . . . .", 32695 /* 7 */ " . . . . . . . ."}; 32696 32697 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 32698 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 32699 32700 assert_true (ai_move (ai, 1, 5)); 32701 assert_true (ai_move (ai, 1, 3)); 32702 assert_true (ai_move (ai, 1, 4)); 32703 assert_true (ai_move (ai, 6, 2)); 32704 assert_true (ai_move (ai, 5, 5)); 32705 assert_true (ai_move (ai, 3, 2)); 32706 assert_true (ai_move (ai, 2, 6)); 32707 assert_true (ai_move (ai, 4, 6)); 32708 assert_true (ai_move (ai, 6, 3)); 32709 assert_true (ai_move (ai, 0, 4)); 32710 assert_true (ai_move (ai, 2, 1)); 32711 assert_true (ai_move (ai, 3, 1)); 32712 assert_true (ai_move (ai, 3, 7)); 32713 assert_true (ai_move (ai, 5, 7)); 32714 assert_true (ai_move (ai, 4, 2)); 32715 assert_true (ai_move (ai, 5, 2)); 32716 assert_true (ai_move (ai, 5, 1)); 32717 assert_true (ai_move (ai, 2, 3)); 32718 assert_true (ai_move (ai, 7, 2)); 32719 assert_true (ai_move (ai, 6, 4)); 32720 assert_true (ai_move (ai, 2, 2)); 32721 assert_true (ai_move (ai, 1, 2)); 32722 assert_true (ai_move (ai, 0, 5)); 32723 assert_true (ai_move (ai, 4, 1)); 32724 assert_true (ai_move (ai, 5, 0)); 32725 assert_true (ai_move (ai, 5, 4)); 32726 assert_true (ai_move (ai, 4, 0)); 32727 assert_true (ai_move (ai, 7, 3)); 32728 assert_true (ai_move (ai, 7, 5)); 32729 assert_true (ai_move (ai, 7, 4)); 32730 assert_true (ai_move (ai, 6, 5)); 32731 assert_true (ai_move (ai, 5, 6)); 32732 assert_true (ai_move (ai, 0, 3)); 32733 assert_true (ai_move (ai, 1, 1)); 32734 assert_true (ai_move (ai, 4, 5)); 32735 assert_true (ai_move (ai, 6, 6)); 32736 assert_true (ai_move (ai, 2, 5)); 32737 assert_true (ai_move (ai, 2, 7)); 32738 assert_true (ai_move (ai, 4, 7)); 32739 assert_true (ai_move (ai, 0, 2)); 32740 assert_true (ai_move (ai, 1, 6)); 32741 assert_true (ai_move (ai, 2, 0)); 32742 assert_true (ai_move (ai, 3, 0)); 32743 assert_true (ai_move (ai, 6, 0)); 32744 assert_true (ai_move (ai, 0, 1)); 32745 assert_true (ai_move (ai, 0, 0)); 32746 assert_true (ai_move (ai, 1, 0)); 32747 assert_true (ai_move (ai, 6, 7)); 32748 assert_true (ai_move (ai, 7, 0)); 32749 assert_true (ai_move (ai, 7, 1)); 32750 assert_true (ai_move (ai, 7, 7)); 32751 assert_true (ai_move (ai, 6, 1)); 32752 assert_true (ai_move (ai, 1, 7)); 32753 assert_true (ai_move (ai, 7, 6)); 32754 assert_true (game.pass ()); 32755 assert_true (ai_move (ai, 0, 6)); 32756 assert_true (ai_move (ai, 0, 7)); 32757 } 32758 32759 private static inline void test_complete_reversi_game_423 () 32760 { 32761 /* 0 1 2 3 4 5 6 7 */ 32762 string [] board = {/* 0 */ " . . . . . . . .", 32763 /* 1 */ " . . . . . . . .", 32764 /* 2 */ " . . . L . . . .", 32765 /* 3 */ " . . . L D D . .", 32766 /* 4 */ " . . L L D . . .", 32767 /* 5 */ " . . . D . . . .", 32768 /* 6 */ " . . . . . . . .", 32769 /* 7 */ " . . . . . . . ."}; 32770 32771 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 32772 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 32773 32774 assert_true (ai_move (ai, 2, 1)); 32775 assert_true (ai_move (ai, 3, 1)); 32776 assert_true (ai_move (ai, 1, 3)); 32777 assert_true (ai_move (ai, 1, 5)); 32778 assert_true (ai_move (ai, 4, 1)); 32779 assert_true (ai_move (ai, 4, 6)); 32780 assert_true (ai_move (ai, 2, 6)); 32781 assert_true (ai_move (ai, 3, 6)); 32782 assert_true (ai_move (ai, 0, 4)); 32783 assert_true (ai_move (ai, 0, 2)); 32784 assert_true (ai_move (ai, 4, 2)); 32785 assert_true (ai_move (ai, 1, 4)); 32786 assert_true (ai_move (ai, 2, 2)); 32787 assert_true (ai_move (ai, 5, 4)); 32788 assert_true (ai_move (ai, 6, 5)); 32789 assert_true (ai_move (ai, 6, 4)); 32790 assert_true (ai_move (ai, 7, 5)); 32791 assert_true (ai_move (ai, 6, 2)); 32792 assert_true (ai_move (ai, 6, 3)); 32793 assert_true (ai_move (ai, 7, 2)); 32794 assert_true (ai_move (ai, 7, 3)); 32795 assert_true (ai_move (ai, 5, 2)); 32796 assert_true (ai_move (ai, 5, 1)); 32797 assert_true (ai_move (ai, 2, 0)); 32798 assert_true (ai_move (ai, 5, 5)); 32799 assert_true (ai_move (ai, 4, 0)); 32800 assert_true (ai_move (ai, 5, 0)); 32801 assert_true (ai_move (ai, 1, 2)); 32802 assert_true (ai_move (ai, 2, 3)); 32803 assert_true (ai_move (ai, 3, 0)); 32804 assert_true (ai_move (ai, 1, 0)); 32805 assert_true (ai_move (ai, 0, 6)); 32806 assert_true (ai_move (ai, 2, 5)); 32807 assert_true (ai_move (ai, 3, 7)); 32808 assert_true (ai_move (ai, 2, 7)); 32809 assert_true (ai_move (ai, 4, 5)); 32810 assert_true (ai_move (ai, 7, 4)); 32811 assert_true (ai_move (ai, 7, 6)); 32812 assert_true (ai_move (ai, 5, 7)); 32813 assert_true (ai_move (ai, 4, 7)); 32814 assert_true (ai_move (ai, 5, 6)); 32815 assert_true (ai_move (ai, 7, 1)); 32816 assert_true (ai_move (ai, 0, 3)); 32817 assert_true (ai_move (ai, 0, 5)); 32818 assert_true (ai_move (ai, 6, 6)); 32819 assert_true (ai_move (ai, 0, 1)); 32820 assert_true (ai_move (ai, 1, 1)); 32821 assert_true (ai_move (ai, 0, 0)); 32822 assert_true (ai_move (ai, 1, 6)); 32823 assert_true (ai_move (ai, 6, 0)); 32824 assert_true (ai_move (ai, 6, 1)); 32825 assert_true (ai_move (ai, 7, 0)); 32826 assert_true (game.pass ()); 32827 assert_true (ai_move (ai, 7, 7)); 32828 assert_true (ai_move (ai, 6, 7)); 32829 assert_true (ai_move (ai, 1, 7)); 32830 assert_true (ai_move (ai, 0, 7)); 32831 } 32832 32833 private static inline void test_complete_reversi_game_424 () 32834 { 32835 /* 0 1 2 3 4 5 6 7 */ 32836 string [] board = {/* 0 */ " . . . . . . . .", 32837 /* 1 */ " . . . . . . . .", 32838 /* 2 */ " . . . . . . . .", 32839 /* 3 */ " . . . D D . . .", 32840 /* 4 */ " . . L L D . . .", 32841 /* 5 */ " . . . D L . . .", 32842 /* 6 */ " . . . . . L . .", 32843 /* 7 */ " . . . . . . . ."}; 32844 32845 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 32846 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 32847 32848 assert_true (ai_move (ai, 5, 5)); 32849 assert_true (ai_move (ai, 3, 6)); 32850 assert_true (ai_move (ai, 2, 6)); 32851 assert_true (ai_move (ai, 4, 6)); 32852 assert_true (ai_move (ai, 1, 5)); 32853 assert_true (ai_move (ai, 6, 5)); 32854 assert_true (ai_move (ai, 4, 7)); 32855 assert_true (ai_move (ai, 5, 4)); 32856 assert_true (ai_move (ai, 7, 4)); 32857 assert_true (ai_move (ai, 7, 5)); 32858 assert_true (ai_move (ai, 2, 3)); 32859 assert_true (ai_move (ai, 7, 3)); 32860 assert_true (ai_move (ai, 2, 7)); 32861 assert_true (ai_move (ai, 1, 3)); 32862 assert_true (ai_move (ai, 1, 4)); 32863 assert_true (ai_move (ai, 0, 4)); 32864 assert_true (ai_move (ai, 6, 4)); 32865 assert_true (ai_move (ai, 1, 2)); 32866 assert_true (ai_move (ai, 6, 3)); 32867 assert_true (ai_move (ai, 2, 2)); 32868 assert_true (ai_move (ai, 0, 3)); 32869 assert_true (ai_move (ai, 0, 2)); 32870 assert_true (ai_move (ai, 2, 1)); 32871 assert_true (ai_move (ai, 3, 1)); 32872 assert_true (ai_move (ai, 4, 1)); 32873 assert_true (ai_move (ai, 2, 0)); 32874 assert_true (ai_move (ai, 0, 5)); 32875 assert_true (ai_move (ai, 2, 5)); 32876 assert_true (ai_move (ai, 0, 1)); 32877 assert_true (ai_move (ai, 4, 0)); 32878 assert_true (ai_move (ai, 3, 2)); 32879 assert_true (ai_move (ai, 5, 0)); 32880 assert_true (ai_move (ai, 4, 2)); 32881 assert_true (ai_move (ai, 5, 1)); 32882 assert_true (ai_move (ai, 5, 2)); 32883 assert_true (ai_move (ai, 5, 7)); 32884 assert_true (ai_move (ai, 5, 3)); 32885 assert_true (ai_move (ai, 3, 7)); 32886 assert_true (ai_move (ai, 6, 7)); 32887 assert_true (ai_move (ai, 7, 2)); 32888 assert_true (ai_move (ai, 1, 6)); 32889 assert_true (ai_move (ai, 6, 2)); 32890 assert_true (ai_move (ai, 6, 1)); 32891 assert_true (ai_move (ai, 6, 6)); 32892 assert_true (ai_move (ai, 7, 7)); 32893 assert_true (ai_move (ai, 7, 1)); 32894 assert_true (ai_move (ai, 7, 0)); 32895 assert_true (ai_move (ai, 7, 6)); 32896 assert_true (ai_move (ai, 6, 0)); 32897 assert_true (ai_move (ai, 1, 1)); 32898 assert_true (ai_move (ai, 0, 0)); 32899 assert_true (ai_move (ai, 1, 0)); 32900 assert_true (ai_move (ai, 3, 0)); 32901 assert_true (ai_move (ai, 1, 7)); 32902 assert_true (ai_move (ai, 0, 7)); 32903 assert_true (ai_move (ai, 0, 6)); 32904 } 32905 32906 private static inline void test_complete_reversi_game_425 () 32907 { 32908 /* 0 1 2 3 4 5 6 7 */ 32909 string [] board = {/* 0 */ " . . . . . . . .", 32910 /* 1 */ " . . . . . . . .", 32911 /* 2 */ " . . . . . . . .", 32912 /* 3 */ " . . . D D . . .", 32913 /* 4 */ " . . L L L L . .", 32914 /* 5 */ " . . . D D . . .", 32915 /* 6 */ " . . . . . . . .", 32916 /* 7 */ " . . . . . . . ."}; 32917 32918 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 32919 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 32920 32921 assert_true (ai_move (ai, 6, 5)); 32922 assert_true (ai_move (ai, 2, 6)); 32923 assert_true (ai_move (ai, 5, 5)); 32924 assert_true (ai_move (ai, 5, 6)); 32925 assert_true (ai_move (ai, 4, 6)); 32926 assert_true (ai_move (ai, 5, 7)); 32927 assert_true (ai_move (ai, 1, 5)); 32928 assert_true (ai_move (ai, 1, 3)); 32929 assert_true (ai_move (ai, 2, 5)); 32930 assert_true (ai_move (ai, 0, 4)); 32931 assert_true (ai_move (ai, 2, 3)); 32932 assert_true (ai_move (ai, 6, 4)); 32933 assert_true (ai_move (ai, 0, 5)); 32934 assert_true (ai_move (ai, 7, 5)); 32935 assert_true (ai_move (ai, 3, 7)); 32936 assert_true (ai_move (ai, 0, 6)); 32937 assert_true (ai_move (ai, 7, 3)); 32938 assert_true (ai_move (ai, 3, 2)); 32939 assert_true (ai_move (ai, 6, 3)); 32940 assert_true (ai_move (ai, 1, 4)); 32941 assert_true (ai_move (ai, 2, 2)); 32942 assert_true (ai_move (ai, 3, 1)); 32943 assert_true (ai_move (ai, 4, 1)); 32944 assert_true (ai_move (ai, 2, 7)); 32945 assert_true (ai_move (ai, 0, 2)); 32946 assert_true (ai_move (ai, 2, 1)); 32947 assert_true (ai_move (ai, 1, 2)); 32948 assert_true (ai_move (ai, 4, 2)); 32949 assert_true (ai_move (ai, 5, 2)); 32950 assert_true (ai_move (ai, 5, 0)); 32951 assert_true (ai_move (ai, 1, 6)); 32952 assert_true (ai_move (ai, 3, 6)); 32953 assert_true (ai_move (ai, 3, 0)); 32954 assert_true (ai_move (ai, 4, 7)); 32955 assert_true (ai_move (ai, 6, 6)); 32956 assert_true (ai_move (ai, 6, 7)); 32957 assert_true (ai_move (ai, 1, 7)); 32958 assert_true (ai_move (ai, 0, 7)); 32959 assert_true (game.pass ()); 32960 assert_true (ai_move (ai, 5, 3)); 32961 assert_true (ai_move (ai, 7, 4)); 32962 assert_true (ai_move (ai, 7, 2)); 32963 assert_true (ai_move (ai, 6, 2)); 32964 assert_true (ai_move (ai, 7, 1)); 32965 assert_true (ai_move (ai, 6, 1)); 32966 assert_true (ai_move (ai, 7, 0)); 32967 assert_true (ai_move (ai, 6, 0)); 32968 assert_true (ai_move (ai, 0, 3)); 32969 assert_true (ai_move (ai, 4, 0)); 32970 assert_true (ai_move (ai, 0, 1)); 32971 assert_true (ai_move (ai, 1, 1)); 32972 assert_true (ai_move (ai, 0, 0)); 32973 assert_true (ai_move (ai, 1, 0)); 32974 assert_true (ai_move (ai, 2, 0)); 32975 assert_true (ai_move (ai, 5, 1)); 32976 assert_true (ai_move (ai, 7, 7)); 32977 assert_true (ai_move (ai, 7, 6)); 32978 } 32979 32980 private static inline void test_complete_reversi_game_426 () 32981 { 32982 /* 0 1 2 3 4 5 6 7 */ 32983 string [] board = {/* 0 */ " . . . . . . . .", 32984 /* 1 */ " . . . . . . . .", 32985 /* 2 */ " . . . . . L . .", 32986 /* 3 */ " . . . D L . . .", 32987 /* 4 */ " . . L L D . . .", 32988 /* 5 */ " . . . D D . . .", 32989 /* 6 */ " . . . . . . . .", 32990 /* 7 */ " . . . . . . . ."}; 32991 32992 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 32993 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 32994 32995 assert_true (ai_move (ai, 1, 5)); 32996 assert_true (ai_move (ai, 1, 4)); 32997 assert_true (ai_move (ai, 5, 3)); 32998 assert_true (ai_move (ai, 4, 6)); 32999 assert_true (ai_move (ai, 2, 6)); 33000 assert_true (ai_move (ai, 3, 6)); 33001 assert_true (ai_move (ai, 5, 1)); 33002 assert_true (ai_move (ai, 5, 5)); 33003 assert_true (ai_move (ai, 4, 7)); 33004 assert_true (ai_move (ai, 5, 6)); 33005 assert_true (ai_move (ai, 6, 5)); 33006 assert_true (ai_move (ai, 5, 7)); 33007 assert_true (ai_move (ai, 6, 7)); 33008 assert_true (ai_move (ai, 5, 4)); 33009 assert_true (ai_move (ai, 2, 3)); 33010 assert_true (ai_move (ai, 6, 2)); 33011 assert_true (ai_move (ai, 7, 2)); 33012 assert_true (ai_move (ai, 5, 0)); 33013 assert_true (ai_move (ai, 4, 2)); 33014 assert_true (ai_move (ai, 3, 1)); 33015 assert_true (ai_move (ai, 3, 2)); 33016 assert_true (ai_move (ai, 7, 3)); 33017 assert_true (ai_move (ai, 7, 4)); 33018 assert_true (ai_move (ai, 7, 5)); 33019 assert_true (ai_move (ai, 6, 3)); 33020 assert_true (ai_move (ai, 7, 1)); 33021 assert_true (ai_move (ai, 6, 6)); 33022 assert_true (ai_move (ai, 6, 4)); 33023 assert_true (ai_move (ai, 4, 1)); 33024 assert_true (ai_move (ai, 4, 0)); 33025 assert_true (ai_move (ai, 0, 5)); 33026 assert_true (ai_move (ai, 1, 2)); 33027 assert_true (ai_move (ai, 7, 6)); 33028 assert_true (ai_move (ai, 7, 7)); 33029 assert_true (ai_move (ai, 2, 5)); 33030 assert_true (ai_move (ai, 2, 7)); 33031 assert_true (ai_move (ai, 3, 7)); 33032 assert_true (ai_move (ai, 2, 2)); 33033 assert_true (ai_move (ai, 1, 6)); 33034 assert_true (ai_move (ai, 0, 4)); 33035 assert_true (ai_move (ai, 6, 1)); 33036 assert_true (ai_move (ai, 6, 0)); 33037 assert_true (ai_move (ai, 7, 0)); 33038 assert_true (ai_move (ai, 1, 7)); 33039 assert_true (ai_move (ai, 1, 3)); 33040 assert_true (ai_move (ai, 0, 6)); 33041 assert_true (ai_move (ai, 3, 0)); 33042 assert_true (ai_move (ai, 0, 3)); 33043 assert_true (ai_move (ai, 2, 1)); 33044 assert_true (ai_move (ai, 2, 0)); 33045 assert_true (ai_move (ai, 1, 0)); 33046 assert_true (ai_move (ai, 1, 1)); 33047 assert_true (ai_move (ai, 0, 7)); 33048 assert_true (game.pass ()); 33049 assert_true (ai_move (ai, 0, 2)); 33050 assert_true (ai_move (ai, 0, 1)); 33051 assert_true (ai_move (ai, 0, 0)); 33052 } 33053 33054 private static inline void test_complete_reversi_game_427 () 33055 { 33056 /* 0 1 2 3 4 5 6 7 */ 33057 string [] board = {/* 0 */ " . . . . . . . .", 33058 /* 1 */ " . . . . . . . .", 33059 /* 2 */ " . . . . . . . .", 33060 /* 3 */ " . . . D D . . .", 33061 /* 4 */ " . . L L D . . .", 33062 /* 5 */ " . . . L D . . .", 33063 /* 6 */ " . . . . L . . .", 33064 /* 7 */ " . . . . . . . ."}; 33065 33066 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 33067 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 33068 33069 assert_true (ai_move (ai, 2, 6)); 33070 assert_true (ai_move (ai, 3, 6)); 33071 assert_true (ai_move (ai, 3, 7)); 33072 assert_true (ai_move (ai, 5, 4)); 33073 assert_true (ai_move (ai, 2, 5)); 33074 assert_true (ai_move (ai, 2, 2)); 33075 assert_true (ai_move (ai, 1, 3)); 33076 assert_true (ai_move (ai, 1, 5)); 33077 assert_true (ai_move (ai, 0, 4)); 33078 assert_true (ai_move (ai, 0, 2)); 33079 assert_true (ai_move (ai, 1, 4)); 33080 assert_true (ai_move (ai, 2, 7)); 33081 assert_true (ai_move (ai, 5, 5)); 33082 assert_true (ai_move (ai, 4, 7)); 33083 assert_true (ai_move (ai, 5, 6)); 33084 assert_true (ai_move (ai, 2, 3)); 33085 assert_true (ai_move (ai, 6, 5)); 33086 assert_true (ai_move (ai, 5, 7)); 33087 assert_true (ai_move (ai, 4, 2)); 33088 assert_true (ai_move (ai, 0, 3)); 33089 assert_true (ai_move (ai, 2, 1)); 33090 assert_true (ai_move (ai, 0, 5)); 33091 assert_true (ai_move (ai, 1, 6)); 33092 assert_true (ai_move (ai, 2, 0)); 33093 assert_true (ai_move (ai, 0, 6)); 33094 assert_true (ai_move (ai, 0, 7)); 33095 assert_true (ai_move (ai, 1, 2)); 33096 assert_true (ai_move (ai, 3, 2)); 33097 assert_true (ai_move (ai, 3, 0)); 33098 assert_true (ai_move (ai, 6, 7)); 33099 assert_true (ai_move (ai, 3, 1)); 33100 assert_true (ai_move (ai, 6, 4)); 33101 assert_true (ai_move (ai, 6, 3)); 33102 assert_true (ai_move (ai, 7, 2)); 33103 assert_true (ai_move (ai, 5, 3)); 33104 assert_true (ai_move (ai, 6, 2)); 33105 assert_true (ai_move (ai, 7, 3)); 33106 assert_true (ai_move (ai, 0, 1)); 33107 assert_true (ai_move (ai, 1, 0)); 33108 assert_true (ai_move (ai, 7, 5)); 33109 assert_true (ai_move (ai, 5, 1)); 33110 assert_true (ai_move (ai, 7, 4)); 33111 assert_true (ai_move (ai, 1, 7)); 33112 assert_true (ai_move (ai, 1, 1)); 33113 assert_true (ai_move (ai, 7, 7)); 33114 assert_true (ai_move (ai, 6, 1)); 33115 assert_true (ai_move (ai, 7, 6)); 33116 assert_true (ai_move (ai, 5, 2)); 33117 assert_true (ai_move (ai, 4, 1)); 33118 assert_true (ai_move (ai, 6, 6)); 33119 assert_true (ai_move (ai, 0, 0)); 33120 assert_true (ai_move (ai, 5, 0)); 33121 assert_true (ai_move (ai, 4, 0)); 33122 assert_true (game.pass ()); 33123 assert_true (ai_move (ai, 7, 0)); 33124 assert_true (ai_move (ai, 7, 1)); 33125 assert_true (ai_move (ai, 6, 0)); 33126 } 33127 33128 private static inline void test_complete_reversi_game_428 () 33129 { 33130 /* 0 1 2 3 4 5 6 7 */ 33131 string [] board = {/* 0 */ " . . . . . . . .", 33132 /* 1 */ " . . . . . . . .", 33133 /* 2 */ " . . . . L . . .", 33134 /* 3 */ " . . . L D . . .", 33135 /* 4 */ " . . L L D . . .", 33136 /* 5 */ " . . . D D . . .", 33137 /* 6 */ " . . . . . . . .", 33138 /* 7 */ " . . . . . . . ."}; 33139 33140 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 33141 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 33142 33143 assert_true (ai_move (ai, 1, 3)); 33144 assert_true (ai_move (ai, 1, 5)); 33145 assert_true (ai_move (ai, 4, 1)); 33146 assert_true (ai_move (ai, 5, 1)); 33147 assert_true (ai_move (ai, 2, 2)); 33148 assert_true (ai_move (ai, 3, 6)); 33149 assert_true (ai_move (ai, 4, 6)); 33150 assert_true (ai_move (ai, 1, 4)); 33151 assert_true (ai_move (ai, 3, 7)); 33152 assert_true (ai_move (ai, 0, 2)); 33153 assert_true (ai_move (ai, 2, 3)); 33154 assert_true (ai_move (ai, 2, 1)); 33155 assert_true (ai_move (ai, 1, 2)); 33156 assert_true (ai_move (ai, 3, 2)); 33157 assert_true (ai_move (ai, 5, 2)); 33158 assert_true (ai_move (ai, 6, 2)); 33159 assert_true (ai_move (ai, 6, 3)); 33160 assert_true (ai_move (ai, 3, 1)); 33161 assert_true (ai_move (ai, 7, 2)); 33162 assert_true (ai_move (ai, 5, 3)); 33163 assert_true (ai_move (ai, 0, 4)); 33164 assert_true (ai_move (ai, 2, 5)); 33165 assert_true (ai_move (ai, 0, 5)); 33166 assert_true (ai_move (ai, 2, 6)); 33167 assert_true (ai_move (ai, 5, 0)); 33168 assert_true (ai_move (ai, 0, 3)); 33169 assert_true (ai_move (ai, 0, 1)); 33170 assert_true (ai_move (ai, 1, 6)); 33171 assert_true (ai_move (ai, 2, 0)); 33172 assert_true (ai_move (ai, 5, 7)); 33173 assert_true (ai_move (ai, 5, 6)); 33174 assert_true (ai_move (ai, 7, 4)); 33175 assert_true (ai_move (ai, 7, 3)); 33176 assert_true (ai_move (ai, 5, 4)); 33177 assert_true (ai_move (ai, 6, 5)); 33178 assert_true (ai_move (ai, 5, 5)); 33179 assert_true (ai_move (ai, 6, 4)); 33180 assert_true (ai_move (ai, 7, 5)); 33181 assert_true (ai_move (ai, 7, 6)); 33182 assert_true (ai_move (ai, 2, 7)); 33183 assert_true (ai_move (ai, 4, 7)); 33184 assert_true (ai_move (ai, 4, 0)); 33185 assert_true (ai_move (ai, 3, 0)); 33186 assert_true (ai_move (ai, 6, 1)); 33187 assert_true (ai_move (ai, 7, 0)); 33188 assert_true (ai_move (ai, 7, 1)); 33189 assert_true (ai_move (ai, 6, 6)); 33190 assert_true (ai_move (ai, 7, 7)); 33191 assert_true (ai_move (ai, 6, 7)); 33192 assert_true (ai_move (ai, 1, 0)); 33193 assert_true (ai_move (ai, 6, 0)); 33194 assert_true (ai_move (ai, 1, 1)); 33195 assert_true (ai_move (ai, 0, 7)); 33196 assert_true (ai_move (ai, 1, 7)); 33197 assert_true (ai_move (ai, 0, 6)); 33198 assert_true (game.pass ()); 33199 assert_true (ai_move (ai, 0, 0)); 33200 } 33201 33202 private static inline void test_complete_reversi_game_429 () 33203 { 33204 /* 0 1 2 3 4 5 6 7 */ 33205 string [] board = {/* 0 */ " . . . . . . . .", 33206 /* 1 */ " . . . . . . . .", 33207 /* 2 */ " . . . . . . . .", 33208 /* 3 */ " . . . D D . . .", 33209 /* 4 */ " . . L L D . . .", 33210 /* 5 */ " . . . L D . . .", 33211 /* 6 */ " . . . L . . . .", 33212 /* 7 */ " . . . . . . . ."}; 33213 33214 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 33215 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 33216 33217 assert_true (ai_move (ai, 2, 6)); 33218 assert_true (ai_move (ai, 4, 6)); 33219 assert_true (ai_move (ai, 3, 7)); 33220 assert_true (ai_move (ai, 5, 4)); 33221 assert_true (ai_move (ai, 2, 5)); 33222 assert_true (ai_move (ai, 2, 2)); 33223 assert_true (ai_move (ai, 1, 3)); 33224 assert_true (ai_move (ai, 1, 5)); 33225 assert_true (ai_move (ai, 0, 4)); 33226 assert_true (ai_move (ai, 0, 2)); 33227 assert_true (ai_move (ai, 1, 4)); 33228 assert_true (ai_move (ai, 2, 7)); 33229 assert_true (ai_move (ai, 5, 5)); 33230 assert_true (ai_move (ai, 4, 7)); 33231 assert_true (ai_move (ai, 5, 6)); 33232 assert_true (ai_move (ai, 2, 3)); 33233 assert_true (ai_move (ai, 6, 5)); 33234 assert_true (ai_move (ai, 5, 7)); 33235 assert_true (ai_move (ai, 4, 2)); 33236 assert_true (ai_move (ai, 0, 3)); 33237 assert_true (ai_move (ai, 2, 1)); 33238 assert_true (ai_move (ai, 0, 5)); 33239 assert_true (ai_move (ai, 1, 6)); 33240 assert_true (ai_move (ai, 2, 0)); 33241 assert_true (ai_move (ai, 0, 6)); 33242 assert_true (ai_move (ai, 0, 7)); 33243 assert_true (ai_move (ai, 1, 2)); 33244 assert_true (ai_move (ai, 3, 2)); 33245 assert_true (ai_move (ai, 3, 0)); 33246 assert_true (ai_move (ai, 6, 7)); 33247 assert_true (ai_move (ai, 3, 1)); 33248 assert_true (ai_move (ai, 6, 4)); 33249 assert_true (ai_move (ai, 6, 3)); 33250 assert_true (ai_move (ai, 7, 2)); 33251 assert_true (ai_move (ai, 5, 3)); 33252 assert_true (ai_move (ai, 6, 2)); 33253 assert_true (ai_move (ai, 7, 3)); 33254 assert_true (ai_move (ai, 0, 1)); 33255 assert_true (ai_move (ai, 1, 0)); 33256 assert_true (ai_move (ai, 7, 5)); 33257 assert_true (ai_move (ai, 5, 1)); 33258 assert_true (ai_move (ai, 7, 4)); 33259 assert_true (ai_move (ai, 1, 7)); 33260 assert_true (ai_move (ai, 1, 1)); 33261 assert_true (ai_move (ai, 7, 7)); 33262 assert_true (ai_move (ai, 6, 1)); 33263 assert_true (ai_move (ai, 7, 6)); 33264 assert_true (ai_move (ai, 5, 2)); 33265 assert_true (ai_move (ai, 4, 1)); 33266 assert_true (ai_move (ai, 6, 6)); 33267 assert_true (ai_move (ai, 0, 0)); 33268 assert_true (ai_move (ai, 5, 0)); 33269 assert_true (ai_move (ai, 4, 0)); 33270 assert_true (game.pass ()); 33271 assert_true (ai_move (ai, 7, 0)); 33272 assert_true (ai_move (ai, 7, 1)); 33273 assert_true (ai_move (ai, 6, 0)); 33274 } 33275 33276 private static inline void test_complete_reversi_game_430 () 33277 { 33278 /* 0 1 2 3 4 5 6 7 */ 33279 string [] board = {/* 0 */ " . . . . . . . .", 33280 /* 1 */ " . . . . . . . .", 33281 /* 2 */ " . . . L . . . .", 33282 /* 3 */ " . . . L D . . .", 33283 /* 4 */ " . . L L D . . .", 33284 /* 5 */ " . . . D D . . .", 33285 /* 6 */ " . . . . . . . .", 33286 /* 7 */ " . . . . . . . ."}; 33287 33288 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 33289 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 33290 33291 assert_true (ai_move (ai, 2, 1)); 33292 assert_true (ai_move (ai, 3, 1)); 33293 assert_true (ai_move (ai, 1, 3)); 33294 assert_true (ai_move (ai, 1, 5)); 33295 assert_true (ai_move (ai, 1, 4)); 33296 assert_true (ai_move (ai, 5, 3)); 33297 assert_true (ai_move (ai, 6, 2)); 33298 assert_true (ai_move (ai, 6, 3)); 33299 assert_true (ai_move (ai, 4, 1)); 33300 assert_true (ai_move (ai, 5, 0)); 33301 assert_true (ai_move (ai, 2, 2)); 33302 assert_true (ai_move (ai, 3, 0)); 33303 assert_true (ai_move (ai, 4, 0)); 33304 assert_true (ai_move (ai, 2, 5)); 33305 assert_true (ai_move (ai, 2, 6)); 33306 assert_true (ai_move (ai, 5, 5)); 33307 assert_true (ai_move (ai, 2, 0)); 33308 assert_true (ai_move (ai, 1, 0)); 33309 assert_true (ai_move (ai, 3, 6)); 33310 assert_true (ai_move (ai, 2, 7)); 33311 assert_true (ai_move (ai, 4, 7)); 33312 assert_true (ai_move (ai, 0, 4)); 33313 assert_true (ai_move (ai, 5, 4)); 33314 assert_true (ai_move (ai, 6, 5)); 33315 assert_true (ai_move (ai, 0, 5)); 33316 assert_true (ai_move (ai, 0, 6)); 33317 assert_true (ai_move (ai, 0, 2)); 33318 assert_true (ai_move (ai, 4, 6)); 33319 assert_true (ai_move (ai, 5, 7)); 33320 assert_true (ai_move (ai, 1, 6)); 33321 assert_true (ai_move (ai, 6, 4)); 33322 assert_true (ai_move (ai, 7, 2)); 33323 assert_true (ai_move (ai, 5, 6)); 33324 assert_true (ai_move (ai, 5, 2)); 33325 assert_true (ai_move (ai, 5, 1)); 33326 assert_true (ai_move (ai, 4, 2)); 33327 assert_true (ai_move (ai, 2, 3)); 33328 assert_true (ai_move (ai, 1, 7)); 33329 assert_true (ai_move (ai, 7, 4)); 33330 assert_true (ai_move (ai, 7, 5)); 33331 assert_true (ai_move (ai, 7, 3)); 33332 assert_true (ai_move (ai, 3, 7)); 33333 assert_true (ai_move (ai, 1, 2)); 33334 assert_true (ai_move (ai, 6, 7)); 33335 assert_true (ai_move (ai, 0, 7)); 33336 assert_true (ai_move (ai, 6, 6)); 33337 assert_true (ai_move (ai, 7, 7)); 33338 assert_true (ai_move (ai, 0, 3)); 33339 assert_true (ai_move (ai, 7, 6)); 33340 assert_true (ai_move (ai, 6, 0)); 33341 assert_true (ai_move (ai, 7, 1)); 33342 assert_true (ai_move (ai, 1, 1)); 33343 assert_true (ai_move (ai, 0, 0)); 33344 assert_true (ai_move (ai, 0, 1)); 33345 assert_true (ai_move (ai, 7, 0)); 33346 assert_true (ai_move (ai, 6, 1)); 33347 } 33348 33349 private static inline void test_complete_reversi_game_431 () 33350 { 33351 /* 0 1 2 3 4 5 6 7 */ 33352 string [] board = {/* 0 */ " . . . . . . . .", 33353 /* 1 */ " . . . . . . . .", 33354 /* 2 */ " . . . . . . . .", 33355 /* 3 */ " . . . D D . . .", 33356 /* 4 */ " . . L D L . . .", 33357 /* 5 */ " . . D L . . . .", 33358 /* 6 */ " . . . . L . . .", 33359 /* 7 */ " . . . . . . . ."}; 33360 33361 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 33362 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 33363 33364 assert_true (ai_move (ai, 3, 6)); 33365 assert_true (ai_move (ai, 2, 2)); 33366 assert_true (ai_move (ai, 1, 4)); 33367 assert_true (ai_move (ai, 1, 3)); 33368 assert_true (ai_move (ai, 3, 2)); 33369 assert_true (ai_move (ai, 1, 5)); 33370 assert_true (ai_move (ai, 1, 2)); 33371 assert_true (ai_move (ai, 3, 7)); 33372 assert_true (ai_move (ai, 5, 4)); 33373 assert_true (ai_move (ai, 4, 2)); 33374 assert_true (ai_move (ai, 5, 2)); 33375 assert_true (ai_move (ai, 3, 1)); 33376 assert_true (ai_move (ai, 2, 1)); 33377 assert_true (ai_move (ai, 2, 0)); 33378 assert_true (ai_move (ai, 2, 6)); 33379 assert_true (ai_move (ai, 2, 7)); 33380 assert_true (ai_move (ai, 0, 5)); 33381 assert_true (ai_move (ai, 5, 1)); 33382 assert_true (ai_move (ai, 4, 1)); 33383 assert_true (ai_move (ai, 6, 2)); 33384 assert_true (ai_move (ai, 6, 3)); 33385 assert_true (ai_move (ai, 0, 2)); 33386 assert_true (ai_move (ai, 5, 0)); 33387 assert_true (ai_move (ai, 0, 4)); 33388 assert_true (ai_move (ai, 5, 7)); 33389 assert_true (ai_move (ai, 5, 6)); 33390 assert_true (ai_move (ai, 5, 5)); 33391 assert_true (ai_move (ai, 4, 0)); 33392 assert_true (ai_move (ai, 7, 2)); 33393 assert_true (ai_move (ai, 7, 4)); 33394 assert_true (ai_move (ai, 5, 3)); 33395 assert_true (ai_move (ai, 7, 3)); 33396 assert_true (ai_move (ai, 7, 5)); 33397 assert_true (ai_move (ai, 4, 5)); 33398 assert_true (ai_move (ai, 6, 4)); 33399 assert_true (ai_move (ai, 2, 3)); 33400 assert_true (ai_move (ai, 7, 1)); 33401 assert_true (ai_move (ai, 6, 5)); 33402 assert_true (ai_move (ai, 4, 7)); 33403 assert_true (ai_move (ai, 6, 7)); 33404 assert_true (ai_move (ai, 1, 6)); 33405 assert_true (ai_move (ai, 6, 0)); 33406 assert_true (ai_move (ai, 7, 6)); 33407 assert_true (ai_move (ai, 6, 1)); 33408 assert_true (ai_move (ai, 7, 0)); 33409 assert_true (ai_move (ai, 1, 7)); 33410 assert_true (ai_move (ai, 3, 0)); 33411 assert_true (ai_move (ai, 0, 6)); 33412 assert_true (ai_move (ai, 1, 0)); 33413 assert_true (ai_move (ai, 1, 1)); 33414 assert_true (ai_move (ai, 0, 3)); 33415 assert_true (ai_move (ai, 6, 6)); 33416 assert_true (ai_move (ai, 7, 7)); 33417 assert_true (ai_move (ai, 0, 1)); 33418 assert_true (ai_move (ai, 0, 7)); 33419 assert_true (game.pass ()); 33420 assert_true (ai_move (ai, 0, 0)); 33421 } 33422 33423 private static inline void test_complete_reversi_game_432 () 33424 { 33425 /* 0 1 2 3 4 5 6 7 */ 33426 string [] board = {/* 0 */ " . . . . . . . .", 33427 /* 1 */ " . . . . . . . .", 33428 /* 2 */ " . . . . L . . .", 33429 /* 3 */ " . . . L L . . .", 33430 /* 4 */ " . . L D L . . .", 33431 /* 5 */ " . . D D . . . .", 33432 /* 6 */ " . . . . . . . .", 33433 /* 7 */ " . . . . . . . ."}; 33434 33435 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 33436 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 33437 33438 assert_true (ai_move (ai, 2, 3)); 33439 assert_true (ai_move (ai, 1, 5)); 33440 assert_true (ai_move (ai, 1, 3)); 33441 assert_true (ai_move (ai, 4, 5)); 33442 assert_true (ai_move (ai, 2, 6)); 33443 assert_true (ai_move (ai, 3, 7)); 33444 assert_true (ai_move (ai, 2, 7)); 33445 assert_true (ai_move (ai, 1, 4)); 33446 assert_true (ai_move (ai, 4, 6)); 33447 assert_true (ai_move (ai, 3, 6)); 33448 assert_true (ai_move (ai, 4, 7)); 33449 assert_true (ai_move (ai, 2, 2)); 33450 assert_true (ai_move (ai, 2, 1)); 33451 assert_true (ai_move (ai, 3, 2)); 33452 assert_true (ai_move (ai, 3, 1)); 33453 assert_true (ai_move (ai, 1, 2)); 33454 assert_true (ai_move (ai, 0, 2)); 33455 assert_true (ai_move (ai, 0, 3)); 33456 assert_true (ai_move (ai, 5, 1)); 33457 assert_true (ai_move (ai, 5, 2)); 33458 assert_true (ai_move (ai, 6, 2)); 33459 assert_true (ai_move (ai, 4, 1)); 33460 assert_true (ai_move (ai, 0, 5)); 33461 assert_true (ai_move (ai, 6, 3)); 33462 assert_true (ai_move (ai, 0, 4)); 33463 assert_true (ai_move (ai, 5, 0)); 33464 assert_true (ai_move (ai, 5, 6)); 33465 assert_true (ai_move (ai, 7, 2)); 33466 assert_true (ai_move (ai, 5, 5)); 33467 assert_true (ai_move (ai, 3, 0)); 33468 assert_true (ai_move (ai, 5, 4)); 33469 assert_true (ai_move (ai, 2, 0)); 33470 assert_true (ai_move (ai, 4, 0)); 33471 assert_true (ai_move (ai, 6, 5)); 33472 assert_true (ai_move (ai, 5, 3)); 33473 assert_true (ai_move (ai, 6, 4)); 33474 assert_true (ai_move (ai, 7, 5)); 33475 assert_true (ai_move (ai, 5, 7)); 33476 assert_true (ai_move (ai, 6, 7)); 33477 assert_true (ai_move (ai, 1, 1)); 33478 assert_true (ai_move (ai, 7, 4)); 33479 assert_true (ai_move (ai, 1, 7)); 33480 assert_true (ai_move (ai, 0, 7)); 33481 assert_true (ai_move (ai, 0, 6)); 33482 assert_true (ai_move (ai, 7, 1)); 33483 assert_true (ai_move (ai, 0, 1)); 33484 assert_true (ai_move (ai, 7, 3)); 33485 assert_true (ai_move (ai, 7, 6)); 33486 assert_true (ai_move (ai, 7, 7)); 33487 assert_true (ai_move (ai, 6, 1)); 33488 assert_true (ai_move (ai, 1, 6)); 33489 assert_true (ai_move (ai, 6, 6)); 33490 assert_true (ai_move (ai, 0, 0)); 33491 assert_true (ai_move (ai, 1, 0)); 33492 assert_true (ai_move (ai, 6, 0)); 33493 assert_true (ai_move (ai, 7, 0)); 33494 } 33495 33496 private static inline void test_complete_reversi_game_433 () 33497 { 33498 /* 0 1 2 3 4 5 6 7 */ 33499 string [] board = {/* 0 */ " . . . . . . . .", 33500 /* 1 */ " . . . . . . . .", 33501 /* 2 */ " . . . . . . . .", 33502 /* 3 */ " . . . D D . . .", 33503 /* 4 */ " . . L D L . . .", 33504 /* 5 */ " . . L L . . . .", 33505 /* 6 */ " . . L . . . . .", 33506 /* 7 */ " . . . . . . . ."}; 33507 33508 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 33509 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 33510 33511 assert_true (ai_move (ai, 5, 5)); 33512 assert_true (ai_move (ai, 4, 2)); 33513 assert_true (ai_move (ai, 3, 6)); 33514 assert_true (ai_move (ai, 4, 6)); 33515 assert_true (ai_move (ai, 4, 1)); 33516 assert_true (ai_move (ai, 6, 4)); 33517 assert_true (ai_move (ai, 3, 2)); 33518 assert_true (ai_move (ai, 5, 3)); 33519 assert_true (ai_move (ai, 6, 3)); 33520 assert_true (ai_move (ai, 2, 2)); 33521 assert_true (ai_move (ai, 1, 2)); 33522 assert_true (ai_move (ai, 5, 1)); 33523 assert_true (ai_move (ai, 3, 1)); 33524 assert_true (ai_move (ai, 3, 0)); 33525 assert_true (ai_move (ai, 2, 0)); 33526 assert_true (ai_move (ai, 5, 0)); 33527 assert_true (ai_move (ai, 2, 3)); 33528 assert_true (ai_move (ai, 2, 1)); 33529 assert_true (ai_move (ai, 1, 3)); 33530 assert_true (ai_move (ai, 1, 4)); 33531 assert_true (ai_move (ai, 5, 4)); 33532 assert_true (ai_move (ai, 0, 4)); 33533 assert_true (ai_move (ai, 5, 6)); 33534 assert_true (ai_move (ai, 0, 3)); 33535 assert_true (ai_move (ai, 0, 2)); 33536 assert_true (ai_move (ai, 0, 1)); 33537 assert_true (ai_move (ai, 6, 5)); 33538 assert_true (ai_move (ai, 5, 2)); 33539 assert_true (ai_move (ai, 2, 7)); 33540 assert_true (ai_move (ai, 1, 5)); 33541 assert_true (ai_move (ai, 6, 2)); 33542 assert_true (ai_move (ai, 7, 2)); 33543 assert_true (ai_move (ai, 3, 7)); 33544 assert_true (ai_move (ai, 7, 3)); 33545 assert_true (ai_move (ai, 4, 5)); 33546 assert_true (ai_move (ai, 7, 4)); 33547 assert_true (ai_move (ai, 0, 5)); 33548 assert_true (ai_move (ai, 0, 6)); 33549 assert_true (ai_move (ai, 7, 5)); 33550 assert_true (ai_move (ai, 1, 6)); 33551 assert_true (ai_move (ai, 7, 1)); 33552 assert_true (ai_move (ai, 5, 7)); 33553 assert_true (ai_move (ai, 4, 0)); 33554 assert_true (ai_move (ai, 1, 0)); 33555 assert_true (ai_move (ai, 4, 7)); 33556 assert_true (ai_move (ai, 1, 7)); 33557 assert_true (ai_move (ai, 1, 1)); 33558 assert_true (ai_move (ai, 6, 1)); 33559 assert_true (ai_move (ai, 6, 0)); 33560 assert_true (ai_move (ai, 7, 0)); 33561 assert_true (game.pass ()); 33562 assert_true (ai_move (ai, 7, 6)); 33563 assert_true (ai_move (ai, 6, 6)); 33564 assert_true (ai_move (ai, 6, 7)); 33565 } 33566 33567 private static inline void test_complete_reversi_game_434 () 33568 { 33569 /* 0 1 2 3 4 5 6 7 */ 33570 string [] board = {/* 0 */ " . . . . . . . .", 33571 /* 1 */ " . . . . . . . .", 33572 /* 2 */ " . . L . . . . .", 33573 /* 3 */ " . . . L D . . .", 33574 /* 4 */ " . . L D L . . .", 33575 /* 5 */ " . . D D . . . .", 33576 /* 6 */ " . . . . . . . .", 33577 /* 7 */ " . . . . . . . ."}; 33578 33579 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 33580 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 33581 33582 assert_true (ai_move (ai, 1, 4)); 33583 assert_true (ai_move (ai, 2, 6)); 33584 assert_true (ai_move (ai, 4, 6)); 33585 assert_true (ai_move (ai, 1, 5)); 33586 assert_true (ai_move (ai, 0, 5)); 33587 assert_true (ai_move (ai, 5, 7)); 33588 assert_true (ai_move (ai, 3, 6)); 33589 assert_true (ai_move (ai, 0, 4)); 33590 assert_true (ai_move (ai, 4, 5)); 33591 assert_true (ai_move (ai, 5, 5)); 33592 assert_true (ai_move (ai, 6, 5)); 33593 assert_true (ai_move (ai, 6, 4)); 33594 assert_true (ai_move (ai, 4, 7)); 33595 assert_true (ai_move (ai, 7, 5)); 33596 assert_true (ai_move (ai, 0, 3)); 33597 assert_true (ai_move (ai, 3, 7)); 33598 assert_true (ai_move (ai, 2, 7)); 33599 assert_true (ai_move (ai, 1, 7)); 33600 assert_true (ai_move (ai, 5, 6)); 33601 assert_true (ai_move (ai, 5, 4)); 33602 assert_true (ai_move (ai, 5, 3)); 33603 assert_true (ai_move (ai, 6, 7)); 33604 assert_true (ai_move (ai, 1, 3)); 33605 assert_true (ai_move (ai, 2, 3)); 33606 assert_true (ai_move (ai, 3, 1)); 33607 assert_true (ai_move (ai, 2, 1)); 33608 assert_true (ai_move (ai, 4, 2)); 33609 assert_true (ai_move (ai, 0, 2)); 33610 assert_true (ai_move (ai, 0, 1)); 33611 assert_true (ai_move (ai, 6, 2)); 33612 assert_true (ai_move (ai, 5, 2)); 33613 assert_true (ai_move (ai, 5, 1)); 33614 assert_true (ai_move (ai, 6, 3)); 33615 assert_true (ai_move (ai, 3, 2)); 33616 assert_true (ai_move (ai, 4, 1)); 33617 assert_true (ai_move (ai, 1, 2)); 33618 assert_true (ai_move (ai, 5, 0)); 33619 assert_true (ai_move (ai, 7, 3)); 33620 assert_true (ai_move (ai, 7, 2)); 33621 assert_true (ai_move (ai, 3, 0)); 33622 assert_true (ai_move (ai, 4, 0)); 33623 assert_true (ai_move (ai, 2, 0)); 33624 assert_true (ai_move (ai, 1, 0)); 33625 assert_true (ai_move (ai, 1, 1)); 33626 assert_true (ai_move (ai, 7, 4)); 33627 assert_true (ai_move (ai, 7, 1)); 33628 assert_true (ai_move (ai, 0, 0)); 33629 assert_true (ai_move (ai, 6, 1)); 33630 assert_true (ai_move (ai, 7, 0)); 33631 assert_true (ai_move (ai, 6, 0)); 33632 assert_true (ai_move (ai, 7, 6)); 33633 assert_true (ai_move (ai, 1, 6)); 33634 assert_true (ai_move (ai, 0, 6)); 33635 assert_true (ai_move (ai, 6, 6)); 33636 assert_true (ai_move (ai, 7, 7)); 33637 assert_true (game.pass ()); 33638 assert_true (ai_move (ai, 0, 7)); 33639 } 33640 33641 private static inline void test_complete_reversi_game_435 () 33642 { 33643 /* 0 1 2 3 4 5 6 7 */ 33644 string [] board = {/* 0 */ " . . . . . . . .", 33645 /* 1 */ " . . . . . . . .", 33646 /* 2 */ " . . . . . L . .", 33647 /* 3 */ " . . . D L . . .", 33648 /* 4 */ " . . D L L . . .", 33649 /* 5 */ " . D . D . . . .", 33650 /* 6 */ " . . . . . . . .", 33651 /* 7 */ " . . . . . . . ."}; 33652 33653 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 33654 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 33655 33656 assert_true (ai_move (ai, 5, 5)); 33657 assert_true (ai_move (ai, 5, 4)); 33658 assert_true (ai_move (ai, 5, 3)); 33659 assert_true (ai_move (ai, 1, 4)); 33660 assert_true (ai_move (ai, 5, 1)); 33661 assert_true (ai_move (ai, 4, 6)); 33662 assert_true (ai_move (ai, 2, 6)); 33663 assert_true (ai_move (ai, 3, 6)); 33664 assert_true (ai_move (ai, 1, 3)); 33665 assert_true (ai_move (ai, 0, 4)); 33666 assert_true (ai_move (ai, 5, 7)); 33667 assert_true (ai_move (ai, 2, 2)); 33668 assert_true (ai_move (ai, 3, 7)); 33669 assert_true (ai_move (ai, 3, 2)); 33670 assert_true (ai_move (ai, 0, 2)); 33671 assert_true (ai_move (ai, 1, 2)); 33672 assert_true (ai_move (ai, 4, 2)); 33673 assert_true (ai_move (ai, 6, 4)); 33674 assert_true (ai_move (ai, 6, 5)); 33675 assert_true (ai_move (ai, 6, 2)); 33676 assert_true (ai_move (ai, 6, 3)); 33677 assert_true (ai_move (ai, 4, 1)); 33678 assert_true (ai_move (ai, 7, 2)); 33679 assert_true (ai_move (ai, 2, 1)); 33680 assert_true (ai_move (ai, 2, 0)); 33681 assert_true (ai_move (ai, 7, 5)); 33682 assert_true (ai_move (ai, 7, 3)); 33683 assert_true (ai_move (ai, 4, 5)); 33684 assert_true (ai_move (ai, 5, 6)); 33685 assert_true (ai_move (ai, 7, 4)); 33686 assert_true (ai_move (ai, 7, 6)); 33687 assert_true (ai_move (ai, 3, 1)); 33688 assert_true (ai_move (ai, 4, 0)); 33689 assert_true (ai_move (ai, 3, 0)); 33690 assert_true (ai_move (ai, 2, 5)); 33691 assert_true (ai_move (ai, 0, 5)); 33692 assert_true (ai_move (ai, 2, 3)); 33693 assert_true (ai_move (ai, 5, 0)); 33694 assert_true (ai_move (ai, 6, 0)); 33695 assert_true (ai_move (ai, 2, 7)); 33696 assert_true (ai_move (ai, 6, 1)); 33697 assert_true (ai_move (ai, 4, 7)); 33698 assert_true (ai_move (ai, 1, 7)); 33699 assert_true (ai_move (ai, 7, 0)); 33700 assert_true (ai_move (ai, 0, 3)); 33701 assert_true (ai_move (ai, 1, 0)); 33702 assert_true (ai_move (ai, 0, 6)); 33703 assert_true (ai_move (ai, 1, 6)); 33704 assert_true (ai_move (ai, 1, 1)); 33705 assert_true (ai_move (ai, 7, 1)); 33706 assert_true (game.pass ()); 33707 assert_true (ai_move (ai, 7, 7)); 33708 assert_true (game.pass ()); 33709 assert_true (ai_move (ai, 6, 7)); 33710 assert_true (ai_move (ai, 6, 6)); 33711 assert_true (ai_move (ai, 0, 7)); 33712 assert_true (game.pass ()); 33713 assert_true (ai_move (ai, 0, 1)); 33714 assert_true (ai_move (ai, 0, 0)); 33715 } 33716 33717 private static inline void test_complete_reversi_game_436 () 33718 { 33719 /* 0 1 2 3 4 5 6 7 */ 33720 string [] board = {/* 0 */ " . . . . . . . .", 33721 /* 1 */ " . . . . . . . .", 33722 /* 2 */ " . . . . L . . .", 33723 /* 3 */ " . . . D L . . .", 33724 /* 4 */ " . . D L L . . .", 33725 /* 5 */ " . D . D . . . .", 33726 /* 6 */ " . . . . . . . .", 33727 /* 7 */ " . . . . . . . ."}; 33728 33729 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 33730 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 33731 33732 assert_true (ai_move (ai, 5, 1)); 33733 assert_true (ai_move (ai, 1, 4)); 33734 assert_true (ai_move (ai, 5, 5)); 33735 assert_true (ai_move (ai, 4, 1)); 33736 assert_true (ai_move (ai, 1, 3)); 33737 assert_true (ai_move (ai, 5, 4)); 33738 assert_true (ai_move (ai, 3, 1)); 33739 assert_true (ai_move (ai, 5, 6)); 33740 assert_true (ai_move (ai, 5, 3)); 33741 assert_true (ai_move (ai, 3, 6)); 33742 assert_true (ai_move (ai, 2, 6)); 33743 assert_true (ai_move (ai, 0, 4)); 33744 assert_true (ai_move (ai, 6, 4)); 33745 assert_true (ai_move (ai, 4, 6)); 33746 assert_true (ai_move (ai, 5, 7)); 33747 assert_true (ai_move (ai, 3, 7)); 33748 assert_true (ai_move (ai, 1, 7)); 33749 assert_true (ai_move (ai, 2, 2)); 33750 assert_true (ai_move (ai, 0, 2)); 33751 assert_true (ai_move (ai, 4, 0)); 33752 assert_true (ai_move (ai, 2, 0)); 33753 assert_true (ai_move (ai, 6, 2)); 33754 assert_true (ai_move (ai, 2, 5)); 33755 assert_true (ai_move (ai, 1, 2)); 33756 assert_true (ai_move (ai, 3, 2)); 33757 assert_true (ai_move (ai, 7, 3)); 33758 assert_true (ai_move (ai, 0, 5)); 33759 assert_true (ai_move (ai, 5, 2)); 33760 assert_true (ai_move (ai, 0, 3)); 33761 assert_true (ai_move (ai, 2, 3)); 33762 assert_true (ai_move (ai, 6, 3)); 33763 assert_true (ai_move (ai, 7, 2)); 33764 assert_true (ai_move (ai, 6, 5)); 33765 assert_true (ai_move (ai, 7, 5)); 33766 assert_true (ai_move (ai, 4, 7)); 33767 assert_true (ai_move (ai, 6, 7)); 33768 assert_true (ai_move (ai, 5, 0)); 33769 assert_true (ai_move (ai, 6, 0)); 33770 assert_true (ai_move (ai, 7, 4)); 33771 assert_true (ai_move (ai, 4, 5)); 33772 assert_true (ai_move (ai, 6, 6)); 33773 assert_true (ai_move (ai, 2, 1)); 33774 assert_true (ai_move (ai, 1, 0)); 33775 assert_true (ai_move (ai, 6, 1)); 33776 assert_true (ai_move (ai, 7, 0)); 33777 assert_true (ai_move (ai, 7, 1)); 33778 assert_true (ai_move (ai, 3, 0)); 33779 assert_true (ai_move (ai, 0, 6)); 33780 assert_true (ai_move (ai, 0, 7)); 33781 assert_true (ai_move (ai, 1, 6)); 33782 assert_true (ai_move (ai, 2, 7)); 33783 assert_true (ai_move (ai, 7, 7)); 33784 assert_true (ai_move (ai, 7, 6)); 33785 assert_true (ai_move (ai, 0, 1)); 33786 assert_true (ai_move (ai, 1, 1)); 33787 assert_true (ai_move (ai, 0, 0)); 33788 } 33789 33790 private static inline void test_complete_reversi_game_437 () 33791 { 33792 /* 0 1 2 3 4 5 6 7 */ 33793 string [] board = {/* 0 */ " . . . . . . . .", 33794 /* 1 */ " . . . . . . . .", 33795 /* 2 */ " . . . . . . . .", 33796 /* 3 */ " . . . D D . . .", 33797 /* 4 */ " . . D L L . . .", 33798 /* 5 */ " . D . L . . . .", 33799 /* 6 */ " . . . L . . . .", 33800 /* 7 */ " . . . . . . . ."}; 33801 33802 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 33803 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 33804 33805 assert_true (ai_move (ai, 4, 6)); 33806 assert_true (ai_move (ai, 2, 6)); 33807 assert_true (ai_move (ai, 5, 5)); 33808 assert_true (ai_move (ai, 1, 3)); 33809 assert_true (ai_move (ai, 0, 2)); 33810 assert_true (ai_move (ai, 1, 4)); 33811 assert_true (ai_move (ai, 3, 7)); 33812 assert_true (ai_move (ai, 5, 2)); 33813 assert_true (ai_move (ai, 5, 3)); 33814 assert_true (ai_move (ai, 5, 7)); 33815 assert_true (ai_move (ai, 5, 1)); 33816 assert_true (ai_move (ai, 6, 4)); 33817 assert_true (ai_move (ai, 5, 6)); 33818 assert_true (ai_move (ai, 5, 4)); 33819 assert_true (ai_move (ai, 6, 5)); 33820 assert_true (ai_move (ai, 7, 5)); 33821 assert_true (ai_move (ai, 4, 5)); 33822 assert_true (ai_move (ai, 4, 7)); 33823 assert_true (ai_move (ai, 6, 7)); 33824 assert_true (ai_move (ai, 6, 2)); 33825 assert_true (ai_move (ai, 6, 6)); 33826 assert_true (ai_move (ai, 5, 0)); 33827 assert_true (ai_move (ai, 0, 4)); 33828 assert_true (ai_move (ai, 2, 5)); 33829 assert_true (ai_move (ai, 3, 2)); 33830 assert_true (ai_move (ai, 0, 5)); 33831 assert_true (ai_move (ai, 2, 3)); 33832 assert_true (ai_move (ai, 2, 1)); 33833 assert_true (ai_move (ai, 3, 1)); 33834 assert_true (ai_move (ai, 4, 2)); 33835 assert_true (ai_move (ai, 2, 2)); 33836 assert_true (ai_move (ai, 3, 0)); 33837 assert_true (ai_move (ai, 4, 1)); 33838 assert_true (ai_move (ai, 1, 2)); 33839 assert_true (ai_move (ai, 0, 3)); 33840 assert_true (ai_move (ai, 0, 1)); 33841 assert_true (ai_move (ai, 4, 0)); 33842 assert_true (ai_move (ai, 2, 0)); 33843 assert_true (ai_move (ai, 7, 2)); 33844 assert_true (ai_move (ai, 6, 3)); 33845 assert_true (ai_move (ai, 1, 1)); 33846 assert_true (ai_move (ai, 7, 3)); 33847 assert_true (ai_move (ai, 7, 4)); 33848 assert_true (ai_move (ai, 7, 1)); 33849 assert_true (ai_move (ai, 1, 6)); 33850 assert_true (ai_move (ai, 0, 6)); 33851 assert_true (ai_move (ai, 6, 0)); 33852 assert_true (ai_move (ai, 7, 0)); 33853 assert_true (ai_move (ai, 6, 1)); 33854 assert_true (ai_move (ai, 0, 7)); 33855 assert_true (ai_move (ai, 1, 7)); 33856 assert_true (ai_move (ai, 2, 7)); 33857 assert_true (ai_move (ai, 1, 0)); 33858 assert_true (ai_move (ai, 7, 7)); 33859 assert_true (game.pass ()); 33860 assert_true (ai_move (ai, 0, 0)); 33861 assert_true (ai_move (ai, 7, 6)); 33862 } 33863 33864 private static inline void test_complete_reversi_game_438 () 33865 { 33866 /* 0 1 2 3 4 5 6 7 */ 33867 string [] board = {/* 0 */ " . . . . . . . .", 33868 /* 1 */ " . . . . . . . .", 33869 /* 2 */ " . . . L . . . .", 33870 /* 3 */ " . . . L D . . .", 33871 /* 4 */ " . . D L L . . .", 33872 /* 5 */ " . D . D . . . .", 33873 /* 6 */ " . . . . . . . .", 33874 /* 7 */ " . . . . . . . ."}; 33875 33876 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 33877 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 33878 33879 assert_true (ai_move (ai, 2, 1)); 33880 assert_true (ai_move (ai, 1, 4)); 33881 assert_true (ai_move (ai, 5, 3)); 33882 assert_true (ai_move (ai, 3, 1)); 33883 assert_true (ai_move (ai, 4, 2)); 33884 assert_true (ai_move (ai, 6, 4)); 33885 assert_true (ai_move (ai, 2, 5)); 33886 assert_true (ai_move (ai, 2, 6)); 33887 assert_true (ai_move (ai, 3, 6)); 33888 assert_true (ai_move (ai, 0, 4)); 33889 assert_true (ai_move (ai, 0, 5)); 33890 assert_true (ai_move (ai, 2, 2)); 33891 assert_true (ai_move (ai, 2, 7)); 33892 assert_true (ai_move (ai, 2, 0)); 33893 assert_true (ai_move (ai, 0, 3)); 33894 assert_true (ai_move (ai, 5, 4)); 33895 assert_true (ai_move (ai, 5, 2)); 33896 assert_true (ai_move (ai, 6, 2)); 33897 assert_true (ai_move (ai, 2, 3)); 33898 assert_true (ai_move (ai, 1, 3)); 33899 assert_true (ai_move (ai, 1, 2)); 33900 assert_true (ai_move (ai, 0, 2)); 33901 assert_true (ai_move (ai, 0, 1)); 33902 assert_true (ai_move (ai, 3, 7)); 33903 assert_true (ai_move (ai, 4, 1)); 33904 assert_true (ai_move (ai, 4, 0)); 33905 assert_true (ai_move (ai, 5, 1)); 33906 assert_true (ai_move (ai, 5, 0)); 33907 assert_true (ai_move (ai, 6, 3)); 33908 assert_true (ai_move (ai, 7, 2)); 33909 assert_true (ai_move (ai, 4, 7)); 33910 assert_true (ai_move (ai, 1, 6)); 33911 assert_true (ai_move (ai, 4, 6)); 33912 assert_true (ai_move (ai, 4, 5)); 33913 assert_true (ai_move (ai, 5, 5)); 33914 assert_true (ai_move (ai, 1, 7)); 33915 assert_true (ai_move (ai, 7, 5)); 33916 assert_true (ai_move (ai, 5, 7)); 33917 assert_true (ai_move (ai, 5, 6)); 33918 assert_true (ai_move (ai, 6, 7)); 33919 assert_true (ai_move (ai, 7, 3)); 33920 assert_true (ai_move (ai, 0, 6)); 33921 assert_true (ai_move (ai, 0, 7)); 33922 assert_true (ai_move (ai, 6, 6)); 33923 assert_true (ai_move (ai, 7, 7)); 33924 assert_true (ai_move (ai, 7, 4)); 33925 assert_true (ai_move (ai, 7, 1)); 33926 assert_true (ai_move (ai, 1, 1)); 33927 assert_true (ai_move (ai, 6, 5)); 33928 assert_true (ai_move (ai, 7, 6)); 33929 assert_true (ai_move (ai, 6, 0)); 33930 assert_true (ai_move (ai, 7, 0)); 33931 assert_true (ai_move (ai, 6, 1)); 33932 assert_true (game.pass ()); 33933 assert_true (ai_move (ai, 3, 0)); 33934 assert_true (ai_move (ai, 1, 0)); 33935 assert_true (ai_move (ai, 0, 0)); 33936 } 33937 33938 private static inline void test_complete_reversi_game_439 () 33939 { 33940 /* 0 1 2 3 4 5 6 7 */ 33941 string [] board = {/* 0 */ " . . . . . . . .", 33942 /* 1 */ " . . . . . . . .", 33943 /* 2 */ " . . . . . . . .", 33944 /* 3 */ " . . . D D . . .", 33945 /* 4 */ " . . D L L . . .", 33946 /* 5 */ " . D . L . . . .", 33947 /* 6 */ " . . L . . . . .", 33948 /* 7 */ " . . . . . . . ."}; 33949 33950 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 33951 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 33952 33953 assert_true (ai_move (ai, 4, 6)); 33954 assert_true (ai_move (ai, 3, 6)); 33955 assert_true (ai_move (ai, 5, 5)); 33956 assert_true (ai_move (ai, 1, 3)); 33957 assert_true (ai_move (ai, 0, 2)); 33958 assert_true (ai_move (ai, 1, 4)); 33959 assert_true (ai_move (ai, 3, 7)); 33960 assert_true (ai_move (ai, 5, 2)); 33961 assert_true (ai_move (ai, 5, 3)); 33962 assert_true (ai_move (ai, 5, 7)); 33963 assert_true (ai_move (ai, 5, 1)); 33964 assert_true (ai_move (ai, 6, 4)); 33965 assert_true (ai_move (ai, 5, 6)); 33966 assert_true (ai_move (ai, 5, 4)); 33967 assert_true (ai_move (ai, 6, 5)); 33968 assert_true (ai_move (ai, 7, 5)); 33969 assert_true (ai_move (ai, 4, 5)); 33970 assert_true (ai_move (ai, 4, 7)); 33971 assert_true (ai_move (ai, 6, 7)); 33972 assert_true (ai_move (ai, 6, 2)); 33973 assert_true (ai_move (ai, 6, 6)); 33974 assert_true (ai_move (ai, 5, 0)); 33975 assert_true (ai_move (ai, 0, 4)); 33976 assert_true (ai_move (ai, 2, 5)); 33977 assert_true (ai_move (ai, 3, 2)); 33978 assert_true (ai_move (ai, 0, 5)); 33979 assert_true (ai_move (ai, 2, 3)); 33980 assert_true (ai_move (ai, 2, 1)); 33981 assert_true (ai_move (ai, 3, 1)); 33982 assert_true (ai_move (ai, 4, 2)); 33983 assert_true (ai_move (ai, 2, 2)); 33984 assert_true (ai_move (ai, 3, 0)); 33985 assert_true (ai_move (ai, 4, 1)); 33986 assert_true (ai_move (ai, 1, 2)); 33987 assert_true (ai_move (ai, 0, 3)); 33988 assert_true (ai_move (ai, 0, 1)); 33989 assert_true (ai_move (ai, 4, 0)); 33990 assert_true (ai_move (ai, 2, 0)); 33991 assert_true (ai_move (ai, 7, 2)); 33992 assert_true (ai_move (ai, 6, 3)); 33993 assert_true (ai_move (ai, 1, 1)); 33994 assert_true (ai_move (ai, 7, 3)); 33995 assert_true (ai_move (ai, 7, 4)); 33996 assert_true (ai_move (ai, 7, 1)); 33997 assert_true (ai_move (ai, 1, 6)); 33998 assert_true (ai_move (ai, 0, 6)); 33999 assert_true (ai_move (ai, 6, 0)); 34000 assert_true (ai_move (ai, 7, 0)); 34001 assert_true (ai_move (ai, 6, 1)); 34002 assert_true (ai_move (ai, 0, 7)); 34003 assert_true (ai_move (ai, 1, 7)); 34004 assert_true (ai_move (ai, 2, 7)); 34005 assert_true (ai_move (ai, 1, 0)); 34006 assert_true (ai_move (ai, 7, 7)); 34007 assert_true (game.pass ()); 34008 assert_true (ai_move (ai, 0, 0)); 34009 assert_true (ai_move (ai, 7, 6)); 34010 } 34011 34012 private static inline void test_complete_reversi_game_440 () 34013 { 34014 /* 0 1 2 3 4 5 6 7 */ 34015 string [] board = {/* 0 */ " . . . . . . . .", 34016 /* 1 */ " . . . . . . . .", 34017 /* 2 */ " . . L . . . . .", 34018 /* 3 */ " . . . L D . . .", 34019 /* 4 */ " . . D L L . . .", 34020 /* 5 */ " . D . D . . . .", 34021 /* 6 */ " . . . . . . . .", 34022 /* 7 */ " . . . . . . . ."}; 34023 34024 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 34025 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 34026 34027 assert_true (ai_move (ai, 2, 5)); 34028 assert_true (ai_move (ai, 2, 6)); 34029 assert_true (ai_move (ai, 2, 7)); 34030 assert_true (ai_move (ai, 1, 3)); 34031 assert_true (ai_move (ai, 3, 6)); 34032 assert_true (ai_move (ai, 4, 6)); 34033 assert_true (ai_move (ai, 4, 5)); 34034 assert_true (ai_move (ai, 3, 7)); 34035 assert_true (ai_move (ai, 4, 7)); 34036 assert_true (ai_move (ai, 0, 5)); 34037 assert_true (ai_move (ai, 1, 4)); 34038 assert_true (ai_move (ai, 2, 3)); 34039 assert_true (ai_move (ai, 2, 1)); 34040 assert_true (ai_move (ai, 3, 1)); 34041 assert_true (ai_move (ai, 4, 2)); 34042 assert_true (ai_move (ai, 2, 0)); 34043 assert_true (ai_move (ai, 0, 2)); 34044 assert_true (ai_move (ai, 0, 4)); 34045 assert_true (ai_move (ai, 1, 1)); 34046 assert_true (ai_move (ai, 3, 2)); 34047 assert_true (ai_move (ai, 3, 0)); 34048 assert_true (ai_move (ai, 5, 1)); 34049 assert_true (ai_move (ai, 4, 1)); 34050 assert_true (ai_move (ai, 5, 7)); 34051 assert_true (ai_move (ai, 6, 7)); 34052 assert_true (ai_move (ai, 5, 0)); 34053 assert_true (ai_move (ai, 1, 0)); 34054 assert_true (ai_move (ai, 5, 6)); 34055 assert_true (ai_move (ai, 5, 4)); 34056 assert_true (ai_move (ai, 5, 2)); 34057 assert_true (ai_move (ai, 6, 2)); 34058 assert_true (ai_move (ai, 6, 3)); 34059 assert_true (ai_move (ai, 1, 2)); 34060 assert_true (ai_move (ai, 6, 5)); 34061 assert_true (ai_move (ai, 5, 5)); 34062 assert_true (ai_move (ai, 4, 0)); 34063 assert_true (ai_move (ai, 6, 0)); 34064 assert_true (ai_move (ai, 7, 2)); 34065 assert_true (ai_move (ai, 6, 4)); 34066 assert_true (ai_move (ai, 5, 3)); 34067 assert_true (ai_move (ai, 7, 5)); 34068 assert_true (ai_move (ai, 7, 4)); 34069 assert_true (ai_move (ai, 0, 3)); 34070 assert_true (ai_move (ai, 1, 6)); 34071 assert_true (ai_move (ai, 7, 3)); 34072 assert_true (ai_move (ai, 7, 6)); 34073 assert_true (ai_move (ai, 0, 7)); 34074 assert_true (ai_move (ai, 7, 1)); 34075 assert_true (ai_move (ai, 0, 6)); 34076 assert_true (ai_move (ai, 1, 7)); 34077 assert_true (ai_move (ai, 6, 1)); 34078 assert_true (ai_move (ai, 7, 7)); 34079 assert_true (ai_move (ai, 6, 6)); 34080 assert_true (ai_move (ai, 0, 0)); 34081 assert_true (ai_move (ai, 0, 1)); 34082 assert_true (ai_move (ai, 7, 0)); 34083 } 34084 34085 private static inline void test_complete_reversi_game_441 () 34086 { 34087 /* 0 1 2 3 4 5 6 7 */ 34088 string [] board = {/* 0 */ " . . . . . . . .", 34089 /* 1 */ " . . . . . . . .", 34090 /* 2 */ " . . . . . . . .", 34091 /* 3 */ " . . . D D . . .", 34092 /* 4 */ " . L L L L . . .", 34093 /* 5 */ " . D . D . . . .", 34094 /* 6 */ " . . . . . . . .", 34095 /* 7 */ " . . . . . . . ."}; 34096 34097 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 34098 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 34099 34100 assert_true (ai_move (ai, 5, 5)); 34101 assert_true (ai_move (ai, 5, 2)); 34102 assert_true (ai_move (ai, 5, 3)); 34103 assert_true (ai_move (ai, 3, 6)); 34104 assert_true (ai_move (ai, 5, 1)); 34105 assert_true (ai_move (ai, 5, 4)); 34106 assert_true (ai_move (ai, 6, 5)); 34107 assert_true (ai_move (ai, 6, 4)); 34108 assert_true (ai_move (ai, 7, 5)); 34109 assert_true (ai_move (ai, 5, 6)); 34110 assert_true (ai_move (ai, 4, 6)); 34111 assert_true (ai_move (ai, 6, 2)); 34112 assert_true (ai_move (ai, 4, 2)); 34113 assert_true (ai_move (ai, 5, 0)); 34114 assert_true (ai_move (ai, 6, 3)); 34115 assert_true (ai_move (ai, 7, 2)); 34116 assert_true (ai_move (ai, 5, 7)); 34117 assert_true (ai_move (ai, 4, 1)); 34118 assert_true (ai_move (ai, 3, 1)); 34119 assert_true (ai_move (ai, 3, 2)); 34120 assert_true (ai_move (ai, 7, 3)); 34121 assert_true (ai_move (ai, 7, 4)); 34122 assert_true (ai_move (ai, 7, 1)); 34123 assert_true (ai_move (ai, 3, 7)); 34124 assert_true (ai_move (ai, 4, 5)); 34125 assert_true (ai_move (ai, 3, 0)); 34126 assert_true (ai_move (ai, 2, 0)); 34127 assert_true (ai_move (ai, 2, 1)); 34128 assert_true (ai_move (ai, 4, 7)); 34129 assert_true (ai_move (ai, 6, 7)); 34130 assert_true (ai_move (ai, 2, 5)); 34131 assert_true (ai_move (ai, 2, 6)); 34132 assert_true (ai_move (ai, 1, 3)); 34133 assert_true (ai_move (ai, 2, 3)); 34134 assert_true (ai_move (ai, 4, 0)); 34135 assert_true (ai_move (ai, 1, 0)); 34136 assert_true (ai_move (ai, 2, 7)); 34137 assert_true (ai_move (ai, 1, 7)); 34138 assert_true (ai_move (ai, 1, 2)); 34139 assert_true (ai_move (ai, 2, 2)); 34140 assert_true (ai_move (ai, 6, 1)); 34141 assert_true (ai_move (ai, 6, 6)); 34142 assert_true (ai_move (ai, 1, 6)); 34143 assert_true (ai_move (ai, 0, 3)); 34144 assert_true (ai_move (ai, 0, 4)); 34145 assert_true (ai_move (ai, 7, 0)); 34146 assert_true (ai_move (ai, 0, 2)); 34147 assert_true (ai_move (ai, 7, 6)); 34148 assert_true (ai_move (ai, 7, 7)); 34149 assert_true (ai_move (ai, 0, 7)); 34150 assert_true (ai_move (ai, 1, 1)); 34151 assert_true (ai_move (ai, 0, 5)); 34152 assert_true (ai_move (ai, 6, 0)); 34153 assert_true (ai_move (ai, 0, 1)); 34154 assert_true (ai_move (ai, 0, 0)); 34155 assert_true (game.pass ()); 34156 assert_true (ai_move (ai, 0, 6)); 34157 } 34158 34159 private static inline void test_complete_reversi_game_442 () 34160 { 34161 /* 0 1 2 3 4 5 6 7 */ 34162 string [] board = {/* 0 */ " . . . . . . . .", 34163 /* 1 */ " . . . . . . . .", 34164 /* 2 */ " . . . . . L . .", 34165 /* 3 */ " . D . D L . . .", 34166 /* 4 */ " . . D L L . . .", 34167 /* 5 */ " . . . D . . . .", 34168 /* 6 */ " . . . . . . . .", 34169 /* 7 */ " . . . . . . . ."}; 34170 34171 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 34172 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 34173 34174 assert_true (ai_move (ai, 5, 5)); 34175 assert_true (ai_move (ai, 5, 4)); 34176 assert_true (ai_move (ai, 5, 3)); 34177 assert_true (ai_move (ai, 1, 4)); 34178 assert_true (ai_move (ai, 5, 1)); 34179 assert_true (ai_move (ai, 4, 6)); 34180 assert_true (ai_move (ai, 2, 6)); 34181 assert_true (ai_move (ai, 3, 6)); 34182 assert_true (ai_move (ai, 5, 7)); 34183 assert_true (ai_move (ai, 5, 6)); 34184 assert_true (ai_move (ai, 0, 4)); 34185 assert_true (ai_move (ai, 5, 0)); 34186 assert_true (ai_move (ai, 3, 7)); 34187 assert_true (ai_move (ai, 0, 2)); 34188 assert_true (ai_move (ai, 1, 5)); 34189 assert_true (ai_move (ai, 1, 7)); 34190 assert_true (ai_move (ai, 2, 2)); 34191 assert_true (ai_move (ai, 3, 2)); 34192 assert_true (ai_move (ai, 6, 2)); 34193 assert_true (ai_move (ai, 1, 2)); 34194 assert_true (ai_move (ai, 4, 0)); 34195 assert_true (ai_move (ai, 3, 0)); 34196 assert_true (ai_move (ai, 6, 4)); 34197 assert_true (ai_move (ai, 6, 3)); 34198 assert_true (ai_move (ai, 7, 2)); 34199 assert_true (ai_move (ai, 7, 5)); 34200 assert_true (ai_move (ai, 4, 1)); 34201 assert_true (ai_move (ai, 4, 2)); 34202 assert_true (ai_move (ai, 6, 5)); 34203 assert_true (ai_move (ai, 4, 5)); 34204 assert_true (ai_move (ai, 2, 1)); 34205 assert_true (ai_move (ai, 3, 1)); 34206 assert_true (ai_move (ai, 2, 0)); 34207 assert_true (ai_move (ai, 1, 0)); 34208 assert_true (ai_move (ai, 1, 6)); 34209 assert_true (ai_move (ai, 7, 4)); 34210 assert_true (ai_move (ai, 7, 3)); 34211 assert_true (ai_move (ai, 7, 1)); 34212 assert_true (ai_move (ai, 6, 1)); 34213 assert_true (ai_move (ai, 6, 6)); 34214 assert_true (ai_move (ai, 2, 3)); 34215 assert_true (ai_move (ai, 2, 5)); 34216 assert_true (ai_move (ai, 7, 7)); 34217 assert_true (ai_move (ai, 7, 0)); 34218 assert_true (ai_move (ai, 6, 0)); 34219 assert_true (ai_move (ai, 0, 7)); 34220 assert_true (ai_move (ai, 0, 0)); 34221 assert_true (ai_move (ai, 7, 6)); 34222 assert_true (ai_move (ai, 1, 1)); 34223 assert_true (ai_move (ai, 0, 6)); 34224 assert_true (ai_move (ai, 0, 5)); 34225 assert_true (ai_move (ai, 0, 3)); 34226 assert_true (ai_move (ai, 6, 7)); 34227 assert_true (ai_move (ai, 0, 1)); 34228 assert_true (game.pass ()); 34229 assert_true (ai_move (ai, 4, 7)); 34230 assert_true (ai_move (ai, 2, 7)); 34231 } 34232 34233 private static inline void test_complete_reversi_game_443 () 34234 { 34235 /* 0 1 2 3 4 5 6 7 */ 34236 string [] board = {/* 0 */ " . . . . . . . .", 34237 /* 1 */ " . . . . . . . .", 34238 /* 2 */ " . . . . L . . .", 34239 /* 3 */ " . D . D L . . .", 34240 /* 4 */ " . . D L L . . .", 34241 /* 5 */ " . . . D . . . .", 34242 /* 6 */ " . . . . . . . .", 34243 /* 7 */ " . . . . . . . ."}; 34244 34245 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 34246 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 34247 34248 assert_true (ai_move (ai, 5, 1)); 34249 assert_true (ai_move (ai, 1, 4)); 34250 assert_true (ai_move (ai, 5, 5)); 34251 assert_true (ai_move (ai, 4, 1)); 34252 assert_true (ai_move (ai, 1, 5)); 34253 assert_true (ai_move (ai, 5, 4)); 34254 assert_true (ai_move (ai, 3, 1)); 34255 assert_true (ai_move (ai, 5, 6)); 34256 assert_true (ai_move (ai, 5, 3)); 34257 assert_true (ai_move (ai, 3, 6)); 34258 assert_true (ai_move (ai, 2, 6)); 34259 assert_true (ai_move (ai, 0, 4)); 34260 assert_true (ai_move (ai, 6, 4)); 34261 assert_true (ai_move (ai, 4, 6)); 34262 assert_true (ai_move (ai, 5, 7)); 34263 assert_true (ai_move (ai, 3, 7)); 34264 assert_true (ai_move (ai, 1, 7)); 34265 assert_true (ai_move (ai, 2, 2)); 34266 assert_true (ai_move (ai, 0, 2)); 34267 assert_true (ai_move (ai, 4, 0)); 34268 assert_true (ai_move (ai, 2, 0)); 34269 assert_true (ai_move (ai, 6, 2)); 34270 assert_true (ai_move (ai, 2, 5)); 34271 assert_true (ai_move (ai, 1, 2)); 34272 assert_true (ai_move (ai, 3, 2)); 34273 assert_true (ai_move (ai, 7, 3)); 34274 assert_true (ai_move (ai, 0, 5)); 34275 assert_true (ai_move (ai, 5, 2)); 34276 assert_true (ai_move (ai, 0, 3)); 34277 assert_true (ai_move (ai, 2, 3)); 34278 assert_true (ai_move (ai, 6, 3)); 34279 assert_true (ai_move (ai, 7, 2)); 34280 assert_true (ai_move (ai, 6, 5)); 34281 assert_true (ai_move (ai, 7, 5)); 34282 assert_true (ai_move (ai, 4, 7)); 34283 assert_true (ai_move (ai, 6, 7)); 34284 assert_true (ai_move (ai, 5, 0)); 34285 assert_true (ai_move (ai, 6, 0)); 34286 assert_true (ai_move (ai, 7, 4)); 34287 assert_true (ai_move (ai, 4, 5)); 34288 assert_true (ai_move (ai, 6, 6)); 34289 assert_true (ai_move (ai, 2, 1)); 34290 assert_true (ai_move (ai, 1, 0)); 34291 assert_true (ai_move (ai, 6, 1)); 34292 assert_true (ai_move (ai, 7, 0)); 34293 assert_true (ai_move (ai, 7, 1)); 34294 assert_true (ai_move (ai, 3, 0)); 34295 assert_true (ai_move (ai, 0, 6)); 34296 assert_true (ai_move (ai, 0, 7)); 34297 assert_true (ai_move (ai, 1, 6)); 34298 assert_true (ai_move (ai, 2, 7)); 34299 assert_true (ai_move (ai, 7, 7)); 34300 assert_true (ai_move (ai, 7, 6)); 34301 assert_true (ai_move (ai, 0, 1)); 34302 assert_true (ai_move (ai, 1, 1)); 34303 assert_true (ai_move (ai, 0, 0)); 34304 } 34305 34306 private static inline void test_complete_reversi_game_444 () 34307 { 34308 /* 0 1 2 3 4 5 6 7 */ 34309 string [] board = {/* 0 */ " . . . . . . . .", 34310 /* 1 */ " . . . . . . . .", 34311 /* 2 */ " . . . . . . . .", 34312 /* 3 */ " . D . D D . . .", 34313 /* 4 */ " . . D L L . . .", 34314 /* 5 */ " . . . L . . . .", 34315 /* 6 */ " . . . L . . . .", 34316 /* 7 */ " . . . . . . . ."}; 34317 34318 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 34319 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 34320 34321 assert_true (ai_move (ai, 4, 6)); 34322 assert_true (ai_move (ai, 2, 6)); 34323 assert_true (ai_move (ai, 5, 5)); 34324 assert_true (ai_move (ai, 1, 4)); 34325 assert_true (ai_move (ai, 1, 5)); 34326 assert_true (ai_move (ai, 5, 2)); 34327 assert_true (ai_move (ai, 5, 3)); 34328 assert_true (ai_move (ai, 5, 7)); 34329 assert_true (ai_move (ai, 5, 1)); 34330 assert_true (ai_move (ai, 6, 4)); 34331 assert_true (ai_move (ai, 7, 5)); 34332 assert_true (ai_move (ai, 7, 3)); 34333 assert_true (ai_move (ai, 6, 6)); 34334 assert_true (ai_move (ai, 4, 2)); 34335 assert_true (ai_move (ai, 3, 2)); 34336 assert_true (ai_move (ai, 5, 0)); 34337 assert_true (ai_move (ai, 6, 2)); 34338 assert_true (ai_move (ai, 5, 4)); 34339 assert_true (ai_move (ai, 6, 3)); 34340 assert_true (ai_move (ai, 4, 1)); 34341 assert_true (ai_move (ai, 3, 1)); 34342 assert_true (ai_move (ai, 2, 0)); 34343 assert_true (ai_move (ai, 4, 5)); 34344 assert_true (ai_move (ai, 6, 5)); 34345 assert_true (ai_move (ai, 2, 5)); 34346 assert_true (ai_move (ai, 5, 6)); 34347 assert_true (ai_move (ai, 2, 7)); 34348 assert_true (ai_move (ai, 0, 5)); 34349 assert_true (ai_move (ai, 7, 4)); 34350 assert_true (ai_move (ai, 7, 2)); 34351 assert_true (ai_move (ai, 7, 1)); 34352 assert_true (ai_move (ai, 3, 7)); 34353 assert_true (ai_move (ai, 4, 7)); 34354 assert_true (ai_move (ai, 1, 7)); 34355 assert_true (ai_move (ai, 2, 3)); 34356 assert_true (ai_move (ai, 1, 6)); 34357 assert_true (ai_move (ai, 4, 0)); 34358 assert_true (ai_move (ai, 2, 1)); 34359 assert_true (ai_move (ai, 3, 0)); 34360 assert_true (ai_move (ai, 0, 2)); 34361 assert_true (ai_move (ai, 0, 3)); 34362 assert_true (ai_move (ai, 0, 4)); 34363 assert_true (ai_move (ai, 1, 2)); 34364 assert_true (ai_move (ai, 6, 1)); 34365 assert_true (ai_move (ai, 0, 6)); 34366 assert_true (ai_move (ai, 0, 7)); 34367 assert_true (ai_move (ai, 1, 0)); 34368 assert_true (ai_move (ai, 0, 0)); 34369 assert_true (ai_move (ai, 6, 0)); 34370 assert_true (ai_move (ai, 1, 1)); 34371 assert_true (ai_move (ai, 0, 1)); 34372 assert_true (ai_move (ai, 6, 7)); 34373 assert_true (game.pass ()); 34374 assert_true (ai_move (ai, 2, 2)); 34375 assert_true (game.pass ()); 34376 assert_true (ai_move (ai, 7, 7)); 34377 assert_true (ai_move (ai, 7, 6)); 34378 assert_true (ai_move (ai, 7, 0)); 34379 } 34380 34381 private static inline void test_complete_reversi_game_445 () 34382 { 34383 /* 0 1 2 3 4 5 6 7 */ 34384 string [] board = {/* 0 */ " . . . . . . . .", 34385 /* 1 */ " . . . . . . . .", 34386 /* 2 */ " . . . L . . . .", 34387 /* 3 */ " . D . L D . . .", 34388 /* 4 */ " . . D L L . . .", 34389 /* 5 */ " . . . D . . . .", 34390 /* 6 */ " . . . . . . . .", 34391 /* 7 */ " . . . . . . . ."}; 34392 34393 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 34394 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 34395 34396 assert_true (ai_move (ai, 2, 1)); 34397 assert_true (ai_move (ai, 1, 5)); 34398 assert_true (ai_move (ai, 5, 3)); 34399 assert_true (ai_move (ai, 3, 1)); 34400 assert_true (ai_move (ai, 4, 1)); 34401 assert_true (ai_move (ai, 4, 6)); 34402 assert_true (ai_move (ai, 2, 6)); 34403 assert_true (ai_move (ai, 3, 6)); 34404 assert_true (ai_move (ai, 0, 4)); 34405 assert_true (ai_move (ai, 0, 2)); 34406 assert_true (ai_move (ai, 4, 2)); 34407 assert_true (ai_move (ai, 1, 4)); 34408 assert_true (ai_move (ai, 2, 2)); 34409 assert_true (ai_move (ai, 5, 4)); 34410 assert_true (ai_move (ai, 6, 5)); 34411 assert_true (ai_move (ai, 6, 4)); 34412 assert_true (ai_move (ai, 7, 5)); 34413 assert_true (ai_move (ai, 6, 2)); 34414 assert_true (ai_move (ai, 6, 3)); 34415 assert_true (ai_move (ai, 7, 2)); 34416 assert_true (ai_move (ai, 7, 3)); 34417 assert_true (ai_move (ai, 5, 2)); 34418 assert_true (ai_move (ai, 5, 1)); 34419 assert_true (ai_move (ai, 2, 0)); 34420 assert_true (ai_move (ai, 5, 5)); 34421 assert_true (ai_move (ai, 4, 0)); 34422 assert_true (ai_move (ai, 5, 0)); 34423 assert_true (ai_move (ai, 1, 2)); 34424 assert_true (ai_move (ai, 2, 3)); 34425 assert_true (ai_move (ai, 3, 0)); 34426 assert_true (ai_move (ai, 1, 0)); 34427 assert_true (ai_move (ai, 0, 6)); 34428 assert_true (ai_move (ai, 2, 5)); 34429 assert_true (ai_move (ai, 3, 7)); 34430 assert_true (ai_move (ai, 2, 7)); 34431 assert_true (ai_move (ai, 4, 5)); 34432 assert_true (ai_move (ai, 7, 4)); 34433 assert_true (ai_move (ai, 7, 6)); 34434 assert_true (ai_move (ai, 5, 7)); 34435 assert_true (ai_move (ai, 4, 7)); 34436 assert_true (ai_move (ai, 5, 6)); 34437 assert_true (ai_move (ai, 7, 1)); 34438 assert_true (ai_move (ai, 0, 3)); 34439 assert_true (ai_move (ai, 0, 5)); 34440 assert_true (ai_move (ai, 6, 6)); 34441 assert_true (ai_move (ai, 0, 1)); 34442 assert_true (ai_move (ai, 1, 1)); 34443 assert_true (ai_move (ai, 0, 0)); 34444 assert_true (ai_move (ai, 1, 6)); 34445 assert_true (ai_move (ai, 6, 0)); 34446 assert_true (ai_move (ai, 6, 1)); 34447 assert_true (ai_move (ai, 7, 0)); 34448 assert_true (game.pass ()); 34449 assert_true (ai_move (ai, 7, 7)); 34450 assert_true (ai_move (ai, 6, 7)); 34451 assert_true (ai_move (ai, 1, 7)); 34452 assert_true (ai_move (ai, 0, 7)); 34453 } 34454 34455 private static inline void test_complete_reversi_game_446 () 34456 { 34457 /* 0 1 2 3 4 5 6 7 */ 34458 string [] board = {/* 0 */ " . . . . . . . .", 34459 /* 1 */ " . . . . . . . .", 34460 /* 2 */ " . . . . . . . .", 34461 /* 3 */ " . D . D D . . .", 34462 /* 4 */ " . . D L L . . .", 34463 /* 5 */ " . . . L . . . .", 34464 /* 6 */ " . . L . . . . .", 34465 /* 7 */ " . . . . . . . ."}; 34466 34467 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 34468 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 34469 34470 assert_true (ai_move (ai, 4, 6)); 34471 assert_true (ai_move (ai, 3, 6)); 34472 assert_true (ai_move (ai, 5, 5)); 34473 assert_true (ai_move (ai, 1, 4)); 34474 assert_true (ai_move (ai, 1, 5)); 34475 assert_true (ai_move (ai, 5, 2)); 34476 assert_true (ai_move (ai, 5, 3)); 34477 assert_true (ai_move (ai, 5, 7)); 34478 assert_true (ai_move (ai, 5, 1)); 34479 assert_true (ai_move (ai, 6, 4)); 34480 assert_true (ai_move (ai, 7, 5)); 34481 assert_true (ai_move (ai, 7, 3)); 34482 assert_true (ai_move (ai, 6, 6)); 34483 assert_true (ai_move (ai, 4, 2)); 34484 assert_true (ai_move (ai, 3, 2)); 34485 assert_true (ai_move (ai, 5, 0)); 34486 assert_true (ai_move (ai, 6, 2)); 34487 assert_true (ai_move (ai, 5, 4)); 34488 assert_true (ai_move (ai, 6, 3)); 34489 assert_true (ai_move (ai, 4, 1)); 34490 assert_true (ai_move (ai, 3, 1)); 34491 assert_true (ai_move (ai, 2, 0)); 34492 assert_true (ai_move (ai, 4, 5)); 34493 assert_true (ai_move (ai, 6, 5)); 34494 assert_true (ai_move (ai, 2, 5)); 34495 assert_true (ai_move (ai, 5, 6)); 34496 assert_true (ai_move (ai, 2, 7)); 34497 assert_true (ai_move (ai, 0, 5)); 34498 assert_true (ai_move (ai, 7, 4)); 34499 assert_true (ai_move (ai, 7, 2)); 34500 assert_true (ai_move (ai, 7, 1)); 34501 assert_true (ai_move (ai, 3, 7)); 34502 assert_true (ai_move (ai, 4, 7)); 34503 assert_true (ai_move (ai, 1, 7)); 34504 assert_true (ai_move (ai, 2, 3)); 34505 assert_true (ai_move (ai, 1, 6)); 34506 assert_true (ai_move (ai, 4, 0)); 34507 assert_true (ai_move (ai, 2, 1)); 34508 assert_true (ai_move (ai, 3, 0)); 34509 assert_true (ai_move (ai, 0, 2)); 34510 assert_true (ai_move (ai, 0, 3)); 34511 assert_true (ai_move (ai, 0, 4)); 34512 assert_true (ai_move (ai, 1, 2)); 34513 assert_true (ai_move (ai, 6, 1)); 34514 assert_true (ai_move (ai, 0, 6)); 34515 assert_true (ai_move (ai, 0, 7)); 34516 assert_true (ai_move (ai, 1, 0)); 34517 assert_true (ai_move (ai, 0, 0)); 34518 assert_true (ai_move (ai, 6, 0)); 34519 assert_true (ai_move (ai, 1, 1)); 34520 assert_true (ai_move (ai, 0, 1)); 34521 assert_true (ai_move (ai, 6, 7)); 34522 assert_true (game.pass ()); 34523 assert_true (ai_move (ai, 2, 2)); 34524 assert_true (game.pass ()); 34525 assert_true (ai_move (ai, 7, 7)); 34526 assert_true (ai_move (ai, 7, 6)); 34527 assert_true (ai_move (ai, 7, 0)); 34528 } 34529 34530 private static inline void test_complete_reversi_game_447 () 34531 { 34532 /* 0 1 2 3 4 5 6 7 */ 34533 string [] board = {/* 0 */ " . . . . . . . .", 34534 /* 1 */ " . . . . . . . .", 34535 /* 2 */ " . . L . . . . .", 34536 /* 3 */ " . D . L D . . .", 34537 /* 4 */ " . . D L L . . .", 34538 /* 5 */ " . . . D . . . .", 34539 /* 6 */ " . . . . . . . .", 34540 /* 7 */ " . . . . . . . ."}; 34541 34542 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 34543 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 34544 34545 assert_true (ai_move (ai, 3, 1)); 34546 assert_true (ai_move (ai, 1, 5)); 34547 assert_true (ai_move (ai, 5, 3)); 34548 assert_true (ai_move (ai, 4, 6)); 34549 assert_true (ai_move (ai, 2, 6)); 34550 assert_true (ai_move (ai, 3, 6)); 34551 assert_true (ai_move (ai, 0, 4)); 34552 assert_true (ai_move (ai, 0, 2)); 34553 assert_true (ai_move (ai, 1, 4)); 34554 assert_true (ai_move (ai, 5, 5)); 34555 assert_true (ai_move (ai, 2, 3)); 34556 assert_true (ai_move (ai, 6, 2)); 34557 assert_true (ai_move (ai, 1, 2)); 34558 assert_true (ai_move (ai, 4, 2)); 34559 assert_true (ai_move (ai, 5, 1)); 34560 assert_true (ai_move (ai, 4, 1)); 34561 assert_true (ai_move (ai, 7, 3)); 34562 assert_true (ai_move (ai, 2, 0)); 34563 assert_true (ai_move (ai, 4, 0)); 34564 assert_true (ai_move (ai, 2, 1)); 34565 assert_true (ai_move (ai, 5, 7)); 34566 assert_true (ai_move (ai, 3, 7)); 34567 assert_true (ai_move (ai, 5, 4)); 34568 assert_true (ai_move (ai, 6, 5)); 34569 assert_true (ai_move (ai, 6, 4)); 34570 assert_true (ai_move (ai, 7, 5)); 34571 assert_true (ai_move (ai, 7, 4)); 34572 assert_true (ai_move (ai, 7, 2)); 34573 assert_true (ai_move (ai, 5, 6)); 34574 assert_true (ai_move (ai, 6, 3)); 34575 assert_true (ai_move (ai, 3, 0)); 34576 assert_true (ai_move (ai, 5, 0)); 34577 assert_true (ai_move (ai, 5, 2)); 34578 assert_true (ai_move (ai, 6, 0)); 34579 assert_true (ai_move (ai, 3, 2)); 34580 assert_true (ai_move (ai, 0, 5)); 34581 assert_true (ai_move (ai, 6, 6)); 34582 assert_true (ai_move (ai, 1, 0)); 34583 assert_true (ai_move (ai, 0, 6)); 34584 assert_true (ai_move (ai, 0, 1)); 34585 assert_true (ai_move (ai, 1, 1)); 34586 assert_true (ai_move (ai, 4, 5)); 34587 assert_true (ai_move (ai, 2, 5)); 34588 assert_true (ai_move (ai, 0, 0)); 34589 assert_true (ai_move (ai, 7, 6)); 34590 assert_true (ai_move (ai, 7, 7)); 34591 assert_true (ai_move (ai, 6, 7)); 34592 assert_true (ai_move (ai, 4, 7)); 34593 assert_true (ai_move (ai, 2, 7)); 34594 assert_true (ai_move (ai, 0, 3)); 34595 assert_true (ai_move (ai, 1, 6)); 34596 assert_true (ai_move (ai, 7, 1)); 34597 assert_true (ai_move (ai, 6, 1)); 34598 assert_true (ai_move (ai, 1, 7)); 34599 assert_true (ai_move (ai, 0, 7)); 34600 } 34601 34602 private static inline void test_complete_reversi_game_448 () 34603 { 34604 /* 0 1 2 3 4 5 6 7 */ 34605 string [] board = {/* 0 */ " . . . . . . . .", 34606 /* 1 */ " . . . . . . . .", 34607 /* 2 */ " . . . . . . . .", 34608 /* 3 */ " . D . D D . . .", 34609 /* 4 */ " . L L L L . . .", 34610 /* 5 */ " . . . D . . . .", 34611 /* 6 */ " . . . . . . . .", 34612 /* 7 */ " . . . . . . . ."}; 34613 34614 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 34615 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 34616 34617 assert_true (ai_move (ai, 5, 5)); 34618 assert_true (ai_move (ai, 4, 6)); 34619 assert_true (ai_move (ai, 2, 6)); 34620 assert_true (ai_move (ai, 6, 4)); 34621 assert_true (ai_move (ai, 5, 7)); 34622 assert_true (ai_move (ai, 3, 6)); 34623 assert_true (ai_move (ai, 7, 3)); 34624 assert_true (ai_move (ai, 5, 2)); 34625 assert_true (ai_move (ai, 5, 3)); 34626 assert_true (ai_move (ai, 5, 6)); 34627 assert_true (ai_move (ai, 5, 1)); 34628 assert_true (ai_move (ai, 0, 2)); 34629 assert_true (ai_move (ai, 1, 5)); 34630 assert_true (ai_move (ai, 5, 4)); 34631 assert_true (ai_move (ai, 6, 5)); 34632 assert_true (ai_move (ai, 7, 5)); 34633 assert_true (ai_move (ai, 4, 5)); 34634 assert_true (ai_move (ai, 6, 3)); 34635 assert_true (ai_move (ai, 4, 7)); 34636 assert_true (ai_move (ai, 4, 1)); 34637 assert_true (ai_move (ai, 7, 2)); 34638 assert_true (ai_move (ai, 5, 0)); 34639 assert_true (ai_move (ai, 3, 0)); 34640 assert_true (ai_move (ai, 3, 1)); 34641 assert_true (ai_move (ai, 2, 7)); 34642 assert_true (ai_move (ai, 4, 2)); 34643 assert_true (ai_move (ai, 6, 2)); 34644 assert_true (ai_move (ai, 7, 4)); 34645 assert_true (ai_move (ai, 7, 6)); 34646 assert_true (ai_move (ai, 2, 2)); 34647 assert_true (ai_move (ai, 0, 4)); 34648 assert_true (ai_move (ai, 6, 6)); 34649 assert_true (ai_move (ai, 2, 3)); 34650 assert_true (ai_move (ai, 3, 2)); 34651 assert_true (ai_move (ai, 1, 2)); 34652 assert_true (ai_move (ai, 0, 3)); 34653 assert_true (ai_move (ai, 7, 7)); 34654 assert_true (ai_move (ai, 6, 7)); 34655 assert_true (ai_move (ai, 0, 1)); 34656 assert_true (ai_move (ai, 2, 5)); 34657 assert_true (ai_move (ai, 2, 0)); 34658 assert_true (ai_move (ai, 3, 7)); 34659 assert_true (ai_move (ai, 4, 0)); 34660 assert_true (ai_move (ai, 1, 0)); 34661 assert_true (ai_move (ai, 1, 6)); 34662 assert_true (ai_move (ai, 2, 1)); 34663 assert_true (ai_move (ai, 1, 1)); 34664 assert_true (ai_move (ai, 6, 0)); 34665 assert_true (ai_move (ai, 6, 1)); 34666 assert_true (ai_move (ai, 0, 0)); 34667 assert_true (game.pass ()); 34668 assert_true (ai_move (ai, 0, 5)); 34669 assert_true (ai_move (ai, 0, 6)); 34670 assert_true (ai_move (ai, 7, 0)); 34671 assert_true (ai_move (ai, 7, 1)); 34672 assert_true (ai_move (ai, 0, 7)); 34673 assert_true (ai_move (ai, 1, 7)); 34674 } 34675 34676 private static inline void test_complete_reversi_game_449 () 34677 { 34678 /* 0 1 2 3 4 5 6 7 */ 34679 string [] board = {/* 0 */ " . . . . . . . .", 34680 /* 1 */ " . . . . . . . .", 34681 /* 2 */ " . . L . . . . .", 34682 /* 3 */ " . . . L D . . .", 34683 /* 4 */ " . . . D L D . .", 34684 /* 5 */ " . . . D . L . .", 34685 /* 6 */ " . . . . . . . .", 34686 /* 7 */ " . . . . . . . ."}; 34687 34688 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 34689 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 34690 34691 assert_true (ai_move (ai, 5, 6)); 34692 assert_true (ai_move (ai, 2, 6)); 34693 assert_true (ai_move (ai, 3, 6)); 34694 assert_true (ai_move (ai, 5, 3)); 34695 assert_true (ai_move (ai, 5, 2)); 34696 assert_true (ai_move (ai, 6, 2)); 34697 assert_true (ai_move (ai, 6, 3)); 34698 assert_true (ai_move (ai, 4, 2)); 34699 assert_true (ai_move (ai, 5, 1)); 34700 assert_true (ai_move (ai, 7, 3)); 34701 assert_true (ai_move (ai, 7, 4)); 34702 assert_true (ai_move (ai, 7, 5)); 34703 assert_true (ai_move (ai, 7, 2)); 34704 assert_true (ai_move (ai, 7, 1)); 34705 assert_true (ai_move (ai, 2, 4)); 34706 assert_true (ai_move (ai, 6, 4)); 34707 assert_true (ai_move (ai, 4, 5)); 34708 assert_true (ai_move (ai, 4, 1)); 34709 assert_true (ai_move (ai, 4, 0)); 34710 assert_true (ai_move (ai, 3, 1)); 34711 assert_true (ai_move (ai, 6, 5)); 34712 assert_true (ai_move (ai, 5, 7)); 34713 assert_true (ai_move (ai, 4, 7)); 34714 assert_true (ai_move (ai, 3, 7)); 34715 assert_true (ai_move (ai, 2, 1)); 34716 assert_true (ai_move (ai, 2, 0)); 34717 assert_true (ai_move (ai, 1, 3)); 34718 assert_true (ai_move (ai, 7, 6)); 34719 assert_true (ai_move (ai, 6, 6)); 34720 assert_true (ai_move (ai, 1, 4)); 34721 assert_true (ai_move (ai, 2, 3)); 34722 assert_true (ai_move (ai, 5, 0)); 34723 assert_true (ai_move (ai, 2, 5)); 34724 assert_true (ai_move (ai, 3, 0)); 34725 assert_true (ai_move (ai, 2, 7)); 34726 assert_true (ai_move (ai, 1, 7)); 34727 assert_true (ai_move (ai, 4, 6)); 34728 assert_true (ai_move (ai, 1, 5)); 34729 assert_true (ai_move (ai, 0, 4)); 34730 assert_true (ai_move (ai, 3, 2)); 34731 assert_true (ai_move (ai, 6, 1)); 34732 assert_true (ai_move (ai, 0, 5)); 34733 assert_true (ai_move (ai, 0, 3)); 34734 assert_true (ai_move (ai, 0, 2)); 34735 assert_true (ai_move (ai, 1, 6)); 34736 assert_true (ai_move (ai, 1, 2)); 34737 assert_true (ai_move (ai, 1, 1)); 34738 assert_true (ai_move (ai, 6, 7)); 34739 assert_true (game.pass ()); 34740 assert_true (ai_move (ai, 0, 6)); 34741 assert_true (ai_move (ai, 0, 7)); 34742 assert_true (ai_move (ai, 6, 0)); 34743 assert_true (ai_move (ai, 7, 7)); 34744 assert_true (ai_move (ai, 1, 0)); 34745 assert_true (ai_move (ai, 7, 0)); 34746 assert_true (game.pass ()); 34747 assert_true (ai_move (ai, 0, 0)); 34748 assert_true (ai_move (ai, 0, 1)); 34749 } 34750 34751 private static inline void test_complete_reversi_game_450 () 34752 { 34753 /* 0 1 2 3 4 5 6 7 */ 34754 string [] board = {/* 0 */ " . . . . . . . .", 34755 /* 1 */ " . . . . . . . .", 34756 /* 2 */ " . . L . . . . .", 34757 /* 3 */ " . . . L L L . .", 34758 /* 4 */ " . . . D D D . .", 34759 /* 5 */ " . . . D . . . .", 34760 /* 6 */ " . . . . . . . .", 34761 /* 7 */ " . . . . . . . ."}; 34762 34763 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 34764 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 34765 34766 assert_true (ai_move (ai, 6, 2)); 34767 assert_true (ai_move (ai, 6, 3)); 34768 assert_true (ai_move (ai, 7, 2)); 34769 assert_true (ai_move (ai, 6, 5)); 34770 assert_true (ai_move (ai, 4, 5)); 34771 assert_true (ai_move (ai, 5, 5)); 34772 assert_true (ai_move (ai, 6, 4)); 34773 assert_true (ai_move (ai, 7, 5)); 34774 assert_true (ai_move (ai, 5, 6)); 34775 assert_true (ai_move (ai, 5, 7)); 34776 assert_true (ai_move (ai, 7, 4)); 34777 assert_true (ai_move (ai, 4, 6)); 34778 assert_true (ai_move (ai, 3, 6)); 34779 assert_true (ai_move (ai, 2, 3)); 34780 assert_true (ai_move (ai, 5, 2)); 34781 assert_true (ai_move (ai, 4, 2)); 34782 assert_true (ai_move (ai, 4, 7)); 34783 assert_true (ai_move (ai, 2, 4)); 34784 assert_true (ai_move (ai, 2, 6)); 34785 assert_true (ai_move (ai, 5, 1)); 34786 assert_true (ai_move (ai, 5, 0)); 34787 assert_true (ai_move (ai, 2, 5)); 34788 assert_true (ai_move (ai, 7, 3)); 34789 assert_true (ai_move (ai, 7, 1)); 34790 assert_true (ai_move (ai, 3, 7)); 34791 assert_true (ai_move (ai, 7, 6)); 34792 assert_true (ai_move (ai, 3, 1)); 34793 assert_true (ai_move (ai, 3, 2)); 34794 assert_true (ai_move (ai, 1, 5)); 34795 assert_true (ai_move (ai, 0, 5)); 34796 assert_true (ai_move (ai, 4, 1)); 34797 assert_true (ai_move (ai, 2, 7)); 34798 assert_true (ai_move (ai, 1, 2)); 34799 assert_true (ai_move (ai, 2, 0)); 34800 assert_true (ai_move (ai, 4, 0)); 34801 assert_true (ai_move (ai, 0, 2)); 34802 assert_true (ai_move (ai, 2, 1)); 34803 assert_true (ai_move (ai, 6, 7)); 34804 assert_true (ai_move (ai, 1, 4)); 34805 assert_true (ai_move (ai, 6, 1)); 34806 assert_true (ai_move (ai, 0, 3)); 34807 assert_true (ai_move (ai, 1, 3)); 34808 assert_true (ai_move (ai, 0, 4)); 34809 assert_true (ai_move (ai, 3, 0)); 34810 assert_true (ai_move (ai, 1, 0)); 34811 assert_true (ai_move (ai, 1, 1)); 34812 assert_true (ai_move (ai, 0, 6)); 34813 assert_true (ai_move (ai, 0, 7)); 34814 assert_true (ai_move (ai, 0, 0)); 34815 assert_true (ai_move (ai, 1, 6)); 34816 assert_true (ai_move (ai, 1, 7)); 34817 assert_true (ai_move (ai, 6, 0)); 34818 assert_true (ai_move (ai, 7, 7)); 34819 assert_true (ai_move (ai, 0, 1)); 34820 assert_true (ai_move (ai, 7, 0)); 34821 assert_true (game.pass ()); 34822 assert_true (ai_move (ai, 6, 6)); 34823 } 34824 34825 private static inline void test_complete_reversi_game_451 () 34826 { 34827 /* 0 1 2 3 4 5 6 7 */ 34828 string [] board = {/* 0 */ " . . . . . . . .", 34829 /* 1 */ " . . . . . . . .", 34830 /* 2 */ " . . L . . . . .", 34831 /* 3 */ " . . . L D . . .", 34832 /* 4 */ " . . . L D D . .", 34833 /* 5 */ " . . . L . . . .", 34834 /* 6 */ " . . . L . . . .", 34835 /* 7 */ " . . . . . . . ."}; 34836 34837 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 34838 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 34839 34840 assert_true (ai_move (ai, 2, 6)); 34841 assert_true (ai_move (ai, 5, 2)); 34842 assert_true (ai_move (ai, 3, 7)); 34843 assert_true (ai_move (ai, 6, 5)); 34844 assert_true (ai_move (ai, 6, 4)); 34845 assert_true (ai_move (ai, 6, 3)); 34846 assert_true (ai_move (ai, 7, 4)); 34847 assert_true (ai_move (ai, 5, 5)); 34848 assert_true (ai_move (ai, 4, 6)); 34849 assert_true (ai_move (ai, 4, 5)); 34850 assert_true (ai_move (ai, 7, 5)); 34851 assert_true (ai_move (ai, 5, 6)); 34852 assert_true (ai_move (ai, 4, 7)); 34853 assert_true (ai_move (ai, 2, 5)); 34854 assert_true (ai_move (ai, 1, 5)); 34855 assert_true (ai_move (ai, 2, 7)); 34856 assert_true (ai_move (ai, 1, 7)); 34857 assert_true (ai_move (ai, 1, 4)); 34858 assert_true (ai_move (ai, 7, 2)); 34859 assert_true (ai_move (ai, 0, 5)); 34860 assert_true (ai_move (ai, 4, 1)); 34861 assert_true (ai_move (ai, 6, 1)); 34862 assert_true (ai_move (ai, 0, 3)); 34863 assert_true (ai_move (ai, 2, 3)); 34864 assert_true (ai_move (ai, 0, 4)); 34865 assert_true (ai_move (ai, 0, 2)); 34866 assert_true (ai_move (ai, 5, 3)); 34867 assert_true (ai_move (ai, 5, 7)); 34868 assert_true (ai_move (ai, 6, 7)); 34869 assert_true (ai_move (ai, 3, 0)); 34870 assert_true (ai_move (ai, 5, 1)); 34871 assert_true (ai_move (ai, 7, 3)); 34872 assert_true (ai_move (ai, 6, 2)); 34873 assert_true (ai_move (ai, 4, 0)); 34874 assert_true (ai_move (ai, 4, 2)); 34875 assert_true (ai_move (ai, 3, 2)); 34876 assert_true (ai_move (ai, 2, 1)); 34877 assert_true (ai_move (ai, 3, 1)); 34878 assert_true (ai_move (ai, 2, 0)); 34879 assert_true (ai_move (ai, 1, 2)); 34880 assert_true (ai_move (ai, 7, 0)); 34881 assert_true (ai_move (ai, 7, 1)); 34882 assert_true (ai_move (ai, 5, 0)); 34883 assert_true (ai_move (ai, 6, 0)); 34884 assert_true (ai_move (ai, 2, 4)); 34885 assert_true (ai_move (ai, 1, 3)); 34886 assert_true (ai_move (ai, 0, 1)); 34887 assert_true (ai_move (ai, 0, 0)); 34888 assert_true (game.pass ()); 34889 assert_true (ai_move (ai, 1, 0)); 34890 assert_true (ai_move (ai, 1, 1)); 34891 assert_true (ai_move (ai, 0, 6)); 34892 assert_true (ai_move (ai, 1, 6)); 34893 assert_true (ai_move (ai, 0, 7)); 34894 assert_true (game.pass ()); 34895 assert_true (ai_move (ai, 7, 7)); 34896 assert_true (game.pass ()); 34897 assert_true (ai_move (ai, 6, 6)); 34898 assert_true (ai_move (ai, 7, 6)); 34899 } 34900 34901 private static inline void test_complete_reversi_game_452 () 34902 { 34903 /* 0 1 2 3 4 5 6 7 */ 34904 string [] board = {/* 0 */ " . . . . . . . .", 34905 /* 1 */ " . . . . . . . .", 34906 /* 2 */ " . . L . . . . .", 34907 /* 3 */ " . . . L L L L .", 34908 /* 4 */ " . . . D D . . .", 34909 /* 5 */ " . . . D . . . .", 34910 /* 6 */ " . . . . . . . .", 34911 /* 7 */ " . . . . . . . ."}; 34912 34913 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 34914 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 34915 34916 assert_true (ai_move (ai, 6, 2)); 34917 assert_true (ai_move (ai, 5, 5)); 34918 assert_true (ai_move (ai, 7, 3)); 34919 assert_true (ai_move (ai, 2, 6)); 34920 assert_true (ai_move (ai, 3, 6)); 34921 assert_true (ai_move (ai, 3, 7)); 34922 assert_true (ai_move (ai, 1, 7)); 34923 assert_true (ai_move (ai, 1, 5)); 34924 assert_true (ai_move (ai, 4, 2)); 34925 assert_true (ai_move (ai, 5, 1)); 34926 assert_true (ai_move (ai, 3, 1)); 34927 assert_true (ai_move (ai, 4, 0)); 34928 assert_true (ai_move (ai, 2, 0)); 34929 assert_true (ai_move (ai, 5, 4)); 34930 assert_true (ai_move (ai, 1, 3)); 34931 assert_true (ai_move (ai, 7, 2)); 34932 assert_true (ai_move (ai, 7, 1)); 34933 assert_true (ai_move (ai, 5, 2)); 34934 assert_true (ai_move (ai, 2, 4)); 34935 assert_true (ai_move (ai, 1, 4)); 34936 assert_true (ai_move (ai, 6, 4)); 34937 assert_true (ai_move (ai, 4, 6)); 34938 assert_true (ai_move (ai, 4, 1)); 34939 assert_true (ai_move (ai, 0, 2)); 34940 assert_true (ai_move (ai, 5, 0)); 34941 assert_true (ai_move (ai, 2, 3)); 34942 assert_true (ai_move (ai, 3, 0)); 34943 assert_true (ai_move (ai, 2, 1)); 34944 assert_true (ai_move (ai, 5, 6)); 34945 assert_true (ai_move (ai, 6, 5)); 34946 assert_true (ai_move (ai, 7, 4)); 34947 assert_true (ai_move (ai, 5, 7)); 34948 assert_true (ai_move (ai, 3, 2)); 34949 assert_true (ai_move (ai, 7, 6)); 34950 assert_true (ai_move (ai, 1, 2)); 34951 assert_true (ai_move (ai, 0, 1)); 34952 assert_true (ai_move (ai, 4, 5)); 34953 assert_true (ai_move (ai, 1, 0)); 34954 assert_true (ai_move (ai, 0, 0)); 34955 assert_true (ai_move (ai, 1, 1)); 34956 assert_true (ai_move (ai, 2, 5)); 34957 assert_true (ai_move (ai, 6, 0)); 34958 assert_true (ai_move (ai, 7, 0)); 34959 assert_true (ai_move (ai, 7, 5)); 34960 assert_true (ai_move (ai, 6, 1)); 34961 assert_true (game.pass ()); 34962 assert_true (ai_move (ai, 7, 7)); 34963 assert_true (game.pass ()); 34964 assert_true (ai_move (ai, 6, 6)); 34965 assert_true (game.pass ()); 34966 assert_true (ai_move (ai, 6, 7)); 34967 assert_true (game.pass ()); 34968 assert_true (ai_move (ai, 0, 3)); 34969 assert_true (ai_move (ai, 0, 5)); 34970 assert_true (ai_move (ai, 0, 4)); 34971 assert_true (game.pass ()); 34972 assert_true (ai_move (ai, 0, 6)); 34973 assert_true (ai_move (ai, 1, 6)); 34974 assert_true (ai_move (ai, 0, 7)); 34975 assert_true (game.pass ()); 34976 assert_true (ai_move (ai, 4, 7)); 34977 assert_true (ai_move (ai, 2, 7)); 34978 } 34979 34980 private static inline void test_complete_reversi_game_453 () 34981 { 34982 /* 0 1 2 3 4 5 6 7 */ 34983 string [] board = {/* 0 */ " . . . . . . . .", 34984 /* 1 */ " . . . . . . . .", 34985 /* 2 */ " . . L . . . . .", 34986 /* 3 */ " . . . L D D . .", 34987 /* 4 */ " . . . D L . . .", 34988 /* 5 */ " . . . D . L . .", 34989 /* 6 */ " . . . . . . . .", 34990 /* 7 */ " . . . . . . . ."}; 34991 34992 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 34993 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 34994 34995 assert_true (ai_move (ai, 3, 2)); 34996 assert_true (ai_move (ai, 6, 2)); 34997 assert_true (ai_move (ai, 1, 2)); 34998 assert_true (ai_move (ai, 2, 6)); 34999 assert_true (ai_move (ai, 4, 5)); 35000 assert_true (ai_move (ai, 2, 3)); 35001 assert_true (ai_move (ai, 6, 5)); 35002 assert_true (ai_move (ai, 2, 1)); 35003 assert_true (ai_move (ai, 3, 6)); 35004 assert_true (ai_move (ai, 0, 2)); 35005 assert_true (ai_move (ai, 1, 1)); 35006 assert_true (ai_move (ai, 2, 5)); 35007 assert_true (ai_move (ai, 1, 5)); 35008 assert_true (ai_move (ai, 5, 4)); 35009 assert_true (ai_move (ai, 2, 4)); 35010 assert_true (ai_move (ai, 1, 4)); 35011 assert_true (ai_move (ai, 2, 7)); 35012 assert_true (ai_move (ai, 4, 6)); 35013 assert_true (ai_move (ai, 0, 3)); 35014 assert_true (ai_move (ai, 5, 6)); 35015 assert_true (ai_move (ai, 0, 1)); 35016 assert_true (ai_move (ai, 4, 2)); 35017 assert_true (ai_move (ai, 6, 3)); 35018 assert_true (ai_move (ai, 3, 7)); 35019 assert_true (ai_move (ai, 5, 7)); 35020 assert_true (ai_move (ai, 7, 5)); 35021 assert_true (ai_move (ai, 4, 7)); 35022 assert_true (ai_move (ai, 0, 5)); 35023 assert_true (ai_move (ai, 6, 4)); 35024 assert_true (ai_move (ai, 7, 4)); 35025 assert_true (ai_move (ai, 1, 3)); 35026 assert_true (ai_move (ai, 7, 2)); 35027 assert_true (ai_move (ai, 5, 2)); 35028 assert_true (ai_move (ai, 4, 1)); 35029 assert_true (ai_move (ai, 2, 0)); 35030 assert_true (ai_move (ai, 1, 7)); 35031 assert_true (ai_move (ai, 0, 7)); 35032 assert_true (ai_move (ai, 0, 0)); 35033 assert_true (ai_move (ai, 0, 4)); 35034 assert_true (ai_move (ai, 0, 6)); 35035 assert_true (ai_move (ai, 1, 6)); 35036 assert_true (ai_move (ai, 1, 0)); 35037 assert_true (ai_move (ai, 3, 0)); 35038 assert_true (ai_move (ai, 4, 0)); 35039 assert_true (ai_move (ai, 3, 1)); 35040 assert_true (ai_move (ai, 5, 1)); 35041 assert_true (ai_move (ai, 7, 3)); 35042 assert_true (ai_move (ai, 6, 6)); 35043 assert_true (ai_move (ai, 5, 0)); 35044 assert_true (ai_move (ai, 6, 0)); 35045 assert_true (ai_move (ai, 7, 7)); 35046 assert_true (ai_move (ai, 7, 6)); 35047 assert_true (ai_move (ai, 6, 7)); 35048 assert_true (ai_move (ai, 6, 1)); 35049 assert_true (ai_move (ai, 7, 0)); 35050 assert_true (ai_move (ai, 7, 1)); 35051 } 35052 35053 private static inline void test_complete_reversi_game_454 () 35054 { 35055 /* 0 1 2 3 4 5 6 7 */ 35056 string [] board = {/* 0 */ " . . . . . . . .", 35057 /* 1 */ " . . . . . . . .", 35058 /* 2 */ " . . L . . . . .", 35059 /* 3 */ " . . . L D D . .", 35060 /* 4 */ " . . . L D . . .", 35061 /* 5 */ " . . . L . . . .", 35062 /* 6 */ " . . . L . . . .", 35063 /* 7 */ " . . . . . . . ."}; 35064 35065 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 35066 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 35067 35068 assert_true (ai_move (ai, 2, 6)); 35069 assert_true (ai_move (ai, 5, 5)); 35070 assert_true (ai_move (ai, 3, 7)); 35071 assert_true (ai_move (ai, 6, 2)); 35072 assert_true (ai_move (ai, 6, 3)); 35073 assert_true (ai_move (ai, 7, 3)); 35074 assert_true (ai_move (ai, 7, 1)); 35075 assert_true (ai_move (ai, 5, 1)); 35076 assert_true (ai_move (ai, 2, 4)); 35077 assert_true (ai_move (ai, 1, 5)); 35078 assert_true (ai_move (ai, 1, 3)); 35079 assert_true (ai_move (ai, 0, 4)); 35080 assert_true (ai_move (ai, 0, 2)); 35081 assert_true (ai_move (ai, 4, 5)); 35082 assert_true (ai_move (ai, 3, 1)); 35083 assert_true (ai_move (ai, 2, 7)); 35084 assert_true (ai_move (ai, 1, 7)); 35085 assert_true (ai_move (ai, 2, 5)); 35086 assert_true (ai_move (ai, 4, 2)); 35087 assert_true (ai_move (ai, 4, 1)); 35088 assert_true (ai_move (ai, 4, 6)); 35089 assert_true (ai_move (ai, 6, 4)); 35090 assert_true (ai_move (ai, 1, 4)); 35091 assert_true (ai_move (ai, 2, 0)); 35092 assert_true (ai_move (ai, 0, 5)); 35093 assert_true (ai_move (ai, 3, 2)); 35094 assert_true (ai_move (ai, 0, 3)); 35095 assert_true (ai_move (ai, 1, 2)); 35096 assert_true (ai_move (ai, 6, 5)); 35097 assert_true (ai_move (ai, 5, 6)); 35098 assert_true (ai_move (ai, 4, 7)); 35099 assert_true (ai_move (ai, 7, 5)); 35100 assert_true (ai_move (ai, 2, 3)); 35101 assert_true (ai_move (ai, 6, 7)); 35102 assert_true (ai_move (ai, 2, 1)); 35103 assert_true (ai_move (ai, 1, 0)); 35104 assert_true (ai_move (ai, 5, 4)); 35105 assert_true (ai_move (ai, 0, 1)); 35106 assert_true (ai_move (ai, 0, 0)); 35107 assert_true (ai_move (ai, 1, 1)); 35108 assert_true (ai_move (ai, 5, 2)); 35109 assert_true (ai_move (ai, 0, 6)); 35110 assert_true (ai_move (ai, 0, 7)); 35111 assert_true (ai_move (ai, 5, 7)); 35112 assert_true (ai_move (ai, 1, 6)); 35113 assert_true (game.pass ()); 35114 assert_true (ai_move (ai, 7, 7)); 35115 assert_true (game.pass ()); 35116 assert_true (ai_move (ai, 6, 6)); 35117 assert_true (game.pass ()); 35118 assert_true (ai_move (ai, 7, 6)); 35119 assert_true (game.pass ()); 35120 assert_true (ai_move (ai, 3, 0)); 35121 assert_true (ai_move (ai, 5, 0)); 35122 assert_true (ai_move (ai, 4, 0)); 35123 assert_true (game.pass ()); 35124 assert_true (ai_move (ai, 6, 0)); 35125 assert_true (ai_move (ai, 6, 1)); 35126 assert_true (ai_move (ai, 7, 0)); 35127 assert_true (game.pass ()); 35128 assert_true (ai_move (ai, 7, 4)); 35129 assert_true (ai_move (ai, 7, 2)); 35130 } 35131 35132 private static inline void test_complete_reversi_game_455 () 35133 { 35134 /* 0 1 2 3 4 5 6 7 */ 35135 string [] board = {/* 0 */ " . . . . . . . .", 35136 /* 1 */ " . . . . . . . .", 35137 /* 2 */ " . . L . . . . .", 35138 /* 3 */ " . . . L D . . .", 35139 /* 4 */ " . . . D L . . .", 35140 /* 5 */ " . . . D D L . .", 35141 /* 6 */ " . . . . . . . .", 35142 /* 7 */ " . . . . . . . ."}; 35143 35144 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 35145 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 35146 35147 assert_true (ai_move (ai, 6, 5)); 35148 assert_true (ai_move (ai, 4, 6)); 35149 assert_true (ai_move (ai, 5, 6)); 35150 assert_true (ai_move (ai, 6, 4)); 35151 assert_true (ai_move (ai, 5, 4)); 35152 assert_true (ai_move (ai, 5, 3)); 35153 assert_true (ai_move (ai, 5, 2)); 35154 assert_true (ai_move (ai, 4, 2)); 35155 assert_true (ai_move (ai, 3, 6)); 35156 assert_true (ai_move (ai, 5, 1)); 35157 assert_true (ai_move (ai, 6, 2)); 35158 assert_true (ai_move (ai, 5, 7)); 35159 assert_true (ai_move (ai, 4, 7)); 35160 assert_true (ai_move (ai, 7, 5)); 35161 assert_true (ai_move (ai, 6, 3)); 35162 assert_true (ai_move (ai, 7, 2)); 35163 assert_true (ai_move (ai, 5, 0)); 35164 assert_true (ai_move (ai, 7, 3)); 35165 assert_true (ai_move (ai, 6, 7)); 35166 assert_true (ai_move (ai, 4, 1)); 35167 assert_true (ai_move (ai, 3, 1)); 35168 assert_true (ai_move (ai, 2, 7)); 35169 assert_true (ai_move (ai, 2, 6)); 35170 assert_true (ai_move (ai, 3, 0)); 35171 assert_true (ai_move (ai, 1, 3)); 35172 assert_true (ai_move (ai, 3, 2)); 35173 assert_true (ai_move (ai, 2, 3)); 35174 assert_true (ai_move (ai, 2, 1)); 35175 assert_true (ai_move (ai, 4, 0)); 35176 assert_true (ai_move (ai, 1, 4)); 35177 assert_true (ai_move (ai, 2, 0)); 35178 assert_true (ai_move (ai, 0, 3)); 35179 assert_true (ai_move (ai, 2, 4)); 35180 assert_true (ai_move (ai, 1, 2)); 35181 assert_true (ai_move (ai, 0, 5)); 35182 assert_true (ai_move (ai, 2, 5)); 35183 assert_true (ai_move (ai, 1, 5)); 35184 assert_true (ai_move (ai, 0, 4)); 35185 assert_true (ai_move (ai, 0, 2)); 35186 assert_true (ai_move (ai, 1, 1)); 35187 assert_true (ai_move (ai, 7, 4)); 35188 assert_true (ai_move (ai, 1, 0)); 35189 assert_true (ai_move (ai, 0, 0)); 35190 assert_true (ai_move (ai, 0, 1)); 35191 assert_true (ai_move (ai, 6, 6)); 35192 assert_true (ai_move (ai, 3, 7)); 35193 assert_true (ai_move (ai, 1, 7)); 35194 assert_true (ai_move (ai, 7, 7)); 35195 assert_true (ai_move (ai, 1, 6)); 35196 assert_true (ai_move (ai, 7, 6)); 35197 assert_true (ai_move (ai, 7, 1)); 35198 assert_true (ai_move (ai, 0, 7)); 35199 assert_true (ai_move (ai, 0, 6)); 35200 assert_true (ai_move (ai, 7, 0)); 35201 assert_true (game.pass ()); 35202 assert_true (ai_move (ai, 6, 1)); 35203 assert_true (ai_move (ai, 6, 0)); 35204 } 35205 35206 private static inline void test_complete_reversi_game_456 () 35207 { 35208 /* 0 1 2 3 4 5 6 7 */ 35209 string [] board = {/* 0 */ " . . . . . . . .", 35210 /* 1 */ " . . . . . . . .", 35211 /* 2 */ " . . L . . . . .", 35212 /* 3 */ " . . . L L L . .", 35213 /* 4 */ " . . . D D . . .", 35214 /* 5 */ " . . . D D . . .", 35215 /* 6 */ " . . . . . . . .", 35216 /* 7 */ " . . . . . . . ."}; 35217 35218 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 35219 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 35220 35221 assert_true (ai_move (ai, 6, 2)); 35222 assert_true (ai_move (ai, 6, 3)); 35223 assert_true (ai_move (ai, 6, 4)); 35224 assert_true (ai_move (ai, 7, 3)); 35225 assert_true (ai_move (ai, 4, 2)); 35226 assert_true (ai_move (ai, 5, 1)); 35227 assert_true (ai_move (ai, 4, 1)); 35228 assert_true (ai_move (ai, 6, 5)); 35229 assert_true (ai_move (ai, 7, 5)); 35230 assert_true (ai_move (ai, 3, 1)); 35231 assert_true (ai_move (ai, 5, 5)); 35232 assert_true (ai_move (ai, 3, 6)); 35233 assert_true (ai_move (ai, 2, 6)); 35234 assert_true (ai_move (ai, 5, 6)); 35235 assert_true (ai_move (ai, 5, 7)); 35236 assert_true (ai_move (ai, 2, 5)); 35237 assert_true (ai_move (ai, 1, 5)); 35238 assert_true (ai_move (ai, 1, 4)); 35239 assert_true (ai_move (ai, 4, 6)); 35240 assert_true (ai_move (ai, 0, 5)); 35241 assert_true (ai_move (ai, 1, 6)); 35242 assert_true (ai_move (ai, 3, 7)); 35243 assert_true (ai_move (ai, 5, 4)); 35244 assert_true (ai_move (ai, 2, 4)); 35245 assert_true (ai_move (ai, 1, 7)); 35246 assert_true (ai_move (ai, 5, 2)); 35247 assert_true (ai_move (ai, 7, 4)); 35248 assert_true (ai_move (ai, 3, 2)); 35249 assert_true (ai_move (ai, 7, 2)); 35250 assert_true (ai_move (ai, 6, 6)); 35251 assert_true (ai_move (ai, 1, 2)); 35252 assert_true (ai_move (ai, 2, 3)); 35253 assert_true (ai_move (ai, 7, 7)); 35254 assert_true (ai_move (ai, 2, 1)); 35255 assert_true (ai_move (ai, 7, 6)); 35256 assert_true (ai_move (ai, 6, 7)); 35257 assert_true (ai_move (ai, 4, 7)); 35258 assert_true (ai_move (ai, 0, 3)); 35259 assert_true (ai_move (ai, 0, 2)); 35260 assert_true (ai_move (ai, 1, 3)); 35261 assert_true (ai_move (ai, 2, 0)); 35262 assert_true (ai_move (ai, 0, 7)); 35263 assert_true (ai_move (ai, 2, 7)); 35264 assert_true (ai_move (ai, 4, 0)); 35265 assert_true (ai_move (ai, 0, 6)); 35266 assert_true (ai_move (ai, 3, 0)); 35267 assert_true (ai_move (ai, 5, 0)); 35268 assert_true (ai_move (ai, 0, 1)); 35269 assert_true (ai_move (ai, 1, 0)); 35270 assert_true (ai_move (ai, 1, 1)); 35271 assert_true (ai_move (ai, 0, 4)); 35272 assert_true (ai_move (ai, 6, 1)); 35273 assert_true (ai_move (ai, 7, 0)); 35274 assert_true (ai_move (ai, 7, 1)); 35275 assert_true (ai_move (ai, 0, 0)); 35276 assert_true (game.pass ()); 35277 assert_true (ai_move (ai, 6, 0)); 35278 } 35279 35280 private static inline void test_complete_reversi_game_457 () 35281 { 35282 /* 0 1 2 3 4 5 6 7 */ 35283 string [] board = {/* 0 */ " . . . . . . . .", 35284 /* 1 */ " . . . . . . . .", 35285 /* 2 */ " . . L . . . . .", 35286 /* 3 */ " . . . L D . . .", 35287 /* 4 */ " . . . L D . . .", 35288 /* 5 */ " . . . L D . . .", 35289 /* 6 */ " . . . L . . . .", 35290 /* 7 */ " . . . . . . . ."}; 35291 35292 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 35293 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 35294 35295 assert_true (ai_move (ai, 2, 6)); 35296 assert_true (ai_move (ai, 5, 6)); 35297 assert_true (ai_move (ai, 5, 5)); 35298 assert_true (ai_move (ai, 5, 2)); 35299 assert_true (ai_move (ai, 5, 7)); 35300 assert_true (ai_move (ai, 4, 6)); 35301 assert_true (ai_move (ai, 5, 3)); 35302 assert_true (ai_move (ai, 2, 5)); 35303 assert_true (ai_move (ai, 5, 1)); 35304 assert_true (ai_move (ai, 2, 7)); 35305 assert_true (ai_move (ai, 4, 7)); 35306 assert_true (ai_move (ai, 6, 5)); 35307 assert_true (ai_move (ai, 5, 4)); 35308 assert_true (ai_move (ai, 6, 3)); 35309 assert_true (ai_move (ai, 6, 4)); 35310 assert_true (ai_move (ai, 4, 1)); 35311 assert_true (ai_move (ai, 1, 5)); 35312 assert_true (ai_move (ai, 0, 5)); 35313 assert_true (ai_move (ai, 7, 4)); 35314 assert_true (ai_move (ai, 5, 0)); 35315 assert_true (ai_move (ai, 2, 3)); 35316 assert_true (ai_move (ai, 3, 7)); 35317 assert_true (ai_move (ai, 1, 7)); 35318 assert_true (ai_move (ai, 2, 4)); 35319 assert_true (ai_move (ai, 1, 3)); 35320 assert_true (ai_move (ai, 7, 3)); 35321 assert_true (ai_move (ai, 1, 4)); 35322 assert_true (ai_move (ai, 7, 5)); 35323 assert_true (ai_move (ai, 0, 4)); 35324 assert_true (ai_move (ai, 0, 3)); 35325 assert_true (ai_move (ai, 2, 1)); 35326 assert_true (ai_move (ai, 3, 1)); 35327 assert_true (ai_move (ai, 7, 2)); 35328 assert_true (ai_move (ai, 7, 1)); 35329 assert_true (ai_move (ai, 3, 0)); 35330 assert_true (ai_move (ai, 6, 2)); 35331 assert_true (ai_move (ai, 0, 2)); 35332 assert_true (ai_move (ai, 0, 1)); 35333 assert_true (ai_move (ai, 4, 0)); 35334 assert_true (ai_move (ai, 2, 0)); 35335 assert_true (ai_move (ai, 3, 2)); 35336 assert_true (ai_move (ai, 1, 2)); 35337 assert_true (ai_move (ai, 6, 6)); 35338 assert_true (ai_move (ai, 4, 2)); 35339 assert_true (ai_move (ai, 7, 6)); 35340 assert_true (ai_move (ai, 7, 7)); 35341 assert_true (ai_move (ai, 1, 0)); 35342 assert_true (ai_move (ai, 0, 0)); 35343 assert_true (ai_move (ai, 6, 0)); 35344 assert_true (ai_move (ai, 6, 7)); 35345 assert_true (ai_move (ai, 1, 1)); 35346 assert_true (ai_move (ai, 0, 7)); 35347 assert_true (ai_move (ai, 6, 1)); 35348 assert_true (ai_move (ai, 1, 6)); 35349 assert_true (ai_move (ai, 0, 6)); 35350 assert_true (ai_move (ai, 7, 0)); 35351 } 35352 35353 private static inline void test_complete_reversi_game_458 () 35354 { 35355 /* 0 1 2 3 4 5 6 7 */ 35356 string [] board = {/* 0 */ " . . . . . . . .", 35357 /* 1 */ " . . . . . . . .", 35358 /* 2 */ " . . L L L . . .", 35359 /* 3 */ " . . . D L . . .", 35360 /* 4 */ " . . . D L . . .", 35361 /* 5 */ " . . . D . . . .", 35362 /* 6 */ " . . . . . . . .", 35363 /* 7 */ " . . . . . . . ."}; 35364 35365 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 35366 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 35367 35368 assert_true (ai_move (ai, 3, 1)); 35369 assert_true (ai_move (ai, 2, 1)); 35370 assert_true (ai_move (ai, 1, 3)); 35371 assert_true (ai_move (ai, 1, 2)); 35372 assert_true (ai_move (ai, 5, 1)); 35373 assert_true (ai_move (ai, 5, 2)); 35374 assert_true (ai_move (ai, 5, 5)); 35375 assert_true (ai_move (ai, 5, 0)); 35376 assert_true (ai_move (ai, 5, 3)); 35377 assert_true (ai_move (ai, 4, 0)); 35378 assert_true (ai_move (ai, 6, 2)); 35379 assert_true (ai_move (ai, 7, 2)); 35380 assert_true (ai_move (ai, 2, 0)); 35381 assert_true (ai_move (ai, 4, 1)); 35382 assert_true (ai_move (ai, 0, 2)); 35383 assert_true (ai_move (ai, 6, 4)); 35384 assert_true (ai_move (ai, 1, 0)); 35385 assert_true (ai_move (ai, 4, 6)); 35386 assert_true (ai_move (ai, 5, 7)); 35387 assert_true (ai_move (ai, 3, 7)); 35388 assert_true (ai_move (ai, 6, 3)); 35389 assert_true (ai_move (ai, 7, 4)); 35390 assert_true (ai_move (ai, 6, 6)); 35391 assert_true (ai_move (ai, 5, 4)); 35392 assert_true (ai_move (ai, 6, 5)); 35393 assert_true (ai_move (ai, 5, 6)); 35394 assert_true (ai_move (ai, 7, 3)); 35395 assert_true (ai_move (ai, 2, 3)); 35396 assert_true (ai_move (ai, 2, 4)); 35397 assert_true (ai_move (ai, 1, 5)); 35398 assert_true (ai_move (ai, 4, 5)); 35399 assert_true (ai_move (ai, 3, 6)); 35400 assert_true (ai_move (ai, 4, 7)); 35401 assert_true (ai_move (ai, 1, 4)); 35402 assert_true (ai_move (ai, 7, 5)); 35403 assert_true (ai_move (ai, 0, 3)); 35404 assert_true (ai_move (ai, 7, 1)); 35405 assert_true (ai_move (ai, 0, 1)); 35406 assert_true (ai_move (ai, 6, 7)); 35407 assert_true (ai_move (ai, 7, 7)); 35408 assert_true (ai_move (ai, 2, 5)); 35409 assert_true (ai_move (ai, 7, 6)); 35410 assert_true (ai_move (ai, 3, 0)); 35411 assert_true (ai_move (ai, 0, 0)); 35412 assert_true (ai_move (ai, 6, 0)); 35413 assert_true (ai_move (ai, 7, 0)); 35414 assert_true (ai_move (ai, 2, 6)); 35415 assert_true (ai_move (ai, 1, 1)); 35416 assert_true (ai_move (ai, 0, 5)); 35417 assert_true (ai_move (ai, 6, 1)); 35418 assert_true (game.pass ()); 35419 assert_true (ai_move (ai, 2, 7)); 35420 assert_true (ai_move (ai, 1, 6)); 35421 assert_true (ai_move (ai, 0, 7)); 35422 assert_true (ai_move (ai, 1, 7)); 35423 assert_true (ai_move (ai, 0, 4)); 35424 assert_true (ai_move (ai, 0, 6)); 35425 } 35426 35427 private static inline void test_complete_reversi_game_459 () 35428 { 35429 /* 0 1 2 3 4 5 6 7 */ 35430 string [] board = {/* 0 */ " . . . . . . . .", 35431 /* 1 */ " . . . . . . . .", 35432 /* 2 */ " . . L D . . . .", 35433 /* 3 */ " . . . D D . . .", 35434 /* 4 */ " . . . D L . . .", 35435 /* 5 */ " . . . L . . . .", 35436 /* 6 */ " . . L . . . . .", 35437 /* 7 */ " . . . . . . . ."}; 35438 35439 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 35440 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 35441 35442 assert_true (ai_move (ai, 1, 2)); 35443 assert_true (ai_move (ai, 2, 4)); 35444 assert_true (ai_move (ai, 1, 5)); 35445 assert_true (ai_move (ai, 1, 4)); 35446 assert_true (ai_move (ai, 3, 7)); 35447 assert_true (ai_move (ai, 5, 2)); 35448 assert_true (ai_move (ai, 5, 4)); 35449 assert_true (ai_move (ai, 6, 4)); 35450 assert_true (ai_move (ai, 6, 5)); 35451 assert_true (ai_move (ai, 1, 7)); 35452 assert_true (ai_move (ai, 1, 3)); 35453 assert_true (ai_move (ai, 0, 2)); 35454 assert_true (ai_move (ai, 0, 4)); 35455 assert_true (ai_move (ai, 0, 6)); 35456 assert_true (ai_move (ai, 2, 5)); 35457 assert_true (ai_move (ai, 3, 1)); 35458 assert_true (ai_move (ai, 2, 1)); 35459 assert_true (ai_move (ai, 1, 6)); 35460 assert_true (ai_move (ai, 4, 5)); 35461 assert_true (ai_move (ai, 5, 6)); 35462 assert_true (ai_move (ai, 4, 7)); 35463 assert_true (ai_move (ai, 6, 3)); 35464 assert_true (ai_move (ai, 3, 0)); 35465 assert_true (ai_move (ai, 0, 3)); 35466 assert_true (ai_move (ai, 0, 1)); 35467 assert_true (ai_move (ai, 7, 6)); 35468 assert_true (ai_move (ai, 4, 6)); 35469 assert_true (ai_move (ai, 3, 6)); 35470 assert_true (ai_move (ai, 2, 7)); 35471 assert_true (ai_move (ai, 5, 7)); 35472 assert_true (ai_move (ai, 5, 5)); 35473 assert_true (ai_move (ai, 2, 3)); 35474 assert_true (ai_move (ai, 5, 3)); 35475 assert_true (ai_move (ai, 6, 7)); 35476 assert_true (ai_move (ai, 5, 1)); 35477 assert_true (ai_move (ai, 4, 1)); 35478 assert_true (ai_move (ai, 4, 2)); 35479 assert_true (ai_move (ai, 6, 6)); 35480 assert_true (ai_move (ai, 7, 5)); 35481 assert_true (ai_move (ai, 7, 3)); 35482 assert_true (ai_move (ai, 7, 2)); 35483 assert_true (ai_move (ai, 2, 0)); 35484 assert_true (ai_move (ai, 4, 0)); 35485 assert_true (ai_move (ai, 5, 0)); 35486 assert_true (ai_move (ai, 6, 2)); 35487 assert_true (ai_move (ai, 7, 4)); 35488 assert_true (ai_move (ai, 7, 7)); 35489 assert_true (ai_move (ai, 7, 1)); 35490 assert_true (ai_move (ai, 0, 7)); 35491 assert_true (ai_move (ai, 1, 1)); 35492 assert_true (ai_move (ai, 0, 5)); 35493 assert_true (game.pass ()); 35494 assert_true (ai_move (ai, 7, 0)); 35495 assert_true (game.pass ()); 35496 assert_true (ai_move (ai, 6, 0)); 35497 assert_true (ai_move (ai, 6, 1)); 35498 assert_true (ai_move (ai, 1, 0)); 35499 assert_true (ai_move (ai, 0, 0)); 35500 } 35501 35502 private static inline void test_complete_reversi_game_460 () 35503 { 35504 /* 0 1 2 3 4 5 6 7 */ 35505 string [] board = {/* 0 */ " . . . . . . . .", 35506 /* 1 */ " . . . . . . . .", 35507 /* 2 */ " . . L D . . . .", 35508 /* 3 */ " . . . D D . . .", 35509 /* 4 */ " . . L L L . . .", 35510 /* 5 */ " . . . D . . . .", 35511 /* 6 */ " . . . . . . . .", 35512 /* 7 */ " . . . . . . . ."}; 35513 35514 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 35515 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 35516 35517 assert_true (ai_move (ai, 1, 2)); 35518 assert_true (ai_move (ai, 2, 6)); 35519 assert_true (ai_move (ai, 1, 5)); 35520 assert_true (ai_move (ai, 1, 4)); 35521 assert_true (ai_move (ai, 3, 7)); 35522 assert_true (ai_move (ai, 5, 2)); 35523 assert_true (ai_move (ai, 5, 4)); 35524 assert_true (ai_move (ai, 6, 4)); 35525 assert_true (ai_move (ai, 6, 5)); 35526 assert_true (ai_move (ai, 1, 7)); 35527 assert_true (ai_move (ai, 1, 3)); 35528 assert_true (ai_move (ai, 0, 2)); 35529 assert_true (ai_move (ai, 0, 4)); 35530 assert_true (ai_move (ai, 0, 6)); 35531 assert_true (ai_move (ai, 2, 5)); 35532 assert_true (ai_move (ai, 3, 1)); 35533 assert_true (ai_move (ai, 2, 1)); 35534 assert_true (ai_move (ai, 1, 6)); 35535 assert_true (ai_move (ai, 4, 5)); 35536 assert_true (ai_move (ai, 5, 6)); 35537 assert_true (ai_move (ai, 4, 7)); 35538 assert_true (ai_move (ai, 6, 3)); 35539 assert_true (ai_move (ai, 3, 0)); 35540 assert_true (ai_move (ai, 0, 3)); 35541 assert_true (ai_move (ai, 0, 1)); 35542 assert_true (ai_move (ai, 7, 6)); 35543 assert_true (ai_move (ai, 4, 6)); 35544 assert_true (ai_move (ai, 3, 6)); 35545 assert_true (ai_move (ai, 2, 7)); 35546 assert_true (ai_move (ai, 5, 7)); 35547 assert_true (ai_move (ai, 5, 5)); 35548 assert_true (ai_move (ai, 2, 3)); 35549 assert_true (ai_move (ai, 5, 3)); 35550 assert_true (ai_move (ai, 6, 7)); 35551 assert_true (ai_move (ai, 5, 1)); 35552 assert_true (ai_move (ai, 4, 1)); 35553 assert_true (ai_move (ai, 4, 2)); 35554 assert_true (ai_move (ai, 6, 6)); 35555 assert_true (ai_move (ai, 7, 5)); 35556 assert_true (ai_move (ai, 7, 3)); 35557 assert_true (ai_move (ai, 7, 2)); 35558 assert_true (ai_move (ai, 2, 0)); 35559 assert_true (ai_move (ai, 4, 0)); 35560 assert_true (ai_move (ai, 5, 0)); 35561 assert_true (ai_move (ai, 6, 2)); 35562 assert_true (ai_move (ai, 7, 4)); 35563 assert_true (ai_move (ai, 7, 7)); 35564 assert_true (ai_move (ai, 7, 1)); 35565 assert_true (ai_move (ai, 0, 7)); 35566 assert_true (ai_move (ai, 1, 1)); 35567 assert_true (ai_move (ai, 0, 5)); 35568 assert_true (game.pass ()); 35569 assert_true (ai_move (ai, 7, 0)); 35570 assert_true (game.pass ()); 35571 assert_true (ai_move (ai, 6, 0)); 35572 assert_true (ai_move (ai, 6, 1)); 35573 assert_true (ai_move (ai, 1, 0)); 35574 assert_true (ai_move (ai, 0, 0)); 35575 } 35576 35577 private static inline void test_complete_reversi_game_461 () 35578 { 35579 /* 0 1 2 3 4 5 6 7 */ 35580 string [] board = {/* 0 */ " . . . . . . . .", 35581 /* 1 */ " . . . . . . . .", 35582 /* 2 */ " . . L . L . . .", 35583 /* 3 */ " . . D D L . . .", 35584 /* 4 */ " . . . D L . . .", 35585 /* 5 */ " . . . D . . . .", 35586 /* 6 */ " . . . . . . . .", 35587 /* 7 */ " . . . . . . . ."}; 35588 35589 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 35590 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 35591 35592 assert_true (ai_move (ai, 2, 1)); 35593 assert_true (ai_move (ai, 2, 6)); 35594 assert_true (ai_move (ai, 3, 6)); 35595 assert_true (ai_move (ai, 4, 6)); 35596 assert_true (ai_move (ai, 5, 1)); 35597 assert_true (ai_move (ai, 4, 1)); 35598 assert_true (ai_move (ai, 3, 7)); 35599 assert_true (ai_move (ai, 2, 5)); 35600 assert_true (ai_move (ai, 1, 4)); 35601 assert_true (ai_move (ai, 1, 2)); 35602 assert_true (ai_move (ai, 3, 2)); 35603 assert_true (ai_move (ai, 3, 0)); 35604 assert_true (ai_move (ai, 2, 7)); 35605 assert_true (ai_move (ai, 3, 1)); 35606 assert_true (ai_move (ai, 5, 0)); 35607 assert_true (ai_move (ai, 2, 4)); 35608 assert_true (ai_move (ai, 0, 2)); 35609 assert_true (ai_move (ai, 1, 5)); 35610 assert_true (ai_move (ai, 5, 2)); 35611 assert_true (ai_move (ai, 5, 3)); 35612 assert_true (ai_move (ai, 4, 0)); 35613 assert_true (ai_move (ai, 6, 2)); 35614 assert_true (ai_move (ai, 2, 0)); 35615 assert_true (ai_move (ai, 1, 3)); 35616 assert_true (ai_move (ai, 7, 2)); 35617 assert_true (ai_move (ai, 4, 7)); 35618 assert_true (ai_move (ai, 0, 5)); 35619 assert_true (ai_move (ai, 6, 1)); 35620 assert_true (ai_move (ai, 6, 3)); 35621 assert_true (ai_move (ai, 6, 0)); 35622 assert_true (ai_move (ai, 7, 0)); 35623 assert_true (ai_move (ai, 5, 4)); 35624 assert_true (ai_move (ai, 0, 3)); 35625 assert_true (ai_move (ai, 1, 7)); 35626 assert_true (ai_move (ai, 5, 5)); 35627 assert_true (ai_move (ai, 0, 4)); 35628 assert_true (ai_move (ai, 4, 5)); 35629 assert_true (ai_move (ai, 6, 4)); 35630 assert_true (ai_move (ai, 5, 6)); 35631 assert_true (ai_move (ai, 6, 5)); 35632 assert_true (ai_move (ai, 7, 4)); 35633 assert_true (ai_move (ai, 7, 3)); 35634 assert_true (ai_move (ai, 7, 5)); 35635 assert_true (ai_move (ai, 7, 1)); 35636 assert_true (ai_move (ai, 5, 7)); 35637 assert_true (ai_move (ai, 6, 7)); 35638 assert_true (ai_move (ai, 6, 6)); 35639 assert_true (ai_move (ai, 7, 7)); 35640 assert_true (ai_move (ai, 7, 6)); 35641 assert_true (ai_move (ai, 1, 6)); 35642 assert_true (ai_move (ai, 0, 7)); 35643 assert_true (ai_move (ai, 0, 6)); 35644 assert_true (game.pass ()); 35645 assert_true (ai_move (ai, 1, 1)); 35646 assert_true (ai_move (ai, 0, 0)); 35647 assert_true (ai_move (ai, 0, 1)); 35648 assert_true (ai_move (ai, 1, 0)); 35649 } 35650 35651 private static inline void test_complete_reversi_game_462 () 35652 { 35653 /* 0 1 2 3 4 5 6 7 */ 35654 string [] board = {/* 0 */ " . . . . . . . .", 35655 /* 1 */ " . . . . . . . .", 35656 /* 2 */ " . . L . . . . .", 35657 /* 3 */ " . . D D D . . .", 35658 /* 4 */ " . . . D L . . .", 35659 /* 5 */ " . . . L . . . .", 35660 /* 6 */ " . . L . . . . .", 35661 /* 7 */ " . . . . . . . ."}; 35662 35663 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 35664 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 35665 35666 assert_true (ai_move (ai, 2, 1)); 35667 assert_true (ai_move (ai, 4, 2)); 35668 assert_true (ai_move (ai, 3, 6)); 35669 assert_true (ai_move (ai, 4, 6)); 35670 assert_true (ai_move (ai, 5, 1)); 35671 assert_true (ai_move (ai, 4, 1)); 35672 assert_true (ai_move (ai, 3, 7)); 35673 assert_true (ai_move (ai, 2, 5)); 35674 assert_true (ai_move (ai, 1, 4)); 35675 assert_true (ai_move (ai, 1, 2)); 35676 assert_true (ai_move (ai, 3, 2)); 35677 assert_true (ai_move (ai, 3, 0)); 35678 assert_true (ai_move (ai, 2, 7)); 35679 assert_true (ai_move (ai, 3, 1)); 35680 assert_true (ai_move (ai, 5, 0)); 35681 assert_true (ai_move (ai, 2, 4)); 35682 assert_true (ai_move (ai, 0, 2)); 35683 assert_true (ai_move (ai, 1, 5)); 35684 assert_true (ai_move (ai, 5, 2)); 35685 assert_true (ai_move (ai, 5, 3)); 35686 assert_true (ai_move (ai, 4, 0)); 35687 assert_true (ai_move (ai, 6, 2)); 35688 assert_true (ai_move (ai, 2, 0)); 35689 assert_true (ai_move (ai, 1, 3)); 35690 assert_true (ai_move (ai, 7, 2)); 35691 assert_true (ai_move (ai, 4, 7)); 35692 assert_true (ai_move (ai, 0, 5)); 35693 assert_true (ai_move (ai, 6, 1)); 35694 assert_true (ai_move (ai, 6, 3)); 35695 assert_true (ai_move (ai, 6, 0)); 35696 assert_true (ai_move (ai, 7, 0)); 35697 assert_true (ai_move (ai, 5, 4)); 35698 assert_true (ai_move (ai, 0, 3)); 35699 assert_true (ai_move (ai, 1, 7)); 35700 assert_true (ai_move (ai, 5, 5)); 35701 assert_true (ai_move (ai, 0, 4)); 35702 assert_true (ai_move (ai, 4, 5)); 35703 assert_true (ai_move (ai, 6, 4)); 35704 assert_true (ai_move (ai, 5, 6)); 35705 assert_true (ai_move (ai, 6, 5)); 35706 assert_true (ai_move (ai, 7, 4)); 35707 assert_true (ai_move (ai, 7, 3)); 35708 assert_true (ai_move (ai, 7, 5)); 35709 assert_true (ai_move (ai, 7, 1)); 35710 assert_true (ai_move (ai, 5, 7)); 35711 assert_true (ai_move (ai, 6, 7)); 35712 assert_true (ai_move (ai, 6, 6)); 35713 assert_true (ai_move (ai, 7, 7)); 35714 assert_true (ai_move (ai, 7, 6)); 35715 assert_true (ai_move (ai, 1, 6)); 35716 assert_true (ai_move (ai, 0, 7)); 35717 assert_true (ai_move (ai, 0, 6)); 35718 assert_true (game.pass ()); 35719 assert_true (ai_move (ai, 1, 1)); 35720 assert_true (ai_move (ai, 0, 0)); 35721 assert_true (ai_move (ai, 0, 1)); 35722 assert_true (ai_move (ai, 1, 0)); 35723 } 35724 35725 private static inline void test_complete_reversi_game_463 () 35726 { 35727 /* 0 1 2 3 4 5 6 7 */ 35728 string [] board = {/* 0 */ " . . . . . . . .", 35729 /* 1 */ " . . . . . . . .", 35730 /* 2 */ " . . L . . . . .", 35731 /* 3 */ " . . L D D . . .", 35732 /* 4 */ " . . L L L . . .", 35733 /* 5 */ " . . . D . . . .", 35734 /* 6 */ " . . . . . . . .", 35735 /* 7 */ " . . . . . . . ."}; 35736 35737 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 35738 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 35739 35740 assert_true (ai_move (ai, 5, 5)); 35741 assert_true (ai_move (ai, 4, 6)); 35742 assert_true (ai_move (ai, 2, 6)); 35743 assert_true (ai_move (ai, 6, 4)); 35744 assert_true (ai_move (ai, 5, 7)); 35745 assert_true (ai_move (ai, 3, 6)); 35746 assert_true (ai_move (ai, 7, 3)); 35747 assert_true (ai_move (ai, 3, 2)); 35748 assert_true (ai_move (ai, 2, 1)); 35749 assert_true (ai_move (ai, 4, 2)); 35750 assert_true (ai_move (ai, 4, 1)); 35751 assert_true (ai_move (ai, 5, 1)); 35752 assert_true (ai_move (ai, 2, 5)); 35753 assert_true (ai_move (ai, 1, 5)); 35754 assert_true (ai_move (ai, 5, 2)); 35755 assert_true (ai_move (ai, 2, 7)); 35756 assert_true (ai_move (ai, 1, 4)); 35757 assert_true (ai_move (ai, 0, 3)); 35758 assert_true (ai_move (ai, 0, 5)); 35759 assert_true (ai_move (ai, 1, 3)); 35760 assert_true (ai_move (ai, 0, 2)); 35761 assert_true (ai_move (ai, 1, 2)); 35762 assert_true (ai_move (ai, 0, 4)); 35763 assert_true (ai_move (ai, 6, 2)); 35764 assert_true (ai_move (ai, 0, 1)); 35765 assert_true (ai_move (ai, 2, 0)); 35766 assert_true (ai_move (ai, 6, 3)); 35767 assert_true (ai_move (ai, 5, 0)); 35768 assert_true (ai_move (ai, 4, 7)); 35769 assert_true (ai_move (ai, 7, 4)); 35770 assert_true (ai_move (ai, 7, 5)); 35771 assert_true (ai_move (ai, 5, 4)); 35772 assert_true (ai_move (ai, 7, 2)); 35773 assert_true (ai_move (ai, 3, 1)); 35774 assert_true (ai_move (ai, 5, 3)); 35775 assert_true (ai_move (ai, 5, 6)); 35776 assert_true (ai_move (ai, 0, 6)); 35777 assert_true (ai_move (ai, 4, 5)); 35778 assert_true (ai_move (ai, 6, 5)); 35779 assert_true (ai_move (ai, 1, 6)); 35780 assert_true (ai_move (ai, 4, 0)); 35781 assert_true (ai_move (ai, 3, 0)); 35782 assert_true (ai_move (ai, 1, 1)); 35783 assert_true (ai_move (ai, 6, 7)); 35784 assert_true (ai_move (ai, 7, 7)); 35785 assert_true (ai_move (ai, 7, 6)); 35786 assert_true (ai_move (ai, 3, 7)); 35787 assert_true (ai_move (ai, 1, 7)); 35788 assert_true (ai_move (ai, 6, 6)); 35789 assert_true (ai_move (ai, 0, 0)); 35790 assert_true (ai_move (ai, 0, 7)); 35791 assert_true (ai_move (ai, 1, 0)); 35792 assert_true (ai_move (ai, 6, 1)); 35793 assert_true (ai_move (ai, 6, 0)); 35794 assert_true (game.pass ()); 35795 assert_true (ai_move (ai, 7, 1)); 35796 assert_true (ai_move (ai, 7, 0)); 35797 } 35798 35799 private static inline void test_complete_reversi_game_464 () 35800 { 35801 /* 0 1 2 3 4 5 6 7 */ 35802 string [] board = {/* 0 */ " . . . . . . . .", 35803 /* 1 */ " . . . . . . . .", 35804 /* 2 */ " . . . . L . . .", 35805 /* 3 */ " . . . D L . . .", 35806 /* 4 */ " . . . D L . . .", 35807 /* 5 */ " . . D . L D . .", 35808 /* 6 */ " . . . . . . . .", 35809 /* 7 */ " . . . . . . . ."}; 35810 35811 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 35812 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 35813 35814 assert_true (ai_move (ai, 5, 6)); 35815 assert_true (ai_move (ai, 2, 2)); 35816 assert_true (ai_move (ai, 5, 4)); 35817 assert_true (ai_move (ai, 6, 5)); 35818 assert_true (ai_move (ai, 5, 3)); 35819 assert_true (ai_move (ai, 6, 3)); 35820 assert_true (ai_move (ai, 6, 2)); 35821 assert_true (ai_move (ai, 6, 4)); 35822 assert_true (ai_move (ai, 5, 2)); 35823 assert_true (ai_move (ai, 4, 1)); 35824 assert_true (ai_move (ai, 5, 1)); 35825 assert_true (ai_move (ai, 3, 2)); 35826 assert_true (ai_move (ai, 7, 2)); 35827 assert_true (ai_move (ai, 7, 3)); 35828 assert_true (ai_move (ai, 1, 2)); 35829 assert_true (ai_move (ai, 3, 1)); 35830 assert_true (ai_move (ai, 7, 5)); 35831 assert_true (ai_move (ai, 1, 3)); 35832 assert_true (ai_move (ai, 2, 0)); 35833 assert_true (ai_move (ai, 3, 6)); 35834 assert_true (ai_move (ai, 2, 1)); 35835 assert_true (ai_move (ai, 1, 4)); 35836 assert_true (ai_move (ai, 7, 4)); 35837 assert_true (ai_move (ai, 2, 3)); 35838 assert_true (ai_move (ai, 4, 6)); 35839 assert_true (ai_move (ai, 0, 2)); 35840 assert_true (ai_move (ai, 3, 0)); 35841 assert_true (ai_move (ai, 6, 7)); 35842 assert_true (ai_move (ai, 4, 7)); 35843 assert_true (ai_move (ai, 6, 1)); 35844 assert_true (ai_move (ai, 3, 5)); 35845 assert_true (ai_move (ai, 5, 7)); 35846 assert_true (ai_move (ai, 2, 4)); 35847 assert_true (ai_move (ai, 3, 7)); 35848 assert_true (ai_move (ai, 1, 5)); 35849 assert_true (ai_move (ai, 0, 5)); 35850 assert_true (ai_move (ai, 2, 7)); 35851 assert_true (ai_move (ai, 1, 7)); 35852 assert_true (ai_move (ai, 6, 6)); 35853 assert_true (ai_move (ai, 6, 0)); 35854 assert_true (ai_move (ai, 4, 0)); 35855 assert_true (ai_move (ai, 5, 0)); 35856 assert_true (ai_move (ai, 2, 6)); 35857 assert_true (ai_move (ai, 1, 0)); 35858 assert_true (ai_move (ai, 7, 0)); 35859 assert_true (ai_move (ai, 7, 6)); 35860 assert_true (ai_move (ai, 7, 7)); 35861 assert_true (ai_move (ai, 1, 1)); 35862 assert_true (ai_move (ai, 0, 7)); 35863 assert_true (ai_move (ai, 1, 6)); 35864 assert_true (ai_move (ai, 0, 0)); 35865 assert_true (ai_move (ai, 0, 1)); 35866 assert_true (ai_move (ai, 0, 3)); 35867 assert_true (ai_move (ai, 0, 4)); 35868 assert_true (ai_move (ai, 0, 6)); 35869 assert_true (ai_move (ai, 7, 1)); 35870 } 35871 35872 private static inline void test_complete_reversi_game_465 () 35873 { 35874 /* 0 1 2 3 4 5 6 7 */ 35875 string [] board = {/* 0 */ " . . . . . . . .", 35876 /* 1 */ " . . . . . . . .", 35877 /* 2 */ " . . . . L . . .", 35878 /* 3 */ " . . . L L . . .", 35879 /* 4 */ " . . L D D . . .", 35880 /* 5 */ " . . D . . D . .", 35881 /* 6 */ " . . . . . . . .", 35882 /* 7 */ " . . . . . . . ."}; 35883 35884 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 35885 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 35886 35887 assert_true (ai_move (ai, 2, 3)); 35888 assert_true (ai_move (ai, 1, 5)); 35889 assert_true (ai_move (ai, 1, 4)); 35890 assert_true (ai_move (ai, 3, 5)); 35891 assert_true (ai_move (ai, 3, 6)); 35892 assert_true (ai_move (ai, 1, 2)); 35893 assert_true (ai_move (ai, 2, 6)); 35894 assert_true (ai_move (ai, 0, 5)); 35895 assert_true (ai_move (ai, 2, 2)); 35896 assert_true (ai_move (ai, 4, 7)); 35897 assert_true (ai_move (ai, 5, 1)); 35898 assert_true (ai_move (ai, 2, 1)); 35899 assert_true (ai_move (ai, 1, 3)); 35900 assert_true (ai_move (ai, 4, 1)); 35901 assert_true (ai_move (ai, 4, 5)); 35902 assert_true (ai_move (ai, 6, 5)); 35903 assert_true (ai_move (ai, 5, 6)); 35904 assert_true (ai_move (ai, 5, 7)); 35905 assert_true (ai_move (ai, 2, 0)); 35906 assert_true (ai_move (ai, 0, 2)); 35907 assert_true (ai_move (ai, 7, 5)); 35908 assert_true (ai_move (ai, 3, 1)); 35909 assert_true (ai_move (ai, 2, 7)); 35910 assert_true (ai_move (ai, 3, 0)); 35911 assert_true (ai_move (ai, 5, 2)); 35912 assert_true (ai_move (ai, 6, 2)); 35913 assert_true (ai_move (ai, 5, 3)); 35914 assert_true (ai_move (ai, 7, 4)); 35915 assert_true (ai_move (ai, 4, 0)); 35916 assert_true (ai_move (ai, 3, 2)); 35917 assert_true (ai_move (ai, 6, 3)); 35918 assert_true (ai_move (ai, 3, 7)); 35919 assert_true (ai_move (ai, 6, 7)); 35920 assert_true (ai_move (ai, 5, 0)); 35921 assert_true (ai_move (ai, 6, 0)); 35922 assert_true (ai_move (ai, 7, 6)); 35923 assert_true (ai_move (ai, 1, 0)); 35924 assert_true (ai_move (ai, 5, 4)); 35925 assert_true (ai_move (ai, 4, 6)); 35926 assert_true (ai_move (ai, 6, 4)); 35927 assert_true (ai_move (ai, 1, 1)); 35928 assert_true (ai_move (ai, 6, 1)); 35929 assert_true (ai_move (ai, 1, 7)); 35930 assert_true (ai_move (ai, 6, 6)); 35931 assert_true (ai_move (ai, 7, 7)); 35932 assert_true (ai_move (ai, 1, 6)); 35933 assert_true (ai_move (ai, 0, 3)); 35934 assert_true (ai_move (ai, 0, 4)); 35935 assert_true (ai_move (ai, 7, 3)); 35936 assert_true (ai_move (ai, 7, 1)); 35937 assert_true (ai_move (ai, 7, 0)); 35938 assert_true (ai_move (ai, 7, 2)); 35939 assert_true (ai_move (ai, 0, 7)); 35940 assert_true (ai_move (ai, 0, 0)); 35941 assert_true (ai_move (ai, 0, 6)); 35942 assert_true (ai_move (ai, 0, 1)); 35943 } 35944 35945 private static inline void test_complete_reversi_game_466 () 35946 { 35947 /* 0 1 2 3 4 5 6 7 */ 35948 string [] board = {/* 0 */ " . . . . . . . .", 35949 /* 1 */ " . . . . . . . .", 35950 /* 2 */ " . . . . L . . .", 35951 /* 3 */ " . . L L L . . .", 35952 /* 4 */ " . . . D D . . .", 35953 /* 5 */ " . . D . . D . .", 35954 /* 6 */ " . . . . . . . .", 35955 /* 7 */ " . . . . . . . ."}; 35956 35957 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 35958 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 35959 35960 assert_true (ai_move (ai, 1, 2)); 35961 assert_true (ai_move (ai, 1, 3)); 35962 assert_true (ai_move (ai, 1, 4)); 35963 assert_true (ai_move (ai, 0, 3)); 35964 assert_true (ai_move (ai, 2, 2)); 35965 assert_true (ai_move (ai, 3, 1)); 35966 assert_true (ai_move (ai, 3, 2)); 35967 assert_true (ai_move (ai, 0, 2)); 35968 assert_true (ai_move (ai, 2, 1)); 35969 assert_true (ai_move (ai, 3, 0)); 35970 assert_true (ai_move (ai, 2, 0)); 35971 assert_true (ai_move (ai, 1, 5)); 35972 assert_true (ai_move (ai, 4, 0)); 35973 assert_true (ai_move (ai, 3, 6)); 35974 assert_true (ai_move (ai, 0, 5)); 35975 assert_true (ai_move (ai, 2, 4)); 35976 assert_true (ai_move (ai, 2, 6)); 35977 assert_true (ai_move (ai, 3, 5)); 35978 assert_true (ai_move (ai, 0, 4)); 35979 assert_true (ai_move (ai, 0, 6)); 35980 assert_true (ai_move (ai, 5, 2)); 35981 assert_true (ai_move (ai, 6, 2)); 35982 assert_true (ai_move (ai, 4, 6)); 35983 assert_true (ai_move (ai, 5, 7)); 35984 assert_true (ai_move (ai, 3, 7)); 35985 assert_true (ai_move (ai, 2, 7)); 35986 assert_true (ai_move (ai, 4, 5)); 35987 assert_true (ai_move (ai, 6, 5)); 35988 assert_true (ai_move (ai, 5, 6)); 35989 assert_true (ai_move (ai, 5, 3)); 35990 assert_true (ai_move (ai, 1, 7)); 35991 assert_true (ai_move (ai, 6, 7)); 35992 assert_true (ai_move (ai, 5, 4)); 35993 assert_true (ai_move (ai, 6, 4)); 35994 assert_true (ai_move (ai, 4, 1)); 35995 assert_true (ai_move (ai, 5, 1)); 35996 assert_true (ai_move (ai, 6, 3)); 35997 assert_true (ai_move (ai, 5, 0)); 35998 assert_true (ai_move (ai, 6, 0)); 35999 assert_true (ai_move (ai, 7, 4)); 36000 assert_true (ai_move (ai, 7, 2)); 36001 assert_true (ai_move (ai, 1, 1)); 36002 assert_true (ai_move (ai, 1, 0)); 36003 assert_true (ai_move (ai, 7, 3)); 36004 assert_true (ai_move (ai, 7, 5)); 36005 assert_true (ai_move (ai, 6, 6)); 36006 assert_true (ai_move (ai, 7, 1)); 36007 assert_true (ai_move (ai, 6, 1)); 36008 assert_true (ai_move (ai, 0, 1)); 36009 assert_true (ai_move (ai, 0, 0)); 36010 assert_true (ai_move (ai, 7, 0)); 36011 assert_true (ai_move (ai, 4, 7)); 36012 assert_true (ai_move (ai, 7, 7)); 36013 assert_true (game.pass ()); 36014 assert_true (ai_move (ai, 7, 6)); 36015 assert_true (game.pass ()); 36016 assert_true (ai_move (ai, 1, 6)); 36017 } 36018 36019 private static inline void test_complete_reversi_game_467 () 36020 { 36021 /* 0 1 2 3 4 5 6 7 */ 36022 string [] board = {/* 0 */ " . . . . . . . .", 36023 /* 1 */ " . . . . . . . .", 36024 /* 2 */ " . . . . L . . .", 36025 /* 3 */ " . . . D L . . .", 36026 /* 4 */ " . . . L D . . .", 36027 /* 5 */ " . . L . . D . .", 36028 /* 6 */ " . L . . . . . .", 36029 /* 7 */ " . . . . . . . ."}; 36030 36031 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 36032 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 36033 36034 assert_true (ai_move (ai, 2, 4)); 36035 assert_true (ai_move (ai, 4, 5)); 36036 assert_true (ai_move (ai, 5, 6)); 36037 assert_true (ai_move (ai, 4, 6)); 36038 assert_true (ai_move (ai, 3, 5)); 36039 assert_true (ai_move (ai, 6, 4)); 36040 assert_true (ai_move (ai, 6, 5)); 36041 assert_true (ai_move (ai, 2, 6)); 36042 assert_true (ai_move (ai, 5, 1)); 36043 assert_true (ai_move (ai, 1, 3)); 36044 assert_true (ai_move (ai, 1, 4)); 36045 assert_true (ai_move (ai, 7, 5)); 36046 assert_true (ai_move (ai, 5, 7)); 36047 assert_true (ai_move (ai, 4, 1)); 36048 assert_true (ai_move (ai, 7, 3)); 36049 assert_true (ai_move (ai, 5, 3)); 36050 assert_true (ai_move (ai, 3, 6)); 36051 assert_true (ai_move (ai, 3, 7)); 36052 assert_true (ai_move (ai, 7, 4)); 36053 assert_true (ai_move (ai, 7, 2)); 36054 assert_true (ai_move (ai, 5, 4)); 36055 assert_true (ai_move (ai, 7, 6)); 36056 assert_true (ai_move (ai, 2, 7)); 36057 assert_true (ai_move (ai, 4, 7)); 36058 assert_true (ai_move (ai, 0, 2)); 36059 assert_true (ai_move (ai, 1, 5)); 36060 assert_true (ai_move (ai, 2, 3)); 36061 assert_true (ai_move (ai, 0, 4)); 36062 assert_true (ai_move (ai, 0, 3)); 36063 assert_true (ai_move (ai, 2, 2)); 36064 assert_true (ai_move (ai, 2, 1)); 36065 assert_true (ai_move (ai, 3, 1)); 36066 assert_true (ai_move (ai, 1, 2)); 36067 assert_true (ai_move (ai, 2, 0)); 36068 assert_true (ai_move (ai, 4, 0)); 36069 assert_true (ai_move (ai, 0, 1)); 36070 assert_true (ai_move (ai, 6, 2)); 36071 assert_true (ai_move (ai, 0, 5)); 36072 assert_true (ai_move (ai, 6, 3)); 36073 assert_true (ai_move (ai, 3, 2)); 36074 assert_true (ai_move (ai, 5, 2)); 36075 assert_true (ai_move (ai, 5, 0)); 36076 assert_true (ai_move (ai, 3, 0)); 36077 assert_true (ai_move (ai, 6, 1)); 36078 assert_true (ai_move (ai, 1, 1)); 36079 assert_true (ai_move (ai, 0, 0)); 36080 assert_true (ai_move (ai, 1, 0)); 36081 assert_true (ai_move (ai, 1, 7)); 36082 assert_true (ai_move (ai, 0, 7)); 36083 assert_true (game.pass ()); 36084 assert_true (ai_move (ai, 7, 0)); 36085 assert_true (ai_move (ai, 0, 6)); 36086 assert_true (ai_move (ai, 7, 1)); 36087 assert_true (ai_move (ai, 6, 0)); 36088 assert_true (ai_move (ai, 7, 7)); 36089 assert_true (game.pass ()); 36090 assert_true (ai_move (ai, 6, 7)); 36091 assert_true (ai_move (ai, 6, 6)); 36092 } 36093 36094 private static inline void test_complete_reversi_game_468 () 36095 { 36096 /* 0 1 2 3 4 5 6 7 */ 36097 string [] board = {/* 0 */ " . . . . . . . .", 36098 /* 1 */ " . . . . . . . .", 36099 /* 2 */ " . . . . L . . .", 36100 /* 3 */ " . . . D L . . .", 36101 /* 4 */ " . . . D D L . .", 36102 /* 5 */ " . . D . . . L .", 36103 /* 6 */ " . . . . . . . .", 36104 /* 7 */ " . . . . . . . ."}; 36105 36106 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 36107 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 36108 36109 assert_true (ai_move (ai, 6, 4)); 36110 assert_true (ai_move (ai, 2, 3)); 36111 assert_true (ai_move (ai, 1, 2)); 36112 assert_true (ai_move (ai, 1, 3)); 36113 assert_true (ai_move (ai, 1, 4)); 36114 assert_true (ai_move (ai, 0, 3)); 36115 assert_true (ai_move (ai, 5, 2)); 36116 assert_true (ai_move (ai, 6, 2)); 36117 assert_true (ai_move (ai, 4, 1)); 36118 assert_true (ai_move (ai, 5, 1)); 36119 assert_true (ai_move (ai, 6, 3)); 36120 assert_true (ai_move (ai, 2, 1)); 36121 assert_true (ai_move (ai, 5, 0)); 36122 assert_true (ai_move (ai, 0, 5)); 36123 assert_true (ai_move (ai, 7, 2)); 36124 assert_true (ai_move (ai, 3, 6)); 36125 assert_true (ai_move (ai, 3, 2)); 36126 assert_true (ai_move (ai, 4, 5)); 36127 assert_true (ai_move (ai, 4, 6)); 36128 assert_true (ai_move (ai, 5, 6)); 36129 assert_true (ai_move (ai, 4, 7)); 36130 assert_true (ai_move (ai, 3, 1)); 36131 assert_true (ai_move (ai, 2, 2)); 36132 assert_true (ai_move (ai, 5, 3)); 36133 assert_true (ai_move (ai, 0, 2)); 36134 assert_true (ai_move (ai, 7, 5)); 36135 assert_true (ai_move (ai, 2, 0)); 36136 assert_true (ai_move (ai, 7, 3)); 36137 assert_true (ai_move (ai, 3, 0)); 36138 assert_true (ai_move (ai, 3, 5)); 36139 assert_true (ai_move (ai, 2, 6)); 36140 assert_true (ai_move (ai, 5, 5)); 36141 assert_true (ai_move (ai, 5, 7)); 36142 assert_true (ai_move (ai, 2, 7)); 36143 assert_true (ai_move (ai, 0, 4)); 36144 assert_true (ai_move (ai, 0, 1)); 36145 assert_true (ai_move (ai, 1, 5)); 36146 assert_true (ai_move (ai, 2, 4)); 36147 assert_true (ai_move (ai, 3, 7)); 36148 assert_true (ai_move (ai, 6, 7)); 36149 assert_true (ai_move (ai, 7, 4)); 36150 assert_true (ai_move (ai, 7, 1)); 36151 assert_true (ai_move (ai, 1, 6)); 36152 assert_true (ai_move (ai, 4, 0)); 36153 assert_true (ai_move (ai, 6, 0)); 36154 assert_true (ai_move (ai, 7, 0)); 36155 assert_true (ai_move (ai, 7, 6)); 36156 assert_true (ai_move (ai, 6, 1)); 36157 assert_true (ai_move (ai, 1, 1)); 36158 assert_true (ai_move (ai, 1, 0)); 36159 assert_true (ai_move (ai, 6, 6)); 36160 assert_true (ai_move (ai, 0, 7)); 36161 assert_true (ai_move (ai, 1, 7)); 36162 assert_true (ai_move (ai, 7, 7)); 36163 assert_true (game.pass ()); 36164 assert_true (ai_move (ai, 0, 6)); 36165 assert_true (game.pass ()); 36166 assert_true (ai_move (ai, 0, 0)); 36167 } 36168 36169 private static inline void test_complete_reversi_game_469 () 36170 { 36171 /* 0 1 2 3 4 5 6 7 */ 36172 string [] board = {/* 0 */ " . . . . . . . .", 36173 /* 1 */ " . . . . . . . .", 36174 /* 2 */ " . . . . L . . .", 36175 /* 3 */ " . . . D L . . .", 36176 /* 4 */ " . . . D L D . .", 36177 /* 5 */ " . . D . L . . .", 36178 /* 6 */ " . . . . . . . .", 36179 /* 7 */ " . . . . . . . ."}; 36180 36181 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 36182 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 36183 36184 assert_true (ai_move (ai, 3, 6)); 36185 assert_true (ai_move (ai, 6, 5)); 36186 assert_true (ai_move (ai, 5, 1)); 36187 assert_true (ai_move (ai, 4, 6)); 36188 assert_true (ai_move (ai, 6, 3)); 36189 assert_true (ai_move (ai, 6, 4)); 36190 assert_true (ai_move (ai, 4, 7)); 36191 assert_true (ai_move (ai, 4, 1)); 36192 assert_true (ai_move (ai, 3, 1)); 36193 assert_true (ai_move (ai, 7, 2)); 36194 assert_true (ai_move (ai, 5, 2)); 36195 assert_true (ai_move (ai, 6, 2)); 36196 assert_true (ai_move (ai, 5, 3)); 36197 assert_true (ai_move (ai, 5, 0)); 36198 assert_true (ai_move (ai, 7, 5)); 36199 assert_true (ai_move (ai, 3, 0)); 36200 assert_true (ai_move (ai, 4, 0)); 36201 assert_true (ai_move (ai, 7, 4)); 36202 assert_true (ai_move (ai, 2, 0)); 36203 assert_true (ai_move (ai, 1, 0)); 36204 assert_true (ai_move (ai, 3, 5)); 36205 assert_true (ai_move (ai, 2, 2)); 36206 assert_true (ai_move (ai, 5, 5)); 36207 assert_true (ai_move (ai, 2, 7)); 36208 assert_true (ai_move (ai, 5, 6)); 36209 assert_true (ai_move (ai, 1, 4)); 36210 assert_true (ai_move (ai, 1, 5)); 36211 assert_true (ai_move (ai, 3, 7)); 36212 assert_true (ai_move (ai, 5, 7)); 36213 assert_true (ai_move (ai, 6, 7)); 36214 assert_true (ai_move (ai, 2, 6)); 36215 assert_true (ai_move (ai, 0, 5)); 36216 assert_true (ai_move (ai, 2, 4)); 36217 assert_true (ai_move (ai, 1, 3)); 36218 assert_true (ai_move (ai, 2, 3)); 36219 assert_true (ai_move (ai, 1, 7)); 36220 assert_true (ai_move (ai, 2, 1)); 36221 assert_true (ai_move (ai, 1, 2)); 36222 assert_true (ai_move (ai, 6, 6)); 36223 assert_true (ai_move (ai, 3, 2)); 36224 assert_true (ai_move (ai, 1, 1)); 36225 assert_true (ai_move (ai, 1, 6)); 36226 assert_true (ai_move (ai, 0, 1)); 36227 assert_true (ai_move (ai, 0, 3)); 36228 assert_true (ai_move (ai, 7, 3)); 36229 assert_true (ai_move (ai, 7, 6)); 36230 assert_true (ai_move (ai, 7, 7)); 36231 assert_true (ai_move (ai, 0, 2)); 36232 assert_true (ai_move (ai, 0, 0)); 36233 assert_true (game.pass ()); 36234 assert_true (ai_move (ai, 6, 0)); 36235 assert_true (ai_move (ai, 6, 1)); 36236 assert_true (ai_move (ai, 0, 7)); 36237 assert_true (ai_move (ai, 0, 6)); 36238 assert_true (ai_move (ai, 0, 4)); 36239 assert_true (game.pass ()); 36240 assert_true (ai_move (ai, 7, 1)); 36241 assert_true (ai_move (ai, 7, 0)); 36242 } 36243 36244 private static inline void test_complete_reversi_game_470 () 36245 { 36246 /* 0 1 2 3 4 5 6 7 */ 36247 string [] board = {/* 0 */ " . . . . . . . .", 36248 /* 1 */ " . . . . . . . .", 36249 /* 2 */ " . . . . L . . .", 36250 /* 3 */ " . . . L L . . .", 36251 /* 4 */ " . . L D D D . .", 36252 /* 5 */ " . . D . . . . .", 36253 /* 6 */ " . . . . . . . .", 36254 /* 7 */ " . . . . . . . ."}; 36255 36256 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 36257 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 36258 36259 assert_true (ai_move (ai, 2, 3)); 36260 assert_true (ai_move (ai, 6, 5)); 36261 assert_true (ai_move (ai, 2, 2)); 36262 assert_true (ai_move (ai, 4, 5)); 36263 assert_true (ai_move (ai, 5, 1)); 36264 assert_true (ai_move (ai, 4, 1)); 36265 assert_true (ai_move (ai, 5, 6)); 36266 assert_true (ai_move (ai, 4, 6)); 36267 assert_true (ai_move (ai, 7, 4)); 36268 assert_true (ai_move (ai, 1, 5)); 36269 assert_true (ai_move (ai, 1, 4)); 36270 assert_true (ai_move (ai, 3, 5)); 36271 assert_true (ai_move (ai, 2, 6)); 36272 assert_true (ai_move (ai, 1, 2)); 36273 assert_true (ai_move (ai, 0, 2)); 36274 assert_true (ai_move (ai, 2, 7)); 36275 assert_true (ai_move (ai, 3, 1)); 36276 assert_true (ai_move (ai, 2, 1)); 36277 assert_true (ai_move (ai, 1, 3)); 36278 assert_true (ai_move (ai, 0, 4)); 36279 assert_true (ai_move (ai, 5, 7)); 36280 assert_true (ai_move (ai, 3, 6)); 36281 assert_true (ai_move (ai, 3, 0)); 36282 assert_true (ai_move (ai, 7, 6)); 36283 assert_true (ai_move (ai, 0, 6)); 36284 assert_true (ai_move (ai, 1, 6)); 36285 assert_true (ai_move (ai, 6, 4)); 36286 assert_true (ai_move (ai, 0, 3)); 36287 assert_true (ai_move (ai, 0, 5)); 36288 assert_true (ai_move (ai, 5, 3)); 36289 assert_true (ai_move (ai, 5, 5)); 36290 assert_true (ai_move (ai, 6, 3)); 36291 assert_true (ai_move (ai, 3, 2)); 36292 assert_true (ai_move (ai, 2, 0)); 36293 assert_true (ai_move (ai, 4, 0)); 36294 assert_true (ai_move (ai, 5, 0)); 36295 assert_true (ai_move (ai, 1, 1)); 36296 assert_true (ai_move (ai, 3, 7)); 36297 assert_true (ai_move (ai, 6, 6)); 36298 assert_true (ai_move (ai, 4, 7)); 36299 assert_true (ai_move (ai, 0, 7)); 36300 assert_true (ai_move (ai, 6, 7)); 36301 assert_true (ai_move (ai, 7, 7)); 36302 assert_true (ai_move (ai, 5, 2)); 36303 assert_true (ai_move (ai, 1, 7)); 36304 assert_true (ai_move (ai, 1, 0)); 36305 assert_true (ai_move (ai, 7, 2)); 36306 assert_true (ai_move (ai, 6, 2)); 36307 assert_true (ai_move (ai, 7, 3)); 36308 assert_true (ai_move (ai, 7, 5)); 36309 assert_true (ai_move (ai, 6, 1)); 36310 assert_true (ai_move (ai, 6, 0)); 36311 assert_true (ai_move (ai, 7, 0)); 36312 assert_true (ai_move (ai, 7, 1)); 36313 assert_true (ai_move (ai, 0, 0)); 36314 assert_true (ai_move (ai, 0, 1)); 36315 } 36316 36317 private static inline void test_complete_reversi_game_471 () 36318 { 36319 /* 0 1 2 3 4 5 6 7 */ 36320 string [] board = {/* 0 */ " . . . . . . . .", 36321 /* 1 */ " . . . . . . . .", 36322 /* 2 */ " . . . . L . . .", 36323 /* 3 */ " . . L L L . . .", 36324 /* 4 */ " . . . D D D . .", 36325 /* 5 */ " . . D . . . . .", 36326 /* 6 */ " . . . . . . . .", 36327 /* 7 */ " . . . . . . . ."}; 36328 36329 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 36330 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 36331 36332 assert_true (ai_move (ai, 1, 2)); 36333 assert_true (ai_move (ai, 1, 3)); 36334 assert_true (ai_move (ai, 1, 4)); 36335 assert_true (ai_move (ai, 6, 5)); 36336 assert_true (ai_move (ai, 6, 4)); 36337 assert_true (ai_move (ai, 0, 3)); 36338 assert_true (ai_move (ai, 5, 2)); 36339 assert_true (ai_move (ai, 6, 2)); 36340 assert_true (ai_move (ai, 4, 1)); 36341 assert_true (ai_move (ai, 5, 1)); 36342 assert_true (ai_move (ai, 6, 3)); 36343 assert_true (ai_move (ai, 2, 1)); 36344 assert_true (ai_move (ai, 5, 0)); 36345 assert_true (ai_move (ai, 0, 5)); 36346 assert_true (ai_move (ai, 7, 2)); 36347 assert_true (ai_move (ai, 3, 6)); 36348 assert_true (ai_move (ai, 3, 2)); 36349 assert_true (ai_move (ai, 4, 5)); 36350 assert_true (ai_move (ai, 4, 6)); 36351 assert_true (ai_move (ai, 5, 6)); 36352 assert_true (ai_move (ai, 4, 7)); 36353 assert_true (ai_move (ai, 3, 1)); 36354 assert_true (ai_move (ai, 2, 2)); 36355 assert_true (ai_move (ai, 5, 3)); 36356 assert_true (ai_move (ai, 0, 2)); 36357 assert_true (ai_move (ai, 7, 5)); 36358 assert_true (ai_move (ai, 2, 0)); 36359 assert_true (ai_move (ai, 7, 3)); 36360 assert_true (ai_move (ai, 3, 0)); 36361 assert_true (ai_move (ai, 3, 5)); 36362 assert_true (ai_move (ai, 2, 6)); 36363 assert_true (ai_move (ai, 5, 5)); 36364 assert_true (ai_move (ai, 5, 7)); 36365 assert_true (ai_move (ai, 2, 7)); 36366 assert_true (ai_move (ai, 0, 4)); 36367 assert_true (ai_move (ai, 0, 1)); 36368 assert_true (ai_move (ai, 1, 5)); 36369 assert_true (ai_move (ai, 2, 4)); 36370 assert_true (ai_move (ai, 3, 7)); 36371 assert_true (ai_move (ai, 6, 7)); 36372 assert_true (ai_move (ai, 7, 4)); 36373 assert_true (ai_move (ai, 7, 1)); 36374 assert_true (ai_move (ai, 1, 6)); 36375 assert_true (ai_move (ai, 4, 0)); 36376 assert_true (ai_move (ai, 6, 0)); 36377 assert_true (ai_move (ai, 7, 0)); 36378 assert_true (ai_move (ai, 7, 6)); 36379 assert_true (ai_move (ai, 6, 1)); 36380 assert_true (ai_move (ai, 1, 1)); 36381 assert_true (ai_move (ai, 1, 0)); 36382 assert_true (ai_move (ai, 6, 6)); 36383 assert_true (ai_move (ai, 0, 7)); 36384 assert_true (ai_move (ai, 1, 7)); 36385 assert_true (ai_move (ai, 7, 7)); 36386 assert_true (game.pass ()); 36387 assert_true (ai_move (ai, 0, 6)); 36388 assert_true (game.pass ()); 36389 assert_true (ai_move (ai, 0, 0)); 36390 } 36391 36392 private static inline void test_complete_reversi_game_472 () 36393 { 36394 /* 0 1 2 3 4 5 6 7 */ 36395 string [] board = {/* 0 */ " . . . . . . . .", 36396 /* 1 */ " . . . . . . . .", 36397 /* 2 */ " . . . . L . . .", 36398 /* 3 */ " . . . D L . . .", 36399 /* 4 */ " . . . L D D . .", 36400 /* 5 */ " . . L . . . . .", 36401 /* 6 */ " . L . . . . . .", 36402 /* 7 */ " . . . . . . . ."}; 36403 36404 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 36405 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 36406 36407 assert_true (ai_move (ai, 3, 5)); 36408 assert_true (ai_move (ai, 6, 5)); 36409 assert_true (ai_move (ai, 6, 4)); 36410 assert_true (ai_move (ai, 6, 3)); 36411 assert_true (ai_move (ai, 5, 1)); 36412 assert_true (ai_move (ai, 4, 1)); 36413 assert_true (ai_move (ai, 7, 2)); 36414 assert_true (ai_move (ai, 6, 2)); 36415 assert_true (ai_move (ai, 7, 3)); 36416 assert_true (ai_move (ai, 2, 3)); 36417 assert_true (ai_move (ai, 1, 2)); 36418 assert_true (ai_move (ai, 1, 3)); 36419 assert_true (ai_move (ai, 7, 4)); 36420 assert_true (ai_move (ai, 3, 6)); 36421 assert_true (ai_move (ai, 4, 5)); 36422 assert_true (ai_move (ai, 5, 3)); 36423 assert_true (ai_move (ai, 2, 6)); 36424 assert_true (ai_move (ai, 2, 7)); 36425 assert_true (ai_move (ai, 5, 6)); 36426 assert_true (ai_move (ai, 5, 5)); 36427 assert_true (ai_move (ai, 1, 5)); 36428 assert_true (ai_move (ai, 2, 4)); 36429 assert_true (ai_move (ai, 5, 2)); 36430 assert_true (ai_move (ai, 4, 6)); 36431 assert_true (ai_move (ai, 0, 3)); 36432 assert_true (ai_move (ai, 2, 2)); 36433 assert_true (ai_move (ai, 1, 4)); 36434 assert_true (ai_move (ai, 7, 5)); 36435 assert_true (ai_move (ai, 7, 6)); 36436 assert_true (ai_move (ai, 5, 0)); 36437 assert_true (ai_move (ai, 4, 7)); 36438 assert_true (ai_move (ai, 0, 6)); 36439 assert_true (ai_move (ai, 2, 1)); 36440 assert_true (ai_move (ai, 0, 2)); 36441 assert_true (ai_move (ai, 3, 0)); 36442 assert_true (ai_move (ai, 3, 1)); 36443 assert_true (ai_move (ai, 2, 0)); 36444 assert_true (ai_move (ai, 4, 0)); 36445 assert_true (ai_move (ai, 6, 0)); 36446 assert_true (ai_move (ai, 3, 7)); 36447 assert_true (ai_move (ai, 0, 1)); 36448 assert_true (ai_move (ai, 5, 7)); 36449 assert_true (ai_move (ai, 0, 4)); 36450 assert_true (ai_move (ai, 6, 1)); 36451 assert_true (ai_move (ai, 3, 2)); 36452 assert_true (ai_move (ai, 7, 1)); 36453 assert_true (ai_move (ai, 7, 0)); 36454 assert_true (ai_move (ai, 1, 1)); 36455 assert_true (ai_move (ai, 1, 0)); 36456 assert_true (ai_move (ai, 6, 6)); 36457 assert_true (ai_move (ai, 0, 7)); 36458 assert_true (ai_move (ai, 0, 5)); 36459 assert_true (ai_move (ai, 1, 7)); 36460 assert_true (ai_move (ai, 0, 0)); 36461 assert_true (ai_move (ai, 6, 7)); 36462 assert_true (ai_move (ai, 7, 7)); 36463 } 36464 36465 private static inline void test_complete_reversi_game_473 () 36466 { 36467 /* 0 1 2 3 4 5 6 7 */ 36468 string [] board = {/* 0 */ " . . . . . . . .", 36469 /* 1 */ " . . . . . . . .", 36470 /* 2 */ " . . . . L . . .", 36471 /* 3 */ " . . . D D L . .", 36472 /* 4 */ " . . . D L . L .", 36473 /* 5 */ " . . D . . . . .", 36474 /* 6 */ " . . . . . . . .", 36475 /* 7 */ " . . . . . . . ."}; 36476 36477 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 36478 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 36479 36480 assert_true (ai_move (ai, 6, 3)); 36481 assert_true (ai_move (ai, 2, 2)); 36482 assert_true (ai_move (ai, 2, 3)); 36483 assert_true (ai_move (ai, 6, 2)); 36484 assert_true (ai_move (ai, 2, 1)); 36485 assert_true (ai_move (ai, 2, 4)); 36486 assert_true (ai_move (ai, 4, 1)); 36487 assert_true (ai_move (ai, 2, 6)); 36488 assert_true (ai_move (ai, 2, 7)); 36489 assert_true (ai_move (ai, 5, 1)); 36490 assert_true (ai_move (ai, 7, 3)); 36491 assert_true (ai_move (ai, 1, 5)); 36492 assert_true (ai_move (ai, 0, 5)); 36493 assert_true (ai_move (ai, 1, 3)); 36494 assert_true (ai_move (ai, 3, 1)); 36495 assert_true (ai_move (ai, 2, 0)); 36496 assert_true (ai_move (ai, 5, 5)); 36497 assert_true (ai_move (ai, 4, 0)); 36498 assert_true (ai_move (ai, 4, 5)); 36499 assert_true (ai_move (ai, 7, 5)); 36500 assert_true (ai_move (ai, 1, 4)); 36501 assert_true (ai_move (ai, 5, 6)); 36502 assert_true (ai_move (ai, 4, 6)); 36503 assert_true (ai_move (ai, 0, 4)); 36504 assert_true (ai_move (ai, 5, 7)); 36505 assert_true (ai_move (ai, 0, 6)); 36506 assert_true (ai_move (ai, 6, 5)); 36507 assert_true (ai_move (ai, 3, 6)); 36508 assert_true (ai_move (ai, 1, 6)); 36509 assert_true (ai_move (ai, 3, 7)); 36510 assert_true (ai_move (ai, 4, 7)); 36511 assert_true (ai_move (ai, 5, 4)); 36512 assert_true (ai_move (ai, 5, 2)); 36513 assert_true (ai_move (ai, 3, 5)); 36514 assert_true (ai_move (ai, 0, 2)); 36515 assert_true (ai_move (ai, 3, 2)); 36516 assert_true (ai_move (ai, 1, 2)); 36517 assert_true (ai_move (ai, 1, 1)); 36518 assert_true (ai_move (ai, 7, 4)); 36519 assert_true (ai_move (ai, 7, 2)); 36520 assert_true (ai_move (ai, 1, 7)); 36521 assert_true (ai_move (ai, 7, 6)); 36522 assert_true (ai_move (ai, 0, 3)); 36523 assert_true (ai_move (ai, 0, 1)); 36524 assert_true (ai_move (ai, 3, 0)); 36525 assert_true (ai_move (ai, 5, 0)); 36526 assert_true (ai_move (ai, 6, 6)); 36527 assert_true (ai_move (ai, 7, 7)); 36528 assert_true (ai_move (ai, 1, 0)); 36529 assert_true (ai_move (ai, 6, 7)); 36530 assert_true (ai_move (ai, 6, 0)); 36531 assert_true (ai_move (ai, 0, 7)); 36532 assert_true (ai_move (ai, 6, 1)); 36533 assert_true (ai_move (ai, 7, 0)); 36534 assert_true (ai_move (ai, 7, 1)); 36535 assert_true (ai_move (ai, 0, 0)); 36536 } 36537 36538 private static inline void test_complete_reversi_game_474 () 36539 { 36540 /* 0 1 2 3 4 5 6 7 */ 36541 string [] board = {/* 0 */ " . . . . . . . .", 36542 /* 1 */ " . . . . . . . .", 36543 /* 2 */ " . . . . L . L .", 36544 /* 3 */ " . . . D D L . .", 36545 /* 4 */ " . . . D L . . .", 36546 /* 5 */ " . . D . . . . .", 36547 /* 6 */ " . . . . . . . .", 36548 /* 7 */ " . . . . . . . ."}; 36549 36550 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 36551 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 36552 36553 assert_true (ai_move (ai, 6, 3)); 36554 assert_true (ai_move (ai, 2, 2)); 36555 assert_true (ai_move (ai, 2, 3)); 36556 assert_true (ai_move (ai, 6, 4)); 36557 assert_true (ai_move (ai, 2, 1)); 36558 assert_true (ai_move (ai, 2, 4)); 36559 assert_true (ai_move (ai, 4, 1)); 36560 assert_true (ai_move (ai, 2, 6)); 36561 assert_true (ai_move (ai, 2, 7)); 36562 assert_true (ai_move (ai, 5, 1)); 36563 assert_true (ai_move (ai, 7, 3)); 36564 assert_true (ai_move (ai, 1, 5)); 36565 assert_true (ai_move (ai, 0, 5)); 36566 assert_true (ai_move (ai, 1, 3)); 36567 assert_true (ai_move (ai, 3, 1)); 36568 assert_true (ai_move (ai, 2, 0)); 36569 assert_true (ai_move (ai, 5, 5)); 36570 assert_true (ai_move (ai, 4, 0)); 36571 assert_true (ai_move (ai, 4, 5)); 36572 assert_true (ai_move (ai, 7, 5)); 36573 assert_true (ai_move (ai, 1, 4)); 36574 assert_true (ai_move (ai, 5, 6)); 36575 assert_true (ai_move (ai, 4, 6)); 36576 assert_true (ai_move (ai, 0, 4)); 36577 assert_true (ai_move (ai, 5, 7)); 36578 assert_true (ai_move (ai, 0, 6)); 36579 assert_true (ai_move (ai, 6, 5)); 36580 assert_true (ai_move (ai, 3, 6)); 36581 assert_true (ai_move (ai, 1, 6)); 36582 assert_true (ai_move (ai, 3, 7)); 36583 assert_true (ai_move (ai, 4, 7)); 36584 assert_true (ai_move (ai, 5, 4)); 36585 assert_true (ai_move (ai, 5, 2)); 36586 assert_true (ai_move (ai, 3, 5)); 36587 assert_true (ai_move (ai, 0, 2)); 36588 assert_true (ai_move (ai, 3, 2)); 36589 assert_true (ai_move (ai, 1, 2)); 36590 assert_true (ai_move (ai, 1, 1)); 36591 assert_true (ai_move (ai, 7, 4)); 36592 assert_true (ai_move (ai, 7, 2)); 36593 assert_true (ai_move (ai, 1, 7)); 36594 assert_true (ai_move (ai, 7, 6)); 36595 assert_true (ai_move (ai, 0, 3)); 36596 assert_true (ai_move (ai, 0, 1)); 36597 assert_true (ai_move (ai, 3, 0)); 36598 assert_true (ai_move (ai, 5, 0)); 36599 assert_true (ai_move (ai, 6, 6)); 36600 assert_true (ai_move (ai, 7, 7)); 36601 assert_true (ai_move (ai, 1, 0)); 36602 assert_true (ai_move (ai, 6, 7)); 36603 assert_true (ai_move (ai, 6, 0)); 36604 assert_true (ai_move (ai, 0, 7)); 36605 assert_true (ai_move (ai, 6, 1)); 36606 assert_true (ai_move (ai, 7, 0)); 36607 assert_true (ai_move (ai, 7, 1)); 36608 assert_true (ai_move (ai, 0, 0)); 36609 } 36610 36611 private static inline void test_complete_reversi_game_475 () 36612 { 36613 /* 0 1 2 3 4 5 6 7 */ 36614 string [] board = {/* 0 */ " . . . . . . . .", 36615 /* 1 */ " . . . . . . . .", 36616 /* 2 */ " . . . . L . . .", 36617 /* 3 */ " . . . L D D . .", 36618 /* 4 */ " . . L L L . . .", 36619 /* 5 */ " . . D . . . . .", 36620 /* 6 */ " . . . . . . . .", 36621 /* 7 */ " . . . . . . . ."}; 36622 36623 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 36624 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 36625 36626 assert_true (ai_move (ai, 4, 1)); 36627 assert_true (ai_move (ai, 2, 6)); 36628 assert_true (ai_move (ai, 2, 3)); 36629 assert_true (ai_move (ai, 6, 2)); 36630 assert_true (ai_move (ai, 6, 4)); 36631 assert_true (ai_move (ai, 1, 2)); 36632 assert_true (ai_move (ai, 1, 3)); 36633 assert_true (ai_move (ai, 0, 2)); 36634 assert_true (ai_move (ai, 1, 5)); 36635 assert_true (ai_move (ai, 3, 5)); 36636 assert_true (ai_move (ai, 3, 7)); 36637 assert_true (ai_move (ai, 2, 7)); 36638 assert_true (ai_move (ai, 0, 3)); 36639 assert_true (ai_move (ai, 4, 7)); 36640 assert_true (ai_move (ai, 2, 1)); 36641 assert_true (ai_move (ai, 0, 5)); 36642 assert_true (ai_move (ai, 0, 1)); 36643 assert_true (ai_move (ai, 5, 1)); 36644 assert_true (ai_move (ai, 3, 1)); 36645 assert_true (ai_move (ai, 6, 3)); 36646 assert_true (ai_move (ai, 4, 6)); 36647 assert_true (ai_move (ai, 3, 6)); 36648 assert_true (ai_move (ai, 6, 0)); 36649 assert_true (ai_move (ai, 1, 4)); 36650 assert_true (ai_move (ai, 6, 1)); 36651 assert_true (ai_move (ai, 5, 7)); 36652 assert_true (ai_move (ai, 1, 6)); 36653 assert_true (ai_move (ai, 0, 7)); 36654 assert_true (ai_move (ai, 5, 4)); 36655 assert_true (ai_move (ai, 0, 6)); 36656 assert_true (ai_move (ai, 5, 2)); 36657 assert_true (ai_move (ai, 0, 4)); 36658 assert_true (ai_move (ai, 3, 2)); 36659 assert_true (ai_move (ai, 0, 0)); 36660 assert_true (ai_move (ai, 1, 7)); 36661 assert_true (ai_move (ai, 2, 2)); 36662 assert_true (ai_move (ai, 1, 1)); 36663 assert_true (ai_move (ai, 7, 2)); 36664 assert_true (ai_move (ai, 7, 3)); 36665 assert_true (ai_move (ai, 7, 5)); 36666 assert_true (ai_move (ai, 7, 4)); 36667 assert_true (ai_move (ai, 5, 5)); 36668 assert_true (ai_move (ai, 5, 6)); 36669 assert_true (ai_move (ai, 4, 0)); 36670 assert_true (ai_move (ai, 5, 0)); 36671 assert_true (ai_move (ai, 1, 0)); 36672 assert_true (ai_move (ai, 4, 5)); 36673 assert_true (ai_move (ai, 2, 0)); 36674 assert_true (ai_move (ai, 3, 0)); 36675 assert_true (ai_move (ai, 6, 5)); 36676 assert_true (ai_move (ai, 6, 6)); 36677 assert_true (ai_move (ai, 7, 7)); 36678 assert_true (ai_move (ai, 6, 7)); 36679 assert_true (ai_move (ai, 7, 6)); 36680 assert_true (ai_move (ai, 7, 1)); 36681 assert_true (ai_move (ai, 7, 0)); 36682 } 36683 36684 private static inline void test_complete_reversi_game_476 () 36685 { 36686 /* 0 1 2 3 4 5 6 7 */ 36687 string [] board = {/* 0 */ " . . . . . . . .", 36688 /* 1 */ " . . . . . . . .", 36689 /* 2 */ " . . L . L . . .", 36690 /* 3 */ " . . . L D D . .", 36691 /* 4 */ " . . . D L . . .", 36692 /* 5 */ " . . D . . . . .", 36693 /* 6 */ " . . . . . . . .", 36694 /* 7 */ " . . . . . . . ."}; 36695 36696 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 36697 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 36698 36699 assert_true (ai_move (ai, 4, 1)); 36700 assert_true (ai_move (ai, 6, 2)); 36701 assert_true (ai_move (ai, 6, 4)); 36702 assert_true (ai_move (ai, 5, 1)); 36703 assert_true (ai_move (ai, 3, 1)); 36704 assert_true (ai_move (ai, 3, 5)); 36705 assert_true (ai_move (ai, 1, 3)); 36706 assert_true (ai_move (ai, 1, 5)); 36707 assert_true (ai_move (ai, 2, 3)); 36708 assert_true (ai_move (ai, 2, 4)); 36709 assert_true (ai_move (ai, 4, 6)); 36710 assert_true (ai_move (ai, 3, 6)); 36711 assert_true (ai_move (ai, 5, 4)); 36712 assert_true (ai_move (ai, 2, 0)); 36713 assert_true (ai_move (ai, 2, 1)); 36714 assert_true (ai_move (ai, 4, 0)); 36715 assert_true (ai_move (ai, 2, 6)); 36716 assert_true (ai_move (ai, 6, 3)); 36717 assert_true (ai_move (ai, 0, 4)); 36718 assert_true (ai_move (ai, 7, 5)); 36719 assert_true (ai_move (ai, 7, 2)); 36720 assert_true (ai_move (ai, 7, 3)); 36721 assert_true (ai_move (ai, 5, 2)); 36722 assert_true (ai_move (ai, 5, 5)); 36723 assert_true (ai_move (ai, 3, 2)); 36724 assert_true (ai_move (ai, 1, 4)); 36725 assert_true (ai_move (ai, 5, 6)); 36726 assert_true (ai_move (ai, 4, 5)); 36727 assert_true (ai_move (ai, 1, 2)); 36728 assert_true (ai_move (ai, 3, 0)); 36729 assert_true (ai_move (ai, 0, 5)); 36730 assert_true (ai_move (ai, 4, 7)); 36731 assert_true (ai_move (ai, 5, 0)); 36732 assert_true (ai_move (ai, 6, 0)); 36733 assert_true (ai_move (ai, 5, 7)); 36734 assert_true (ai_move (ai, 6, 5)); 36735 assert_true (ai_move (ai, 3, 7)); 36736 assert_true (ai_move (ai, 1, 0)); 36737 assert_true (ai_move (ai, 6, 7)); 36738 assert_true (ai_move (ai, 2, 7)); 36739 assert_true (ai_move (ai, 1, 7)); 36740 assert_true (ai_move (ai, 1, 1)); 36741 assert_true (ai_move (ai, 7, 4)); 36742 assert_true (ai_move (ai, 7, 1)); 36743 assert_true (ai_move (ai, 1, 6)); 36744 assert_true (ai_move (ai, 7, 6)); 36745 assert_true (ai_move (ai, 0, 0)); 36746 assert_true (ai_move (ai, 6, 6)); 36747 assert_true (ai_move (ai, 7, 0)); 36748 assert_true (ai_move (ai, 0, 2)); 36749 assert_true (ai_move (ai, 7, 7)); 36750 assert_true (ai_move (ai, 0, 3)); 36751 assert_true (ai_move (ai, 0, 1)); 36752 assert_true (ai_move (ai, 6, 1)); 36753 assert_true (game.pass ()); 36754 assert_true (ai_move (ai, 0, 7)); 36755 assert_true (ai_move (ai, 0, 6)); 36756 } 36757 36758 private static inline void test_complete_reversi_game_477 () 36759 { 36760 /* 0 1 2 3 4 5 6 7 */ 36761 string [] board = {/* 0 */ " . . . . . . . .", 36762 /* 1 */ " . . . . . . . .", 36763 /* 2 */ " . . . . L L L .", 36764 /* 3 */ " . . . D D . . .", 36765 /* 4 */ " . . . D L . . .", 36766 /* 5 */ " . . D . . . . .", 36767 /* 6 */ " . . . . . . . .", 36768 /* 7 */ " . . . . . . . ."}; 36769 36770 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 36771 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 36772 36773 assert_true (ai_move (ai, 6, 1)); 36774 assert_true (ai_move (ai, 2, 4)); 36775 assert_true (ai_move (ai, 7, 2)); 36776 assert_true (ai_move (ai, 2, 6)); 36777 assert_true (ai_move (ai, 3, 2)); 36778 assert_true (ai_move (ai, 5, 1)); 36779 assert_true (ai_move (ai, 4, 0)); 36780 assert_true (ai_move (ai, 2, 2)); 36781 assert_true (ai_move (ai, 4, 1)); 36782 assert_true (ai_move (ai, 5, 4)); 36783 assert_true (ai_move (ai, 1, 2)); 36784 assert_true (ai_move (ai, 2, 1)); 36785 assert_true (ai_move (ai, 2, 3)); 36786 assert_true (ai_move (ai, 3, 1)); 36787 assert_true (ai_move (ai, 3, 0)); 36788 assert_true (ai_move (ai, 5, 3)); 36789 assert_true (ai_move (ai, 6, 5)); 36790 assert_true (ai_move (ai, 0, 2)); 36791 assert_true (ai_move (ai, 1, 5)); 36792 assert_true (ai_move (ai, 2, 0)); 36793 assert_true (ai_move (ai, 6, 4)); 36794 assert_true (ai_move (ai, 5, 0)); 36795 assert_true (ai_move (ai, 2, 7)); 36796 assert_true (ai_move (ai, 6, 3)); 36797 assert_true (ai_move (ai, 7, 3)); 36798 assert_true (ai_move (ai, 1, 4)); 36799 assert_true (ai_move (ai, 5, 5)); 36800 assert_true (ai_move (ai, 6, 0)); 36801 assert_true (ai_move (ai, 0, 3)); 36802 assert_true (ai_move (ai, 5, 6)); 36803 assert_true (ai_move (ai, 4, 5)); 36804 assert_true (ai_move (ai, 3, 5)); 36805 assert_true (ai_move (ai, 5, 7)); 36806 assert_true (ai_move (ai, 4, 6)); 36807 assert_true (ai_move (ai, 3, 7)); 36808 assert_true (ai_move (ai, 0, 4)); 36809 assert_true (ai_move (ai, 3, 6)); 36810 assert_true (ai_move (ai, 4, 7)); 36811 assert_true (ai_move (ai, 1, 3)); 36812 assert_true (ai_move (ai, 0, 5)); 36813 assert_true (ai_move (ai, 1, 6)); 36814 assert_true (ai_move (ai, 7, 5)); 36815 assert_true (ai_move (ai, 7, 4)); 36816 assert_true (ai_move (ai, 7, 0)); 36817 assert_true (ai_move (ai, 7, 6)); 36818 assert_true (ai_move (ai, 7, 1)); 36819 assert_true (ai_move (ai, 6, 6)); 36820 assert_true (ai_move (ai, 7, 7)); 36821 assert_true (ai_move (ai, 6, 7)); 36822 assert_true (ai_move (ai, 0, 7)); 36823 assert_true (ai_move (ai, 1, 7)); 36824 assert_true (ai_move (ai, 0, 6)); 36825 assert_true (ai_move (ai, 1, 1)); 36826 assert_true (ai_move (ai, 0, 0)); 36827 assert_true (ai_move (ai, 1, 0)); 36828 assert_true (ai_move (ai, 0, 1)); 36829 } 36830 36831 private static inline void test_complete_reversi_game_478 () 36832 { 36833 /* 0 1 2 3 4 5 6 7 */ 36834 string [] board = {/* 0 */ " . . . . . . . .", 36835 /* 1 */ " . . . . . . . .", 36836 /* 2 */ " . . . . L D . .", 36837 /* 3 */ " . . . L D . . .", 36838 /* 4 */ " . . L L L . . .", 36839 /* 5 */ " . . D . . . . .", 36840 /* 6 */ " . . . . . . . .", 36841 /* 7 */ " . . . . . . . ."}; 36842 36843 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 36844 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 36845 36846 assert_true (ai_move (ai, 3, 2)); 36847 assert_true (ai_move (ai, 2, 6)); 36848 assert_true (ai_move (ai, 2, 3)); 36849 assert_true (ai_move (ai, 1, 2)); 36850 assert_true (ai_move (ai, 1, 4)); 36851 assert_true (ai_move (ai, 2, 2)); 36852 assert_true (ai_move (ai, 3, 6)); 36853 assert_true (ai_move (ai, 3, 1)); 36854 assert_true (ai_move (ai, 1, 5)); 36855 assert_true (ai_move (ai, 6, 2)); 36856 assert_true (ai_move (ai, 1, 3)); 36857 assert_true (ai_move (ai, 0, 5)); 36858 assert_true (ai_move (ai, 5, 1)); 36859 assert_true (ai_move (ai, 3, 5)); 36860 assert_true (ai_move (ai, 5, 3)); 36861 assert_true (ai_move (ai, 0, 2)); 36862 assert_true (ai_move (ai, 7, 2)); 36863 assert_true (ai_move (ai, 5, 4)); 36864 assert_true (ai_move (ai, 2, 0)); 36865 assert_true (ai_move (ai, 4, 1)); 36866 assert_true (ai_move (ai, 3, 0)); 36867 assert_true (ai_move (ai, 6, 4)); 36868 assert_true (ai_move (ai, 6, 3)); 36869 assert_true (ai_move (ai, 5, 0)); 36870 assert_true (ai_move (ai, 7, 5)); 36871 assert_true (ai_move (ai, 4, 0)); 36872 assert_true (ai_move (ai, 6, 0)); 36873 assert_true (ai_move (ai, 3, 7)); 36874 assert_true (ai_move (ai, 2, 1)); 36875 assert_true (ai_move (ai, 7, 3)); 36876 assert_true (ai_move (ai, 2, 7)); 36877 assert_true (ai_move (ai, 7, 4)); 36878 assert_true (ai_move (ai, 4, 7)); 36879 assert_true (ai_move (ai, 1, 6)); 36880 assert_true (ai_move (ai, 6, 5)); 36881 assert_true (ai_move (ai, 5, 5)); 36882 assert_true (ai_move (ai, 5, 6)); 36883 assert_true (ai_move (ai, 1, 7)); 36884 assert_true (ai_move (ai, 0, 3)); 36885 assert_true (ai_move (ai, 5, 7)); 36886 assert_true (ai_move (ai, 0, 1)); 36887 assert_true (ai_move (ai, 4, 6)); 36888 assert_true (ai_move (ai, 6, 6)); 36889 assert_true (ai_move (ai, 0, 4)); 36890 assert_true (ai_move (ai, 4, 5)); 36891 assert_true (ai_move (ai, 6, 1)); 36892 assert_true (ai_move (ai, 0, 6)); 36893 assert_true (ai_move (ai, 0, 7)); 36894 assert_true (ai_move (ai, 7, 1)); 36895 assert_true (ai_move (ai, 0, 0)); 36896 assert_true (game.pass ()); 36897 assert_true (ai_move (ai, 1, 0)); 36898 assert_true (ai_move (ai, 1, 1)); 36899 assert_true (ai_move (ai, 7, 0)); 36900 assert_true (game.pass ()); 36901 assert_true (ai_move (ai, 7, 7)); 36902 assert_true (ai_move (ai, 7, 6)); 36903 assert_true (ai_move (ai, 6, 7)); 36904 } 36905 36906 private static inline void test_complete_reversi_game_479 () 36907 { 36908 /* 0 1 2 3 4 5 6 7 */ 36909 string [] board = {/* 0 */ " . . . . . . . .", 36910 /* 1 */ " . . . . . . . .", 36911 /* 2 */ " . . L . L D . .", 36912 /* 3 */ " . . . L D . . .", 36913 /* 4 */ " . . . D L . . .", 36914 /* 5 */ " . . D . . . . .", 36915 /* 6 */ " . . . . . . . .", 36916 /* 7 */ " . . . . . . . ."}; 36917 36918 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 36919 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 36920 36921 assert_true (ai_move (ai, 4, 1)); 36922 assert_true (ai_move (ai, 2, 4)); 36923 assert_true (ai_move (ai, 1, 5)); 36924 assert_true (ai_move (ai, 1, 4)); 36925 assert_true (ai_move (ai, 2, 3)); 36926 assert_true (ai_move (ai, 2, 6)); 36927 assert_true (ai_move (ai, 3, 7)); 36928 assert_true (ai_move (ai, 2, 7)); 36929 assert_true (ai_move (ai, 1, 7)); 36930 assert_true (ai_move (ai, 0, 5)); 36931 assert_true (ai_move (ai, 1, 3)); 36932 assert_true (ai_move (ai, 1, 2)); 36933 assert_true (ai_move (ai, 5, 5)); 36934 assert_true (ai_move (ai, 3, 2)); 36935 assert_true (ai_move (ai, 2, 1)); 36936 assert_true (ai_move (ai, 3, 6)); 36937 assert_true (ai_move (ai, 4, 6)); 36938 assert_true (ai_move (ai, 3, 1)); 36939 assert_true (ai_move (ai, 4, 5)); 36940 assert_true (ai_move (ai, 6, 2)); 36941 assert_true (ai_move (ai, 6, 3)); 36942 assert_true (ai_move (ai, 2, 0)); 36943 assert_true (ai_move (ai, 5, 1)); 36944 assert_true (ai_move (ai, 5, 0)); 36945 assert_true (ai_move (ai, 7, 2)); 36946 assert_true (ai_move (ai, 5, 6)); 36947 assert_true (ai_move (ai, 0, 2)); 36948 assert_true (ai_move (ai, 6, 5)); 36949 assert_true (ai_move (ai, 6, 4)); 36950 assert_true (ai_move (ai, 0, 4)); 36951 assert_true (ai_move (ai, 0, 3)); 36952 assert_true (ai_move (ai, 0, 1)); 36953 assert_true (ai_move (ai, 3, 5)); 36954 assert_true (ai_move (ai, 5, 7)); 36955 assert_true (ai_move (ai, 7, 5)); 36956 assert_true (ai_move (ai, 4, 7)); 36957 assert_true (ai_move (ai, 6, 7)); 36958 assert_true (ai_move (ai, 7, 4)); 36959 assert_true (ai_move (ai, 7, 3)); 36960 assert_true (ai_move (ai, 6, 0)); 36961 assert_true (ai_move (ai, 5, 4)); 36962 assert_true (ai_move (ai, 5, 3)); 36963 assert_true (ai_move (ai, 1, 1)); 36964 assert_true (ai_move (ai, 7, 1)); 36965 assert_true (ai_move (ai, 7, 0)); 36966 assert_true (ai_move (ai, 7, 6)); 36967 assert_true (ai_move (ai, 6, 6)); 36968 assert_true (ai_move (ai, 1, 6)); 36969 assert_true (ai_move (ai, 7, 7)); 36970 assert_true (ai_move (ai, 1, 0)); 36971 assert_true (ai_move (ai, 4, 0)); 36972 assert_true (ai_move (ai, 3, 0)); 36973 assert_true (ai_move (ai, 6, 1)); 36974 assert_true (game.pass ()); 36975 assert_true (ai_move (ai, 0, 7)); 36976 assert_true (ai_move (ai, 0, 6)); 36977 assert_true (ai_move (ai, 0, 0)); 36978 } 36979 36980 private static inline void test_complete_reversi_game_480 () 36981 { 36982 /* 0 1 2 3 4 5 6 7 */ 36983 string [] board = {/* 0 */ " . . . . . . . .", 36984 /* 1 */ " . . . . L D . .", 36985 /* 2 */ " . . . . L . . .", 36986 /* 3 */ " . . . D L . . .", 36987 /* 4 */ " . . . D L . . .", 36988 /* 5 */ " . . D . . . . .", 36989 /* 6 */ " . . . . . . . .", 36990 /* 7 */ " . . . . . . . ."}; 36991 36992 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 36993 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 36994 36995 assert_true (ai_move (ai, 5, 5)); 36996 assert_true (ai_move (ai, 2, 3)); 36997 assert_true (ai_move (ai, 1, 2)); 36998 assert_true (ai_move (ai, 1, 3)); 36999 assert_true (ai_move (ai, 1, 4)); 37000 assert_true (ai_move (ai, 0, 3)); 37001 assert_true (ai_move (ai, 3, 1)); 37002 assert_true (ai_move (ai, 2, 0)); 37003 assert_true (ai_move (ai, 2, 2)); 37004 assert_true (ai_move (ai, 2, 1)); 37005 assert_true (ai_move (ai, 3, 2)); 37006 assert_true (ai_move (ai, 2, 4)); 37007 assert_true (ai_move (ai, 0, 2)); 37008 assert_true (ai_move (ai, 0, 5)); 37009 assert_true (ai_move (ai, 5, 4)); 37010 assert_true (ai_move (ai, 2, 6)); 37011 assert_true (ai_move (ai, 5, 2)); 37012 assert_true (ai_move (ai, 5, 0)); 37013 assert_true (ai_move (ai, 2, 7)); 37014 assert_true (ai_move (ai, 3, 6)); 37015 assert_true (ai_move (ai, 4, 5)); 37016 assert_true (ai_move (ai, 1, 5)); 37017 assert_true (ai_move (ai, 3, 5)); 37018 assert_true (ai_move (ai, 0, 4)); 37019 assert_true (ai_move (ai, 0, 6)); 37020 assert_true (ai_move (ai, 6, 2)); 37021 assert_true (ai_move (ai, 7, 2)); 37022 assert_true (ai_move (ai, 6, 5)); 37023 assert_true (ai_move (ai, 5, 6)); 37024 assert_true (ai_move (ai, 6, 3)); 37025 assert_true (ai_move (ai, 4, 6)); 37026 assert_true (ai_move (ai, 5, 3)); 37027 assert_true (ai_move (ai, 7, 5)); 37028 assert_true (ai_move (ai, 5, 7)); 37029 assert_true (ai_move (ai, 6, 4)); 37030 assert_true (ai_move (ai, 3, 7)); 37031 assert_true (ai_move (ai, 4, 7)); 37032 assert_true (ai_move (ai, 1, 7)); 37033 assert_true (ai_move (ai, 6, 1)); 37034 assert_true (ai_move (ai, 7, 4)); 37035 assert_true (ai_move (ai, 7, 3)); 37036 assert_true (ai_move (ai, 6, 6)); 37037 assert_true (ai_move (ai, 3, 0)); 37038 assert_true (ai_move (ai, 1, 1)); 37039 assert_true (ai_move (ai, 0, 1)); 37040 assert_true (ai_move (ai, 0, 0)); 37041 assert_true (ai_move (ai, 1, 0)); 37042 assert_true (ai_move (ai, 0, 7)); 37043 assert_true (ai_move (ai, 7, 7)); 37044 assert_true (ai_move (ai, 4, 0)); 37045 assert_true (ai_move (ai, 7, 6)); 37046 assert_true (ai_move (ai, 1, 6)); 37047 assert_true (ai_move (ai, 6, 7)); 37048 assert_true (ai_move (ai, 7, 0)); 37049 assert_true (ai_move (ai, 7, 1)); 37050 assert_true (ai_move (ai, 6, 0)); 37051 } 37052 37053 private static inline void test_complete_reversi_game_481 () 37054 { 37055 /* 0 1 2 3 4 5 6 7 */ 37056 string [] board = {/* 0 */ " . . . . . . . .", 37057 /* 1 */ " . . . . . D . .", 37058 /* 2 */ " . . . . D . . .", 37059 /* 3 */ " . . . D L . . .", 37060 /* 4 */ " . . L L L . . .", 37061 /* 5 */ " . . D . . . . .", 37062 /* 6 */ " . . . . . . . .", 37063 /* 7 */ " . . . . . . . ."}; 37064 37065 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 37066 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 37067 37068 assert_true (ai_move (ai, 1, 5)); 37069 assert_true (ai_move (ai, 2, 2)); 37070 assert_true (ai_move (ai, 5, 2)); 37071 assert_true (ai_move (ai, 5, 3)); 37072 assert_true (ai_move (ai, 6, 4)); 37073 assert_true (ai_move (ai, 4, 1)); 37074 assert_true (ai_move (ai, 3, 0)); 37075 assert_true (ai_move (ai, 6, 3)); 37076 assert_true (ai_move (ai, 3, 1)); 37077 assert_true (ai_move (ai, 6, 2)); 37078 assert_true (ai_move (ai, 7, 3)); 37079 assert_true (ai_move (ai, 7, 5)); 37080 assert_true (ai_move (ai, 1, 3)); 37081 assert_true (ai_move (ai, 5, 0)); 37082 assert_true (ai_move (ai, 4, 0)); 37083 assert_true (ai_move (ai, 3, 2)); 37084 assert_true (ai_move (ai, 6, 0)); 37085 assert_true (ai_move (ai, 1, 2)); 37086 assert_true (ai_move (ai, 0, 2)); 37087 assert_true (ai_move (ai, 2, 3)); 37088 assert_true (ai_move (ai, 1, 4)); 37089 assert_true (ai_move (ai, 0, 3)); 37090 assert_true (ai_move (ai, 0, 4)); 37091 assert_true (ai_move (ai, 2, 6)); 37092 assert_true (ai_move (ai, 2, 7)); 37093 assert_true (ai_move (ai, 3, 5)); 37094 assert_true (ai_move (ai, 4, 6)); 37095 assert_true (ai_move (ai, 3, 6)); 37096 assert_true (ai_move (ai, 4, 7)); 37097 assert_true (ai_move (ai, 3, 7)); 37098 assert_true (ai_move (ai, 7, 4)); 37099 assert_true (ai_move (ai, 7, 2)); 37100 assert_true (ai_move (ai, 6, 5)); 37101 assert_true (ai_move (ai, 7, 1)); 37102 assert_true (ai_move (ai, 5, 5)); 37103 assert_true (ai_move (ai, 4, 5)); 37104 assert_true (ai_move (ai, 5, 4)); 37105 assert_true (ai_move (ai, 2, 0)); 37106 assert_true (ai_move (ai, 1, 0)); 37107 assert_true (ai_move (ai, 0, 5)); 37108 assert_true (ai_move (ai, 2, 1)); 37109 assert_true (ai_move (ai, 0, 1)); 37110 assert_true (ai_move (ai, 5, 6)); 37111 assert_true (ai_move (ai, 6, 1)); 37112 assert_true (ai_move (ai, 6, 6)); 37113 assert_true (ai_move (ai, 7, 6)); 37114 assert_true (ai_move (ai, 1, 6)); 37115 assert_true (ai_move (ai, 0, 7)); 37116 assert_true (ai_move (ai, 1, 7)); 37117 assert_true (ai_move (ai, 0, 6)); 37118 assert_true (ai_move (ai, 5, 7)); 37119 assert_true (ai_move (ai, 6, 7)); 37120 assert_true (ai_move (ai, 7, 7)); 37121 assert_true (ai_move (ai, 1, 1)); 37122 assert_true (ai_move (ai, 7, 0)); 37123 assert_true (game.pass ()); 37124 assert_true (ai_move (ai, 0, 0)); 37125 } 37126 37127 private static inline void test_complete_reversi_game_482 () 37128 { 37129 /* 0 1 2 3 4 5 6 7 */ 37130 string [] board = {/* 0 */ " . . . . . . . .", 37131 /* 1 */ " . . . . . D . .", 37132 /* 2 */ " . . . . D . . .", 37133 /* 3 */ " . . L L L . . .", 37134 /* 4 */ " . . . D L . . .", 37135 /* 5 */ " . . D . . . . .", 37136 /* 6 */ " . . . . . . . .", 37137 /* 7 */ " . . . . . . . ."}; 37138 37139 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 37140 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 37141 37142 assert_true (ai_move (ai, 1, 2)); 37143 assert_true (ai_move (ai, 2, 4)); 37144 assert_true (ai_move (ai, 1, 5)); 37145 assert_true (ai_move (ai, 4, 1)); 37146 assert_true (ai_move (ai, 4, 5)); 37147 assert_true (ai_move (ai, 4, 6)); 37148 assert_true (ai_move (ai, 5, 6)); 37149 assert_true (ai_move (ai, 2, 2)); 37150 assert_true (ai_move (ai, 2, 1)); 37151 assert_true (ai_move (ai, 1, 3)); 37152 assert_true (ai_move (ai, 0, 2)); 37153 assert_true (ai_move (ai, 3, 5)); 37154 assert_true (ai_move (ai, 5, 7)); 37155 assert_true (ai_move (ai, 1, 4)); 37156 assert_true (ai_move (ai, 0, 3)); 37157 assert_true (ai_move (ai, 0, 5)); 37158 assert_true (ai_move (ai, 3, 1)); 37159 assert_true (ai_move (ai, 3, 6)); 37160 assert_true (ai_move (ai, 2, 7)); 37161 assert_true (ai_move (ai, 3, 7)); 37162 assert_true (ai_move (ai, 4, 7)); 37163 assert_true (ai_move (ai, 5, 5)); 37164 assert_true (ai_move (ai, 6, 5)); 37165 assert_true (ai_move (ai, 2, 6)); 37166 assert_true (ai_move (ai, 3, 2)); 37167 assert_true (ai_move (ai, 7, 5)); 37168 assert_true (ai_move (ai, 6, 4)); 37169 assert_true (ai_move (ai, 2, 0)); 37170 assert_true (ai_move (ai, 4, 0)); 37171 assert_true (ai_move (ai, 5, 0)); 37172 assert_true (ai_move (ai, 3, 0)); 37173 assert_true (ai_move (ai, 5, 2)); 37174 assert_true (ai_move (ai, 6, 2)); 37175 assert_true (ai_move (ai, 5, 3)); 37176 assert_true (ai_move (ai, 7, 4)); 37177 assert_true (ai_move (ai, 7, 2)); 37178 assert_true (ai_move (ai, 7, 6)); 37179 assert_true (ai_move (ai, 0, 4)); 37180 assert_true (ai_move (ai, 0, 6)); 37181 assert_true (ai_move (ai, 1, 0)); 37182 assert_true (ai_move (ai, 0, 0)); 37183 assert_true (ai_move (ai, 0, 1)); 37184 assert_true (ai_move (ai, 1, 6)); 37185 assert_true (ai_move (ai, 0, 7)); 37186 assert_true (ai_move (ai, 1, 1)); 37187 assert_true (ai_move (ai, 1, 7)); 37188 assert_true (ai_move (ai, 6, 0)); 37189 assert_true (ai_move (ai, 6, 7)); 37190 assert_true (ai_move (ai, 6, 3)); 37191 assert_true (ai_move (ai, 5, 4)); 37192 assert_true (ai_move (ai, 6, 6)); 37193 assert_true (ai_move (ai, 7, 3)); 37194 assert_true (ai_move (ai, 7, 1)); 37195 assert_true (ai_move (ai, 6, 1)); 37196 assert_true (game.pass ()); 37197 assert_true (ai_move (ai, 7, 7)); 37198 assert_true (game.pass ()); 37199 assert_true (ai_move (ai, 7, 0)); 37200 } 37201 37202 private static inline void test_complete_reversi_game_483 () 37203 { 37204 /* 0 1 2 3 4 5 6 7 */ 37205 string [] board = {/* 0 */ " . . . . . . . .", 37206 /* 1 */ " . . . . . D . .", 37207 /* 2 */ " . . L . D . . .", 37208 /* 3 */ " . . . L L . . .", 37209 /* 4 */ " . . . D L . . .", 37210 /* 5 */ " . . D . . . . .", 37211 /* 6 */ " . . . . . . . .", 37212 /* 7 */ " . . . . . . . ."}; 37213 37214 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 37215 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 37216 37217 assert_true (ai_move (ai, 5, 2)); 37218 assert_true (ai_move (ai, 2, 4)); 37219 assert_true (ai_move (ai, 1, 5)); 37220 assert_true (ai_move (ai, 1, 4)); 37221 assert_true (ai_move (ai, 2, 3)); 37222 assert_true (ai_move (ai, 2, 6)); 37223 assert_true (ai_move (ai, 3, 7)); 37224 assert_true (ai_move (ai, 2, 7)); 37225 assert_true (ai_move (ai, 1, 7)); 37226 assert_true (ai_move (ai, 0, 5)); 37227 assert_true (ai_move (ai, 1, 3)); 37228 assert_true (ai_move (ai, 1, 2)); 37229 assert_true (ai_move (ai, 5, 5)); 37230 assert_true (ai_move (ai, 3, 2)); 37231 assert_true (ai_move (ai, 2, 1)); 37232 assert_true (ai_move (ai, 3, 6)); 37233 assert_true (ai_move (ai, 4, 6)); 37234 assert_true (ai_move (ai, 4, 1)); 37235 assert_true (ai_move (ai, 0, 2)); 37236 assert_true (ai_move (ai, 2, 0)); 37237 assert_true (ai_move (ai, 4, 5)); 37238 assert_true (ai_move (ai, 6, 3)); 37239 assert_true (ai_move (ai, 6, 2)); 37240 assert_true (ai_move (ai, 0, 4)); 37241 assert_true (ai_move (ai, 0, 3)); 37242 assert_true (ai_move (ai, 0, 1)); 37243 assert_true (ai_move (ai, 4, 0)); 37244 assert_true (ai_move (ai, 3, 5)); 37245 assert_true (ai_move (ai, 3, 0)); 37246 assert_true (ai_move (ai, 5, 0)); 37247 assert_true (ai_move (ai, 7, 4)); 37248 assert_true (ai_move (ai, 6, 5)); 37249 assert_true (ai_move (ai, 6, 4)); 37250 assert_true (ai_move (ai, 1, 0)); 37251 assert_true (ai_move (ai, 5, 4)); 37252 assert_true (ai_move (ai, 5, 6)); 37253 assert_true (ai_move (ai, 7, 5)); 37254 assert_true (ai_move (ai, 6, 0)); 37255 assert_true (ai_move (ai, 4, 7)); 37256 assert_true (ai_move (ai, 7, 3)); 37257 assert_true (ai_move (ai, 7, 2)); 37258 assert_true (ai_move (ai, 5, 3)); 37259 assert_true (ai_move (ai, 3, 1)); 37260 assert_true (ai_move (ai, 5, 7)); 37261 assert_true (ai_move (ai, 6, 7)); 37262 assert_true (ai_move (ai, 1, 1)); 37263 assert_true (ai_move (ai, 0, 0)); 37264 assert_true (ai_move (ai, 7, 1)); 37265 assert_true (ai_move (ai, 7, 0)); 37266 assert_true (ai_move (ai, 1, 6)); 37267 assert_true (ai_move (ai, 6, 6)); 37268 assert_true (ai_move (ai, 7, 6)); 37269 assert_true (ai_move (ai, 0, 6)); 37270 assert_true (game.pass ()); 37271 assert_true (ai_move (ai, 6, 1)); 37272 assert_true (game.pass ()); 37273 assert_true (ai_move (ai, 0, 7)); 37274 assert_true (game.pass ()); 37275 assert_true (ai_move (ai, 7, 7)); 37276 } 37277 37278 private static inline void test_complete_reversi_game_484 () 37279 { 37280 /* 0 1 2 3 4 5 6 7 */ 37281 string [] board = {/* 0 */ " . . . . . . . .", 37282 /* 1 */ " . . . . . D . .", 37283 /* 2 */ " . . . . D . . .", 37284 /* 3 */ " . . . D L . . .", 37285 /* 4 */ " . . . L L . . .", 37286 /* 5 */ " . . L . . . . .", 37287 /* 6 */ " . L . . . . . .", 37288 /* 7 */ " . . . . . . . ."}; 37289 37290 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 37291 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 37292 37293 assert_true (ai_move (ai, 3, 5)); 37294 assert_true (ai_move (ai, 4, 5)); 37295 assert_true (ai_move (ai, 5, 4)); 37296 assert_true (ai_move (ai, 6, 5)); 37297 assert_true (ai_move (ai, 6, 4)); 37298 assert_true (ai_move (ai, 4, 1)); 37299 assert_true (ai_move (ai, 2, 6)); 37300 assert_true (ai_move (ai, 2, 7)); 37301 assert_true (ai_move (ai, 5, 5)); 37302 assert_true (ai_move (ai, 5, 3)); 37303 assert_true (ai_move (ai, 3, 6)); 37304 assert_true (ai_move (ai, 5, 6)); 37305 assert_true (ai_move (ai, 4, 6)); 37306 assert_true (ai_move (ai, 6, 3)); 37307 assert_true (ai_move (ai, 7, 4)); 37308 assert_true (ai_move (ai, 7, 5)); 37309 assert_true (ai_move (ai, 7, 2)); 37310 assert_true (ai_move (ai, 3, 7)); 37311 assert_true (ai_move (ai, 5, 7)); 37312 assert_true (ai_move (ai, 7, 3)); 37313 assert_true (ai_move (ai, 7, 6)); 37314 assert_true (ai_move (ai, 2, 4)); 37315 assert_true (ai_move (ai, 5, 2)); 37316 assert_true (ai_move (ai, 6, 2)); 37317 assert_true (ai_move (ai, 3, 0)); 37318 assert_true (ai_move (ai, 4, 7)); 37319 assert_true (ai_move (ai, 1, 7)); 37320 assert_true (ai_move (ai, 6, 1)); 37321 assert_true (ai_move (ai, 1, 4)); 37322 assert_true (ai_move (ai, 1, 3)); 37323 assert_true (ai_move (ai, 3, 1)); 37324 assert_true (ai_move (ai, 3, 2)); 37325 assert_true (ai_move (ai, 2, 2)); 37326 assert_true (ai_move (ai, 4, 0)); 37327 assert_true (ai_move (ai, 2, 0)); 37328 assert_true (ai_move (ai, 2, 1)); 37329 assert_true (ai_move (ai, 2, 3)); 37330 assert_true (ai_move (ai, 1, 2)); 37331 assert_true (ai_move (ai, 0, 2)); 37332 assert_true (ai_move (ai, 1, 5)); 37333 assert_true (ai_move (ai, 0, 4)); 37334 assert_true (ai_move (ai, 1, 0)); 37335 assert_true (ai_move (ai, 1, 1)); 37336 assert_true (ai_move (ai, 5, 0)); 37337 assert_true (ai_move (ai, 7, 0)); 37338 assert_true (ai_move (ai, 7, 1)); 37339 assert_true (ai_move (ai, 6, 0)); 37340 assert_true (ai_move (ai, 0, 0)); 37341 assert_true (ai_move (ai, 0, 7)); 37342 assert_true (ai_move (ai, 7, 7)); 37343 assert_true (ai_move (ai, 0, 1)); 37344 assert_true (ai_move (ai, 0, 3)); 37345 assert_true (game.pass ()); 37346 assert_true (ai_move (ai, 6, 7)); 37347 assert_true (ai_move (ai, 6, 6)); 37348 assert_true (ai_move (ai, 0, 6)); 37349 assert_true (ai_move (ai, 0, 5)); 37350 } 37351 37352 private static inline void test_complete_reversi_game_485 () 37353 { 37354 /* 0 1 2 3 4 5 6 7 */ 37355 string [] board = {/* 0 */ " . . . . . . . .", 37356 /* 1 */ " . . . . . . . .", 37357 /* 2 */ " . . . . . . . .", 37358 /* 3 */ " . . . D D . . .", 37359 /* 4 */ " . . L L L L . .", 37360 /* 5 */ " . . D . . D . .", 37361 /* 6 */ " . . . . . . . .", 37362 /* 7 */ " . . . . . . . ."}; 37363 37364 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 37365 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 37366 37367 assert_true (ai_move (ai, 5, 3)); 37368 assert_true (ai_move (ai, 2, 6)); 37369 assert_true (ai_move (ai, 1, 5)); 37370 assert_true (ai_move (ai, 2, 3)); 37371 assert_true (ai_move (ai, 1, 3)); 37372 assert_true (ai_move (ai, 1, 2)); 37373 assert_true (ai_move (ai, 3, 7)); 37374 assert_true (ai_move (ai, 2, 7)); 37375 assert_true (ai_move (ai, 1, 7)); 37376 assert_true (ai_move (ai, 6, 4)); 37377 assert_true (ai_move (ai, 6, 5)); 37378 assert_true (ai_move (ai, 4, 6)); 37379 assert_true (ai_move (ai, 5, 6)); 37380 assert_true (ai_move (ai, 0, 5)); 37381 assert_true (ai_move (ai, 7, 3)); 37382 assert_true (ai_move (ai, 3, 2)); 37383 assert_true (ai_move (ai, 2, 1)); 37384 assert_true (ai_move (ai, 3, 0)); 37385 assert_true (ai_move (ai, 4, 5)); 37386 assert_true (ai_move (ai, 3, 1)); 37387 assert_true (ai_move (ai, 4, 7)); 37388 assert_true (ai_move (ai, 1, 4)); 37389 assert_true (ai_move (ai, 3, 5)); 37390 assert_true (ai_move (ai, 3, 6)); 37391 assert_true (ai_move (ai, 2, 2)); 37392 assert_true (ai_move (ai, 7, 5)); 37393 assert_true (ai_move (ai, 4, 2)); 37394 assert_true (ai_move (ai, 5, 2)); 37395 assert_true (ai_move (ai, 6, 3)); 37396 assert_true (ai_move (ai, 7, 4)); 37397 assert_true (ai_move (ai, 7, 2)); 37398 assert_true (ai_move (ai, 7, 1)); 37399 assert_true (ai_move (ai, 5, 1)); 37400 assert_true (ai_move (ai, 6, 2)); 37401 assert_true (ai_move (ai, 4, 1)); 37402 assert_true (ai_move (ai, 5, 0)); 37403 assert_true (ai_move (ai, 4, 0)); 37404 assert_true (ai_move (ai, 5, 7)); 37405 assert_true (ai_move (ai, 6, 7)); 37406 assert_true (ai_move (ai, 1, 6)); 37407 assert_true (ai_move (ai, 0, 3)); 37408 assert_true (ai_move (ai, 0, 2)); 37409 assert_true (ai_move (ai, 0, 4)); 37410 assert_true (ai_move (ai, 2, 0)); 37411 assert_true (ai_move (ai, 6, 6)); 37412 assert_true (ai_move (ai, 0, 6)); 37413 assert_true (ai_move (ai, 1, 1)); 37414 assert_true (ai_move (ai, 7, 6)); 37415 assert_true (ai_move (ai, 7, 7)); 37416 assert_true (ai_move (ai, 0, 1)); 37417 assert_true (ai_move (ai, 7, 0)); 37418 assert_true (game.pass ()); 37419 assert_true (ai_move (ai, 6, 0)); 37420 assert_true (ai_move (ai, 6, 1)); 37421 assert_true (ai_move (ai, 1, 0)); 37422 assert_true (game.pass ()); 37423 assert_true (ai_move (ai, 0, 0)); 37424 assert_true (game.pass ()); 37425 assert_true (ai_move (ai, 0, 7)); 37426 } 37427 37428 private static inline void test_complete_reversi_game_486 () 37429 { 37430 /* 0 1 2 3 4 5 6 7 */ 37431 string [] board = {/* 0 */ " . . . . . . . .", 37432 /* 1 */ " . . . . . . . .", 37433 /* 2 */ " . . . . . L . .", 37434 /* 3 */ " . . . D L . . .", 37435 /* 4 */ " . . L L D . . .", 37436 /* 5 */ " . . D . . D . .", 37437 /* 6 */ " . . . . . . . .", 37438 /* 7 */ " . . . . . . . ."}; 37439 37440 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 37441 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 37442 37443 assert_true (ai_move (ai, 2, 3)); 37444 assert_true (ai_move (ai, 1, 4)); 37445 assert_true (ai_move (ai, 1, 5)); 37446 assert_true (ai_move (ai, 3, 6)); 37447 assert_true (ai_move (ai, 2, 6)); 37448 assert_true (ai_move (ai, 1, 2)); 37449 assert_true (ai_move (ai, 2, 2)); 37450 assert_true (ai_move (ai, 4, 5)); 37451 assert_true (ai_move (ai, 0, 2)); 37452 assert_true (ai_move (ai, 6, 5)); 37453 assert_true (ai_move (ai, 0, 3)); 37454 assert_true (ai_move (ai, 3, 2)); 37455 assert_true (ai_move (ai, 4, 1)); 37456 assert_true (ai_move (ai, 3, 1)); 37457 assert_true (ai_move (ai, 6, 3)); 37458 assert_true (ai_move (ai, 1, 3)); 37459 assert_true (ai_move (ai, 2, 1)); 37460 assert_true (ai_move (ai, 3, 5)); 37461 assert_true (ai_move (ai, 4, 2)); 37462 assert_true (ai_move (ai, 0, 4)); 37463 assert_true (ai_move (ai, 0, 5)); 37464 assert_true (ai_move (ai, 2, 0)); 37465 assert_true (ai_move (ai, 5, 6)); 37466 assert_true (ai_move (ai, 5, 4)); 37467 assert_true (ai_move (ai, 3, 0)); 37468 assert_true (ai_move (ai, 2, 7)); 37469 assert_true (ai_move (ai, 7, 5)); 37470 assert_true (ai_move (ai, 5, 7)); 37471 assert_true (ai_move (ai, 6, 4)); 37472 assert_true (ai_move (ai, 6, 2)); 37473 assert_true (ai_move (ai, 7, 2)); 37474 assert_true (ai_move (ai, 4, 6)); 37475 assert_true (ai_move (ai, 5, 3)); 37476 assert_true (ai_move (ai, 5, 1)); 37477 assert_true (ai_move (ai, 4, 0)); 37478 assert_true (ai_move (ai, 5, 0)); 37479 assert_true (ai_move (ai, 3, 7)); 37480 assert_true (ai_move (ai, 4, 7)); 37481 assert_true (ai_move (ai, 6, 1)); 37482 assert_true (ai_move (ai, 1, 0)); 37483 assert_true (ai_move (ai, 6, 7)); 37484 assert_true (ai_move (ai, 7, 7)); 37485 assert_true (ai_move (ai, 1, 1)); 37486 assert_true (ai_move (ai, 1, 7)); 37487 assert_true (ai_move (ai, 1, 6)); 37488 assert_true (ai_move (ai, 6, 6)); 37489 assert_true (ai_move (ai, 7, 6)); 37490 assert_true (ai_move (ai, 7, 4)); 37491 assert_true (ai_move (ai, 7, 3)); 37492 assert_true (ai_move (ai, 0, 0)); 37493 assert_true (ai_move (ai, 0, 1)); 37494 assert_true (ai_move (ai, 7, 0)); 37495 assert_true (ai_move (ai, 7, 1)); 37496 assert_true (ai_move (ai, 6, 0)); 37497 assert_true (game.pass ()); 37498 assert_true (ai_move (ai, 0, 6)); 37499 assert_true (ai_move (ai, 0, 7)); 37500 } 37501 37502 private static inline void test_complete_reversi_game_487 () 37503 { 37504 /* 0 1 2 3 4 5 6 7 */ 37505 string [] board = {/* 0 */ " . . . . . . . .", 37506 /* 1 */ " . . . . . . . .", 37507 /* 2 */ " . . . . L . . .", 37508 /* 3 */ " . . . L D . . .", 37509 /* 4 */ " . . L L D . . .", 37510 /* 5 */ " . . D . . D . .", 37511 /* 6 */ " . . . . . . . .", 37512 /* 7 */ " . . . . . . . ."}; 37513 37514 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 37515 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 37516 37517 assert_true (ai_move (ai, 4, 1)); 37518 assert_true (ai_move (ai, 2, 6)); 37519 assert_true (ai_move (ai, 2, 2)); 37520 assert_true (ai_move (ai, 5, 1)); 37521 assert_true (ai_move (ai, 2, 3)); 37522 assert_true (ai_move (ai, 1, 2)); 37523 assert_true (ai_move (ai, 1, 3)); 37524 assert_true (ai_move (ai, 2, 1)); 37525 assert_true (ai_move (ai, 1, 5)); 37526 assert_true (ai_move (ai, 0, 5)); 37527 assert_true (ai_move (ai, 3, 1)); 37528 assert_true (ai_move (ai, 2, 0)); 37529 assert_true (ai_move (ai, 0, 2)); 37530 assert_true (ai_move (ai, 1, 4)); 37531 assert_true (ai_move (ai, 3, 5)); 37532 assert_true (ai_move (ai, 4, 0)); 37533 assert_true (ai_move (ai, 2, 7)); 37534 assert_true (ai_move (ai, 3, 6)); 37535 assert_true (ai_move (ai, 4, 5)); 37536 assert_true (ai_move (ai, 6, 5)); 37537 assert_true (ai_move (ai, 4, 6)); 37538 assert_true (ai_move (ai, 5, 6)); 37539 assert_true (ai_move (ai, 5, 4)); 37540 assert_true (ai_move (ai, 0, 3)); 37541 assert_true (ai_move (ai, 5, 7)); 37542 assert_true (ai_move (ai, 5, 2)); 37543 assert_true (ai_move (ai, 3, 2)); 37544 assert_true (ai_move (ai, 5, 3)); 37545 assert_true (ai_move (ai, 3, 0)); 37546 assert_true (ai_move (ai, 6, 4)); 37547 assert_true (ai_move (ai, 7, 3)); 37548 assert_true (ai_move (ai, 7, 5)); 37549 assert_true (ai_move (ai, 6, 3)); 37550 assert_true (ai_move (ai, 5, 0)); 37551 assert_true (ai_move (ai, 6, 2)); 37552 assert_true (ai_move (ai, 7, 4)); 37553 assert_true (ai_move (ai, 7, 6)); 37554 assert_true (ai_move (ai, 7, 2)); 37555 assert_true (ai_move (ai, 7, 1)); 37556 assert_true (ai_move (ai, 3, 7)); 37557 assert_true (ai_move (ai, 4, 7)); 37558 assert_true (ai_move (ai, 6, 1)); 37559 assert_true (ai_move (ai, 1, 7)); 37560 assert_true (ai_move (ai, 0, 1)); 37561 assert_true (ai_move (ai, 0, 4)); 37562 assert_true (ai_move (ai, 1, 1)); 37563 assert_true (ai_move (ai, 0, 0)); 37564 assert_true (ai_move (ai, 1, 0)); 37565 assert_true (ai_move (ai, 0, 6)); 37566 assert_true (ai_move (ai, 1, 6)); 37567 assert_true (ai_move (ai, 6, 6)); 37568 assert_true (ai_move (ai, 7, 7)); 37569 assert_true (ai_move (ai, 6, 7)); 37570 assert_true (ai_move (ai, 0, 7)); 37571 assert_true (ai_move (ai, 6, 0)); 37572 assert_true (ai_move (ai, 7, 0)); 37573 } 37574 37575 private static inline void test_complete_reversi_game_488 () 37576 { 37577 /* 0 1 2 3 4 5 6 7 */ 37578 string [] board = {/* 0 */ " . . . . . . . .", 37579 /* 1 */ " . . . . . . . .", 37580 /* 2 */ " . . . L . . . .", 37581 /* 3 */ " . . . L D . . .", 37582 /* 4 */ " . . L L D . . .", 37583 /* 5 */ " . . D . . D . .", 37584 /* 6 */ " . . . . . . . .", 37585 /* 7 */ " . . . . . . . ."}; 37586 37587 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 37588 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 37589 37590 assert_true (ai_move (ai, 2, 1)); 37591 assert_true (ai_move (ai, 2, 6)); 37592 assert_true (ai_move (ai, 2, 2)); 37593 assert_true (ai_move (ai, 5, 2)); 37594 assert_true (ai_move (ai, 5, 4)); 37595 assert_true (ai_move (ai, 4, 2)); 37596 assert_true (ai_move (ai, 6, 2)); 37597 assert_true (ai_move (ai, 3, 1)); 37598 assert_true (ai_move (ai, 2, 0)); 37599 assert_true (ai_move (ai, 1, 2)); 37600 assert_true (ai_move (ai, 1, 3)); 37601 assert_true (ai_move (ai, 0, 2)); 37602 assert_true (ai_move (ai, 0, 4)); 37603 assert_true (ai_move (ai, 5, 3)); 37604 assert_true (ai_move (ai, 6, 4)); 37605 assert_true (ai_move (ai, 6, 3)); 37606 assert_true (ai_move (ai, 0, 3)); 37607 assert_true (ai_move (ai, 0, 5)); 37608 assert_true (ai_move (ai, 7, 2)); 37609 assert_true (ai_move (ai, 2, 3)); 37610 assert_true (ai_move (ai, 3, 5)); 37611 assert_true (ai_move (ai, 4, 1)); 37612 assert_true (ai_move (ai, 1, 5)); 37613 assert_true (ai_move (ai, 0, 1)); 37614 assert_true (ai_move (ai, 5, 1)); 37615 assert_true (ai_move (ai, 5, 6)); 37616 assert_true (ai_move (ai, 4, 5)); 37617 assert_true (ai_move (ai, 6, 5)); 37618 assert_true (ai_move (ai, 5, 7)); 37619 assert_true (ai_move (ai, 5, 0)); 37620 assert_true (ai_move (ai, 7, 5)); 37621 assert_true (ai_move (ai, 4, 6)); 37622 assert_true (ai_move (ai, 4, 0)); 37623 assert_true (ai_move (ai, 0, 6)); 37624 assert_true (ai_move (ai, 3, 6)); 37625 assert_true (ai_move (ai, 4, 7)); 37626 assert_true (ai_move (ai, 1, 4)); 37627 assert_true (ai_move (ai, 2, 7)); 37628 assert_true (ai_move (ai, 3, 7)); 37629 assert_true (ai_move (ai, 6, 7)); 37630 assert_true (ai_move (ai, 6, 0)); 37631 assert_true (ai_move (ai, 3, 0)); 37632 assert_true (ai_move (ai, 1, 0)); 37633 assert_true (ai_move (ai, 7, 0)); 37634 assert_true (ai_move (ai, 6, 6)); 37635 assert_true (ai_move (ai, 0, 0)); 37636 assert_true (ai_move (ai, 1, 1)); 37637 assert_true (ai_move (ai, 7, 7)); 37638 assert_true (ai_move (ai, 7, 6)); 37639 assert_true (ai_move (ai, 7, 1)); 37640 assert_true (ai_move (ai, 6, 1)); 37641 assert_true (ai_move (ai, 7, 4)); 37642 assert_true (ai_move (ai, 7, 3)); 37643 assert_true (ai_move (ai, 1, 6)); 37644 assert_true (ai_move (ai, 1, 7)); 37645 assert_true (ai_move (ai, 0, 7)); 37646 } 37647 37648 private static inline void test_complete_reversi_game_489 () 37649 { 37650 /* 0 1 2 3 4 5 6 7 */ 37651 string [] board = {/* 0 */ " . . . . . . . .", 37652 /* 1 */ " . . . . . . . .", 37653 /* 2 */ " . . . . . . . .", 37654 /* 3 */ " . . . D D . . .", 37655 /* 4 */ " . . L L D . . .", 37656 /* 5 */ " . . L . . D . .", 37657 /* 6 */ " . . L . . . . .", 37658 /* 7 */ " . . . . . . . ."}; 37659 37660 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 37661 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 37662 37663 assert_true (ai_move (ai, 1, 5)); 37664 assert_true (ai_move (ai, 2, 3)); 37665 assert_true (ai_move (ai, 3, 7)); 37666 assert_true (ai_move (ai, 2, 7)); 37667 assert_true (ai_move (ai, 1, 3)); 37668 assert_true (ai_move (ai, 4, 7)); 37669 assert_true (ai_move (ai, 4, 5)); 37670 assert_true (ai_move (ai, 2, 2)); 37671 assert_true (ai_move (ai, 3, 5)); 37672 assert_true (ai_move (ai, 5, 6)); 37673 assert_true (ai_move (ai, 3, 1)); 37674 assert_true (ai_move (ai, 6, 5)); 37675 assert_true (ai_move (ai, 4, 6)); 37676 assert_true (ai_move (ai, 2, 1)); 37677 assert_true (ai_move (ai, 6, 4)); 37678 assert_true (ai_move (ai, 3, 6)); 37679 assert_true (ai_move (ai, 7, 5)); 37680 assert_true (ai_move (ai, 1, 4)); 37681 assert_true (ai_move (ai, 5, 7)); 37682 assert_true (ai_move (ai, 6, 7)); 37683 assert_true (ai_move (ai, 2, 0)); 37684 assert_true (ai_move (ai, 0, 2)); 37685 assert_true (ai_move (ai, 0, 5)); 37686 assert_true (ai_move (ai, 5, 4)); 37687 assert_true (ai_move (ai, 1, 2)); 37688 assert_true (ai_move (ai, 7, 3)); 37689 assert_true (ai_move (ai, 5, 3)); 37690 assert_true (ai_move (ai, 6, 2)); 37691 assert_true (ai_move (ai, 4, 2)); 37692 assert_true (ai_move (ai, 5, 1)); 37693 assert_true (ai_move (ai, 4, 1)); 37694 assert_true (ai_move (ai, 3, 2)); 37695 assert_true (ai_move (ai, 0, 3)); 37696 assert_true (ai_move (ai, 6, 3)); 37697 assert_true (ai_move (ai, 6, 0)); 37698 assert_true (ai_move (ai, 5, 0)); 37699 assert_true (ai_move (ai, 4, 0)); 37700 assert_true (ai_move (ai, 3, 0)); 37701 assert_true (ai_move (ai, 6, 1)); 37702 assert_true (ai_move (ai, 7, 2)); 37703 assert_true (ai_move (ai, 0, 1)); 37704 assert_true (ai_move (ai, 7, 0)); 37705 assert_true (ai_move (ai, 1, 7)); 37706 assert_true (ai_move (ai, 0, 7)); 37707 assert_true (ai_move (ai, 1, 1)); 37708 assert_true (ai_move (ai, 0, 4)); 37709 assert_true (ai_move (ai, 0, 6)); 37710 assert_true (ai_move (ai, 1, 6)); 37711 assert_true (ai_move (ai, 6, 6)); 37712 assert_true (ai_move (ai, 5, 2)); 37713 assert_true (ai_move (ai, 7, 1)); 37714 assert_true (ai_move (ai, 7, 4)); 37715 assert_true (ai_move (ai, 7, 6)); 37716 assert_true (ai_move (ai, 7, 7)); 37717 assert_true (game.pass ()); 37718 assert_true (ai_move (ai, 0, 0)); 37719 assert_true (ai_move (ai, 1, 0)); 37720 } 37721 37722 private static inline void test_complete_reversi_game_490 () 37723 { 37724 /* 0 1 2 3 4 5 6 7 */ 37725 string [] board = {/* 0 */ " . . . . . . . .", 37726 /* 1 */ " . . . . . . . .", 37727 /* 2 */ " . . . . . . . .", 37728 /* 3 */ " . . . D D . . .", 37729 /* 4 */ " . . L L D . . .", 37730 /* 5 */ " . . L . . D . .", 37731 /* 6 */ " . L . . . . . .", 37732 /* 7 */ " . . . . . . . ."}; 37733 37734 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 37735 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 37736 37737 assert_true (ai_move (ai, 1, 5)); 37738 assert_true (ai_move (ai, 2, 3)); 37739 assert_true (ai_move (ai, 1, 3)); 37740 assert_true (ai_move (ai, 2, 2)); 37741 assert_true (ai_move (ai, 3, 1)); 37742 assert_true (ai_move (ai, 2, 1)); 37743 assert_true (ai_move (ai, 1, 4)); 37744 assert_true (ai_move (ai, 0, 4)); 37745 assert_true (ai_move (ai, 3, 5)); 37746 assert_true (ai_move (ai, 4, 6)); 37747 assert_true (ai_move (ai, 4, 5)); 37748 assert_true (ai_move (ai, 6, 4)); 37749 assert_true (ai_move (ai, 6, 5)); 37750 assert_true (ai_move (ai, 2, 6)); 37751 assert_true (ai_move (ai, 3, 2)); 37752 assert_true (ai_move (ai, 0, 3)); 37753 assert_true (ai_move (ai, 1, 2)); 37754 assert_true (ai_move (ai, 4, 0)); 37755 assert_true (ai_move (ai, 0, 2)); 37756 assert_true (ai_move (ai, 4, 1)); 37757 assert_true (ai_move (ai, 4, 2)); 37758 assert_true (ai_move (ai, 5, 1)); 37759 assert_true (ai_move (ai, 0, 5)); 37760 assert_true (ai_move (ai, 0, 6)); 37761 assert_true (ai_move (ai, 0, 7)); 37762 assert_true (ai_move (ai, 7, 5)); 37763 assert_true (ai_move (ai, 2, 7)); 37764 assert_true (ai_move (ai, 5, 4)); 37765 assert_true (ai_move (ai, 3, 6)); 37766 assert_true (ai_move (ai, 1, 7)); 37767 assert_true (ai_move (ai, 5, 0)); 37768 assert_true (ai_move (ai, 6, 0)); 37769 assert_true (ai_move (ai, 6, 3)); 37770 assert_true (ai_move (ai, 6, 2)); 37771 assert_true (ai_move (ai, 5, 6)); 37772 assert_true (ai_move (ai, 5, 3)); 37773 assert_true (ai_move (ai, 3, 7)); 37774 assert_true (ai_move (ai, 5, 7)); 37775 assert_true (ai_move (ai, 4, 7)); 37776 assert_true (ai_move (ai, 1, 1)); 37777 assert_true (ai_move (ai, 7, 4)); 37778 assert_true (ai_move (ai, 7, 3)); 37779 assert_true (ai_move (ai, 5, 2)); 37780 assert_true (ai_move (ai, 3, 0)); 37781 assert_true (ai_move (ai, 0, 1)); 37782 assert_true (ai_move (ai, 7, 6)); 37783 assert_true (ai_move (ai, 0, 0)); 37784 assert_true (ai_move (ai, 6, 6)); 37785 assert_true (ai_move (ai, 7, 2)); 37786 assert_true (ai_move (ai, 7, 1)); 37787 assert_true (ai_move (ai, 7, 7)); 37788 assert_true (ai_move (ai, 6, 1)); 37789 assert_true (ai_move (ai, 6, 7)); 37790 assert_true (ai_move (ai, 1, 0)); 37791 assert_true (ai_move (ai, 7, 0)); 37792 assert_true (game.pass ()); 37793 assert_true (ai_move (ai, 2, 0)); 37794 } 37795 37796 private static inline void test_complete_reversi_game_491 () 37797 { 37798 /* 0 1 2 3 4 5 6 7 */ 37799 string [] board = {/* 0 */ " . . . . . . . .", 37800 /* 1 */ " . . . . . . . .", 37801 /* 2 */ " . . . . . . . .", 37802 /* 3 */ " . . . D D . . .", 37803 /* 4 */ " . . L L D . . .", 37804 /* 5 */ " . . D . L . . .", 37805 /* 6 */ " . . . . . L . .", 37806 /* 7 */ " . . . . . . . ."}; 37807 37808 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 37809 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 37810 37811 assert_true (ai_move (ai, 1, 5)); 37812 assert_true (ai_move (ai, 1, 4)); 37813 assert_true (ai_move (ai, 2, 3)); 37814 assert_true (ai_move (ai, 3, 6)); 37815 assert_true (ai_move (ai, 2, 6)); 37816 assert_true (ai_move (ai, 1, 2)); 37817 assert_true (ai_move (ai, 2, 2)); 37818 assert_true (ai_move (ai, 3, 2)); 37819 assert_true (ai_move (ai, 4, 7)); 37820 assert_true (ai_move (ai, 5, 5)); 37821 assert_true (ai_move (ai, 4, 2)); 37822 assert_true (ai_move (ai, 5, 4)); 37823 assert_true (ai_move (ai, 2, 1)); 37824 assert_true (ai_move (ai, 1, 3)); 37825 assert_true (ai_move (ai, 0, 2)); 37826 assert_true (ai_move (ai, 5, 2)); 37827 assert_true (ai_move (ai, 5, 3)); 37828 assert_true (ai_move (ai, 6, 2)); 37829 assert_true (ai_move (ai, 5, 1)); 37830 assert_true (ai_move (ai, 3, 1)); 37831 assert_true (ai_move (ai, 0, 5)); 37832 assert_true (ai_move (ai, 4, 0)); 37833 assert_true (ai_move (ai, 3, 5)); 37834 assert_true (ai_move (ai, 2, 7)); 37835 assert_true (ai_move (ai, 3, 0)); 37836 assert_true (ai_move (ai, 2, 0)); 37837 assert_true (ai_move (ai, 7, 2)); 37838 assert_true (ai_move (ai, 4, 1)); 37839 assert_true (ai_move (ai, 5, 0)); 37840 assert_true (ai_move (ai, 6, 0)); 37841 assert_true (ai_move (ai, 4, 6)); 37842 assert_true (ai_move (ai, 6, 3)); 37843 assert_true (ai_move (ai, 7, 3)); 37844 assert_true (ai_move (ai, 6, 4)); 37845 assert_true (ai_move (ai, 7, 4)); 37846 assert_true (ai_move (ai, 3, 7)); 37847 assert_true (ai_move (ai, 1, 7)); 37848 assert_true (ai_move (ai, 6, 5)); 37849 assert_true (ai_move (ai, 5, 7)); 37850 assert_true (ai_move (ai, 7, 5)); 37851 assert_true (ai_move (ai, 7, 6)); 37852 assert_true (ai_move (ai, 0, 4)); 37853 assert_true (ai_move (ai, 0, 3)); 37854 assert_true (ai_move (ai, 1, 6)); 37855 assert_true (ai_move (ai, 6, 7)); 37856 assert_true (ai_move (ai, 6, 1)); 37857 assert_true (ai_move (ai, 7, 1)); 37858 assert_true (ai_move (ai, 1, 1)); 37859 assert_true (ai_move (ai, 0, 0)); 37860 assert_true (ai_move (ai, 0, 1)); 37861 assert_true (ai_move (ai, 1, 0)); 37862 assert_true (ai_move (ai, 0, 7)); 37863 assert_true (ai_move (ai, 7, 0)); 37864 assert_true (ai_move (ai, 7, 7)); 37865 assert_true (ai_move (ai, 0, 6)); 37866 assert_true (ai_move (ai, 6, 6)); 37867 } 37868 37869 private static inline void test_complete_reversi_game_492 () 37870 { 37871 /* 0 1 2 3 4 5 6 7 */ 37872 string [] board = {/* 0 */ " . . . . . . . .", 37873 /* 1 */ " . . . . . . . .", 37874 /* 2 */ " . . . . . . . .", 37875 /* 3 */ " . . . D D . . .", 37876 /* 4 */ " . . L L L L . .", 37877 /* 5 */ " . . D . D . . .", 37878 /* 6 */ " . . . . . . . .", 37879 /* 7 */ " . . . . . . . ."}; 37880 37881 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 37882 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 37883 37884 assert_true (ai_move (ai, 1, 5)); 37885 assert_true (ai_move (ai, 5, 6)); 37886 assert_true (ai_move (ai, 6, 5)); 37887 assert_true (ai_move (ai, 6, 3)); 37888 assert_true (ai_move (ai, 4, 7)); 37889 assert_true (ai_move (ai, 1, 4)); 37890 assert_true (ai_move (ai, 0, 3)); 37891 assert_true (ai_move (ai, 2, 2)); 37892 assert_true (ai_move (ai, 4, 2)); 37893 assert_true (ai_move (ai, 5, 2)); 37894 assert_true (ai_move (ai, 6, 2)); 37895 assert_true (ai_move (ai, 4, 1)); 37896 assert_true (ai_move (ai, 5, 1)); 37897 assert_true (ai_move (ai, 5, 0)); 37898 assert_true (ai_move (ai, 5, 5)); 37899 assert_true (ai_move (ai, 5, 7)); 37900 assert_true (ai_move (ai, 4, 6)); 37901 assert_true (ai_move (ai, 7, 5)); 37902 assert_true (ai_move (ai, 7, 4)); 37903 assert_true (ai_move (ai, 7, 3)); 37904 assert_true (ai_move (ai, 4, 0)); 37905 assert_true (ai_move (ai, 3, 7)); 37906 assert_true (ai_move (ai, 3, 6)); 37907 assert_true (ai_move (ai, 3, 0)); 37908 assert_true (ai_move (ai, 5, 3)); 37909 assert_true (ai_move (ai, 3, 2)); 37910 assert_true (ai_move (ai, 3, 1)); 37911 assert_true (ai_move (ai, 2, 1)); 37912 assert_true (ai_move (ai, 1, 2)); 37913 assert_true (ai_move (ai, 2, 3)); 37914 assert_true (ai_move (ai, 1, 3)); 37915 assert_true (ai_move (ai, 2, 6)); 37916 assert_true (ai_move (ai, 3, 5)); 37917 assert_true (ai_move (ai, 6, 4)); 37918 assert_true (ai_move (ai, 7, 2)); 37919 assert_true (ai_move (ai, 7, 1)); 37920 assert_true (ai_move (ai, 2, 7)); 37921 assert_true (ai_move (ai, 0, 2)); 37922 assert_true (ai_move (ai, 6, 7)); 37923 assert_true (ai_move (ai, 0, 4)); 37924 assert_true (ai_move (ai, 2, 0)); 37925 assert_true (ai_move (ai, 0, 5)); 37926 assert_true (ai_move (ai, 6, 0)); 37927 assert_true (ai_move (ai, 7, 6)); 37928 assert_true (ai_move (ai, 6, 6)); 37929 assert_true (ai_move (ai, 1, 1)); 37930 assert_true (ai_move (ai, 0, 0)); 37931 assert_true (ai_move (ai, 1, 0)); 37932 assert_true (ai_move (ai, 0, 1)); 37933 assert_true (ai_move (ai, 7, 0)); 37934 assert_true (ai_move (ai, 0, 6)); 37935 assert_true (ai_move (ai, 1, 7)); 37936 assert_true (ai_move (ai, 0, 7)); 37937 assert_true (ai_move (ai, 1, 6)); 37938 assert_true (ai_move (ai, 6, 1)); 37939 } 37940 37941 private static inline void test_complete_reversi_game_493 () 37942 { 37943 /* 0 1 2 3 4 5 6 7 */ 37944 string [] board = {/* 0 */ " . . . . . . . .", 37945 /* 1 */ " . . . . . . . .", 37946 /* 2 */ " . . . . . L . .", 37947 /* 3 */ " . . . D L . . .", 37948 /* 4 */ " . . L L D . . .", 37949 /* 5 */ " . . D . D . . .", 37950 /* 6 */ " . . . . . . . .", 37951 /* 7 */ " . . . . . . . ."}; 37952 37953 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 37954 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 37955 37956 assert_true (ai_move (ai, 2, 3)); 37957 assert_true (ai_move (ai, 1, 3)); 37958 assert_true (ai_move (ai, 1, 2)); 37959 assert_true (ai_move (ai, 1, 5)); 37960 assert_true (ai_move (ai, 1, 4)); 37961 assert_true (ai_move (ai, 0, 3)); 37962 assert_true (ai_move (ai, 0, 5)); 37963 assert_true (ai_move (ai, 2, 1)); 37964 assert_true (ai_move (ai, 0, 2)); 37965 assert_true (ai_move (ai, 0, 1)); 37966 assert_true (ai_move (ai, 3, 2)); 37967 assert_true (ai_move (ai, 3, 5)); 37968 assert_true (ai_move (ai, 2, 6)); 37969 assert_true (ai_move (ai, 2, 7)); 37970 assert_true (ai_move (ai, 3, 6)); 37971 assert_true (ai_move (ai, 2, 2)); 37972 assert_true (ai_move (ai, 2, 0)); 37973 assert_true (ai_move (ai, 3, 1)); 37974 assert_true (ai_move (ai, 3, 7)); 37975 assert_true (ai_move (ai, 4, 2)); 37976 assert_true (ai_move (ai, 3, 0)); 37977 assert_true (ai_move (ai, 4, 0)); 37978 assert_true (ai_move (ai, 5, 0)); 37979 assert_true (ai_move (ai, 5, 6)); 37980 assert_true (ai_move (ai, 4, 6)); 37981 assert_true (ai_move (ai, 5, 7)); 37982 assert_true (ai_move (ai, 4, 7)); 37983 assert_true (ai_move (ai, 4, 1)); 37984 assert_true (ai_move (ai, 5, 1)); 37985 assert_true (ai_move (ai, 5, 4)); 37986 assert_true (ai_move (ai, 6, 2)); 37987 assert_true (ai_move (ai, 7, 2)); 37988 assert_true (ai_move (ai, 5, 5)); 37989 assert_true (ai_move (ai, 1, 0)); 37990 assert_true (ai_move (ai, 0, 0)); 37991 assert_true (ai_move (ai, 0, 4)); 37992 assert_true (ai_move (ai, 1, 1)); 37993 assert_true (ai_move (ai, 1, 6)); 37994 assert_true (ai_move (ai, 5, 3)); 37995 assert_true (ai_move (ai, 6, 3)); 37996 assert_true (ai_move (ai, 6, 4)); 37997 assert_true (ai_move (ai, 6, 5)); 37998 assert_true (ai_move (ai, 0, 7)); 37999 assert_true (ai_move (ai, 0, 6)); 38000 assert_true (ai_move (ai, 1, 7)); 38001 assert_true (ai_move (ai, 6, 0)); 38002 assert_true (ai_move (ai, 6, 7)); 38003 assert_true (ai_move (ai, 6, 6)); 38004 assert_true (ai_move (ai, 7, 7)); 38005 assert_true (ai_move (ai, 7, 6)); 38006 assert_true (ai_move (ai, 7, 0)); 38007 assert_true (game.pass ()); 38008 assert_true (ai_move (ai, 7, 1)); 38009 assert_true (ai_move (ai, 7, 3)); 38010 assert_true (ai_move (ai, 7, 5)); 38011 assert_true (ai_move (ai, 7, 4)); 38012 assert_true (ai_move (ai, 6, 1)); 38013 } 38014 38015 private static inline void test_complete_reversi_game_494 () 38016 { 38017 /* 0 1 2 3 4 5 6 7 */ 38018 string [] board = {/* 0 */ " . . . . . . . .", 38019 /* 1 */ " . . . . . . . .", 38020 /* 2 */ " . . . . L . . .", 38021 /* 3 */ " . . . L D . . .", 38022 /* 4 */ " . . L L D . . .", 38023 /* 5 */ " . . D . D . . .", 38024 /* 6 */ " . . . . . . . .", 38025 /* 7 */ " . . . . . . . ."}; 38026 38027 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 38028 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 38029 38030 assert_true (ai_move (ai, 4, 1)); 38031 assert_true (ai_move (ai, 2, 6)); 38032 assert_true (ai_move (ai, 2, 2)); 38033 assert_true (ai_move (ai, 5, 1)); 38034 assert_true (ai_move (ai, 2, 3)); 38035 assert_true (ai_move (ai, 2, 1)); 38036 assert_true (ai_move (ai, 1, 4)); 38037 assert_true (ai_move (ai, 0, 5)); 38038 assert_true (ai_move (ai, 0, 4)); 38039 assert_true (ai_move (ai, 0, 3)); 38040 assert_true (ai_move (ai, 6, 0)); 38041 assert_true (ai_move (ai, 5, 6)); 38042 assert_true (ai_move (ai, 3, 5)); 38043 assert_true (ai_move (ai, 5, 4)); 38044 assert_true (ai_move (ai, 1, 5)); 38045 assert_true (ai_move (ai, 3, 6)); 38046 assert_true (ai_move (ai, 4, 6)); 38047 assert_true (ai_move (ai, 5, 2)); 38048 assert_true (ai_move (ai, 6, 2)); 38049 assert_true (ai_move (ai, 3, 2)); 38050 assert_true (ai_move (ai, 6, 3)); 38051 assert_true (ai_move (ai, 6, 5)); 38052 assert_true (ai_move (ai, 6, 4)); 38053 assert_true (ai_move (ai, 5, 3)); 38054 assert_true (ai_move (ai, 1, 3)); 38055 assert_true (ai_move (ai, 1, 2)); 38056 assert_true (ai_move (ai, 3, 1)); 38057 assert_true (ai_move (ai, 0, 2)); 38058 assert_true (ai_move (ai, 2, 7)); 38059 assert_true (ai_move (ai, 7, 2)); 38060 assert_true (ai_move (ai, 5, 5)); 38061 assert_true (ai_move (ai, 7, 5)); 38062 assert_true (ai_move (ai, 2, 0)); 38063 assert_true (ai_move (ai, 0, 6)); 38064 assert_true (ai_move (ai, 5, 7)); 38065 assert_true (ai_move (ai, 7, 3)); 38066 assert_true (ai_move (ai, 7, 4)); 38067 assert_true (ai_move (ai, 5, 0)); 38068 assert_true (ai_move (ai, 4, 0)); 38069 assert_true (ai_move (ai, 3, 0)); 38070 assert_true (ai_move (ai, 6, 1)); 38071 assert_true (ai_move (ai, 3, 7)); 38072 assert_true (ai_move (ai, 4, 7)); 38073 assert_true (ai_move (ai, 1, 1)); 38074 assert_true (ai_move (ai, 1, 7)); 38075 assert_true (ai_move (ai, 6, 6)); 38076 assert_true (ai_move (ai, 7, 1)); 38077 assert_true (ai_move (ai, 7, 0)); 38078 assert_true (ai_move (ai, 0, 0)); 38079 assert_true (ai_move (ai, 6, 7)); 38080 assert_true (ai_move (ai, 7, 7)); 38081 assert_true (ai_move (ai, 7, 6)); 38082 assert_true (ai_move (ai, 1, 0)); 38083 assert_true (ai_move (ai, 1, 6)); 38084 assert_true (ai_move (ai, 0, 1)); 38085 assert_true (game.pass ()); 38086 assert_true (ai_move (ai, 0, 7)); 38087 } 38088 38089 private static inline void test_complete_reversi_game_495 () 38090 { 38091 /* 0 1 2 3 4 5 6 7 */ 38092 string [] board = {/* 0 */ " . . . . . . . .", 38093 /* 1 */ " . . . . . . . .", 38094 /* 2 */ " . . . L . . . .", 38095 /* 3 */ " . . . L D . . .", 38096 /* 4 */ " . . L L D . . .", 38097 /* 5 */ " . . D . D . . .", 38098 /* 6 */ " . . . . . . . .", 38099 /* 7 */ " . . . . . . . ."}; 38100 38101 Game game = new Game.from_strings (board, Player.DARK, /* reverse */ false); 38102 ComputerPlayer ai = new ComputerReversiHard (game, /* depth */ 1, /* fixed heuristic */ true); 38103 38104 assert_true (ai_move (ai, 2, 1)); 38105 assert_true (ai_move (ai, 2, 6)); 38106 assert_true (ai_move (ai, 2, 2)); 38107 assert_true (ai_move (ai, 5, 6)); 38108 assert_true (ai_move (ai, 4, 6)); 38109 assert_true (ai_move (ai, 5, 2)); 38110 assert_true (ai_move (ai, 5, 4)); 38111 assert_true (ai_move (ai, 4, 2)); 38112 assert_true (ai_move (ai, 6, 2)); 38113 assert_true (ai_move (ai, 3, 1)); 38114 assert_true (ai_move (ai, 2, 0)); 38115 assert_true (ai_move (ai, 1, 2)); 38116 assert_true (ai_move (ai, 1, 3)); 38117 assert_true (ai_move (ai, 1, 4)); 38118 assert_true (ai_move (ai, 0, 2)); 38119 assert_true (ai_move (ai, 4, 0)); 38120 assert_true (ai_move (ai, 2, 3)); 38121 assert_true (ai_move (ai, 5, 1)); 38122 assert_true (ai_move (ai, 5, 3)); 38123 assert_true (ai_move (ai, 7, 2)); 38124 assert_true (ai_move (ai, 5, 0)); 38125 assert_true (ai_move (ai, 3, 0)); 38126 assert_true (ai_move (ai, 4, 1)); 38127 assert_true (ai_move (ai, 6, 3)); 38128 assert_true (ai_move (ai, 6, 4)); 38129 assert_true (ai_move (ai, 0, 3)); 38130 assert_true (ai_move (ai, 2, 7)); 38131 assert_true (ai_move (ai, 0, 1)); 38132 assert_true (ai_move (ai, 0, 5)); 38133 assert_true (ai_move (ai, 1, 5)); 38134 assert_true (ai_move (ai, 7, 3)); 38135 assert_true (ai_move (ai, 3, 5)); 38136 assert_true (ai_move (ai, 7, 1)); 38137 assert_true (ai_move (ai, 5, 7)); 38138 assert_true (ai_move (ai, 4, 7)); 38139 assert_true (ai_move (ai, 5, 5)); 38140 assert_true (ai_move (ai, 6, 5)); 38141 assert_true (ai_move (ai, 3, 7)); 38142 assert_true (ai_move (ai, 6, 7)); 38143 assert_true (ai_move (ai, 3, 6)); 38144 assert_true (ai_move (ai, 6, 1)); 38145 assert_true (ai_move (ai, 7, 4)); 38146 assert_true (ai_move (ai, 7, 5)); 38147 assert_true (ai_move (ai, 1, 1)); 38148 assert_true (ai_move (ai, 0, 4)); 38149 assert_true (ai_move (ai, 0, 6)); 38150 assert_true (ai_move (ai, 1, 6)); 38151 assert_true (ai_move (ai, 1, 0)); 38152 assert_true (ai_move (ai, 0, 0)); 38153 assert_true (ai_move (ai, 0, 7)); 38154 assert_true (ai_move (ai, 1, 7)); 38155 assert_true (ai_move (ai, 7, 7)); 38156 assert_true (game.pass ()); 38157 assert_true (ai_move (ai, 7, 6)); 38158 assert_true (ai_move (ai, 6, 6)); 38159 assert_true (ai_move (ai, 7, 0)); 38160 assert_true (ai_move (ai, 6, 0)); 38161 } 38162} 38163