前書き:
3x3x3ルービックキューブが有するは約43である、可能な順列を京。この数値については聞いたことがあるかもしれませんが、実際にはどのように計算されますか?
3x3x3ルービックキューブには6つの側面があり、それぞれに9つのステッカーがあります。ただし、ステッカーではなく(外部)ピースを見ると、6つの中央ピースがあります。8つの角の部分。12個のエッジピース。センターは移動できないため、計算ではそれらを無視できます。コーナーとエッジに関して:
- あります!()の方法は、8つのコーナーを配置します。各コーナーには3つの方向がありますが、独立して方向付けできるのは7つ(8つのうち)だけです。第八/最終コーナーの向きは、所与の、先行7に依存()の可能性。
- 12個あります!(12面の縁部を配置する)方法。から半分に!これは、角が正確に一致するときに、エッジが常に偶数の順列にある必要があるためです。イレブンエッジが所定の第12 /最終的なエッジのフリップフロッ先行11に依存して、独立して反転することができる()の可能性。
これをまとめると、次の式があります。
これはすでにかなり複雑に見えるかもしれませんが、3x3x3キューブの場合はまだかなり単純です。偶数キューブの場合、式はわずかに異なります。これは、たとえば4x4x4キューブの式です。
これは、短いスケールで約7.40 quattuordecillionです。
また、より大きなNxNxNキューブ(つまり、現在の世界記録33x33x33)の場合、式はかなり拡張されます。ただし、この紹介を長くしすぎないように、代わりにこれらのリンクをここに配置します。ここでは、4x4x4キューブと他のサイズのNxNxNキューブの順列を結果の式で説明します。
あなたは今疑問に思っているかもしれません:に基づいた一般的な公式はありますか の任意のための xは xはキューブ?確かにあります。基づいてまったく同じ結果を与える3つの完全に異なるアルゴリズムを次に示します。
1:クリスハードウィックのフォーミュラ:
2:クリストファー・モウラの三角式:
3:クリストファー・モウラの素数式:
ここで、はです。
出典:Cubers-reddit-位置の数、神の数などの数学的計算式
チャレンジ:
入力整数与えられており、これら三つの式(または独自の誘導体)のいずれかを選択し、実装レンジでの、正しい結果を出力します。
チャレンジルール:
- これら3つ以外の別の式を自由に使用できますが、これら3つが正しいことが証明されていることに注意してください。別の式を使用する場合は、元の式のリンクを追加してください(または、自分で計算する場合は、詳細な説明を追加してください)。そして、出力が正しい場合、範囲内のすべての整数をチェックします。おそらくインスピレーションは、このシーケンスA075152のoeisにあります。
- あなたの言語が科学的な出力を自動的に出力する場合(すなわち、4x4x4式の後の数字の代わりに)、これは許可されます。ただし、コード内の式の実行中の浮動小数点精度による丸め誤差は許可されないため、この科学的な丸めを正確な出力に変換して、結果を検証できるように追加のコードを回答に追加してください-実際の結果は正確。
- プログラム/機能は、範囲内の少なくとも入力の正しいあるべきである(以降、ただし既に任意大きく、巨大なお尻の数になりますおそらく仕事だけでなく、あなたしていることにした場合でしょうこれを正しく出力してください)。
- カウンターを使用してすべての可能な順列をループすることはできません。合理的な時間内に何も出力されないためです。フォーミュラ(提供されている3つのうちの1つ、それらの1つの派生物、または完全に新しいフォーミュラ)の実装、または妥当な時間内に正しい結果を与える別のメソッド(もちろんハードコーディングなし) ) 許可されている。これを強制するために制限時間を追加することを考えましたが、私は個人的に反対です code-golfとの組み合わせ制限時間にので、私はしません。それでも、プログラムが答えを出していることを確認してください。何らかの理由でTIOにとって遅すぎる場合は、検証としてローカルマシンからの出力を含むスクリーンショットを追加してください。
一般的なルール:
- これはcode-golfであるため、バイト単位の最短回答が優先されます。
コードゴルフ言語では、コードゴルフ以外の言語で回答を投稿しないようにしてください。「任意の」プログラミング言語の可能な限り短い答えを考えてみてください。 - デフォルトのI / Oルールを使用した回答には標準ルールが適用されるため、STDIN / STDOUT、関数/メソッド、適切なパラメーターおよび戻り値型、完全なプログラムを使用できます。あなたの電話。
- デフォルトの抜け穴は禁止されています。
- 可能であれば、コードのテストへのリンク(TIOなど)を追加してください。
- また、回答の説明を追加することを強くお勧めします。
テストケース:
ここでのテストケースレンジでは(より大きなテストケースのための上記WolframAlphaリンクを使用して自由に感じます)。
n=2
3674160
n=3
43252003274489856000
n=4
7401196841564901869874093974498574336000000000
n=5
282870942277741856536180333107150328293127731985672134721536000000000000000
n=6
157152858401024063281013959519483771508510790313968742344694684829502629887168573442107637760000000000000000000000000
n=7
19500551183731307835329126754019748794904992692043434567152132912323232706135469180065278712755853360682328551719137311299993600000000000000000000000000000000000
n=8
35173780923109452777509592367006557398539936328978098352427605879843998663990903628634874024098344287402504043608416113016679717941937308041012307368528117622006727311360000000000000000000000000000000000000000000000000
n=9
14170392390542612915246393916889970752732946384514830589276833655387444667609821068034079045039617216635075219765012566330942990302517903971787699783519265329288048603083134861573075573092224082416866010882486829056000000000000000000000000000000000000000000000000000000000000000
n=10
82983598512782362708769381780036344745129162094677382883567691311764021348095163778336143207042993152056079271030423741110902768732457008486832096777758106509177169197894747758859723340177608764906985646389382047319811227549112086753524742719830990076805422479380054016000000000000000000000000000000000000000000000000000000000000000000000000000000000
注:これはコードゴルフの課題なので、基本的には次のように要約します。これら3つの式のいずれか(または、正しい結果を生成する導関数/独自のメソッド)をできるだけ短く実装します。
floor