九九を50乗しようぜ☆(^~^)<その3>

読了目安:51分

<前回の続き>

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 反例を 18個ぐらい かいつまんで 見ていこうぜ☆?」

反例1

[11 18:624][16 13:624][11 13:624]=[16 18:249(624)]x
   1   624   249   376   625   376   249   624     1     0     1  <624>  249   376  [625] [376] <249> [624] [  1]
 624   376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376] [624]
 249   376     1   624   625   624     1   376   249     0   249   376     1   624  [625] [624] [  1] [376] [249]
 376   624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624] [376]
 625     0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0] [625]
 376   624   624   376     0   376   624   624   376     0   376  <624>  624   376     0   376  <624>  624   376
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
   0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1   624   249   376  [625] [376] [249] [624] [  1]    0     1   624   249   376   625   376   249   624     1
 624   376   376   624  [  0] [624] [376] [376] [624]    0   624   376   376   624     0   624   376   376   624
 249   376     1   624  [625] [624] [  1] [376] [249]    0   249   376     1   624   625   624     1   376   249
 376   624   624   376  [  0] [376] [624] [624] [376]    0   376   624   624   376     0   376   624   624   376
 625     0   625     0  [625] [  0] [625] [  0] [625]    0   625     0   625     0   625     0   625     0   625
 376   624   624   376     0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1

KIFUWARABE_80x100x8_01_Futu.gif
「 624×624×624 は 249と624のうち好きな方を任意に選択できるな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 よくできた反例だぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 次の反例を」

反例2

[13 16:624][16 13:624][13 13:376]=[16 16:1(376)]x
   1   624   249   376   625   376   249   624     1     0     1   624   249   376  [625] [376] [249] [624] [  1]
 624   376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376] [624]
 249   376     1   624   625   624     1   376   249     0   249   376     1  <624> [625] [624] <  1> [376] [249]
 376   624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624] [376]
 625     0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0] [625]
 376   624   624   376     0   376   624   624   376     0   376   624   624  <376>    0   376  <624>  624   376
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
   0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1   624   249   376  [625] [376] [249] [624] [  1]    0     1   624   249   376   625   376   249   624     1
 624   376   376   624  [  0] [624] [376] [376] [624]    0   624   376   376   624     0   624   376   376   624
 249   376     1   624  [625] [624] [  1] [376] [249]    0   249   376     1   624   625   624     1   376   249
 376   624   624   376  [  0] [376] [624] [624] [376]    0   376   624   624   376     0   376   624   624   376
 625     0   625     0  [625] [  0] [625] [  0] [625]    0   625     0   625     0   625     0   625     0   625
 376   624   624   376     0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1

KIFUWARABE_80x100x8_01_Futu.gif
「 624×624×376 は 1と376のうち好きな方を任意に選択できるな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 これも よくできた反例だぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 次の反例を」

反例3

[13 18:376][18 13:376][13 13:376]=[18 18:1(376)]x
   1   624   249   376   625   376   249   624     1     0     1   624   249  <376> [625] [376] [249] [624] <  1>
 624   376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376] [624]
 249   376     1   624   625   624     1   376   249     0   249   376     1   624  [625] [624] [  1] [376] [249]
 376   624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624] [376]
 625     0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0] [625]
 376   624   624   376     0   376   624   624   376     0   376   624   624  <376>    0   376   624   624  <376>
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
   0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1   624   249   376  [625] [376] [249] [624] [  1]    0     1   624   249   376   625   376   249   624     1
 624   376   376   624  [  0] [624] [376] [376] [624]    0   624   376   376   624     0   624   376   376   624
 249   376     1   624  [625] [624] [  1] [376] [249]    0   249   376     1   624   625   624     1   376   249
 376   624   624   376  [  0] [376] [624] [624] [376]    0   376   624   624   376     0   376   624   624   376
 625     0   625     0  [625] [  0] [625] [  0] [625]    0   625     0   625     0   625     0   625     0   625
 376   624   624   376     0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1

KIFUWARABE_80x100x8_01_Futu.gif
「 376×376×376 は 1と376のうち好きな方を任意に選択できるな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 3乗は 嫌になるな☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 次の反例を」

反例4

[11 16:376][16 11:376][11 11:376]=[16 16:1(376)]x
   1   624   249   376   625   376   249   624     1     0     1   624   249   376  [625] [376] [249] [624] [  1]
 624   376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376] [624]
 249   376     1   624   625   624     1   376   249     0   249  <376>    1   624  [625] [624] <  1> [376] [249]
 376   624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624] [376]
 625     0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0] [625]
 376   624   624   376     0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624  <376>  376   624     0   624  <376>  376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
   0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1   624   249   376  [625] [376] [249] [624] [  1]    0     1   624   249   376   625   376   249   624     1
 624   376   376   624  [  0] [624] [376] [376] [624]    0   624   376   376   624     0   624   376   376   624
 249   376     1   624  [625] [624] [  1] [376] [249]    0   249   376     1   624   625   624     1   376   249
 376   624   624   376  [  0] [376] [624] [624] [376]    0   376   624   624   376     0   376   624   624   376
 625     0   625     0  [625] [  0] [625] [  0] [625]    0   625     0   625     0   625     0   625     0   625
 376   624   624   376     0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1

KIFUWARABE_80x100x8_01_Futu.gif
「 これも 376の3乗だぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 まあ、1 は掛けた相手になる数だしな☆
点対称であることを攻められると こうなる☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 次の反例を」

反例5

