プログラミングパズルとコードゴルフ

プログラミング愛好家やコードゴルファーのためのQ&A

4
フーリエのゴルフ弦
チャレンジ 入力として文字列を指定すると、その文字列を出力するフーリエプログラムをたどります。 フーリエでは、文字列を出力する簡単な方法はありません。各文字コードを調べて、文字として出力する必要があります。 フーリエ この言語は、プログラムの開始時に0に初期化されるグローバル変数であるアキュムレーターに基づいています。これは、言語のほぼすべての演算子で使用されます。アキュムレータの値を変更しないのは一部のみです。 キャラクターアウト a アキュムレータの値をASCIIコードとして取得し、文字を出力します。アキュムレーターの値を変更しません。 アキュムレータが255より大きい場合、プログラムはエラーを返します。同様に、アキュムレーターが0より小さい場合。 番号アウト o アキュムレータの値を出力します。アキュムレーターの値を変更しません。 増加する ^ アキュムレーターを1つ増やします。 減少 v アキュムレータを1つ減らします。 追加する +x アキュムレータにxの値を加えた値にアキュムレータを設定します。 引く -x アキュムレータの値からxの値を引いた値にアキュムレータを設定します。 かける *x アキュムレータにxの値を掛けた値にアキュムレータを設定します。 割る /x アキュムレータをxの値で除算した値にアキュムレータを設定します。(これは整数除算であるため、1/6結果はになります0) 数 n 累算器を整数nに設定します。 注意 ここでx、nはから0までの任意の整数2^32-1です。 詳しくは 上記の演算子のみを使用する必要があります。したがって、次のいずれかを使用する場合、出力されるフーリエプログラムは無効になります(次の演算子が報奨金に許可されていることに注意してください)。 繰り返しループ Ifステートメント 変数 ランダム モジュロ ユーザー入力 演算子よりも大きい/少ない 平等演算子 画面をクリア 時間遅延 日付関数 プログラムは、完全なプログラムまたは関数のいずれかであり、STDIN、ファイルまたは関数の引数を介して入力を受け取ります。インターネットから直接入力することもできます。 vvコードにがある場合は、に置き換える必要があることに注意してください-2。同じことが起こり^^、それをに置き換え+2ます。 …

16
年輪の年齢を表示
前書き 昨日バースデーパズルを見ました。おめでとうございます!! また今週、私はテレビ番組「ボーンズ」のエピソードを見ました。そこでは死体が木の下に埋められているのが見つかりました。死の時間を計算するために、彼らは年輪を数えました。 木は冬には成長が遅く、夏には速く成長するため、年輪が形成されます。したがって、リングを数えることにより、ツリーの年齢を計算できます。また、雨季や乾季などの自然現象を見ることができます。 チャレンジ n >= 1入力として整数を指定し、ツリーの年齢リングを出力する完全なプログラムを作成します。 リングは形状が変化する可能性があるため、3つの異なる文字(「0」、「*」、「+」)を使用して気候サイクルを示します。 1歳 0 2歳 *** *0* *** 3歳 +++++ +***+ +*0*+ +***+ +++++ 4歳 0000000 0+++++0 0+***+0 0+*0*+0 0+***+0 0+++++0 0000000 木のサイズは辺の正方形です 2*n - 1 勝ち バイト単位の最短コードが優先されます。

2
シュレーディンガーのレーザー
うんざり小さな家畜に実験し、ノーベル賞を受賞したエルヴィン・シュレーディンガーは、最寄りのレーザーを見つけて、その代わりのもので、それを撮影することを決定しました。なぜなら...科学! 説明 次の2つのレーザーが通過する点や、レーザビームの大きさが与えられます、そしてあなたは、レーザービームがどこかを決定しなければならない必要があり、行っている可能性が行っている、とができませんでした行っています。 レーザービームは、水平、垂直、または斜めにすることができます。サイズ1のレーザービームの場合、それぞれ次のようになります。 # # # # ##### # # # # # # 斜めのレーザービームも反転できます。サイズ2のレーザービームは次のようになります。 ### ## ##### ### ### ##### ### ### ##### ### ### ### ## 一般に、サイズ(n)のレーザービームを取得するには、サイズ(n-1)のレーザービームを取得し、両側にサイズ(1)のレーザービームを追加します。最後の例として、サイズ3のすべての可能なレーザービームを同じ「ボード」上に示します。 ###.....#####.....## ####....#####....### #####...#####...#### .#####..#####..##### ..#####.#####.#####. ...###############.. ....#############... .....###########.... #################### #################### #################### #################### #################### .....###########.... ....#############... ...###############.. ..#####.#####.#####. .#####..#####..##### #####...#####...#### ####....#####....### …
24 code-golf 

