数学の日クイズ
数学の日にちなんで、円周率クイズ
2009-03-14
Python でやってみた。
import urllib pi_url = 'ftp://pi.super-computing.org/pub/pi10m/pi10m.ascii.01of10' f = urllib.urlopen(pi_url) print u'π の値を読んでます: "%s"' % pi_url, pi_str = ''.join(f.read().split()) f.close() print '完了.' pi = [int(x) for x in pi_str] day_limit = { 1: 31, 2: 29, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31} for i in range(len(pi)): month = pi[i] * 10 + pi[i + 1] day = pi[i + 2] * 10 + pi[i + 3] hour = pi[i + 4] * 10 + pi[i + 5] minute = pi[i + 6] * 10 + pi[i + 7] second = pi[i + 8] * 10 + pi[i + 9] if (month in range(1, 13) and day in range(1, day_limit[month] + 1) and hour in range(1, 24) and minute in range(1, 60) and second in range(1, 60)): print u'%d桁目, %02d月%02d日%02d時%02d分%02d秒' % ( i + 1, month, day, hour, minute, second) print '"%s"' % pi_str[i : i + 10] break
結果。
π の値を読んでます: "ftp://pi.super-computing.org/pub/pi10m/pi10m.ascii.01of10" 完了. 287桁目, 07月26日02時49分14秒 "0726024914"
すっごい愚鈍な方法である上に、肝心な π の値を Web 上から拾ってきちゃったり*1してます。でもコード組む手間まで含めるなら今の私にとってはこれが一番手軽な方策かな。
しかし Web から全部のデータを読み込んでからにせず必要な分ずつ読むようにした方が色々な方面に優しいとは思いますが。
*1:でも「π を計算しろ」というクイズでもないだろうしこれでいいのか?