[11 18:624][18 11:624][11 11:376]=[18 18:1(376)]x
   1   624   249   376   625   376   249   624     1     0     1  <624>  249   376  [625] [376] [249] [624] <  1>
 624   376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376] [624]
 249   376     1   624   625   624     1   376   249     0   249   376     1   624  [625] [624] [  1] [376] [249]
 376   624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624] [376]
 625     0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0] [625]
 376   624   624   376     0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624  <376>  376   624     0   624   376   376  <624>
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
   0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1   624   249   376  [625] [376] [249] [624] [  1]    0     1   624   249   376   625   376   249   624     1
 624   376   376   624  [  0] [624] [376] [376] [624]    0   624   376   376   624     0   624   376   376   624
 249   376     1   624  [625] [624] [  1] [376] [249]    0   249   376     1   624   625   624     1   376   249
 376   624   624   376  [  0] [376] [624] [624] [376]    0   376   624   624   376     0   376   624   624   376
 625     0   625     0  [625] [  0] [625] [  0] [625]    0   625     0   625     0   625     0   625     0   625
 376   624   624   376     0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1

KIFUWARABE_80x100x8_01_Futu.gif
「 これも 624の2乗×376だぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 1 は弱点だよな☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 次の反例を」

反例6

[13 16:624][18 11:624][13 11:624]=[18 16:249(624)]x
   1   624   249   376   625   376   249   624     1     0     1   624   249   376  [625] [376] [249] [624] [  1]
 624   376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376] [624]
 249   376     1   624   625   624     1   376   249     0   249   376     1  <624> [625] [624] [  1] [376] <249>
 376   624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624] [376]
 625     0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0] [625]
 376   624   624   376     0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624   376   376  <624>    0   624   376   376  <624>
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
   0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1   624   249   376  [625] [376] [249] [624] [  1]    0     1   624   249   376   625   376   249   624     1
 624   376   376   624  [  0] [624] [376] [376] [624]    0   624   376   376   624     0   624   376   376   624
 249   376     1   624  [625] [624] [  1] [376] [249]    0   249   376     1   624   625   624     1   376   249
 376   624   624   376  [  0] [376] [624] [624] [376]    0   376   624   624   376     0   376   624   624   376
 625     0   625     0  [625] [  0] [625] [  0] [625]    0   625     0   625     0   625     0   625     0   625
 376   624   624   376     0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1

KIFUWARABE_80x100x8_01_Futu.gif
「 624の3乗は 最初の反例と同じだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 これも 1 が からむやつな☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 次の反例を」

反例7

[1 8:624][6 3:624][1 3:624]=[6 8:249(624)]x
   1   624   249   376   625   376   249   624     1     0     1   624   249   376  [625] [376] [249] [624] [  1]
 624   376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376] [624]
 249   376     1   624   625   624     1   376   249     0   249   376     1   624  [625] [624] [  1] [376] [249]
 376   624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624] [376]
 625     0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0] [625]
 376   624   624   376     0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
   0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1  <624>  249   376  [625] [376] <249> [624] [  1]    0     1   624   249   376   625   376   249   624     1
 624   376   376   624  [  0] [624] [376] [376] [624]    0   624   376   376   624     0   624   376   376   624
 249   376     1   624  [625] [624] [  1] [376] [249]    0   249   376     1   624   625   624     1   376   249
 376   624   624   376  [  0] [376] [624] [624] [376]    0   376   624   624   376     0   376   624   624   376
 625     0   625     0  [625] [  0] [625] [  0] [625]    0   625     0   625     0   625     0   625     0   625
 376  <624>  624   376     0   376  <624>  624   376     0   376   624   624   376     0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1

KIFUWARABE_80x100x8_01_Futu.gif
「 これも 右上の九九でやった 最初の反例 を 左下の九九でやってるだけだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 じゃあ そういうの これからも出てくるだろ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 次の反例を」

反例8

(反例 8)
[1 18:624][16 3:624][1 3:624]=[16 18:249(624)]x
   1  <624>  249   376   625   376   249   624     1     0     1   624   249   376  [625] [376] <249> [624] [  1]
 624   376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376] [624]
 249   376     1   624   625   624     1   376   249     0   249   376     1   624  [625] [624] [  1] [376] [249]
 376   624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624] [376]
 625     0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0] [625]
 376   624   624   376     0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
   0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1   624   249   376  [625] [376] [249] [624] [  1]    0     1   624   249   376   625   376   249   624     1
 624   376   376   624  [  0] [624] [376] [376] [624]    0   624   376   376   624     0   624   376   376   624
 249   376     1   624  [625] [624] [  1] [376] [249]    0   249   376     1   624   625   624     1   376   249
 376   624   624   376  [  0] [376] [624] [624] [376]    0   376   624   624   376     0   376   624   624   376
 625     0   625     0  [625] [  0] [625] [  0] [625]    0   625     0   625     0   625     0   625     0   625
 376  <624>  624   376     0   376   624   624   376     0   376   624   624   376     0   376  <624>  624   376
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1

KIFUWARABE_80x100x8_01_Futu.gif
「 これも 624の3乗 だぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 この時点で 反例1~8を全部埋める方法は 思いついているが、
正しい例も潰してしまいそうなのが 悩みだぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 次の反例を」

反例9

