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

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

14
多次元座標のインデックスを評価する
N次元座標のコレクションが提供されます。以下に例を示します。 {2,3,4} これは、2x、3y、4zの3次元配列と考えることができます。次元はいくつあってもかまいません。この例では、合計24のノードがあります。各ノードには、{x、y、z}を使用してインデックスを付けることができます。5番目のノードにアクセスするために提供されるインデックスは、以下の表に基づいて{0、1、0}になります。 ## | x y z 0 1 2 ----------- 0 | 0 0 0 1 | 0 0 1 2 | 0 0 2 3 | 0 0 3 4 | 0 1 0 5 | 0 1 1 6 | 0 1 2 7 | 0 …

15
オイラー法を実装する
この課題の目標は、オイラー法を使用して、形式f (n)(x)= cの微分方程式の解を近似することです。† 入力は、n番目の値がf (n)(0)の値を表す整数のリストになります。最初の整数はf(0)、2番目の整数はf '(0)のようになります。このリストの最後の整数は定数であり、常に同じままです。 また、ターゲット値を表す正の(ゼロ以外の)整数xも入力として提供されます(f(x)を推定しようとしています)。オイラー法のステップサイズは常に1になります。したがって、合計xステップを取る必要があります。 あなたはオイラー法とunfamliarている場合は、ここでの入力のための説明と詳細な例である[4, -5, 3, -1]、X = 8。 x f(x) f'(x) f''(x) f'''(x) 0 4 -5 3 -1 1 4-5 = -1 -5+3 = -2 3-1 = 2 -1 2 -1-2 = -3 -2+2 = 0 2-1 = 1 -1 3 -3+0 = -3 0+1 …

5
白い鍵盤上のピアノの和音
バックストーリー[これは真実ではありません] ピアノは次のように設定されています。 しかし、私のピアノでは、黒い鍵がすべて壊れています! それでも壊れたピアノでコードを弾きたいと思っています。 音楽では、コードは一緒に演奏されるノートのグループです。コードの入力を可能にするために、最初に半音とは何かを定義します。 半音とは何ですか? 半音は、西洋音楽で最も短い距離です。ピアノの上部を見ると、通常は黒鍵から白鍵に、またはその逆に移動できることがわかります。ただし、Band CとEandの間Fには黒いキーはありません。 コードとは? この課題の目的のために、コードを、特定の数の半音を間に挟んだ一連の音符と定義します。たとえば、4-3-3コードから始めてみましょうC(音楽の人にとって、これはFメジャーのV 7コードです)。から始めCます。私たちは4つの半音をカウントアップ:C#、D、D#、E。次のノートがありE、我々はその後3つの半音をカウントアップ:F、F#、G。次のノートがありG、我々はその後3つの半音をカウントアップ:G#、A、Bb。だから、私たちは得るC-E-G-Bb。わーい!しかし、待って... Bbは黒い鍵であり、それらは壊れています...しかし、から始めるとG、G-B-D-F!わーい! 入力 入力は、適切な形式の整数のリストとして提供されます。これは、上記のコードを表します。 出力 出力は、白いキーを使用するだけで開始できるメモのリストになります。キー名はすべて1文字であるため、これは最大7つのノートすべての文字列にすることもできます。空の出力も処理できる必要があります。 テストケース input -> output // comments 4 3 -> C F G // this is a major triad 3 4 -> D E A // this is a minor triad 4 3 3 -> …

10
エラーを処理するHello World
次の機能を持つプログラムまたは関数を記述します。 プログラム/関数は、最初に文字列Hello, world!を標準出力ストリームに書き込もうとします。(プログラム自体の些細な動作ではなく、I / Oに重点が置かれているため、この課題では他の形式の出力は受け入れられません。)成功した​​かどうかによって、次のようになります。 出力に成功した場合Hello, world!、プログラム/関数はそれ以上動作せずに終了します。 エラーのために正しい出力を生成できなかった場合、プログラム/関数は文字列Error writing "Hello, world!"を標準エラーストリームに書き込もうとします。(この課題では、エラー処理自体にエラー処理は必要ありません。) 明確化 プログラム/関数は入力なしで実行されます(動作するために入力が絶対に必要な言語で記述されている場合を除きます。その場合、可能な限り単純な入力で実行されます)。 出力を生成する場合、必要に応じて単一の末尾改行を生成することもできますが、これは必須ではありません。 プログラムが実装する「標準出力への書き込みエラー」の定義では、少なくとも以下のケースをエラーとして扱う必要があります。 標準出力が存在しない(つまりstdout、閉じたファイルハンドルであり、ファイル記述子1が存在しない、またはこれらのケースが、使用している言語とOSに変換される)。 空き領域が残っていないディスク上のファイルを参照する標準出力。 接続の終わりをすでに閉じている別のプログラムに接続する標準出力。 そして、少なくとも以下のケースを成功(すなわち、エラーではない)として扱う必要があります: 標準出力は端末に接続され、Hello, world!画面に表示されます。 標準出力はファイルに接続し、ファイルにHello, world!書き込まれます。 上記のルールに準拠している限り、出力エラーとして数える詳細を選択できます。 上記のエラー状況が発生しても、プログラム/関数がクラッシュすることはありません。使用する終了コードはあなた次第です。 プログラム/関数は、標準エラーストリームで発生したエラーの性質を記述しないでください。上で指定した文字列を出力するだけです。エラーが発生したかどうかに関係なく、標準エラー(コンパイラの警告など)の無関係な出力は、無条件に生成された場合にのみ有効です。 プログラムは1つのオペレーティングシステムでのみ動作する必要があります(ただし、上記のエラーが理にかなっている必要があります。ほとんどのマルチタスクコンシューマーオペレーティングシステムで動作するように十分に一般的なものにしようとしましたが、より奇妙なオペレーティングシステムでもかまいません。このチャレンジから除外されました)。プログラムが移植性がない場合は、提出するタイトルに、実行する必要がある前提条件をリストします。 このタスクは、すべての言語で可能であるとは限りません(すべての言語でプログラムがカスタムの方法で出力エラーを処理できるわけではありません)。可能な場合は言語を選択する必要があります。 プログラム/関数が機能することを確認してください!ライブラリ関数のドキュメントを信頼して、彼らが言うことを実行しないでください。単純な出力関数のエラー処理は、理論的には関数がエラーを処理すると主張している場合でも、実際には壊れていることがよくあります。 テストケース bashLinuxで上記の各エラー状態をシミュレートする方法を次に示します(Linuxを使用する必要はありませんが、これをテストするのが最も簡単なシステムである可能性があります)。 your_program_here >&- # nonexistent stdout your_program_here > /dev/full # out of disk space mkfifo test # note: change "test" …

4
画像の「監視」
問題: この挑戦は私が抱えていた本当の問題から来ています。職場でデュアルモニターをセットアップしていて、壁紙として次の画像を使用したいと考えています。 しかし、私のモニターにはかなり重要なベゼルがあり、背景を設定すると、次のようになり、桟橋が表示されます(appiers?)。 以下の画像のように、中央を切り取った画像を作成し、元のサイズに戻すことでこれを解決できました。 チャレンジ: 画像を取り込み、デュアルモニターセットアップで使用するために "監視"するプログラムを作成します(つまり、画像の中央部分を削除します(ベゼルがある場所))。ルールは次のとおりです。 パス(文字列引数など)として、またはファイル選択ダイアログの形式で画像を受け入れる完全なプログラムである必要があります。 プログラムは、画像の中心から切り取るための垂直線の数(幅が1ピクセル)を入力として受け取る必要があります。 トリミングは元の画像の中央(幅方向)から行う必要があります 結果の画像は、入力画像の元のサイズに再スケーリングする必要があります。(半分を個別にスケーリングしてから連結したり、連結してからスケーリングしたりできます。個別にスケーリングすると、より良いイメージ/効果が得られますが、現実の世界ではほとんど目立ちません) 背景画像は一般的に均一であるため、この課題を簡単にするために、入力画像のピクセル数は偶数になり、削除する線の数も均一になります。 この挑戦はコードゴルフです-バイトで最短のコードが勝ちます 幸運を!

5
ハミング距離シーケンスの数を数える
等しい長さの2つの文字列間のハミング距離は、対応するシンボルが異なる位置の数です。 してみましょうP長さのバイナリ文字列にするnとT長さのバイナリ文字列です2n-1。の左から右へのすべての-lengthサブストリングn間のハミング距離を計算し、それらを配列(またはリスト)に入れることができます。PnT ハミング距離シーケンスの例 ましょうP = 101とT = 01100。このペアから取得するハミング距離のシーケンスは2,2,1です。 仕事 増加のためnで始まるn=1、バイナリ文字列のすべての可能なペアを検討P長さのnとT長さのを2n-1。その2**(n+2n-1)ようなペアが存在するため、ハミング距離のシーケンスが多くなります。ただし、これらのシーケンスの多くは同一です。タスクは、どれがどれだけ異なるかを見つけることnです。 コードは、の値ごとに1つの数値を出力する必要がありますn。 スコア あなたのスコアは、nあなたのコードが私のマシンで5分間に達成した最高点です。タイミングは、そのためだけの時間ではなく、合計実行時間に対するものnです。 誰が勝ちますか 最もスコアの高い人が勝ちます。2人以上の人が同じスコアで終わる場合、それが勝つ最初の答えです。 回答例 ためにnから1の8最適な答えがあります2, 9, 48, 297, 2040, 15425, 125232, 1070553。 言語とライブラリ 利用可能な任意の言語とライブラリを使用できます。可能であれば、コードを実行できるようにするとよいでしょう。そのため、可能であれば、Linuxでコードを実行/コンパイルする方法の完全な説明を含めてください。 マイマシンタイミングは64ビットマシンで実行されます。これは、8GB RAM、AMD FX-8350 Eight-Core Processor、Radeon HD 4250を備えた標準のUbuntuインストールです。これは、コードを実行できる必要があることも意味します。 主要な回答 11におけるC ++ feersumによる。25秒。 11でC ++アンドリュー・エプスタインによります。176秒。 Neil によるJavascriptの10。54秒。 9でHaskellの nimiによります。4分59秒。 8でJavascriptを fənɛtɪkによります。10秒。

2
双方向クインチェーン
PPCGはすでに十分な数のクインを持っていません... チャレンジ: あなたの仕事はプログラム「A0」を作成することです。このプログラムを入力なしで実行すると、何も出力されません。このプログラムを入力して実行すると、「A1」が出力されます。「A1」を入力なしで実行すると、「A0」が出力されます。"A1"を入力で実行すると、 "A2"が出力されます。「A(k)」は、入力なしで実行すると「A(k-1)」を出力し、入力付きで実行すると「A(k + 1)」を出力します。 細部 この課題は十分に単純だと思います。本当に他のルールはありません。ところで、すべてのプログラムには、少なくとも1バイトが含まれている必要があります。入力はASCII文字のみで構成されると想定して、必要に応じて空白を無視してもかまいませんが、特定の入力を指定することはできません。出力はSTDOUTまたはSTDERRのいずれかになりますが、プログラムはすべて同じものに出力する必要があります。もう1つにもテキストが含まれている可能性があります(そのため、STDOUTに出力してエラーで終了する場合があります)。それを指摘してくれた@Dennisに感謝します。 すべてのプログラムは同じ言語である必要があり、各プログラムは他のプログラムとは異なる必要があります。 スコアはプログラム「A0」の長さに等しい。これはコードゴルフのチャレンジなので、最低のスコアが勝ちます!

4
ミアセットの順序
サイコロゲームMiaは、サイズ2のセットの非常に重要な順序を導入します。 {3,1} < {3,2} < {4,1} < {4,2} < {4,3} < {5,1} < {5,4} < {6,1} < {6,5} < {1,1} < {2,2} < {6,6} < {1,2} 一般に、タプル内の順序は重要{x,y}={y,x}で {1,2}はなく、何よりも大きく、ペアは非ペアよりも大きく、同数の場合は数値によって決定されます。 ここで、nサイコロを使用したいとします。また、サイコロにはm顔があります。 例: {1,5,3,4} < {1,2,6,3} 5431 <6321以降 {1,2,3,5} < {1,1,5,6} < {1,1,5,5}, {1,1,6,6} < {1,1,1,3} < {2,2,2,3} < {1,1,1,1} < {1,2,3,4} {2,2,5} …

3
非単純なリーマンゼロの虚数部
前書き リーマン仮説によれば、リーマンゼータ関数のすべてのゼロは、負の偶数の整数(トリビアルゼロと呼ばれます)または1/2 ± i*t実t数値の形式の複素数(非トリビアルゼロと呼ばれます)のいずれかです。この課題では、虚数部が正である非自明なゼロのみを考慮し、リーマン仮説が真であると仮定します。これらの重要なゼロは、それらの虚数部の大きさによって並べ替えることができます。最初のいくつかはおよそ0.5 + 14.1347251i, 0.5 + 21.0220396i, 0.5 + 25.0108576i, 0.5 + 30.4248761i, 0.5 + 32.9350616iです。 チャレンジ 整数与えられN、出力の虚部Nリーマンゼータ関数の番目の非自明なゼロは、最も近い整数に丸め(丸い半アップ、そう13.5に丸めることになります14)。 ルール 入力と出力は、ご使用の言語で表現可能な整数の範囲内になります。 先に述べたように、この挑戦​​の目的のために、リーマン仮説は真実であると仮定されます。 入力がゼロインデックスか1インデックスかを選択できます。 テストケース 次のテストケースは、インデックスが1つあります。 1 14 2 21 3 25 4 30 5 33 6 38 7 41 8 43 9 48 10 50 50 143 100 237 …

4
ウェブカメラのライトを点滅させてください!
この課題は、ツェッペリンによるブリンクザキャップスロックに触発されました。 ほとんどのウェブカメラは、スパイを防止するためのハードウェアメカニズムによって制御され、ウェブカメラが使用されているかどうかを示す小さな統合LEDライトを備えています。 あなたの仕事はそれを点滅させることです: それをオン。 0.5(±0.1)秒待ちます。 もう一度オフにします。 0.5(±0.1)秒待ちます。 繰り返す。 可能であれば、GIFまたはWebカメラの点滅のビデオを含めてください。回答にGIFがない場合は、実行中のプログラムのGIFを追加してください。 ルール 言語に1秒未満のsleepコマンドがない場合、プログラムは追加のバイトのペナルティで、代わりに1秒の遅延を使用することがあります。(置換.5で1) 言語が何らかの理由でをサポートしていない.5場合、ペナルティは2バイトです。(置換0.5で1) ユーザーが停止しない限り、プログラムはループする必要があります。 LEDはオンまたはオフのどちらでも起動できます。より有益な方を使用できます。 LEDに消灯遅延がある場合、追加のバージョンを提供する場合を除いて、それを考慮する必要はありません。 詳細については、このコメントとその回答を参照してください。 得点 これはcode-golfであり、バイト単位での最短の回答が優先されます。

11
次数nまでの可変グループのすべての組み合わせを作成する
仕様 与えられたm変数は、次までのすべての組み合わせを作成しますn。例えば、 2つの変数(aおよびb)を順序にマッピングする出力は次の1ようになります。 a b ab 2つの変数(aおよびb)を順序にマッピングする出力は次の2ようになります。 a a 2 b b 2 ab a 2 b ab 2 a 2 b 2 2つの変数(aおよびb)を順序にマッピングする出力は次の3ようになります。 a a 2 a 3 b b 2 b 3 ab a 2 b a 3 b a 3 b 2 ab 2 ab 3 a …

4
終了しますが、Windowsファイルです!
実行時に自分自身を現在のディレクトリに、自分自身という名前のソースファイルに作成するクインを書き込みます。ここではWindowsを使用するため、ファイル名(したがってクイン)には次の制限が必要です。 これらの文字はどれも \ / : ? * < > | 211 255文字未満 制限と仮定 あなたのコードは完全なプログラムでなければなりません(結局それは実行されるでしょう)。 ソースファイルからのコピーはありません。 名前にQuineが含まれている別のファイルがないと想定できます(Quine(1)が生成されるため)。 エラーは許可されます(エラーがソースコードに入らない限り) これはcode-golfで、バイト単位の最短コードが優先されます。 編集する 多分私ははっきりしていませんでした、クインの名前のファイルは実際にクインを含まなければなりません。私の悪い。

8
AWGをインチに変換
AWG(アメリカンワイヤーゲージ)は、ワイヤーサイズを指定する一般的な方法です。この課題におけるあなたの仕事は、与えられたゲージからインチのワイヤーの直径に変換することです。 から4/0までのゲージのサイズ(インチ)を40以下の表に示します。 ゲージからインチ表 | AWG | Diameter (Inches) | |-----|-------------------| | 4/0 | 0.46 | | 3/0 | 0.4096 | | 2/0 | 0.3648 | | 1/0 | 0.3249 | | 1 | 0.2893 | | 2 | 0.2576 | | 3 | 0.2294 | | 4 | 0.2043 | …

3
エラトステネスシャッフル
チャレンジ 1行の入力を受け入れ、その文字に対して非常に具体的で奇妙に馴染みのあるシャッフルを実行し、結果を出力する関数またはプログラムを記述します。 必要なシャッフルは、次のアルゴリズムを使用して説明できます。 入力の各文字に1ベースのインデックスでラベルを付けます。 文字番号1を出力として書き込みます。 文字番号2から始めて、文字2自体を除いて、1文字おきに順番に出力に書き込みます。つまり、4、6、8、10などの文字を出力として書き込みます。 、nはまだ出力として書かれていない次の文字番号で始まる出力にすべてのn番目の文字を書き、除く文字nは自分自身を、あなたはすでに出力に書き込まれている可能性(数値ラベルで)他の文字を除きます。 出力に新しい文字を追加し続ける限り、手順4を繰り返します。 残りの文字を順に出力に書き込みます。 例 文字にラベルを付けます。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 OLDDOCYAK 'SBEAUTYCORNER 2.出力する最初の文字を書き込みます。 1 2 3 4 5 6 7 8 9 …
9 code-golf 

2
通常のクインでもあるエラー(または警告)クイン[クローズ]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 3年前休業。 (古い質問に対するこのコメントに触発されました。) バックグラウンド エラーQUINE(も「Kimian QUINE」として知られている)がコンパイルされ、プログラムまたは実行され、同じプログラム自体にテキスト、および何もを持っているエラーメッセージを出力するようにコンパイラ/インタプリタ/ランタイムが発生します。この課題のために、警告も含めて「エラー」を広く定義しています。 仕事 この課題では、エラークインでもあるクインを探しています。プログラムを実行すると、プログラムはそれ自体のソースコードを通常どおり(つまり、エラー/警告メッセージとしてではなく)印刷する必要があります。これは適切なクインでなければなりません(つまり、プログラムの一部は出力の別の部分をエンコードする必要があります)。また、プログラムをコンパイルして実行すると、必要がありますまた、プログラムのソースコードを起こさない-と何も-実装によってエラーや警告メッセージとして印刷します。(これは、プログラムの正常な実行を妨げる言語では、コンパイル時エラーを使用できないことを意味することに注意してください。)つまり、プログラムのソースコードは、各メソッドを介して2回出力されます。 明確化 ほとんどの場合、エラー/警告メッセージであるかどうかは明らかです。ここでは2つを区別していません。あいまいな場合は、エラー/警告メッセージを、実装によって出力される任意のテキストとして定義します。1。コマンドの実行以外の結果(または言語で最も近い同等のもの)。または2.出力として生成されたコマンドへの入力の一部ではなかった。 クインのエラー/警告部分は適切なクインである必要はありません(ほとんどの場合、ほとんどのエラーメッセージと警告メッセージにはかなりの量の固定テキストが含まれているため、偶然です)。 プログラムが複数のエラー/警告を出力することは許容されます。これらは一緒に連結されたときにプログラムのソースを形成します。ソースに表示されないエラー/警告を出力することはできません。 多くの課題とは異なり、コンパイラに与えられたスイッチとプログラムのファイル名は、この課題に非常に関連している可能性があります。それ以外の場合はチャレンジできない可能性があるため、ここで柔軟に対応しますが、通常とは異なる方法で実装を実行する場合は、PPCGルールがそのためにバイトペナルティを課すことに注意してください(追加の文字数に等しい)プログラムを実行するには、最短の「通常の」方法でコマンドラインに追加する必要があるため、投稿でペナルティのサイズを指定する必要があります。(たとえば、使用しているインタープリターがファイルからプログラムを読み取り、ファイル名に特定の制限がない場合、プログラムを実行する最も短い通常の方法は、1文字のファイル名を持つファイルからです。したがって、 使用するコンパイラ/インタプリタのバージョンが適切である可能性があるため、提出の一部として、プログラムが動作する特定のコンパイラまたはインタプリタ、および必要なバージョンを明記してください。(たとえば、Cの提出では、ヘッダーに「C(gcc 6.2.0)」と記載される場合があります。) このタスクはすべての言語で実行できるとは限らないことに注意してください。現在の言語では、最も簡単な方法は、テキストの一部をカスタマイズできるエラーまたは警告メッセージを見つけることです(メッセージで引用される名前を変更することにより、ファイル名は一般的な選択肢です)ここでは、1つだけではありません)。テキストが修正されたエラーおよび警告メッセージのみを使用してこれを行う方法を誰かが見つけた場合、私は特に感心します(そして驚かれます)。 勝利条件 これはコードゴルフの課題であるため、エントリのバイト数が少ない方が良いと見なされます。そのため、プログラムがまったく機能していない場合は、プログラムを最適化して、バイト数を可能な限り少なくする必要があります。(ただし、特に短い言語のエントリがある場合は、特に別の言語の場合は、落胆しないでください。ここで本当に探しているのは、プログラムの背後にある特定のアルゴリズムまたはアイデアをできるだけ短くすることですが、複数の異なる言語のソリューション、または異なる原理に依存するソリューションは常に価値があります。)

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