ブログ
2023年 11月 7日 暗記ツールを作ってみた~青木先生~
皆さん,いかがお過ごしでしょうか?このブログでは自作暗記ツールについて紹介します.
1. 背景
真夏日のある11月がはじまりました.さて,低学年の皆さんは高速基礎マスターの進捗はいかがでしょうか?高速基礎マスターは効率的に英語の暗記を行える教材として知っていると思います.僕も,現役時代には高速基礎マスターを活用して単語や熟語を暗記して,英語と数学と国語の高速基礎マスターを全冠していました.さて,時はながれ,大学2年生の僕はそのような暗記ツールが再びほしくなりました.なぜならば,11月19日に仏検を受験するため,友人から譲りうけた単語帳掲載の800語を暗記する必要があるからです.そこで,プログラムをある程度かける僕は,自分のために作ってみることにしました.
2. やったこと
「暗記すること」を「2度連続で正解すること」として,繰り返し出題することにしました.以下に,僕が書いたプログラムを掲載します.
ただし,データセットは,はじめ,import numpy as npimport timeimport osimport randomtp = input(“1-3の中でどれをやりたいですか?\n”)path = “words” + tp + “.txt”data = np.loadtxt(path, dtype = “str”, delimiter = “\t”, encoding = “utf-16”)l = list()alr = 0for i in range(len(data)):l.append([int(data[i][0]), str(data[i][1]), str(data[i][2]), i])if l[i][0] >= 2:alr += 1miss = dict()print(f”習得率は{(alr * 100) / len(l)}%です.”)print(f”10問以上{len(l)}問以下出題できます.出題数を入力してください.”)a = int(input())l.sort()use = []i = 0while len(use) < a:if l[i][0] <= 1:use.append(l[i])i += 1else:re = a – len(use)cnd = l[i:]random.shuffle(cnd)for ii in range(re):use.append(cnd[ii])random.shuffle(use)crr = 0shutsudai = 1for i in range(a):tmp = set()tmp.add(use[i][2])while len(tmp) != 8:t = random.randint(0, len(use) – 1)tmp.add(use[t][2])tmp = list(tmp)ask = dict()ans = -1ask[9] = “わからない”stm = “”cnt = 1random.shuffle(tmp)for j in range(8):ask[j + 1] = tmp[j]if tmp[j] == use[i][2]:ans = j + 1stm += f”{cnt}: {tmp[j]}”stm += “\t\t”if cnt % 3 == 0:stm += “\n”cnt += 1stm += f”9: {ask[9]}”print(“以下の選択肢から選んで解答してください.”)print(f”{shutsudai}: {use[i][1]} “)print(stm)k = int(input())if k == ans:crr += 1print(“正解!”)print(f”{a}問中{crr}問正解!”)l[use[i][3]][0] += 1else:print(“不正解!”)print(f”{a}問中{crr}問正解!”)print(f”{use[i][1]}: {ask[ans]}”)miss[l[use[i][3]][1]] = ask[ans]l[use[i][3]][0] = 0shutsudai += 1print()print()print(f”{a}問中{crr}問正解で正答率は{(crr * 100) / a}%でした.”)os.remove(path)f = open(path, ‘w’)shu = 0ich = 0l.sort()with open(path, mode = ‘w’, encoding = “utf-16”) as f:wr = “”for i in range(len(l)):if l[i][0] >= 2:shu += 1if l[i][0] == 1:ich += 1wr += str(l[i][0]) + “\t” + l[i][1] + “\t” + l[i][2] + “\n”f.write(wr)print(f”全てで{len(l)}単語のうち,習得: {shu}単語, 点検中: {ich}単語です.”)print(f”新たに{shu – alr}単語習得しました.”)print(f”習得率は{(shu * 100) / len(l)}%です.”)f.close()
0[Tab][フランス語の単語][Tab][日本語]
の形で書かれ,UTF-16LFでwords[数字].txtファイルとして,プログラムと同じディレクトリに保存されているとします.
3. 結果
5時間ぐらいで500単語一通りおぼえたぞ!
4. 結論
プログラムが書けるといいことあるよ!