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

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

19
反復囚人のトリレンマ
チャレンジステータス:オープン あなたのボットが見つからない場合は、コメントするか、PRを開くか、そうでなければ私に叫んでください。 囚人のジレンマ... 3つの選択肢。クレイジーだよね? ペイオフマトリックスは次のとおりです。左側のプレーヤーA、上部のB A,B| C | N | D ---|---|---|--- C |3,3|4,1|0,5 N |1,4|2,2|3,2 D |5,0|2,3|1,1 ペイオフマトリックスは、両方のプレイヤーが常に協力するのが最善であるように設計されていますが、(通常)ニュートラルまたはディフェクションを選択することで獲得できます。 次に、いくつかの(競合する)ボットの例を示します。 # turns out if you don't actually have to implement __init__(). TIL! class AllC: def round(self, _): return "C" class AllN: def round(self, _): return "N" class AllD: def round(self, …

11
ソケット-プラグの互換性
特に電子機器を充電するためにアダプターが必要なときは、電子機器を持ち歩くのはいつも楽しいです。あなたの課題は、特定のプラグが特定のソケットと互換性があるかどうかを確認することで、旅行の計画を少し簡単にすることです。 チャレンジ プラグタイプとソケットタイプを指定すると、それらが連動するかどうかを示す値を返します。 適合表 Socket Accepted plugs | Plug Accepting Sockets A A | A A, B B A, B | B B C C | C C, D, E, F, H, J, K, L, N, O D C, D, E, F | D D E C, E, F | …

6
ASCII蛇行曲線を描く
この質問の目的のために、蛇行曲線は、左から右への一般的な方向に従う曲線ですが、左に90度でn + 1回転を繰り返し、次にn + 1が右に回転します(n> 0の場合)。 実際、蛇行自体にnセグメントがあります。 ターンはで示され+ます。 蛇行の幅(2つの間の距離+)は、水平線で3(---)、垂直線で1(|)です。 以下は、1〜5のサイズnの蛇行曲線の単一セグメントです。 +-------------------+ | | +---------------+ | +-----------+ | | | | | | | +-----------+ | +-------+ | | | +---+ | | | | | | | | | | | | | | +-------+ | +---+ | | +---+ …

23
同じ数字
言葉の文字は公平を求めています。 彼らは、文中に同じ回数だけ等しく現れることに決めました。 例: Priorities となります: Ppprrioooritttieeesss 最も一般的な文字であるように、各文字は3回表示され、i3回表示されます。 同じ文字の隣にある限り、繰り返し文字を配置する場所は重要ではありません。 すなわち: Pppriooorritttieeesss OK(「r」の文字) Ppprioororitttieeesss OKではありません(「r」文字) もう一つの例: invoice となります: innvvooiccee もう一つの例: Remittance Advice となります: Rrremmmiitttaannncce Adddvvvice スペース、コンマ、疑問符、引用などは、このチャレンジの文字とはみなされません。[a-zA-Z]のみを考慮する必要があります。一度スペースが十分になり、文字の順序が同じままである必要があります。 文字の大文字小文字は関係ありません。大文字と小文字は同じ文字としてカウントされます。つまり、Pip2つの「P」と1つの「I」があるため、になりPiipます。 大文字と小文字を区別しない文字はどのような形式でもかまいませんが、 Piip=piip=piiP=PiiP これはコードゴルフです

