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

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

7
織り交ぜるクインを作る
あなたの仕事は、実行時に出力として自身を返すプログラムを作成することです(これはクインとして知られています)。ただし、このクインは、コピーされるときにnクインを返す必要がありますが、その文字のそれぞれが所定のn時間に複製されnます。ここで、は正の整数です。 元のプログラムがDerp次の場合: Derp -> Derp (must return itself as output to be a quine) DerpDerp -> DDeerrpp (the "Derp" is copied twice, so each character in the output has to be copied twice) DerpDerpDerp -> DDDeeerrrppp etc. etc. 「ベース」プログラムに空白を含めることは許可されていますが、「織り交ぜる」ときに空白はカウントされます。あなたのプログラムは Derp {newline} (改行は末尾の改行を意味し、の後に余分なスペースがありますDerp)。複製されると Derp Derp {newline} 出力する必要があります DDeerrpp {newline} {newline} の2後に余分なスペースがあることに注意してくださいDDeerrpp。 …

20
きれいなボックスを出力する
あなたの課題は、次のボックスを正確に出力することです。 .................................................. .................................................. .. .. .. .. .. ++++++++++++++++++++++++++++++++++++++++++ .. .. ++++++++++++++++++++++++++++++++++++++++++ .. .. ++ ++ .. .. ++ ++ .. .. ++ .................................. ++ .. .. ++ .................................. ++ .. .. ++ .. .. ++ .. .. ++ .. .. ++ .. .. ++ .. ++++++++++++++++++++++++++ .. ++ .. …