3
ヘキソミノを立方体に折り畳むことができますか?
私の子供のお気に入りのおもちゃの1つは、このようなセットです。実際、それは私のお気に入りのおもちゃの1つです。私はこのおもちゃで遊んでおり、PPCGチャレンジのアイデアを与えてくれました。以下がその1つです。 ASCII線画を入力として受け取り、それをキューブに折り畳むかどうかを決定するプログラムまたは関数を作成します。 入力 入力は、次のような正方形から構築された正確に1つのhexominoで構成されます。 +-+ | | +-+ たとえば、有効な入力heximinoは次のとおりです。 +-+ | | +-+-+-+-+ | | | | | +-+-+-+-+ | | +-+ 出力 ヘキソミノを立方体に折り畳める場合の真の値、または それ以外の場合は偽の値。 ちょっとした作業を節約するために、ウィキペディアには次の素晴らしいグラフィックがあります。 35個すべてのヘキソミノ: 立方体に折りたたまれる11個のヘキソミノ: ノート 入力ヘキソミノには、上記の画像に示されているものだけでなく、回転または反射がある場合があります 入力ヘキソミノには先頭スペースが含まれる場合がありますが、入力されたヘキソミノは自身に対して正しく整列されます 入力ヘキソミノには、行末にスペースがあり、入力終了時に改行が続く場合があります

10
双方向パリンドローム閉鎖ジェネレーター
前書き 入力文字列のパリンドローム閉包は、入力文字列から構築できる最短のパリンドロームであり、最終的なパリンドロームは入力文字列で始まります。 この課題では、次のような双方向パリンドローム閉包を検討します。 入力文字列の左パリンドローム閉包は、入力文字列で始まる最短の回文です。 入力文字列の右回文閉鎖は、入力文字列で終わる最短の回文です。 入力文字列の双方向パリンドローム閉包は、入力文字列の左または右のパリンドローム閉包のいずれか短い方です。 仕事 あなたの仕事は簡単です。文字列(印刷可能なASCII、改行、空白のみで構成される)を指定すると、その文字列の双方向の回文クロージャが出力されます。同数の場合、左右の回文クロージャのいずれかが有効な出力です。 プログラムまたは関数を作成し、STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取得し、結果をSTDOUT(または最も近い代替)に出力するか、文字列として返すことができます。 入力が空の文字列になることはないと想定できます。 いくつかの例: <Input> -> <Output> "abcdef" -> "abcdefedcba" (or "fedcbabcdef") "abcba" -> "abcba" "abcb" -> "abcba" "cbca" -> "acbca" 最初のアイデアの功績はVisualMelonに、最後のアイデアはMartinとZgarbの助けを借りて この論文では、パリンドローム閉鎖、左パリンドローム閉鎖、右パリンドローム閉鎖という用語が最初に使用され定義されました。

