bioshogi 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.ruby-version +3 -0
- data/.travis.yml +14 -0
- data/Brewfile +2 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +135 -0
- data/LICENSE +661 -0
- data/NEW_README.md +27 -0
- data/README.org +711 -0
- data/Rakefile +3 -0
- data/bin/bioshogi +3 -0
- data/bioshogi.gemspec +44 -0
- data/bioshogi.png +0 -0
- data/credit.org +6 -0
- data/lib/bioshogi/ai/brain.rb +202 -0
- data/lib/bioshogi/ai/diver/base.rb +114 -0
- data/lib/bioshogi/ai/diver/nega_alpha_diver.rb +122 -0
- data/lib/bioshogi/ai/diver/nega_alpha_mate_diver.rb +212 -0
- data/lib/bioshogi/ai/diver/nega_max_diver.rb +58 -0
- data/lib/bioshogi/ai/diver/nega_scout_diver.rb +120 -0
- data/lib/bioshogi/ai/evaluator/attack_weight_table.rb +52 -0
- data/lib/bioshogi/ai/evaluator/base.rb +40 -0
- data/lib/bioshogi/ai/evaluator/level0.rb +25 -0
- data/lib/bioshogi/ai/evaluator/level1.rb +26 -0
- data/lib/bioshogi/ai/evaluator/level2.rb +31 -0
- data/lib/bioshogi/ai/evaluator/level3.rb +121 -0
- data/lib/bioshogi/ai/evaluator/level4.rb +43 -0
- data/lib/bioshogi/ai/evaluator/opening_basic_table.rb +108 -0
- data/lib/bioshogi/ai/player_brain_mod.rb +142 -0
- data/lib/bioshogi/ai.rb +5 -0
- data/lib/bioshogi/application_memory_record.rb +28 -0
- data/lib/bioshogi/assertion.rb +20 -0
- data/lib/bioshogi/assets/audios/any.band/Alternatives/000/DisplayState.plist +0 -0
- data/lib/bioshogi/assets/audios/any.band/Alternatives/000/DisplayStateArchive +0 -0
- data/lib/bioshogi/assets/audios/any.band/Alternatives/000/MetaData.plist +0 -0
- data/lib/bioshogi/assets/audios/any.band/Alternatives/000/ProjectData +0 -0
- data/lib/bioshogi/assets/audios/any.band/Alternatives/000/WindowImage.jpg +0 -0
- data/lib/bioshogi/assets/audios/any.band/Media/Audio Files/Strategy.caf +0 -0
- data/lib/bioshogi/assets/audios/any.band/Resources/ProjectInformation.plist +0 -0
- data/lib/bioshogi/assets/audios/any.band/projectData +3183 -0
- data/lib/bioshogi/assets/audios/blank.m4a +0 -0
- data/lib/bioshogi/assets/audios/blank.wav +0 -0
- data/lib/bioshogi/assets/audios/blank1.m4a +0 -0
- data/lib/bioshogi/assets/audios/blank2.m4a +0 -0
- data/lib/bioshogi/assets/audios/blank3.m4a +0 -0
- data/lib/bioshogi/assets/audios/breakbeat_long.band/Alternatives/000/DisplayState.plist +0 -0
- data/lib/bioshogi/assets/audios/breakbeat_long.band/Alternatives/000/DisplayStateArchive +0 -0
- data/lib/bioshogi/assets/audios/breakbeat_long.band/Alternatives/000/MetaData.plist +0 -0
- data/lib/bioshogi/assets/audios/breakbeat_long.band/Alternatives/000/ProjectData +0 -0
- data/lib/bioshogi/assets/audios/breakbeat_long.band/Alternatives/000/WindowImage.jpg +0 -0
- data/lib/bioshogi/assets/audios/breakbeat_long.band/Resources/ProjectInformation.plist +0 -0
- data/lib/bioshogi/assets/audios/breakbeat_long.band/projectData +3183 -0
- data/lib/bioshogi/assets/audios/breakbeat_long.m4a +0 -0
- data/lib/bioshogi/assets/audios/breakbeat_long_old.m4a +0 -0
- data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Alternatives/000/DisplayState.plist +0 -0
- data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Alternatives/000/DisplayStateArchive +0 -0
- data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Alternatives/000/MetaData.plist +0 -0
- data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Alternatives/000/ProjectData +0 -0
- data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Alternatives/000/WindowImage.jpg +0 -0
- data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Media/Audio Files/Strategy.caf +0 -0
- data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/Resources/ProjectInformation.plist +0 -0
- data/lib/bioshogi/assets/audios/breakbeat_long_strip.band/projectData +3183 -0
- data/lib/bioshogi/assets/audios/breakbeat_long_strip.m4a +0 -0
- data/lib/bioshogi/assets/audios/china_like.band/Alternatives/000/DisplayState.plist +0 -0
- data/lib/bioshogi/assets/audios/china_like.band/Alternatives/000/DisplayStateArchive +0 -0
- data/lib/bioshogi/assets/audios/china_like.band/Alternatives/000/MetaData.plist +0 -0
- data/lib/bioshogi/assets/audios/china_like.band/Alternatives/000/ProjectData +0 -0
- data/lib/bioshogi/assets/audios/china_like.band/Alternatives/000/WindowImage.jpg +0 -0
- data/lib/bioshogi/assets/audios/china_like.band/Resources/ProjectInformation.plist +0 -0
- data/lib/bioshogi/assets/audios/china_like.band/projectData +3183 -0
- data/lib/bioshogi/assets/audios/china_like_a.m4a +0 -0
- data/lib/bioshogi/assets/audios/china_like_b.m4a +0 -0
- data/lib/bioshogi/assets/audios/convert.sh +52 -0
- data/lib/bioshogi/assets/audios/diamond_shark.m4a +0 -0
- data/lib/bioshogi/assets/audios/digit_blast_layers.band/Alternatives/000/DisplayState.plist +0 -0
- data/lib/bioshogi/assets/audios/digit_blast_layers.band/Alternatives/000/DisplayStateArchive +0 -0
- data/lib/bioshogi/assets/audios/digit_blast_layers.band/Alternatives/000/MetaData.plist +0 -0
- data/lib/bioshogi/assets/audios/digit_blast_layers.band/Alternatives/000/ProjectData +0 -0
- data/lib/bioshogi/assets/audios/digit_blast_layers.band/Alternatives/000/WindowImage.jpg +0 -0
- data/lib/bioshogi/assets/audios/digit_blast_layers.band/Resources/ProjectInformation.plist +0 -0
- data/lib/bioshogi/assets/audios/digit_blast_layers.band/projectData +3183 -0
- data/lib/bioshogi/assets/audios/ds1022.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds1022.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds10827.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds10827.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds11184.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds11184.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds13037.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds13037.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds13513.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds13513.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds14640.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds14640.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds1982.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds1982.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds2142.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds2142.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds3479.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds3479.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds3480.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds3480.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds3812.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds3812.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds3895.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds3895.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds4520.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds4520.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds4616.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds4616.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds5615.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds5615.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds5616.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds5616.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds568.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds568.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds7138.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds7138.mp3 +0 -0
- data/lib/bioshogi/assets/audios/ds8705.m4a +0 -0
- data/lib/bioshogi/assets/audios/ds8705.mp3 +0 -0
- data/lib/bioshogi/assets/audios/foo.band/Alternatives/000/DisplayState.plist +0 -0
- data/lib/bioshogi/assets/audios/foo.band/Alternatives/000/DisplayStateArchive +0 -0
- data/lib/bioshogi/assets/audios/foo.band/Alternatives/000/MetaData.plist +0 -0
- data/lib/bioshogi/assets/audios/foo.band/Alternatives/000/ProjectData +0 -0
- data/lib/bioshogi/assets/audios/foo.band/Alternatives/000/WindowImage.jpg +0 -0
- data/lib/bioshogi/assets/audios/foo.band/Media/Audio Files/Strategy.caf +0 -0
- data/lib/bioshogi/assets/audios/foo.band/Resources/ProjectInformation.plist +0 -0
- data/lib/bioshogi/assets/audios/foo.band/projectData +3183 -0
- data/lib/bioshogi/assets/audios/headspin_long.band/Alternatives/000/DisplayState.plist +0 -0
- data/lib/bioshogi/assets/audios/headspin_long.band/Alternatives/000/DisplayStateArchive +0 -0
- data/lib/bioshogi/assets/audios/headspin_long.band/Alternatives/000/MetaData.plist +0 -0
- data/lib/bioshogi/assets/audios/headspin_long.band/Alternatives/000/ProjectData +0 -0
- data/lib/bioshogi/assets/audios/headspin_long.band/Alternatives/000/WindowImage.jpg +0 -0
- data/lib/bioshogi/assets/audios/headspin_long.band/Resources/ProjectInformation.plist +0 -0
- data/lib/bioshogi/assets/audios/headspin_long.band/projectData +3183 -0
- data/lib/bioshogi/assets/audios/headspin_long.m4a +0 -0
- data/lib/bioshogi/assets/audios/loop_bgm_i.band/Alternatives/000/DisplayState.plist +0 -0
- data/lib/bioshogi/assets/audios/loop_bgm_i.band/Alternatives/000/DisplayStateArchive +0 -0
- data/lib/bioshogi/assets/audios/loop_bgm_i.band/Alternatives/000/MetaData.plist +0 -0
- data/lib/bioshogi/assets/audios/loop_bgm_i.band/Alternatives/000/ProjectData +0 -0
- data/lib/bioshogi/assets/audios/loop_bgm_i.band/Alternatives/000/WindowImage.jpg +0 -0
- data/lib/bioshogi/assets/audios/loop_bgm_i.band/Resources/ProjectInformation.plist +0 -0
- data/lib/bioshogi/assets/audios/loop_bgm_i.band/projectData +3183 -0
- data/lib/bioshogi/assets/audios/mastermind.band/Alternatives/000/DisplayState.plist +0 -0
- data/lib/bioshogi/assets/audios/mastermind.band/Alternatives/000/DisplayStateArchive +0 -0
- data/lib/bioshogi/assets/audios/mastermind.band/Alternatives/000/MetaData.plist +0 -0
- data/lib/bioshogi/assets/audios/mastermind.band/Alternatives/000/ProjectData +0 -0
- data/lib/bioshogi/assets/audios/mastermind.band/Alternatives/000/WindowImage.jpg +0 -0
- data/lib/bioshogi/assets/audios/mastermind.band/Resources/ProjectInformation.plist +0 -0
- data/lib/bioshogi/assets/audios/mastermind.band/projectData +3183 -0
- data/lib/bioshogi/assets/audios/mastermind.m4a +0 -0
- data/lib/bioshogi/assets/audios/nc105702.m4a +0 -0
- data/lib/bioshogi/assets/audios/nc105702.mp3 +0 -0
- data/lib/bioshogi/assets/audios/nc142538.m4a +0 -0
- data/lib/bioshogi/assets/audios/nc142538.mp3 +0 -0
- data/lib/bioshogi/assets/audios/nc162705.m4a +0 -0
- data/lib/bioshogi/assets/audios/nc162705.mp3 +0 -0
- data/lib/bioshogi/assets/audios/nc799.m4a +0 -0
- data/lib/bioshogi/assets/audios/nc799.mp3 +0 -0
- data/lib/bioshogi/assets/audios/nc97718.m4a +0 -0
- data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/Autosave/.dummy +0 -0
- data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/Autosave/2021-08-19 05:25:23Z.displayData +0 -0
- data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/Autosave/2021-08-19 05:25:23Z.eventData +0 -0
- data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/Autosave/2021-08-19 05:25:23Z.songData +0 -0
- data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/DisplayState.plist +0 -0
- data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/DisplayStateArchive +0 -0
- data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/MetaData.plist +0 -0
- data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/ProjectData +0 -0
- data/lib/bioshogi/assets/audios/positive_think.band/Alternatives/000/WindowImage.jpg +0 -0
- data/lib/bioshogi/assets/audios/positive_think.band/Resources/ProjectInformation.plist +0 -0
- data/lib/bioshogi/assets/audios/positive_think.band/projectData +3183 -0
- data/lib/bioshogi/assets/audios/positive_think.m4a +0 -0
- data/lib/bioshogi/assets/audios/shw_akatsuki_japan.m4a +0 -0
- data/lib/bioshogi/assets/audios/shw_akatsuki_japan.mp3 +0 -0
- data/lib/bioshogi/assets/audios/stg_like_type1.band/Alternatives/000/DisplayState.plist +0 -0
- data/lib/bioshogi/assets/audios/stg_like_type1.band/Alternatives/000/DisplayStateArchive +0 -0
- data/lib/bioshogi/assets/audios/stg_like_type1.band/Alternatives/000/MetaData.plist +0 -0
- data/lib/bioshogi/assets/audios/stg_like_type1.band/Alternatives/000/ProjectData +0 -0
- data/lib/bioshogi/assets/audios/stg_like_type1.band/Alternatives/000/WindowImage.jpg +0 -0
- data/lib/bioshogi/assets/audios/stg_like_type1.band/Resources/ProjectInformation.plist +0 -0
- data/lib/bioshogi/assets/audios/stg_like_type1.band/projectData +3183 -0
- data/lib/bioshogi/assets/audios/stg_like_type1a.m4a +0 -0
- data/lib/bioshogi/assets/audios/stg_like_type1b.m4a +0 -0
- data/lib/bioshogi/assets/audios/strategy.band/Alternatives/000/DisplayState.plist +0 -0
- data/lib/bioshogi/assets/audios/strategy.band/Alternatives/000/DisplayStateArchive +0 -0
- data/lib/bioshogi/assets/audios/strategy.band/Alternatives/000/MetaData.plist +0 -0
- data/lib/bioshogi/assets/audios/strategy.band/Alternatives/000/ProjectData +0 -0
- data/lib/bioshogi/assets/audios/strategy.band/Alternatives/000/WindowImage.jpg +0 -0
- data/lib/bioshogi/assets/audios/strategy.band/Media/Audio Files/Strategy.caf +0 -0
- data/lib/bioshogi/assets/audios/strategy.band/Resources/ProjectInformation.plist +0 -0
- data/lib/bioshogi/assets/audios/strategy.band/projectData +3183 -0
- data/lib/bioshogi/assets/audios/strategy.m4a +0 -0
- data/lib/bioshogi/assets/audios/test1.band/Alternatives/000/DisplayState.plist +0 -0
- data/lib/bioshogi/assets/audios/test1.band/Alternatives/000/DisplayStateArchive +0 -0
- data/lib/bioshogi/assets/audios/test1.band/Alternatives/000/MetaData.plist +0 -0
- data/lib/bioshogi/assets/audios/test1.band/Alternatives/000/ProjectData +0 -0
- data/lib/bioshogi/assets/audios/test1.band/Alternatives/000/WindowImage.jpg +0 -0
- data/lib/bioshogi/assets/audios/test1.band/Resources/ProjectInformation.plist +0 -0
- data/lib/bioshogi/assets/audios/test1.band/projectData +3183 -0
- data/lib/bioshogi/assets/audios/test2.band/Alternatives/000/DisplayState.plist +0 -0
- data/lib/bioshogi/assets/audios/test2.band/Alternatives/000/DisplayStateArchive +0 -0
- data/lib/bioshogi/assets/audios/test2.band/Alternatives/000/MetaData.plist +0 -0
- data/lib/bioshogi/assets/audios/test2.band/Alternatives/000/ProjectData +0 -0
- data/lib/bioshogi/assets/audios/test2.band/Alternatives/000/WindowImage.jpg +0 -0
- data/lib/bioshogi/assets/audios/test2.band/Resources/ProjectInformation.plist +0 -0
- data/lib/bioshogi/assets/audios/test2.band/projectData +3183 -0
- data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Black.ttf +0 -0
- data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Bold.ttf +0 -0
- data/lib/bioshogi/assets/fonts/MPLUSRounded1c-ExtraBold.ttf +0 -0
- data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Light.ttf +0 -0
- data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Medium.ttf +0 -0
- data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Regular.ttf +0 -0
- data/lib/bioshogi/assets/fonts/MPLUSRounded1c-Thin.ttf +0 -0
- data/lib/bioshogi/assets/fonts/NewTegomin-Regular.ttf +0 -0
- data/lib/bioshogi/assets/fonts/NotoSansJP-Black.otf +0 -0
- data/lib/bioshogi/assets/fonts/NotoSansJP-Bold.otf +0 -0
- data/lib/bioshogi/assets/fonts/NotoSansJP-Light.otf +0 -0
- data/lib/bioshogi/assets/fonts/NotoSansJP-Medium.otf +0 -0
- data/lib/bioshogi/assets/fonts/NotoSansJP-Regular.otf +0 -0
- data/lib/bioshogi/assets/fonts/NotoSansJP-Thin.otf +0 -0
- data/lib/bioshogi/assets/fonts/NotoSerifJP-Black.otf +0 -0
- data/lib/bioshogi/assets/fonts/NotoSerifJP-Bold.otf +0 -0
- data/lib/bioshogi/assets/fonts/NotoSerifJP-ExtraLight.otf +0 -0
- data/lib/bioshogi/assets/fonts/NotoSerifJP-Light.otf +0 -0
- data/lib/bioshogi/assets/fonts/NotoSerifJP-Medium.otf +0 -0
- data/lib/bioshogi/assets/fonts/NotoSerifJP-Regular.otf +0 -0
- data/lib/bioshogi/assets/fonts/NotoSerifJP-SemiBold.otf +0 -0
- data/lib/bioshogi/assets/fonts/README.org +9 -0
- data/lib/bioshogi/assets/fonts/RictyDiminished-Bold.ttf +0 -0
- data/lib/bioshogi/assets/fonts/RictyDiminished-Regular.ttf +0 -0
- data/lib/bioshogi/assets/fonts/YuseiMagic-Regular.ttf +0 -0
- data/lib/bioshogi/assets/images/README.org +0 -0
- data/lib/bioshogi/assets/images/background/README.org +9 -0
- data/lib/bioshogi/assets/images/background/background_a.png +0 -0
- data/lib/bioshogi/assets/images/board/README.org +7 -0
- data/lib/bioshogi/assets/images/board/board_a.png +0 -0
- data/lib/bioshogi/assets/images/color_theme_preview/is_color_theme_club24.png +0 -0
- data/lib/bioshogi/assets/images/color_theme_preview/is_color_theme_paper.png +0 -0
- data/lib/bioshogi/assets/images/color_theme_preview/is_color_theme_piyo.png +0 -0
- data/lib/bioshogi/assets/images/color_theme_preview/is_color_theme_real.png +0 -0
- data/lib/bioshogi/assets/images/color_theme_preview/is_color_theme_shape.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/BB0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/BB1.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/BG0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/BK0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/BL0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/BL1.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/BN0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/BN1.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/BP0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/BP1.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/BR0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/BR1.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/BS0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/BS1.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/BX0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/README.org +1 -0
- data/lib/bioshogi/assets/images/piece/Portella/WB0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/WB1.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/WG0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/WK0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/WL0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/WL1.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/WN0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/WN1.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/WP0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/WP1.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/WR0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/WR1.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/WS0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/WS1.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/WX0.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/convert.sh +32 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/0FU.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/0GI.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/0GY.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/0HI.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/0KA.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/0KE.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/0KI.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/0KI.svg +1 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/0KY.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/0NG.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/0NK.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/0NY.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/0OU.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/0RY.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/0TO.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/0UM.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/1FU.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/1GI.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/1GY.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/1HI.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/1KA.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/1KE.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/1KI.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/1KY.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/1NG.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/1NK.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/1NY.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/1OU.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/1RY.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/1TO.png +0 -0
- data/lib/bioshogi/assets/images/piece/Portella/original/1UM.png +0 -0
- data/lib/bioshogi/board/basic.rb +24 -0
- data/lib/bioshogi/board/csa_formatter.rb +40 -0
- data/lib/bioshogi/board/kakinoki_formatter.rb +57 -0
- data/lib/bioshogi/board/piece_counts_methods.rb +43 -0
- data/lib/bioshogi/board/reader_methods.rb +91 -0
- data/lib/bioshogi/board/technique_matcher_methods.rb +23 -0
- data/lib/bioshogi/board/update_methods.rb +79 -0
- data/lib/bioshogi/board.rb +28 -0
- data/lib/bioshogi/board_parser/base.rb +43 -0
- data/lib/bioshogi/board_parser/compare_board_parser.rb +95 -0
- data/lib/bioshogi/board_parser/csa_board_parser.rb +45 -0
- data/lib/bioshogi/board_parser/kakinoki_board_parser.rb +95 -0
- data/lib/bioshogi/board_parser/sfen_board_parser.rb +29 -0
- data/lib/bioshogi/board_parser.rb +33 -0
- data/lib/bioshogi/builder.rb +9 -0
- data/lib/bioshogi/cli/.gitignore +1 -0
- data/lib/bioshogi/cli/convert.rb +34 -0
- data/lib/bioshogi/cli/input_parser.rb +23 -0
- data/lib/bioshogi/cli/piece.rb +19 -0
- data/lib/bioshogi/cli/versus.rb +160 -0
- data/lib/bioshogi/cli.rb +106 -0
- data/lib/bioshogi/container/basic.rb +13 -0
- data/lib/bioshogi/container/checkmate_yomiage.rb +87 -0
- data/lib/bioshogi/container/core_methods.rb +99 -0
- data/lib/bioshogi/container/execute_methods.rb +40 -0
- data/lib/bioshogi/container/fast.rb +16 -0
- data/lib/bioshogi/container/players_methods.rb +106 -0
- data/lib/bioshogi/container/serialize_methods.rb +180 -0
- data/lib/bioshogi/container/simple.rb +17 -0
- data/lib/bioshogi/container/test_methods.rb +65 -0
- data/lib/bioshogi/container.rb +9 -0
- data/lib/bioshogi/cover_image/bottom_text_methods.rb +34 -0
- data/lib/bioshogi/cover_image/core_methods.rb +60 -0
- data/lib/bioshogi/cover_image/main_text_methods.rb +36 -0
- data/lib/bioshogi/cover_image/renderer.rb +10 -0
- data/lib/bioshogi/cover_image.rb +7 -0
- data/lib/bioshogi/csa_header_info.rb +90 -0
- data/lib/bioshogi/dimension/base.rb +92 -0
- data/lib/bioshogi/dimension/char_info.rb +24 -0
- data/lib/bioshogi/dimension/dimension_info.rb +25 -0
- data/lib/bioshogi/dimension/module_methods.rb +42 -0
- data/lib/bioshogi/dimension/place_x.rb +27 -0
- data/lib/bioshogi/dimension/place_y.rb +57 -0
- data/lib/bioshogi/dimension.rb +7 -0
- data/lib/bioshogi/errors.rb +145 -0
- data/lib/bioshogi/explain/attack_info.rb +195 -0
- data/lib/bioshogi/explain/board_piller_methods.rb +53 -0
- data/lib/bioshogi/explain/chaos_info.rb +17 -0
- data/lib/bioshogi/explain/defense_info.rb +130 -0
- data/lib/bioshogi/explain/distribution_ratio.rb +1840 -0
- data/lib/bioshogi/explain/distribution_ratio_generator.rb +48 -0
- data/lib/bioshogi/explain/file_normalizer.rb +20 -0
- data/lib/bioshogi/explain/group_info.rb +16 -0
- data/lib/bioshogi/explain/monitor_mod.rb +78 -0
- data/lib/bioshogi/explain/note_info.rb +63 -0
- data/lib/bioshogi/explain/sect_info.rb +13 -0
- data/lib/bioshogi/explain/shape_info.rb +4582 -0
- data/lib/bioshogi/explain/shape_info_relation.rb +37 -0
- data/lib/bioshogi/explain/skill_monitor.rb +352 -0
- data/lib/bioshogi/explain/skill_set.rb +100 -0
- data/lib/bioshogi/explain/tactic_hit_turn_table.rb +316 -0
- data/lib/bioshogi/explain/tactic_hit_turn_table_generator.rb +61 -0
- data/lib/bioshogi/explain/tactic_info.rb +124 -0
- data/lib/bioshogi/explain/tactic_validator.rb +40 -0
- data/lib/bioshogi/explain/tech_accessor.rb +147 -0
- data/lib/bioshogi/explain/technique_info.rb +28 -0
- data/lib/bioshogi/explain/technique_matcher_info.rb +298 -0
- data/lib/bioshogi/explain//345/202/231/350/200/203//345/205/245/347/216/211.kif +24 -0
- data/lib/bioshogi/explain//345/202/231/350/200/203//345/244/247/351/247/222/343/202/263/343/203/263/343/203/227/343/203/252/343/203/274/343/203/210.kif +19 -0
- data/lib/bioshogi/explain//345/202/231/350/200/203//345/244/247/351/247/222/345/205/250/346/266/210/345/244/261.kif +19 -0
- data/lib/bioshogi/explain//345/202/231/350/200/203//345/257/276/346/212/227/345/236/213.kif +12 -0
- data/lib/bioshogi/explain//345/202/231/350/200/203//345/257/276/346/214/257/343/202/212.kif +12 -0
- data/lib/bioshogi/explain//345/202/231/350/200/203//345/261/205/351/243/233/350/273/212.kif +10 -0
- data/lib/bioshogi/explain//345/202/231/350/200/203//346/214/257/343/202/212/351/243/233/350/273/212.kif +12 -0
- data/lib/bioshogi/explain//345/202/231/350/200/203//347/233/270/345/205/245/347/216/211.kif +24 -0
- data/lib/bioshogi/explain//345/202/231/350/200/203//347/233/270/345/261/205/347/216/211.kif +26 -0
- data/lib/bioshogi/explain//345/202/231/350/200/203//347/233/270/345/261/205/351/243/233/350/273/212.kif +8 -0
- data/lib/bioshogi/explain//345/202/231/350/200/203//347/233/270/346/214/257/343/202/212.kif +16 -0
- data/lib/bioshogi/explain//345/202/231/350/200/203//350/203/214/346/260/264/343/201/256/351/231/243.kif +34 -0
- data/lib/bioshogi/explain//345/202/231/350/200/203//350/247/222/344/270/215/346/210/220.kif +16 -0
- data/lib/bioshogi/explain//345/202/231/350/200/203//351/243/233/350/273/212/344/270/215/346/210/220.kif +17 -0
- data/lib/bioshogi/explain//345/202/231/350/200/203//351/247/222/346/237/261.kif +48 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/201/202/343/201/232/343/201/276/343/202/204/345/233/262/343/201/204.kif +30 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/201/204/343/201/241/343/201/224/345/233/262/343/201/204.kif +82 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/201/213/343/202/223/343/201/264/343/202/207/343/201/206/345/233/262/343/201/204.kif +122 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/201/232/343/202/214/347/276/216/346/277/203.kif +25 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/201/241/343/202/207/343/202/223/343/201/276/343/201/222/347/276/216/346/277/203.kif +25 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/201/270/343/201/223/343/201/277/347/237/242/345/200/211.kif +41 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/242/343/203/222/343/203/253/345/233/262/343/201/204.kif +148 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/250/343/203/253/343/203/242/345/233/262/343/201/204.kif +23 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/252/343/203/252/343/202/270/343/203/212/343/203/253/351/233/201/346/234/250.kif +40 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/252/343/203/274/343/203/253/343/203/211/351/233/201/346/234/250.kif +92 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/253/343/202/256/345/233/262/343/201/204.kif +40 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/253/343/202/277/345/233/262/343/201/204.kif +144 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/253/343/203/213/345/233/262/343/201/204.kif +69 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/253/343/203/213/347/274/266/345/233/262/343/201/204.kif +23 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/253/343/203/226/343/203/210/345/233/262/343/201/204.kif +29 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/253/343/203/226/343/203/210/347/276/216/346/277/203.kif +49 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/202/273/343/203/241/343/203/263/343/203/210/345/233/262/343/201/204.kif +124 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/203/200/343/202/244/343/203/244/343/203/242/343/203/263/343/203/211/347/276/216/346/277/203.kif +89 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/203/201/343/203/247/343/202/263/343/203/254/343/203/274/343/203/210/345/233/262/343/201/204.kif +59 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/203/204/343/203/216/351/212/200/345/236/213/345/217/263/347/216/211.kif +45 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/203/204/343/203/216/351/212/200/351/233/201/346/234/250.kif +113 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/203/223/343/203/203/343/202/2604.kif +104 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/203/234/343/203/212/343/203/263/343/202/266/345/233/262/343/201/204.kif +89 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/203/237/343/203/254/343/203/213/343/202/242/343/203/240/345/233/262/343/201/204.kif +96 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//343/203/242/343/203/216/343/203/254/343/203/274/343/203/253/345/233/262/343/201/204.kif +47 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//344/270/200/346/226/207/345/255/227/347/237/242/345/200/211.kif +48 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//344/270/211/346/211/213/345/233/262/343/201/204.kif +23 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//344/270/211/346/256/265/345/217/263/347/216/211.kif +50 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//344/270/255/344/275/217/343/201/276/343/201/204.kif +71 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//344/270/255/345/216/237/345/233/262/343/201/204.kif +69 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//344/270/262/343/202/253/343/203/204/345/233/262/343/201/204.kif +75 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/215/207/347/224/260/347/276/216/346/277/203.kif +43 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/217/263/347/216/211.kif +82 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/217/263/347/237/242/345/200/211.kif +92 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/233/233/346/236/232/347/276/216/346/277/203.kif +82 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/233/233/346/236/232/351/212/200/345/206/240.kif +150 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/233/233/346/256/265/347/253/257/347/216/211.kif +213 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/233/233/346/256/265/347/253/257/347/216/2112.kif +91 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/233/233/350/247/222/347/237/242/345/200/211.kif +57 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/234/237/345/261/205/347/237/242/345/200/211.kif +39 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/235/212/344/270/273/347/276/216/346/277/203.kif +79 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/244/247/345/261/261/347/276/216/346/277/203.kif +44 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/244/247/347/233/276/345/233/262/343/201/204.kif +33 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/244/251/345/256/210/351/226/243/345/233/262/343/201/204.kif +29 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/244/251/345/256/210/351/226/243/347/276/216/346/277/203.kif +75 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/244/251/351/207/216/347/237/242/345/200/211.kif +76 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/257/214/345/243/253/350/246/213/347/237/242/345/200/211.kif +45 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/261/205/347/216/211.kif +57 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/261/205/351/243/233/347/251/264/351/237/263/347/204/241/343/201/227/343/201/256/346/247/213/343/201/210.kif +60 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/261/205/351/243/233/350/273/212/347/251/264/347/206/212.kif +76 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/261/205/351/243/233/350/273/212/351/207/221/347/276/216/346/277/203.kif +42 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/267/246/345/261/261/345/233/262/343/201/204.kif +26 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//345/267/246/347/276/216/346/277/203.kif +72 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//346/202/252/345/275/242/347/237/242/345/200/211.kif +31 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/343/202/250/343/203/253/343/203/242.kif +31 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/343/203/223/343/203/203/343/202/2604.kif +151 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/343/203/237/343/203/254/343/203/213/343/202/242/343/203/240.kif +130 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/344/270/262/343/202/253/343/203/204/345/233/262/343/201/204.kif +39 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/345/233/233/346/236/232/347/276/216/346/277/203.kif +57 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/345/244/251/345/256/210/351/226/243/347/276/216/346/277/203.kif +50 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/347/251/264/347/206/212.kif +40 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/347/253/257/347/216/211/351/212/200/345/206/240.kif +39 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//346/214/257/343/202/212/351/243/233/350/273/212/351/212/200/345/206/240/347/251/264/347/206/212.kif +57 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//346/226/207/351/216/256/345/233/262/343/201/204.kif +40 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//346/226/260/345/236/213/351/233/201/346/234/250.kif +53 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//346/227/251/345/233/262/343/201/204.kif +22 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//346/234/250/346/235/221/347/276/216/346/277/203.kif +88 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//346/235/276/345/260/276/346/265/201/347/251/264/347/206/212.kif +84 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//346/241/220/345/261/261/346/265/201/344/270/255/345/216/237/345/233/262/343/201/204.kif +37 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//346/265/201/343/202/214/347/237/242/345/200/211.kif +43 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//347/204/241/346/225/265/345/233/262/343/201/204.kif +136 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//347/204/241/350/262/254/344/273/273/347/237/242/345/200/211.kif +44 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//347/211/207/347/276/216/346/277/203/345/233/262/343/201/204.kif +68 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//347/211/207/351/212/200/345/206/240.kif +50 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//347/237/242/345/200/211/345/217/263/347/216/211.kif +40 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//347/237/242/345/200/211/346/227/251/345/233/262/343/201/204.kif +31 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//347/237/242/345/200/211/347/251/264/347/206/212.kif +86 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//347/245/236/345/220/211/346/265/201/347/251/264/347/206/212.kif +50 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//347/251/272/344/270/255/346/245/274/351/226/243.kif +126 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//347/253/257/347/216/211/351/212/200/345/206/240.kif +88 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//347/256/261/345/205/245/343/202/212/345/250/230.kif +72 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//347/263/270/350/260/267/346/265/201/345/217/263/347/216/211.kif +151 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//347/264/231/347/251/264/347/206/212.kif +194 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//347/267/217/347/237/242/345/200/211.kif +78 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//347/276/216/346/277/203/345/233/262/343/201/204.kif +52 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//347/276/216/346/277/203/347/206/212/345/233/262/343/201/204.kif +50 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//347/276/275/347/224/237/346/265/201/345/217/263/347/216/211.kif +43 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//350/210/237/345/233/262/343/201/204.kif +67 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//350/210/237/345/233/262/343/201/204DX.kif +32 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//350/217/212/346/260/264/347/237/242/345/200/211.kif +93 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//350/217/261/347/237/242/345/200/211.kif +89 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//350/243/217/343/202/242/343/203/222/343/203/253/345/233/262/343/201/204.kif +29 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//350/243/276/345/233/272/343/202/201.kif +36 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//350/247/222/346/217/233/343/202/217/343/202/212/345/217/263/347/216/211.kif +45 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//350/247/222/347/237/242/345/200/211.kif +43 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//350/247/222/351/201/223/344/270/215/347/252/201/343/201/215/345/267/246/347/276/216/346/277/203.kif +25 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//350/261/206/350/205/220/347/237/242/345/200/211.kif +38 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/200/243/347/233/237/347/276/216/346/277/203.kif +31 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/207/221/345/244/232/344/274/235.kif +41 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/207/221/347/204/241/345/217/214.kif +88 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/207/221/347/233/276/345/233/262/343/201/204.kif +43 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/207/221/347/237/242/345/200/211.kif +78 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/207/221/347/276/216/346/277/203.kif +74 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/207/221/351/226/200/347/237/242/345/200/211.kif +54 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/212/200/345/206/240.kif +76 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/212/200/345/206/240/347/251/264/347/206/212.kif +89 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/212/200/345/244/232/344/274/235.kif +141 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/212/200/347/237/242/345/200/211.kif +72 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/212/200/347/253/213/343/201/241/347/237/242/345/200/211.kif +90 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/212/200/347/276/216/346/277/203.kif +77 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/232/205/347/237/242/345/200/211.kif +61 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/233/201/346/234/250/345/217/263/347/216/211.kif +154 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/233/242/343/202/214/351/207/221/347/204/241/345/217/214.kif +56 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/253/230/347/237/242/345/200/211.kif +56 -0
- data/lib/bioshogi/explain//345/233/262/343/201/204//351/253/230/347/276/216/346/277/203/345/233/262/343/201/204.kif +74 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213/2/346/211/213/347/233/256/342/226/26374/346/255/251/346/210/246/346/263/225.kif +10 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213/2/346/211/213/347/233/256/342/226/263/357/274/223/343/203/213/351/243/233/346/210/246/346/263/225.kif +127 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213/33/351/207/221/345/236/213/346/227/251/347/271/260/343/202/212/351/212/200.kif +34 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213/4/346/211/213/347/233/256/342/226/263/357/274/223/344/270/211/350/247/222/346/210/246/346/263/225.kif +13 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213/5/347/255/213/344/275/215/345/217/226/343/202/212/344/270/255/351/243/233/350/273/212.kif +16 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213/GAVA/350/247/222.kif +33 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213/UFO/351/212/200.kif +38 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213/xaby/350/247/222/346/210/246/346/263/225.kif +18 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/223/344/270/203/351/212/200/346/210/246/346/263/225.kif +74 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/224/344/272/224/346/255/251/346/227/251/344/273/225/346/216/233/343/201/221.kif +64 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/224/345/205/255/351/212/200/345/217/263/346/200/245/346/210/246.kif +41 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/224/345/205/255/351/212/200/345/267/246/346/200/245/346/210/246.kif +44 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/225/344/270/203/351/207/221/346/210/246/346/263/225.kif +133 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/225/344/272/224/351/276/215/344/270/255/351/243/233/350/273/212.kif +31 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/227/344/272/214/351/243/233/344/272/234/346/200/245/346/210/246.kif +100 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/227/345/205/253/351/243/233/346/210/246/346/263/225.kif +12 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/262/357/274/230/344/272/224/351/243/233/350/273/212/346/210/246/346/263/225.kif +77 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/263/357/274/222/344/270/211/346/255/251/346/210/246/346/263/225.kif +63 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/263/357/274/223/344/270/211/346/241/202/346/210/246/346/263/225.kif +50 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/263/357/274/223/344/270/211/350/247/222/345/236/213/347/251/272/344/270/255/346/210/246/346/263/225.kif +60 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/263/357/274/223/344/270/211/351/243/233/346/210/246/346/263/225.kif +148 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//342/226/263/357/274/224/344/272/224/350/247/222/346/210/246/346/263/225.kif +61 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/201/206/343/201/243/343/201/213/343/202/212/344/270/211/351/226/223/351/243/233/350/273/212.kif +18 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/201/213/343/201/276/343/201/204/343/201/237/343/201/241/346/210/246/346/263/225.kif +190 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/201/215/343/202/223/343/201/250/343/201/206/343/202/223/346/210/246/346/263/225.kif +38 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/201/215/357/275/215/343/201/215/357/275/215/351/207/221.kif +21 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/201/244/343/201/217/343/201/244/343/201/217/343/201/274/343/201/206/343/201/227/346/210/246/346/263/225.kif +32 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/201/257/343/201/217/345/274/217/345/233/233/351/226/223/351/243/233/350/273/212.kif +34 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/201/262/343/201/255/343/202/212/351/243/233/350/273/212.kif +51 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/242/343/203/222/343/203/253/346/210/246/346/263/225.kif +65 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/246/343/202/275/347/237/242/345/200/211.kif +17 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/250/343/203/253/343/203/242/346/200/245/346/210/246.kif +44 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/252/343/202/266/343/203/257/343/202/267/343/202/271/343/203/206/343/203/240.kif +194 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/253/343/203/213/343/202/253/343/203/213/351/207/221.kif +43 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/253/343/203/213/343/202/253/343/203/213/351/212/200.kif +83 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/253/343/203/241/343/203/254/343/202/252/343/203/263/346/210/246/346/263/225.kif +29 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/264/343/202/255/343/202/262/343/203/263/344/270/255/351/243/233/350/273/212.kif +16 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/267/343/203/247/343/203/274/343/203/200/343/203/263/343/202/252/343/203/252/343/202/270/343/203/212/343/203/253.kif +123 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/267/343/203/247/343/203/274/343/203/200/343/203/263/343/202/267/343/202/271/343/203/206/343/203/240.kif +151 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/202/277/343/203/251/343/203/263/343/203/201/343/203/245/343/203/251/346/210/246/346/263/225.kif +29 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/200/343/202/244/343/203/254/343/202/257/343/203/210/345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +28 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/204/343/203/216/351/212/200/344/270/255/351/243/233/350/273/212.kif +102 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/210/343/203/236/343/203/233/343/203/274/343/202/257.kif +128 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/216/343/203/274/343/202/254/343/203/274/343/203/211/346/210/246/346/263/225.kif +34 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/221/343/203/203/343/202/257/343/203/236/343/203/263/346/210/246/346/263/225.kif +23 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/235/343/203/263/343/203/235/343/203/263/346/241/202.kif +115 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/240/343/203/252/343/203/244/343/203/252/346/227/251/347/237/263/347/224/260.kif +16 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/241/343/202/244/343/203/211/343/202/267/343/202/271/343/203/206/343/203/240.kif +14 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/241/343/203/252/343/202/261/343/203/263/345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +29 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//343/203/254/343/202/260/343/202/271/343/203/232.kif +46 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/200/346/211/213/346/220/215/350/247/222/346/217/233/343/202/217/343/202/212.kif +14 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/200/347/233/264/347/267/232/347/251/264/347/206/212.kif +128 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/200/351/226/223/351/243/233/350/273/212.kif +63 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/200/351/226/223/351/243/233/350/273/212/347/251/264/347/206/212.kif +30 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/211/351/226/223/351/243/233/350/273/212.kif +52 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/211/351/226/223/351/243/233/350/273/212/343/203/237/343/203/254/343/203/213/343/202/242/343/203/240.kif +30 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/255/345/216/237/346/265/201/346/200/245/346/210/246/347/237/242/345/200/211.kif +99 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/255/345/216/237/346/265/201/347/233/270/346/216/233/343/201/213/343/202/212.kif +89 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/255/345/216/237/351/243/233/350/273/212.kif +89 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/255/347/224/260/345/212/237XP.kif +133 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/255/351/243/233/350/273/212/343/203/237/343/203/254/343/203/213/343/202/242/343/203/240.kif +33 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/255/351/243/233/350/273/212/345/267/246/347/251/264/347/206/212.kif +95 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//344/270/270/345/261/261/343/203/257/343/202/257/343/203/201/343/203/263.kif +23 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//344/271/205/345/244/242/346/265/201.kif +61 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/205/210/346/211/213/344/270/255/351/243/233/350/273/212.kif +17 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/210/235/346/211/213/357/274/223/345/205/255/346/255/251/346/210/246/346/263/225.kif +11 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/210/235/346/211/213/357/274/227/345/205/253/351/212/200/346/210/246/346/263/225.kif +29 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/212/233/346/210/246.kif +26 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/212/240/350/227/244/346/265/201/350/242/226/351/243/233/350/273/212.kif +85 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/213/207/346/260/227/346/265/201.kif +31 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/215/207/347/224/260/345/274/217/347/237/263/347/224/260/346/265/201.kif +89 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/216/237/345/247/213/344/270/255/351/243/233/350/273/212.kif +12 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/216/237/345/247/213/346/243/222/351/212/200.kif +47 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/217/263/345/233/233/351/226/223/351/243/233/350/273/212.kif +82 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/217/263/345/233/233/351/226/223/351/243/233/350/273/212/345/267/246/347/276/216/346/277/203.kif +87 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/217/263/345/233/233/351/226/223/351/243/233/350/273/212/346/200/245/346/210/246.kif +79 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +55 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/233/233/346/211/213/350/247/222.kif +78 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/233/233/351/226/223/351/243/233/350/273/212.kif +60 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/233/233/351/226/223/351/243/233/350/273/212/343/203/237/343/203/254/343/203/213/343/202/242/343/203/240.kif +32 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/234/260/344/270/213/351/211/204/351/243/233/350/273/212.kif +102 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/241/232/347/224/260/343/202/271/343/203/232/343/202/267/343/203/243/343/203/253.kif +95 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/254/211/351/207/216/346/265/201.kif +9 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/257/276/346/214/257/343/202/212/346/214/201/344/271/205/346/210/246.kif +72 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/261/213/346/225/267/346/265/201/344/272/214/346/236/232/351/212/200.kif +77 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/261/213/346/225/267/346/265/201/344/272/214/346/236/232/351/212/200/346/243/222/351/212/200/345/236/213.kif +60 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/261/261/345/264/216/346/265/201/343/203/221/343/203/203/343/202/257/343/203/236/343/203/263.kif +13 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/267/246/347/276/216/346/277/203/346/200/245/346/210/246.kif +76 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/271/263/347/233/256.kif +110 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//345/271/273/346/203/263/345/233/233/351/226/223/351/243/233/350/273/212.kif +49 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/211/213/345/276/227/350/247/222/344/272/244/346/217/233/345/236/213.kif +14 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/211/213/346/220/215/350/247/222/344/272/244/346/217/233/345/236/213.kif +12 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/226/260/344/270/270/345/261/261/343/203/257/343/202/257/343/203/201/343/203/263.kif +24 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/226/260/345/254/211/351/207/216/346/265/201.kif +15 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/226/260/346/235/221/347/224/260/343/202/267/343/202/271/343/203/206/343/203/240.kif +117 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/226/260/347/237/263/347/224/260/346/265/201.kif +90 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/226/260/347/261/263/351/225/267/347/216/211.kif +10 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/226/260/351/242/250/350/273/212.kif +44 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/226/260/351/254/274/346/256/272/343/201/227.kif +113 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/227/251/347/237/263/347/224/260.kif +68 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/232/264/351/212/200.kif +37 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/234/250/346/235/221/345/256/232/350/267/241.kif +138 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/235/221/347/224/260/343/202/267/343/202/271/343/203/206/343/203/240.kif +19 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/243/222/347/216/211.kif +80 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/243/222/351/207/221.kif +52 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/243/222/351/212/200.kif +65 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/243/256/344/270/213/343/202/267/343/202/271/343/203/206/343/203/240.kif +118 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/245/240/346/234/254/345/274/217/347/237/263/347/224/260/346/265/201.kif +122 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/245/265/351/231/220/346/227/251/347/271/260/343/202/212/351/212/200.kif +51 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/250/252/346/255/251/345/217/226/343/202/212.kif +50 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//346/270/205/351/207/216/346/265/201/345/262/220/351/230/234/346/210/246/346/263/225.kif +61 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/216/211/351/240/255/344/275/215/345/217/226/343/202/212.kif +35 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/216/211/351/240/255/351/212/200.kif +68 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/233/256/343/201/217/343/202/211/343/201/276/343/201/227/346/210/246/346/263/225.kif +18 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/233/270/346/214/257/343/202/212/351/243/233/350/273/212.kif +14 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/233/270/346/216/233/343/201/213/343/202/212.kif +45 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/233/270/346/216/233/343/201/213/343/202/212/346/243/222/351/212/200.kif +33 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/233/270/346/250/252/346/255/251/345/217/226/343/202/212.kif +72 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/233/270/347/255/213/351/201/225/343/201/204/350/247/222.kif +45 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/234/237/351/203/250/346/265/201.kif +117 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/237/242/345/200/211/344/270/255/351/243/233/350/273/212.kif +71 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/237/242/345/200/211/345/267/246/347/276/216/346/277/203/346/200/245/346/210/246.kif +122 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/237/242/345/200/211/346/243/222/351/212/200.kif +88 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/237/263/347/224/260/346/265/201.kif +58 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/250/262/345/272/255/346/210/246/346/263/225.kif +31 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/251/264/350/247/222/345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +18 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/251/264/350/247/222/346/210/246/346/263/225.kif +133 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/253/213/347/237/263/346/265/201/345/233/233/351/226/223/351/243/233/350/273/212.kif +43 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/253/257/346/243/222/351/212/200.kif +66 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/255/213/351/201/225/343/201/204/350/247/222.kif +78 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/261/263/351/225/267/346/265/201/346/200/245/346/210/246/347/237/242/345/200/211.kif +172 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//347/276/275/347/224/237/345/274/217/350/242/226/351/243/233/350/273/212.kif +172 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/200/200/351/276/215/343/201/262/343/201/255/343/202/212/351/243/233/350/273/212.kif +24 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/200/200/351/276/215/345/233/233/351/226/223/351/243/233/350/273/212.kif +50 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/204/207/343/202/267/343/202/271/343/203/206/343/203/240.kif +100 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/205/260/346/216/233/343/201/221/351/212/200.kif +73 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/212/261/346/235/221/346/265/201/345/220/215/345/217/244/345/261/213/346/210/246/346/263/225.kif +72 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/213/261/343/201/241/343/202/203/343/202/223/346/265/201/344/270/255/351/243/233/350/273/212.kif +64 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/213/261/346/230/245/346/265/201/343/202/253/343/203/241/343/203/254/343/202/252/343/203/263.kif +135 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/217/205/344/272/225/346/265/201/344/270/211/351/226/223/351/243/233/350/273/212.kif +23 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/217/234/343/200/205/346/262/263/346/265/201/342/226/263/357/274/224/345/233/233/350/247/222.kif +14 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/217/234/343/200/205/346/262/263/346/265/201/345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +24 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/227/244/344/272/225/343/202/267/343/202/271/343/203/206/343/203/240.kif +73 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/227/244/346/243/256/346/265/201/346/200/245/346/210/246/347/237/242/345/200/211.kif +63 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/242/226/351/243/233/350/273/212.kif +60 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/243/217/343/202/242/343/203/222/343/203/253/346/210/246/346/263/225.kif +29 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/344/272/244/346/217/233/345/236/213.kif +19 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/344/272/244/346/217/233/346/214/257/343/202/212/351/243/233/350/273/212.kif +64 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/346/217/233/343/202/217/343/202/212.kif +20 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/346/217/233/343/202/217/343/202/212/346/226/260/345/236/213.kif +49 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/346/217/233/343/202/217/343/202/212/346/227/251/347/271/260/343/202/212/351/212/200.kif +76 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/346/217/233/343/202/217/343/202/212/346/243/222/351/212/200.kif +65 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/346/217/233/343/202/217/343/202/212/350/205/260/346/216/233/343/201/221/351/212/200.kif +76 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/351/201/223/343/202/252/343/203/274/343/203/227/343/203/263/345/233/233/351/226/223/351/243/233/350/273/212.kif +12 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/247/222/351/240/255/346/255/251/346/210/246/346/263/225.kif +15 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/266/205/346/200/245/346/210/246.kif +28 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//350/266/205/351/200/237/342/226/262/357/274/223/344/270/203/351/212/200.kif +116 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/201/240/345/261/261/346/265/201.kif +98 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/203/275/346/210/220/346/265/201/342/226/263/357/274/223/344/270/200/351/207/221.kif +28 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/207/221/351/212/200/346/251/213.kif +50 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/212/200/351/233/262/351/233/200.kif +38 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/216/226/351/216/214/351/212/200.kif +77 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/230/252/347/224/260/346/265/201/345/220/221/351/243/233/350/273/212.kif +87 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/230/277/344/271/205/346/264/245/346/265/201/346/200/245/346/210/246/347/237/242/345/200/211.kif +74 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/231/275/345/213/225/346/214/257/343/202/212/351/243/233/350/273/212.kif +62 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/233/200/345/210/272/343/201/227.kif +140 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/235/222/351/207/216/346/265/201.kif +31 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/242/250/350/273/212.kif +134 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/243/257/345/263/266/346/265/201/345/274/225/343/201/215/350/247/222/346/210/246/346/263/225.kif +42 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/243/257/345/263/266/346/265/201/347/233/270/346/216/233/343/201/213/343/202/212/345/274/225/343/201/215/350/247/222/346/210/246/346/263/225.kif +49 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/253/230/347/224/260/346/265/201/345/267/246/347/216/211.kif +60 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/254/274/346/256/272/343/201/227.kif +173 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/254/274/346/256/272/343/201/227/345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +73 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/255/224/347/225/214/345/233/233/351/226/223/351/243/233/350/273/212.kif +25 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/263/245/345/210/272/343/201/227.kif +32 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//351/267/272/345/256/256/345/256/232/350/267/241.kif +72 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//357/274/224/342/206/222/357/274/223/346/210/246/346/263/225.kif +72 -0
- data/lib/bioshogi/explain//346/210/246/345/236/213//357/274/226/347/255/213/344/275/215/345/217/226/343/202/212.kif +42 -0
- data/lib/bioshogi/explain//346/211/213/347/255/213//343/201/265/343/202/223/343/201/251/343/201/227/343/201/256/346/241/202.kif +25 -0
- data/lib/bioshogi/explain//346/211/213/347/255/213//343/203/221/343/203/263/343/203/204/343/202/222/350/204/261/343/201/220.kif +28 -0
- data/lib/bioshogi/explain//346/211/213/347/255/213//343/203/255/343/202/261/343/203/203/343/203/210.kif +25 -0
- data/lib/bioshogi/explain//346/211/213/347/255/213//345/211/262/343/202/212/346/211/223/343/201/241/343/201/256/351/212/200.kif +28 -0
- data/lib/bioshogi/explain//346/211/213/347/255/213//345/236/202/343/202/214/346/255/251.kif +25 -0
- data/lib/bioshogi/explain//346/211/213/347/255/213//345/271/275/351/234/212/350/247/222.kif +36 -0
- data/lib/bioshogi/explain//346/211/213/347/255/213//346/241/202/351/240/255/343/201/256/351/212/200.kif +25 -0
- data/lib/bioshogi/explain//346/211/213/347/255/213//347/266/231/343/201/216/346/241/202.kif +25 -0
- data/lib/bioshogi/explain//346/211/213/347/255/213//350/205/271/351/212/200.kif +25 -0
- data/lib/bioshogi/explain//346/211/213/347/255/213//351/201/240/350/246/213/343/201/256/350/247/222.kif +25 -0
- data/lib/bioshogi/explain//346/211/213/347/255/213//351/207/221/345/272/225/343/201/256/346/255/251.kif +30 -0
- data/lib/bioshogi/explain//346/211/213/347/255/213//351/212/200/345/206/240/343/201/256/345/260/217/351/203/250/345/261/213.kif +86 -0
- data/lib/bioshogi/extreme_validator.rb +145 -0
- data/lib/bioshogi/formatter/akf_builder.rb +79 -0
- data/lib/bioshogi/formatter/animation/animation_apng_builder.rb +18 -0
- data/lib/bioshogi/formatter/animation/animation_builder_timeout.rb +28 -0
- data/lib/bioshogi/formatter/animation/animation_gif_builder.rb +166 -0
- data/lib/bioshogi/formatter/animation/animation_mp4_builder.rb +370 -0
- data/lib/bioshogi/formatter/animation/animation_webp_builder.rb +14 -0
- data/lib/bioshogi/formatter/animation/animation_zip_builder.rb +72 -0
- data/lib/bioshogi/formatter/animation/audio_theme_info.rb +97 -0
- data/lib/bioshogi/formatter/animation/demo_builder.rb +58 -0
- data/lib/bioshogi/formatter/animation/ffmpeg_support.rb +110 -0
- data/lib/bioshogi/formatter/animation/progress_cop.rb +114 -0
- data/lib/bioshogi/formatter/animation/serial_filename_generator.rb +55 -0
- data/lib/bioshogi/formatter/animation/system_support.rb +60 -0
- data/lib/bioshogi/formatter/core.rb +239 -0
- data/lib/bioshogi/formatter/csa_builder.rb +150 -0
- data/lib/bioshogi/formatter/ki2_builder.rb +58 -0
- data/lib/bioshogi/formatter/kif_builder.rb +83 -0
- data/lib/bioshogi/formatter/kif_ki2_shared.rb +144 -0
- data/lib/bioshogi/formatter/last_action_info.rb +77 -0
- data/lib/bioshogi/formatter/parser_methods.rb +37 -0
- data/lib/bioshogi/formatter/runner.rb +44 -0
- data/lib/bioshogi/formatter/skill_embed.rb +174 -0
- data/lib/bioshogi/hand/drop.rb +78 -0
- data/lib/bioshogi/hand/move.rb +114 -0
- data/lib/bioshogi/hand/shared.rb +102 -0
- data/lib/bioshogi/hand_log.rb +72 -0
- data/lib/bioshogi/hand_logs.rb +21 -0
- data/lib/bioshogi/hand_logs_mod.rb +29 -0
- data/lib/bioshogi/input_adapter/abstract_adapter.rb +126 -0
- data/lib/bioshogi/input_adapter/csa_adapter.rb +56 -0
- data/lib/bioshogi/input_adapter/ki2_adapter.rb +155 -0
- data/lib/bioshogi/input_adapter/ki2_motion_wrapper.rb +42 -0
- data/lib/bioshogi/input_adapter/ki2_place_methods.rb +50 -0
- data/lib/bioshogi/input_adapter/kif_adapter.rb +64 -0
- data/lib/bioshogi/input_adapter/location_validation.rb +23 -0
- data/lib/bioshogi/input_adapter/origin_soldier_methods.rb +24 -0
- data/lib/bioshogi/input_adapter/sfen_adapter.rb +60 -0
- data/lib/bioshogi/input_adapter/shared_validation.rb +110 -0
- data/lib/bioshogi/input_parser.rb +74 -0
- data/lib/bioshogi/kanji_number.rb +128 -0
- data/lib/bioshogi/kifu_format_info.rb +15 -0
- data/lib/bioshogi/location.rb +131 -0
- data/lib/bioshogi/logger.rb +5 -0
- data/lib/bioshogi/main_clock.rb +21 -0
- data/lib/bioshogi/media.rb +85 -0
- data/lib/bioshogi/official_formatter.rb +433 -0
- data/lib/bioshogi/order_info.rb +12 -0
- data/lib/bioshogi/parser/base.rb +61 -0
- data/lib/bioshogi/parser/bod_parser.rb +8 -0
- data/lib/bioshogi/parser/csa_parser.rb +198 -0
- data/lib/bioshogi/parser/header.rb +82 -0
- data/lib/bioshogi/parser/inspector.rb +47 -0
- data/lib/bioshogi/parser/kakinoki_methods.rb +125 -0
- data/lib/bioshogi/parser/ki2_parser.rb +39 -0
- data/lib/bioshogi/parser/kif_parser.rb +60 -0
- data/lib/bioshogi/parser/pi.rb +45 -0
- data/lib/bioshogi/parser/sfen_parser.rb +26 -0
- data/lib/bioshogi/parser/time_parser.rb +24 -0
- data/lib/bioshogi/parser.rb +40 -0
- data/lib/bioshogi/piece/ek_score_info.rb +22 -0
- data/lib/bioshogi/piece/piece_csa.rb +31 -0
- data/lib/bioshogi/piece/piece_pressure.rb +23 -0
- data/lib/bioshogi/piece/piece_scale.rb +19 -0
- data/lib/bioshogi/piece/piece_score.rb +31 -0
- data/lib/bioshogi/piece/piece_vector.rb +156 -0
- data/lib/bioshogi/piece/yomiage_piece_info.rb +31 -0
- data/lib/bioshogi/piece.rb +276 -0
- data/lib/bioshogi/piece_box.rb +152 -0
- data/lib/bioshogi/place.rb +171 -0
- data/lib/bioshogi/player/other_methods.rb +60 -0
- data/lib/bioshogi/player/piece_box_methods.rb +33 -0
- data/lib/bioshogi/player/pressure_methods.rb +37 -0
- data/lib/bioshogi/player/soldier_methods.rb +45 -0
- data/lib/bioshogi/player.rb +101 -0
- data/lib/bioshogi/player_executor/base.rb +120 -0
- data/lib/bioshogi/player_executor/brain.rb +7 -0
- data/lib/bioshogi/player_executor/error_handler.rb +49 -0
- data/lib/bioshogi/player_executor/human.rb +8 -0
- data/lib/bioshogi/player_executor/without_monitor.rb +7 -0
- data/lib/bioshogi/preset_info.rb +130 -0
- data/lib/bioshogi/rect.rb +6 -0
- data/lib/bioshogi/screen_image/README.org +14 -0
- data/lib/bioshogi/screen_image/board_methods.rb +148 -0
- data/lib/bioshogi/screen_image/color_theme_info.rb +137 -0
- data/lib/bioshogi/screen_image/core_methods.rb +337 -0
- data/lib/bioshogi/screen_image/font_theme_info.rb +35 -0
- data/lib/bioshogi/screen_image/helper.rb +73 -0
- data/lib/bioshogi/screen_image/layer_methods.rb +87 -0
- data/lib/bioshogi/screen_image/palette_info.rb +15 -0
- data/lib/bioshogi/screen_image/pentagon.rb +167 -0
- data/lib/bioshogi/screen_image/piece_font_weight_info.rb +12 -0
- data/lib/bioshogi/screen_image/renderer.rb +15 -0
- data/lib/bioshogi/screen_image/soldier_methods.rb +136 -0
- data/lib/bioshogi/screen_image/stand.rb +132 -0
- data/lib/bioshogi/screen_image/turn_methods.rb +45 -0
- data/lib/bioshogi/screen_image.rb +11 -0
- data/lib/bioshogi/sfen.rb +120 -0
- data/lib/bioshogi/sfen_importer.rb +29 -0
- data/lib/bioshogi/simple_model.rb +13 -0
- data/lib/bioshogi/simulator.rb +44 -0
- data/lib/bioshogi/single_clock.rb +36 -0
- data/lib/bioshogi/soldier.rb +293 -0
- data/lib/bioshogi/soldier_box.rb +38 -0
- data/lib/bioshogi/soldier_walker.rb +122 -0
- data/lib/bioshogi/source.rb +30 -0
- data/lib/bioshogi/tasks/about.rake +5 -0
- data/lib/bioshogi/tasks/chore.rake +8 -0
- data/lib/bioshogi/tasks/clean.rake +4 -0
- data/lib/bioshogi/tasks/color_theme.rake +9 -0
- data/lib/bioshogi/tasks/demo.rake +11 -0
- data/lib/bioshogi/tasks/doc.rake +11 -0
- data/lib/bioshogi/tasks/extreme_validator.rake +8 -0
- data/lib/bioshogi/tasks/generate.rake +9 -0
- data/lib/bioshogi/tasks/loader.rake +9 -0
- data/lib/bioshogi/tasks/normalize.rake +8 -0
- data/lib/bioshogi/tasks/tactic_validator.rake +8 -0
- data/lib/bioshogi/tasks/test.rake +41 -0
- data/lib/bioshogi/turn_info.rb +67 -0
- data/lib/bioshogi/v/once_vector.rb +10 -0
- data/lib/bioshogi/v/repeat_vector.rb +10 -0
- data/lib/bioshogi/v.rb +77 -0
- data/lib/bioshogi/vector_constants.rb +4 -0
- data/lib/bioshogi/version.rb +3 -0
- data/lib/bioshogi/yomiage/formatter.rb +31 -0
- data/lib/bioshogi/yomiage/kanji_info.rb +19 -0
- data/lib/bioshogi/yomiage/number_info.rb +18 -0
- data/lib/bioshogi.rb +62 -0
- metadata +1149 -0
data/README.org
ADDED
@@ -0,0 +1,711 @@
|
|
1
|
+
* 将棋の棋譜相互変換、棋譜から戦術抽出、超弱いAIなどのライブラリ
|
2
|
+
|
3
|
+
[[file:https://www.shogi-extend.com/cpu-battle][file:https://raw.github.com/akicho8/bioshogi/master/bioshogi.png]]
|
4
|
+
[[https://www.shogi-extend.com/cpu-battle][デモ]]
|
5
|
+
|
6
|
+
#+BEGIN_SRC ruby
|
7
|
+
container = Container::Basic.start
|
8
|
+
[
|
9
|
+
"7六歩", "8四歩", "7八金", "3二金",
|
10
|
+
"2六歩", "8五歩", "7七角", "3四歩",
|
11
|
+
"8八銀", "7七角成",
|
12
|
+
].each{|input|
|
13
|
+
container.execute(input)
|
14
|
+
}
|
15
|
+
puts container.board
|
16
|
+
pp container.to_kif_a
|
17
|
+
# >> 9 8 7 6 5 4 3 2 1
|
18
|
+
# >> +---------------------------+
|
19
|
+
# >> |v香v桂v銀v金v玉 ・v銀v桂v香|一
|
20
|
+
# >> | ・v飛 ・ ・ ・ ・v金 ・ ・|二
|
21
|
+
# >> |v歩 ・v歩v歩v歩v歩 ・v歩v歩|三
|
22
|
+
# >> | ・ ・ ・ ・ ・ ・v歩 ・ ・|四
|
23
|
+
# >> | ・v歩 ・ ・ ・ ・ ・ ・ ・|五
|
24
|
+
# >> | ・ ・ 歩 ・ ・ ・ ・ 歩 ・|六
|
25
|
+
# >> | 歩 歩v馬 歩 歩 歩 歩 ・ 歩|七
|
26
|
+
# >> | ・ 銀 金 ・ ・ ・ ・ 飛 ・|八
|
27
|
+
# >> | 香 桂 ・ ・ 玉 金 銀 桂 香|九
|
28
|
+
# >> +---------------------------+
|
29
|
+
# >> ["▲7六歩(77)",
|
30
|
+
# >> "▽8四歩(83)",
|
31
|
+
# >> "▲7八金(69)",
|
32
|
+
# >> "▽3二金(41)",
|
33
|
+
# >> "▲2六歩(27)",
|
34
|
+
# >> "▽8五歩(84)",
|
35
|
+
# >> "▲7七角(88)",
|
36
|
+
# >> "▽3四歩(33)",
|
37
|
+
# >> "▲8八銀(79)",
|
38
|
+
# >> "▽7七角成(22)"]
|
39
|
+
#+END_SRC
|
40
|
+
|
41
|
+
** サンプルコード
|
42
|
+
|
43
|
+
*** 初期配置文字列のパース
|
44
|
+
|
45
|
+
#+BEGIN_SRC ruby
|
46
|
+
info = Soldier.from_str("7六と")
|
47
|
+
info[:place].name # => "7六"
|
48
|
+
info[:promoted] # => true
|
49
|
+
info[:piece].name # => "歩"
|
50
|
+
#+END_SRC
|
51
|
+
|
52
|
+
*** AI同士の対局 (ルールを守った上でランダムに指してみる)
|
53
|
+
|
54
|
+
#+BEGIN_SRC ruby
|
55
|
+
container = Container::Basic.start
|
56
|
+
loop do
|
57
|
+
hand = container.current_player.brain.create_all_hands.sample
|
58
|
+
container.execute(hand)
|
59
|
+
captured_soldier = container.opponent_player.executor.captured_soldier
|
60
|
+
if executor.captured_soldier && executor.captured_soldier.piece.key == :king
|
61
|
+
break
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
p container
|
66
|
+
# >> 78手目: ▽後手番
|
67
|
+
# >> 9 8 7 6 5 4 3 2 1
|
68
|
+
# >> +---------------------------+
|
69
|
+
# >> | 角v桂v銀 ・v金 ・ ・ ・v香|一
|
70
|
+
# >> |v香 ・ ・ ・ ・v銀 ・ ・ 歩|二
|
71
|
+
# >> |v歩v歩v飛v歩 圭 ・ ・ ・v桂|三
|
72
|
+
# >> | ・ ・v歩 ・v金 ・ ・v歩 ・|四
|
73
|
+
# >> | ・ ・ ・ ・ 角 歩 ・ 歩v歩|五
|
74
|
+
# >> | ・ ・ 歩 ・ ・v歩v歩 ・ ・|六
|
75
|
+
# >> | 歩 歩 ・ 歩 歩 ・ ・ ・ 銀|七
|
76
|
+
# >> | 香 ・ ・ 金 ・ 飛 金 ・ 香|八
|
77
|
+
# >> | ・ 銀 ・ 玉 ・ ・ ・ 桂 ・|九
|
78
|
+
# >> +---------------------------+
|
79
|
+
# >> ▲先手の持駒:歩 玉
|
80
|
+
# >> ▽後手の持駒:歩
|
81
|
+
|
82
|
+
puts container.to_ki2_a.group_by.with_index{|v, i|i / 8}.values.collect{|v|v.join(" ")}
|
83
|
+
# >> ▲3八金(39) ▽4六歩打 ▲1二歩打 ▽3六歩(35) ▲5三桂成(65)
|
84
|
+
# >> ▲4八玉 ▽5二金 ▲5六歩 ▽6二飛 ▲1六歩 ▽7二飛 ▲5九玉 ▽6二玉
|
85
|
+
# >> ▲2六歩 ▽4二金 ▲4八飛 ▽5四歩 ▲7八銀 ▽5一金 ▲7六歩 ▽5五歩
|
86
|
+
# >> ▲同歩 ▽3二金 ▲5八飛 ▽3四歩 ▲7七桂 ▽9二香 ▲1八飛 ▽4二金
|
87
|
+
# >> ▲6八金 ▽8二飛 ▲2八銀 ▽4四歩 ▲1五歩 ▽4三金 ▲1七銀 ▽2四歩
|
88
|
+
# >> ▲6五桂 ▽3三金 ▲9八香 ▽4二銀 ▲2八飛 ▽3一角 ▲2七飛 ▽5二玉
|
89
|
+
# >> ▲9九角 ▽4三金 ▲3九金 ▽4五歩 ▲8九銀 ▽1四歩 ▲5四歩 ▽1三桂
|
90
|
+
# >> ▲4六歩 ▽6二飛 ▲4五歩 ▽5四金 ▲5七歩打 ▽2二角 ▲1八香 ▽5三玉
|
91
|
+
# >> ▲2五歩 ▽7四歩 ▲6九玉 ▽5二飛 ▲2六飛 ▽4八歩打 ▲2八飛 ▽7二飛
|
92
|
+
# >> ▲4八飛 ▽5五角 ▲同角 ▽7三飛 ▲3六歩 ▽3五歩 ▲9一角打 ▽1五歩
|
93
|
+
# >> ▲3八金 ▽4六歩打 ▲1二歩打 ▽3六歩 ▲5三桂成
|
94
|
+
#+END_SRC
|
95
|
+
|
96
|
+
*** 第23期竜王戦七番勝負第6局の再生
|
97
|
+
|
98
|
+
KIFファイルを読み込み
|
99
|
+
|
100
|
+
#+BEGIN_SRC ruby
|
101
|
+
info = Bioshogi::Parser.parse(Pathname("ryuou20101214.kif"))
|
102
|
+
pp info.pi.header
|
103
|
+
# >> {"対局ID"=>"333",
|
104
|
+
# >> "開始日時"=>"2010/12/14 9:00",
|
105
|
+
# >> "終了日時"=>"2010/12/15 19:13",
|
106
|
+
# >> "表題"=>"竜王戦",
|
107
|
+
# >> "棋戦"=>"第23期竜王戦七番勝負第6局",
|
108
|
+
# >> "持ち時間"=>"各8時間",
|
109
|
+
# >> "消費時間"=>"146▲479△471",
|
110
|
+
# >> "場所"=>"岐阜・ホテルアソシア高山リゾート",
|
111
|
+
# >> "手合割"=>"平手",
|
112
|
+
# >> "先手"=>"羽生善治",
|
113
|
+
# >> "後手"=>"渡辺 明"}
|
114
|
+
#+END_SRC
|
115
|
+
|
116
|
+
棋譜を入力していく
|
117
|
+
|
118
|
+
#+BEGIN_SRC ruby
|
119
|
+
container = Container::Basic.start
|
120
|
+
info.pi.move_infos.each{|info|
|
121
|
+
container.execute(info[:input])
|
122
|
+
}
|
123
|
+
#+END_SRC
|
124
|
+
|
125
|
+
最終形
|
126
|
+
|
127
|
+
#+BEGIN_SRC ruby
|
128
|
+
puts container.inspect
|
129
|
+
# >> 147:▲先手番
|
130
|
+
# >> 9 8 7 6 5 4 3 2 1
|
131
|
+
# >> +---------------------------+
|
132
|
+
# >> | ・v桂 ・ ・ 馬 ・ ・v桂v香|一
|
133
|
+
# >> |v飛 ・ ・ ・ ・ と ・ ・ ・|二
|
134
|
+
# >> | ・ ・ ・ 全v歩 ・v玉 ・ ・|三
|
135
|
+
# >> | ・ ・ ・ ・ ・ ・v桂 ・v金|四
|
136
|
+
# >> | ・v歩 ・ ・ ・ 銀v歩v歩v歩|五
|
137
|
+
# >> |v歩 ・ 歩v角 ・ ・ ・ ・ ・|六
|
138
|
+
# >> | ・ 歩 銀v歩vと ・ ・ ・ ・|七
|
139
|
+
# >> | 歩 ・ 玉 香 ・ ・ ・ ・ 香|八
|
140
|
+
# >> | 香 桂 ・ ・ ・ ・ 飛 ・ ・|九
|
141
|
+
# >> +---------------------------+
|
142
|
+
# >> blackの持駒:歩三金
|
143
|
+
# >> whiteの持駒:金二歩三銀
|
144
|
+
#+END_SRC
|
145
|
+
|
146
|
+
KIF形式の棋譜確認
|
147
|
+
|
148
|
+
#+BEGIN_SRC ruby
|
149
|
+
puts container.to_kif_a.group_by.with_index{|v, i|i / 8}.values.collect{|v|v.join(" ")}
|
150
|
+
# >> ▲7六歩(77) ▽8四歩(83) ▲7八金(69) ▽3二金(41) ▲2六歩(27) ▽8五歩(84) ▲7七角(88) ▽3四歩(33)
|
151
|
+
# >> ▲8八銀(79) ▽7七角成(22) ▲7七銀(88) ▽4二銀(31) ▲3八銀(39) ▽7二銀(71) ▲9六歩(97) ▽9四歩(93)
|
152
|
+
# >> ▲4六歩(47) ▽6四歩(63) ▲4七銀(38) ▽6三銀(72) ▲6八玉(59) ▽3三銀(42) ▲5八金(49) ▽5四銀(63)
|
153
|
+
# >> ▲3六歩(37) ▽4二玉(51) ▲7九玉(68) ▽6五歩(64) ▲5六銀(47) ▽5二金(61) ▲1六歩(17) ▽1四歩(13)
|
154
|
+
# >> ▲3七桂(29) ▽3一玉(42) ▲4七金(58) ▽4四歩(43) ▲2五歩(26) ▽4三金(52) ▲8八玉(79) ▽2二玉(31)
|
155
|
+
# >> ▲4八金(47) ▽4二金(43) ▲2九飛(28) ▽4三金(42) ▲1八香(19) ▽9二香(91) ▲2八飛(29) ▽4二金(43)
|
156
|
+
# >> ▲2六飛(28) ▽5二金(42) ▲2九飛(26) ▽4三金(52) ▲2八飛(29) ▽4二金(43) ▲2七飛(28) ▽5二金(42)
|
157
|
+
# >> ▲4五歩(46) ▽4三金(52) ▲4四歩(45) ▽4四金(43) ▲2九飛(27) ▽4三金(44) ▲4六角打 ▽9三香(92)
|
158
|
+
# >> ▲4五歩打 ▽4二金(43) ▲4七銀(56) ▽9二飛(82) ▲3五歩(36) ▽3五歩(34) ▲3五角(46) ▽6四角打
|
159
|
+
# >> ▲5六歩(57) ▽9五歩(94) ▲9五歩(96) ▽9六歩打 ▲5七角(35) ▽9五香(93) ▲9八歩打 ▽3四歩打
|
160
|
+
# >> ▲3六銀(47) ▽7四歩(73) ▲1五歩(16) ▽1五歩(14) ▲2四歩(25) ▽2四銀(33) ▲2五銀(36) ▽4六歩打
|
161
|
+
# >> ▲2四銀(25) ▽2四歩(23) ▲8三銀打 ▽5二飛(92) ▲7四銀成(83) ▽9一角(64) ▲2四飛(29) ▽2三金(32)
|
162
|
+
# >> ▲2六飛(24) ▽2五歩打 ▲2五桂(37) ▽2四歩打 ▲1二歩打 ▽1二玉(22) ▲8四角(57) ▽4七歩成(46)
|
163
|
+
# >> ▲4七金(48) ▽1四金(23) ▲9五角(84) ▽2五歩(24) ▲3六飛(26) ▽2三玉(12) ▲5五歩(56) ▽4五銀(54)
|
164
|
+
# >> ▲3九飛(36) ▽4六歩打 ▲3六金(47) ▽3六銀(45) ▲3六飛(39) ▽4七歩成(46) ▲6三全(74) ▽9二飛(52)
|
165
|
+
# >> ▲5一角成(95) ▽6九銀打 ▲4五銀打 ▽2二桂打 ▲4三歩打 ▽3三金(42) ▲3五歩打 ▽3五歩(34)
|
166
|
+
# >> ▲3九飛(36) ▽7八銀成(69) ▲7八玉(88) ▽5五角(91) ▲3四歩打 ▽3四桂(22) ▲4二歩成(43) ▽5七と(47)
|
167
|
+
# >> ▲6九香打 ▽6六歩(65) ▲6六歩(67) ▽6八歩打 ▲6八香(69) ▽6七歩打 ▲4四銀打 ▽6六角(55)
|
168
|
+
# >> ▲3三銀成(44) ▽3三玉(23)
|
169
|
+
#+END_SRC
|
170
|
+
|
171
|
+
KI2形式の棋譜確認
|
172
|
+
|
173
|
+
#+BEGIN_SRC ruby
|
174
|
+
puts container.to_ki2_a.group_by.with_index{|v, i|i / 8}.values.collect{|v|v.join(" ")}
|
175
|
+
# >> ▲7六歩 ▽8四歩 ▲7八金 ▽3二金 ▲2六歩 ▽8五歩 ▲7七角 ▽3四歩
|
176
|
+
# >> ▲8八銀 ▽7七角成 ▲同銀 ▽4二銀 ▲3八銀 ▽7二銀 ▲9六歩 ▽9四歩
|
177
|
+
# >> ▲4六歩 ▽6四歩 ▲4七銀 ▽6三銀 ▲6八玉 ▽3三銀 ▲5八金 ▽5四銀
|
178
|
+
# >> ▲3六歩 ▽4二玉 ▲7九玉 ▽6五歩 ▲5六銀 ▽5二金 ▲1六歩 ▽1四歩
|
179
|
+
# >> ▲3七桂 ▽3一玉 ▲4七金 ▽4四歩 ▲2五歩 ▽4三金 ▲8八玉 ▽2二玉
|
180
|
+
# >> ▲4八金 ▽4二金 ▲2九飛 ▽4三金 ▲1八香 ▽9二香 ▲2八飛 ▽4二金
|
181
|
+
# >> ▲2六飛 ▽5二金 ▲2九飛 ▽4三金 ▲2八飛 ▽4二金 ▲2七飛 ▽5二金
|
182
|
+
# >> ▲4五歩 ▽4三金 ▲4四歩 ▽同金 ▲2九飛 ▽4三金 ▲4六角打 ▽9三香
|
183
|
+
# >> ▲4五歩打 ▽4二金 ▲4七銀 ▽9二飛 ▲3五歩 ▽同歩 ▲同角 ▽6四角打
|
184
|
+
# >> ▲5六歩 ▽9五歩 ▲同歩 ▽9六歩打 ▲5七角 ▽9五香 ▲9八歩打 ▽3四歩打
|
185
|
+
# >> ▲3六銀 ▽7四歩 ▲1五歩 ▽同歩 ▲2四歩 ▽同銀 ▲2五銀 ▽4六歩打
|
186
|
+
# >> ▲2四銀 ▽同歩 ▲8三銀打 ▽5二飛 ▲7四銀成 ▽9一角 ▲2四飛 ▽2三金
|
187
|
+
# >> ▲2六飛 ▽2五歩打 ▲同桂 ▽2四歩打 ▲1二歩打 ▽同玉 ▲8四角 ▽4七歩成
|
188
|
+
# >> ▲同金 ▽1四金 ▲9五角 ▽2五歩 ▲3六飛 ▽2三玉 ▲5五歩 ▽4五銀
|
189
|
+
# >> ▲3九飛 ▽4六歩打 ▲3六金 ▽同銀 ▲同飛 ▽4七歩成 ▲6三全 ▽9二飛
|
190
|
+
# >> ▲5一角成 ▽6九銀打 ▲4五銀打 ▽2二桂打 ▲4三歩打 ▽3三金 ▲3五歩打 ▽同歩
|
191
|
+
# >> ▲3九飛 ▽7八銀成 ▲同玉 ▽5五角 ▲3四歩打 ▽同桂 ▲4二歩成 ▽5七と
|
192
|
+
# >> ▲6九香打 ▽6六歩 ▲同歩 ▽6八歩打 ▲同香 ▽6七歩打 ▲4四銀打 ▽6六角
|
193
|
+
# >> ▲3三銀成 ▽同玉
|
194
|
+
#+END_SRC
|
195
|
+
|
196
|
+
*** 駒が動ける場所
|
197
|
+
|
198
|
+
#+BEGIN_SRC ruby
|
199
|
+
container = Container::Basic.start
|
200
|
+
player = container.player_at(:black)
|
201
|
+
player.soldier_create("5五馬")
|
202
|
+
player.soldiers.first.move_list.each{|place|
|
203
|
+
player.soldier_create("#{place}馬")
|
204
|
+
}
|
205
|
+
puts container.board
|
206
|
+
# >> 9 8 7 6 5 4 3 2 1
|
207
|
+
# >> +---------------------------+
|
208
|
+
# >> | 馬 ・ ・ ・ ・ ・ ・ ・ 馬|一
|
209
|
+
# >> | ・ 馬 ・ ・ ・ ・ ・ 馬 ・|二
|
210
|
+
# >> | ・ ・ 馬 ・ ・ ・ 馬 ・ ・|三
|
211
|
+
# >> | ・ ・ ・ 馬 馬 馬 ・ ・ ・|四
|
212
|
+
# >> | ・ ・ ・ 馬 馬 馬 ・ ・ ・|五
|
213
|
+
# >> | ・ ・ ・ 馬 馬 馬 ・ ・ ・|六
|
214
|
+
# >> | ・ ・ 馬 ・ ・ ・ 馬 ・ ・|七
|
215
|
+
# >> | ・ 馬 ・ ・ ・ ・ ・ 馬 ・|八
|
216
|
+
# >> | 馬 ・ ・ ・ ・ ・ ・ ・ 馬|九
|
217
|
+
# >> +---------------------------+
|
218
|
+
#+END_SRC
|
219
|
+
|
220
|
+
*** 座標のパース
|
221
|
+
|
222
|
+
Placeクラス経由で扱えばだいたいパース可
|
223
|
+
|
224
|
+
#+BEGIN_SRC ruby
|
225
|
+
Place["4三"].name # => "4三"
|
226
|
+
Place["4三"].name # => "4三"
|
227
|
+
Place["43"].name # => "4三"
|
228
|
+
#+END_SRC
|
229
|
+
|
230
|
+
内部では別の座標
|
231
|
+
|
232
|
+
#+BEGIN_SRC ruby
|
233
|
+
Place["4三"].to_xy # => [5, 2]
|
234
|
+
#+END_SRC
|
235
|
+
|
236
|
+
引数が配列だったときのみスルー
|
237
|
+
|
238
|
+
#+BEGIN_SRC ruby
|
239
|
+
Place[[5, 2]].to_xy # => [5, 2]
|
240
|
+
#+END_SRC
|
241
|
+
|
242
|
+
*** 駒の情報取得例
|
243
|
+
|
244
|
+
#+BEGIN_SRC ruby
|
245
|
+
pp Piece["飛"].to_h
|
246
|
+
# >> {name: "飛",
|
247
|
+
# >> promoted_name: "龍",
|
248
|
+
# >> basic_names: ["飛", "rook"],
|
249
|
+
# >> promoted_names: ["龍", "ROOK", "竜"],
|
250
|
+
# >> names: ["飛", "rook", "龍", "ROOK", "竜"],
|
251
|
+
# >> key: :rook,
|
252
|
+
# >> :promotable=>true,
|
253
|
+
# >> basic_once_vectors: [],
|
254
|
+
# >> basic_repeat_vectors: [nil, [0, -1], nil, [-1, 0], [1, 0], nil, [0, 1], nil],
|
255
|
+
# >> promoted_once_vectors: # >> [[-1, -1], [0, -1], [1, -1], [-1, 0], nil, [1, 0], [-1, 1], [0, 1], [1, 1]],
|
256
|
+
# >> promoted_repeat_vectors: [nil, [0, -1], nil, [-1, 0], [1, 0], nil, [0, 1], nil]}
|
257
|
+
#+END_SRC
|
258
|
+
|
259
|
+
*** 盤面テキストのパース
|
260
|
+
|
261
|
+
#+BEGIN_SRC ruby
|
262
|
+
board = <<-EOT
|
263
|
+
+---------------------------+
|
264
|
+
| ・v桂 ・ ・ 馬 ・ ・v桂v香|
|
265
|
+
|v飛 ・ ・ ・ ・ と ・ ・ ・|
|
266
|
+
| ・ ・ ・ 全v歩 ・v玉 ・ ・|
|
267
|
+
| ・ ・ ・ ・ ・ ・v桂 ・v金|
|
268
|
+
| ・v歩 ・ ・ ・ 銀v歩v歩v歩|
|
269
|
+
|v歩 ・ 歩v角 ・ ・ ・ ・ ・|
|
270
|
+
| ・ 歩 銀v歩vと ・ ・ ・ ・|
|
271
|
+
| 歩 ・ 玉 香 ・ ・ ・ ・ 香|
|
272
|
+
| 香 桂 ・ ・ ・ ・ 飛 ・ ・|
|
273
|
+
+---------------------------+
|
274
|
+
EOT
|
275
|
+
BoardParser.parse(board)
|
276
|
+
# => {
|
277
|
+
white: {
|
278
|
+
"8一桂", "2一桂", "1一香", "9二飛", "5三歩", "3三玉", "3四桂", "1四金",
|
279
|
+
"8五歩", "3五歩", "2五歩", "1五歩", "9六歩", "6六角", "6七歩", "5七と",
|
280
|
+
},
|
281
|
+
black: {
|
282
|
+
"5一馬", "4二と", "6三全", "4五銀", "7六歩", "8七歩", "7七銀", "9八歩",
|
283
|
+
"7八玉", "6八香", "1八香", "9九香", "8九桂", "3九飛",
|
284
|
+
},
|
285
|
+
}
|
286
|
+
#+END_SRC
|
287
|
+
|
288
|
+
*** KIF形式の盤面表示と盤面の駒の確認
|
289
|
+
|
290
|
+
#+BEGIN_SRC ruby
|
291
|
+
container = Container::Basic.start
|
292
|
+
container.piece_plot
|
293
|
+
puts container.board
|
294
|
+
|
295
|
+
container.board["5五"] # => nil
|
296
|
+
container.board["8八"].name # => "▲8八角"
|
297
|
+
container.board["2八"].name # => "▲2八飛"
|
298
|
+
container.board["5九"].name # => "▲5九玉"
|
299
|
+
# >> 9 8 7 6 5 4 3 2 1
|
300
|
+
# >> +---------------------------+
|
301
|
+
# >> |v香v桂v銀v金v玉v金v銀v桂v香|一
|
302
|
+
# >> | ・v飛 ・ ・ ・ ・ ・v角 ・|二
|
303
|
+
# >> |v歩v歩v歩v歩v歩v歩v歩v歩v歩|三
|
304
|
+
# >> | ・ ・ ・ ・ ・ ・ ・ ・ ・|四
|
305
|
+
# >> | ・ ・ ・ ・ ・ ・ ・ ・ ・|五
|
306
|
+
# >> | ・ ・ ・ ・ ・ ・ ・ ・ ・|六
|
307
|
+
# >> | 歩 歩 歩 歩 歩 歩 歩 歩 歩|七
|
308
|
+
# >> | ・ 角 ・ ・ ・ ・ ・ 飛 ・|八
|
309
|
+
# >> | 香 桂 銀 金 玉 金 銀 桂 香|九
|
310
|
+
# >> +---------------------------+
|
311
|
+
#+END_SRC
|
312
|
+
|
313
|
+
*** 5五将棋の例
|
314
|
+
|
315
|
+
#+BEGIN_SRC ruby
|
316
|
+
Dimension.wh_change([5, 5])
|
317
|
+
container = Container::Basic.start
|
318
|
+
soldiers = ["5五玉", "4五金", "3五銀", "2五角", "1五飛", "5四歩"]
|
319
|
+
container.players.each do |player|
|
320
|
+
_soldiers = soldiers.collect{|s|
|
321
|
+
s = Soldier.from_str(s)
|
322
|
+
s.merge(place: s[:place].flip_if_white(player.location))
|
323
|
+
}
|
324
|
+
player.soldier_create(_soldiers)
|
325
|
+
end
|
326
|
+
container.piece_box_clear
|
327
|
+
p container
|
328
|
+
# >> 1手目: ▲先手番
|
329
|
+
# >> 5 4 3 2 1
|
330
|
+
# >> +---------------+
|
331
|
+
# >> |v飛v角v銀v金v玉|一
|
332
|
+
# >> | ・ ・ ・ ・v歩|二
|
333
|
+
# >> | ・ ・ ・ ・ ・|三
|
334
|
+
# >> | 歩 ・ ・ ・ ・|四
|
335
|
+
# >> | 玉 金 銀 角 飛|五
|
336
|
+
# >> +---------------+
|
337
|
+
# >> ▲先手の持駒:
|
338
|
+
# >> ▽後手の持駒:
|
339
|
+
|
340
|
+
container.execute("2四銀")
|
341
|
+
container.execute("4二銀")
|
342
|
+
container.execute("3四角")
|
343
|
+
container.execute("3二角")
|
344
|
+
container.execute("2三銀")
|
345
|
+
container.execute("4三銀")
|
346
|
+
container.execute("1二銀")
|
347
|
+
container.execute("同金")
|
348
|
+
container.execute("同角")
|
349
|
+
p container
|
350
|
+
# >> 10手目: ▽後手番
|
351
|
+
# >> 5 4 3 2 1
|
352
|
+
# >> +---------------+
|
353
|
+
# >> |v飛 ・ ・ ・v玉|一
|
354
|
+
# >> | ・ ・v角 ・ 角|二
|
355
|
+
# >> | ・v銀 ・ ・ ・|三
|
356
|
+
# >> | 歩 ・ ・ ・ ・|四
|
357
|
+
# >> | 玉 金 ・ ・ 飛|五
|
358
|
+
# >> +---------------+
|
359
|
+
# >> ▲先手の持駒:歩 金
|
360
|
+
# >> ▽後手の持駒:銀
|
361
|
+
#+END_SRC
|
362
|
+
|
363
|
+
*** NegaMax法のログの見方
|
364
|
+
|
365
|
+
3x3の盤面で対角線上に歩がある場合の駆け引き
|
366
|
+
|
367
|
+
#+BEGIN_SRC ruby
|
368
|
+
Bioshogi.logger = ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(STDOUT))
|
369
|
+
Dimension.wh_change([3, 3]) do
|
370
|
+
container = Container::Basic.new
|
371
|
+
container.board.placement_from_human("▲3三歩 △1一歩")
|
372
|
+
puts container
|
373
|
+
pp Diver::NegaAlphaDiver.run(player: container.player_at(:black), depth_max: 1)
|
374
|
+
end
|
375
|
+
# >> 1手目: ▲先手番
|
376
|
+
# >> 3 2 1
|
377
|
+
# >> +---------+
|
378
|
+
# >> | ・ ・v歩|一
|
379
|
+
# >> | ・ ・ ・|二
|
380
|
+
# >> | 歩 ・ ・|三
|
381
|
+
# >> +---------+
|
382
|
+
# >> ▲先手の持駒:
|
383
|
+
# >> ▽後手の持駒:
|
384
|
+
# >> 0 試指 ▲3二歩(33) (1/2)
|
385
|
+
# >> 葉 1 試指 ▽1二歩(11) (1/2)
|
386
|
+
# >> 葉 1 評価 ▽1二歩(11) +0
|
387
|
+
# >> 葉 1 試指 ▽1二歩成(11) (2/2)
|
388
|
+
# >> 葉 1 評価 ▽1二歩成(11) +1100
|
389
|
+
# >> 葉 1 確定 ▽1二歩成(11) +1100 候補:[▽1二歩成(11)(1100) ▽1二歩(11)(0)]
|
390
|
+
# >> 0 評価 ▲3二歩(33) -1100
|
391
|
+
# >> 0 試指 ▲3二歩成(33) (2/2)
|
392
|
+
# >> 葉 1 試指 ▽1二歩(11) (1/2)
|
393
|
+
# >> 葉 1 評価 ▽1二歩(11) -1100
|
394
|
+
# >> 葉 1 試指 ▽1二歩成(11) (2/2)
|
395
|
+
# >> 葉 1 評価 ▽1二歩成(11) +0
|
396
|
+
# >> 葉 1 確定 ▽1二歩成(11) +0 候補:[▽1二歩成(11)(0) ▽1二歩(11)(-1100)]
|
397
|
+
# >> 0 評価 ▲3二歩成(33) +0
|
398
|
+
# >> 0 確定 ▲3二歩成(33) +0 候補:[▲3二歩成(33)(0) ▲3二歩(33)(-1100)]
|
399
|
+
# >> {:hand=>"▲3二歩成(33)",
|
400
|
+
# >> :score=>0,
|
401
|
+
# >> :level=>0,
|
402
|
+
# >> :reading_hands=>["▲3二歩成(33)", "▽1二歩成(11)"]}
|
403
|
+
#+END_SRC
|
404
|
+
|
405
|
+
- 自分(先手)には「3二歩」「3二歩成」の二通りの手があることがわかり、どっちにするか問題。
|
406
|
+
- それぞれ指したとき、後手側になってみていちばん良くなる手を探す。
|
407
|
+
- 自分にとってはそれは負なのでマイナスとする
|
408
|
+
- 「3二歩」のとき後手は「1二歩」「1二歩成」の二通りを考えていて「1二歩成」の方が良いとわかる。+1100点。
|
409
|
+
- 自分にとってはそれは負なので「▲3二歩」なら -1100 点。
|
410
|
+
- 同様に「▲3二歩成」なら 0 点。
|
411
|
+
- -1100 になる手と、0点になる手なら当然0点になる「▲3二歩成」を指した方がいいという結果になる
|
412
|
+
|
413
|
+
*** ミクロコスモスの棋譜を読む
|
414
|
+
|
415
|
+
#+BEGIN_SRC ruby
|
416
|
+
puts Parser.file_parse("microcosmos.kif").to_bod
|
417
|
+
# >> 後手の持駒:飛二 角 銀 桂二 香 歩三
|
418
|
+
# >> 9 8 7 6 5 4 3 2 1
|
419
|
+
# >> +---------------------------+
|
420
|
+
# >> | ・ ・ ・ と と と と 杏 ・|一
|
421
|
+
# >> | ・v金 ・ ・ ・ ・ ・ ・ ・|二
|
422
|
+
# >> | ・v桂 ・ ・v歩v歩v歩v歩 ・|三
|
423
|
+
# >> | ・ ・ とv銀v金vと ・ ・ ・|四
|
424
|
+
# >> |v馬v圭 香 ・ ・ ・ ・ 銀 ・|五
|
425
|
+
# >> | ・ 歩 歩 ・ ・ ・ と ・ 香|六
|
426
|
+
# >> | ・ ・ ・ ・ ・ ・ ・ ・ ・|七
|
427
|
+
# >> | ・ ・ ・ ・ とv銀 歩 ・ ・|八
|
428
|
+
# >> | ・ ・ ・ ・ ・ ・ 金 金v玉|九
|
429
|
+
# >> +---------------------------+
|
430
|
+
# >> 先手の持駒:なし
|
431
|
+
# >> 手数=1525 ▲2九金打 まで
|
432
|
+
# >>
|
433
|
+
# >> 後手番
|
434
|
+
#+END_SRC
|
435
|
+
|
436
|
+
*** 詰みチェック
|
437
|
+
|
438
|
+
#+BEGIN_EXAMPLE
|
439
|
+
container = Container::Basic.new
|
440
|
+
container.placement_from_preset("平手")
|
441
|
+
brain = container.opponent_player.brain
|
442
|
+
|
443
|
+
require 'active_support/core_ext/benchmark'
|
444
|
+
Benchmark.ms { brain.iterative_deepening(depth_max_range: 0..0).none? } # => 18.85599992237985
|
445
|
+
Benchmark.ms { container.opponent_player.create_all_hands(legal_only: true).any? } # => 0.674000009894371
|
446
|
+
Benchmark.ms { container.opponent_player.create_all_hands(legal_only: true).to_a } # => 19.73800011910498
|
447
|
+
#+END_EXAMPLE
|
448
|
+
|
449
|
+
** 仕様
|
450
|
+
|
451
|
+
*** 棋譜サフィックス語の解釈
|
452
|
+
|
453
|
+
| コマンド | 意味 | 詳細 |
|
454
|
+
|----------+--------------------+----------------------------------------------------------------------------|
|
455
|
+
| 右 | 右の方のを選択 | 移動元を指定座標より右で絞る(龍馬は例外で指定座標を無視し左右の方向) |
|
456
|
+
| 左 | 左の方のを選択 | 移動元を指定座標より左で絞る(龍馬は例外で指定座標を無視し左右の方向) |
|
457
|
+
| 上 | 下の方のを上げる | 移動元を指定座標より下で絞る |
|
458
|
+
| 引 | 上の方のを引く | 移動元を指定座標より上で絞る。下げるから "下" と書いてしまいがちなので注意 |
|
459
|
+
| 寄 | 横一列の中から選択 | 移動元を指定座標のY座標で絞る |
|
460
|
+
| 直 | 縦一列の中から選択 | 移動元を指定座標のX座標で絞る |
|
461
|
+
|
462
|
+
もっと簡単に
|
463
|
+
|
464
|
+
#+BEGIN_EXAMPLE
|
465
|
+
↓引く
|
466
|
+
|
467
|
+
右の方にあるやつ
|
468
|
+
|
469
|
+
● ← 寄せる
|
470
|
+
|
471
|
+
↑もち上げる
|
472
|
+
↑
|
473
|
+
直
|
474
|
+
#+END_EXAMPLE
|
475
|
+
|
476
|
+
*** 棋譜の表記
|
477
|
+
|
478
|
+
| 表記 | 意味 |
|
479
|
+
|------------+--------------------------|
|
480
|
+
| 7六歩(77) | 7七の歩を7六に移動 |
|
481
|
+
| 7六歩 | 7六歩(77) の省略形 |
|
482
|
+
| 2二角成 | 2二に角が移動して成った |
|
483
|
+
| 5五飛打 | 5五に持駒の飛車を打った |
|
484
|
+
| 同歩 | 1手前の座標に歩を移動 |
|
485
|
+
|
486
|
+
*** 主な例外
|
487
|
+
|
488
|
+
| 例外 | 意味 | どんなときに起きる? |
|
489
|
+
|----------------------+------------------------------------------------+-----------------------------------------------------------------------------------------|
|
490
|
+
| BioshogiError | すべての例外の親 | |
|
491
|
+
| MustNotHappen | ありえない処理 | ブログラムがバグっている |
|
492
|
+
| AmbiguousFormatError | 指定座標に移動できる駒が多すぎる | 初手 "▲5八金" |
|
493
|
+
| SyntaxDefact | とりあえず表記が違う | 駒の配置時に "4二銀成" とした |
|
494
|
+
| PieceNotFound | 指定の名前の駒が存在しない | 龍のつもりで蛇と書いた |
|
495
|
+
| HoldPieceNotFound | 打を明示したのにその駒を持っていない | 飛車を持ってないのに初手 "▲55飛打" |
|
496
|
+
| HoldPieceNotFound2 | 打の省略型かと思ったがそれも違う | 飛車を持ってないのに初手 "▲55飛" |
|
497
|
+
| PieceAlredyExist | 自分の駒の上に自分の駒を初期配置 | 配置時に2連続で "9七歩" |
|
498
|
+
| AlredyPromoted | すでに成っている | "5五" の龍を "5一飛成" |
|
499
|
+
| BeforePlaceNotFound | 「同」に対する座標が不明 | 初手 "同歩" |
|
500
|
+
| RuleError | 反則系例外の親 | 二歩など |
|
501
|
+
| CommonError | 黙認できる例外の親 | いまのところ二歩と手番間違いの2つだけ |
|
502
|
+
| SamePlaceDifferent | 座標と「同」を同時に指定したが一致しない | "同歩" だけでいいのに "2四同歩" と場所を明示したとき、その前の指し手が "2四○" でない |
|
503
|
+
| TimeMinusError | 消費時間がマイナスになっている | CSAの読み込みのとき不整合が起きやすい。1分の持ち時間なのに1手1分で2手指したときなど |
|
504
|
+
| FileFormatError | ファイルのフォーマットがおかしい | KIFファイルとして画像ファイルを読ませた |
|
505
|
+
| KeyNotFound | 手合割・囲い・戦型などのあるはずのデータがない | 手合割で「二枚落ち」と書くところを「飛車角落ち」と書いた |
|
506
|
+
| BrainProcessingHeavy | 処理が重すぎる | 反復深化深さ優先探索でのタイムリミットが短かすぎて指し手を生成できない |
|
507
|
+
|
508
|
+
反則系 (RuleError のサブクラス)
|
509
|
+
|
510
|
+
こちらはプログラムの不具合や、棋譜の入力ミスに起因するものが多いので例外を出す
|
511
|
+
|
512
|
+
| 例外 | 意味 | どんなときに起きる? |
|
513
|
+
|---------------------------------+----------------------------------------------------+------------------------------------|
|
514
|
+
| NoPromotablePiece | "成" "不成" は指定できない | 1三金不成、3三玉成 |
|
515
|
+
| NotFoundOnBoard | 盤面に指定の駒がない | 2七に歩がないのに2六歩(27)とした |
|
516
|
+
| SoldierWarpError | 指定座標に移動できる駒に移動元の駒が含まれていない | 初手 "▲25歩(27)" |
|
517
|
+
| DeadPieceRuleError | 死に駒(行きどころのない駒)を作った | ▲1一桂 |
|
518
|
+
| PromotedPiecePutOnError | 成った状態で打とうとした | 5五龍打 |
|
519
|
+
| PromotedPieceToNormalPiece | 成駒を成ってない状態に戻そうとした | 5五龍を5六飛 |
|
520
|
+
| SamePlayerBattlerOverwrideError | 自分の駒の上に自分の駒を指した | 初手 "8八飛(28)" |
|
521
|
+
| ReversePlayerPieceMoveError | 相手の駒を動かそうとした | ▲の手番で初手 "3四歩" |
|
522
|
+
| MovableBattlerNotFound | 指定座標に移動できる駒が一つもない | 平手で初手 "▲3四歩" や ▲22角成 |
|
523
|
+
|
524
|
+
一部の例外を抑制できる系の反則
|
525
|
+
|
526
|
+
これらは棋譜にでてくるので別扱いにする
|
527
|
+
|
528
|
+
| 例外 | 意味 | どんなときに起きる? |
|
529
|
+
|--------------------------+----------+--------------------------|
|
530
|
+
| DoublePawnCommonError | 二歩 | 歩がある縦列に歩を打った |
|
531
|
+
| DifferentTurnCommonError | 手番違い | 平手で初手△3四歩 |
|
532
|
+
|
533
|
+
*** 表示座標系
|
534
|
+
|
535
|
+
| 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | |
|
536
|
+
|------+---+------+---+---+---+------+---+------+----|
|
537
|
+
| 9一 | | | | | | | | 1一 | 一 |
|
538
|
+
| | | | | | | | | | 二 |
|
539
|
+
| | | | | | | 3三 | | 1三 | 三 |
|
540
|
+
| | | | | | | | | | 四 |
|
541
|
+
| | | | | | | | | | 五 |
|
542
|
+
| | | | | | | | | | 六 |
|
543
|
+
| | | 7七 | | | | | | | 七 |
|
544
|
+
| | | | | | | | | | 八 |
|
545
|
+
| 9九 | | | | | | | | 1九 | 九 |
|
546
|
+
|
547
|
+
*** コード座標系
|
548
|
+
|
549
|
+
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|
550
|
+
|---+-----+---+-----+---+---+---+-----+---+-----|
|
551
|
+
| 0 | 0,0 | | | | | | | | 8,0 |
|
552
|
+
| 1 | | | | | | | | | |
|
553
|
+
| 2 | | | | | | | 6,2 | | 8,2 |
|
554
|
+
| 3 | | | | | | | | | |
|
555
|
+
| 4 | | | | | | | | | |
|
556
|
+
| 5 | | | | | | | | | |
|
557
|
+
| 6 | | | 2,6 | | | | | | |
|
558
|
+
| 7 | | | | | | | | | |
|
559
|
+
| 8 | 0,8 | | | | | | | | 8,8 |
|
560
|
+
|
561
|
+
*** 棋譜のパース
|
562
|
+
|
563
|
+
- "7六歩" の場合 "7六" と "歩" に分離する
|
564
|
+
- "2二角成" の場合 "2二" と "角" と "成" に分離する
|
565
|
+
- 同銀の場合、同がどこを差しているのか、前の座標を見る
|
566
|
+
- "5八金右" の場合、5八から見て右下にある金が斜め上に上がったという意味なのでこの解釈が難しい
|
567
|
+
- "4八" に金があった場合、"5八金右" は真横の金なのか、斜め下の金なのか、どっちだろう
|
568
|
+
- ネット上にある棋譜はだいたい "7六歩(77)" の形式になっていて7七にあったことを明示しているのでがんばって推測しなくてもいい
|
569
|
+
|
570
|
+
*** 棋譜ファイルの形式についての考察
|
571
|
+
|
572
|
+
**** KIFフォーマット
|
573
|
+
|
574
|
+
#+BEGIN_EXAMPLE
|
575
|
+
# ---- Kifu for Windows V6.22 棋譜ファイル ----
|
576
|
+
開始日時:2000/01/01 00:00:00
|
577
|
+
終了日時:2000/01/01 01:00:00
|
578
|
+
棋戦:(棋戦)
|
579
|
+
持ち時間:(持ち時間)
|
580
|
+
手合割:平手
|
581
|
+
先手:(先手)
|
582
|
+
後手:(後手)
|
583
|
+
手数----指手---------消費時間--
|
584
|
+
*対局前コメント
|
585
|
+
1 7六歩(77) ( 0:10/00:00:10)
|
586
|
+
*コメント1
|
587
|
+
2 3四歩(33) ( 0:10/00:00:20)
|
588
|
+
3 6六歩(67) ( 0:10/00:00:30)
|
589
|
+
4 8四歩(83) ( 0:10/00:00:40)
|
590
|
+
*コメント2
|
591
|
+
5 投了 ( 0:10/00:00:50)
|
592
|
+
まで4手で後手の勝ち
|
593
|
+
#+END_EXAMPLE
|
594
|
+
|
595
|
+
- 移動元が明記されているためプログラム的に扱いやすい
|
596
|
+
- 例えば "5八金右" は "5八金(49)" と表わすので「右」の方にある金を探さなくても済む
|
597
|
+
- ヘッダーは KI2 と共通でよい
|
598
|
+
- ヘッダーとコンテンツを分けるセパレーターは */^手数.*/* らしい。基本、これがあるかどうかで KIF or KIF2 の判別ができそう
|
599
|
+
- コメントは *直前の指し手* に結び付いている
|
600
|
+
- しかし対局前のコメントは *結び付く指し手がない* ため別データ扱いと考える方がよさそう
|
601
|
+
- 「投了」は指し手とは別に管理した方がよい。指し手に「投了」が入ってくるとプログラムが複雑になるため
|
602
|
+
- 「投了」の横の時間がある場合、それはどれだけ考えて投了したかを表す情報なので、見ないといけない。
|
603
|
+
- 「投了」がないと将棋山脈ではKIFと見なされない。なお激指は「投了」を入れてくれない。
|
604
|
+
- アスタリスクで始まるコメント部分には何を書いてもいいというのを利用して一手目の上に開始前メッセージがあるのがおかしい。結び付く手がない。開始前メッセージはヘッダーに入れる仕様だとよかった。
|
605
|
+
- コメントには「#」と「*」の2つがあり、「#」はプログラム用のコメントで「*」は中継記者のコメント
|
606
|
+
- 手合割の値の最後に謎の全角スペース2つあるのは謎。とくに気にしなくてもよいみたい
|
607
|
+
- 棋譜部分の手数番号の前のインデントはなくてもよい
|
608
|
+
- 激指(定跡道場4)は最後の指し手が「中断, 投了, 持将棋, 千日手, 詰み, 切れ負け」以外になっていると読み込めない。ここで何か判断しているようでもないので、この行は不要かもしれない。ただ投了までの時間を入れるにはこの行がいる。
|
609
|
+
- 手数は必ず 1 から始まらないといけないっぽい (1以外から始まると多くのソフトがエラーになる)
|
610
|
+
- 局面図を入れるときは、BOD を埋める。ただし「手数=数字」を入れると、エラーになるソフトもある
|
611
|
+
- 局面図を入れるときの手番は「後手番」の行だけを入れる。※もともとBODに含まれている
|
612
|
+
- 局面図を入れるときの手番と図面の間の空行は KIF のときは無くてよい (Kifu for Windows のフォーマットがそうだった)
|
613
|
+
|
614
|
+
**** KI2フォーマット
|
615
|
+
|
616
|
+
#+BEGIN_EXAMPLE
|
617
|
+
開始日時:2000/01/01 00:00
|
618
|
+
終了日時:2000/01/01 01:00
|
619
|
+
表題:(表題)
|
620
|
+
棋戦:(棋戦)
|
621
|
+
戦型:(戦型)
|
622
|
+
持ち時間:(持ち時間)
|
623
|
+
場所:(場所)
|
624
|
+
掲載:(掲載)
|
625
|
+
立会人:(立会人)
|
626
|
+
副立会人:(副立会人)
|
627
|
+
記録係:(記録係)
|
628
|
+
Web Page:(Web Page)
|
629
|
+
通算成績:(通算成績)
|
630
|
+
先手:(先手)
|
631
|
+
後手:(後手)
|
632
|
+
|
633
|
+
*対局前コメント
|
634
|
+
▲7六歩 △3四歩
|
635
|
+
*コメント1
|
636
|
+
▲6六歩△8四歩
|
637
|
+
*コメント2
|
638
|
+
まで4手で後手の勝ち
|
639
|
+
#+END_EXAMPLE
|
640
|
+
|
641
|
+
- "5八金右" "同歩" など人が書いた風の棋譜になっている
|
642
|
+
- ヘッダーとコンテンツを分けるセパレーターは *最初の空行* (2021-11-10 ではなかった)
|
643
|
+
- 指し手は横に何個並んでもいいっぽい
|
644
|
+
- 指し手のセパレータは *空白ではない* 。くっついている場合もあるので三角マークの前で区切る
|
645
|
+
- なお *△* ではなく *▽* の場合もあるので *▲△▼▽* の4つに対応すること
|
646
|
+
- *投了* がない (2021-11-10 ことはない)
|
647
|
+
- "#" もない(?)
|
648
|
+
- *まで○手で○手の勝ち* は必要みたい (2021-11-10 ない場合もある )
|
649
|
+
|
650
|
+
**** Kifu for iPhone のフォーマット
|
651
|
+
|
652
|
+
#+BEGIN_EXAMPLE
|
653
|
+
# Kifu for iPhone V4.50 棋譜ファイル
|
654
|
+
開始日時:2021/11/04 22:09:41
|
655
|
+
棋戦:R対局 早指し2(猶予1分)
|
656
|
+
▲7六歩△3四歩▲2六歩△4四歩
|
657
|
+
▲4八銀△5四歩▲投了
|
658
|
+
#+END_EXAMPLE
|
659
|
+
|
660
|
+
- ずっとヘッダーとコンテンツを分けるセパレーターは最初の空行と信じていたがなんと空行がなかった
|
661
|
+
- なので空行の有無で分けてはいけない
|
662
|
+
- また投了 *投了* がないと思われていたが、あった
|
663
|
+
|
664
|
+
*** 英語表記対応表
|
665
|
+
|
666
|
+
| 日本語 | 英語 |
|
667
|
+
|----------+----------|
|
668
|
+
| 歩 | pawn |
|
669
|
+
| 角 | bishop |
|
670
|
+
| 飛 | rook |
|
671
|
+
| 香 | lance |
|
672
|
+
| 桂 | knight |
|
673
|
+
| 銀 | silver |
|
674
|
+
| 金 | gold |
|
675
|
+
| 玉 | king |
|
676
|
+
| 成った | promoted |
|
677
|
+
| 盤面 | board |
|
678
|
+
| 座標 | place |
|
679
|
+
| 相対座標 | vector |
|
680
|
+
| 先手 | black |
|
681
|
+
| 後手 | white |
|
682
|
+
| 対局室 | container |
|
683
|
+
|
684
|
+
** コマンドラインツール
|
685
|
+
|
686
|
+
#+BEGIN_SRC shell
|
687
|
+
% bioshogi --help
|
688
|
+
Commands:
|
689
|
+
bioshogi convert # 棋譜フォーマット変換
|
690
|
+
bioshogi help [COMMAND] # Describe available commands or one specific command
|
691
|
+
bioshogi input_parser # 入力
|
692
|
+
bioshogi piece # 駒一覧
|
693
|
+
bioshogi versus # CPU同士の対戦
|
694
|
+
|
695
|
+
Options:
|
696
|
+
[--debug], [--no-debug]
|
697
|
+
[--quiet], [--no-quiet]
|
698
|
+
#+END_SRC
|
699
|
+
|
700
|
+
** 参考リンク集
|
701
|
+
|
702
|
+
- 棋譜の形式について http://wiki.optus.nu/shogi/index.php?post=%B4%FD%C9%E8%A4%CE%B7%C1%BC%B0%A4%CB%A4%C4%A4%A4%A4%C6
|
703
|
+
- 二歩 - Wikipedia http://ja.wikipedia.org/wiki/%E4%BA%8C%E6%AD%A9#cite_note-4
|
704
|
+
- CC Resources for Shogi Applications | 将棋アプリ用クリエイティブコモンズ画像 http://mucho.girly.jp/bona/
|
705
|
+
- 将棋所:USIプロトコルとは http://www.geocities.jp/shogidokoro/usi.html
|
706
|
+
- CSA標準棋譜ファイル形式 http://www.computer-shogi.org/protocol/record_v22.html
|
707
|
+
|
708
|
+
** ライセンス
|
709
|
+
|
710
|
+
- Ricty Diminished https://www.rs.tus.ac.jp/yyusa/ricty_diminished.html
|
711
|
+
- 駒画像 Portella https://creativecommons.org/licenses/by-nc-sa/4.0/
|