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

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

19
ショットガン番号
散弾銃の数はかなり単純な定義はなく、いくつかの興味深い構造を持つ配列で。自然数から始めます。 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ... 次に、2で割り切れるインデックスですべての数値を取得し、それらをペアにグループ化し、各ペアの数値を交換します。 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ... ^ ^ ^ ^ ^ ^ ^ <---> <---> <-----> <---- 1, …

30
私を愛している、私を愛していない
私を愛している、私を愛していない このシンプルな子供向けゲームは古いですが、まだ人気があります。私たちは今21世紀に生きているので、デジタル化しましょう! 仕様 ランダムシードを生成できない言語を使用している場合を除き、プログラムは入力を受け付けません。その場合、シードを入力として取得できます。あなたの仕事は、ゲーム内のように、「Loves me ...」と「Loves me not ...」の合計3〜20行をランダムに出力するプログラムを作成することです(追加の1行。読書)。 ただし、いくつかの制限があります。各行の後に改行が必要です。最初の行は「Loves me ...」でなければなりません。最後の行(「Loves me」または「Loves me not」)は、それぞれ感嘆符または単一のドットで終わる必要があります。最後の行の後、「愛してる!」に応じて、新しい行にheart(<3)または壊れたハート(</3)を出力する必要があります。または「私を愛していない」。最後の文でした。 末尾の空白は許可されます。 出力例 出力: 私を愛して...私を 愛していない... 私を愛して... 私を愛していない... 私を愛して! <3 別の出力: 私を愛して...私を 愛していない... 私を愛して... 私を愛していない。 </ 3 これがcode-golfなので、最短のエントリーが勝ちです! また、私の最初の挑戦:)がんばって!