30
文字列の平均文字を計算する
仕事 あなたの仕事は、文字列の平均文字を含む文字列を生成することです。結果の最初の文字は、最初の文字の平均文字(最初の文字)であり、2番目の文字は最初の2文字の平均であり、以下同様です。 平均的なキャラクターとは何ですか? 文字列はバイトの配列です。文字列の平均文字は、文字列内の文字のASCII値の平均を計算し、対応するASCII文字を取得することで見つけることができます。 たとえば、文字列"Hello!"はバイトシーケンスとして記述できます72 101 108 108 111 33。ascii値の平均は533/6 = 88.833 ...であり、最も近い整数に丸めると89が得られYます。これはcaptial letterのasciiコードです。 ルール 入力には印刷可能なASCII文字のみが含まれると想定できます。 入力は、stdinから、またはコマンドライン引数として、または関数引数として読み取ることができます。 出力は標準出力でなければなりません。プログラムが機能している場合は、そうでなければ印刷する文字列を返すこともできます。 スニペットではなく、プログラム全体または関数でなければなりません 標準的な抜け穴が適用されます 整数は、関数floor(x+0.5)または同様の関数によって丸められます。 どうやって勝ちますか? これはcode-golfなので、winsでの最短回答(バイト単位)です。 例 Hello! → HW^adY test → tmop 42 → 43 StackExchange → Sdccd_ccccddd
24 code-golf  string 

7
他のプログラムのソースを使用してプログラムをXOR暗号化する
ソースコードのバイトがXOR-dである場合、すべて同じ言語で3番目の有効なプログラムが生成されるように、2つのプログラムを作成します。3つのプログラムのそれぞれの長さ(バイト単位)は同一でなければなりません。 最初のプログラムが出力されるはずAです。2番目のプログラムが出力するはずBです。3番目のプログラムが出力するはずCです。 改行はオプションですが、一方が改行を出力する場合、他の両方も必要です。 コマンドラインフラグを使用する場合は、各プログラムで同じフラグを使用する必要があります。つまり、3つのプログラムはすべて同じ方法で実行する必要があります。同じ文字の組み合わせで伝統的に始まるPHPのような言語を使用している場合、たとえば<?、それらの文字をドロップするコマンドラインオプションがある場合、代わりに使用できます。つまり、PHPはコマンドラインからのみ実行する必要があります。 入力は許可されていません。各プログラムは自己完結型でなければなりません。 プログラムが完全にASCIIで記述されている場合、次の表が役立つ場合があります。 Codes 0x20 - 0x3F !"#$%&'()*+,-./ 0123456789:;<=>? Codes 0x40 - 0x5F @ABCDEFGHIJKLMNO PQRSTUVWXYZ[\]^_ Codes 0x60 - 0x7E `abcdefghijklmno pqrstuvwxyz{|}~ 編集 非印刷文字の使用は、元々明示的に禁止していなかったため許可されています。ただし、印刷可能な文字のみを使用するバージョンを投稿したい場合は素晴らしいことです!(どちらか短い方を採点してください。)制御コードを使用する「賢い要因」は、やや衰えています... 編集を終了 同じブロックから任意の2つのコードをAXORすると、0x20未満のコードが生成されるため、有効な印刷可能なASCIIコードではありません。例:0x41()XOR 0x5A(Z)= 0x1B。異なるブロックから任意の2つのコードをaXORすると、3番目のブロックからコードが生成されます(例:0x61()XOR 0x54(T)= 0x35(5)。 | @` !Aa "Bb #Cc $Dd %Ee &Ff 'Gg (Hh )Ii *Jj +Kk ,Ll -Mm .Nn /Oo 0Pp …

