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

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

6
プレートからステートへ
これは基本的に、米国のナンバープレートの生成の逆です。 課題:以下のライセンスプレート形式のいずれかに一致する文字列が与えられた場合、その形式に一致するすべての可能な状態を出力します。以下の表で0は、1桁0を9含む1桁をA表し、1文字AをZ含むを表します。この課題の目的のために、複雑なフォーマットルール(デラウェアのように桁数が可変)の状態を無視し、似たような文字(たとえば、Iおよび1)の削除を無視しています。 AAA 000: AK, IA, MS, MP, VT 0000: AS AAA0000: AZ, GA, WA 000 AAA: AR, KS, KY, LA, ND, OR 0AAA000: CA AA-00000: CT AA-0000: DC AAA A00: FL AA 00000: IL 000A,000AA,000AAA,AAA000: IN 0AA0000: MD AAA 0000,0AA A00,AAA 000: MI 000-AAA: MN 00A-000: NV 000 0000: …

4
派手な文字列の置換
let S、aおよびbそれぞれは文字列を表します 目標:あなたは、すべての出現置き換える機能置き換える標準の文字列を書くa文字列にしSてbいる限り、aすでにのインスタンスの一部ではないがb たとえば、文字列S= がある場合My oh my that there is a big ol' that 私たちは空想のに置き換えやってみたかったa = thatとb = that there我々はすべてのインスタンス代わるthatとのthat thereインスタンス限り、thatすでにのインスタンスではありませんthat there したがって、この場合の出力は次のようになります。 My oh my that there is a big ol' that there 最初thatのインスタンスは既にインスタンスの一部であるため、置き換えられませんthat there ノート 3つの入力はすべて、印刷可能なASCII文字のみを含む文字列でなければなりません 入力は、3つの個別の文字列または3つの文字列のリストとして指定できます 入力が順番になりますS、a、bそれ以外の答えで指定しない限り、 のa一部と見なされるにはb、のすべてのインスタンスがインスタンスのa一部である必要がありますb いくつかのコーナーケースの説明 Input: ["1222", "22", "122"] Output: "12122" 上記の例では、後者22が置き換えられます。それの一部がインスタンスの一部であるbとしても、それの全体はのインスタンスの一部ではありませんb。のインスタンス全体はインスタンスのa一部ではないため、b置き換えられます。 Input: …
16 code-golf  string 

13
私の担当者はStack-Exchange Formにいますか?
前提: メダルカウント(金、銀、および青銅を個別にカウント)を10進数に分解し、いくつかの注意を払って任意の順序で結合することで表せる場合、評判はStack-Exchange Formにあります。 分解しながら、それぞれ 金メダルの桁は3桁の価値があります。 シルバーは2桁の価値があります。 ブロンズは1桁です。 さらに、SEにはメダルタイプがない場合、メダルタイプが表示されないため、タイプのメダル数が0の場合、が得られません[0]。 例: [1 Gold, 2 Silvers, 3 Bronzes]に分解され[1,1,1,2,2,3]ます。321112および213121は、これらのメダルのSE形式番号の2つの例です。 [20 Golds, 0 Silvers, 20 Bronzes]に分解され[2,2,2,0,0,0,2,0]ます。20002022はSE形式の番号です。 [11 Golds, 0 Silvers, 0 Bronzes]に分解され[1,1,1,1,1,1]ます。111111は、このための唯一のSE形式の番号です。 SE番号を考慮する場合、先行する0はありません。たとえば、上記の2番目の例で00002222 -> 2222は、のSE形式の番号とは見なされません[20,0,20]。 入出力: 入力は、リスト/タプル/配列/すべてが[reputation, gold_medals, silver_medals, bronze_medals]負でない整数です。これは想定される順序ですが、変更できます。回答した場合は、メモしてください。 出力は、trueとfalseの2つの一貫した値です。 ルール: 入力は常に有効です 常に1人以上の担当者がいます メダルはまったく持てません。メダルは常にfalseを返します。 メダル数は現実には関係ありません。数百個の金を持ち、青銅なしでも構いません。 これはコードゴルフなので、バイト単位の最短回答が勝ちです。 テストケース: #[Rep, Gold, Silver, Bronze] -> Output [4, …