(反例 9)
[3 6:624][6 3:624][3 3:376]=[6 6:1(376)]x
   1   624   249   376   625   376   249   624     1     0     1   624   249   376  [625] [376] [249] [624] [  1]
 624   376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376] [624]
 249   376     1   624   625   624     1   376   249     0   249   376     1   624  [625] [624] [  1] [376] [249]
 376   624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624] [376]
 625     0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0] [625]
 376   624   624   376     0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
   0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1   624   249   376  [625] [376] [249] [624] [  1]    0     1   624   249   376   625   376   249   624     1
 624   376   376   624  [  0] [624] [376] [376] [624]    0   624   376   376   624     0   624   376   376   624
 249   376     1  <624> [625] [624] <  1> [376] [249]    0   249   376     1   624   625   624     1   376   249
 376   624   624   376  [  0] [376] [624] [624] [376]    0   376   624   624   376     0   376   624   624   376
 625     0   625     0  [625] [  0] [625] [  0] [625]    0   625     0   625     0   625     0   625     0   625
 376   624   624  <376>    0   376  <624>  624   376     0   376   624   624   376     0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1

KIFUWARABE_80x100x8_01_Futu.gif
「 反例2と同様の 624の2乗×376 だぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 じゃあ 既存ルールを拡張して 反例全部 潰すかだぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 まだ反例は 9個 残っているぜ☆ そんなこと できるのかだぜ☆?」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 なんで途中で判断できるの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 事実が見えたわけではない☆ 新しい仮説が思いついただけだぜ☆
良い仮説を お見せしよう☆」

def is_red_zone(x, y):
    """
    対角線上に現れる、九九エリアの右上の区画。
    """

    # 1辺10を1区画と考えたときの、対角線上にある区画。
    x3 = x // 10
    y3 = y // 10
    if(x3 == y3):
        x2 = x % 10
        y2 = y % 10
        if(4 <= x2 and x2 <= 8 and 4 <= y2 and y2 <= 8):
            # 九九エリアの右上の区画。
            return True
        elif(0 <= x2 and x2 <= 3 and 0 <= y2 and y2 <= 3):
            # 九九エリアの左下の区画。
            return True

    return False

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 赤枠の位置を変える☆ 真実は それだけだぜ☆」

   1   624   249   376   625   376   249   624     1     0     1   624   249   376  [625] [376] [249] [624] [  1]
 624   376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376] [624]
 249   376     1   624   625   624     1   376   249     0   249   376     1   624  [625] [624] [  1] [376] [249]
 376   624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624] [376]
 625     0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0] [625]
 376   624   624   376     0   376   624   624   376     0  [376] [624] [624] [376]    0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0  [249] [376] [  1] [624]  625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0  [624] [376] [376] [624]    0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0  [  1] [624] [249] [376]  625   376   249   624     1
   0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1   624   249   376  [625] [376] [249] [624] [  1]    0     1   624   249   376   625   376   249   624     1
 624   376   376   624  [  0] [624] [376] [376] [624]    0   624   376   376   624     0   624   376   376   624
 249   376     1   624  [625] [624] [  1] [376] [249]    0   249   376     1   624   625   624     1   376   249
 376   624   624   376  [  0] [376] [624] [624] [376]    0   376   624   624   376     0   376   624   624   376
 625     0   625     0  [625] [  0] [625] [  0] [625]    0   625     0   625     0   625     0   625     0   625
[376] [624] [624] [376]    0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
[249] [376] [  1] [624]  625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
[624] [376] [376] [624]    0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
[  1] [624] [249] [376]  625   376   249   624     1     0     1   624   249   376   625   376   249   624     1

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 もっと かっちりとした赤枠の位置もあると思うが テーブルを変えるのが めんどくさいので 対処療法とした☆」

# 正方形縛り
Info    : Succeed  16
Info    : Failed    0
Info    : Rate    1.0000

# 長方形
Info    : Succeed 1256
Info    : Failed  240
Info    : Rate    0.8396

KIFUWARABE_80x100x8_01_Futu.gif
「 お父ん、成功例 16 は全てのケースを網羅できてないだろう☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 赤枠をでかくしすぎたんじゃないの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 じゃあ ちょっと 小さくするかだぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 そんなんで いいのか……☆」

def is_red_zone(x, y):
    """
    対角線上に現れる、九九エリアの右上の区画。
    """

    # 1辺10を1区画と考えたときの、対角線上にある区画。
    x3 = x // 10
    y3 = y // 10
    if(x3 == y3):
        x2 = x % 10
        y2 = y % 10
        if(4 <= x2 and x2 <= 8 and 4 <= y2 and y2 <= 8):
            # 九九エリアの右上の区画。
            return True
        elif(1 <= x2 and x2 <= 3 and 1 <= y2 and y2 <= 3):
            # 九九エリアの左下の区画。一番左下を除く。
            return True

    return False
   1   624   249   376   625   376   249   624     1     0     1   624   249   376  [625] [376] [249] [624] [  1]
 624   376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376] [624]
 249   376     1   624   625   624     1   376   249     0   249   376     1   624  [625] [624] [  1] [376] [249]
 376   624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624] [376]
 625     0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0] [625]
 376   624   624   376     0   376   624   624   376     0   376  [624] [624] [376]    0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249  [376] [  1] [624]  625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624  [376] [376] [624]    0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
   0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1   624   249   376  [625] [376] [249] [624] [  1]    0     1   624   249   376   625   376   249   624     1
 624   376   376   624  [  0] [624] [376] [376] [624]    0   624   376   376   624     0   624   376   376   624
 249   376     1   624  [625] [624] [  1] [376] [249]    0   249   376     1   624   625   624     1   376   249
 376   624   624   376  [  0] [376] [624] [624] [376]    0   376   624   624   376     0   376   624   624   376
 625     0   625     0  [625] [  0] [625] [  0] [625]    0   625     0   625     0   625     0   625     0   625
 376  [624] [624] [376]    0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249  [376] [  1] [624]  625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624  [376] [376] [624]    0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
