2017年東大理系数学をpythonで解いてみた!
昨日、今日で東大入試がありましたね!
受験生の方、受験お疲れ様でした。
せっかくなので、数学の問題をpythonで解いてみよう!ということで解いてみました!
pythonの機能(ライブラリ)がまだ全然使いこなせないので、今回は第2問(確率)だけを解いてみました。
(問題)
(解答)
# 2017年 東大数学 理系 # 第2問 import itertools from fractions import Fraction move_pattern = ["a", "b", "c", "d"] move_command = list(itertools.product(move_pattern, repeat=6)) whole_event = 4 ** 6 counter_1 = 0 counter_2 = 0 for command in move_command: coordinate = [0, 0] for s in command: if s == "a": coordinate[0] += 1 if s == "b": coordinate[0] -= 1 if s == "c": coordinate[1] += 1 if s == "d": coordinate[1] -= 1 if coordinate[0] == coordinate[1]: counter_1 += 1 prob_1 = Fraction(counter_1, whole_event) print("the answer of (1) is {}".format(prob_1)) for command in move_command: coordinate = [0, 0] for s in command: if s == "a": coordinate[0] += 1 if s == "b": coordinate[0] -= 1 if s == "c": coordinate[1] += 1 if s == "d": coordinate[1] -= 1 if coordinate[0] == 0 and coordinate[1] == 0: counter_2 += 1 prob_2 = Fraction(counter_2, whole_event) print("the answer of (2) is {}".format(prob_2))
見やすいように、同じ処理を設問ごとに書いているので少し冗長になっていますが、ちゃんと動きます。
4048個のループが2回、全部で10000回ぐらいの処理なので工夫なしでやっても計算の時間は全然早いです。
(最初のitertoolsでcommand_listを作った時の処理も入れたら15000回ぐらい??)
計算結果はこれです
解答速報と照らし合わせてもあっていますね!
こうやって実際にpythonが使えるのを見ると面白いですよね〜
気が向いたら他の問題もやって見ます。
それでは〜〜