11
スティーンロッド代数の基底要素を生成する
スティーンロッド代数は、代数トポロジーで現れる重要な代数です。スティーンロッド代数は、「スティーンロッド平方」と呼ばれる演算子によって生成されます。正整数iごとに1つ存在します。二乗演算の「許容可能な単項式」から成るスティーンロッド代数の基礎があります。この基盤を生成することが私たちの目標です。 各整数が次の整数の少なくとも2倍である場合、正の整数のシーケンスは許容可能と呼ばれます。したがって、たとえばおよび[7,2,1]ため、許容されます。一方、ため、許容できません。(トポロジーでは、シーケンスに対してを記述します)。7≥2∗27≥2∗27 \geq 2*22≥2∗12≥2∗12 \geq 2*1[3,2]3&lt;2∗23&lt;2∗23 < 2*2Sq7Sq2Sq1Sq7Sq2Sq1\mathrm{Sq}^7 \mathrm{Sq}^2\mathrm{Sq}^1[7,2,1] シーケンスの次数は、エントリの合計です。したがって、たとえば、次数[7,2,1]は7+2+1=107+2+1=107 + 2 + 1 = 10です。過剰許容シーケンスの最初の要素マイナス残りの元素の合計であるので、[7,2,1]過剰有する7−2−1=47−2−1=47 - 2 - 1 = 4。 仕事 正の整数のペアを取り、(d,e)次数dと超過の許容可能なすべてのシーケンスのセットを出力するプログラムを作成しeます。出力はセットなので、許容されるシーケンスの順序は関係ありません。 例: Input: 3,1 Output: [[2,1]] ここでは、合計3の許容シーケンスを探しています。2つのオプションが[3]あり[2,1]ます。([1,1,1]および[1,2]合計は3ですが、許容されません)。の過剰[3]は3で、過剰[2,1]は2−1=12−1=12-1 = 1です。従って、過剰の配列のみ≤1≤1\leq1[2,1]。 Input: 6, 6 Output: [[6], [5, 1], [4, 2]] (or any reordering, e.g., [[5,1],[4,2],[6]]) 過剰は常に次数以下であるため、過剰条件はありません。このように、私達はちょうどのオプションがある度6のすべての許容シーケンスを見つけるためにしようとしている[6]、[5, 1]と[4, 2]。(これらは、過剰有する666、5 − …

5
新しい注文#5:フィボナッチとビーティがワイトフで出会う場所
はじめに(無視してもよい) すべての正の数を規則正しい順序(1、2、3、...)で並べるのは少し退屈ですよね?そのため、すべての正数の順列(再編成)に関する一連の課題があります。これは、このシリーズの5番目のチャレンジです(1番目、2番目、3番目、4番目のチャレンジへのリンク)。 このチャレンジでは、フィボナッチ数列とビーティ数列の絡み合った雪崩であるWythoff配列に出会います! フィボナッチ数は、おそらくよく知らシーケンスあなたのほとんどのためにあります。2つの開始番号とが与えられると、次のは次のように与えられます: for。F0F0F_0F1F1F_1FnFnF_nFn= F(n − 1 )+ F(n − 2 )Fn=F(n−1)+F(n−2)F_n = F_{(n-1)} + F_{(n-2)}n &gt; 2n&gt;2n>2 パラメーターが与えられた場合のBeattyシーケンスは、 forです。Beattyシーケンスのプロパティの1つは、すべてのパラメーターに対して1つのパラメーター、これらのパラメーターのBeattyシーケンスが分離されて結合されることです。 0(例:)。rrrBrn= ⌊ R N ⌋Bnr=⌊rn⌋B^r_n = \lfloor rn \rfloorN ≥ 1n≥1n \ge 1rrrs=r/(r−1)s=r/(r−1)s=r/(r-1)Br∪Br/(r−1)=N∖{0}Br∪Br/(r−1)=N∖{0}B^r \cup B^{r/(r-1)} = \Bbb{N} \setminus \{0\} ここで驚くべき部分があります。各行がフィボナッチ数列であり、各列がビーティー数列である配列を作成できます。この配列はWythoff配列です。最良の部分は、すべての正の数がこの配列に1回だけ出現することです!配列は次のようになります。 1 2 3 5 8 13 21 34 55 …

6
新規注文#3:5 8 6
はじめに(無視してもよい) すべての正の数を規則正しい順序(1、2、3、...)で並べるのは少し退屈ですよね?そのため、すべての正数の順列(再編成)に関する一連の課題があります。これは、このシリーズの3番目の課題です(1番目と2番目の課題へのリンク)。 この課題では、各行の合計が素数になるように、長さが増加する行に自然数を配置します。これについて本当に素晴らしいと思うのは、すべての自然数がこの配置にあるということです。番号はスキップされません! この配置の視覚化は次のようになります。 row numbers sum 1 1 1 2 2 3 5 3 4 5 8 17 4 6 7 9 15 37 5 10 11 12 13 21 67 6 14 16 17 18 19 23 107 etc. この三角形の行から要素を読み取ることができます。最初の20個の要素は、1、2、3、4、5、8、6、7、9、15、10、11、12、13、21、14、16、17、18、19(はい、ありますこのシーケンスに隠された新しい注文の歌)。 これは「純粋なシーケンス」チャレンジであるため、タスクは入力として特定のnに対してa (n )を出力a (n )a(n)a(n)です。ここで、a (n )はA162371です。nnna(n )a(n)a(n) …

3
より長い言語プログラムを作成する
Lenguageは、ソース制限の課題を解決することで有名な頭の痛い方言です。これは、Lenguageがコンテンツではなくソースの長さのみを考慮しているためです。 まず、プログラムの長さが計算されます。次に、上記の長さをバイナリに変換し、ゼロで左に3の倍数でパディングします。結果のバイナリ文字列は3ビットのチャンクに分割され、それぞれがBrainfuckコマンドに変換されます。 000 -&gt; + 001 -&gt; - 010 -&gt; &gt; 011 -&gt; &lt; 100 -&gt; . 101 -&gt; , 110 -&gt; [ 111 -&gt; ] 最後に、プログラムはbrainfuck 1として実行されます。 ここからの挑戦は非常に簡単です。入力を受け取らず、回繰り返される整数で構成される出力を生成する言語プログラムを作成します。ここで、は厳密にプログラムの長さよりも大きくなります。nnnnnn 回答はバイト単位でスコアリングされ、バイト数が少ないほど優れています。 Brainfuckから言語を計算するためのハックプログラムです。 1:この課題では、ラッピングセルと非ラッピングテープを使用します。

7
フチ無しテーブル
このチャレンジでは、アルファベットの文字をデカルト平面に配置し、結果をテキストとして出力します。 入力は、3つのパラメーターを持つリストのリストで構成されます。 X座標 Y座標 ストリング どうやって? 我々は、デカルト平面の2つの軸含まれていることを知っているの兆候場合と4つの象限座標は((及び。例えば(X、Y)(バツ、Y)(X, Y)(X、Y)(バツ、Y)(X,Y)(+ 、+ )(+、+)(+,+)(− 、+ )(−、+)(−,+)(− 、− )(−、−)(−,−)(+ 、− )(+、−)(+,−) 次の3行3列の行列をデカルト平面として考えます (- 1 、1 )(- 1 、0 )(− 1 、− 1 )(0 、1 )(0,0)(0,−1)(1,1)(1,0)(1,−1)(−1,1)(0,1)(1,1)(−1,0)(0,0)(1,0)(−1,−1)(0,−1)(1,−1)\begin{matrix} (-1,1) & (0,1) & (1,1) \\ (-1,0) & (0,0) & (1,0) \\ (-1,-1) & (0,-1) & (1,-1) \end{matrix} 入力で与えられた場合[[-1,1,L],[0,1,F]]、マトリックスのようなものは次のようになります。 L(- …

7
500バイトで区切られた反復期間の最長期間を書き込みます
あなたの仕事は、シーケンス内の各プログラムの長さが500バイトに制限されている、最も長い期間反復するquineを作成することです。 つまり、次の手順を繰り返す場合: 最初のプログラムから始めます 現在のプログラムを実行する 手順2に戻る 最終的に元のプログラムに戻ります。サイクル内のプログラムの数はスコアであり、最大化しようとしています。 どのプログラムでもエラーは発生しません。各プログラムも同様に実行する必要があります(異なるバージョン、実装、コンパイラオプション、プラットフォームなどはありません)(編集:はい、擬似乱数ジェネレーターのような外部状態は最後に含まれていましたステートメント。外部状態は、各実行後に「リセット」する必要があります。真の乱数を使用する場合、最悪の場合が想定されます。 この課題と最長期間の反復クイン(100対500以外)との違いは、サイクル内のすべてのプログラムも500バイト以下でなければならないことです。これは、可能な最長のサイクルが(256 ^ 501-1)/ 255以下であることを意味します。それはもちろん大きな数字ですが、計算に必要なコードの量という点ではそれほど大きくはありません。したがって、課題は、できるだけ多くの(256 ^ 501-1)/ 255の可能性を使用することであり、忙しいビーバーの課題ではありません。 プログラムが独自のソースコードにアクセスすることは許可されていません。ただし、必要に応じて空のプログラムを使用できます(他の規則に従う場合)。 プログラムを手動でチェックするのは難しいので、理論的な方法を使用してスコアを計算することができます。プログラムにスコアと正確さの説明を含める必要があります。スコアを把握できない場合は、代わりに、サイクル内のプログラム数の下限を事実上のスコアとして使用できます。より良い下限を見つけた場合、または正確な実際のスコアを見つけた場合、これを更新することができます。 これはコードチャレンジなので、最高のスコアが勝ちます! 編集:あなたのスコアが科学的記法であるものを書くことをお勧めします。そうすれば、答えはより簡単に比較できます。他の形式のスコアも特に問題なくプログラムに関連付けられている場合、まったく問題ありません。また、読者はこれに準拠するために以前の回答を編集することをお勧めします。

30
3つに分割します!
文字列が与えられたら、それを3文字のグループに分割する必要があります(_最後にパディングすることにより)。 関連しますが、それでも異なります。 サンプルI / O: 'abcde' -&gt; 'abc', 'de_' '1234' -&gt; '123', '4__' '' -&gt; [] or falsey value 'Three spree!' -&gt; 'Thr', 'ee ', 'spr', 'ee!' 6 MBストリング これはcode-golfなので、最少バイトが勝ちます! 編集:最後に、出力は無制限です。

1
1Dキーボードでのスワイプの最適化
これは、カスタムスコアリングシステムによるコードチャレンジであり、最低スコアが勝ちます。 前書き 多くのスマートフォンでは、2D仮想キーボード上で指をスワイプすることでテキストを入力できます。この技術は通常、推測された単語のリストを出力する予測アルゴリズムと組み合わされ、最も可能性の高いものから低いものへとソートされます。 この課題では: 26文字のサブセットに制限された1次元キーボードをスワイプします。 予測アルゴリズムはありません。各単語が「スワイプシーケンス」によって一意に識別されるようにします。 特定の単語リストの移動の合計数が最小になるようにキーボードを最適化する必要があります。 1次元でのスワイプ 以下は、すべての文字で辞書式にソートされた1Dキーボードです。 ABCDEFGHIJKLMNOPQRSTUVWXYZ 注意:モバイルから閲覧している場合、これは複数の行に表示される場合があります。単一の行と考えてください。 そのようなキーボードで単語 ' GOLF ' を入力するには、次のようにします。 で始まる G 右にスワイプして O 左にスワイプして F そのためLの間に位置しているOとF、私たちはそこに停止せずにスワイプに行きます。 それで、このキーボードの' GOLF 'のスワイプシーケンスはGOFです。 より一般的に: 最初と最後の文字は常に含まれます。 他の文字は、方向の変更が必要な場合にのみ含まれます。 繰り返される文字は、単一の文字と同じように扱われる必要があります。たとえば、上記のキーボードで: ' LOOP 'は次のようにエンコードされますLP(停止なしO) 「GOOFY」は次のようにエンコードされますGOFY(O方向が変更されたために含まれています-二重になっているためではありません) キーボードの最適化 次の単語のリストを考えてみましょう:[' PROGRAMMING '、 ' PUZZLES '、 ' AND '、 ' CODE '、 ' GOLF ']。 …

7
満足のいく丸め
満足のいく丸め あなたは理科の授業にいるときを知っており、2 sigのイチジクに丸めることを求めましたが、あなたの答えは5.2501...?に丸める必要がありますが5.3、それはとても不満です!に四捨五入する5.3ことにより、0.05(四捨五入する場所の値)に比べて0.05だけ大きくなります!だから私は満足のいく方法でラウンドを助けてください。 満足のいく方法で丸めるには、出くわす最初の桁で丸める必要があります。これは、誤差が比較的小さく、丸め時に可能な最大誤差の半分未満です。基本的に、0、1、8、または9に遭遇するたびに丸める必要があります。それが起こらない場合は、入力をそのまま返します。先頭のゼロまたは1を丸めないでください-それは単に満足感を感じません。 入力 非負の10進数を表す文字列または浮動小数点値。 出力 文字列または浮動小数点形式のいずれかで、十分に丸められた同じ10進数。 例 Input -&gt; Output 0 -&gt; 0 0.5 -&gt; 0.5 0.19 -&gt; 0 0.8 -&gt; 1 5.64511 -&gt; 5.645 18.913 -&gt; 20 88.913 -&gt; 100 36.38299 -&gt; 36.4 621 -&gt; 620 803.22 -&gt; 1000 547.4726 -&gt; 547.4726 これはコードゴルフの挑戦なので、最短のコードが勝ちます!

4
炭素アルカンの数
正の数与えられた、立体異性体を無視して、個の炭素原子を持つアルカンの数を求めます。または、同等に、すべてのノードが次数持つような、ノードを持つラベルなしツリーの数。nnnnnnnnn≤4≤4\le 4 これは、OEISシーケンスA000602です。 参照:パラフィン-ロゼッタコード 例 以下のために、答えはので、ヘプタンは 9つの持つ異性体を:n=7n=7n = 7999 ヘプタン:H3C−CH2−CH2−CH2−CH2−CH2−CH3H3C−CH2−CH2−CH2−CH2−CH2−CH3\mathrm{H_3C-CH_2-CH_2-CH_2-CH_2-CH_2-CH_3} 2-メチルヘキサン:H3C−CH(CH3)−CH2−CH2−CH2−CH3H3C−CH(CH3)−CH2−CH2−CH2−CH3\mathrm{H_3C-CH(CH_3)-CH_2-CH_2-CH_2-CH_3} 3-メチルヘキサン:H3C − C H2− C H (C H3)− C H2− C H2− C H3H3C−CH2−CH(CH3)−CH2−CH2−CH3\mathrm{H_3C-CH_2-CH(CH_3)-CH_2-CH_2-CH_3} 2,2-ジメチル:H3C − C (C H3)2− C H2− C H2− C H3H3C−C(CH3)2−CH2−CH2−CH3\mathrm{H_3C-C(CH_3)_2-CH_2-CH_2-CH_3} 2,3-ジメチル:H3C − C H (C H3)− C H (C H3)− C H2− C H3H3C−CH(CH3)−CH(CH3)−CH2−CH3\mathrm{H_3C-CH(CH_3)-CH(CH_3)-CH_2-CH_3} …

10
可能な最大数と最小数
仕事 非負の数の配列が与えられた場合、それらを結合することで形成できる最大数と最小数を出力します。 ルール 入力、出力は任意の便利な形式にすることができます。 配列には最大1つの10進数を含めることができます。 例 input:[22,33,44,55.55,33] output:4433332255.55,55.5522333344 input:[34,900,3,11,9] output:990034311,113349009 input:[99.93,9,3,39] output:939399.93,99.933399 input:[45.45,45,45,45] output:45454545.45,45.45454545 input:[12,21,34,43,45.1] output:4334211245.1,45.112213443 これはコードゴルフなので、最短のコードが優先されます。
16 code-golf 

5
何回移動しますか?
チェス盤の2つの異なる位置と駒の種類を指定して、その駒が1つの位置から別の位置に移動するために必要な最小移動数を出力します。 ルール 指定された作品は、キング、クイーン、ルーク、ナイト、ビショップになります。(この入力は、任意の5つの一意の文字として取得できます) 2つの位置は任意の便利な形式で取得できますが、 Example: a8 b8 c8 d8 ... h8 a7 b7 c7 d7 ... h7 ... ... a1 b1 c1 d1 ... h1 ピースがそこに到達できない場合は、正の整数以外を出力します。 例 i/p ---- o/p King a1,a4 3 a1,h6 7 b3,h5 6 Queen a1,a4 1 a1,h6 2 b3,f7 1 Rook a1,a4 1 a1,h6 2 h2,c7 …
16 code-golf  chess 

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