# 正方形縛り
Info    : Succeed  64
Info    : Failed    0
Info    : Rate    1.0000

# 長方形
Info    : Succeed 1572
Info    : Failed  252
Info    : Rate    0.8618

KIFUWARABE_80x100x8_01_Futu.gif
「 なんで 長方形のレートが上がってるんだぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 外枠は ハズレが多いんじゃないの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 じゃあ ちょっと 削るかだぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 そんなんで いいのか……☆」

def is_red_zone(x, y):
    """
    対角線上に現れる、九九エリアの右上の区画。
    """

    # 1辺10を1区画と考えたときの、対角線上にある区画。
    x3 = x // 10
    y3 = y // 10
    if(x3 == y3):
        x2 = x % 10
        y2 = y % 10
        if(4 <= x2 and x2 <= 7 and 4 <= y2 and y2 <= 7):
            # 九九エリアの右上の区画。大外を除く。
            return True
        elif(1 <= x2 and x2 <= 3 and 1 <= y2 and y2 <= 3):
            # 九九エリアの左下の区画。大外を除く。
            return True

    return False
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
 624   376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376]  624
 249   376     1   624   625   624     1   376   249     0   249   376     1   624  [625] [624] [  1] [376]  249
 376   624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624]  376
 625     0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0]  625
 376   624   624   376     0   376   624   624   376     0   376  [624] [624] [376]    0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249  [376] [  1] [624]  625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624  [376] [376] [624]    0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
   0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
 624   376   376   624  [  0] [624] [376] [376]  624     0   624   376   376   624     0   624   376   376   624
 249   376     1   624  [625] [624] [  1] [376]  249     0   249   376     1   624   625   624     1   376   249
 376   624   624   376  [  0] [376] [624] [624]  376     0   376   624   624   376     0   376   624   624   376
 625     0   625     0  [625] [  0] [625] [  0]  625     0   625     0   625     0   625     0   625     0   625
 376  [624] [624] [376]    0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249  [376] [  1] [624]  625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624  [376] [376] [624]    0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
# 正方形縛り
Info    : Succeed  60
Info    : Failed    0
Info    : Rate    1.0000

# 長方形
Info    : Succeed 1272
Info    : Failed  120
Info    : Rate    0.9138

KIFUWARABE_80x100x8_01_Futu.gif
「 うわっ、長方形のレートが上がってきた、正方形は下がった☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 外枠は どうとでも 当たりやすいのよ」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 削りゃ レートが上がるのかだぜ☆?」

def is_red_zone(x, y):
    """
    対角線上に現れる、九九エリアの右上の区画。
    """

    # 1辺10を1区画と考えたときの、対角線上にある区画。
    x3 = x // 10
    y3 = y // 10
    if(x3 == y3):
        x2 = x % 10
        y2 = y % 10
        if(4 <= x2 and x2 <= 7 and 4 <= y2 and y2 <= 7):
            # 九九エリアの右上の区画。大外を除く。
            return True
        elif(2 <= x2 and x2 <= 3 and 2 <= y2 and y2 <= 3):
            # 九九エリアの左下の区画。
            return True
        elif(x2 == 1 and y2 == 1):
            # 九九エリアの左下の区画。大外を除く。
            return True

    return False
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
 624   376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376]  624
 249   376     1   624   625   624     1   376   249     0   249   376     1   624  [625] [624] [  1] [376]  249
 376   624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624]  376
 625     0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0]  625
 376   624   624   376     0   376   624   624   376     0   376   624  [624] [376]    0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376  [  1] [624]  625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624  [376]  376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
   0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
 624   376   376   624  [  0] [624] [376] [376]  624     0   624   376   376   624     0   624   376   376   624
 249   376     1   624  [625] [624] [  1] [376]  249     0   249   376     1   624   625   624     1   376   249
 376   624   624   376  [  0] [376] [624] [624]  376     0   376   624   624   376     0   376   624   624   376
 625     0   625     0  [625] [  0] [625] [  0]  625     0   625     0   625     0   625     0   625     0   625
 376   624  [624] [376]    0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249   376  [  1] [624]  625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624  [376]  376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
# 正方形縛り
Info    : Succeed  70
Info    : Failed    0
Info    : Rate    1.0000

# 長方形
Info    : Succeed 1192
Info    : Failed  132
Info    : Rate    0.9003

KIFUWARABE_80x100x8_01_Futu.gif
「 ウーム☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 機械学習すれば 答えは出るんじゃないの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 思た☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 思たが あと30分で寝たい☆ 反例を10個ほど 見てみようぜ☆?」

その2 反例1

[13 16:624][16 0:249][13 0:376]=[16 16:1(376)]x
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
 624   376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376]  624
 249   376     1   624   625   624     1   376   249     0   249   376     1  <624> [625] [624] <  1> [376]  249
 376   624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624]  376
 625     0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0]  625
 376   624   624   376     0   376   624   624   376     0   376   624  [624] [376]    0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376  [  1] [624]  625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624  [376]  376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
   0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
 624   376   376   624  [  0] [624] [376] [376]  624     0   624   376   376   624     0   624   376   376   624
 249   376     1   624  [625] [624] [  1] [376]  249     0   249   376     1   624   625   624     1   376   249
 376   624   624   376  [  0] [376] [624] [624]  376     0   376   624   624   376     0   376   624   624   376
 625     0   625     0  [625] [  0] [625] [  0]  625     0   625     0   625     0   625     0   625     0   625
 376   624  [624] [376]    0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249   376  [  1] [624]  625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624  [376]  376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249  <376>  625   376  <249>  624     1

