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

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

24
重要な空白
空白は、タブ(0x09)、改行(0x0A)、またはスペース(0x20)の3文字のいずれかに定義します。 この課題では、同じプログラミング言語で2つのプログラムまたは関数を作成し、次のタスクを実行します。 指定された文字列の空白文字を数えます。たとえば、入力 123 -_- abc def 7を返します(末尾の改行がない場合)。 空白の連続した実行で特定の文字列を分割します。文字列の先頭または末尾が空白の場合、末尾に空の文字列は返されません。たとえば、同じ入力 123 -_- abc def 戻り["123", "-_-", "abc", "def"]ます。 どちらの場合でも、STDIN、コマンドライン引数、または関数引数を介して入力を取得し、結果を返すか、STDOUTを出力できます。2番目のプログラムでは、STDOUTに出力することを選択した場合、引用符を囲むことなく、各文字列をそれぞれの行に出力してください。 両方のプログラムについて、入力には印刷可能なASCII(0x20から0x7E)と空白のみが含まれると想定できます。 これが問題です。 すべての空白が両方のプログラム/関数から削除される場合、結果の文字列は同一である必要があります。つまり、2つの提出は、空白文字の数と配置のみが異なる場合があります。 いずれのプログラム/関数にも文字列または正規表現リテラルを含めることはできません(言語に指定された文字タイプがある場合、文字リテラルは問題ありません)。 どちらのプログラム/機能にもコメントを含めることはできません。 プログラムのソースコードを直接的または間接的に読み取ってはなりません。 これはコードゴルフです。スコアは、両方のソリューションのサイズの合計(バイト単位)です。最低スコアが勝ちます。 リーダーボード 次のStack Snippetは、通常のリーダーボードと言語別の勝者の概要の両方を生成します。たとえあなたの選択した言語があなたが挑戦全体に勝つことを許さないとしても、なぜ2番目のリストのスポットをひったくってみませんか?人々がさまざまな言語でこの課題にどのように取り組んでいるかを知りたいと思います! 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 # Language Name, N bytes どこNで合計あなたの提出のサイズ。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: # Ruby, <s>104</s> <s>101</s> 96 bytes 合計数の前に個々の数を含めることもできます。たとえば、 # Python 2, 35 + 41 = 76 …

9
これはどのテトロミノですか?
符号なし16ビット整数Nが与えられた場合、タスクは、4x4行列内にマッピングされたバイナリ表現がtetromino形状と一致するかどうかを判断し、一致する場合は、その形状を判断することです。 マトリックス Nの各ビットは、左から右、上から下に4x4マトリックス内でマッピングされ、最上位のものから始まります。 例: N = 17600 binary representation: 0100010011000000 matrix: [ [ 0, 1, 0, 0 ], [ 0, 1, 0, 0 ], [ 1, 1, 0, 0 ], [ 0, 0, 0, 0 ] ] テトロミノの形 ベース形状 文字O、I、S、Z、L、J、およびTで識別される7つのテトロミノ形状があります。 ローテーションと翻訳 形状が4x4マトリックス内で平行移動および/または回転した場合でも、同じテトロミノの有効なバリエーションと見なされます。たとえば、17600、1136、2272、および1604はすべてJ tetrominoes として識別される必要があります。 ラップしないでください! ただし、形状は、マトリックスの境界をラップしたり、マトリックスの境界を超えてシフトしたりすることはできません。例えば、どちらも 568 も 688として識別されなければならないJの tetrominoes(ましてや他の任意の形状): …

