bioshogi 0.0.14 → 0.0.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.dumbjump +4 -0
- data/A/342/206/222B/342/206/222C/346/210/246/346/263/225.txt +2 -2
- data/Gemfile.lock +1 -1
- data/README.org +3 -3
- data/lib/bioshogi/ai/brain.rb +6 -6
- data/lib/bioshogi/analysis/analyzer.rb +66 -8
- data/lib/bioshogi/analysis/analyzer_mod.rb +2 -9
- data/lib/bioshogi/analysis/attack_info.rb +231 -227
- data/lib/bioshogi/analysis/{tech_accessor.rb → basic_accessor.rb} +4 -4
- data/lib/bioshogi/analysis/board_piller_methods.rb +9 -9
- data/lib/bioshogi/analysis/defense_info.rb +132 -132
- data/lib/bioshogi/analysis/file_normalizer.rb +1 -1
- data/lib/bioshogi/analysis/frequency.rb +368 -311
- data/lib/bioshogi/analysis/note_info.rb +6 -6
- data/lib/bioshogi/analysis/rocket_analyzer.rb +45 -58
- data/lib/bioshogi/analysis/shape_info.rb +73 -19
- data/lib/bioshogi/analysis/style_accessor.rb +22 -19
- data/lib/bioshogi/analysis/tactic_hit_turn_table.rb +8 -3
- data/lib/bioshogi/analysis/tactic_hit_turn_table_generator.rb +15 -14
- data/lib/bioshogi/analysis/tactic_info.rb +2 -2
- data/lib/bioshogi/analysis/technique_info.rb +3 -4
- data/lib/bioshogi/analysis/technique_verify_info.rb +627 -0
- data/lib/bioshogi/analysis//345/202/231/350/200/203//345/220/215/344/272/272/343/201/253/345/256/232/350/267/241/343/201/252/343/201/227.kif +4 -2
- data/lib/bioshogi/analysis//345/202/231/350/200/203//345/244/247/351/247/222/345/205/250/343/203/226/343/203/203/343/203/201.kif +4 -0
- data/lib/bioshogi/analysis//345/202/231/350/200/203//345/257/276/347/251/264/347/206/212.kif +3 -2
- data/lib/bioshogi/analysis//345/202/231/350/200/203//346/214/201/344/271/205/346/210/246.kif +2 -2
- data/lib/bioshogi/analysis//345/202/231/350/200/203//347/251/264/347/206/212.kif +3 -2
- data/lib/bioshogi/analysis//345/202/231/350/200/203//347/251/264/347/206/212/343/201/256/345/247/277/347/204/274/343/201/215.kif +3 -2
- data/lib/bioshogi/analysis//345/202/231/350/200/203//350/203/214/346/260/264/343/201/256/351/231/243.kif +7 -3
- data/lib/bioshogi/analysis//345/202/231/350/200/203//351/225/267/346/211/213/346/225/260.kif +1 -2
- data/lib/bioshogi/analysis//345/202/231/350/200/203//351/247/222/346/237/261.kif +4 -2
- data/lib/bioshogi/analysis//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 +1 -1
- data/lib/bioshogi/analysis//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 +4 -2
- data/lib/bioshogi/analysis//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 +1 -1
- data/lib/bioshogi/analysis//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 +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//343/202/253/343/202/277/345/233/262/343/201/204.kif +3 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//343/203/204/343/203/216/351/212/200/345/233/262/343/201/204.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//343/203/204/343/203/216/351/212/200/351/233/201/346/234/250.kif +1 -1
- data/lib/bioshogi/analysis//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 +1 -1
- data/lib/bioshogi/analysis//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 +6 -3
- data/lib/bioshogi/analysis//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 +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//344/270/255/344/275/217/343/201/276/343/201/204.kif +2 -0
- data/lib/bioshogi/analysis//345/233/262/343/201/204//344/270/262/343/202/253/343/203/204/345/233/262/343/201/204.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//345/217/263/347/237/242/345/200/211.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//345/233/233/346/236/232/347/251/264/347/206/212.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//345/233/233/346/236/232/347/276/216/346/277/203.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//345/233/233/346/236/232/351/212/200/345/206/240.kif +2 -2
- data/lib/bioshogi/analysis//345/233/262/343/201/204//345/233/233/346/256/265/347/253/257/347/216/211.kif +3 -3
- data/lib/bioshogi/analysis//345/233/262/343/201/204//345/233/233/350/247/222/347/237/242/345/200/211.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//345/234/237/345/261/205/347/237/242/345/200/211.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//345/235/212/344/270/273/347/276/216/346/277/203.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//345/244/247/345/261/261/347/276/216/346/277/203.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//345/244/247/351/232/205/345/233/262/343/201/204.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//345/244/251/351/207/216/347/237/242/345/200/211.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//345/257/214/345/243/253/350/246/213/347/237/242/345/200/211.kif +2 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//345/261/205/351/243/233/350/273/212/347/251/264/347/206/212.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//345/261/205/351/243/233/350/273/212/351/207/221/345/206/240.kif +4 -2
- data/lib/bioshogi/analysis//345/233/262/343/201/204//345/261/205/351/243/233/350/273/212/351/207/221/347/204/241/345/217/214.kif +1 -1
- data/lib/bioshogi/analysis//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 +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//345/261/205/351/243/233/350/273/212/351/212/200/345/206/240.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//346/202/252/345/275/242/347/237/242/345/200/211.kif +1 -1
- data/lib/bioshogi/analysis//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 +4 -1
- data/lib/bioshogi/analysis//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 +5 -2
- data/lib/bioshogi/analysis//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 +1 -1
- data/lib/bioshogi/analysis//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 +2 -2
- data/lib/bioshogi/analysis//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 +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//346/226/207/351/216/256/345/233/262/343/201/204.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//346/234/250/346/235/221/347/276/216/346/277/203.kif +1 -1
- data/lib/bioshogi/analysis//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 +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//346/265/201/343/202/214/347/237/242/345/200/211.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//347/204/241/350/262/254/344/273/273/347/237/242/345/200/211.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//347/211/207/343/203/204/343/203/216/351/212/200/345/233/262/343/201/204.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//347/211/207/347/251/264/347/206/212.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//347/237/242/345/200/211/347/251/264/347/206/212.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//347/256/261/345/205/245/343/202/212/345/250/230.kif +2 -2
- data/lib/bioshogi/analysis//345/233/262/343/201/204//347/267/217/347/237/242/345/200/211.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//347/276/216/346/277/203/347/206/212/345/233/262/343/201/204.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//350/217/212/346/260/264/347/237/242/345/200/211.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//350/217/261/347/237/242/345/200/211.kif +1 -1
- data/lib/bioshogi/analysis//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 +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//350/243/276/345/233/272/343/202/201.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//350/247/222/347/237/242/345/200/211.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//350/261/206/350/205/220/347/237/242/345/200/211.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//351/200/243/347/233/237/347/276/216/346/277/203.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//351/207/221/345/244/232/344/274/235.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//351/207/221/347/204/241/345/217/214.kif +3 -2
- data/lib/bioshogi/analysis//345/233/262/343/201/204//351/207/221/347/233/276/345/233/262/343/201/204.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//351/207/221/347/276/216/346/277/203.kif +2 -0
- data/lib/bioshogi/analysis//345/233/262/343/201/204//351/212/200/345/206/240/347/251/264/347/206/212.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//351/212/200/347/253/213/343/201/241/347/237/242/345/200/211.kif +2 -2
- data/lib/bioshogi/analysis//345/233/262/343/201/204//351/212/200/347/276/216/346/277/203.kif +2 -2
- data/lib/bioshogi/analysis//345/233/262/343/201/204//351/233/242/343/202/214/351/207/221/347/204/241/345/217/214.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//351/253/230/347/237/242/345/200/211.kif +1 -1
- data/lib/bioshogi/analysis//345/233/262/343/201/204//351/253/230/347/276/216/346/277/203/345/233/262/343/201/204.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225/2/346/211/213/347/233/256/342/226/2633/343/203/213/351/243/233/346/210/246/346/263/225.kif +2 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225/2/346/211/213/347/233/256/342/226/2633/344/272/214/351/212/200/343/202/267/343/202/271/343/203/206/343/203/240.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225/2/346/211/213/347/233/256/342/226/2636/344/272/214/351/212/200/346/210/246/346/263/225.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225/5/346/211/213/347/210/206/345/274/276.kif +5 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225/5/347/255/213/344/275/215/345/217/226/343/202/212.kif +2 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225/6/347/255/213/344/275/215/345/217/226/343/202/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225/U/343/202/277/343/203/274/343/203/263/351/243/233/350/273/212.kif +5 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//342/226/2625/344/270/203/351/207/221/346/210/246/346/263/225.kif +5 -3
- data/lib/bioshogi/analysis//346/210/246/346/263/225//342/226/2625/344/272/224/351/276/215/344/270/255/351/243/233/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//342/226/2633/344/270/211/346/241/202/346/210/246/346/263/225.kif +2 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//342/226/2633/344/270/211/350/247/222/345/236/213/347/251/272/344/270/255/346/210/246/346/263/225.kif +3 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//342/226/2633/344/270/211/351/207/221/345/236/213/346/227/251/347/271/260/343/202/212/351/212/200.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//342/226/2633/344/270/211/351/243/233/346/210/246/346/263/225.kif +3 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//342/226/2634/344/272/224/350/247/222/346/210/246/346/263/225.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//342/226/2637/344/272/214/351/243/233/344/272/234/346/200/245/346/210/246.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/201/215/357/275/215/343/201/215/357/275/215/351/207/221.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/201/257/343/201/217/345/274/217/345/233/233/351/226/223/351/243/233/350/273/212.kif +4 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/201/270/343/201/252/343/201/241/343/202/207/343/201/223/346/200/245/346/210/246.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/202/204/343/201/260/343/203/234/343/203/274/343/202/272/346/265/201.kif +3 -0
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/202/250/343/203/253/343/203/242/346/200/245/346/210/246.kif +6 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/202/253/343/203/213/343/202/253/343/203/213/351/207/221.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/202/253/343/203/213/343/202/253/343/203/213/351/212/200.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/202/263/343/203/274/343/203/244/343/203/263/346/265/201/344/270/211/351/226/223/351/243/233/350/273/212.kif +6 -3
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/202/264/343/202/255/343/202/262/343/203/263/344/270/255/351/243/233/350/273/212.kif +3 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/202/264/343/203/252/343/202/264/343/203/252/351/207/221.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/202/264/343/203/252/343/203/251/343/201/256/345/217/263/346/211/213.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/202/264/343/203/252/351/201/225/343/201/204/350/247/222.kif +27 -0
- data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +3 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +3 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/204/343/203/216/351/212/200/344/270/255/351/243/233/350/273/212.kif +4 -3
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/204/343/203/216/351/212/200/345/236/213/345/217/263/347/216/211.kif +6 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/210/343/203/236/343/203/233/343/203/274/343/202/257.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/215/343/202/263/345/274/217/343/202/277/343/203/206/346/255/251/345/217/226/343/202/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/216/343/203/274/343/203/236/343/203/253/344/270/211/351/226/223/351/243/233/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/216/343/203/274/343/203/236/343/203/253/345/233/233/351/226/223/351/243/233/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/222/343/203/251/343/203/241/346/210/246/346/263/225.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/235/343/203/263/343/203/235/343/203/263/346/241/202.kif +2 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/241/343/202/244/343/203/211/343/202/267/343/202/271/343/203/206/343/203/240.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//343/203/242/343/203/216/343/203/254/343/203/274/343/203/253/345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +5 -3
- data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/200/346/211/213/346/220/215/350/247/222/346/217/233/343/202/217/343/202/212.kif +2 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/200/347/233/264/347/267/232/347/251/264/347/206/212.kif +6 -3
- data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/200/351/226/223/351/243/233/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/211/346/256/265/345/217/263/347/216/211.kif +3 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/211/351/226/223/351/243/233/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/213/347/224/272/346/265/201/344/270/211/351/226/223/351/243/233/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/255/345/216/237/346/265/201/346/200/245/346/210/246/347/237/242/345/200/211.kif +2 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/255/345/216/237/346/265/201/347/233/270/346/216/233/343/201/213/343/202/212.kif +2 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/255/345/216/237/351/243/233/350/273/212.kif +2 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/255/345/272/247/351/243/233/350/273/212.kif +2 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/255/351/243/233/350/273/212/345/267/246/347/251/264/347/206/212.kif +3 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//344/270/270/345/261/261/343/203/257/343/202/257/343/203/201/343/203/263.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//344/271/235/351/226/223/351/243/233/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/210/235/346/211/213/342/226/2627/345/205/253/351/212/200/346/210/246/346/263/225.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/212/240/350/227/244/346/265/201/350/242/226/351/243/233/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/213/207/346/260/227/346/265/201.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/215/207/347/224/260/345/274/217/347/237/263/347/224/260/346/265/201.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +4 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/217/263/345/233/233/351/226/223/351/243/233/350/273/212/346/200/245/346/210/246.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/217/263/347/216/211.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/220/214/345/236/213/347/237/242/345/200/211.kif +2 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/233/233/346/211/213/350/247/222.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/234/260/344/270/213/351/211/204/351/243/233/350/273/212.kif +3 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/241/232/347/224/260/343/202/271/343/203/232/343/202/267/343/203/243/343/203/253.kif +2 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/244/251/345/275/246/346/265/201/342/226/2626/345/205/255/350/247/222.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/244/251/345/275/246/346/265/201/345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/254/211/351/207/216/346/265/201.kif +4 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/256/244/345/262/241/343/202/267/343/202/271/343/203/206/343/203/240.kif +1 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/257/276/347/237/242/345/200/211/346/200/245/346/210/246/346/243/222/351/212/200.kif +6 -3
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/261/213/346/225/267/346/265/201/344/272/214/346/236/232/351/212/200.kif +2 -3
- data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +2 -0
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/261/261/347/224/260/345/256/232/350/267/241.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/267/246/347/276/216/346/277/203/346/200/245/346/210/246.kif +3 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//345/271/273/346/203/263/345/233/233/351/226/223/351/243/233/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//346/210/270/{351/203/250 → 350/276/272}/346/265/2014/342/206/2223/346/210/246/346/263/225.kif +3 -3
- data/lib/bioshogi/analysis//346/210/246/346/263/225//346/226/260/345/254/211/351/207/216/346/265/201.kif +2 -0
- data/lib/bioshogi/analysis//346/210/246/346/263/225//346/226/260/346/235/221/347/224/260/343/202/267/343/202/271/343/203/206/343/203/240.kif +3 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//346/226/260/347/261/263/351/225/267/347/216/211.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//346/226/260/351/254/274/346/256/272/343/201/227.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//346/234/250/346/235/221/345/256/232/350/267/241.kif +5 -3
- data/lib/bioshogi/analysis//346/210/246/346/263/225//346/235/221/347/224/260/343/202/267/343/202/271/343/203/206/343/203/240.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//346/241/220/345/261/261/346/265/201/343/202/277/343/203/206/346/255/251/346/243/222/351/212/200.kif +2 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//346/243/222/347/216/211.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//346/243/222/351/207/221.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//346/243/256/344/270/213/343/202/267/343/202/271/343/203/206/343/203/240.kif +2 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//346/245/240/346/234/254/345/274/217/347/237/263/347/224/260/346/265/201.kif +2 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//346/250/252/346/255/251/345/217/226/343/202/212.kif +2 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//346/270/205/351/207/216/346/265/201/345/262/220/351/230/234/346/210/246/346/263/225.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//347/216/211/351/240/255/344/275/215/345/217/226/343/202/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//347/216/211/351/240/255/351/212/200.kif +3 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//347/233/270/346/250/252/346/255/251/345/217/226/343/202/212.kif +2 -6
- data/lib/bioshogi/analysis//346/210/246/346/263/225//347/233/270/347/255/213/351/201/225/343/201/204/350/247/222.kif +2 -0
- data/lib/bioshogi/analysis//346/210/246/346/263/225//347/234/237/351/203/250/346/265/201.kif +5 -3
- data/lib/bioshogi/analysis//346/210/246/346/263/225//347/237/242/345/200/211/342/226/2623/344/270/203/351/212/200/346/210/246/346/263/225.kif +3 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//347/237/242/345/200/211/344/270/255/351/243/233/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//347/250/262/345/272/255/346/210/246/346/263/225.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//347/251/264/350/247/222/345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//347/251/264/350/247/222/346/210/246/346/263/225.kif +4 -3
- data/lib/bioshogi/analysis//346/210/246/346/263/225//347/253/213/347/237/263/346/265/201/345/233/233/351/226/223/351/243/233/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//347/253/271/351/203/250/343/202/271/343/203/232/343/202/267/343/203/243/343/203/253.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//347/255/213/351/201/225/343/201/204/350/247/222.kif +3 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//347/261/263/351/225/267/346/265/201/346/200/245/346/210/246/347/237/242/345/200/211.kif +8 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//347/263/270/350/260/267/346/265/201/345/217/263/347/216/211.kif +2 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//347/276/275/347/224/237/345/274/217/350/242/226/351/243/233/350/273/212.kif +3 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//350/200/200/351/276/215/343/201/262/343/201/255/343/202/212/351/243/233/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//350/200/200/351/276/215/345/233/233/351/226/223/351/243/233/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//350/204/207/343/202/267/343/202/271/343/203/206/343/203/240.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//350/205/260/346/216/233/343/201/221/351/212/200.kif +1 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +5 -4
- data/lib/bioshogi/analysis//346/210/246/346/263/225//350/213/261/346/230/245/346/265/201/343/201/213/343/201/276/343/201/204/343/201/237/343/201/241/346/210/246/346/263/225.kif +5 -3
- data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +4 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//350/217/205/344/272/225/346/265/201/344/270/211/351/226/223/351/243/233/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//350/217/234/343/200/205/346/262/263/346/265/201/342/226/2634/345/233/233/350/247/222.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +2 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//350/242/226/351/243/233/350/273/212.kif +7 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//350/243/217/343/202/242/343/203/222/343/203/253/346/210/246/346/263/225.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//350/247/222/346/217/233/343/202/217/343/202/212/345/217/263/347/216/211.kif +5 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +4 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//350/247/222/346/217/233/343/202/217/343/202/212/346/243/222/351/212/200.kif +2 -0
- data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//350/247/222/346/217/233/343/202/217/343/202/212/350/205/260/346/216/233/343/201/221/351/212/200/346/227/247/345/236/213.kif +2 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//350/247/222/351/240/255/346/255/251/346/210/246/346/263/225.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//350/266/205/346/200/245/346/210/246.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//351/200/206/346/243/222/351/212/200.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//351/201/240/345/261/261/346/265/201.kif +3 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//351/203/275/346/210/220/346/265/201/342/226/2633/344/270/200/351/207/221.kif +24 -11
- data/lib/bioshogi/analysis//346/210/246/346/263/225//351/207/221/346/262/242/346/265/201.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//351/207/221/347/204/241/345/217/214/346/200/245/346/210/246.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//351/207/221/351/212/200/346/251/213.kif +2 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//351/212/200/351/233/262/351/233/200.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//351/214/206/345/210/200/346/210/246/346/263/225.kif +54 -0
- data/lib/bioshogi/analysis//346/210/246/346/263/225//351/230/252/347/224/260/346/265/2012/346/211/213/347/233/256/342/226/2639/345/233/233/346/255/251.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//351/230/252/347/224/260/346/265/201/345/220/221/343/201/213/343/201/204/351/243/233/350/273/212.kif +3 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +5 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//351/233/200/345/210/272/343/201/227.kif +2 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//351/233/201/346/234/250/345/217/263/347/216/211.kif +3 -2
- data/lib/bioshogi/analysis//346/210/246/346/263/225//351/242/250/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//351/253/230/347/224/260/346/265/201/345/267/246/347/216/211.kif +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//351/254/274/345/205/255/346/265/201/343/201/251/343/201/243/343/201/213/343/202/223/351/243/233/350/273/212.kif +54 -0
- data/lib/bioshogi/analysis//346/210/246/346/263/225//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 +1 -1
- data/lib/bioshogi/analysis//346/210/246/346/263/225//351/255/224/347/225/214/345/233/233/351/226/223/351/243/233/350/273/212.kif +1 -1
- data/lib/bioshogi/analysis//346/211/213/347/255/213/2/346/256/265/343/203/255/343/202/261/343/203/203/343/203/210.kif +1 -1
- data/lib/bioshogi/analysis//346/211/213/347/255/213//343/201/237/343/201/237/343/201/215/343/201/256/346/255/251.kif +27 -9
- data/lib/bioshogi/analysis//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 +11 -11
- data/lib/bioshogi/analysis//346/211/213/347/255/213//347/253/257/347/216/211/343/201/253/343/201/257/347/253/257/346/255/251.kif +12 -14
- data/lib/bioshogi/analysis//346/211/213/347/255/213//351/200/243/346/211/223/343/201/256/346/255/251.kif +2 -1
- data/lib/bioshogi/analysis//346/211/213/347/255/213//351/201/240/350/246/213/343/201/256/350/247/222.kif +16 -6
- data/lib/bioshogi/analysis.rb +4 -0
- data/lib/bioshogi/board/csa_formatter.rb +2 -2
- data/lib/bioshogi/board/kakinoki_formatter.rb +5 -5
- data/lib/bioshogi/board/reader_methods.rb +8 -4
- data/lib/bioshogi/board_parser/kakinoki_board_parser.rb +2 -2
- data/lib/bioshogi/container/checkmate_yomiage.rb +1 -1
- data/lib/bioshogi/dimension/base.rb +49 -10
- data/lib/bioshogi/dimension/column.rb +131 -0
- data/lib/bioshogi/dimension/module_methods.rb +19 -20
- data/lib/bioshogi/dimension/row.rb +128 -0
- data/lib/bioshogi/formatter/sugatayaki_validator.rb +1 -1
- data/lib/bioshogi/hand/drop.rb +1 -1
- data/lib/bioshogi/hand/move.rb +6 -6
- data/lib/bioshogi/input_adapter/ki2_adapter.rb +10 -10
- data/lib/bioshogi/input_adapter/shared_validation.rb +1 -1
- data/lib/bioshogi/location.rb +22 -2
- data/lib/bioshogi/official_formatter.rb +37 -37
- data/lib/bioshogi/order_info.rb +5 -3
- data/lib/bioshogi/piece/piece_vector.rb +16 -10
- data/lib/bioshogi/piece.rb +2 -2
- data/lib/bioshogi/place.rb +155 -62
- data/lib/bioshogi/player/soldier_methods.rb +2 -2
- data/lib/bioshogi/screen_image/core_methods.rb +2 -2
- data/lib/bioshogi/screen_image/pentagon.rb +2 -2
- data/lib/bioshogi/screen_image/soldier_methods.rb +1 -1
- data/lib/bioshogi/screen_image/stand.rb +5 -5
- data/lib/bioshogi/soldier/technique_matcher_methods.rb +51 -0
- data/lib/bioshogi/soldier.rb +14 -79
- data/lib/bioshogi/soldier_walker.rb +1 -1
- data/lib/bioshogi/turn_info.rb +2 -2
- data/lib/bioshogi/v/preset_vectors.rb +129 -0
- data/lib/bioshogi/v.rb +4 -2
- data/lib/bioshogi/version.rb +1 -1
- data/lib/bioshogi.rb +2 -0
- data//347/275/256/343/201/215/346/217/233/343/201/210/346/216/250/345/245/250.txt +1 -1
- metadata +14 -7
- data/lib/bioshogi/analysis/technique_matcher_info.rb +0 -810
- data/lib/bioshogi/dimension/place_x.rb +0 -27
- data/lib/bioshogi/dimension/place_y.rb +0 -57
@@ -0,0 +1,627 @@
|
|
1
|
+
# frozen-string-literal: true
|
2
|
+
|
3
|
+
# :OPTIONAL: は考慮する必要があるもの。
|
4
|
+
|
5
|
+
module Bioshogi
|
6
|
+
module Analysis
|
7
|
+
class TechniqueVerifyInfo
|
8
|
+
ROW_IS_2 = 1 # ▲から見て2段目のこと
|
9
|
+
|
10
|
+
include ApplicationMemoryRecord
|
11
|
+
memory_record [
|
12
|
+
{
|
13
|
+
key: "金底の歩",
|
14
|
+
description: "打ち歩が一番下の段でかつ、その上に自分の金がある",
|
15
|
+
func: proc {
|
16
|
+
#【条件1】「最下段」であること
|
17
|
+
verify_if { soldier.bottom_spaces.zero? }
|
18
|
+
|
19
|
+
#【条件2】上に自分の金があること
|
20
|
+
verify_if do
|
21
|
+
if v = soldier.relative_move_to(:up)
|
22
|
+
if s = board[v]
|
23
|
+
s.piece.key == :gold && own?(s)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
},
|
28
|
+
},
|
29
|
+
|
30
|
+
{
|
31
|
+
key: "一間竜",
|
32
|
+
description: "上下左右の1つ離れたところのどこかに相手の玉がある",
|
33
|
+
func: proc {
|
34
|
+
verify_if do
|
35
|
+
V.ikkenryu_vectors.any? do |e|
|
36
|
+
if v = soldier.relative_move_to(e)
|
37
|
+
if s = board[v]
|
38
|
+
s.piece.key == :king && opponent?(s)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
},
|
44
|
+
},
|
45
|
+
|
46
|
+
{
|
47
|
+
key: "こびん攻め",
|
48
|
+
description: "玉または飛の斜めの歩を攻める",
|
49
|
+
func: proc {
|
50
|
+
#【条件1】2〜8筋であること (端の場合は「こびん」とは言わないため)
|
51
|
+
verify_if { soldier.column_is_second_to_eighth? }
|
52
|
+
|
53
|
+
#【条件2】相手が歩であること
|
54
|
+
verify_if do
|
55
|
+
if v = soldier.relative_move_to(:up)
|
56
|
+
if s = board[v]
|
57
|
+
s.piece.key == :pawn && s.normal? && opponent?(s)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
#【条件3】桂馬の効きの位置に「玉」または「飛車」があること
|
63
|
+
verify_if do
|
64
|
+
V.keima_vectors.any? do |e|
|
65
|
+
if v = soldier.relative_move_to(e)
|
66
|
+
if s = board[v]
|
67
|
+
(s.piece.key == :king || (s.piece.key == :rook && s.normal?)) && opponent?(s)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
},
|
73
|
+
},
|
74
|
+
|
75
|
+
{
|
76
|
+
key: "位の確保",
|
77
|
+
description: "中盤戦になる前に5段目の歩を銀で支える",
|
78
|
+
func: proc {
|
79
|
+
#【条件1】前線(6段目)にいること
|
80
|
+
verify_if { soldier.kurai_sasae? }
|
81
|
+
|
82
|
+
#【条件2】3〜7列であること (両端2列は「位」とは言わないため)
|
83
|
+
verify_if { soldier.column_is_three_to_seven? }
|
84
|
+
|
85
|
+
#【条件3】前に歩があること
|
86
|
+
verify_if do
|
87
|
+
if v = soldier.relative_move_to(:up)
|
88
|
+
if s = board[v]
|
89
|
+
s.piece.key == :pawn && s.normal? && own?(s)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
#【条件4】歩の上に何もないこと (歩の上に何か駒があった場合は無効) :OPTIONAL:
|
95
|
+
skip_if do
|
96
|
+
if v = soldier.relative_move_to(:up_up)
|
97
|
+
board[v]
|
98
|
+
end
|
99
|
+
end
|
100
|
+
},
|
101
|
+
},
|
102
|
+
|
103
|
+
{
|
104
|
+
key: "パンツを脱ぐ",
|
105
|
+
description: "開戦前かつ、跳んだ桂が下から3つ目かつ、(近い方の)端から3つ目かつ、移動元の隣(端に近い方)に自分の玉がある",
|
106
|
+
func: proc {
|
107
|
+
#【条件1】下から3段目であること
|
108
|
+
verify_if { soldier.bottom_spaces == 2 }
|
109
|
+
|
110
|
+
#【条件2】端から3つ目であること
|
111
|
+
verify_if { soldier.column_spaces_min == 2 }
|
112
|
+
|
113
|
+
#【条件3】動元は「端から2つ目」であること (▲41から飛んだ場合を除外する)
|
114
|
+
verify_if { origin_soldier.column_spaces_min == 1 }
|
115
|
+
|
116
|
+
#【条件4】移動元の端側に「玉」があること
|
117
|
+
verify_if do
|
118
|
+
if v = origin_soldier.relative_move_to(soldier.left_or_right_to_closer_side)
|
119
|
+
if s = board[v]
|
120
|
+
s.piece.key == :king && own?(s)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
},
|
125
|
+
},
|
126
|
+
|
127
|
+
{
|
128
|
+
key: "腹銀",
|
129
|
+
description: "銀を打ったとき左右どちらかに相手の玉がある",
|
130
|
+
func: proc {
|
131
|
+
verify_if do
|
132
|
+
V.left_right_vectors.any? do |e|
|
133
|
+
if v = soldier.relative_move_to(e)
|
134
|
+
if s = board[v]
|
135
|
+
s.piece.key == :king && opponent?(s)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
},
|
141
|
+
},
|
142
|
+
|
143
|
+
{
|
144
|
+
key: "尻銀",
|
145
|
+
description: "銀を打ったとき下に相手の玉がある",
|
146
|
+
func: proc {
|
147
|
+
verify_if do
|
148
|
+
if v = soldier.relative_move_to(:down)
|
149
|
+
if s = board[v]
|
150
|
+
s.piece.key == :king && opponent?(s)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
},
|
155
|
+
},
|
156
|
+
|
157
|
+
{
|
158
|
+
key: "垂れ歩",
|
159
|
+
description: "打った歩の前が空で次に成れる余地がある場合",
|
160
|
+
func: proc {
|
161
|
+
#【条件1】2, 3, 4 段目であること
|
162
|
+
verify_if { soldier.tarefu_desuka? }
|
163
|
+
|
164
|
+
#【条件2】先が空であること
|
165
|
+
verify_if do
|
166
|
+
if v = soldier.relative_move_to(:up)
|
167
|
+
board.empty_cell?(v)
|
168
|
+
end
|
169
|
+
end
|
170
|
+
},
|
171
|
+
},
|
172
|
+
|
173
|
+
# 単に「18角打」をチェックした方がいい → やめ → 自力判定する
|
174
|
+
{
|
175
|
+
key: "遠見の角",
|
176
|
+
description: "打った角の位置が下から2番目かつ近い方の端から1番目(つまり自分の香の上の位置)",
|
177
|
+
func: proc {
|
178
|
+
#【条件1】中盤以降であること (そうしないと序盤の77角打まで該当してしまう) :OPTIONAL:
|
179
|
+
verify_if { executor.container.outbreak_turn }
|
180
|
+
|
181
|
+
#【条件2】自陣から打っていること
|
182
|
+
verify_if { soldier.own_side? }
|
183
|
+
|
184
|
+
#【条件3】端から打っていること
|
185
|
+
if false
|
186
|
+
verify_if { soldier.column_is_edge? }
|
187
|
+
end
|
188
|
+
|
189
|
+
#【条件4】相手の陣地に直通しているかつ長さが 5 以上であること
|
190
|
+
verify_if do
|
191
|
+
threshold = 5 # 成立するステップ数。4 だとマッチしすぎるため 5 にする
|
192
|
+
V.bishop_naname_mae_vectors.any? do |up_left| # 左上と右上を試す
|
193
|
+
matched = false
|
194
|
+
step = 0 # 斜めの効きの数 (駒に衝突したらそこも含める)
|
195
|
+
Dimension::Row.dimension_size.times do |i|
|
196
|
+
if v = soldier.relative_move_to(up_left, magnification: 1 + i)
|
197
|
+
step += 1 # 効きの数+1
|
198
|
+
if step >= threshold && v.opp_side?(location) # 相手の陣地に入れるか?
|
199
|
+
matched = true
|
200
|
+
break
|
201
|
+
end
|
202
|
+
board[v] and break # 相手の駒または自分の駒がある場合は終わる
|
203
|
+
else
|
204
|
+
break # 外に出た
|
205
|
+
end
|
206
|
+
end
|
207
|
+
matched
|
208
|
+
end
|
209
|
+
end
|
210
|
+
},
|
211
|
+
},
|
212
|
+
|
213
|
+
{
|
214
|
+
key: "割り打ちの銀",
|
215
|
+
description: "打った銀の後ろの左右両方に相手の飛か金がある",
|
216
|
+
func: proc {
|
217
|
+
verify_if do
|
218
|
+
V.wariuchi_vectors.all? do |e|
|
219
|
+
if v = soldier.relative_move_to(e)
|
220
|
+
if s = board[v]
|
221
|
+
if opponent?(s)
|
222
|
+
(s.piece.key == :rook && s.normal?) || s.piece.key == :gold
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
228
|
+
},
|
229
|
+
},
|
230
|
+
|
231
|
+
{
|
232
|
+
key: "たすきの銀",
|
233
|
+
description: "打った銀の斜め前に飛があり対極に金がある",
|
234
|
+
func: proc {
|
235
|
+
verify_if do
|
236
|
+
V.tasuki_vectors.any? do |up_left, down_right|
|
237
|
+
if v = soldier.relative_move_to(up_left)
|
238
|
+
if s = board[v]
|
239
|
+
if s.piece.key == :rook && s.normal? && opponent?(s) # 左上に飛車がある
|
240
|
+
if v = soldier.relative_move_to(down_right)
|
241
|
+
if s = board[v]
|
242
|
+
(s.piece.key == :gold || (s.piece.key == :silver && s.promoted)) && opponent?(s) # 右下に金または成銀がある
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
249
|
+
end
|
250
|
+
},
|
251
|
+
},
|
252
|
+
|
253
|
+
{
|
254
|
+
key: "たすきの角",
|
255
|
+
description: "打った角の斜め前に飛があり対極に金がある",
|
256
|
+
func: proc {
|
257
|
+
instance_eval(&TechniqueVerifyInfo[:"たすきの銀"].func)
|
258
|
+
},
|
259
|
+
},
|
260
|
+
|
261
|
+
{
|
262
|
+
key: "桂頭の銀",
|
263
|
+
description: "打った銀の上に相手の桂がある",
|
264
|
+
func: proc {
|
265
|
+
#【条件1】上に相手の桂がある
|
266
|
+
verify_if do
|
267
|
+
if v = soldier.relative_move_to(:up)
|
268
|
+
if s = board[v]
|
269
|
+
s.piece.key == :knight && s.normal? && opponent?(s)
|
270
|
+
end
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
274
|
+
#【条件2】「22銀」や「82銀」ではないこと :OPTIONAL:
|
275
|
+
# - 端玉に対しての腹銀が「桂頭の銀」扱いになる場合が多いため除外している
|
276
|
+
# - ただ本当に21や81の桂に対して「桂頭の銀」をかましている場合もなくはない
|
277
|
+
skip_if do
|
278
|
+
soldier.column_is_second_or_eighth? && soldier.top_spaces == 1
|
279
|
+
end
|
280
|
+
},
|
281
|
+
},
|
282
|
+
|
283
|
+
{
|
284
|
+
key: "歩頭の桂",
|
285
|
+
description: "打った桂の上に相手の歩がある",
|
286
|
+
func: proc {
|
287
|
+
verify_if do
|
288
|
+
if v = soldier.relative_move_to(:up)
|
289
|
+
if s = board[v]
|
290
|
+
s.piece.key == :pawn && s.normal? && opponent?(s)
|
291
|
+
end
|
292
|
+
end
|
293
|
+
end
|
294
|
+
},
|
295
|
+
},
|
296
|
+
|
297
|
+
{
|
298
|
+
key: "銀ばさみ",
|
299
|
+
description: "動かした歩の左右どちらかに相手の銀があり、その向こうに自分の歩がある。また歩の前に何もないこと。",
|
300
|
+
func: proc {
|
301
|
+
#【条件1】「同歩」でないこと
|
302
|
+
verify_if { !executor.move_hand.captured_soldier }
|
303
|
+
|
304
|
+
#【条件2】進めた歩の前が空であること
|
305
|
+
verify_if do
|
306
|
+
if v = soldier.relative_move_to(:up)
|
307
|
+
board.empty_cell?(v)
|
308
|
+
end
|
309
|
+
end
|
310
|
+
|
311
|
+
# 左右どちらかが成立していること
|
312
|
+
verify_if do
|
313
|
+
V.ginbasami_verctors.any? do |right, right_right, right_right_up|
|
314
|
+
#【条件3】右に相手の銀ある
|
315
|
+
yield_self {
|
316
|
+
if v = soldier.relative_move_to(right)
|
317
|
+
if s = board[v]
|
318
|
+
s.piece.key == :silver && s.normal? && opponent?(s)
|
319
|
+
end
|
320
|
+
end
|
321
|
+
} or next
|
322
|
+
|
323
|
+
#【条件4】右右に自分の歩がある
|
324
|
+
yield_self {
|
325
|
+
if v = soldier.relative_move_to(right_right)
|
326
|
+
if s = board[v]
|
327
|
+
s.piece.key == :pawn && s.normal? && own?(s)
|
328
|
+
end
|
329
|
+
end
|
330
|
+
} or next
|
331
|
+
|
332
|
+
#【条件5】右右上が空である
|
333
|
+
if v = soldier.relative_move_to(right_right_up)
|
334
|
+
board.empty_cell?(v)
|
335
|
+
end
|
336
|
+
end
|
337
|
+
end
|
338
|
+
},
|
339
|
+
},
|
340
|
+
|
341
|
+
{
|
342
|
+
key: "端玉には端歩",
|
343
|
+
description: nil,
|
344
|
+
func: proc {
|
345
|
+
#【条件1】端であること
|
346
|
+
verify_if { soldier.column_is_edge? }
|
347
|
+
|
348
|
+
#【条件2】上が相手の歩であること (▲16歩△14歩の状態で▲15歩としたということ)
|
349
|
+
verify_if do
|
350
|
+
if v = soldier.relative_move_to(:up)
|
351
|
+
if s = board[v]
|
352
|
+
s.piece.key == :pawn && s.normal? && opponent?(s)
|
353
|
+
end
|
354
|
+
end
|
355
|
+
end
|
356
|
+
|
357
|
+
#【条件3】奥に相手の玉がいること (13→12→11と探す)
|
358
|
+
verify_if do
|
359
|
+
# この 2 は 15 - 2 = 13 の 2 で、15を基点にしているとすれば14に歩があり13から調べるため
|
360
|
+
# Dimension::Row.dimension_size は書かなくてもいい
|
361
|
+
(2..).any? do |y|
|
362
|
+
if v = soldier.relative_move_to(:up, magnification: y)
|
363
|
+
if s = board[v]
|
364
|
+
if s.piece.key == :king && opponent?(s)
|
365
|
+
true
|
366
|
+
else
|
367
|
+
break # 駒があるが玉でない場合は切り上げる
|
368
|
+
end
|
369
|
+
end
|
370
|
+
else
|
371
|
+
break # 一番上まで調べたが玉はいなかった
|
372
|
+
end
|
373
|
+
end
|
374
|
+
end
|
375
|
+
|
376
|
+
#【条件4】下に「自分の香飛龍」 (17→18→19と探す)
|
377
|
+
verify_if do
|
378
|
+
# この 2 は突いた歩の 2 つ下から香を調べるため
|
379
|
+
(2..).any? do |y|
|
380
|
+
if v = soldier.relative_move_to(:down, magnification: y)
|
381
|
+
if s = board[v]
|
382
|
+
if s.boar_mode? && own?(s) # 「自分の香飛龍」か?
|
383
|
+
true
|
384
|
+
else
|
385
|
+
break # 駒があるが「自分の香飛龍」ではなかったため切り上げる
|
386
|
+
end
|
387
|
+
end
|
388
|
+
else
|
389
|
+
break # 一番下まで調べたが「自分の香飛龍」はいなかった
|
390
|
+
end
|
391
|
+
end
|
392
|
+
end
|
393
|
+
},
|
394
|
+
},
|
395
|
+
|
396
|
+
{
|
397
|
+
key: "田楽刺し",
|
398
|
+
description: "角の頭に打ってその奥に玉などの大駒がある",
|
399
|
+
func: proc {
|
400
|
+
verify_if do
|
401
|
+
mode = :walk_to_bishop
|
402
|
+
(1..).each do |y|
|
403
|
+
if v = soldier.relative_move_to(:up, magnification: y)
|
404
|
+
if s = board[v]
|
405
|
+
if opponent?(s)
|
406
|
+
case mode
|
407
|
+
when :walk_to_bishop # 角を探す
|
408
|
+
if s.piece.key == :bishop && s.normal?
|
409
|
+
mode = :walk_to_dengaku_target
|
410
|
+
end
|
411
|
+
when :walk_to_dengaku_target # 大駒を探す
|
412
|
+
if s.piece.dengaku_target
|
413
|
+
mode = :dengaku_matched
|
414
|
+
break
|
415
|
+
end
|
416
|
+
else
|
417
|
+
raise "must not happen"
|
418
|
+
end
|
419
|
+
else
|
420
|
+
break # 自分の駒が間にある場合は田楽指しではない
|
421
|
+
end
|
422
|
+
else
|
423
|
+
# 駒がない場合はさらに奥に進む
|
424
|
+
end
|
425
|
+
else
|
426
|
+
break # 盤の外に出た場合は終わる
|
427
|
+
end
|
428
|
+
end
|
429
|
+
mode == :dengaku_matched
|
430
|
+
end
|
431
|
+
},
|
432
|
+
},
|
433
|
+
|
434
|
+
{
|
435
|
+
key: "ふんどしの桂",
|
436
|
+
description: "打った桂の2つ前の左右に自分より価値の高い相手の駒がある",
|
437
|
+
func: proc {
|
438
|
+
verify_if do
|
439
|
+
V.keima_vectors.all? do |e|
|
440
|
+
if v = soldier.relative_move_to(e)
|
441
|
+
if s = board[v]
|
442
|
+
if opponent?(s)
|
443
|
+
s.abs_weight > soldier.abs_weight
|
444
|
+
end
|
445
|
+
end
|
446
|
+
end
|
447
|
+
end
|
448
|
+
end
|
449
|
+
},
|
450
|
+
},
|
451
|
+
|
452
|
+
{
|
453
|
+
key: "土下座の歩",
|
454
|
+
description: nil,
|
455
|
+
func: proc {
|
456
|
+
#【条件1】8,9段目であること
|
457
|
+
verify_if { soldier.bottom_spaces < 2 }
|
458
|
+
|
459
|
+
#【条件2】一つ上が空であること
|
460
|
+
verify_if do
|
461
|
+
if v = soldier.relative_move_to(:up)
|
462
|
+
board.empty_cell?(v)
|
463
|
+
end
|
464
|
+
end
|
465
|
+
|
466
|
+
#【条件3】二つ上に相手の前に進める駒があること (成銀や馬があっても土下座の対象とする)
|
467
|
+
verify_if do
|
468
|
+
if v = soldier.relative_move_to(:up_up)
|
469
|
+
if s = board[v]
|
470
|
+
if opponent?(s)
|
471
|
+
s.piece.maesusumeru || s.promoted
|
472
|
+
end
|
473
|
+
end
|
474
|
+
end
|
475
|
+
end
|
476
|
+
},
|
477
|
+
},
|
478
|
+
|
479
|
+
{
|
480
|
+
key: "たたきの歩",
|
481
|
+
description: "取ると取り返せるような場合もたたきの歩として判別されるのであまり正しくない",
|
482
|
+
func: proc {
|
483
|
+
#【条件1】打った位置が1から4段目である
|
484
|
+
verify_if { soldier.top_spaces.between?(1, Dimension::Row.promotable_depth) }
|
485
|
+
|
486
|
+
#【条件2】相手が「成駒」または「飛金銀香玉」である
|
487
|
+
verify_if do
|
488
|
+
if v = soldier.relative_move_to(:up)
|
489
|
+
if s = board[v]
|
490
|
+
if opponent?(s)
|
491
|
+
s.promoted || s.piece.tatakare_target
|
492
|
+
end
|
493
|
+
end
|
494
|
+
end
|
495
|
+
end
|
496
|
+
|
497
|
+
#【条件3】打った歩に結びついている利きがないこと
|
498
|
+
# とするのが本当は正しいのだけど大変なので
|
499
|
+
# 「打った位置の後ろに自分の(前に進めることのできる)駒がないこと」だけを判定している
|
500
|
+
skip_if do
|
501
|
+
if v = soldier.relative_move_to(:down)
|
502
|
+
if s = board[v]
|
503
|
+
if own?(s)
|
504
|
+
s.promoted || s.piece.maesusumeru
|
505
|
+
end
|
506
|
+
end
|
507
|
+
end
|
508
|
+
end
|
509
|
+
|
510
|
+
#【条件4】連打の歩ではないこと :OPTIONAL:
|
511
|
+
skip_if do
|
512
|
+
if hand_log = executor.container.hand_logs[-2] # 前回の自分の手
|
513
|
+
if drop_hand = hand_log.drop_hand # 打った手
|
514
|
+
if s = drop_hand.soldier # 駒
|
515
|
+
Assertion.assert { own?(s) }
|
516
|
+
s.piece.key == :pawn && s.place == soldier.relative_move_to(:up)
|
517
|
+
end
|
518
|
+
end
|
519
|
+
end
|
520
|
+
end
|
521
|
+
},
|
522
|
+
},
|
523
|
+
|
524
|
+
{
|
525
|
+
key: "継ぎ歩",
|
526
|
+
description: "条件が成立しない方を先に判定した方が早めに打ち切れるので2手目1手目の順で見る",
|
527
|
+
func: proc {
|
528
|
+
# 0手前: ▲25歩打 継ぎ歩 したらここに来る
|
529
|
+
|
530
|
+
# 2手前: ▲24歩(25) 突き
|
531
|
+
verify_if do
|
532
|
+
if hand_log = executor.container.hand_logs[-2]
|
533
|
+
if s = hand_log.move_hand&.soldier # 最初を突き捨てとするため hand ではなく move_hand にしている
|
534
|
+
if s.piece.key == :pawn && s.normal? && own?(s)
|
535
|
+
s.place == soldier.relative_move_to(:up)
|
536
|
+
end
|
537
|
+
end
|
538
|
+
end
|
539
|
+
end
|
540
|
+
|
541
|
+
# 1手前: △24同歩 取らされる
|
542
|
+
verify_if do
|
543
|
+
if hand_log = executor.container.hand_logs[-1]
|
544
|
+
if s = hand_log.move_hand&.soldier
|
545
|
+
if s.piece.key == :pawn && s.normal? && opponent?(s)
|
546
|
+
s.place == soldier.relative_move_to(:up)
|
547
|
+
end
|
548
|
+
end
|
549
|
+
end
|
550
|
+
end
|
551
|
+
},
|
552
|
+
},
|
553
|
+
|
554
|
+
{
|
555
|
+
key: "連打の歩",
|
556
|
+
description: "",
|
557
|
+
func: proc {
|
558
|
+
# 0手前: ▲25歩打 継ぎ歩 したらここに来る
|
559
|
+
|
560
|
+
# 2手前: ▲24歩打
|
561
|
+
verify_if do
|
562
|
+
if hand_log = executor.container.hand_logs[-2]
|
563
|
+
if s = hand_log.drop_hand&.soldier
|
564
|
+
if s.piece.key == :pawn && own?(s)
|
565
|
+
s.place == soldier.relative_move_to(:up)
|
566
|
+
end
|
567
|
+
end
|
568
|
+
end
|
569
|
+
end
|
570
|
+
|
571
|
+
# 1手前: △24同何か 取らされる
|
572
|
+
verify_if do
|
573
|
+
if hand_log = executor.container.hand_logs[-1]
|
574
|
+
if s = hand_log.move_hand&.soldier
|
575
|
+
if opponent?(s)
|
576
|
+
s.place == soldier.relative_move_to(:up)
|
577
|
+
end
|
578
|
+
end
|
579
|
+
end
|
580
|
+
end
|
581
|
+
},
|
582
|
+
},
|
583
|
+
|
584
|
+
{
|
585
|
+
key: "継ぎ桂",
|
586
|
+
description: "継ぐのは前なので打った桂の2つ後ろの左右のどちらかに自分の桂がある",
|
587
|
+
func: proc {
|
588
|
+
verify_if do
|
589
|
+
V.tsugikei_vectors.any? do |e|
|
590
|
+
if v = soldier.relative_move_to(e)
|
591
|
+
if s = board[v]
|
592
|
+
s.piece.key == :knight && s.normal? && own?(s)
|
593
|
+
end
|
594
|
+
end
|
595
|
+
end
|
596
|
+
end
|
597
|
+
},
|
598
|
+
},
|
599
|
+
|
600
|
+
{
|
601
|
+
key: "入玉",
|
602
|
+
description: "玉が4段目から3段目に移動した",
|
603
|
+
func: proc {
|
604
|
+
verify_if { soldier.just_nyuugyoku? }
|
605
|
+
verify_if { origin_soldier.atoippo_nyuugyoku? }
|
606
|
+
},
|
607
|
+
},
|
608
|
+
|
609
|
+
{
|
610
|
+
key: "角不成",
|
611
|
+
description: "相手陣地に入るときと出るときの両方チェックする",
|
612
|
+
func: proc {
|
613
|
+
verify_if { origin_soldier.tsugini_nareru_on?(place) }
|
614
|
+
},
|
615
|
+
},
|
616
|
+
|
617
|
+
{
|
618
|
+
key: "飛車不成",
|
619
|
+
description: "角不成と同じ方法でよい",
|
620
|
+
func: proc {
|
621
|
+
verify_if { origin_soldier.tsugini_nareru_on?(place) }
|
622
|
+
},
|
623
|
+
},
|
624
|
+
]
|
625
|
+
end
|
626
|
+
end
|
627
|
+
end
|
@@ -11,8 +11,8 @@
|
|
11
11
|
手合割:平手
|
12
12
|
先手の戦法:力戦
|
13
13
|
後手の戦法:力戦
|
14
|
-
先手の手筋:土下座の歩, 連打の歩
|
15
|
-
|
14
|
+
先手の手筋:土下座の歩, たたきの歩, 連打の歩
|
15
|
+
後手の手筋:たたきの歩, 連打の歩
|
16
16
|
先手の備考:居飛車, 名人に定跡なし, 相居飛車, 対居飛車, 持久戦, 短手数
|
17
17
|
後手の備考:居飛車, 相居飛車, 対居飛車, 持久戦, 短手数
|
18
18
|
先手の棋風:王道
|
@@ -71,12 +71,14 @@
|
|
71
71
|
48 3三金(22) (00:03/00:01:13)
|
72
72
|
49 6六馬(44) (00:01/00:01:11)
|
73
73
|
50 8七歩打 (00:14/00:01:27)
|
74
|
+
*△手筋:たたきの歩
|
74
75
|
51 8七銀(88) (00:04/00:01:15)
|
75
76
|
52 8六歩打 (00:02/00:01:29)
|
76
77
|
*△手筋:連打の歩
|
77
78
|
53 9八銀(87) (00:00/00:01:15)
|
78
79
|
54 8七角打 (00:02/00:01:31)
|
79
80
|
55 8三歩打 (00:03/00:01:18)
|
81
|
+
*▲手筋:たたきの歩
|
80
82
|
56 8三飛(82) (00:02/00:01:33)
|
81
83
|
57 8四歩打 (00:02/00:01:20)
|
82
84
|
*▲手筋:連打の歩
|
@@ -11,6 +11,8 @@
|
|
11
11
|
手合割:平手
|
12
12
|
先手の戦法:力戦
|
13
13
|
後手の戦法:力戦
|
14
|
+
先手の手筋:遠見の角
|
15
|
+
後手の手筋:遠見の角
|
14
16
|
先手の備考:居飛車, 大駒全ブッチ, 名人に定跡なし, 相居飛車, 対居飛車, 背水の陣, 急戦, 短手数
|
15
17
|
後手の備考:居飛車, 大駒コンプリート, 相居飛車, 対居飛車, 急戦, 短手数
|
16
18
|
先手の棋風:王道
|
@@ -43,9 +45,11 @@
|
|
43
45
|
23 2二角成(77) (00:06/00:00:38)
|
44
46
|
24 2二金(32) (00:02/00:00:42)
|
45
47
|
25 7七角打 (00:02/00:00:40)
|
48
|
+
*▲手筋:遠見の角
|
46
49
|
26 8九飛成(86) (00:19/00:01:01)
|
47
50
|
27 2二角成(77) (00:01/00:00:41)
|
48
51
|
28 3三角打 (00:06/00:01:07)
|
52
|
+
*△手筋:遠見の角
|
49
53
|
29 3三馬(22) (00:50/00:01:31)
|
50
54
|
30 3三桂(21) (00:01/00:01:08)
|
51
55
|
31 2二角打 (00:01/00:01:32)
|
data/lib/bioshogi/analysis//345/202/231/350/200/203//345/257/276/347/251/264/347/206/212.kif
CHANGED
@@ -13,12 +13,12 @@
|
|
13
13
|
後手の戦法:対振り持久戦
|
14
14
|
先手の囲い:振り飛車穴熊
|
15
15
|
後手の囲い:居飛車銀冠
|
16
|
-
|
16
|
+
先手の手筋:たたきの歩, 垂れ歩
|
17
17
|
後手の手筋:土下座の歩, 桂頭の銀
|
18
18
|
先手の備考:振り飛車, 穴熊, 大駒全ブッチ, 対居飛車, 対抗形, 持久戦, 短手数
|
19
19
|
後手の備考:居飛車, 対振り飛車, 対穴熊, 大駒コンプリート, 対抗形, 穴熊の姿焼き, 持久戦, 短手数
|
20
20
|
先手の棋風:王道
|
21
|
-
|
21
|
+
後手の棋風:王道
|
22
22
|
手数----指手---------消費時間--
|
23
23
|
1 7六歩(77) (00:03/00:00:03)
|
24
24
|
2 3四歩(33) (00:00/00:00:00)
|
@@ -89,6 +89,7 @@
|
|
89
89
|
59 4五銀(56) (00:00/00:01:01)
|
90
90
|
60 4四銀(55) (00:03/00:01:08)
|
91
91
|
61 5三歩打 (00:08/00:01:09)
|
92
|
+
*▲手筋:たたきの歩
|
92
93
|
62 7二飛(52) (00:03/00:01:11)
|
93
94
|
63 4四銀(45) (00:02/00:01:11)
|
94
95
|
64 4四馬(99) (00:02/00:01:13)
|