KIFUWARABE_80x100x8_01_Futu.gif
「 出力は スクロールして流れていったので、分かるところだけだぜ☆
大外枠を利用した 624×249×376 で答え 1 の間違いだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 また 1 ……☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 その 1 を防ぐための 正方形と 対角線 だったんじゃないの?」

その2 反例2

[13 16:624][14 0:625][13 0:376]=[14 16:625(0)]x
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
 624   376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376]  624
 249   376     1   624   625   624     1   376   249     0   249   376     1  <624> <625> [624] [  1] [376]  249
 376   624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624]  376
 625     0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0]  625
 376   624   624   376     0   376   624   624   376     0   376   624  [624] [376]    0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376  [  1] [624]  625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624  [376]  376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
   0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
 624   376   376   624  [  0] [624] [376] [376]  624     0   624   376   376   624     0   624   376   376   624
 249   376     1   624  [625] [624] [  1] [376]  249     0   249   376     1   624   625   624     1   376   249
 376   624   624   376  [  0] [376] [624] [624]  376     0   376   624   624   376     0   376   624   624   376
 625     0   625     0  [625] [  0] [625] [  0]  625     0   625     0   625     0   625     0   625     0   625
 376   624  [624] [376]    0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249   376  [  1] [624]  625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624  [376]  376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249  <376> <625>  376   249   624     1

KIFUWARABE_80x100x8_01_Futu.gif
「 これも大外枠を利用している☆ 624×625×376 で答え 625 の間違いだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 大外枠は 当てやすいのかだぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 次の反例を」

その2 反例3

[11 16:376][16 0:249][11 0:624]=[16 16:1(376)]x
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
 624   376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376]  624
 249   376     1   624   625   624     1   376   249     0   249  <376>    1   624  [625] [624] <  1> [376]  249
 376   624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624]  376
 625     0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0]  625
 376   624   624   376     0   376   624   624   376     0   376   624  [624] [376]    0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376  [  1] [624]  625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624  [376]  376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
   0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
 624   376   376   624  [  0] [624] [376] [376]  624     0   624   376   376   624     0   624   376   376   624
 249   376     1   624  [625] [624] [  1] [376]  249     0   249   376     1   624   625   624     1   376   249
 376   624   624   376  [  0] [376] [624] [624]  376     0   376   624   624   376     0   376   624   624   376
 625     0   625     0  [625] [  0] [625] [  0]  625     0   625     0   625     0   625     0   625     0   625
 376   624  [624] [376]    0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249   376  [  1] [624]  625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624  [376]  376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1  <624>  249   376   625   376  <249>  624     1

KIFUWARABE_80x100x8_01_Futu.gif
「 これも大外枠を利用している☆ 376×249×624 で答え 1 の間違いだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 大外枠を防いでくる☆」

def is_red_zone(x, y):
    """
    対角線上に現れる、九九エリアの右上の区画。
    """

    if (y == 0 and 0 < x) or (x == 0 and 0 < y):
        # 原点を除く、全左辺と全底辺を除く。
        return True

    # 1辺10を1区画と考えたときの、対角線上にある区画。
    x3 = x // 10
    y3 = y // 10
    if(x3 == y3):
        x2 = x % 10
        y2 = y % 10
        if 4 <= x2 and x2 <= 7 and 4 <= y2 and y2 <= 7:
            # 九九エリアの右上の区画。大外を除く。
            return True
        elif 2 <= x2 and x2 <= 3 and 2 <= y2 and y2 <= 3:
            # 九九エリアの左下の区画。
            return True
        elif x2 == 1 and y2 == 1:
            # 九九エリアの左下の区画。大外を除く。
            return True

    return False
[  1]  624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
[624]  376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376]  624
[249]  376     1   624   625   624     1   376   249     0   249   376     1   624  [625] [624] [  1] [376]  249
[376]  624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624]  376
[625]    0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0]  625
[376]  624   624   376     0   376   624   624   376     0   376   624  [624] [376]    0   376   624   624   376
[249]  376     1   624   625   624     1   376   249     0   249   376  [  1] [624]  625   624     1   376   249
[624]  376   376   624     0   624   376   376   624     0   624  [376]  376   624     0   624   376   376   624
[  1]  624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
[  0]    0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
[  1]  624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
[624]  376   376   624  [  0] [624] [376] [376]  624     0   624   376   376   624     0   624   376   376   624
[249]  376     1   624  [625] [624] [  1] [376]  249     0   249   376     1   624   625   624     1   376   249
[376]  624   624   376  [  0] [376] [624] [624]  376     0   376   624   624   376     0   376   624   624   376
[625]    0   625     0  [625] [  0] [625] [  0]  625     0   625     0   625     0   625     0   625     0   625
[376]  624  [624] [376]    0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
[249]  376  [  1] [624]  625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
[624] [376]  376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1  [624] [249] [376] [625] [376] [249] [624] [  1] [  0] [  1] [624] [249] [376] [625] [376] [249] [624] [  1]
# 正方形縛り
Info    : Succeed  48
Info    : Failed    0
Info    : Rate    1.0000

# 長方形
Info    : Succeed 858
Info    : Failed   88
Info    : Rate    0.9070