13
スペインの時間です!
コードを使用して比較的簡単に実装できる単純なタスクがあります。あなたの目標は、HH:MM形式で時刻を指定すると、スペイン語で書かれた時刻を出力するプログラムを作成することです。多くの人はおそらくこれを行う方法を知らないので、詳しく説明します。 スペイン語の時間はかなり論理的です。通常、「Es la / Son las(hour)y(minutes)」のパターンに従います。時間は12時間形式であり、「Es la」は時間が1(つまり1時)の場合にのみ使用されます。議事録は別の話です。分が30未満の場合、上記のように表されます。ただし、分が30を超える場合、時間は切り上げられ、分が減算されます。たとえば、7:35は「8時間-25分」に相当します。さらにいくつかの例を以下に示します。必要なスペイン語の番号のリストはここにあります。一部の数字にはアクセントがありますが、これらは必要ありません。 注:ソースには「uno」と書かれていますが、文法的に正しいためには「una」である必要があります。これは、これまでの回答には影響しません。 注2:また、「cero」は不要です。プログラムが「Es la una」または「Son las tres」を出力する場合、それで問題ありません。これらのルールの変更については申し訳ありません。 ルール 入力は、STDINまたはご使用の言語の同等物を通じて提供されます。 外部ライブラリからの読み取りはありません。 コードは無効な入力で何でもできます。 ボーナス -10は、コードにこれらの余分なフレーズが追加されている場合です。「y cuarto」は:15、「y media」は:30、「menos cuarto」は:45(切り上げ)です。 -15は、コードがAMとPMを処理できる場合、「de lamañana」と「de la tarde」で応答します。 入力が提供されない場合、コードが現在の時刻を変換できる場合は-15。 得点 これはコードとゴルフのチャレンジであり、文字ではなくバイトでスコアリングされます。 例 入力:8:10 出力:Son las ocho y diez. 入力:6:45 出力:Son las siete menos quince (or cuarto). 入力:1:29 出力:Es la una y veintinueve. …

14
すべての国コードを印刷する
ISO 3166-1は、すべての国コードを定義する規格です。よく知られている2文字のコード(US、GB、JPなど)は、Alpha-2コードと呼ばれます。 2文字の場合、26 2 = 676の可能なコードしかなく、グリッドにうまく配置できます。この表は、どのコードが実際に使用されているか、予約されているかなどを確認するための概要として役立ちます。 この課題は簡単です。以下に示すように、プレーンASCIIを使用して、このグリッドに割り当てられているすべてのコードをSTDOUTに出力する必要があります。 AA AC AD AE AF AG AI AL AM AN AO AP AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BJ BL BM BN BO BQ BR BS BT BU BV BW BX BY BZ …

16
いくつかのアクションを見てみましょう!
高速で騒がしい車、特にクラッシュの多い車のアクション映画を好まないのは誰ですか?アスキーアートのアクションショットが嫌いな人はいますか? シーンは次のとおりです。 2台の車が直線道路の反対側から始まります(間に60個のスペースがあります)。彼らは一定の速度でお互いに向かって運転を開始します。左側の車は毎秒1スペースで運転し、右側の車は毎秒2スペースで運転します。 明らかに、車はお互いを通過できません。そのためn ≥ 20、シーンは、衝突が発生した位置にボンネットが上にある2台の衝突した車になります。 映画好きの私は、シーンの美しさを楽しむために、時々シーンを一時停止します。 nシーンの開始からの秒数を表す整数(関数引数またはSTDIN)を指定すると、その瞬間のシーンが表示されます。 これは開始シーンで、前輪の間に60のスペースがあります。 __ __ _/ \_ _/ \_ o o o o これは11秒後のシーンです。 __ __ _/ \_ _/ \_ o o o o これは、クラッシュ後の外観です(クラッシュ後にボンネットが立ち上がることに注意してください): __ __ _/ \/\/ \_ o oo o 私は2台の車がクラッシュするのを見たいだけなので、スペース、改行、++は関係ありません。 これはコードゴルフであるため、バイト単位の最短コードが優先されます。後で追加された回答は、現在受け入れられている回答よりも短い場合でも勝つことができます。

