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

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

15
コーディング規約の変換
そのコーディングゴルフでは、TitleCaseを使用した1つのコーディング規則をlower_case_with_underscoresに変換する必要があります。およびその逆! 仕様 次の方法でケーシングを変更します。 アンダースコア文字が区切り文字の場合、区切り文字なしで大文字小文字をタイトルケースに変更します。 区切り文字のない単語が複数ある場合は、大文字小文字を小文字に変更し、アンダースコア文字を区切り文字として追加します。 単語が1つ(または1文字)の場合:単語が小文字で始まる場合は、大文字小文字をタイトルケースに変更します。単語が大文字で始まる場合、大文字小文字を小文字に変更します。 許可される文字: AからZ aからz アンダースコア(_)。 大文字と小文字が混在する入力は許可されません。許可されないケースの例: Coding_Convention_Conversion a_BC 事例 Input | Expected Output =========================================================== CodingConventionConversion | coding_convention_conversion coding_convention_conversion | CodingConventionConversion abc | Abc Abc | abc ABC | a_b_c a_b_c | ABC a | A A | a ルール 使用を許可されToUpper、ToLowerそしてToTitleCase関数の。 正規表現を使用できます。 code-golf:バイト単位の最短コードが勝ちます!
22 code-golf  string 

30
ストリングスの塔
テキストの文字列が与えられたら、それを「タワー」として出力します。 (の形式の0:n)文字列の各スライスが繰り返される5*nので、最初の文字が5回繰り返され、最初と2番目の文字が10回繰り返されます。 例: 'hello' -> ['h'] ['h'] ['h'] ['h'] ['h'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e'] ['h', 'e', 'l'] ['h', 'e', 'l'] ['h', 'e', 'l'] ['h', 'e', 'l'] ['h', 'e', 'l'] ['h', 'e', 'l'] ['h', 'e', …

11
進行中のASCIIハングマン
(コードレビューに関する質問に触発された) 2人がHangmanをプレイしているが、ゲームを聞いたことがあるだけで、現在のステータスを表示したいとします。 入力として2つの単語が与えられ、各単語が一致する[A-Z]+か[a-z]+(選択)、以下のルールに従って、ハングマンゲームの現在の状態をASCIIアートとして出力します。 最初の単語は推測される単語で、2番目の単語はすでに推測された文字です。これらは、任意の順序で入力として取得できます。 推測される単語は空でないことが保証されていますが、すでに推測された文字は空である可能性があります(つまり、ゲームの開始のように)。 ゲームは常に有効な絞首刑執行人のゲームになります(つまり、推測された文字は複製されず、ゲームの終了後に文字が推測されることはありません。入力としてのみ文字を受け取ります)。 絞首刑執行人の図面の下には、推測する単語を_、スペースで区切られた未知の文字の代わりに配置する必要があります。たとえば、推測される単語がであったBOAT場合、絞首刑執行人の絵の下はでなければなりません_ _ _ _。単語が推測さBOATれた場合、A図面の下にある必要があります_ _ A _。 推測される単語の下は、その単語に含まれていない既に推測された文字でなければなりません。これらは任意の順序で指定でき、必要に応じてアルファベット以外の区切り文字で区切ることができます。 ハングマンゲームの最初の開始から終了までの状態を以下に示します。誤って推測された各文字は、状態を1つ進めます。したがって、最初に誤って推測された文字は頭をO表示し、次の文字は体を|表示します。 +---+ | | | | | | ========= +---+ | | O | | | | ========= +---+ | | O | | | | | ========= +---+ | | O | /| | | …

27
目に見えるサイコロの顔
伝統的な西洋ダイは 1〜6の整数が顔にマークされているキューブ、です。7に追加されるペアは、反対側の面に配置されます。 立方体であるため、常に1〜3面(両端を含む)1面しか見ることができません。反対側の顔を同時に見ることはできません。 あなたの仕事は、ダイ上の辺を表す整数のリストを与えられて、これらの面を同時に見ることができるかどうかを決定するプログラムまたは関数を書くことです。 1 さて、多分あなたは一対の目で4つまたは5つの顔を見ることができますが、この挑戦​​の目的のために、私たちは一点からダイを観察します。 ルール: あなたの提出物は入力リストを仮定するかもしれません: 空ではありません。 を満たす値のみが含まれます1 ≤ n ≤ 6。 重複する要素は含まれていません。 入力がソートされているとは思わないかもしれません。 あなたの提出物は、真実/偽の値を出力する必要があります:真実は、顔が同時に見ることができ、そうでなければ偽です。 これはcode-golfなので、最短の回答(バイト単位)が勝ちです! デフォルトでは、標準の抜け穴は禁止されています。 テストケース 真実: [6] (One face) [6, 2] (Share a side) [1, 3] (Share a side) [2, 1, 3] (Share a vertex) [3, 2, 6] (Share a vertex) 偽物: [1, 6] (1 …

18
Boggleのゲームを獲得する
バックグラウンド で尻込み、ラウンドは、それぞれのポイントを加算して得点されるユニークな(複数のプレイヤーが0ポイントの価値がある見つけたすなわち任意の単語)プレイヤーが発見した言葉。ポイントは、次のように各単語の文字数に基づいて計算されます。 3文字:1ポイント 4文字:1ポイント 5文字:2ポイント 6文字:3ポイント 7文字:5ポイント 8文字以上:11ポイント チャレンジ この課題では、各プレーヤーの単語を表す文字列のリストのリストを取り込んで、プレーヤーのスコアのリストを出力するプログラムまたは関数を作成します。少なくとも2人のプレイヤーがいて、すべての単語が3文字以上で、すべて小文字(または必要に応じてすべて大文字)であると想定できます。また、各プレイヤーが各単語を1回だけ使用すると想定することもできます。つまり、プレーヤーのリストには重複が含まれません。これはコードゴルフであるため、バイト単位の最短回答が優先されます。 ルール 入力は、合理的な形式で取得できます。例には、文字列のリストのリスト、コンマで区切られた文字列のリスト、入力の各行のコンマで区切られた文字列などが含まれます。選択したセパレーター(改行など)を使用してstdoutに値。 テストケース 入力=>出力 [["cat","dog","bird","elephant"], ["bird","dog","coyote"], ["dog","mouse"]] => [12,3,2] [["abc","def","ghi"], ["ghi","def","abc"]] => [0,0] [["programming","puzzles"], ["code","golf"], []] => [16,2,0]

24
朝のコーヒーを飲む
このアスキーコーヒーカップを描きます。 o o o __________ / \ __ | J | \ | A | | | V | | | A | __ / \ __________ / コーヒースクリプトまたはjavaのブラウニーポイント:) バイト、関数またはプログラム、末尾の改行または空白での最短コードは許容されます、飲み干してください!

30
私のボディマス指数は何ですか?
問題: あなたの仕事は、入力として身長(メートル単位)と体重(キログラム単位)を取り、対応するBMIカテゴリを出力するプログラムを書くことです。 BMIは、身長に対する体重の比率の尺度です。それは多くの人々にとって古く不正確です、しかしそれはここでは重要ではありません! BMIは、次の式を使用して計算できます。 BMI = (mass in kilograms) / (height in meters)^2 カテゴリは次のように定義されます。 BMI <18.5:「体重不足」 18.5 <= BMI <25:「通常」 25 <= BMI:「太りすぎ」 挑戦のために、私はすべての「極端な」カテゴリーを無視しています。また、「25」のようないくつかの数値は2つのカテゴリの間にあるため、明確な答えが得られるように境界をわずかに調整しました。 関数または完全なプログラムのいずれかを作成できます。 入力: 入力は、任意の合理的な形式にすることができます。2つの独立した引数または単一の文字列としての2つの数値(または文字列)。2つの数字の配列/リスト、「weight」および「height」キーのある辞書... 10進数の値がサポートされる必要があります。入力は常に有効であると仮定できます(負の値はなく、高さは決して0になりません)。 出力: 出力は、大文字と小文字を区別しないカテゴリ名を含む文字列です。文字列は大文字と小文字を無視して、上記とまったく同じカテゴリ名に一致する必要があります。これは、stdoutへの出力、返される(関数の場合)、またはファイルへの書き込みが可能です。 テストケース(重量、高さ=>結果): 80, 1 => "Overweight" 80, 2 => "Normal" 80, 3 => "Underweight" 50, 1 => "Overweight" 50, 1.5 => …
21 code-golf  math 

30
2つの数字を掛ける
入力: 2つの10進整数。これらは、標準入力のコードに、プログラムまたは関数の引数として、またはリストとして与えることができます。 出力: 10進整数としての積。たとえば、入力5 16は出力につながります80。 制限:標準的な抜け穴はありません。これはcode-golfであり、最小バイト数で答えが勝ちます。 注:以前の課題である2つの数字を追加して盗まれたレイアウト。 テストケース: 1 2 -> 2 4 5 -> 20 7 9 -> 63 -2 8 -> -16 8 -9 -> -72 -8 -9 -> 72 0 8 -> 0 0 -8 -> 0 8 0 -> 0 -8 0 -> 0 0 0 …
21 code-golf  math  number 

1
Nethackの巻物の自動価格識別
ああ神々!Doorknobでここから離れることはできません!どこでもネットハックになります!- 前から1dによってGeobits 失望することはできませんでした... 前書き (説明を気にしない場合や、タブ爆発症候群がある場合は、このセクションをスキップできます) Nethack(およびRogue、および同じローグライクジャンルの同様のゲーム)の特徴的なメカニズムの1つは、その識別システムです。ゲームの開始時には、開始インベントリ内のアイテムのみが「正式に識別されます」。他のオブジェクトの大部分は未知から始まります。たとえば、「反射の盾」は、識別される前に「研磨された銀の盾」として最初に表示されます。 「磨かれた銀色の盾」は反射の盾にしかなれませんが、これは他の2つの場合に興味深い結果をもたらします。 一部のアイテムは互いに異なりますが、同じ「外観」を持っています。あなたが見つけた場合、「たとえば、灰色の石を、」それは4つの物事のいずれかになります。フリントストーン(役に立たない)、試金石(便利です)、LOADSTONEはそれはトンの重量を量ると、あなたので、(深刻なあなたを妨げなります落とすことはできません)、または幸運の石(非常に役立つ、ゲームに勝つためにほとんど必要)。 多くのアイテム(スクロール、杖、指輪、魔法書、鎧など)の外観はランダム化されています。これが意味することは、ポーションが持つ可能性のある可能性のある外観のセットリストがあることです。たとえば、[ 黄金のポーション、渦巻きポーション、発泡性のポーション、赤紫色のポーションなど]。これらの外観は、ランダムに彼らが実際に(何であるかに割り当てられている治癒のポーション、麻痺のポーション、目に見えない参照のポーション、多形のポーション、など)。 つまり、六角形のお守りは、あるゲームであなたの命を救うことができ(命を救うお守り)、次のゲームであなたを窒息死させることができます(絞殺のお守り)。 当然、これによりアイテムの識別がゲームの重要な部分になります。アイテムは「正式に識別される」ことができます。つまり、それらは明確に特定のアイテムとして明確に表示されます(たとえば、見つけた宝石の杖はすべて、モンスターを作成する杖として表示されます)。これは、主に巻物または特定の魔法書によって行われます。しかし、通常、それらは不足しています。 非公式の識別。これは、特定の特定されていないアイテムが特定のタイプであること(または複数のタイプのうちの1つにしかなれないこと)はかなり確実(または確実)であることを意味します。これはいくつかの方法で行うことができます:ワンドの彫刻テスト、リングのシンクテスト、または最も一般的な方法... ... 価格の確認!これがこの課題の目的です。 一言で言えば、Dungeons of Doomの至るところにショップがあります(そう、店主は地下ダンジョンに店を構えるのは良い考えだと思ったので、理由を聞かないでください)。これらのショップでは、旅行中に出くわすさまざまなアイテムを売買できます。アイテムを購入または販売するとき、店主は最初にあなたにどれだけあなたにそれを売る/あなたからそれを購入するかを教えてくれます。特定のアイテムには特定の価格が保証されているため、これを使用して特定のタイプのアイテムを非公式に識別することができます。 光の巻物などの一部のアイテムは、特定の金額がかかる唯一のアイテムです。これにより、明確に識別することができます。ただし、ほとんどのアイテムは同じクラスの他のアイテムと価格グループを共有しているため、可能性を絞り込むことしかできません(これは依然として有用です)。ただし、アイテムの売買価格は、多くの変数(Charisma統計など)の影響を受けます。したがって、上記のチャート。 Nethackが好きだと言えますか? 入力 入力は、現在プレイされているNethackゲーム(バニラ、3.4.3)として提供されます。 "For you, most gracious sir; only 177 for this scroll labeled VERR YED HORRE." --More-- ------------ | . --------- | | ---------- | ^ | | .## ################. …
21 code-golf  game 

5
スワップとポップでリストを並べ替える
整数1〜Nのランダム化されたリストを考えてみましょう。次のアクションのみを使用してソートします。 最初と最後のリスト要素を交換します。(S) ポップ最初の要素をオフにして、リストの末尾に追加します。(P) 隣接する要素の十分なスワップでリストをソートできるため、これは常に可能です。SとPを使用すると、問題の2つの要素がリストの最初と最後の項目になるまでPを呼び出し、次にSを呼び出してそれらを交換し、元のインデックスになるまで再びPを呼び出すことで、隣接する要素を交換できます(スワップされます) )。 ただし、SおよびP操作の数の点では、この方法はほとんどのリストに最適とは言えません。 チャレンジ 1からN(N> 1)までの数字の順列を取り込むプログラムまたは関数を作成します。リストまたは文字列、または便利なものとして指定できます。左から右に適用したときに順列を並べ替えるSとPのシーケンスを出力する必要があります。このシーケンスは、最適に短くする必要はありませんが、短いほど良いです(スコアリングを参照)。 例 入力された場合は[2, 1, 3]出力があるかもしれないSPので、 Sを適用[2, 1, 3]すると[3, 1, 2]、 そしてPはに適用され[3, 1, 2]ます、それ[1, 2, 3]にソートされ、。 検証者 このスタックスニペットを使用して、シーケンスが実際にリストを並べ替えていることを確認できます。リストには角括弧が必要で、カンマで区切る必要があります。SPのシーケンスは、単なる文字列であるSのとPの。 <style>*{font-family:monospace}</style><script>function swap(list) {var tmp = list[0];list[0] = list[list.length - 1];list[list.length - 1] = tmp;}function pop(list) {list.push(list.shift())}function check() {var result = 'Sorted sucessfully.';var details = '';try …

4
アリストテレスの数問題を解く
アリストテレスの数値パズルは、各軸に沿った合計が38になるように、1〜19の一意の整数を使用して、六角形グリッドの19個のセルのそれぞれにデータを取り込むという課題です。 ゲームボードは次のように描くことができます。 パズルは、本質的に、次の15の方程式のセットの解決策です。 ((a + b + c) == 38 && (d + e + f + g) == 38 && (h + i + j + k + l) == 38 && (m + n + o + p) == 38 && (q + r + s) == 38 …

5
あとどれくらい?
あとどれくらい? 最近、携帯電話で5分間のタイマーを使ってピザを作っていました。誰かが入って来て、あとどれくらい残っているかと私に尋ねると、最初は質問の答え方についてちょっと混乱しました。現時点でのタイマーが3:47であった場合、「3分47秒」と読み上げた時点で、時間は変更されていたはずです。したがって、タイマーを読み終えた直後にタイマーが到達する時間を見つける必要があります。 これがあなたの挑戦です。このプロセスを自動化することです。適切な形式( ":"で区切られた、または分と2番目の引数として)で時間を指定し、タイマーが取得するのに必要な時間と同じ時間の読み取りにかかる現在の時点から最も早い時間を出力します。に。各音節の読み取りには1秒かかると想定しています。 さらなるルール 「分」と「秒」をそれぞれ2つの音節、およびそれらの間の「および」としてカウントする必要があります。 ピザの調理に59:59以上かかることはありません。 「11分0秒」は10音節ではありません。「11分」(5音節)に簡略化する必要があります。分も同様です。「0分7秒」も4音節としてカウントされます。 プログラムは、任意の形式で出力を提供できます:の配列[minutes, seconds]、または<minutes> minutes and <seconds> seconds(通常のテキスト出力)。 標準の抜け穴が適用されます。 これはcode-golfであるため、バイト単位の最短回答が優先されます。 テストケース すべての入力として (minutes, seconds) (4, 47) = (4, 38) (Four MiNutes And ThirTy Eight SeConds - 9 syllables/seconds) (1, 1) = (0, 56) (FifTy-Six SeConds - 5 syllables/seconds) (59, 57) = (59, 46) (FifTy …

9
私はあなたのBIDMASを見て、BADMISを育てます
私はあなたのBIDMASを見て、BADMISを育てます チャレンジ "5 + 4 * 9/3-8"の間に演算子を含む一連の数値が与えられた場合、基本演算の順序のすべての順列[/、*、+、-]について、式のすべての可能な結果を​​返します。 ルール 禁止されている標準的な抜け穴 I / O 入力は中置演算で順序付けする必要がありますが、最も簡単です(文字列または配列) 単項演算子をサポートする必要はありません(例:「-3 * 8 / +2」) 暗黙的に型を解析する言語では、整数を浮動小数点数に置き換えることができます(例:45⟶45.0) 出力は、式のすべての可能な結果であり、形式または順序は指定しないでください 入力はすべて有効です(たとえば、「7/3 + *」を処理する必要はありません)。これは、ゼロで割る必要がないことも意味します。 演算子はすべて左結合なので、「20/4/4」=「(20/4)/ 2」 これはCode Golfなので、バイト数が最も少なくなります テストケース(説明付き) 「2 + 3 * 4」= [14、20] 2 +(3 * 4)⟶2 +(12)⟶14 (2 + 3)* 4⟶(5)* 4⟶20 「18/3 * 2-1」= [11、2、6] ((18/3)* 2)-1⟶((6)* …

10
nへの最短パスの数を数える
このコード課題は、あなたが到達するためのいくつかの方法を計算していますnnnから始まる222形式のマップ使用してx↦x+xjx↦x+xjx \mapsto x + x^j(とjjj非負整数)、及びステップの最小数でそうすることを。 (注、これはOEISシーケンスA307092に関連しています。) 例 したがって、たとえば、3つのマップが必要であり、2から13を送信する3つのマップの2つの異なるシーケンスがあるため、f(13)=2f(13)=2f(13) = 2です。222131313 x↦x+x0x↦x+x2x↦x+x0orx↦x+x2x↦x+x1x↦x+x0x↦x+x0x↦x+x2x↦x+x0orx↦x+x2x↦x+x1x↦x+x0\begin{array}{c} x \mapsto x + x^0 \\ x \mapsto x + x^2 \\ x \mapsto x + x^0\end{array} \qquad \textrm{or} \qquad \begin{array}{c}x \mapsto x + x^2 \\ x \mapsto x + x^1 \\ x \mapsto x + x^0\end{array} その結果2→3→12→132→3→12→132 \to …

17
仲人、仲人、私をマッチさせて
(ただしFind、を見つけることも、キャッチすることtryCatchもありません) これは、興味深いR関数を実装するマルチパートシリーズのパート2です。パート1はここにあります。 タスク: Rのmatch関数をできるだけ少ないバイトで実装する必要があります。 入力: x、空の可能性のある整数のリスト/配列 table、空の可能性のある整数のリスト/配列 nomatch、単一の整数値 incomparables、空の可能性のある整数のリスト/配列 出力: Oに等しい長さの整数の単一の配列/リストx。各値O[i]は次のいずれかを表します。 インデックスjの最初の値tabletable[j]==x[i] nomatch、には値ことを示すtableISに等しいないx[i] ORそのx[i]リストにありますincomparables。 テストケース All in the form x, table, nomatch, incomparables -> output outputs [], [1,2,3], 0, [5] -> [] [1, 2, 3], [], 0, [5] -> [0, 0, 0] [9, 4, 3, 6, 3], [9, 8, 7, …

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