KIFUWARABE_80x100x8_01_Futu.gif
「 長方形で 間違いが88個しかないというのは いいとこ攻めてる のでは☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 レートは 微々たるものしか 上がってないけどな☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 反例を」

その3 反例1

[11 16:376][16 1:376][11 1:376]=[16 16:1(376)]x
[  1]  624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
[624]  376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376]  624
[249]  376     1   624   625   624     1   376   249     0   249  <376>    1   624  [625] [624] <  1> [376]  249
[376]  624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624]  376
[625]    0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0]  625
[376]  624   624   376     0   376   624   624   376     0   376   624  [624] [376]    0   376   624   624   376
[249]  376     1   624   625   624     1   376   249     0   249   376  [  1] [624]  625   624     1   376   249
[624]  376   376   624     0   624   376   376   624     0   624  [376]  376   624     0   624   376   376   624
[  1]  624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
[  0]    0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
[  1]  624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
[624]  376   376   624  [  0] [624] [376] [376]  624     0   624   376   376   624     0   624   376   376   624
[249]  376     1   624  [625] [624] [  1] [376]  249     0   249   376     1   624   625   624     1   376   249
[376]  624   624   376  [  0] [376] [624] [624]  376     0   376   624   624   376     0   376   624   624   376
[625]    0   625     0  [625] [  0] [625] [  0]  625     0   625     0   625     0   625     0   625     0   625
[376]  624  [624] [376]    0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
[249]  376  [  1] [624]  625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
[624] [376]  376   624     0   624   376   376   624     0   624  <376>  376   624     0   624  <376>  376   624
   1  [624] [249] [376] [625] [376] [249] [624] [  1] [  0] [  1] [624] [249] [376] [625] [376] [249] [624] [  1]

KIFUWARABE_80x100x8_01_Futu.gif
「 大外を利用した 376×376×376 で答え 1 の間違いだぜ☆
376 は 何乗しても 376 だな☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 1 を防ぐのは 正方形 しか なくないかだぜ☆?」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 一番右上の 1 を赤枠にすれば 正方形の成功が 1 増えるんじゃないの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 細かいところを 稼ぎに行くな☆ プロか……☆」

[  1]  624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624  [  1]
[624]  376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376]  624
[249]  376     1   624   625   624     1   376   249     0   249   376     1   624  [625] [624] [  1] [376]  249
[376]  624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624]  376
[625]    0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0]  625
[376]  624   624   376     0   376   624   624   376     0   376   624  [624] [376]    0   376   624   624   376
[249]  376     1   624   625   624     1   376   249     0   249   376  [  1] [624]  625   624     1   376   249
[624]  376   376   624     0   624   376   376   624     0   624  [376]  376   624     0   624   376   376   624
[  1]  624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
[  0]    0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
[  1]  624   249   376   625   376   249   624  [  1]    0     1   624   249   376   625   376   249   624     1
[624]  376   376   624  [  0] [624] [376] [376]  624     0   624   376   376   624     0   624   376   376   624
[249]  376     1   624  [625] [624] [  1] [376]  249     0   249   376     1   624   625   624     1   376   249
[376]  624   624   376  [  0] [376] [624] [624]  376     0   376   624   624   376     0   376   624   624   376
[625]    0   625     0  [625] [  0] [625] [  0]  625     0   625     0   625     0   625     0   625     0   625
[376]  624  [624] [376]    0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
[249]  376  [  1] [624]  625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
[624] [376]  376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1  [624] [249] [376] [625] [376] [249] [624] [  1] [  0] [  1] [624] [249] [376] [625] [376] [249] [624] [  1]

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 一番右上というのは 観測者により不定だから、九九の右上 と考えるのが自然だろう☆」

# 正方形縛り
Info    : Succeed  42
Info    : Failed    0
Info    : Rate    1.0000

# 長方形
Info    : Succeed 854
Info    : Failed  180
Info    : Rate    0.8259

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 減った……☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 被りが減ったんじゃないの?」

KIFUWARABE_80x100x8_01_Futu.gif
「 長方形の フェイルドが増えるから 止めてくれだぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 長方形の フェイルドを ざっと眺めてみたが、長方形、無理だろ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 正方形の サクシードを増やす方も 当たってみるかだぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 おなじ種類のサクシードばかり増えても意味ないのよ?
網羅律は 表示できないの? カバレッジ!」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 次はカバレッジの実装だな☆ 寝よ☆」

じめじめ次の日

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 パワフルシックス数は 6つ☆ 左上、右下、左下、右上 で1かたまりとし、
組み合わせではなく 順列で 網羅しようぜ☆ 6×6×6×6 は……、2096かだぜ☆?」

KIFUWARABE_80x100x8_01_Futu.gif
「 1296では☆?」

pow6 = [0, 1, 249, 376, 624, 625]

cover_dict = {}

for tl in range(0, 6):
    for br in range(0, 6):
        for bl in range(0, 6):
            for tr in range(0, 6):
                key = ((pow6[tl]*1000 + pow6[br]) *
                       1000 + pow6[bl])*1000 + pow6[tr]
                value = 0
                cover_dict[key] = value

print("Size    : {}".format(len(cover_dict)))
print("Info    : Finished.")
Size    : 1296

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 こんな感じで 網羅 を調べるための表に なってるのかだぜ☆?」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 成功の数と 失敗の数を 覚えさせておきたくない?」

pow6 = [0, 1, 249, 376, 624, 625]

cover_dict = {}