5
変更されたBoggleチェッカーを使用した、変更されたBoggle対応コード
バックグラウンド Boggleは、プレイヤーがランダムなアルファベットの4行4 列のボードで英語の単語を見つけなければならないボードゲームです。ボード上の隣接するセルを順番に選択することにより、単語を作成できます。(「隣接」とは、水平方向、垂直方向、または斜め方向に隣接することを意味します。)また、同じセルを単語内で複数回使用することはできません。 次にボードの例を示します。 I L A W B N G E I U A O A S R L このボードでは、BINGO、ORANGEおよびWEARS有効な言葉がありますが、SURGEとRUSSIAはありません。 SURGE:ボードに隣接するペアはありませんRG。 RUSSIA:S2回使用することはできません。 変更されたBoggleは、Boggleの変更されたバージョンであり、次の規則があります。 ボードサイズはn-by-でn、n任意の正の整数を指定できます。 各セルには、0〜255の任意の1バイトを含めることができます。 セルは複数回使用できますが、連続して2回使用することはできません。 上記のサンプルボードを使用するとBINGO、ORANGEおよびに加えて、有効な文字列WEARSにLANGUAGEなります(G2回使用されますが、2回続けて使用されRUSSIAないため)が、まだ(SSペアのため)使用されません。 コードフラグメントを使用した別の例です。文字列from itertools import*\nは次のボードにありますが、from itertoosl import*またはではありませんfrom itertools import *: f i ' ' s r t m l e o o p \n …

18
ジャンプアップシーケンス
次のシーケンスを検討してください。 0 1 3 2 5 4 8 6 7 12 9 10 11 17 13 14 15 16 23 ... かなりパターンレスに見えますよね?仕組みは次のとおりです。で始まり、整数0でジャンプしn、でn始まり1ます。これがシーケンスの次の番号です。次に、「スキップされた」番号を追加します。この番号はまだ昇順で表示されていません。次に、n最後に追加された番号からインクリメントしてジャンプします。このパターンを繰り返します。 したがって、たとえば、到達する11とになりますn=5。増加nしn=6、にジャンプしてから17、13 14 15 16まだ追加されていないので追加します。次のジャンプはn=7なので、シーケンスの次の要素は23です。 チャレンジ inputが与えられると、このシーケンスのth番目の項、シーケンスの最初の項をx出力するか、シーケンスの項の無限リストを作成します。0インデックスまたは1インデックスを選択できます。xx I / Oとルール 入力と出力は、任意の便利な方法で指定できます。 入力と出力は、言語のネイティブの数値型に適合すると仮定できます。 完全なプログラムまたは機能のいずれかが受け入れられます。関数の場合、出力する代わりに出力を返すことができます。 標準的な抜け穴は禁止されています。 これはコードゴルフなので、通常のゴルフルールがすべて適用され、最短のコード(バイト単位)が勝ちます。

3
プログラムの半分をスワップして除数をテストする
4つの整数シーケンス この課題では、次のシーケンスで与えられる正の整数の4つの異なるプロパティをテストします。正の整数Nは 完璧(OEIS A000396は)、の適切約数の和であればNは等しいNを。シーケンスは、6、28、496、8128、33550336、8589869056、137438691328、2305843008139952128 ...で始まります... refactorable(OEIS A033950)の約数の数ならばNでの約数であるN。シーケンスは、1、2、8、9、12、18、24、36、40、56、60、72、80、84、88、96、104、108、128 ...で始まります 実用的な(OEIS A005153)、すべての整数の場合1≤K≤Nは、いくつかの別個の約数の和であるN。シーケンスは、1、2、4、6、8、12、16、18、20、24、28、30、32、36、40、42、48、54、56 ...で始まります 高度に複合(OEIS A002128毎番号場合、)1≤K <Nがより厳密に少ない除数有するNを。シーケンスは、1、2、4、6、12、24、36、48、60、120、180、240、360、720、840、1260、1680、2520、5040 ...で始まります 4つのプログラム あなたの仕事は4つのプログラム(完全なプログラム、関数定義、または標準的な方法でI / Oを実行する匿名関数を意味する)を書くことです。各プログラムは、これらのシーケンスのいずれかのメンバーシップ問題を解決します。換言すれば、各プログラムは、整数陽性を取るN≥1入力として、及び出力truthy値の場合にNがない場合のシーケンスであり、そしてfalsy値。Nは、プログラミング言語の標準整数型の範囲内にあると仮定できます。 プログラムは次のように関連している必要があります。そのABCDような4つの文字列があります AC 完全な数字を認識するプログラムです。 AD リファクタリング可能な数値を認識するプログラムです。 BC 実用的な数字を認識するプログラムです。 BD 高度に合成された数値を認識するプログラムです。 得点 スコアは、文字列の合計長(バイト単位)、ABCDつまり、4つのプログラムの合計バイト数を2で割ったものです。各プログラミング言語で最も低いスコアが勝者です。標準のコードゴルフ規則が適用されます。 4つの文字列である場合、例えば、a{、b{n、+n}及び=n}?、その後、4つのプログラムがありa{+n}、a{=n}?、b{n+n}およびb{n=n}?、スコア2 + 3 + 3 + 4 = 12です。

