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

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

1
これはカルバン番号の候補ですか?
このチャレンジは、Generate Dennis Numbersと同じ精神で、 Legendary Challenge Writer™であるCalvin's Hobbies(現在はHelka Hombaに改名)へのオマージュ です。 カルビンはPPCGに非常に印象的な貢献者であり、全体で6番目に評判が高く、おそらく間違いなく私たち全員のスキルを書く最高の挑戦です。ただし、もちろん、この課題では、彼のユーザーIDに注目します。 26997は最初はあまりおもしろくないかもしれません。実際、 いくつかの点でほとんど興味深いものです。たとえば、次の26997 mod <n>特定の値のチャートは次のnとおりです。 n | 26997 % n ----+----------- 3 | 0 4 | 1 5 | 2 6 | 3 7 | 5 :( 8 | 5 9 | 6 10 | 7 ただし、26997は、で表現できる数少ない数字の1つです。ここで、整数は0以上です。(n * 10)n - nn …

6
ピザは公正ですか?
この質問は触発され、逆のです、この1。 デニス(E)、ドアノブ(D)、マーティン(M)、クリス(C)がピザを注文しました。長方形のピザは正方形のピースに分割され、各ピースには意図した食べる人がマークされています。 各文字の0個以上で構成される長方形のピザを与えて、次のことを決定するプログラムまたは関数を作成します。 各人物の各スライスはパス接続されています。これは、同じ文字はすべて互いに直接隣接する必要があることを意味します(斜めの接続はありません)。 1人あたりのスライス数はすべて同じです。 指定されたピザが公正かどうかを示すオプションの末尾の改行を使用して、真偽値を出力する必要があります。 有効なテストケース: DDDDDDDDDDDDMCCCCCCCCCCC DEEEEEEEEEEDMMMMMMMCCCCC DEEEEEEEEEEDMMMCCCCCCCCC DEEEEEEEEEEDMMMMMMMMCCCC DDDDDDDDDDDDMMMMMMMMMMMC DEMC DD EE MC MC EEDDMMMCCC EEEDDDMMCC 無効なテストケース: EDM EDMCCMDE DDDDDDDDDDDDMCCCCCCCCCCC DEEEEEEEEEEDMMMMMMMCCCCC DEEEEEEEEEEMDMMCCCCCCCCC DEEEEEEEEEEDMMMMMMMMCCCC DDDDDDDDDDDDMMMMMMMMMMMC DDMMEECC DMMEECCC バイト単位の最短コードが優先されます。

3
任意のアイスキューブトレイの充填
このスペースとXのグリッドが、奇妙な形の空の角氷トレイの断面を表していると仮定します。 X X X X X X XX X XX X XXXXXX XXXXXXXXXXXXX のない列はX、水を保持できないトレイの穴または隙間を表し、無限の容量の流しに流れ込みます。グリッドの左端または右端から落ちる水も、この無限のシンクに流れ込みます。 蛇口をトレイの上に置き、すべてのコンパートメントの水位が安定するまで水で満たす場合、満たされる正確なコンパートメントは、水流がトレイの上に配置された正確な場所に依存します。(はねのない、薄くて安定した水の流れを想定してください。) たとえば、蛇口Fが一番左のグリッド列の上にある場合 F X X X X X X XX X XX X XXXXXX XXXXXXXXXXXXX 水はXその列の最上部に落ちて左右に広がり、左半分が下の流しにこぼれ、右半分が2×1コンパートメントを満たします。コンパートメントが満たされると、水流の右半分は流し台に流れ込むだけで、どこでも水位は本質的に安定しています。 蛇口をオフにすると、トレイは次のようになります:(~水として) X X X X~~X X XX X XX X XXXXXX XXXXXXXXXXXXX 同様に、蛇口を次のように配置すると: F X X X X X X …

4
アーガイルアスキーアート
正の整数を取り込むプログラム(または関数)を作成します。 入力がの場合、1横に隣接する2つのダイヤモンドを印刷(または返し)し、それぞれの辺の長さを1スラッシュにします。 /\/\ \/\/ N1より大きいすべての入力についてN-1、隣接するダイヤモンドの各ペアの出力を調べて、2つの隣接するダイヤモンドの辺の長さの合計である辺の長さの間に新しいダイヤモンドを挿入します。この新しいダイヤモンドパターンを印刷(または返却)します。 2入力がの場合、出力を見て、12つの隣接するダイヤモンドがあり、両方とも辺の長さが1であることがわかります。そのため、それらの間に辺の長さ2(1 + 1)のダイヤモンドを挿入します。 /\ /\/ \/\ \/\ /\/ \/ 入力3について2は、2つの隣接するダイヤモンドのペアの間に辺の長さが3(1 + 2および2 + 1)の2つのダイヤモンドの出力を見て追加します。 /\ /\ / \ /\ / \ /\/ \/ \/ \/\ \/\ /\ /\ /\/ \ / \/ \ / \/ \/ パターンを続けると、出力4は次のようになります。 /\ /\ /\ / \ / \ /\ …

18
右揃えのテキスト
あなたの仕事は、文字列の入力と数字を受け取り、文字列を右に揃えて、テキストの幅を数字にすることです。行が長すぎる場合は、その行を分割して残りを次の行に置き、不要になるまで繰り返します。行が幅より短い場合は、スペースで埋めます。複数の改行が発生する可能性があり、他の単一文字と同様に処理する必要があります。 たとえば、文字列 Programming Puzzles & Code Golf そしてその数5は以下を生成します: Progr ammin g Puzzl es & Code Golf 一方、同じ文字列と数値で10は次のようになります。 Programmin g Puzzles & Code Golf 文字列 a b そして、5という数字は以下を生成します: a <-- note the 5 spaces b 最短のコードが勝ちます!
27 code-golf  string 

6
六角形の迷路の時間!
別の迷路チャレンジの時間ですが、あなたが知っているようにではありません。 このチャレンジのルールは、ほとんどの迷路チャレンジとは少し異なります。タイルタイプは次のように定義されます。 S:迷路の開始位置 E:取得しようとしている場所 0:交差できない壁 +:横断できる床 6つの方向のいずれかで移動できます:左上、右上、左、右、下左、または右下。 \ / -S- / \ 迷路はラップしません。目標は、から取得する最短パス文字列を見つけるSことEです。 入力: 入力は、示されている迷路のようなスペースで区切られた線です。後続スペースは行に続きません。 出力: 文字列R、LおよびF場所 R 右(時計回り)に60度回転します L 左(反時計回り)に60度回転します F あなたが指している方向に1スペース移動します 指さし始める left-up 最短パスは、訪問された位置の数ではなく、生成された文字列の長さによってカウントされます。プログラムは、ソリューションとして最短パスを印刷する必要があります。 迷路が解決できない場合は、出力する必要がありますInvalid maze!。 (>>>出力です) 0 0 0 0 0 + 0 + 0 0 0 0 + + 0 0 + 0 + 0 + …

9
キングオブザヒル-消防士
大草原の乾燥した夏です。この地域の4人の農民は、近隣の作物を燃やすことでトウモロコシの市場を独占できることに気付いています。しかし、そうするための戦略が必要です。それがあなたの出番です。 あなたの仕事はボットを書き、農家に何を燃やすかを伝えることです。目標は、未燃地の最大面積でゲームを終了することです。競技場は32x32グリッドです。各セルは次のいずれかです。 . - Ground @ - A bot # - Ash W - Wet ground 1,2,3,4,5, or 6 - Fire 火は1ターンごとに強さが増します。3以上になると、その横にあるセルを(水平または垂直に)起動します。火が6に達した後、灰に変わります。 各ターンで、ボットはSTDINとして、ボット開始x、ボット開始y、ボット現在x位置、ボット現在y位置、および改行で区切られたボードを受け取ります。例: 8 22 6 24 ................................ ................................ ................................ .....................1.......... ....................1#1......... ...................1#363........ ....................16@1........ .....................31......... ................................ .........1.1.................... ........15#62................... ........15@2.................... .........32..................... ................................ ................................ ................................ ................................ ................................ ................................ ................................ ................................ ................................ ....4.1......................... …

2
Vim-コメント行をコメント文字で囲む
今日、私はコードのセクションを次のように定義したいことが多いことに気付きました。 #################### # Helper Functions # #################### しかし、それは面倒です。次のような行があると仮定します。 # Helper Functions # vimそれを包むための最短のキーストロークのセットは何#ですか?このチャレンジでは、Shiftはキーストロークとしてカウントされません。 テストケース: Input: "#test test test#" Output: ################ #test test test# ################ Input: "#this is a nice block comment#" Output: ############################## #this is a nice block comment# ############################## Input: "# s p a c e s must be …
27 code-golf  vim  comment 

8
使用できないように見えるプログラミング言語を作成する(強盗のスレッド)
詳細については、copスレッドを参照してください。この質問への各回答は、そこで回答をクラックする必要があります。つまり、その回答で指定されたインタープリターで実行されたときに、入力で3番目に大きい整数を見つけるコードでなければなりません。 無効であることが判明したクラックを投稿した場合、それを削除する必要があり、同じ回答に対する別の試みを投稿する資格がありません。 得点 この質問の勝者は、成功したクラックの数が最も多い強盗です。

1
ASCIIスコア
一時フォルダの深さを掘り下げてみると、ピアノの作曲が見つかります。あいにく、これらの楽曲は音名と長さだけで書かれており、テキスト端末にしかアクセスできません。したがって、あなたの仕事は、コンポジションをASCIIアートとして表示するプログラムを書くことです。 入力 プログラムは、入力として2つの文字列を受け入れる必要があります。最初の文字列は、高音部記号(ト音記号付き)の音符を表し、2番目の文字列は、下部の譜表の音符を表します。 メモは科学的なピッチ表記で渡されます。トップスタッフのノートはいつもの間になりますC4し、C6包括的。下のスタッフのノートはいつもの間になりますC2し、C4包括的。 各ノートには、のいずれかになります期間、付属しています:1、2、4、8。これらはそれぞれ、音符全体(半音)、半音(最小)、4分音符(かぎ針編み)、および8分音符(四分音符)を表します。 その他の期間のノートは入力に表示されません。 入力内の音符と音符の分離方法、および各音符と他の音符の分離方法は、お客様の裁量によります。以下は、トップスタッフのサンプル入力です。 E4/4 A4/8 C#5/8 E5/2 ここでは、音符はスペースで区切られ、音符は音符とスラッシュで区切られています。これらのデリミタは固定されておらず、変更するか完全に省略するかを選択できます。 各譜表に少なくとも1つのメモがあると想定できます。入力に休符はありません。 出力 あなたのプログラムは、次の説明に従って、スコアをASCIIアートとして出力します。 音部記号は、出力の左側にある最初のものでなければなりません(2つの譜表間の距離は変更しないでください)。 ^ | | ------|/---- / -----/|----- / | ---/--__---- | / \ ---\-\|-|--- \ | / ------|----- | \_/ ----___----- / \ | ---\---|---- | | -------/---- / -----/------ ------------ 音符が譜表の中央線より下にある場合、音符のステム(円の隣の垂直線)は上を向いている必要があります。音符が譜表の中央線より上にある場合、下を向いている必要があります。音符が中央の行にある場合、ステムはどちらの方向を向いてもかまいません。(これに対する唯一の例外はボーナスであり、後述の8分音符を接続するときに発生します)。幹は円の上下の線から始まり、高さのある線でなければなりません6。 音符全体を除くすべての種類の音符には語幹があります。8分音符のフラグは、異なる行にある2つのスラッシュで表されます(下の例を参照)。 (4分音符と8分音符の)音符の先頭は、で表され(@)ます。空の音符の頭(半音と全音)は、( )ます。 …

10
フック長さ製品
A ヤング図は左詰め行及び上部詰め列のボックスの配置です。各ボックスについて、その上とその左のすべてのスペースが占有されます。 XXXXX XXX XXX X ボックスのフックの長さは、その行の右側にあるボックスの数であり、その列の下にあるボックスの数であり、それ自体も一度カウントします。たとえば、2番目のボックスのフックの長さは6です。 X**** X*X X*X X すべてのフックの長さは次のとおりです。 86521 532 421 1 ここでの目標は、フックの長さの積を計算することです8*6*5*2*1*5*3*2*4*2*1*1 = 115200。 (この式が重要な理由に興味がある場合は、フックの長さの式について読んでください。) 入力:行サイズのコレクション、[5,3,3,1]またはのような数字として、[[1,1,1,1,1], [1,1,1], [1,1,1], [1]]またはのような繰り返される単項記号として"XXXXX XXX XXX X"。リストは、必要に応じて昇順または降順で並べ替えることができます。リストは空ではなく、正の整数のみが含まれます。 出力:フックの長さの積。正の整数です。整数オーバーフローやランタイムについて心配する必要はありません。 特に若いダイアグラムまたは整数パーティションを扱うビルトインは許可されていません。 テストケース: [1] 1 [2] 2 [1, 1] 2 [5] 120 [2, 1] 3 [5, 4, 3, 2, 1] 4465125 [5, 3, …

25
文字列の反転と反転
文字列の反転と反転 チャレンジ この挑戦で。入力を出力または返す、反転および反転するプログラムを作成します。 まず、各文字をその文字コードに変換する必要があります。次に、それをbase-2に変換する必要があります。次に、その文字列を逆にする必要があります。その後、文字列を反転する必要があります(1-> 0および0-> 1)。最後に、それを基数2に変換してから、文字に変換し直す必要があります。文字が印刷不能になる場合は、オプションで出力できますが、削除する必要はありません。 H -> 72 -> 1001000 -> 0001001 -> 1110110 -> 118 -> v e -> 101 -> 1100101 -> 1010011 -> 0101100 -> 44 -> , l -> 108 -> 1101100 -> 0011011 -> 1100100 -> 100 -> d l -> 108 -> 1101100 …

7
ダイヤモンドタイルのスケールアップ
たとえば、次のように、通常の六角形にダイヤモンドを並べることができます。 ______ /_/_/\_\ /_/\_\/\_\ /\_\/_/\/_/\ \/_/\_\/_/\/ \_\/_/\_\/ \_\_\/_/ 上記のサイズのタイルを考慮します1(ダイヤモンドの側面は1つ/または\それぞれで作られているため)。サイズの同じタイリングは次の2ようになります。 ____________ / / /\ \ /___/___/ \___\ / /\ \ /\ \ /___/ \___\/ \___\ /\ \ / /\ / /\ / \___\/___/ \/___/ \ \ / /\ \ / /\ / \/___/ \___\/___/ \/ \ \ / /\ \ / …

6
C / C ++ポリグロットを書く
このチャレンジのコンセプトは非常にシンプルです。あなたがしなければならないのは、有効なCと有効なC ++の両方としてコンパイルするプログラムを書くことです!まあ、いくつかのキャッチがあります。プログラムは、各言語でコンパイルされたときに異なる動作をする必要があります。「異なる動作」と見なされるためには、プログラムは言語ごとに異なる出力を持っている必要があります。 ルール プログラムは有効なCとC ++の両方である必要があります プログラムには、コンパイルされた言語に基づいて異なる出力が必要です。 #ifdef __cplusplusまたはその他の「簡単な」プリプロセッサトリックは推奨されません。(ただし、他のプリプロセッサ操作はまったく問題ありません。) プログラムが何か異なることをすることを完全に明白に見せないようにしてください。 これは人気コンテストであるため、最も興味深く驚くべきソリューションを持っている人が勝者となります。楽しむ! 例: 私は自分のプログラムを作成して、これが#ifdefトリックを実行することでさえ可能かどうかを確認しました。 #include <stdio.h> #include <string.h> char *m="C++ rules!"; int t[11]={0,0,0,0,1,-1,-3,9,-8,82,0}; char tr(char c,int i) { return c+((sizeof('!')+1)&1)*t[i]; } int main() { int i = 0; for(;i<strlen(m);i++) { printf("%c",tr(m[i],i)); } printf("\n"); return 0; } このプログラムC++ rules!は、C ++およびCでコンパイルされたときに出力C++ stinksされます。 説明: 言語間の違いを引き起こすのはtr()関数です。CとC …

13
変異したソースコードを回復する
ラジウムの小さなサンプル、感電死したクジラ、3匹のグミベアを含む非常に珍しい事故で、The Management™のソースコードの一部が変更されました。The Management™のボスは、The Management™の「悪」計画を阻止しようとして、実際に責​​任を持っていたのはCops©であったことをほとんど知りません。Robbers®は元のコードを取得するために雇われました。これは、悪が嫌いな人がいるからです。 注:この課題は、Unscramble the Source Codeに大きな影響を受けています。 説明 これは警官と強盗の挑戦です。 警官は、タスク#1を実行する(実行タスク#2が、秘密に保たれていること、また、プログラムを書き込む)ことプログラム(突然変異コード)を記述します。 強盗は「突然変異」を逆転しようとすると、コードを実行そのタスク#2には、この元のコードを変更します。 このチャレンジでは、タスク#1はth素数を出力し、nタスク#2はthフィボナッチ数を出力nします(とにかくCops©によれば、これはなんとなく悪いことです)。フィボナッチ数列は(n=1→ 1; n=2→ 1; n=3→ 2; ...)として定義され、素数は(n=1→ 2; n=2→ 3; n=3→ 5; ...)として定義されます。 警官の目標は、タスク#1とタスク#2を完了するプログラムの違いを最小限に抑えながら、タスク#2を完了するコードを強盗が再作成するのを防ぐことです。 警官のルール 警官は2つのプログラム(タスク#1を完了するプログラムとタスク#2を完了するプログラム)を作成し、次の情報を公開します。 最初のプログラム(出力n番目の素数) 最初のプログラムと2番目のプログラム間のレーベンシュタイン編集距離 プログラミング言語の両方のプログラムが書き込まれていることを(両方のプログラムのために同じ言語である必要があります) 次の制限が両方のプログラムに適用されます。 長さは128文字以下でなければなりません。 印刷可能なASCII(および改行も許可されます)のみを使用する必要があります。 それらは実行するのに10秒未満でなければならn=45ず、どんなもののためにも正しい出力を生成する必要はありませんn>45。 ハッシュ関数または暗号化関数を使用してはなりません。 強盗ルール 強盗は、警官によって指定された編集距離で、警官のプログラム(タスク#1を完了する)をタスク#2(必ずしも警官によって書かれた元のプログラムではない)を完了するプログラムに変更しようとします。 すでにクラックされた提出物を再びクラックすることはできません(提出物をクラックした最初の強盗のみがクレジットを取得します)。 提出物をクラックした後、以下を実行してください。 この課題に付随する質問(リンク)への回答を投稿し、言語、ソリューション、および元の回答へのリンクを提供します。 投稿された回答にリンクするテキスト「クラック」を含むコメントを残します。 編集権限がある場合は警官の回答を編集します(権限がない場合は、必要な権限を持つ他の人があなたのために行うまで待つか、編集を提案します)。 得点 警官のプログラムが1週間ひびが入らない場合、警官はタスク2を完了する元のコードを(指定された編集距離で)投稿でき、それ以降は「安全」と見なされます。編集距離が最小の安全な送信が勝ちです。同点の場合、最短のプログラム(タスク#1を完了するオリジナル)が勝ちます。2つの提出物がまだ結び付けられている場合は、前の投稿が勝ちます。 強盗が警官の提出物を正常に解読した場合、強盗のスコアはその提出物の編集距離だけ上昇します。たとえば、編集距離が3の提出物と距離が5の提出物をクラックする強盗は、8ポイントを獲得します。最高スコアの強盗が勝ちます。同点の場合、スコアを獲得した強盗が最初に勝ちます。 リーダーボード ルビー、6(歴史家) レーベンシュタイン距離を計算する小さなツール コードスニペットを表示 …

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