for tl in range(0, 6):
    for br in range(0, 6):
        for bl in range(0, 6):
            for tr in range(0, 6):
                key = ((pow6[tl]*1000 + pow6[br]) *
                       1000 + pow6[bl])*1000 + pow6[tr]
                value = {"suceed": 0, "failed": 0}
                cover_dict[key] = value

print("Size    : {}".format(len(cover_dict)))
print("Info    : Finished.")

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 2つの数を覚えておくことは、多分できるんだろ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 表示はできるのかだぜ☆?」

for key, value in cover_dict.items():
    print("{}: {}".format(key, value))
# 前略
625625624624: {'suceed': 0, 'failed': 0}
625625624625: {'suceed': 0, 'failed': 0}
625625625000: {'suceed': 0, 'failed': 0}
625625625001: {'suceed': 0, 'failed': 0}
625625625249: {'suceed': 0, 'failed': 0}
625625625376: {'suceed': 0, 'failed': 0}
625625625624: {'suceed': 0, 'failed': 0}
625625625625: {'suceed': 0, 'failed': 0}

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 これで できるんじゃないか☆?」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 カバー率を調べたいから、サクシードだけしている項目の数、フェイルドだけしている項目の数、
両方している項目の数、どちらもしていない項目の数 は出せる?」

sum_succeed = 0
sum_failed = 0
sum_both = 0
sum_none = 0
for key, value in cover_dict.items():
    if 0 < value["succeed"] and 0 < value["failed"]:
        sum_both += 1
    elif 0 < value["succeed"]:
        sum_succeed += 1
    elif 0 < value["failed"]:
        sum_succeed += 1
    else:
        sum_none += 1

    print("{}: {}".format(key, value))

print("Succeed : {}".format(sum_succeed))
print("Failed  : {}".format(sum_failed))
print("Both    : {}".format(sum_both))
print("None    : {}".format(sum_none))

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 これで どうだぜ☆?」

KIFUWARABE_80x100x8_01_Futu.gif
「 succeed と failed にランダムに0か1を放り込んでみろだぜ☆」

import random
pow6 = [0, 1, 249, 376, 624, 625]
cover_dict = {}
for tl in range(0, 6):
    for br in range(0, 6):
        for bl in range(0, 6):
            for tr in range(0, 6):
                key = ((pow6[tl]*1000 + pow6[br]) *
                       1000 + pow6[bl])*1000 + pow6[tr]
                value = {"succeed": random.randint(
                    0, 1), "failed": random.randint(0, 1)}
                cover_dict[key] = value

print("Size    : {}".format(len(cover_dict)))
# 前略
625625376624: {'succeed': 0, 'failed': 1}
625625376625: {'succeed': 1, 'failed': 1}
625625624000: {'succeed': 1, 'failed': 0}
625625624001: {'succeed': 1, 'failed': 0}
625625624249: {'succeed': 0, 'failed': 0}
625625624376: {'succeed': 1, 'failed': 0}
625625624624: {'succeed': 0, 'failed': 0}
625625624625: {'succeed': 1, 'failed': 0}
625625625000: {'succeed': 0, 'failed': 0}
625625625001: {'succeed': 1, 'failed': 1}
625625625249: {'succeed': 1, 'failed': 0}
625625625376: {'succeed': 1, 'failed': 0}
625625625624: {'succeed': 1, 'failed': 0}
625625625625: {'succeed': 0, 'failed': 1}
Succeed : 670
Failed  : 0
Both    : 285
None    : 341

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 こんなんで いいのかだぜ☆?」

KIFUWARABE_80x100x8_01_Futu.gif
「 おうおう☆! failed の総和が間違っているぜ☆!」

sum_succeed = 0
sum_failed = 0
sum_both = 0
sum_none = 0
for key, value in cover_dict.items():
    if 0 < value["succeed"] and 0 < value["failed"]:
        sum_both += 1
    elif 0 < value["succeed"]:
        sum_succeed += 1
    elif 0 < value["failed"]:
        sum_failed += 1
    else:
        sum_none += 1

    print("{}: {}".format(key, value))

print("Succeed : {}".format(sum_succeed))
print("Failed  : {}".format(sum_failed))
print("Both    : {}".format(sum_both))
print("None    : {}".format(sum_none))
# 前略
625625376624: {'succeed': 0, 'failed': 1}
625625376625: {'succeed': 0, 'failed': 1}
625625624000: {'succeed': 0, 'failed': 0}
625625624001: {'succeed': 0, 'failed': 1}
625625624249: {'succeed': 1, 'failed': 1}
625625624376: {'succeed': 1, 'failed': 1}
625625624624: {'succeed': 0, 'failed': 1}
625625624625: {'succeed': 0, 'failed': 0}
625625625000: {'succeed': 0, 'failed': 1}
625625625001: {'succeed': 0, 'failed': 1}
625625625249: {'succeed': 0, 'failed': 1}
625625625376: {'succeed': 1, 'failed': 1}
625625625624: {'succeed': 1, 'failed': 1}
625625625625: {'succeed': 0, 'failed': 0}
Succeed : 349
Failed  : 321
Both    : 289
None    : 337

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 コピペ・ミスを修正☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 使ってみようぜ☆?」

def append_cover(tl, br, bl, tr, succeed, failed):
    key = ((tl*1000 + br) *
           1000 + bl)*1000 + tr
    value = {"succeed": cover_dict[key]["succeed"] +
             succeed, "failed": cover_dict[key]["failed"] + failed}
    cover_dict[key] = value

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 こういう関数があったら便利だろうか☆?」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 作った関数のテストをしてみましょう」

./lib/powerful_six_coverage.py