4
1009ピクセルを囲む
出力は、1009ピクセルを囲む形状です。 形状は、単一の閉じた、交差しないループの形をとる必要があります。 入力はゼロ以外の正の整数です。 各入力は一意の出力を生成する必要があります。つまり、各出力は、より低い入力を使用して生成された出力とは一意である必要があります。 勝利は、最大入力制限によって決定されます。 提出物の入力制限は、一意でない、または無効な出力を与える最低の入力よりも1少ないと見なされます。 たとえば、4ではなく1、2、または3の入力に対して有効で一意の出力が生成される場合、入力制限は3です。 ソースコードには1009バイトの制限があります。ドローがある場合、バイト数が最も少ないエントリが優先されます。 制限と説明: シェイプの最大サイズは109 x 109ピクセルです。サイズには、図形の描画に使用される線が含まれます。 線は一定の幅です。 囲まれたスペースは、行で完全に囲まれている必要があります-画像ファイルの境界は使用できません。 囲まれた1009ピクセルは、囲まれたスペースのみを指します。行は含まれません。 出力は画像です。 それ以上のグラフィック制限はありません-色、線の太さなど。 出力の一意性は、囲まれたスペースのみを指します。囲まれたスペースが一意でない場合、ラインの変更またはその他のグラフィックの変更は関係ありません。 形の翻訳はユニークではありません。回転、反射、およびその他の変換は一意と見なされます。 出力は再現可能でなければなりません—同じ入力は常に同じ出力を与えます 連続的であろうとなかろうと、出力間に関係がある必要はありません。 提出の「入力制限」以外には、定義済みの出力はありません。 他の入力や外部データの取得は許可されていません。 線は連続している必要があります。つまり、ピクセルが接触する必要があります(コーナーカウントに接触する)。 ピクセルは、描画方法で使用される「描画」の最小単位であり、必ずしも画面ピクセルに対応するわけではありません。 例: 有効な形状の例を次に示します。 次の形状は無効です。 編集:行タッチ: 囲まれたスペースは連続している必要があり、これはピクセルに触れることとして定義されます。触れるコーナーは重要です。 線は、外側のスペースを囲むことはできません。@Sparrが投稿したこの画像は、この点を示しています-各行の最初の形状のみが有効です。 線の外側が接触する場合がありますが、スペースを囲む方法ではありません。 接触する線は重ならない場合があります。たとえば、2つの接触する1ピクセルの太い線の合計の太さは2ピクセルで、1ピクセルではありません。

26
文字列をハッシュで囲む
私はすでにPythonでこれを作成しましたが、かなり短縮できるようです: txt = input("Type something.. ") c = "#" b = " " print(c * (len(txt) + 4)) print(c, b * len(txt), c) print(c, txt, c) print(c, b * len(txt), c) print(c * (len(txt) + 4)) したがって、ユーザーが次のように入力した場合: Hello World プログラムは次を印刷します。 ############### # # # Hello World # # # ############### …
24 code-golf  string 

23
シーザー等価
対応する文字間の距離(カウントアップ)が同じ場合、2つの文字列は「Caesarに相当」です。はい、私はこの用語を作りました。以下に例を示します。 「Abc」と「Cde」は同等であるため、 distance from a-c == 2 distance from b-d == 2 distance from c-e == 2 大文字小文字を区別しても違いはありません。 「Hello」と「World」はCaesarで同等ではありません distance from h-w == 15 distance from e-o == 10 distance from l-r == 6 distance from l-l == 0 distance from o-d == 15 「Abcd」と「Yzab」はCaesarと同等です distance from a-y = 24 …
24 code-golf  string 

6
レンガの構造は安定していますか?
標準的な石積みのレンガをとして表現しましょう[__](上部が開いているという事実を無視します)。これらのレンガを積み重ねると、レンガの構造では通常のように、他のすべてのレイヤーがレンガの半分だけオフセットされます。 [__][__][__][__] [__][__][__][__] [__][__][__][__] [__][__][__][__] したがって、各ブリックには最大で6つの隣接があり、2つのブリックが直接垂直に並ぶことは不可能です。 重要な点は、これらのレンガの配置は迫撃砲ではなく、単に重力によって一緒に保持されることです。したがって、構造内の各ブリックが安定していることが重要です。そうでなければ、構造全体が不安定になります。 個々のブリックが安定する可能性がある3つの方法があります。 地面のレンガ(レンガの一番下のライン)は安定しています。 直下に2つのブリックがあるブリックは安定しています: [__] <- this brick is stable [__][__] <- because these bricks hold it up 同じ側​​に上下にレンガがあるレンガはすべて安定しています。 [__] [__] [__] [__] <- these middle bricks are stable [__] [__] because the upper and lower bricks clamp them in [__] [__] [__] [__] …


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.