30
円形のパスを移動する単一ピクセル
これは、タスクが言語ごとに最短のコードを提供することであるグラフィカル出力の課題です。 仕事 コードは、単一の紫色のピクセル(16進数値#800080またはrgb(128、0、128))をプロットし、時計回りに円を描いて移動する必要があります。円を一周するのにちょうど60秒かかり、無期限に継続する必要があります。ピクセル以外は、画面またはウィンドウに何も表示されません。円の幅は、画面またはウィンドウの幅の0.75(適切に丸める)で、背景は白である必要があります。愚かな解決策を防ぐには、画面またはウィンドウの幅を少なくとも100ピクセルにする必要があります。 あなたのコードは完全なプログラムでなければなりません。 言語とライブラリ 任意の言語またはライブラリを使用できます。ただし、可能な場合はコードをテストできるようにしたいので、Ubuntuでコードを実行する方法について明確な指示を提供できれば非常にありがたいです。 上位20言語がありません。助けが必要です。 現在、次の上位20のプログラミング言語にはソリューションがまったくありません。 C、C ++、C#、Python、PHP、Visual Basic .NET、Perl、Delphi / Object Pascal、アセンブリ、Objective-C、Swift、Pascal、Matlab / Octave、PL / SQL、OpenEdge ABL、R カタログ この投稿の下部にあるスタックスニペットは、a)言語ごとの最短ソリューションのリストとして、b)全体的なリーダーボードとして、回答からカタログを生成します。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 ## Language Name, N bytes N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: ## Ruby, <s>104</s> <s>101</s> 96 bytes ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。 ## Perl, 43 + 2 (-p flag) = 45 bytes 言語名をリンクにして、スニペットに表示することもできます。 ## [><>](http://esolangs.org/wiki/Fish), 121 …

4
豚は飛べますか?
仕事 あなたの仕事は、いくつかの文を分析し、ブタが飛ぶことができるそれらの文から結論を出すことができるかどうかを決定する、選択した言語で関数またはプログラムを書くことです。 入力 入力は、STDINから読み取ることができる文字列で、関数の引数として取得するか、ファイルに保存することもできます。入力は、次のEBNFを使用して説明できます。 input = statement , {statement}; statement = (("Pigs are ", attribute) | ("Everything that is ", attribute, "is also ", attribute)), ". "; attribute = [not], ("able to fly" | singleAttribute); singleAttribute = letter, {letter}; letter = "a" | "b" | "c" | "d" | "e" …

1
特定のテキストを入力するために必要な最小限のキーストローク
プログラマーは怠け者になる傾向があることは誰もが知っています。空き時間を最大化するために、そこに入力されるテキストに対して最小限のキーストロークを出力するプログラムを作成することにします。 入力:キーストロークに変換する必要があるテキスト。テキストの入力方法(STDIN /引数で提供されたファイルからの読み取り)を決定できます。 出力:次の形式の必要なアクション: 番号を付ける必要があります Hit:キーを押してすぐに離す Press:キーを押して放さない(これは、キーがR次のキーストロークとして解除された場合に最適になることはありません) Release:再設定されたPキーのリリース 例: 入力: Hello! 出力: 素朴な解決策は次のとおりです。 1 P Shift 2 H h 3 R Shift 4 H e 5 H l 6 H l 7 H o 8 P Shift 9 H 1 10 R Shift これはより効率的です: 1 P Shift 2 H h …

3
xkcdスタイルのナラティブチャートを作成する
Randall Munroeは、より象徴的なxkcdストリップの1つで、いくつかの映画のタイムラインを物語チャートで視覚化しました。 (クリックすると拡大します。) 出典:XKCD号657。 映画(またはその他の物語)のタイムラインの仕様を指定すると、そのようなチャートを生成することになります。これは人気のコンテストなので、最も多くの(正味の)投票数を持つ回答が勝ちます。 最小要件 仕様を少し厳しくするために、すべての回答で実装する必要がある機能の最小セットを以下に示します。 入力としてキャラクター名のリストを取得し、その後にイベントのリストを続けます。各イベントは、死にゆくキャラクターのリスト、またはキャラクターのグループのリスト(どのキャラクターが現在一緒にいるかを示す)です。ジュラシックパークの物語をどのようにエンコードできるかの例を次に示します。 ["T-Rex", "Raptor", "Raptor", "Raptor", "Malcolm", "Grant", "Sattler", "Gennaro", "Hammond", "Kids", "Muldoon", "Arnold", "Nedry", "Dilophosaurus"] [ [[0],[1,2,3],[4],[5,6],[7,8,10,11,12],[9],[13]], [[0],[1,2,3],[4,7,5,6,8,9,10,11,12],[13]], [[0],[1,2,3],[4,7,5,6,8,9,10],[11,12],[13]], [[0],[1,2,3],[4,7,5,6,9],[8,10,11,12],[13]], [[0,4,7],[1,2,3],[5,9],[6,8,10,11],[12],[13]], [7], [[5,9],[0],[4,6,10],[1,2,3],[8,11],[12,13]], [12], [[0, 5, 9], [1, 2, 3], [4, 6, 10, 8, 11], [13]], [[0], [5, 9], [1, 2], [3, 11], …

3
インディ・ジョーンズが宝を手に入れるのを手伝ってください
物語 インディ・ジョーンズは、貴重な宝物がある洞窟を探索していました。突然、地震が起こりました。 地震が終わったとき、彼は天井から落ちたいくつかの岩が宝物への道を塞いでいることに気づきました。また、彼は石を押すことができることに気づきましたが、石は非常に重いため、連続する2つの石を押すことはできませんでした。 あなたの目的は、インディ・ジョーンズが宝を手に入れるのを助けることです。単一の石でも押すのは非常に難しいので、押す回数は非常に重要です。 問題 宝物を見つけるための最良の方法(インディアナジョーンズが石をできる限り少なくする場所)を見つけてください。 地図(入力) マップであるmことによりn、細胞の5種を含有することができる(両方とも1より大きい)マトリックス: 0 これは空白セルを意味し、 1 壁を意味します 2 インディ・ジョーンズが位置する(1つだけが存在する) 3 宝が置かれている(1つだけが存在する) および4、これは岩を意味します。 マップの最初の行では、マップの次元がのよう4 6に指定され、2番目の行からマップの最後の行まで、洞窟の構造は次のように指定されます。 110131 104040 100101 200000 したがって、完全なマップは次のとおりです。 4 6 110131 104040 100101 200000 つまり マップは、stdin、ファイル(ファイルの名前を指定できます)、または上記の情報のみを含むコード内の配列によって提供されます。 出力 インディ・ジョーンズがプッシュすべき最低額。そのような方法がない場合は、を出力しますX。 上記の場合、彼は左の石を上に押し、次に右の石を押して宝物を得ることができます。したがって、この場合の出力は2です。 しかしながら。この場合 : 4 6 111131 104040 100101 200000 (セクションの下を見てください)彼は宝物を破壊するので、右の石を押すことができません。また、左の石を右に押しても何も変わりません。したがって、出力はXです。 ルール 彼は上下左右の4方向にしか移動できません。 彼は2つの連続する石を押すことができません。 彼は石を引っ張ることができず、一方向(「前方」)にのみ石を押すことができます。 彼は壁を通過することはできません。彼が行くことができるのは、空のセルと宝のセルだけです。 石を宝物の上に置くことはできません。それは宝物を破壊します。:( …

18
この文字列をいくつまでカットできますか?
実際の行で前後に折り畳まれた文字列(「ロープ」のように、「文字の束」のようにではない)を考えてください。文字列の形状を、通過するポイントのリストで(順番に)記述できます。簡単にするために、これらのポイントはすべて整数であると仮定します。 例として[-1, 3, 1, -2, 5, 2, 3, 4]考えます(各エントリがフォールドを意味するわけではないことに注意してください): 垂直方向に沿って延びる文字列は、視覚化のみを目的としています。文字列がすべて実際の線上に平らになっていると想像してください。 ここで問題があります:この文字列は、1つのカット(上記の写真では垂直でなければなりません)でカットできるピースの最大数です。この場合、答えは6で、2との間にカットがあり3ます: あいまいさを避けるため、切り取りは非整数位置で実行する必要があります。 挑戦 文字列が折り返される整数位置のリストが与えられた場合、非整数位置での単一カットで文字列を切り取ることができるピースの最大数を決定します。 完全なプログラムまたは関数を作成できます。STDIN、コマンドライン引数、プロンプトまたは関数パラメーターを介して入力を受け取ることができます。出力をSTDOUTに書き込んだり、ダイアログボックスに表示したり、関数から返すことができます。 リストは便利なリスト形式または文字列形式であると想定できます。 リストには、少なくとも2から100までのエントリが含まれます。エントリは整数、範囲内の各あろう-2 31 ≤P I <2 31。2つの連続したエントリが同一ではないと想定できます。 コードは、合理的なデスクトップPCで10秒未満でそのような入力(以下のテストケースを含む)を処理する必要があります。 テストケース すべてのテストケースは、単に入力の後に出力が続きます。 [0, 1] 2 [2147483647, -2147483648] 2 [0, 1, -1] 3 [1, 0, -1] 2 [-1, 3, 1, -2, 5, 2, 3, 4] 6 [-1122432493, -1297520062, …

13
型なしラムダ計算のインタープリターを作成する
課題は、型付けされていないラムダ計算のインタプリタをできるだけ少ない文字で記述することです。型なしラムダ計算を次のように定義します。 構文 次の3種類の式があります。 ラムダ式は、フォームがあるいかなる法的な変数名となる可能性が法的表現を。ここはパラメータと呼ばれ、関数本体と呼ばれます。(λ x. e)xexe 簡単にするために、x現在スコープ内にあるのと同じ名前の変数があってはならないという制限を追加します。変数は、その名の間に表示されたときに範囲にあることが始まり(λと.し、対応するの範囲であることを停止します)。 関数適用の形式は(f a)where fおよびaareの正規表現です。ここfは関数とa呼ばれ、引数と呼ばれます。 変数は、フォームがある法的な変数名です。xx 意味論 関数は、関数本体内のパラメーターの各オカレンスを引数で置き換えることにより適用されます。より正式フォームの発現((λ x. e) a)、x変数名、eおよびa式に表現、評価する(又は減少)しているの各発生を交換した結果であるに有します。e'e'xea 正規形は、それ以上評価できない式です。 挑戦 あなたの使命は、それを受け入れることを選択した場合、自由変数を含まない型なしラムダ計算の入力を入力として受け取り、その出力として式の正規形(またはそれに一致する式)を生成するインタープリターを書くことです。式に正規形がないか、有効な式でない場合、動作は未定義です。 文字数が最小のソリューションが優先されます。 いくつかのメモ: 入力は、stdinまたはコマンドライン引数として指定されたファイル名から読み取ることができます(両方ではなく、どちらか一方のみを実装する必要があります)。出力は標準出力に送られます。 または、入力を文字列として受け取り、出力を文字列として返す関数を定義できます。 非ASCII文字に問題がある場合は、\λの代わりにバックスラッシュ()文字を使用できます。 バイトではなく文字数をカウントするため、ソースファイルがUnicodeとしてエンコードされている場合でも、λは1文字としてカウントされます。 有効な変数名は1つ以上の小文字、つまりaとzの間の文字で構成されます(英数字名、大文字、または非ラテン文字をサポートする必要はありません-もちろん、そうすることでソリューションが無効になることはありません)。 この課題に関する限り、オプションの括弧はありません。各ラムダ式と各関数アプリケーションは、ちょうど1組の括弧で囲まれます。変数名は括弧で囲まれません。 書き込みなどの糖衣構文(λ x y. e)のためには(λ x. (λ y. e))、サポートする必要はありません。 関数を評価するために100を超える再帰の深さが必要な場合、動作は未定義です。これは、すべての言語で最適化せずに実装するのに十分なほど低く、ほとんどの式を実行できるほど十分に大きい必要があります。 また、無入力の開始時と終了時または前にスペースすなわち、その間隔は例のようになりますと仮定しないかもしれないλか、.1つだけ空白の後.と関数とその引数の間と後λ。 サンプルの入力と出力 入力: ((λ x. x) (λ y. (λ z. z))) 出力: (λ y. …

30
PowerShellでのゴルフのヒント
Windows PowerShellでゴルフをするための一般的なヒントは何ですか?私は、PowerShellに少なくともある程度固有の一般的なゴルフ問題のコーディングに適用できるアイデアを探しています(たとえば、「コメントの削除」は答えではありません)。回答ごとに1つのヒントを投稿してください。 -marcog の質問からほぼ逐語的に取られた。

14
ASCIIトレインに乗るすべて
ASCIIトレインにすべて乗ろう! o O O ___ ___ ___ ___ ___ ___ ___ ___ ___ o | C | | O | | D | | E | | | | G | | O | | L | | F | TS__[O] |___| |___| |___| |___| |___| |___| |___| |___| |___| …

30
出力プログラミング言語名
チャレンジ: 選択したプログラミング言語では、プログラミング言語の名前を入力および出力しないでください。 結構ですよね? 制限事項: コードのプログラミング言語の名前に含まれる文字は使用できません。たとえば、バッチを使用する場合、コードで文字「B」「a」t「c」「h」を使用しないでください。これは大文字と小文字を区別することに注意してください。文字「b」は「B」とは異なるため、引き続き使用できます。 言語の名前の前後に「ジャンク出力」を持つことができます バージョン番号は、言語の名前の一部としてカウントされません。たとえば、Python 3の場合は、回答のコードで3番を使用できます プログラミング言語名の出力では、大文字と小文字は区別されません。 可能なすべての文字の組み合わせを強引に強制し、言語名を取得することを希望することは禁止されています。 出力例:(私のプログラミング言語はLanguageと呼ばれます)(有効な場合は✔、そうでない場合は✖) Language ✔ Body language is a type of non-verbal communication in which physical behavior, as opposed to words, is used to express or convey information. Such behavior includes facial expressions, body posture, gestures, eye movement, touch and the use …

16
新たに発見された数字:bleen!
「数学でのノーベル賞は、新しい数字を発見したカリフォルニアの教授に授与されました。数字は、6〜7の間にあると主張する不鮮明です。」 -ジョージ・カーリン このチャレンジでは、指定された入力範囲内のすべての整数を含めて印刷します。入力順序に従って番号を昇順または降順で出力します。すなわち、入力のために[n1, n2]、印刷上昇した場合n1 < n2、下降場合n1 > n2。 ためには、bleen今では入力として使用することができる整数です。また、該当する場合6と7該当する場合、出力に含める必要があります。また-bleen、-7と-6の間に存在することに注意してください。 入力 [n1, n2]選択したプログラミング言語の入力を介した、範囲[-10、10]の2つの整数。 (入力も含まれていてもよいbleenと-bleen!) 出力 6から7までの新しく発見されたものを含む、n1で始まりで終わるすべての整数を出力します。出力は、言語がサポートする何らかの形式の文字で区切られた数値の範囲です。出力の1つの末尾のスペースは問題ありません。n2bleen 例 Input: 1 10 Output: 1 2 3 4 5 6 bleen 7 8 9 10 Input: -9 -4 Output: -9 -8 -7 -bleen -6 -5 -4 Input: -8 bleen Output: -8 -7 -bleen -6 …
44 code-golf  number 

18
聖なる数字
多くのフォント(特にConsolasフォント)では、10進数の10桁のうち5桁に「穴」があります。これらの聖なる数字を呼び出します。 46890 したがって、5つの不浄な数字は次のとおりです。 12357 したがって、整数は、それが神聖な数字のみを含む場合は「神聖」として分類され、そうでない場合は「神聖でない」として分類されます。-聖ではないので、負の整数は聖になることができません。 聖なる整数は、それらが持つ穴の数に基づいてさらに分類されます。たとえば、次の数字の聖性は1です。 469 そして、これらの数字の神聖さは2です。 80 整数の全体的なホーリネスは、その桁のホーリネスの合計であると言います。したがって、80聖性は4になり99、聖性は2になります。 挑戦 2つの整数n > 0とが与えられた場合、ホーリー性が少なくともでh > 0あるnthの整数を出力しhます。入力および出力は、言語で表現可能な最大整数またはの2^64 - 1いずれか小さい方よりも大きくないと仮定できます。 h >= 1参照用に、holinessを含む最初の25個の聖なる整数のリストを以下に示します。 0, 4, 6, 8, 9, 40, 44, 46, 48, 49, 60, 64, 66, 68, 69, 80, 84, 86, 88, 89, 90, 94, 96, 98, 99 神聖さを持つ最初の25の聖なる整数h >= 2は次のとおりです。 0, …

30
忍耐、若い「パドバン」
誰もがフィボナッチ数列を知っています: あなたは正方形を取り、それに等しい正方形を付け、そして辺の長さが結果の長方形の最大の辺の長さに等しい正方形を繰り返し付けます。 結果は、数字のシーケンスがフィボナッチ数列である美しい正方形のらせんです: しかし、正方形を使用したくない場合はどうなりますか? 正方形の代わりに正三角形を同様の方法で使用すると、等しく美しい三角形のらせんと新しいシーケンス:Padovanシーケンス、別名A000931が得られます。 仕事: 正の整数、出力、シーケンスの番目の項、または最初の項を指定します。NNNaNaNa_NNNNNNN シーケンスの最初の3つの項はすべてであると仮定します。したがって、シーケンスは次のように開始されます: 1111 、1 、1 、2 、2 、3 、。。。1,1,1,2,2,3,... 1,1,1,2,2,3,... 入力: 正の整数N≥0N≥0N\ge0 無効な入力を考慮する必要はありません 出力: Padovanシーケンスの番目の用語、または Padovanシーケンスの最初の用語。NNNNNNN 最初の用語が出力される場合、出力は便利なものであれば何でもかまいません(リスト/配列、複数行の文字列など)NNN いずれかになります -indexedまたは -indexed000111 テストケース: (0インデックス、番目の用語)NNN Input | Output -------------- 0 | 1 1 | 1 2 | 1 4 | 2 6 | 4 14 | 37 …

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