個人的なプログラムで実生活に役立ったものは皆無かもしれない。
何かあったかもしれないけど覚えていない。
大量にデータなどあると分析してみたりするのは楽しい時もある。
ちょっとしたアルゴリズムのちょっとした改良で高速化すると面白い。
しかしそのアルゴリズムが実生活で役立つものかといわれるとゲームなどで少し役立つ程度。
それでも何か役立つのではと思っていろいろ試行錯誤している。
なんとなくhaskellの流れで「ガロアの数学「体」入門」という本を読んでみる。
延々と魔法陣について記述されている。
魔法陣なんてグルグルまわせば一発なんじゃないのと思ったけどこれがとんでもなく甘かったです。
本によると6x6が難しいとあったのでそれを目指してみました。
3x3はとけます。
4x4は最初の一つまで何時間かかるやら(そこまで実験していないのでバグありそうです。)
4x4で読み飛ばさせようとして
n = list(itertools.permutations([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16], 16))
なんてしてみたら、ubuntuしばらくハングしました。
4x4でifがやたらネストしているのは少しでも高速化を図ったあとです。
[2, 7, 6]
[9, 5, 1]
[4, 3, 8]
[2, 9, 4]
[7, 5, 3]
[6, 1, 8]
[4, 3, 8]
[9, 5, 1]
[2, 7, 6]
[4, 9, 2]
[3, 5, 7]
[8, 1, 6]
[6, 1, 8]
[7, 5, 3]
[2, 9, 4]
[6, 7, 2]
[1, 5, 9]
[8, 3, 4]
[8, 1, 6]
[3, 5, 7]
[4, 9, 2]
[8, 3, 4]
[1, 5, 9]
[6, 7, 2]
0.40970540046691895
何かあったかもしれないけど覚えていない。
大量にデータなどあると分析してみたりするのは楽しい時もある。
ちょっとしたアルゴリズムのちょっとした改良で高速化すると面白い。
しかしそのアルゴリズムが実生活で役立つものかといわれるとゲームなどで少し役立つ程度。
それでも何か役立つのではと思っていろいろ試行錯誤している。
なんとなくhaskellの流れで「ガロアの数学「体」入門」という本を読んでみる。
延々と魔法陣について記述されている。
魔法陣なんてグルグルまわせば一発なんじゃないのと思ったけどこれがとんでもなく甘かったです。
#3x3 import itertools import time st=time.time() n = itertools.permutations([1,2,3,4,5,6,7,8,9], 9) c=0 for i in n: a=list(i) if sum(a[0:3])==sum(a[3:6])==sum(a[6:9])==sum(a[0:9:3])==sum(a[1:9:3])==sum(a[2:9:3])==sum(a[2:7:2])==sum(a[0:9:4]): print(a[0:3]) print(a[3:6]) print(a[6:9]) print(" ") print(time.time()-st) #4x4 import itertools import time st=time.time() n = itertools.permutations([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16], 16) c=0 for i in n: c+=1 a=list(i) if c%10000000==0: print(c,":",time.time()-st) print(a) if a[3]>4: if sum(a[0:4])==34: if sum(a[4:8])==sum(a[8:12])==sum(a[12:16])==sum(a[0:16:4])==sum(a[1:16:4])==sum(a[2:16:4])==sum(a[3:16:4])==sum(a[0:16:5])==sum(a[3:13:3]): print(a[0:4]) print(a[4:8]) print(a[8:12]) print(a[12:16]) print(" ")
本によると6x6が難しいとあったのでそれを目指してみました。
3x3はとけます。
4x4は最初の一つまで何時間かかるやら(そこまで実験していないのでバグありそうです。)
4x4で読み飛ばさせようとして
n = list(itertools.permutations([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16], 16))
なんてしてみたら、ubuntuしばらくハングしました。
4x4でifがやたらネストしているのは少しでも高速化を図ったあとです。
[2, 7, 6]
[9, 5, 1]
[4, 3, 8]
[2, 9, 4]
[7, 5, 3]
[6, 1, 8]
[4, 3, 8]
[9, 5, 1]
[2, 7, 6]
[4, 9, 2]
[3, 5, 7]
[8, 1, 6]
[6, 1, 8]
[7, 5, 3]
[2, 9, 4]
[6, 7, 2]
[1, 5, 9]
[8, 3, 4]
[8, 1, 6]
[3, 5, 7]
[4, 9, 2]
[8, 3, 4]
[1, 5, 9]
[6, 7, 2]
0.40970540046691895