前書き
指定されたルールに従って、有名なパングラムの発信スパイラルを出力するプログラムを作成します。
チャレンジ
パングラムは、少なくとも一度与えられたアルファベットのすべての文字を使用した文です。最も有名なパングラムの1つは、Windowsフォントビューアーで広く使用されているパングラムです。つまり、「素早い茶色のキツネが怠け者の犬を飛び越えます」。課題は、このテキストに基づいてスパイラルを出力することです。
タスクは次の正確なテキストを出力します。
heeeeellllllllllllazzzzzzzzzzz
hummmmmmmmmmmmmppppppppppppppy
hubrrrrrrrrrrrrrrrrrrooooooosy
hukyddddoooooooooooooooggggwsy
hukyveeeeerrrrrrrrrrrrrrrrtwsy
hukyvxjjjjjjjjjjuuuuuuuuuttwsy
hukyvxkbbrrrrrrrrrrrrrrrmttwsy
hukyvxkogggggggttttttttomttwsy
tukyvokoellllllllllllahomttwsy
tukyvokoeovvvvvvvvvvvzhomttwsy
tukyvocoeoummmmmmmmmezhomttwsy
tukyvocoeoufooooooopezhomttwsy
tukyvocohoufroooooxpezhomttwsy
tukyvoiohoufrquuuwxpezhomttwsy
tucyvoiohoufbqttiwxpezhomttwsy
tucyvoiohoufbeehiwxprzhomttwsy
tucyvoiohoufkccciwxprzeomttwsy
tjiyvoidhounnnnnnwxprzeomttwsy
tjiyvoidhojjjjjjjjxprzeomttwsy
tjiyvoidhssssssssssprzeopttwsy
tjiyvoidttttttttttttrzeopttwsy
tjiyvoiyyyyyyyyyyyyyyzqopttwoy
tjiyvouuuuuuuuuuuuuuuuqwpttwoy
tjiyvffffnnnnnnnnnnnnnnwpttwoy
tjiyossssssssssssssssssspthwoy
tjizzzzalllllllllllleeeeehhwoy
tjuuqqqqqqqqqqqqqqqqqeeeeehnod
txxxxxoooooooooooooooffffffnod
reeeeevvvvvvvvvvvvvvvvvvvvvvod
gggggggoooooooooooooood
生成方法は次のとおりです。
- 熱狂的なキツネがいて、パングラム「怠quickな犬を飛び越える茶色いキツネ」を楽しんだ。ある日、彼は外側のらせんの中心にいて、そこに飛び込んで絵を描くことにしました。
- 彼はパングラムを最初から最後まで行きたいと思います。また、アルファベットのn番目の文字である場合は、n回ペイントしたいと思います。
- しかし、キツネは角を曲がるのがあまり得意ではなかったので、各角に到達すると、彼はまた停止して次の文字に切り替える必要がありました。
- 彼はまた、彼があることを強調しパングラムの3回繰り返すことを決めた迅速な茶色のキツネ。
- あなたの仕事は、キツネがそれらのすべての文字を描いた後、スパイラルがどのように見えるかを示すことです。
(ストーリーテリングなしのプレーンバージョン)
有名なパングラム「茶色いキツネが怠zyな犬を飛び越える」が3回繰り返され、スペースが削除され、すべての文字が小文字になります。
thequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydog
らせんは中心から始まり、文字「t」で始まり、右に行くことで始まり、時計回りに外側に進みます。現在の文字がアルファベットのn番目の文字である場合、次の文字にいつでも切り替わります
- スパイラルが角に達する、または
- 現在の文字は正確にn回印刷されます。
それをよりよく説明するために、最初の3つの単語「thequickbrown」に関連するスパイラルがどのように生成されるかを説明します。
rooooo
rquuuw
bqttiw
beehiw
kccciw
nnnnnnw
キツネは「t」から始まり、右に行き、最初のコーナーに到達し、「t」でペイントしてから「h」に切り替わり、下に行き、2番目のコーナーに到達し、「e」に切り替わり、左に進み、 3番目のコーナー、「q」に切り替えて上昇、4番目のコーナーに到達、「u」に切り替えて右に移動、コーナーに到達して「i」に切り替え、下降、コーナーに到達して「c」に切り替え、移動左、次のコーナーに到達する前に3つの「c」を正常にペイントし、「k」に切り替えて左に進み、すぐにコーナーに到達し、「b」に切り替えて上昇し、到達する前に2つの「b」をペイントする次のコーナー、「r」に切り替わりますそして上に進み、角に到達して「o」に切り替わり、右に進み、次に「w」、下、「n」、左になります。
スペック
文字列の標準形式を含むオプションの入力を取ることができます
thequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydog
出力は文字列としてフォーマットされ、ファイルまたはSTDERRではなくSTDOUTに送られ、改行が正しく配置されている必要があります。空行の先頭と末尾は関係ありません。各行の先頭と末尾のスペースは許可されますが、一貫している必要があります。したがって、指定したテキストの1行の前に5つのスペースを追加する場合、各行の前に正確に5つのスペースを追加して、スパイラルが同じように見えるようにする必要があります。
これはcode-golfであり、最も少ないバイト数が勝ちます。
いつものように、デフォルトの抜け穴がここに適用されます。
説明は歓迎されますが、必須ではありません。
caird coinheringaahingがコメントごとにパングラムにするために編集したタイトル。
怠zyな犬は、物語に登場するのが面倒です。
座標の単純な関数では出力する文字を計算できない文字列チャレンジを作成することを目指しています。