30
コラコスキーシーケンスを計算する
これは、I / O要件を最近の標準に合わせて調整するための、古い課題の再投稿です。これは、この人気のシーケンスに関するチャレンジに、より多くの言語が参加できるようにするために行われます。再投稿については、このメタ投稿をご覧ください。 Kolakoskiシーケンスは楽しい自己参照シーケンスであり、OEISシーケンスA000002であるという栄誉を持っています(A000001よりも理解と実装がはるかに簡単です)。シーケンスが始まる1のみから成り1秒と2秒と配列エレメント(N)の長さ説明n個のラン番目の1秒または2つの配列中のSです。これにより、シーケンスが一意に定義されます(その下の実行が視覚化されます)。 1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,2,1,1,2,1,2,2,1,1,2,1,1,2,... = === === = = === = === === = === === = = === = = === === = === = 1, 2, 2, 1,1, 2, 1, 2, 2, 1, 2, 2, 1,1, 2, 1,1, 2, 2, 1, 2, 1,... もちろん、あなたの仕事はこのシーケンスを実装することです。次の3つの形式のいずれかを選択できます。 入力を取るNと出力Nをシーケンスの用語番目Nのいずれかで開始から0または1。 入力取るN及び出力の用語までを含むNシーケンスの用語番目、nは開始のいずれかから0または1(すなわち、いずれかの印刷最初のn又は第n + …

30
アルファベットの雨を作る
アルファベットの雨 タスク: 基本的な前提は、入力文字列を出力し、(大文字と小文字を区別しない)アルファベットの(0から始まる)位置に基づいて各文字を垂直に繰り返すことA-Zです。A位置0にあるので繰り返されないe、位置4にあるので4回繰り返されるP、位置15にあるので15回繰り返される、!存在しないA-Zので0回繰り返される、など わかりやすくするために、範囲外のB-Zb-z数字や特殊文字などは繰り返されないため、最初の行にのみ表示されます。 これはcode-golfであるため、各言語で最も短いソリューションが勝者です。 入力: 入力は、32 から126までの標準の印刷可能なASCII文字セットになり~ます。 入力文字列は1文字以上です。 先頭または末尾の空白はありません。 あなたは、文字列(として入力を取る取ることができます"hello"()または文字のリスト["h", "e", "l", "l", "o"]) 例: の入力aaaa: aaaa の入力abcda: abcda bcd cd d の入力は以下Programming Puzzles & Code Golf!を与えます: Programming Puzzles & Code Golf! Progr mming Puzzles Code Golf Progr mming Puzzles Code Golf Progr mming Puzzles ode Golf Progr mming …

17
掃海艇の手がかりを記入する
マインスイーパは人気のパズルゲームで、どのタイルが「地雷」であるかを、それらのタイルをクリックせずに発見する必要があります。各タイルは地雷(で表される*)または手掛かり、つまり8つの隣接するタイルのうちどれだけが地雷であるかを表す0から8までの数字です。今日のあなたの仕事は、鉱山を含むボードを取り、すべての手がかりを埋めることです。たとえば、5つの地雷がある次の5x4ボードを見てください。 * * * * * 手がかりを入力すると、ボードは次のようになります。 2*211 *33*1 12*32 0112* 詳細 完全なプログラム、またはスペースとアスタリスクのみを含む文字のグリッドを取り込み、各スペースが隣接する鉱山(アスタリスク)の数で置き換えられる別のグリッドを出力する関数を作成する必要があります。これらはいずれも、グリッドに受け入れられる形式です。 改行を含む文字列 文字/単一文字列の2Dリスト 文字列のリスト グリッドは少なくとも 1x1であると仮定できますが、グリッドはすべて地雷またはすべてのスペースである可能性があります。 入力グリッドには常に適切な数のスペースが埋め込まれます。いつものように、これはcode-golfなので、標準の抜け穴が適用され、バイト単位の最短回答が勝ちます! サンプルIO 空白を確認できるように、すべてのサンプルIOを角括弧で囲んで示します。 Input: [ * ] [* ] [ ] [ ] [ ** ] [ * * ] Output: [1101*1] [*10111] [110000] [012210] [12**21] [1*33*1] Input: [****] [****] Output: [****] …

22
デニス番号2.0
PPCGユーザーでありmodに選ばれた@Dennisは、10万人以上の担当者を獲得した2番目のユーザーになりました! これは完全に独創的なアイデアであり、私は他の誰からも得たものではありませんが12012、トリビュートとして彼のユーザーIDに基づいて挑戦してみましょう! それを見ると、彼のIDには2つの異なる「セクション」があることがわかります。 12 そして 012 これらのセクションは両方とも3になります。これは非常に興味深いプロパティです。 「デニス2.0の数値」を、厳密に増加する数字のすべての最大サブシーケンスが同じ数値に合計される正の整数として定義してみましょう。例えば、 123 厳密に増加する数字の最大サブリストが1つしかないため、デニス2.0の数字であり、合計は6です。さらに、増加する数字の3つの最大サブリスト、つまり 28 46 145 すべての合計が10。また、ちょうど同じ数字を繰り返し番号がしなければならない、例えばのでデニス2.0数字なり777に分けることができます 7 7 7 これは明らかに 7へのすべての合計。 などの数字は、デニス2.0の数字で42はありません。 4 2 これは明らかに同じ数になりません。 挑戦 特定の番号がデニス2.0番号であるかどうかを判断するプログラムまたは関数を作成する必要があります。文字列、数値、ファイル、関数引数/戻り値、STDIN / STDOUTなどから、合理的な入力形式で入出力を行い、この数値がDennis 2.0である場合に真理値を返すことができます。数、および偽の値(そうでない場合)。参考までに、最大1,000までのすべてのDennis 2.0番号を以下に示します。 1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 17 18 19 22 23 24 …

30
「Code Bowling」というテキストを出力します
コードボウリング Brunswick Bowlingに雇われCode Bowlingて、モニターにテキストを出力する簡単なプログラムを作成しました。この会社はかなりの金額の価値があるとあなたはかなりのためにそれらを詐欺することができます感じビットキャッシュの。 職務記述書には、彼らが得点に基づいて支払うことを明確に示しており、得点システムを有利に操作し、これらの人から可能な限り最大の給与を得ることができると確信しています。そうするためには、得点システムがあなたをそうすることを妨げるように設計されているにもかかわらず、あなたのプログラム/関数にできるだけ多くのコードを詰めることを要求します。 貯金箱を取り出して、コードを書きましょう! チャレンジ ここでの課題は、Code Bowlingここに記述されているとおりに、できるだけ高いスコアでテキストを単に出力することです。(以下のセクション:スコアリングシステムを参照) 先頭と末尾の改行(改行)は許容されます。 コードは、プログラム全体または単なる実行可能関数である場合があります。 ルール 必須:この課題は、Code-Bowling:Common Rules、Revision 1.0.0を使用しています。詳細については、メタを参照してください。 文字:バイト比 Code-Bowlingでは、バイトカウントよりも文字カウントが優先されます。これの明白な理由は、マルチバイトのユニコード文字(例:🁴)をシングルバイトのユニコード文字の代わりに使用してバイト数を増やすことであり、ハイバイトのユニコード文字で最も多くの変数の名前を変更する人についてボウリングをより多くすることです最も戦略的に意味のある複雑なコードを作成する人よりも。 変数/関数/オブジェクト名 すべての変数名(またはオブジェクトポインター、関数名など)は1文字である必要があります。2文字の変数名を使用する唯一の許容時間は、可能な1文字の変数がすべて使用された後です。3文字の変数名を使用する唯一の許容時間は、考えられるすべての2文字の変数が使用された後です。等。 未使用のコード すべてのコードを使用する必要があります。個々のキャラクター(またはさまざまなキャラクターのセット)が削除された場合、プログラムが意味することは、タスクを常に適切に完了することに失敗しなければなりません。当然、プログラムのサブセットは、プログラムの残りがなければタスクを単独で完了することはできません。 コメント プログラム/関数で何らかの形で利用されない限り、文字数に対するコメントは許可されません。 スコアリングシステム: パングラムチャレンジ: パングラムは、すべての文字を少なくとも1回使用する文です。(速い茶色のキツネは怠laな犬を飛び越えます)。 このチャレンジタイプには、完全なパングラムが理論上の最大スコアを達成するように設計されたスコアリングシステムがあります(ただし、すべてのキャラクターを少なくとも1回使用する必要はありません)。さらに、任意のキャラクターを複数回使用するとペナルティが発生します。この課題は、アルファベット文字だけでなく、それ以上にも拡大します。 スコア指標: 使用される各キャラクターは、あなたのスコアを1増加させます。 英数字(az、AZ、0-9)を繰り返し使用すると、繰り返しごとに3ポイント減点されます(最初の使用では減点されません)。 ([!?.-,":';])角括弧を含む基本的な句読点を繰り返し使用すると、繰り返しごとに2ポイント減点されます。 {`~@#$%^&*_+=|\/><}中括弧を含む他のASCII文字を繰り返し使用すると、繰り返しごとに4ポイントが差し引かれます。 スペース、タブ、および改行を使用すると、使用ごとに1ポイントが差し引かれます。つまり、キャラクターの合計にはカウントされません。 上記以外のキャラクター(エキゾチックキャラクター)を使用すると、1回の使用につき1ポイントが差し引かれます。つまり、キャラクターの合計にはカウントされません。 スコアリングツール: 自動化されたスコアリングウィジェットが作成されていると見ることができるここに。 これはコードボウリングの亜種です。最高得点のプログラムが勝ちます!(の最大スコアがあるため94、最初に到達した人(到達可能な場合)は、受け入れられた回答としてマークされますが、他の人は自由に答え続けることができます)

30
YYYYMMからMMMYYに変換
このSO質問に基づいて。 チャレンジはかなり単純YYYYMMですMMMYY。フォーマットで日付期間を指定すると、フォーマットで出力します。 ルール: 入力は、数字または数字のみで構成される正確に6文字の文字列になります。 最後の2桁がの間になります01と12。 出力は、月の大文字の3文字コード(下)を表し、入力の一部の最後の2桁を表す形式MMMYYでなければなりません。MMMYYYYYY 対応するコードを含む月のリスト: MM MMM 01 JAN 02 FEB 03 MAR 04 APR 05 MAY 06 JUN 07 JUL 08 AUG 09 SEP 10 OCT 11 NOV 12 DEC 例: Input Output 201604 APR16 200001 JAN00 000112 DEC01 123405 MAY34
54 code-golf  string  date 

10
囲まれた国
国は1Dの世界で一連の領域を所有しています。各国は番号によって一意に識別されます。テリトリーの所有権は、次のリストで表すことができます。 1 1 2 2 1 3 3 2 4 国の最端の領土を、どちらかの端に最も近い2つの領土と定義します。上記のリストのインデックスがゼロであった場合、国1の最端部の地域は0およびで発生し4ます ある国は、その最端の2つのテリトリー間のサブリストに別の国のすべてのテリトリーが含まれている場合、別の国を囲みます。上記の例では、国2の最端地域間のサブリストは次のとおりです。 2 2 1 3 3 2 そして、国のすべての領土は国3の最端の領土の間にある2ので、国は国を2囲みます3。 要素が1つだけの国は、別の要素を囲むことはありません。 チャレンジ (任意の形式で)入力および出力として整数のリストを取るtruthyどの国が他に囲まれている場合は、値を、そしてfalsyそうでない場合、値。 入力リストは空ではなく、正の整数のみを含み、数字を「スキップ」しないと仮定でき1 2 1 5ます。たとえば、無効な入力になります。 テストケース +----------------------+--------+ | Input | Output | +----------------------+--------+ | 1 | False | | 2 1 3 2 | True | | 2 1 …

1
最も少ないフリーセルソルバーを構築する
Freecellのゲームでは、エースからキングまでスーツに合わせて4つの基礎杭を構築し、交互に色を変えながら下向きに構築します。ただし、一度に作成できるカードは1つだけなので、シーケンス全体を移動するのに役立つ1つのカードを含むことができる4つの「フリーセル」が与えられます。アイデアは、あなたがゲームを解決するのを助けるために必要に応じて、自由なセルに個々のカードを織り込むことです。 あなたの仕事は、可能な限り少ない動きでこれらのゲームを解決するプログラムを構築することです。 プログラムは、入力として次の形式の52枚のカードのシーケンスを受け取ります。 2S 9H 10C 6H 4H 7S 2D QD KD QC 10S AC ... これは、次の順序で初期レイアウトで処理されます。 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 …

27
Wordenticonsを生成する
識別子はハッシュ値の視覚的な描写であり、多くの場合、幾何学的形状の対称的な配置から作成されます。デフォルトのStack Exchangeアバターはidenticonです。この課題は、「wordenticons」、小文字の文字列、つまり単語に適用されるIDベースの単純なテキストベースのバージョンを作成することです。 チャレンジ 文字列Sを取り込んでその単語を出力するプログラムまたは関数を作成します。Sは空でないことが保証され、小文字の英字a〜zのみが含まれます。オプションで、Sの末尾に改行があると想定できます。 Sのwordenticonは2*length(S)、スペース( )、垂直バー(|)、および水平バー(―)で構成される辺の長さのテキストの正方形グリッドです。 Sの単語を生成するには、すべての列がSの文字(通常の左から右の読み取り順序)に対応し、すべての行がSの文字に対応する(通常の上下の読み取り順序の正方形グリッドを形成します)。 たとえば、Sがfood初期グリッドの場合、次のようになります food f.... o.... o.... d.... どこ.単なるプレースホルダです。 .グリッド内のすべての空のポイント(すべて)に対して: 列文字がアルファベット順に行文字の前に来た場合は、交換してください.と|。 列文字がアルファベット順に行の文字の後に来る場合は、交換してください.と―。 列と行の文字が同じ場合は.、 (スペース)で置き換えます。 foodこれらの各ステップの後の例を次に示します。 の追加|: food f...| o|..| o|..| d.... の追加―: food f.――| o|..| o|..| d―――. の追加 : food f ――| o| | o| | d――― wordenticonを完了するには、単語を含む余分な行と列を削除します ――| | | | | ――― 全体を水平にミラーリングします …

8
これは一言ですか?
入力として4文字の文字列を取り、その文字列が英語の単語かどうかを示す値を出力するプログラムまたは関数を作成する必要があります。提供されたテストケースの15%で間違いを犯すことができます。 入力の詳細: 入力は、小文字の英字(az)のみを含む4文字のストリングです。 出力の詳細: 入力が英語の単語である場合、ブール値trueまたは整数を出力する必要があります1。 入力が英語の単語でない場合は、ブール値falseまたは整数を出力する必要があります0。 単語リスト 4文字の英語の単語のリスト(2236単語) 4文字の非単語文字列のリスト(2236文字列) 非単語リストには、実際の単語が削除された、一様にランダムに生成された文字シーケンスが含まれます。 テスト中 プログラムまたは関数は、指定された単語リストで15%以内の間違いを犯してはなりません。つまり、提供された4472の入力のうち670に対して間違った出力を与える可能性があります。 他の人が答えを確認できるように、テストプログラムまたは機能も投稿する必要があります。テストプログラムの長さは、提出スコアにカウントされません。 標準の抜け穴は許可されていません。 あなたのプログラムは、ウェブへのアクセスやファイルからの読み取りなど、外部ソースを使用しないでください。 これはコードゴルフなので、最短のプログラムまたは機能が優先されます。

30
Nボナッチ数列を出力します
これはあまり広く知られていませんが、フィボナッチ数列、別名 1, 1, 2, 3, 5, 8, 13, 21, 34... 実際にはDuonacciシーケンスと呼ばれます。これは、次の番号を取得するには、前の2つの番号を合計するためです。トリボナッチ数列もあり、 1, 1, 1, 3, 5, 9, 17, 31, 57, 105, 193, 355, 653, 1201... 次の数字は前の3つの数字の合計だからです。そして、Quadronacciシーケンス 1, 1, 1, 1, 4, 7, 13, 25, 49, 94, 181, 349, 673... そして、みんなのお気に入り、ペンタナッチシーケンス: 1, 1, 1, 1, 1, 5, 9, 17, 33, 65, …

30
迷信的なホテルのエレベーター
説明 上海にある非常に迷信的なホテルエレベーターを次に示します。 13は西側世界では不運であるため13を避け、4はアジアの一部で不運であるため4を避けます。このホテルが高かった場合はどうなりますか? nフロアの数を表す正の偶数整数をSTDINから読み取り、STDOUTにボタンレイアウトがどのように見えるかを出力します。13に等しくなく、数字4を含まない-1次のn-1正の整数が続きます。上の画像のような2列の数字:水平タブで区切られた行ごとに2つのフロア番号を印刷し、左から右に逆の順序で行を読み取ると、昇順でシーケンスが生成されるようにします。(オプションで、末尾の改行文字も印刷できます。) テストケース 入力の14場合、出力は上の画像のようになります。 15 16 11 12 9 10 7 8 5 6 2 3 -1 1 ここで、各行の空白は単一の水平タブ文字です。 入力については2、印刷する必要があります-1 1。 入力については100、次を印刷する必要があります。 120 121 118 119 116 117 113 115 111 112 109 110 107 108 105 106 102 103 100 101 98 99 96 97 93 95 …

6
アスキーアートカレンダー
現在の月、日、曜日、時間、分、およびそれが夜であるか日であるか(ただし、年または秒ではない)を示すASCIIアートクロックとカレンダーを作成してみましょう。 特定の時点で、カレンダーは次のようになります:(行間隔を小さくすると見栄えがよくなります) ________________________________________________________________ |\ ____________________________________________________________ /| | | ___ | | | | _( ) | | | | (___)__) -.- | | | | | | | | | | | | -.- | | | | -.- | | | | ___ | | | | _( ) …

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