MAKE10を完成させたい②
前回はベルヌーイ数無双であっけなく終わってしまったため、レギュレーションを見直して再チャレンジします。
今回のレギュレーション
このお題の主目的は「ナンバープレートで出会いうる数字で10の作り方をコンプリートする」ことであり、通常のMAKE10とは少し傾向が異なるので改めてレギュレーションを書き起こします。
原則として、四則計算(+、-、×、÷)のみで10を作る
数字の結合は禁止(1,2を12として使用できない)
各数字の並べ替えは可
括弧、括線のような式に表すうえでの記号の使用は可
指数関数やべき乗、根号など数学上の記号は、数字を含まないものであれば可
また、以下の物は使用不可とします。
円周率や自然対数などの定数:見た目上は数字を含まないが数ではあるため
ガウス記号等の丸め処理:美しくないため
ベルヌーイ数:3以上奇数を0にし、1を-1/2にする性能は強力すぎるため
新しい仲間たち
今回はベルヌーイ数を封じられたので、前回上げた以外の数字変換術を用意しました。
■逆三角関数
結果に円周率が入ってしまうためこれの処理が必要となりますが、1,2などの扱いにくい数字を動かせるため有効な場面が出てきそうです。
なお、sin^-1のような表記は数字を含んでしまいレギュレーション違反となるため、今回はarcsinのような記載を採用します。
arcsin(1/√2)=arccos(1/√2)=π/4, arcscos(-√3/2)=5π/6など正弦・余弦の逆関数は使えないことはないが使いにくいです。
一方、正接の逆関数は入力する数の定義域が無制限なうえに、arctan1=π/4など1から4という数字を生成しうるのでなにかと使えそう。
また、円周率の処理は基本的にはarccos(-1)=πが使えそうです。
逆三角関数と三角関数の組み合わせで円周率をそもそも発生させない運用も可能です。
・sin(arccos x)=cos(arcsin x)=√(1-x^2) → x=1/2を√3/2など
・sin(arctan x)=x/√(1+x^2) → x=1を1/√2、x=2を2/√5、x=3を3/√10など
と、ここまでは前置きでした。
実は今回、余接を使って1を好きな数字に変換する方法を思いつきました。
まず、sin(arccot x)=1/√(1+x^2) であることから、x=1のとき1/√2が得られます。
また、tan(arccot x)=1/xであることから、x=sin(arccot1)=1/√2のとき√2が得られます。
式をまとめるとtan(arccot(sin(arccot √x)))=√(x+1)となることからも分かる通り、これを繰り返すと1から√2,√3,√4,…を無限大まで得ることができます。
また、tan(arcsec √x)=√(x-1)であることから、xが整数であれば入れ子にしてあらゆる数を0まで降下させることができます。
つまり、これら2つの変換を組み合わせることであらゆる整数から10を作れることになってしまいました。
最期の最後、手詰まりになったらこの手を使おうと思います。
(自信満々に書いていますけど、余接なんて学生時代もほぼ使ったことがないので上の式が正確なのかは正直なんともいえないです。)
一応、他にも以下の変換は使い道があるので後々使用します。
tan(arcsec2)=√3
cos(arccot2)=1/√5
tan(arcsec√5)=2
sin(arccot7)=√2/10
sin(arccot√8)=1/3
■リーマンゼータ関数
思い付きはしたのですが、この子は半分ベルヌーイ数みたいなものなのでレギュレーション的に今回は使用しないことにします。
一応、ζ(0)=-1/2による0→2の変換、円周率が出てきてしまうがζ(2)=π^2/6、負の偶数の代入時に0になる(自明な零点)などがあります。
穴埋め作業①:1桁数字→1桁数字変換
ナンバープレートにおける10が作成不可能な組み合わせは以下の通りです。
ここから、前回の変換のうちベルヌーイ数を除いた変換を用いて数字の1対1変換を行い、リストに無い組み合わせになれば10が作れるということなので、そのような数字の組を抜いていきます。
変換は以下のものを使用します。
0→1(階乗)
3→6(階乗)
4→2(べき根)
4→6(素数階乗)
4→8(二重階乗)
9→3(べき根)
変換の結果、残った不可能組み合わせは以下の通りです。
穴埋め作業②:1桁数字2つ→1桁数字1つ変換
こちらは前回同様、以下の変換でさらに不可能組み合わせを減らしていきます。
隣接する2つの数字→大きい方の数字(階乗÷階乗)
同じ数字→元の数字(積のべき根)
2,3→9(階乗)
2,8→3(対数)
変換の結果、残った不可能組み合わせは以下の通りです。
穴埋め作業③:階乗・根号のみで個別対応
ここからの減少は緩やかなので、個別で見ていきます。
まずは階乗や根号のような簡単な記号で対処できないか考えてみます。
0022 → 0!+2^(0!+2);0122,1122も同様
0077 → √(0!+0!+7)+7;0177,1777も同様
0178 → √(0!×1+8)+7;1178も同様
6778 → 7+√(8+7-6)
7788 → 7+√(8+8-7)
7888 → 7+√(8÷8+8)
178→ √(1+8)+7;278も同様
256,258,355,357,378,559 → 2×5に集約できる(割愛)
残りは特殊な階乗や組み合わせ/重複組み合わせ、三角関数を使わないと難しそうです。
穴埋め作業④:6の処理
残りのリストを見ていると、6の多さが目につきます。
特に、3,4,9は単体で6に変換できるため、(潜在的に)6を含む数字を重点的に処理していきます。
主に以下の変換が使えそうです。
6!=6×5×4×3×2×1=720
6!!=6×4×2=48
6!!!=6×3=18
6!!!!=6×2=12
6#=5#=5×3×2=30
6C2=15
6C3=20
これらを用いて以下のように10を導出します。
0667 → 6!!!!-0!+6-7;1667も同様
0666 → 6!!!!-0!-6÷6;0677,1666,1677も同様
6666 → 6+6-6!!!!÷6
6667 → 6×6÷6!!!!+7
6677 → 6!!!!+6!!!!-7-7
23 → (3!)!!!!-2;26も同様
33 → (3!)#÷3;39,36,69,99,699も同様
38 → (3!)!!!-8;68,89,167,168も同様
67 → 6!!-7!!!!;677,6777,7777も同様
116 → 6!!!!-1-1
333 → (3!)!!!!-(3!)!!!!÷3!;336,366,666も同様;(3!)!!÷3-3!,((3!)!!-(3!)!!!)÷3,(3!-3)H3などの別解もあり
566 → 5×6!!!!÷6
567 → 6!!!!+5-7;668も同様
667 → 6!!!÷6+7
すこし処理しきれない6も残ってしまいました。
穴埋め作業⑤:5の処理
5!!!=10を用いて、1組の数字を5に集約して処理していきます。
(これは個人的な好みの問題なのですが、n重階乗は階乗する数字がnで割り切れる or 1余る数字出ないとなんとなく美しくないので、今回も5!!!を使用するのは終盤にしています。)
実質MAKE5になりましたが、以下のように5に集約します。
5,14,15,16,27,29,47,117,122,158,558,577,588,678は簡単なので割愛
0002 → 0!+0!+0!+2;0012,0112,1112も同様
0777 → 7-7÷7-0!;1777も同様
13 → 3!-1;112,113,0001,0011,0111,1111も同様
18 → (tan(arccot(sin(arccot√8))))!-1;188,888も同様
22 → (cos(arccot2))^(-2)
35 → 5#÷3!;56,59,157,166,556も同様
57 → 7-tan(arcsec√5)
66 → 6#÷6
77 → 7!!÷7!!!!;別解として√(sin(arccot√7))÷sin(arccot7)=5など
78 → √(7!!-8!!!);別解として8!!!!!-7!!!!!=10など
111 → arccos(-1)÷arctan1+1
222 → (tan(arcsec2))^2+2
177 → 1+7!!!÷7
777 → 7-7!!!!!÷7
788 → 8-7!!!!÷7
4桁の組がすべて消えました。
また、1桁の数字を除いて、3,4,6,9が消えました。
穴埋め作業⑥:個別対応
残りは個別処理です。
17 → sin(arccot1)/sin(arccot7)
58 → tan(arcsec√5)+8
88 → 8!!!÷8
778 → 7!!!+7!!!!!-8!!!!(見た目が頭悪そうで超好き)
これで、5以外の1桁の数字、11,12の組み合わせ以外で10を作る方法が見つかりました。
5以外は数字ひとつで10を作る方法が思い至らないし、11,12の組で10を作ることもできなさそうなので、この10個の数は先述の逆三角関数を使った変換で片付けましょう。
つまり、tan(arcsec x)=√(x^2-1)の入れ子を用いてxに2から9のべき根を代入して1に変換し、tan(arccot(sin(arccot √x)))=√(x+1)の入れ子を用いて√100まで増加させます。
まとめ
以上でナンバープレートの数字はどのパターンでも10が作れそうだということがわかりました。
逆三角関数の計算など数学的に正しいか自信のない変換もあるのですが、ひとまずは以上でMAKE10が完成したということにしたいと思います。
お疲れ様でした。