知恵袋で見つけた判断推理のトーナメントの問題をPythonで解いてみました。(^_^;
A〜Hの最初の持ち点をa〜hとして、A vs.Bの勝者Pの得点をp、C vs.Dの勝者Qの得点をq、P vs.Qの勝者Rの得点をr、G vs.Hの勝者Sの得点をs、F vs.Sの勝者Tの得点をt、E vs.Tの勝者Uの得点をu、R vs.Uの勝者Vの得点をvとしました。
● Tournament1.py
# coding: UTF-8 # Tournament1.py import itertools from time import time def main(): tm=time() # Timer Start choices = [True]*5 b = f = 3 # 条件エ d = 1 # 条件オ for p in itertools.product(range(1,4),repeat=4): a,c,e,h = p g = a # 条件ウ if not(g> h): continue # 条件カ p,q,s = (a+b)%4,(c+d)%4,(g+h)%4 t = (f+s)%4 r,u = (p+q)%4,(e+t)%4 #print p,q,r,s,t,u if p*q*r*s*t*u==0: continue # 条件ア v = (r+u)%4 if v!=2: continue # 条件イ # チェックを潜り抜けたものだけを表示 print((a,b,c,d,e,f,g,h)) # 選択肢のチェック choices[0] &= (a==c) choices[1] &= (a==e==2) choices[2] &= (c==e) choices[3] &= (c==h==2) choices[4] &= (e==g) s = "" for c in choices: if c : s+="%s "%(choices.index(c)+1) print(u"∴ %s"%s) tm=time()-tm # Timer Stop print("Runtime : %.3f [sec]"%tm) if __name__ == '__main__': main()
●実行結果
(2, 3, 1, 1, 1, 3, 2, 1) ∴ 3 Runtime : 0.002 [sec]
※参考URL
●配列操作の比較表: Ruby, Python, JavaScript, Perl, C++
http://0xcc.net/blog/archives/000043.html
●知恵袋で見つけた判断推理のトーナメントの問題をPythonで解いてみた。(2)
●知恵袋で見つけた判断推理のトーナメントの問題をPythonで解いてみた。(3)
- 作者: 辻真吾
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/24
- メディア: 大型本
- 購入: 19人 クリック: 199回
- この商品を含むブログ (59件) を見る
パーフェクトPython (PERFECT SERIES 5)
- 作者: Pythonサポーターズ,露木誠,ルイス・イアン,石本敦夫,小田切篤,保坂翔馬,大谷弘喜
- 出版社/メーカー: 技術評論社
- 発売日: 2013/03/05
- メディア: 大型本
- 購入: 1人 クリック: 65回
- この商品を含むブログ (30件) を見る