9
3番目のFlak!
このチャレンジは、2018年4月のLotMチャレンジの一部として投稿されました Brain-Flakはチューリングターピット言語であり、PPCGでかなりの名声を得ています。この言語の記憶は2つのスタックで構成されていますが、ウィザードのWh eによって「隠された」3番目のスタックが発見され、Brain-Flakプログラムの興味深い新しい考え方につながりました。 だから、その貧しい隠された3番目のスタックの可視性を高めるのはどうですか?3番目のスタックに値する認識を持つ言語を作成しましょう!ここでThird-Flakを紹介します。 言語 Third-Flakには、3番目のスタックと呼ばれるスタックが1つだけあります。オペレータは、彼らが脳高射砲で行うのと同じ方法で、第三スタック上で動作しますが、ここには存在しない[]、{}、<>niladsなし{...}モナドは(サード高射砲プログラムでのみ許容文字があるので()[]<>)。各演算子の動作は次のとおりです(最後の要素がスタックの一番上にあるリストを持つ3番目のスタックを表す例を示します)。 ()Third-Flakで唯一の2文字演算子です。3番目のスタックの最上部を1つ増やします。例:[1,2,3]→[1,2,4] (、[、<:前ケースによって覆われていないすべての開口括弧プッシュ0第三のスタックに。例:[1,2,3]→[1,2,3,0] )3番目のスタックから2つの要素をポップし、それらの合計をプッシュバックします。例:[1,2,3]→[1,5] ]3番目のスタックから2つの要素をポップし、2番目から1番目を減算した結果をプッシュバックします。例:[1,2,3]→[1,-1] >3番目のスタックから要素をポップします。例[1,2,3]→[1,2] そして、言語の他の規則は次のとおりです。 実行の開始時に、3番目のスタックには単一の0のみが含まれます。 空[]または<>プログラム内に置くことは禁じられています(Third-Flakのセマンティクスに従う場合は、とにかく何もしませんが、実際にはBrain-Flakではここで再作成することはできません)。 プログラムの最後にある末尾の閉じ括弧が欠落している可能性があるという事実を除いて、括弧は常にバランスを取る必要があります。例として、[()<(()有効なThird-Flakプログラムがあります(プログラムの最後の3番目のスタックはになります[1,0,1])。 プログラムには、許可された6文字のみを含めることができます()[]<>。プログラムは空でないことが保証されています。 注:これは、空のスタックからポップする必要がある状況に対処する必要がないという以前のルールによって暗示されています。 チャレンジ シンプルで、Third-Flakのインタープリターを作成します。プログラムは、入力としてThird-Flakプログラムを受け取り、プログラムの最後の3番目のスタックの状態を出力として返す必要があります。 出力形式は、3番目のスタックの状態を明確に読み取ることができ、同じ番号が常に同じ方法でエンコードされる限り柔軟です(これは、出力形式が露骨な方法ではないことを示す方法です)不正行為を試みることは問題ありません)。 出力の選択により、チャレンジが簡単にならない限り、管理できる数値の範囲が制限される場合があります(これがデフォルトの抜け穴になるため)。 テストケース 各テストケースでは、最初の行が入力であり、2行目が出力スタックであり、スタックの最上部が最後の要素である数字のスペース区切りリストとして表されています。 [()<(() 0 1 0 1 [((((()()()()())) 0 0 0 5 ((([()][()][()]))) -3 [<<(((()()()())((((( 0 0 0 0 0 4 0 0 0 0 0 [()]<(([()])><[()] -1 0 …

1
Shape Simplifierを作成する
前書き アスキーロックがたくさんあります。それらは、ダッシュ、パイプ、V、キャレット、山かっこ、スラッシュ、スペースで構築されています。例: /--\ | | | | \--/ 次のようにそれらを侵食したい: /\ / \ \ / \/ すべての角が丸くなっています。より複雑な例: /----\ | \------\ | | | | \------------/ /--\ / \------\ | \ \ / \----------/ 別の浸食の後、それはなるだろう /\ / \------\ < \ \ / \--------/ そしてもう一つ: /\------\ < \ \ / \------/ チャレンジ あなたの課題は、入力を1回侵食できるプログラムを作成することです。岩が1つしかないことを想定し、それが1つの閉ループであると想定することができます。入力には文字のみが含まれ、/\ …

17
最初のn個の弾む数の合計を求める
用語 数字の増加は、各数字がその左側のすべての数字以上であるものです(例:12239) 減少する数字は、各数字がその左側のすべての数字以下であるものです(例:95531) 弾む数は、増加または減少していない任意の数です。これには少なくとも3桁が必要であるため、最初の弾む数は101です。 タスク 1以上の整数nが与えられた場合、最初のn個の弾力のある数の合計を求めます ルール これはコードゴルフであるため、バイト数が最も少ない答えが優先されます 言語に整数サイズの制限がある場合(例:2 ^ 32-1)nは、合計が整数に収まるほど十分に小さい 入力は、任意の合理的な形式(stdin、ファイル、コマンドラインパラメーター、整数、文字列など)にすることができます 出力は、任意の合理的な形式(標準出力、ファイル、数字を表示するグラフィカルユーザー要素など)にすることができます。 テストケース 1 > 101 10 > 1065 44701 > 1096472981
19 code-golf  number 

30
四角いルートを見つける
正の数、所与のときに、書き込みコードxバツx入力として、最大の正の除数出力xバツx以下の平方根に等しいxバツx。 言い換えれば、次のような最大の見つけます。n>0n>0n > 0 ∃m≥n:m⋅n=x∃m≥n:m⋅n=バツ\exists m\geq n:m\cdot n=x (存在するmmmを超えるのか等しいnnnようにmmm時間nnnであり、xバツx) 入力があった場合、例えば除数は、、、、、、および。 、とを得るために、より大きな数字ですべての乗算が、、我々が戻るので、最大で。1212122 3 4 6 12 1 2 3 12 3 3111222333444666121212111222333121212333333 これはコードゴルフなので、回答はバイト単位でスコアリングされ、バイト数が少ないほどより良いスコアと見なされます。 テストケース (1,1) (2,1) (3,1) (4,2) (5,1) (6,2) (7,1) (8,2) (9,3) (10,2) (11,1) (12,3) (13,1) (14,2) (15,3) (16,4) (17,1) (18,3) (19,1) (20,4) (21,3) (22,2) (23,1) (24,4) (25,5) (26,2) (27,3) …

30
はいまたはいいえの決定?
唯一の文字を含む、[長さ1-20]の文字列を入力した後、Yはい用および場合は場合はnプログラムは結果(yまたはn)を出力します。入力例:yynynynnyyを出力します。 結果は、次の方法でyとnを組み合わせて決定されます。 y esおよびn oはn o と等しい y esおよびy esはy esに等しい n oおよびn oはy esに等しい 文字列に3つ以上の文字が含まれている場合(おそらく...)、計算は同じになります。例: y esおよびy esおよびn oは等しい N O(noに第イエスとはマージはしないとイエスが残っていないと同じことが再び発生しているため) n oおよびn oおよびn oはnと等しい O(YESに最初の二つなしのマージは、noに現れないイエスとノー左があります) 出力付きの入力例: yynynynynyyn = n ヒント:プログラムが機能する文字の順序は重要ではないことに注意してください。(たとえば、後ろから、または後ろから、入力を読むことができます。文字を混ぜて、ソートします。何が正しい出力であるかが重要です)、楽しんでください! 受賞基準:これはcode-golfであるため、バイト単位の最短コードが優先されます。

19
長方形のコードで長方形のテキストを検出
改行でもスペースでもない文字を少なくとも1つ含む印刷可能なASCIIテキストの文字列(改行とスペースを含む)が与えられた場合、文字列が長方形の場合は真理値を出力し、そうでない場合は偽値を出力します。さらに、ソリューションのソースコードは、長方形でなければなりません。 次の条件をすべて満たす場合、文字列は長方形です。 最初の行と最後の行にはスペースが含まれていません。 各行の最初と最後の文字はスペースではありません。 すべての行の文字数は同じです。 たとえば、次のテキストは長方形です。 abcd e fg hijk ただし、このテキストは長方形ではありません(要件#3): 1234 567 8900 テストケース 真実: sdghajksfg asdf jkl; qwerty u i op zxcvbn 1234 5 6 7890 abcd e fg hijk 偽り: a b c 123 456 7 9 12 345 qwerty uiop zxcvnm 1234 567 8900 これはcode-golfであるため、バイト単位の最短ソリューションが優先されます。

13
行列内のすべての非ゼロ要素が接続されているかどうかを確認します
入力: 範囲[0-9]の整数を含む行列。 チャレンジ: すべての非ゼロ要素が互いに垂直および/または水平に接続されているかどうかを判断します。 出力: truthy値全てが接続されている場合、及びfalsy値が非ゼロの要素/他の要素/グループに接続されていないグループが存在する場合。 テストケース: テストケースは行で区切られています。テストケースは、より便利な形式でここにあります(Kadas to Dada)。 以下はすべて接続されており、真の値を返す必要があります。 0 --- 0 0 --- 1 1 1 0 0 0 --- 1 0 0 1 1 1 0 0 1 --- 0 0 0 0 0 0 0 0 3 5 1 0 0 1 0 2 0 …

13
入力をEmbiggenする
これは、ほこりで覆われたこのエントリに少し似ていますが、私はそれで私のスピンがそれを十分にユニークにすることを望んでいます。これを投稿することを思いとどまらせるものを見つけることができませんでしたが、そこにはかなりの海があります。 とにかく!チャレンジ: コードは文字列を受け取ります。これを同じ文字列のASCIIアートスタイルバージョンに変換しますが、キャッチ付きです。 入力変換 サポートされる文字は、AZおよび0-9のみです 小文字は大文字に変換されます それ以外は静かに削除されます キャラクタードローイング 拡大されたフォントの各「ピクセル」は、入力文字列から描画されます n番目のピクセルは、入力文字列のn番目の文字に等しくなります。nが入力文字列の長さよりも大きい場合は、先頭に戻ります 個々の文字は左から右、上から下に描画されます 後続の文字は、最後の文字が途切れたところから「ピクセル文字」インデックスを取得します(たとえば、入力長が10の場合、最初の文字が9ピクセルの場合、2番目の文字の最初のピクセルは10番目の入力文字で描画されます。ピクセルは最初の入力文字で描画されます) 各文字は5x5のグリッドで描画され、スペースが完全に埋め込まれます。このペーストビンで、またはこの記事の少し下で、事前にレンダリングされて使用するフォントを見つけることができます すべての文字は同じ行に描画されるため、出力の改行の総数は4になります すべての文字は2列のスペースで区切られています フォント 000 0 00 0 0 0 00 0 000 111 1 1 1 11111 2222 2 222 2 22222 3333 3 333 3 3333 44 4 4 44444 4 4 55555 5 5555 5 …

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