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

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

14
文字列を裏返す
バランスの取れた文字列は、()すべての括弧を別の括弧と一致させるための括弧の文字列です。より厳密には、この文法がまたがる文字列です。 S → (S)S | ε 文字列を「裏返し」にする方法は次のとおりです。 (およびのすべての出現)を互いに切り替える 文字列の前面から背面への文字の移動は、文字列のバランスが再び取れるまで続きます。 例を見てみましょう。 バランスの取れた文字列から始めます。 (()(())()) 次に、括弧を切り替えて作成します ))())(()(( 次に、文字列のバランスが取れるようになるまで、文字列の前から後ろに文字を移動します。 ))())(()(( )())(()(() ())(()(()) ))(()(())( )(()(())() (()(())()) それが結果です! 一部の文字列は、複数の方法で裏返しにできることに注意してください。たとえば、文字列 (()()) 裏返した場合、次のいずれかになります。 ()(()) または (())() ただし、すべての文字列には少なくとも1つのソリューションがあります。 仕事 バランスの取れた文字列を入力および出力として使用し、その文字列を裏返しにするプログラムを作成します。複数の有効な出力が存在する可能性がある場合は、そのうちの1つだけを出力する必要があります。別のブレースタイプ(<>、[]または{}必要に応じて)を使用できます。 これはコードとゴルフの競合であるため、ソースコードのサイズをバイト単位で最小化することを目指してください。 テストケース (()()) -> ()(()), (())() (()(())()) -> (()(())()) ((())())() -> (()(()()))

30
除数の積
チャレンジ 正の整数を指定すると、それ自体を含む除数の積を返します。 これは、OEISのシーケンスA007955です。 テストケース 1:1 2:2 3:3 4:8 5:5 6:36 7:7 8:64 9:27 10:100 12:1728 14:196 24:331776 25:125 28:21952 30:810000 得点 これはcode-golfなので、各言語で最短の答えが勝ちです!

30
洗濯を手伝ってください
助けて!私の濃色セパレータV3001.01からは完全に自動化されたライトが壊れました!:( ガイドライン 仕事 文字Lまたは文字D(明暗を表す)の任意の量の文字列の配列(または一部の言語のリスト)の入力を受け取り、2つの配列を含む配列を出力するプログラムを作成します。すべてのLと1つ、すべてのDと1つです。 ルール コードゴルフなので、バイト単位の最短回答が勝ちます 入力には大文字のみが含まれます 出力には、入力と同じ数のLがなければなりません。Dについても同じことが言えます。 入力には要素が1つしか含まれない場合があります(または要素がゼロの場合もあります) 出力配列の一方または両方に要素が含まれていない場合、空のリストを出力します(言語によっては、文字列を出力する必要がある場合があります) 常に最初の配列をLの配列にする 出力例: ["L","D","L","D","D"] -> [["L","L"],["D","D","D"]] ["L","L","L"] -> [["L","L","L"],[]] ["D","D"] -> [[],["D","D"]] [] -> [[],[]]

12
多数を表すための一般的なヒント
ゴルフ中に、コードで多数の数字を表す必要がある場合があります。そのまま書き込むと、バイト数が大幅に増加する可能性があります。 長い数字をコードで簡潔に表現するための一般的な1つのヒントは何ですか? 回答ごとに1つのヒントを投稿してください。 1で一般的には、私は、単一の言語以上に適用することができヒントを意味します。言語固有のヒントについては、それぞれのスレッドに投稿してください。
21 code-golf  number  tips 

23
私の電話番号はde Polignac番号ですか?
数値がde Polignac数であるのは、それが奇数であり、p + 2 nの形式で表現できない場合に限られます。ここで、nは非負の整数で、pは素数の整数です。 仕事 正の整数を受け取り、それがde Polignac数であるかどうかを判別するコードを作成します。trueとfalseの2つの異なる値を出力できます。バイト数を最小限に抑えることを目指してください。 テストケース ポジティブなケースについては、ここにOEISがあります 1, 127, 149, 251, 331, 337, 373, 509, 599, 701, 757, 809, 877, 905, 907, 959, 977, 997, 1019, 1087, 1199, 1207, 1211, 1243, 1259, 1271, 1477, 1529, 1541, 1549, 1589, 1597, 1619, 1649, 1657, 1719, 1759, 1777, 1783, 1807, …

6
行列のリストの表記法を修正する、パート1
時々、コードに定数行列のリストがあります: [ [[1, 0], [0, 1]], [[1, 0], [0,-1]], [[0, 1], [1, 0]], [[0,-1], [1, 0]] ] これは、画面領域のひどい使い方です。私はむしろそれらを隣同士に書きたいです: [ [[1, 0], [[1, 0], [[0, 1], [[0,-1], [0, 1]], [0,-1]], [1, 0]], [1, 0]] ] これはまだ構文的に有効なネストされたリストであり、もはや長方形ではなく、非常に異なる構造を持っていることがわかります(特に、1x1より大きい行列を追加するたびに深くなります)。ただし、この新しいリストから行列の初期リストを再構築することはまだ可能です。 将来この構文を使用できるように、水平配置で記述された配列を、それらが表す行列のリストに変換するコードを記述する必要があります。 回答がソースコードのレイアウトで2Dパターンマッチングを実行しないように、入力は単なる配列オブジェクトとして、または文字列表現を使用する場合は、どのように空白を含まないかを指定します。リテラルはコードで書かれています。したがって、次のような入力が得られます。 [[[1, 0], [[1, 0], [[0, 1], [[0,-1], [0, 1]], [0,-1]], [1, 0]], [1, …

6
転置と対角
この課題では、特定の正方行列の対角線を出力するプログラムまたは関数を作成する必要があります。ただし、ソリューションのソースコードの行と列を転置する場合は、代わりに、マトリックスの対角線を返すプログラムまたは関数になります。詳細をお読みください... ルール ソリューションのソースコードは、選択した標準の改行(ラインフィード、キャリッジリターン、または両方の組み合わせ)で区切られた文字の2Dグリッドと見なされます。 ソースコードの行は、前の行より長くなることはありません。有効なレイアウトの例を次に示します。 ### ### ### ######## ####### ### ### # そして、無効なレイアウトの例を次に示します(3行目は2行目より長いため)。 ###### #### ##### ### 2つのソリューションは互いに転置する必要があります。つまり、行と列を交換することで一方から他方を取得する必要があります。有効なペアは次の2つです。 abc def ghi adg beh cfi そして print 10 (~^_^)~ foo bar ! p(fb! r~oa i^or n_ t^ ) 1~ 0 スペースは他の文字と同様に扱われることに注意してください。特に、末尾のスペースは、転置の末尾のスペースではない可能性があるため重要です。 各ソリューションは、入力として1桁の整数の空でない正方行列を取るプログラムまたは関数でなければなりません。1つのソリューションは、マトリックスのすべての対角線のリストを出力し、もう1つのソリューションは、すべての対角線のリストを出力する必要があります。合理的で明確な入力および出力形式を使用できますが、2つのソリューション間で同一である必要があります(これは、両方の機能または両方のプログラムでなければならないことも意味します)。 各対角線は左上から右下に向かって走り、上から下に並べられます。 各対角線は左下から右上に向かって走り、上から下に順番に並べる必要があります。 得点 可能な限り「正方形」のソリューションを推奨するために、プライマリスコアは、ソリューションの行数または列数のいずれか大きい方です。少ないほど良い。関係は、改行をカウントせずに、ソリューション内の文字数によって分割されます。繰り返しますが、少ないほど良いです。例: abcd efg h これとその転置のプライマリスコアは4(列が4つあるため)、タイブレークスコアは8(改行文字以外が8つあるため)です。回答のヘッダーにある両方の値を引用してください。 テストケース …

20
[サブ]文字列が隠れています。
前書き しばらく前に、失われたSOユーザーがここに質問を投稿し、現在削除されていますが、良い挑戦になると思うので、ここに行きます... チャレンジ 2つの文字列を取り、最初の文字列の順列が2番目の文字列のサブ文字列であるかどうかをチェックする完全なプログラムまたは関数を作成します。 入力 テストする文字列とサブ文字列の2つの文字列(順序を選択できます)。 出力: 文字列に部分文字列の順列が含まれる場合の真の値。 ストリングにサブストリングの順列が含まれていない場合はfalse値。 テストでは大文字と小文字が区別されます。 例/テストケース sub-string string input d!rl Hello World! output truthy input Pog Programming Puzzles & Code Golf output falsey input ghjuyt asdfhytgju1234 output truthy

3
人生がレモンを与えたら、レモネードを作りなさい
チャレンジ あなたはどこにでも単語が、入力文字列が与えられます"Lemon"、それはに変換する必要が発見され"Lemonade" たがa、d、およびe文のどこかから借りなければなりません。 例 入力例: 子供の頃にレモンを見つけました 出力例: 私は子供の頃レモネードを作りました レモネードは、元から次の上付き文字を盗んで作成されました 私はフン日間レモネードWH 電子を nは私がいた子供 これは、「e」、「d」、および「a」という可能な出力例の1つにすぎません。これはどこからでも取得できます(もちろん、単語以外はlemon) コメント •、、またはsが十分eでない場合は、指定された文字で実行可能なことを出力する必要があります。たとえば、入力は出力されますadbdblemonbblemond • lemonテキストは常にスタンドアロン(各側のスペース)であるとは限りません。たとえばlemons、入力のどこかに単語があり、出力は次のようになります。lemonades •入力にはlemon、0であっても任意の数のsを含めることができますlemon(この場合、出力は入力と同一になります)。 •レモネードを大文字と小文字で作成できます。たとえば、にleMonなる可能性がleMonadeあり、ade借りたものはどのような場合でも可能です(したがって、になる可能性もありますleMonADe)。あなたが借りた手紙のケースは、あなたがそれを借りたときの状態のままでなければなりません。(入力例->出力、he hAD lemOn-> h h lemOnADe) •完全なプログラムである必要はありません。機能だけで十分です。 •入力はCP437文字セットのみであると仮定できます。 コードゴルフ これはcode-golfであるため、バイト数が最も少なくなります! 擬似テストケース *注意:特定の入力に対して複数の出力が存在する可能性があるため、プログラムはこれらのテストケースのように正確に出力されない場合があります。これは、人々がロジックを理解できるようにするためです。 入力:EpaD leMons 出力:p LeMonaDEs 入力:hello world 出力:hello world 入力:レモンレモン 出力:レモンレモン *( 、、 文字は別の「レモン」から取られてはいけません)ead 入力:HE HADレモネード 出力:HH lemonADEade 入力:あなたはレモンが好きですか?あなたはレモンで私を苦しめました! 出力:o lemonADesが好きですか?あなたはレモネードを盛り上げました! …
21 code-golf  string  code-golf  parsing  internet  stack-exchange-api  code-challenge  kolmogorov-complexity  restricted-source  brain-flak  python  logic  pyth  code-golf  string  search  optimized-output  code-golf  tips  language-design  golfing-language  code-golf  tips  language-design  code-golf  number  sorting  pi  code-golf  math  number  code-golf  string  balanced-string  classification  brain-flak  code-golf  math  number-theory  decision-problem  code-golf  tips  code-golf  number  sequence  code-golf  balanced-string  brain-flak  code-golf  math  sequence  arithmetic  fibonacci  code-golf  math  parsing  code-golf  string  keyboard  code-golf  code-golf  string  source-layout  whitespace  code-golf  math  rational-numbers  code-golf  string  code-golf  string  code-golf  math  sequence  code-golf  number  floating-point  code-golf  string  decision-problem  subsequence  code-golf  string  kolmogorov-complexity  code-golf  string  permutations  balanced-string  brain-flak  code-golf  string  math  number  code-golf  string  primes  cipher  code-golf  string  ascii-art  chemistry  code-golf  ascii-art  grid  counting  code-golf  math  arithmetic  integer  code-golf  number  kolmogorov-complexity  code-golf  ascii-art  kolmogorov-complexity  sequence  metagolf  brain-flak  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  whitespace 

7
ロジスティックマップの奇妙な魅力
チャレンジの目的は、約プロットすることであるアトラクタのロジスティックマップをそのパラメータの関数としてR(別名分岐図)、またはそのサブ領域。グラフの外観は、Wikipediaの次の画像で確認できます。 バックグラウンド ロジスティックマップは、入力とる数学関数であるX kは、出力にマップX K + 1のように定義します x k + 1 = r x k(1− x k) ここで、rは間隔[0、4]にあると想定されるマップのパラメーターです。 [0,4]のrと区間[0,1]の初期値x 0が与えられると、多数の反復Nに対して関数を繰り返し適用し、最終値x Nを生成することは興味深いです。x Nは必ず[0,1]にもあることに注意してください。 例として、r = 3.2、N = 1000を考えます。初期値x 0 = 0.01はx 1000 = 0.5130を与えます。以下のために、X 0 = 0.02結果は、X 0 = 0.7995。以下のための任意の他の初期値xは0最終値X 1000は、非常に近い0.5130または0.7995いずれかです。これは、水平位置r = 3.2 での2本の線の高さとしてグラフに表示されます。 これは、r = 3.2の場合、各シーケンスがこれら2つの値のいずれかに収束することを意味しません。実際、上記で検討した2つの初期値の場合、シーケンスは次のとおりです(振動動作に注意してください)。 x 0 = 0.01、...、x …

2
有理分解a = xyz(x + y + z)
書き込み機能x(a)、y(a)およびz(a)任意の合理的なため、このようなことをa 、すべての機能が有理数を返すとx(a)*y(a)*z(a)*(x(a) + y(a) + z(a)) == a。0以上と仮定することができます。 プログラムが数学的に健全である限り、プログラムで合理的なタイプまたは操作を使用する必要はありません。たとえば、答えに平方根を使用する場合、引数が常に有理数の平方であることを示す必要があります。 あなたの言語にとって関数が扱いにくいか存在しない場合、3つの名前付き関数x、y、zを書くか、代わりに3つのプログラムを書くことができます。または、3つの数値x、y、zを返す単一のプログラム/関数を作成することもできます。最後に、必要に応じて、有理数を分子/分母のペアとして入出力できます。スコアは、3つの関数または3つのプログラムの合計サイズ(バイト単位)です。最小スコアが勝ちます。 ブルートフォーシングは許可されていません。任意のa = p / q(p、q≤1000)の場合、プログラムは10秒以内に実行されます。 例(これは、分解がこれらの数値を提供する必要があるという意味ではありません): x = 9408/43615 y = 12675/37576 z = 1342/390 x*y*z*(x+y+z) = 1

30
大きなスラッシュXを描く
負でない整数を指定すると、Xその大きさのが出力されます。Xはinputの出力であり0、各方向に入力に等しいスラッシュを追加してX、より大きな入力用に拡張します。 テストケース 0 X 1 \ / X / \ 2 \ / \ / X / \ / \ ... 10 \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / X / \ / \ / \ / …

9
非平均気温!
TNBで最高の温度スケールについて一度議論が行われましたが、私たちは何かに同意しました。4つの主要な温度スケールすべての平均を取ることです。つまり、摂氏、ケルビン、華氏、ランキン(SorryRéaumur)です。 だから、問題は、ほとんどの人がこのシステムを使用しないことです。そのため、この平均から元に戻すプログラムが必要です! チャレンジ 特定の温度の摂氏、華氏、ケルビン、およびランキン表現の平均が与えられると、事前に指定された一貫した順序で個々の標準表現を出力します。ホワイトボードの計算に基づいて、これが可能であることがわかりました。入力は、言語が処理できる範囲内の単一の浮動小数点値になり、出力は任意の妥当な形式の4つの浮動小数点値になります。入力を制限して、出力を言語の範囲内に強制することができますが、絶対ゼロまでサポートできる必要があります(したがって、負の数を処理できる必要があります)。 テストケース input -> (Celsius, Fahrenheit, Kelvin, Rankine) 100 -> (-70.86071428571424, -95.54928571428565, 202.28928571428574, 364.12071428571437) 20 -> (-128.0035714285714, -198.4064285714286, 145.14642857142857, 261.2635714285714) -10 -> (-149.43214285714282, -236.97785714285715, 123.71785714285716, 222.69214285714287) 10000 -> (7000.567857142858, 12633.022142857144, 7273.717857142858, 13092.692142857144) これらの値はUrielのPythonプログラムで生成されたもので、正しいことを確認しました。
21 code-golf  math 

27
インターネットからファイルをダウンロードする
前書き はい、それはそれと同じくらい簡単です。インターネットから任意のファイルをダウンロードしてください! ルール 言語のAPIを使用する必要があります。 STDOUTにダウンロードしたファイル、コンソール、ファイルなどを出力する必要があります。 入力は空、またはダウンロードするURLである必要がありますが、URLはバイトカウントまでカウントする必要があります。 がんばろう!

18
サッカーチームを生成します!
可能な限り少ないバイト数で、次のサッカーチームのASCIIアートを生成します。 |.| |.| |.| |.| |.| |.| |.| |.| ]^[ ]^[ ]^[ ]^[ ]^[ ]^[ ]^[ ]^[ /~`-'~\ /~`-'~\ /~`-'~\ /~`-'~\ /~`-'~\ /~`-'~\ /~`-'~\ /~`-'~\ {<| 8 |>}{<| 6 |>}{<| 1 |>}{<| 3 |>}{<| 7 |>}{<| 5 |>}{<| 4 |>}{<| 2 |>} \|___|/ \|___|/ \|___|/ \|___|/ \|___|/ \|___|/ \|___|/ \|___|/ …

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