名古屋で数学するプログラマ(仮)

@antimon2 が趣味兼一部本職の数学で何かするときのブログ。

Four Fours by @miruka_bot

8月限定で、Twitter上でちょっと面白いゲームが開催されています。


2年前にも同じ企画を行っていて、その時は全日参加した(全日リツイートしてもらえたかは記憶が定かでは無い)のですが、今年は出遅れました(^-^; というか2年前に出た答えを知っているのでそれが出てなかったらチャチャ入れる程度の参加にしようかな、と。

取り敢えず今日(答えが12になる式)2つだけ投げておきました。
今日は答えがたくさんある日だし日曜日だしお盆だし、ご興味と暇があればみなさんも腕試しに参加してみてください(^-^)

少しだけ考察

この問題、まとめると、以下のようになります。

  • 数字の「4」を4つ使う(10進数)。他の数字は一切使用しない。
  • 以下の演算及び記号を用いて、与えられた数(今日なら 12)を算出する式を作成する。
  • 使える演算記号その他は以下の通り:
    • 括弧(「(」、「)」)
    • 四則演算(「+」、「-」、「*」、「/」)
    • 剰余(「%」)
    • 小数点(「.」、ただし「.4」と書いてもOK(0.4という数とみなされる))
    • 並べて2桁以上にする(「44」、「444」、「4444」のほか、「4.4」「.44」などもOK)
    • 冪乗(「**」、4**4 なら 256)
    • 階乗(「!」、4! なら 1*2*3*4=24)

これ、もっと制限を厳しくしたタイプも考えられます。つまり使える演算を少なくする、ということ。例えば、

    • 剰余(「%」)

これ意外と自由度が高く、凄くバラエティに富んだ計算式が生まれます。
逆にこれを条件から外しても、問題としては成立します。少なくとも1〜31の整数は剰余無しですべて計算式を作ることが可能です( @antimon2 調べ)。

さらに四則演算だけに絞ったり、並べるのを不可(「4」または「.4」のみ許可)にするなど、の制限もアリだと思います。

逆に制限をもっと緩くすることも可能例えば、

    • 平方根(「√」、√(4) なら 2)
    • log(自然対数、log(4) は 1.386294…)

を使えるようにするとか。
「これ何の役に立つの?」て思われるかも知れませんが、実はこの2つが使えちゃうと、どんな整数も作り出すことが出来ちゃいます(^-^;

log(log(4)/log(4))/log(log(√(4))/log(4)) = 0
log(log(√(4))/log(4))/log(log(√(4))/log(4)) = 1
log(log(√(√(4)))/log(4))/log(log(√(4))/log(4)) = 2
 :
log(log(√(√(…√(4)…)))/log(4))/log(log(√(4))/log(4)) = n(√のネストがn回)

参考:数学パズル「4つの4」の進展: の下の方

まーこれでは問題としては面白くないので、

    • logは使用不可
    • 平方根(「√」)はOK。
    • その代わり『並べる』か『階乗(「!」)』のどちらかを使用不可

あたりにすれば、ゲームバランスが大きくは崩れず面白くなるんじゃないかなー、と個人的には思います。