9
これは数字ですか?
前奏曲: テストケースの作成を訓練したかったので、簡単なもので試してみます。 チャレンジ: 任意の(文字列)入力(ASCIIの範囲内)を取得し、それが数値であるかどうかを推測し、評価に使用できるものを出力します。 ルール: 数字には文字のみが含まれます -0123456789,. 回答は、-1000000000〜1000000000(排他的)の間の数字を認識するためにのみ必要ですが、任意の大きな数字を認識する場合があります。 完全なプログラムまたは関数を作成できます。 数値の場合、識別に使用できるものをすべて返し、説明に出力を文書化します(例:)My program outputs T if a number, F if not.。 入力は、ASCII範囲内の任意の量の文字または空です(空の場合、数値でない場合は出力するものを返します)。 数字には小数点を含めることができます(例:)3.14。その場合、小数点の前に少なくとも1桁、その後に少なくとも1桁の数字が必要です。 数値の先頭または末尾にゼロを付けることができます(例:)000001.00000。 数値の整数部分は、読みやすくするために、カンマ付きの3桁のチャンクに分割できます(例:)1,000.23456。この場合、それらは、右から左に3桁ごとに分割する必要があります(例:1,234,567、10,000.202、123,234.00、0,123.293)。 負の数は、先頭-(例-1.23)で示されます。+正の数を示すためのリードは許可されず、偽の出力になるはずです。 例外は、有効で識別可能な出力としてカウントされません(標準出力ストリームに出力を渡すことができる場合を除きます(Exception on line N [...]たとえば、文字列が標準出力ストリームに出力される場合、数値/非数値の出力として入力できます)。 テストケース: (My program outputs T if a number, F if not.バージョンを想定) 123 -> T [on integer] -123 -> T [negative numbers …

4
2Dトラフィックジャム
Biham-ミドルトン・レヴァインのトラフィックモデルは、モデルがトラフィックを簡素化自己組織化セルオートマトンです。 ランダムな開始位置を持つ格子上の点で表される多数の車で構成されます。各車は2つのタイプのいずれかです。右(この記事では赤で表示)。2種類の車が交互に移動します。各ターン中、対応するタイプのすべての車は、別の車によってブロックされていない場合、1ステップ進みます。 あなたの仕事は、このモデルをアニメーションとして視覚化することです。ここにいくつかの良いデモンストレーションがあります。 入力 密度を表す0〜1の浮動小数点数、および表示されるグリッドの高さと幅を表す2つの整数。入力が有効であり、関数へのパラメーターまたはユーザー入力からの読み取りが両方とも問題ないと仮定します。 例:(0.38 144 89上の画像に対応) 出力 実行中のこのモデルのアニメーションを表示する、少なくとも80x80のグリッド。開始時に、グリッドはグリッドが入力密度に達するまでランダムに配置されます。入力密度は、赤と青の半分になります(つまり、密度にグリッドの正方形の総数を掛け、好きなように丸めます)。密度はこの値である必要があります。つまり、確率として各セルを密度で埋めることはできません。各ステップで、1種類の車が下または右に移動し、端を通過すると折り返します。移動する車のタイプは各ステップを交互に切り替えます。アニメーションを表示可能にするには、各ステップ間に少なくとも10ミリ秒が必要です。 ルール 車は、互いに区別でき、背景と区別でき、各車のタイプが同じ色または記号である限り、任意の色または記号を使用できます。 コンソールとグラフィック出力の両方が許可されています。コンソール出力の場合、印刷可能な記号は問題ありませんが、出力は文字のグリッドとしてなければなりません。 スクリーンショットまたはgifがない場合は、作成した出力の種類を指定してください。 シミュレーションは永久に実行する必要があります。 出力は少し複雑なので、質問がある場合はコメントしてください。

2
ロールケーキフレーズ
ロールケーキは、スポンジケーキの層、クリーム(またはアイスクリーム)の層で作られたおいしいお菓子で、螺旋状に巻かれています。ウィキペディアを参照してください。 あなたの仕事は、標準入力から空でないフレーズ文字列を取得し、スペースを取り除き、中央から反時計回りに左からロールケーキとしてロールし、最初のスペースの一番下からスペースを開始することです次の例のように、フレーズ文字を中央から左から右へ。 フレーズはスポンジケーキのレイヤーであり、クリームレイヤーは空のスペースとして表されることに注意してください。 Input: Lorem ipsum dolor sit amet, consectetu adipiscing elit, sed do eiusmod Output with spaces ' ' represented as _ ilegnicsip t________i ,_srolod_d s_i____m_a e_t_oL_u_u d_a_r__s_t d_m_emip_e o_e______t e_t,consec i____ usmod テストケース Input: Lorem ipsum dolor sit amet, consectetu adipiscing elit, sed do eiusmod Output: ilegnicsip t …

6
絵文字ですか?
私は最近このiOSアプリで作業していて、(かなり簡単に解決した)問題に遭遇しました:私の文字列が絵文字のみで構成されているかどうかをどのように判断しますか? まあ、それは今日のあなたの仕事です! 入力 文字列。Unicode文字の存在に問題がある場合は、別の妥当な形式を使用できます。入力を取得するために通常の文字列とは異なる何かをした場合、何をするかを述べてください。 出力 入力文字列に絵文字のみが含まれる場合は真理値を出力するか、絵文字以外の文字が含まれる場合は偽値を返します。 ちょっと待って...絵文字って何?😅 絵文字は、次の範囲に含まれるキャラクターです。 0x1F600...0x1F64F // Emoticons 0x1F300...0x1F5FF // Misc Symbols and Pictographs 0x1F680...0x1F6FF // Transport and Map 0x2600...0x26FF // Misc symbols 0x2700...0x27BF // Dingbats 0xFE00...0xFE0F // Variation Selectors (おもう) これは🔹code -golf isなので、バイト単位の最短コードが勝ちます❕ テストケース "Is it an emoji? 🤔" -> False "🔹code-golf🔹" -> False "😮 😥 …

2
重複する行順序
(乾式消去ボードでの描画中に触発) チャレンジ: ホワイトボード上の乾燥消去マーカーのさまざまな色を表す文字を含む入力文字列が与えられた場合、最初から最後までそれらが描画された順序を出力します。 入力: アルファベットで表されるドライ消去マーカーの色を含む文字列(上の文字は小文字とは異なります。各色に異なる文字が含まれている限り、私の例で使用されている文字に置き換えることができます)。ホワイトボードの残りの部分は空白になります。ボードごとに各色が1行だけ存在します。すべての行が互いに重なる入力はありません(テストケースを参照4)。すべての線は直線で、水平または垂直になります。 出力: 最初に描画された線から最後の線まで、ボード上で線が描画された順序。入力に複数のソリューションがある場合、それらのいずれかを出力できます。使用する文字が入力で使用されているものと一致する限り、出力は任意の形式にフォーマットできます。単一の文字列、またはスペース、改行などで区切られます。 テストケース: 入力1: R R BBRBB R 出力1: BR 入力2: GY GY RRRRGYRRR GY GY BBBBBBBB GY GY 出力2: RGYB // or RYGB 入力3: R P R P AAAARAAAAPA R P R P GGGGRGGG P R 出力3: AGPR // or APGR 入力4: O Y …
17 code-golf  string 

24
交互フィボナッチ
交互フィボナッチ数列では、最初に起動1し、1いつものように。 ただし、最後の2つの値を常に追加して次の番号を取得する代わりに、追加から始め、代わりに減算するたびに交互に実行します。 シーケンスは次のように始まります。 1 1 2 # 1 + 1 -1 # 1 - 2 1 # 2 + -1 -2 # -1 - 1 -1 # 1 + -2 -1 # -2 - -1 -2 # -1 + -1 1 # -1 - -2 -1 # -2 + 1 …

9
マルコフ連鎖クイン
この質問では、単純なマルコフモデルを使用します。マルコフ連鎖の詳細については、http: //setosa.io/ev/markov-chains/を参照してください。 文字列を取ります。この例では、次の単語を使用します。 reader 次に、文字ごとに、文字列内の文字が出現するたびに表示される文字を取得します。(​`^`​文字列の開始と​`$`​終了を表します) `^` -> {'r'} # After the start of the string, there is an `r`. 'r' -> {'e', `$`} # After the first `r` (*r*eader), there is an `e` # after the second (reade*r*), there is the end of the string. 'e' -> {'a', 'r'} 'a' …

24
配列の逆デルタ
配列の逆デルタ あなたの仕事は、符号付き32ビット整数の配列が与えられたら、その逆デルタで再コンパイルすることです。たとえば、リスト 1 3 4 2 8 デルタを保持します: 2 1 -2 6 これらは無効になり、次のようになります。 -2 -1 2 -6 そして、再コンパイルして、次を生成します。 1 -1 -2 0 -6 最終結果として。 入出力 list / array / table / tuple / stack / etcが与えられます。任意の標準入力メソッドを介した入力としての符号付き整数 上記のデルタ反転方法に従って、変更されたデータを受け入れ可能な形式でもう一度出力する必要があります。 0 < N < 10各数値が範囲内にあるN個の入力を受け取ります-1000 < X < 1000 テストケース 5 6 7 …

25
製品カタログ
この問題は、製品識別子を表す文字列を3つのコンポーネントに分けることです。 最初の部分は、倉庫を表す任意の長さの上下の文字で構成されます。 2番目の部分は、製品番号を表す数字です。この部分も任意の長さです。 最後の部分はサイズと色の修飾子であり、この部分は文字列の最後まで続きます。修飾子は、大文字で始まり、英数字で構成されることが保証されています。 各部分は明確に分けて印刷する必要があります。各部分が空でないことが保証されています。 勝者は、この問題を解決するために最小バイトを使用する人です。 例: 入力: UK7898S14 出力: UK 7898 S14 ここで、英国は英国、7898は製品コード、S14はサイズ14です。 例2: 入力: cphDK1234CYELLOWS14QGOOD 出力: cphDK 1234 CYELLOWS14QGOOD ここで、cphDKはデンマークのコペンハーゲン、1234は製品コード、CYELLOWS14QGOODは黄色、サイズ14、高品質を表します。
17 code-golf  string 

2
ヤッツィーのゲームをプレイする
ゲームヤッツィーでは、プレイヤーはターンごとに5面のサイコロを5回転させ、1ターンにつき3回までダイスを振って、ロール間でダイスを節約し、次にロールに使用するカテゴリを選択します。これは、カテゴリがなくなるまで続きます(13ターン後に発生します)。次に、プレイヤーのスコアが集計され、最高スコアのプレイヤーが勝ちます。 カテゴリは次のとおりです(「サイコロの合計」は、指定されたサイコロのピップ数を合計することを意味します)。 上段 エース:1ピップを示すサイコロの合計 Twos:2ピップを示すサイコロの合計 Threes:3ピップを示すサイコロの合計 Fours:4ピップを示すサイコロの合計 ファイブ:5ピップを示すサイコロの合計 Sixes:6ピップを示すサイコロの合計 下段 スリーオブカインド:同じ値を持つ3つのサイコロ、スコアはすべてのサイコロの合計 フォーオブカインド:同じ値を持つ4つのサイコロ、スコアはすべてのサイコロの合計 フルハウス:1つの値を持つ3つのサイコロと別の値を持つ2つのサイコロ、スコアは25 スモールストレート:4つの連続したサイコロ、スコアは30 ラージストレート:5連続ダイス、スコアは40 ヤッツィー:同じ値を持つ5つのサイコロすべて、スコアは50 チャンス:サイコロの任意の組み合わせ、スコアはすべてのサイコロの合計 カテゴリの選択に関するいくつかのルールがあります。 プレイヤーがロールと一致しないカテゴリーを選択した場合、そのカテゴリーのスコアは0になります。 プレイヤーが上部セクションで少なくとも63のスコアを獲得した場合、35ボーナスポイントを受け取ります。 プレイヤーがヤッツィーを振ったが、ヤッツィーのカテゴリーがすでに取られている場合(別のヤッツィーが-ミスで0を入力してもカウントされません)、100ポイントのボーナスを受け取ります。このボーナスは、最初の後にすべてのヤッツィーに対して授与されます。 さらに、プレーヤーはカテゴリの入力を選択する必要があります。ロールに対応する上部セクションのカテゴリーを選択する必要があります(たとえば、5 6のロールをSixesカテゴリーに配置する必要があります)。対応する上部セクションカテゴリが既に使用されている場合、下部セクションカテゴリにYahtzeeを使用できます(この場合、フルハウス、スモールストレート、またはラージストレートを選択すると、0ではなく通常のポイントが付与されます)。下位セクションのカテゴリがすべて使用された場合、ヤッツィーはスコア0の未使用の上位セクションカテゴリに適用されます。 チャレンジ このチャレンジでは、競技者はヤッツィーの1000ゲームをプレイします。各ゲームの終了時に、最高得点の提出物は1ポイントを受け取ります。すべてのゲームが終了した後、最も多くのポイントを持つ提出が勝ちます。同点がある場合、同点が壊れるまで、同点提出物のみで追加のゲームがプレイされます。 コントローラ 完全なコントローラコードは、このGitHubリポジトリにあります。プレイヤーが対話するパブリックインターフェイスは次のとおりです。 public interface ScorecardInterface { // returns an array of unused categories Category[] getFreeCategories(); // returns the current total score int getScore(); // returns …

15
オイラー数を計算する
オイラー数 A(n, m)の順列の数であり、[1, 2, ..., n]正確にここでm要素が前の要素よりも大きいです。これらはライズとも呼ばれます。たとえば、の場合n = 3、3!= 6個の順列[1, 2, 3] 1 2 3 < < 2 elements are greater than the previous 1 3 2 < > 1 ... 2 1 3 > < 1 ... 2 3 1 < > 1 ... 3 1 2 > < 1 …

15
レター交換チャレンジ
アイデアはシンプルです。3つの文字列を提供することにより、「視覚化された」文字置換を作成する必要があります(入力はコンマ区切り、個別の入力、または配列として使用できます)。最初のセグメントは修正する単語、2番目のセグメントは置換する文字、3番目のセグメントはセグメント2の文字の置換です。 例えば: | | Input | Starting Word | Output | |----|-----------------------------|---------------|-------------| | #1 | Hello world -wo -ld +Ea +th | Hello world | Hello Earth | | #2 | Hello World -wo -ld +Ea +th | Hello World | Hello Worth | | #3 | Hello -llo +y …
17 code-golf  string 

3
部分文字列を含むパリンドロームまでの最小ハミング距離
これは、CS.SEから削除された質問に触発されました。 仕事 空でない2つの入力文字列AとBが与えられた場合、AからBを部分文字列として含む回文までの最小距離を出力します。距離は、文字置換の数(ハミング距離)によって定義されます。 制限事項 賢明な入力:回文が存在します。これは| A |を意味します ≥| B |。 AとBには小文字のASCII文字のみが含まれ、小文字と大文字は区別されます(他のすべての文字と同様)。 言語でASCII文字を処理できない場合は、整数(またはその他の適切なデータ型)も使用でき、範囲を128要素に制限することもできます。 stdin、関数引数、コマンドライン引数などから入力を取得できます。 stdout、戻り値などに結果を与えることができます。 作業中の回文を与える必要はありません。最短の距離で十分です。 例 A B Output thilloaoyreot hello 4 (thelloaolleht) benjonson stack 9 (stackcats) neversaynever! odd 9 (neveroddoreven) ppcggcpp gg 0 (ppcggcpp) stars tat 1 (stats) 得点 これはコードゴルフで、バイト単位の最短コードが勝ちです。

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