def append_cover(tl, br, bl, tr, succeed, failed):
    key = ((tl*1000 + br) *
           1000 + bl)*1000 + tr

    if key not in cover_dict:
        cover_dict[key] = {"succeed": 0, "failed": 0}

    value = {"succeed": cover_dict[key]["succeed"] +
             succeed, "failed": cover_dict[key]["failed"] + failed}
    cover_dict[key] = value


def init_cover_dict():
    import random
    for tl in range(0, 6):
        for br in range(0, 6):
            for bl in range(0, 6):
                for tr in range(0, 6):
                    key = ((pow6[tl]*1000 + pow6[br]) *
                           1000 + pow6[bl])*1000 + pow6[tr]
                    value = {"succeed": 0, "failed": 0}
                    cover_dict[key] = value

    print("Size    : {}".format(len(cover_dict)))

init_cover_dict()


def show_cover_dict():
    sum_succeed = 0
    sum_failed = 0
    sum_both = 0
    sum_none = 0
    for key, value in cover_dict.items():
        if 0 < value["succeed"] and 0 < value["failed"]:
            sum_both += 1
        elif 0 < value["succeed"]:
            sum_succeed += 1
        elif 0 < value["failed"]:
            sum_failed += 1
        else:
            sum_none += 1

        print("{}: {}".format(key, value))

    print("Succeed : {}".format(sum_succeed))
    print("Failed  : {}".format(sum_failed))
    print("Both    : {}".format(sum_both))
    print("None    : {}".format(sum_none))
    print("Total   : {}".format(sum_succeed+sum_failed+sum_both+sum_none))


show_cover_dict()

print("Info    : Finished.")
# 前略
625625376624: {'succeed': 0, 'failed': 1}
625625376625: {'succeed': 0, 'failed': 0}
625625624000: {'succeed': 1, 'failed': 1}
625625624001: {'succeed': 0, 'failed': 1}
625625624249: {'succeed': 0, 'failed': 1}
625625624376: {'succeed': 0, 'failed': 0}
625625624624: {'succeed': 0, 'failed': 0}
625625624625: {'succeed': 0, 'failed': 1}
625625625000: {'succeed': 0, 'failed': 0}
625625625001: {'succeed': 0, 'failed': 0}
625625625249: {'succeed': 1, 'failed': 1}
625625625376: {'succeed': 1, 'failed': 1}
625625625624: {'succeed': 0, 'failed': 1}
625625625625: {'succeed': 1, 'failed': 0}
Succeed : 308
Failed  : 348
Both    : 313
None    : 327
Total   : 1296
Info    : Finished.

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 作り直しで☆」

from lib.powerful_six_coverage import init_cover_dict
from lib.powerful_six_coverage import append_cover
from lib.powerful_six_coverage import show_cover_dict

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 Python3 の import は、こんな書き方でいいんだろうか☆?」

   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
 624   376   376   624     0   624   376   376   624     0   624   376   376   624  [  0] [624] [376] [376]  624
 249   376     1   624   625   624     1   376   249     0   249   376     1   624  [625] [624] [  1] [376]  249
 376   624   624   376     0   376   624   624   376     0   376   624   624   376  [  0] [376] [624] [624]  376
 625     0   625     0   625     0   625     0   625     0   625     0   625     0  [625] [  0] [625] [  0]  625
 376   624   624   376     0   376   624   624   376     0   376   624  [624] [376]    0   376   624   624   376
 249   376     1   624   625   624     1   376   249     0   249   376  [  1] [624]  625   624     1   376   249
 624   376   376   624     0   624   376   376   624     0   624  [376]  376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
   0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1
 624   376   376   624  [  0] [624] [376] [376]  624     0   624   376   376   624     0   624   376   376   624
 249   376     1   624  [625] [624] [  1] [376]  249     0   249   376     1   624   625   624     1   376   249
 376   624   624   376  [  0] [376] [624] [624]  376     0   376   624   624   376     0   376   624   624   376
 625     0   625     0  [625] [  0] [625] [  0]  625     0   625     0   625     0   625     0   625     0   625
 376   624  [624] [376]    0   376   624   624   376     0   376   624   624   376     0   376   624   624   376
 249   376  [  1] [624]  625   624     1   376   249     0   249   376     1   624   625   624     1   376   249
 624  [376]  376   624     0   624   376   376   624     0   624   376   376   624     0   624   376   376   624
   1   624   249   376   625   376   249   624     1     0     1   624   249   376   625   376   249   624     1

# 正方形縛り
Succeed : 21
Failed  : 0
Both    : 0
None    : 1275
Total   : 1296
Rate    : 0.0162

# 長方形
Succeed : 55
Failed  : 10
Both    : 0
None    : 1231
Total   : 1296
Rate    : 0.0424

KIFUWARABE_80x100x8_01_Futu.gif
「 正方形縛りの サクシードが 70 から 21 に減ってるじゃないか☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 49個も 重複があったんじゃないか☆? 21種類だったんだぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 長方形も 減ってるじゃないか☆?」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 フェイルドが 0種類 とか 10種類 なのは おかしくない?
ナン にカウントされてるんじゃないの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 長くなったんで 次の記事で☆」


むずでょ@きふわらべ第29回世界コンピューター将棋選手権一次予選36位

光速のアカウント凍結されちゃったんで……。ゲームプログラムを独習中なんだぜ☆電王戦IIに出た棋士もコンピューターもみんな好きだぜ☆▲(パソコン将棋)WCSC29一次予選36位、SDT5予選42位▲(パソコン囲碁)AI竜星戦予選16位

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント