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

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

2
XKCD:キーボードマッシュ異常
別のXKCDに触発された競争。これはKeyboard Mashに基づいています。 入力文字列が与えられたら、標準のUS QWERTYキーボードの 1行に大部分が入力されたと仮定して、異常な文字を特定します。入力文字列にはシフトされたキーストロークを含めることができますが、キャリッジリターン(Enter)、CTRL / ALTの影響を受ける文字、スペース、タブ、およびバックスペースは含まれません(これはばかげているためです)。このチャレンジでは、テンキーはキーボードの一部とは見なされません。 課題は、単一の文字列の個々の文字の大半と同じキーボード行にない文字を出力することです。出力には、各異常文字が1回だけ含まれ、他の文字は含まれません。 2つ以上の行で異常な文字の数が等しい場合、タイブレークは次の順序で決定されます。 最短の一意のリスト 一番上の行 入力 STDIN、ARGV、または関数パラメーターのいずれかを介した文字列 出力 STDOUTへの文字列または関数が戻ります。それぞれの異常なキャラクターは一度だけ持つべきですが、注文する必要はありません。 例 入力: FJAFJKLDSKF7KFDJ 出力: 7 入力: ASDF11111の 出力: ASDF 入力: lkjrhsDdftkjhrksRjd 出力: rtR 入力: } * 3%&2098 @ $ 2k234#@ $ M 出力: } 返された一番上の行リスト 入力: ASD!@#Vcx 出力:!@# 返される最短の一意のリスト 入力: ASdf1233qwER 出力: 123 返される最上部の最短リスト 入力: …
16 code-golf 

5
Code Golf:Googleの結果の解析
Googleで何かを検索すると、結果ページ内で、ユーザーは結果の最初のページの緑色のリンクを見ることができます。 可能な限り短い形式で、バイト単位で、任意の言語を使用して、stdoutへのリンクをリストの形式で表示します。スタック交換クエリの最初の結果の例を次に示します。 入力: 選択:URL(www.google.com/search?q=stackexchange&ie=utf-8&oe=utf-8)または単にstackexchange 出力: french.stackexchange.com/, stackoverflow.com/, fr.wikipedia.org/wiki/Stack_Exchange_Network, en.wikipedia.org/wiki/Stack_Exchange,... ルール: 結果がhttps://www.google.comの検索と同じである限り、URL短縮サービスまたは他の検索ツール/ APIを使用できます。 プログラムにWebブラウザーを開くなどの副作用があり、暗号化されたGoogle html / jsページがレンダリング時に読み取られる場合は問題ありません。 ブラウザのプラグイン、ユーザースクリプトを使用できます... stdoutを使用できない場合は、たとえばを使用して画面に印刷します。ポップアップまたはjavascriptアラート! 終了/または開始http(s)://は不要です 他のリンクは表示しないでください 最短コードが勝ちます! 幸運を ! 編集:このゴルフは07/08/15を終了します。

1
シュートアピアリング
梨とスチール シュートの 5つの画像を次に示します。 A:B:C:D:E: これらはサムネイルのみです。クリックするとフルサイズになります。 (Algodooで作成しました。) このクラスの画像には、常に次のプロパティがあります。 背景は常に400×400ピクセルです。(SEイメージは非可逆圧縮されるため、完全に白ではない場合があります。) それらは1〜4個の同一の梨を持ち、それぞれが(ほぼ)任意の方法で回転して配置されます。 彼らは、画像の下部に到達する1つの垂直スチールシュートを持っています。 シュートの下部を除いて、シュートと梨の境界ボックス(境界ボックスの例)は決して画像境界に触れたり、境界から出たりすることはありません。 梨のバウンディングボックスが互いに重なることも、シュートと重なることもありません。 B、C、およびDのように、梨はシュートの傾斜部分の下にある場合があります。(したがって、シュートのバウンディングボックスはナシのバウンディングボックスと重なる場合があります。) シュートは、ナシのすべてのバウンディングボックスがその上に自由に収まるだけの十分なスペースがあり(「ベアフィット」ケースはテストされない)、コラム部分の一部が見える限り、任意の水平および垂直位置にできます。 チャレンジ そのような画像を取り込み、同じ場所にシュートがある別の400×400画像を出力するプログラムを作成しますが、梨はすべてシュートの上にくるように再配置されます(そうすれば、それらはシュートに落ちてジュースになります)。 出力イメージの要件は次のとおりです。 入力画像内のすべての梨は、シュートの上、漏斗の左端と右端の間にあるように再配置する必要があります。(エッジを超えることはできません。) 各ナシは、回転角度を維持する必要があります。(したがって、梨を切り直して貼り付けるのではなく、梨を切り取って貼り付ける必要があります。) 梨は互いに重なり合ったり、互いに触れたり、シュートに触れたりしてはなりません。(ただし、梨の境界ボックスは重なる場合があります。) 梨が触れたり、画像の境界から出たりしてはいけません。 5つのサンプル画像の有効な出力の例を次に示します。 A:B:C:D:E: これらはサムネイルのみです。クリックするとフルサイズになります。 Eの入力画像はすでに有効な出力でしたが、技術的に必要ないときに梨を再配置するだけで十分であることに注意してください。 詳細 stdin /コマンドライン/関数呼び出しを使用して、画像のファイル名または生の画像データを取得します。 選択した名前のファイルに画像を出力するか、生の画像ファイルデータを標準出力に出力するか、単に画像を表示します。 一般的なロスレス画像ファイル形式を使用できます。 グラフィックおよび画像ライブラリを使用できます。 あちこちにあるいくつかの不正確なピクセル(損失など)が大したことではありません。視覚的に間違っていることがわからない場合は、おそらく大丈夫です。 バイト単位の最短コードが優先されます。Tiebreakerは、最も投票数の多い投稿です。

8
最小の完璧な二乗正方形を印刷する
広場を二乗することだけで、他の正方形を使用して、正方形のタイル張りのプロセスです。このタイリングが異なるサイズの正方形のみを使用する場合、完全であると見なされます。可能な限り最小二乗完璧な正方形は 21種類の正方形を使用して、タイル112x112の正方形です。 この正方形のアスキーアート版を以下に作成しました。 ################################################################################################################ # ## ## # # ## ## # # ## ## # # ## ## # # ## ## # # ## ## # # ## ## # # ## ## # # ## ## # # ## ## # # ## ## # # ## …

2
マッチスティック方程式
この課題におけるあなたの仕事は、このような「マッチスティック方程式」を分析することです... ...そして、一致を再配置することで有効な方程式に変換できるかどうかを調べます。もしそうなら、あなたはそうするための動きの最小数と結果の方程式を出力することになっています。 入力 入力は、STDINから読み取ることができる文字列で、関数の引数として取得するか、ファイルに保存することもできます。これは、マッチスティック配置を表す方程式であり、次のEBNFを使用して説明できます。 input = term, "=", term ; term = number | (term, ("+" | "-"), term) ; number = "0" | (numeralExceptZero , {numeral}) ; numeralExceptZero = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; numeral = …
16 code-golf 

3
汚染されたワインのテストスケジューラを構築する
最近、Puzzling.SEで、両方のコンポーネントが飲まれた場合にのみ毒が活性化する場合、より多くのボトルのうち2本が毒されるかどうかを判断することについて書いた問題がありました。最終的にはかなりの試練となり、ほとんどの人が完全に異なるアルゴリズムを使用して18人または19人の囚人に追い詰めました。 元の問題ステートメントは次のとおりです。 あなたはパーティーを投げるのが大好きな中世の王国の支配者です。前回あなたのワインボトルの1つを毒物にしようとした宮廷人は、あなたがたった10人の囚人で1,000本のうちどのボトルに毒物を入れたのかを特定できたことに激怒しました。 今回は彼は少し巧妙です。彼は複合毒を 開発しましたP。2つの個別に無害な成分が混合した場合にのみ致命的なバイナリ液体。これは、エポキシの仕組みに似ています。彼はあなたに1,000本のワインボトルの箱を送りました。1つのボトルにはコンポーネントがC_aあり、別のボトルにはコンポーネントがありますC_b。(P = C_a + C_b) 両方の成分を飲んだ人は誰でも、液体を吸収した日のいつでも、最終成分を飲んだ夜の真夜中に死にます。各毒成分は、2番目の成分が活性化するまで体内に留まるため、ある成分を次の日に飲み、別の成分を翌日飲むと、2日目の終わりの深夜に死んでしまいます。 次のパーティーの2日前があります。どの2本のボトルが汚染されているかを特定するためにテストに使用する必要がある囚人の最小数と、その数の囚人を追跡するために必要なアルゴリズムは何ですか? ボーナス さらに、20人の囚人を自由に使用できる固定限度があると仮定します。理論的にテストして、影響を受けたボトルについて正確な結論を出すことができるボトルの最大数はいくつですか。 あなたの仕事は、ボーナスの問題を解決するプログラムを構築することです。与えられたn囚人たちが、あなたのプログラムがうちの2本の毒の瓶を検出することができますテストスケジュール考案ますmボトルを、どこmできるだけ大きいです。 あなたのプログラムは、最初に入力としてN、囚人の数、つまり数を取ります。次に出力されます: M、テストしようとするボトルの数。これらのボトルにはからのラベルが付け1られMます。 N 各囚人が飲むボトルのラベルを含む行。 プログラムは、最初の行にある囚人1、次の行にある囚人など、初日に死亡した囚人を入力として受け取ります2。その後、次のように出力されます。 N各囚人が飲むボトルのラベルを含むより多くの行。死んだ囚人には空白行があります。 プログラムは、2日目に死亡した囚人を入力として受け取り、2つの数字を出力します。AそしてB、プログラムが毒を含むと考える2つのボトルを表します。 2人の囚人と4つのボトルに対する入力例は、ボトルが毒されている場合、次のように1なり3ます。 > 2 // INPUT: 2 prisoners 4 // OUTPUT: 4 bottles 1 2 3 // OUTPUT: prisoner 1 will drink 1, 2, 3 1 4 // OUTPUT: prisoner …

7
騎士がチェスボードにとどまる確率は何ですか?
チェス盤のサイズと騎士の初期位置を考慮して、k移動後に騎士がチェス盤の内側になる確率を計算します。 注意: 騎士は、等しい確率で8つの可能なすべての動きをします。 騎士がチェス盤の外に出ると、内部に戻ることはできません。 入力 入力は次の形式のカンマ区切りです: l,k,x,y ここlで、チェス盤の長さと幅k、ナイトの移動数、ナイトxの初期位置のx位置、ナイトの初期位置のyy位置です。0,0は、ボードの左下隅であり、ボードのl-1,l-1右上隅であることに注意してください。 アルゴリズム: ナイトの初期座標から始めます。この位置で可能なすべての動きを行い、これらの動きに確率を掛けます。各動きが関数を再帰的に呼び出すと、終了条件が満たされるまでこのプロセスを続けます。終了条件は、ナイトがチェス盤の外にある場合、この場合は0を返すか、必要な移動数が使い果たされた場合、この場合は1を返します。 再帰の現在の状態は、現在の座標とこれまでに実行されたステップ数にのみ依存していることがわかります。したがって、この情報を表形式で記憶できます。 クレジット このチャレンジはもともと、CC BY-NC-ND 2.5 INライセンスの下で公開されたcrazyforcode.comのブログ投稿からのものです。少し変更して、少し難しくしました。
16 code-golf  chess 

4
ASCIIフィボナッチ時計を作成する
誰かがフィボナッチ数を使って本当に派手な時計を作りました。好きなように!これを作り直しましょう。 クロックは、1から始まる最初の5つのフィボナッチ数に対応する5つのセクションで構成されます(つまり、1、1、2、3、5)。 ccbeeeee ccaeeeee dddeeeee dddeeeee dddeeeee 時計は、5時間単位で12時間を表示できます。以下にその仕組みを示します。時間7:20を考慮してください。7時間目は、次のようにフィボナッチ数に分解できます。 7 = 2 + 5 5分の4単位もあります。4は次のように分解できます。 4 = 2 + 1 + 1 現在、時間は赤で、分単位のチャンクは緑で表示され、時間と分で数字が使用されている場合は青で表示されます。番号がまったく使用されない場合は、白のままです。したがって、上記は次のように表示されます。 BBGRRRRR BBGRRRRR WWWRRRRR WWWRRRRR WWWRRRRR しかし、待ってください、まだあります。上記の分解だけが可能性ではありません。7 = 3 + 2 + 1 + 1また4 = 3 + 1、とを書くこともできます。 GGRWWWWW GGBWWWWW GGBWWWWW GGRWWWWW BBBWWWWW or BBBWWWWW BBBWWWWW BBBWWWWW BBBWWWWW …

10
グラフのリダイレクトを解除する
前書き この課題では、自己ループのある有向グラフが与えられますが、タスクはそれを自己ループのない無向グラフに変換することです。 入力 入力は、頂点が{0, 1, ..., n-1}自然数に設定された有向グラフですn ≥ 0(または{1, 2, ..., n}、1ベースのインデックス付けを使用する場合)。グラフはlength- nlist として与えられます。LここでL[i]は、vertexの外側のリストiです。たとえば、リスト[[0,1],[0],[1,0,3],[]]はグラフを表します .-. | v '-0<--2-->3 ^ | | | v | 1<--' ネイバーリストは必ずしも順序付けられているわけではありませんが、重複がないことが保証されていることに注意してください。 出力 出力は、次のように取得された、入力と同じ形式の別のグラフです。 すべての自己ループを削除します。 残りの各エッジについてu -> v、反転エッジがv -> uまだ存在しない場合は追加します。 入力と同様に、出力グラフの隣接リストは順序付けられていない場合がありますが、重複リストを含めることはできません。上記のグラフの場合、正しい出力はになり[[1,2],[0,2],[0,1,3],[2]]、グラフを表します 0<->2<->3 ^ ^ | | v | 1<--' ルール グラフでは、0ベースまたは1ベースのインデックスを使用できます。機能と完全なプログラムの両方が許容されます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース これらのテストケースでは、0ベースのインデックス付けを使用します。1から始まる場合、各数値をインクリメントします。これらの隣接リストは昇順でソートされますが、必須ではありません。 [] -> [] …

16
Cookieをコーディングしてください
チャレンジ 入力に応じた種類のASCII Cookieをコーディングします。 入力 クッキーの種類。これは、「プレーン」、「チョコレート」、または「ナッツ」の3つの文字列のいずれかです。関数の引数、stdin(またはそれに最も近いもの)、またはファイルの引数の場合があります。 出力 ASCII Cookie。下記参照。 でなければなりません ___ / \ | | \___/ プレーン入力の場合、 ___ /. .\ | . | \___/ チョコレート入力用、最後に ___ /^ \ |^ ^| \___/ ナット入力用。 その他の情報 これは私の最初の挑戦であり、できる限り簡単です。建設的なフィードバックは大歓迎です。 そのためには、あらゆる手段を使用します。 末尾のスペースは問題ありません。 これはコードゴルフチャレンジであるため、9日間(2015年8月12日水曜日)の終わりに最短エントリーが勝ちます。 ありがとうございました! 勝者は41バイトのPythを使用したJakubeです。参加してくれたすべての人に感謝します。私は今、より複雑な課題を思い付くことに自分自身を任せます。

2
数を表現する-現代の「Des Chiffres et des Lettres」
数を表現する 60年代にフランスはテレビゲーム番組「Des Chiffres et des Lettres」(Digits&Letters)を発明しました。ショーのディジット部分の目標は、いくつかの半ランダムに選択された番号を使用して、特定の3桁のターゲット番号にできるだけ近づけることでした。競技者は次の演算子を使用できます。 連結(1と2は12) 加算(1 + 2は3) 減算(5-3 = 2) 除算(8/2 = 4); 除算は、結果が自然数である場合にのみ許可されます 乗算(2 * 3 = 6) 括弧、操作の通常の優先順位をオーバーライドするには:2 *(3 + 4)= 14 指定された各番号は、一度だけ使用できるか、まったく使用できません。 たとえば、ターゲット番号728は、次の式を使用して、6、10、25、75、5、および50の番号と正確に一致させることができます。 75 * 10 - ( ( 6 + 5 ) * ( 50 / 25 ) ) = 750 - ( …

3
レースオブザディジット
個別の1桁の正の整数の開始順序と、トラックの長さを入力出力として指定するか、番号の終了順序を返すプログラムまたは関数を作成する必要があります。 入力[5,1,2,6,7] and 14は次のレースを定義します。 -------------- 76215 -> -------------- レースのルール トラックはラップアラウンドし、桁は複数のラップを移動できます。 ステップの順序は周期的で、開始位置に基づいています。この例では5 1 2 6 7 5 1 2 ...。 同じ位置に複数の数字を含めることはできません。 すべての桁には、digit_valueステップごとにセルの速度があります。数字または数字の連続ブロックを追い越すには、余分なステップが1つかかります。桁に必要な速度がない場合、桁(のブロック)の前で停止します。例: [41 ] => [ 1 4 ] 4 overtakes 1 [2 1 ] => [ 21 ] 2 can only move 1 as it can't move 3 to overtake …

6
アスキーアートオブザデイ#3-中国の神社
今日のAAODのエピソードでは、さまざまな高さの中国神社を建設します。 高さのために、以下の例を考えてみましょう(N)1へ6 N = 1: . | . ]#[ . \_______/ . ]###[ . \__]#.-.#[__/ |___| |___| |___|_|___| ####/_\#### |___| /_____\ N = 2: . | . ]#[ . \_______/ . ]###[ . \___________/ . ]#####[ . \___]#.---.#[___/ |__|_| |_|__| |__|_|___|_|__| #####/___\##### |_____| /_______\ N = 3: . | . …

3
あなたはそれをセンタリングと呼びます、私はそれをコードゴルフと呼びます
「それでは、並べられた画像は天国からの小さな贈り物のようなものです。ようこそ、しかし予期せぬことです。」-ジオビット このチャレンジに勝った人には+10000の評判。 ルール: 1)プログラムを生成します。 2)入力は画像になりますが、ファイルとして渡されるか数字のリストとして渡されるかはユーザー次第です。 3)出力は、ペイント(または同様の)で開くと、画像が整列して表示されるファイルです。 4)キャンバスのサイズは常に100 x 100から2000 x 2000ピクセルの間です。常に長方形になりますが、常に正方形になるとは限りません。 5)画像のハードコーディングやファンキーなURLマジックはありません。 6)使用する外部ライブラリはありません。 集中化ガイド(Joshpbarron Variant) 軸上の最初の白(255,255,255、> 0 rgba)または透明(x、y、z、0 rgba)がキャンバスの端から等しい距離(プラスまたはマイナス1ピクセル)の場合、画像は中央にあると定義されます。 これは、次の方法で実現できます(検証されます)。 1)オブジェクトの周りの境界ボックスを想像してください。(ヘルプのために黒い線が追加されました) 2)オブジェクトの端がキャンバスの適切な端から等距離になるまでオブジェクトを移動します。 3)黒い線を忘れます。 入力: 出力: その他の入力はこちら。 ここでそれぞれの出力。 +10000担当者は嘘です。

4
最小限の手がかりの数独アンソルバーを構築する
この質問を述べようとする私の試みですが、より客観的な解決基準があります。 あなたのタスクはS、選択したフォーマットで解決された数独グリッドを取得Sし、独自のソリューションとして可能な限り少ない手がかりで問題グリッドを生成しようとするプログラムまたは関数を構築することです。(Sソリューションが一意であることが証明されている限り、ブルートフォースを含め、どのメソッドが一意のソリューションであるかは関係ありません。) プログラムは、このファイルにある100,000のソリューショングリッドのセット(7.82 MBのダウンロード)で実行し、ソリューションが生成するすべての100,000の問題グリッドの手がかりの数を合計することでスコア付けされます。 上記のテストファイルの数独ソリューションは、左から右、上から下の81文字の文字列として表されます。テストファイルの入力を使用可能なソリューションに変換するために必要なコードは、ソリューションのバイトカウントにはカウントされません。 私のFlood Paintチャレンジのように、プログラムは、有効なソリューションと見なされるために、100,000個のパズルすべてに対して有効な出力を実際に生成する必要があります。すべての100,000個のテストケースについて最も少ない合計手がかりを出力するプログラムが勝者であり、短いコードが同点になります。 現在のスコアボード: 2,361,024 -nutki、C 2,580,210 -es1024、PHP 6,000,000 -CarpetPython、Python 2 7,200,000 -Joe Z.、Python

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