これは楽しかった!しかし、たった3桁で、楽しみはすぐに終わりました。この課題は似ていますが、楽しみを続けていきます。
チャレンジ
黄金比 φを可能な限り多く印刷します。黄金比は、φ=(φ+ 1)/φを満たす数として定義され、最初の100桁は次の式で与えられます。
1.6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911375 ...
この課題は、φを計算することではありません!2回行う方法を使用せずに、できるだけ多くの桁を印刷することです。可能な限り多くの創造的な方法で数字を取得してください!
制限事項
それ自体では、φの数字を印刷するのは少し単純すぎるので、ここに規則があります。
- 番号を左から右に順番に作成する必要があります。1つずつ印刷するか、左から右に文字列を作成して最後に印刷します。数字文字の配列を生成して結合することもできます。順番どおりに行う限り、印刷してください。次の規則では、「印刷」および「出力」はこれらのプロセスのいずれかを指す場合があります(たとえば、文字列を作成し、その文字列に既に印刷済み
1.6
としてカウント1.6
される場合)。 - コードの場合、1桁あたり15文字の予算があります。期間はその予算にカウントされませんが、同様に印刷する必要があります。制限はコードの合計サイズのみであることに注意してください。平均でこれ以上使用しない限り、任意の数字に15文字以上を使用できます。実際、キャラクターに「借金」を作り、後で「支払う」ことができます。たとえば、印刷
1.618
するには60文字が必要です。 - 標準ライブラリのインクルード/インポートは、コードサイズにカウントされません。しかし、これらのインクルードエイリアスを無料で提供することはできません!
- 現在生成している数字や、すでに印刷した数字は使用しないでください。たとえば
1
、ソースコードの最初の桁であるため、ソースコードのどこにも表示されない場合があります。8
in を出力するコード1.618
は、数字の一部またはすべてを使用できますが、のいずれも使用でき[0234579]
ません[168]
。この目的のために、1桁に相当するすべてのリテラルはその数字として扱われます。だからあなたの言語を表現することができる場合9
として、'\t'
あなたが使用することができませんでしつまりどこでも、使用することを許可されていない9
代わりに。 - 一度に複数の数字を生成しないでください。コードを1桁ずつ生成するチャンクに明確に分割することができるはずです。
組み込み関数、数学/ブール/ビット単位/文字列演算子、以前の数字を生成したコードで使用した変数または定数を参照しないでください。例外は、整数から文字列への変換、文字列の連結、および1桁ごとに必要な印刷機能です。ビルトインをどの名前で参照するかは問題ではないことに注意してください。ビルトイン
PI
を両方にエイリアスするからであり、一度だけ使用するわけではp
ありq
ません。同様に、あなたはしている、それは文字列のように、二つの異なる組み込みコマンドを参照している場合は二回名前を使用することができ、配列。p
q
length
length
プログラミング言語に関数がない場合は、同等のものが何であるかについて最善の判断を下してください。たとえば、bashスクリプトの場合、他のプログラムを呼び出すには、関数に課せられた規則に従う必要があります
- 提出物は単一の言語で書かれている必要があります。そのため、他の言語のビルトインにもアクセスするために他の言語のインタープリターを実行する必要はありません。
含意
以下の点はすべて上記のルールによって暗示されていますが、サンドボックスですでに出てくる質問を避けるためにここにそれらを追加します。
'\b'
その間にいくつかのバックスペース(通常は)を印刷することで、出力の一部を上書きすることはできません。- 複数の数字を生成/出力するループは禁止されています。(ただし、1桁を計算するループは問題ありません。)
- 難読化されたバージョンを使用し
(1 + √5)/2
たり、フィボナッチ数を分割して1桁以上を取得することは禁止されています。 - これらの変数参照は数字を生成しないため、10桁を事前に計算して10変数に格納し、それらを参照することはできません-変数を埋めるコードはそうするため、これはルール6の違反です。
- 実際、以前の(または中間結果)を再利用することはできません。これは、生成されるコードが2桁で共有されるためです。
- それ以外の場合は、数字を生成するためにあらゆる手段(純粋に数学的な必要はありません)を使用できます。(そして、あなたはすべきです!)
- 実際、標準ライブラリを使用して多くの異なる場所から正しい数字を引き出すことができれば、何も計算する必要はありません。
- 1桁の数字を生成するときに演算子を複数回使用することがあるため、
2+2+2
最初の数字を生成するのは公正なゲームです6
(ただし、最短ではありません)。 - あなたはあり、彼らがビルトインされていないため、定数、できるだけ頻繁にあなたが望むようリテラルを使用しています。したがって、印刷する必要がない限り、コード内で必要なだけs
5
を使用でき5
ます。 - 出力をハードコーディングすることはできません。出力する数字を使用する必要があるためです。
要するに、数字を2回生成する方法を使用しないでください。また、現在出力している数字や既に印刷されている数字を使用しないでください。
(準)無限のスコアを得ることができる抜け穴を見つけた場合は、それを悪用して挑戦を台無しにしないでください、しかし、私に知らせてください。
得点
最高桁数を正しく印刷するプログラムが勝ちます。同点の場合、短いコードは同点を破ります。
コードのどの部分がどの桁を生成するかを特定するコメントなしのバージョンを追加してください。
PS:誰かが上記の100桁に勝ったら、ここにもう少しあります。
x = (x+1)/x
(またはx^2 = x+1
)(またはx^2-x+1
)で2次式を使用しているだけです。