「第64回京都大学11月祭」というのが、
2022年11月19日(土)~11月22日(火)に開催されるそうですが、そのカウントダウン看板が面白い(^_^;)
6,4,5,2,1と並んだ数字の間に「+」「-」「×」「÷」が入ることで計算される結果で残り日数を示している、とのこと。うまく組み合わせることで、0~35まで一つずつ計算できるそうです。なかなか機知に富んでますね!
ちなみに、
0~35までの組み合わせを求めるのを Python で書くと以下のようになるようです。4段forループを例外で抜ける作りがなんかオツです(^_^;) ときに、Python って eval があるんですね。知りませんでした。
operator = ["+", "-", "*", "/"]
answer = 0
while True:
try:
for o1 in operator:
for o2 in operator:
for o3 in operator:
for o4 in operator:
formula = "6{}4{}5{}2{}1".format(o1, o2, o3, o4)
if answer == eval(formula):
print("{}={}".format(formula, answer))
raise Exception
print("{} not found.....".format(answer))
break
except:
answer += 1
んで、
256通り(=44)ある組み合わせの結果のうち該当するのは以下の通りだそうです。計算結果「45」というのがありますが、35を超える次の組み合わせは45になってしまうということなのかな?
★2022年10月28日追記。
6,4は「第64回」に掛けているのだと思いますが、残りの5,2,1は何か関係があるのだろうかと調べてみたら、こちらを発見。京大125周年をもじったものらしいです(^_^;) この組み合わせに閃いてしまった人がいたのでしょうか? 何にしても発想がスゴイですね。
ついでに、
なんとなくJavaScriptでやってみました。256通りのうちで結果がゼロ以上の整数になるものを列挙&ソートして出力。ちなみに、101通りあって最大値は 6*4*5*2+1 = 241 でした。直感的には全てが乗算の場合に最大値になりそうなのですが、その場合は 240 だったりします(^_^;)
(function() {
const o = ['+','-','*','/'],r = [];
for (let i=0;i<256;i++) {
const f = `6${o[(i>>6)&3]}4${o[(i>>4)&3]}5${o[(i>>2)&3]}2${o[i&3]}1`,a = eval(f);
if (a >=0 && a === (a|0)) {
r.push({a,f});
}
}
console.log(r.sort((a,b) => a.a - b.a));
}());