タグ付けされた質問 「code-golf」

コードゴルフは、ソースコードの最小バイトで特定の問題を解決するための競争です。

10
辞書順でソートされた順序で、先頭と末尾の順列のセットを生成します
次の手順で生成できる番号の順列となるように、長さの前付加シーケンスを定義します。n1, 2, ..., n 番号から始め1ます。 番号ごと2にn列(いずれかの最初や最後に、この数場所、先頭に追加または追加して、シーケンスの名前の由来)。 たとえば、これは長さ4のprepend-appendシーケンスを生成する有効な方法です。 1 21 [beginning] 213 [end] 2134 [end] あなたの仕事は、入力としてnから3を取得するプログラムまたは関数を構築し、辞書式順序30で長さのすべての追加/追加シーケンスを印刷または返すnことです(リストではなく文字列を出力する場合、9を超える数が表されます文字として、文字a-u列の長さを保持します)。たとえば、これは次の順序ですn = 4。 1234 [RRR] 2134 [LRR] 3124 [RLR] 3214 [LLR] 4123 [RRL] 4213 [LRL] 4312 [RLL] 4321 [LLL] 一般に、lengthの2 n-1の前置/後置置換がありますn。 コード内の言語で組み込みの並べ替え関数を使用することはできません。任意の言語でこれを行う最短のプログラムが勝ちます。

6
> <>(魚)でのゴルフのヒント
私は最近多くの&gt; &lt;&gt;提出物を見ているので、ヒントページを用意するのは良い考えだと思いました。 密接に関連している場合を除き、投稿ごとに1つのヒントを使用してください。 公式Pythonインタープリター オンラインインタープリター(いくつかのバグが存在しますが、ほとんどの場合に適しています)
14 code-golf  tips 

2
整数間隔を最大限に拡張
整数の非交差区間のセットが与えられたと仮定します[a1,b1],[a2,b2],[a3,b3],...,[aN,bN]。([a,b]整数以上のセットはa、以下ですb。) インデックスの間隔XはbX - aX + 1値をカバーします。この番号を呼び出しますcX。 それぞれの間隔が... 変更なし(そのまま[aX,bX])、 +番号の側に向かって右に伸びるcX(になる[aX,bX + cX])、 または-、番号の側に向かって左に拡張しますcX(になります[aX - cX,bX])、 すべての更新された間隔がまだ交差していない場合、すべての更新された間隔の和集合でカバーできる値の最大数はいくつですか? フォームの文字列を取り、[a1,b1],[a2,b2],[a3,b3],...,[aN,bN]この最大値を計算する関数またはプログラムを作成します。関数を記述する場合、値を返します。完全なプログラムを作成する場合は、入力にstdinを使用し、値をstdoutに出力します(または最も近い代替を使用します)。 すべての値は、通常の符号付き32ビット整数の制限内であり、すべてのインデックスaX以下であると仮定できます。間隔は任意の順序でかまいませんが、必ずしも常に増加しているわけではありません。上記の形式の文字列として指定する必要があります。文字列は空の場合があります。その場合、答えは0になります。bXX バイト単位の最短提出が勝ちです。 例 入力が[-3,0],[1,2],[4,9]出力の場合、22になります。中央の間隔にはどちらの方法でも拡張する余地がないため、変更しないでおく必要があります。左右の間隔は[-7,0]、[4,15]それぞれに拡張することができます。[-7,0]and [1,2]とunionの結合には、[4,15]-7から15までのすべての値が含まれます(3を除く)。22の値です。

2
文字列構築ゲームの勝利戦略
バックグラウンド アリスとボブは、バイナリワードの構築と呼ばれるゲームをプレイします。ゲームをプレイするには、長さn &gt;= 0、ゴールセットと呼ばれるG長さのnバイナリワードのセット、およびターン順序と呼ばれる文字とを含む長さのn文字列tを修正します。ゲームはターンの間続き、ターンでは、によって定義されたプレーヤーがbitを選択します。ゲームが終了すると、プレイヤーは構築したバイナリワードを確認します。この単語が目標セットで見つかった場合、アリスがゲームに勝ちます。そうでなければ、ボブが勝ちます。ABnit[i]w[i]wG たとえば、の修正をしましょうn = 4、G = [0001,1011,0010]とt = AABA。アリスは最初のターンを取得し、彼女はを選択しw[0] = 0ます。2番目のターンもアリスであり、彼女はを選択しw[1] = 0ます。ボブは3番目のターンを持ち、彼はを選択しw[2] = 0ます。最終ターンで、アリスはを選択しw[3] = 1ます。結果の単語0001がにGあるため、アリスがゲームに勝ちます。 今、ボブがを選択した場合w[2] = 1、アリスはw[3] = 0彼女の最後のターンで選択し、まだ勝つことができました。これは、アリスがボブのプレー方法に関係なくゲームに勝つことができることを意味します。この状況では、アリスには勝利戦略があります。この戦略は、Bobのターンに対応するレベルで分岐し、すべての分岐に次の単語が含まれるラベル付きバイナリツリーとして視覚化できますG。 A A B A -0-0-0-1 \ 1-0 アリスは、自分のターンに枝をたどるだけでプレーします。ボブがどのブランチを選んでも、最終的にアリスが勝ちます。 入力 入力として長さn、およびG長さの文字列の(空の場合もある)セットとしてのセットが与えられますn。 出力 出力は、アリスが勝利戦略を持っているターン順のリストです。これは、上記のバイナリツリーの存在に相当します。順番の順番は関係ありませんが、重複は禁止されています。 詳細なルール 完全なプログラムまたは関数を作成できます。プログラムの場合、入力と出力の区切り文字を選択できますが、両方で同じにする必要があります。最短のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース 3 [] -&gt; [] 3 [000,001,010,011,100,101,110,111] -&gt; [AAA,AAB,ABA,ABB,BAA,BAB,BBA,BBB] 4 [0001,1011,0010] -&gt; …
14 code-golf  game 

7
nのべき乗を合計します
行き方 入力整数n(n &gt;= 0)が与えられると、最小の正の整数 mを出力するプログラムを作成します。ここで、 n = a[1]^b[1] + a[2]^b[2] + a[3]^b[3] + ... + a[k]^b[k] aとbは、同じ長さの有限シーケンスです すべての要素は、a以下でありますm すべての要素は、b以下でありますm のすべての要素aは異なり、整数ですa[x] &gt;= 0 のすべての要素bは異なり、整数ですb[x] &gt;= 0 a[x]またb[x]、両方とも0ではありません(0 ^ 0は不確定であるため) これはcode-golfなので、バイト数が最も少なくなります。 例 In 0 -&gt; Out 1 Possible Sum: In 1 -&gt; Out 2 Possible Sum: 1^0 In 2 -&gt; Out 3 …

15
空白を埋める
入力 非負の整数n、およびs英数字とアンダースコアのみを含む空でない文字列_。の最初の文字はsです_。の下線はs、他の文字で埋めることができる空白スペースとして解釈されます。 「無限ストリング」の無限シーケンスを次のように定義します。文字列は、無限に何度も繰り返されます。すべての場合、文字列はの文字で空白スペースを埋めることから取得されます。したがって、最初のが、で置換され、2番目がで置換されます。の最初の文字はでないため、すべての空白スペースが最終的に埋められ、すべてが最終的な値で置き換えられた無限の文字列で示されます。s1 = s s s...sk &gt; 1sk+1sks1_sks1[0]s1[1]s_s∞_ 出力 の最初のn文字列。s∞ 例 入力n = 30とを考慮してくださいs = ab_c_。我々は持っています s1 = ab_c_ab_c_ab_c_ab_c_ab_c_ab_c_ab_c_... 代入のブランクに、我々は持っていますs1s1 s2 = abacbab_ccab_caabbc_abcc_abacbab_cc... 再び空白に置き換えます。その結果、s1 s3 = abacbabaccabbcaabbc_abcccabacbab_cc... もう1つの置換: s4 = abacbabaccabbcaabbcaabcccabacbabbcc... これから、の最初の30文字をすでに推測できます。s∞ abacbabaccabbcaabbcaabcccabacb これは正しい出力です。 ルール 完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。誤った入力でのクラッシュは許容されます。 テストケース 0 "ab__" -&gt; "" 1 "ab__" -&gt; "a" 3 "ab__" -&gt; "aba" …
14 code-golf  string 

4
それはほとんどLispです!
チャレンジ あなたの課題は、Lispに似た言語用のインタープリターを設計することです。GLispのプログラムコードは、次の形式の括弧で示された任意の量のネストされた式で構成されます。 (func arg1 arg2 ...) インタプリタは、括弧、関数、および引数の前後に余分な空白文字を許可する必要があることに注意してください。 タイプ 整数、リスト、ブール、関数の4つのタイプを実装します。整数とブール値は、独自の構文を使用してソースコードに明示的に挿入できます。インタープリターは、一連の数字が整数を示すと想定する必要があります(負の整数を明示的に挿入する構文を実装する必要はありません)。また、インタープリターはtrue、falseブール値が指定されていると想定する必要があります。関数はユーザーが明示的に定義することはできず、常に単一の値(任意の長さのリストが単一の値としてカウントされます)を返します。 関数 以下の関数は実装する必要があり、形式はFunction、Arityです。Arityの前にnプラス記号が付いている場合、それは1 nつ以上の引数を示しています。特に指定されない限り、関数に与えられたすべての引数は同じ型であると仮定することができます。また、certian型に動作が指定されていない場合、その関数の引数はその型にはならないと想定することもできます。引数は、次の図のように参照されます。 (func argument1 argument2 ... argumentn) +、2 + すべての引数がInteger型の場合、引数の合計を返す必要があります すべての引数がList型の場合、引数の連結を昇順(arg1+arg2+ ...)で返す必要があります すべての引数のタイプがBooleanの場合、引数のすべての論理シーケンスを返す必要があります (+ 1 2 3 4 5) -&gt; 15 (+ (list 1 2) (list 3 4)) -&gt; (list 1 2 3 4) (+ true true true) -&gt; true …

5
磁気彫刻
これは、グラフの構築に関する私の以前の課題の緩やかな継続です。 バックグラウンド 風変わりなアーティストが彼の彫刻の構造的完全性を推定するためにあなたを雇いました。彼は立方体の磁石の束を取り、それらを一つ一つ巨大な山に落とすことによって彼の芸術作品を作成します。彼の方法をよりよく分析するために、次の2次元モデルを使用します。空の床から始め#、任意の整数座標に磁石をドロップします0。 | v # =============== 0 別の磁石をで落とすと0、前の磁石の上に配置されます: | v # # =============== 0 次に、にもう1つ磁石をドロップし0、次に1つにドロップし1ます。 | #v ## # =============== 0 上記のように、落下する磁石は、通過する2番目の磁石に付着します(最初の磁石は単に減速させます)。2番目の磁石は最初の磁石のすぐ下にある必要はなく、両側の磁石は1つの磁石としてカウントされます。 # # ##|## # v # ### # # # =============== 0 アーティストは、最終的な彫刻の最大垂直ギャップ、つまり、同じ列の2つの磁石、または磁石とその下の地面の間の空きスペースの最大数を計算することを望んでいます。上の図では、この数は3(列2)です。 入力 アーティストが磁石を落とす座標を表す整数のリスト。左から右に読みます。座標が満たされ-1024 &lt;= i &lt; 1024、リストの長さが最大1024であると仮定することができます。 出力 最終的な彫刻の最大垂直ギャップ。-1私たちの彫刻家はダダイストであるため、空の彫刻にはギャップがあり、このケースを含める必要があります。 追加のルール 機能または完全なプログラムを提供できます。最短のバイトカウントが優先され、標準の抜け穴は許可されません。説明付きのコードが推奨されます。 テストケース [] -&gt; -1 …
14 code-golf  grid 

1
Pythonのアドバイス:内省的な関数呼び出しの移植性
Pythonでは、dir任意のオブジェクトで関数を使用して、そのインスタンス関数の名前のリストを取得できます。 &gt;&gt;&gt; dir('abc') ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__','__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', …
14 code-golf  tips  python 

5
2つの番号を繰り返し追加して、任意の番号を作成します
あなたは、2つの16ビットレジスタを持つマシンを与え、しているxとy。レジスタが初期化されx=1、y=0。マシンが実行できる唯一の操作は、65536を法とする加算です。つまり、次のとおりです。 x+=y- xは次のものに置き換えられ(x + y) mod 65536ます。y変わらない y+=x -同様に y x+=x- xは次のものに置き換えられ2x mod 65536ます。x偶数の場合にのみ合法 y+=y -同様に y 目標は、レジスタのいずれxか(またはy)で事前に定義された数を取得することです。 プログラムまたは番号(で受け取るサブルーチン書くstdin、argv関数のパラメータ、スタックの上部または任意の他の従来の場所)、そしてこの番号を取得するためのプログラムを出力します。出力は、に行くstdoutか、(言語がを持たない場合stdout)他の従来の出力デバイスに行く必要があります。 出力プログラムは、最大100%プラス最適から2ステップまで可能です。つまり、ターゲット番号を取得する最短プログラムにnステップがある場合、ソリューションはを超えることはできません2n+2。この制限は、「簡単すぎる」ソリューション(1、2、3、...など)を回避することですが、完全な最適化は必要ありません。最短のプログラムを見つけるのが最も簡単だと思いますが、確実ではありません... 例:入力=25。出力: y+=x x+=y x+=y x+=x x+=x x+=x y+=x 別の例:フィボナッチ数の場合、出力にはこの交互パターンがあります。入力= 21の場合、出力は y+=x x+=y y+=x x+=y y+=x x+=y y+=x 最短コード(バイト単位で測定)が優先されます。 (このパズルは、最近生成しなければならなかった16ビットプロセッサのコードに触発されました) PS不思議-最適なプログラムが最も長いのはどの番号ですか?

5
x-illionを標準形式に変換する
接頭辞と「illion」で構成される文字列を指定すると、この数値が標準形式に変換されます。 例えば: "million" -&gt; 10^6 "trillion" -&gt; 10^12 "quattuordecillion" -&gt; 10^45 プログラムは、Centillion(10 ^ 303)までの入力を処理できる必要があります。名前とその標準形式の値のリストはここにあります -これは、10 ^ 3ごとに10 ^ 63までの値を提供しますが、10 ^ 30の増分でそれらを提供しますが、パターンは非常に簡単です。 プログラムは、100のケースすべてを提供する必要があります(提供されているWebサイトで明示的に指定されていないものも含む)-以下に例を示します。 "sexvigintillion" -&gt; 10^81 "unnonagintillion" -&gt; 10^276 "octotrigintillion" -&gt; 10^117 入力は、STDIN、関数の引数、または文字列としてハードコード化することで指定できます。 これはコードゴルフなので、最短のコードが勝ちです!

4
Dominionで2倍および3倍のアクションを解決する
ひらめき この質問は、人気のあるデッキ構築カードゲームDominionの玉座の間と王宮に触発されています。 ターンの一部として、一連のアクションを実行します。これら2つの特定のアクションにより、次に再生されるアクションが2、3回繰り返されます*。他の「一般的な」アクションは特定のゲーム効果を引き起こしますが、詳細には興味がなく、単に文字でラベル付けするだけです。 興味深いのは、玉座の間または王宮が別の王宮の玉座に影響を及ぼし、倍増または三倍効果自体が倍または三重になる場合です。玉座の間の長いチェーン、キングコート、および複数のアクションは、経験豊富なDominionプレイヤーでさえ混乱させる可能性があります。 あなたの目標は、可能な限り少ないバイトを使用して、これらのチェーンを正しく解決するコードを書くことです。Dominionルールでチェーンがどのように解決されるかを説明する前に、プログラムの要件について説明します。 *技術的には、玉座の部屋または王の裁判所の解決の一環として影響を受けるアクションを選択しますが、このビューはこの課題に対してよりクリーンです。 プログラム要件 プログラムまたは名前付き関数を作成します。再生された一連のアクション(STDINまたは関数入力)を取り込み、2倍および3倍の効果から得られた一連のアクションを出力または印刷する必要があります。少ないバイトが勝ちます。 入力 再生されたアクションのシーケンスを表す文字列。一般的なアクションは大文字で表されAてZ。特別なダブリングアクションの玉座の間は、キャラクター2で表され、トリプルアクションのキングズコートは3、 文字(アクション)の数は、1〜30の間です。必要に応じて、改行で入力を終了することができます。 入力例: WA23G3GA 出力 大文字の文字列AへZ。これは、2倍効果と3倍効果を、発生する順序で解決した結果生じる一連の一般的なアクションである必要があります。 必要に応じて、出力を改行で終わらせることができます。それ以外の場合、追加の文字はありません。 出力例:WAGGGGGGAAA。 Dominionでの2倍および3倍の仕組み ここでは、ドミニオンのルールに従って、玉座の間(2)と王宮()のチェーンがどのように機能するかを説明し3ます。 をプレイした後2、解決すべき次のアクションが2回発生します。したがって、最初にを再生した場合2、次にAが発生しますA。 2A -&gt; AA 同様に、 A2BC -&gt; ABBC 3DE -&gt; DDDE 3N2BC3XY2 -&gt; NNNBBCXXXY 最後の例では、決勝戦2に倍増するものは何もなかったため、効果がないことに注意してください。 興味深いのは、2倍または3倍の効果自体が2倍または3倍になった場合です。例えば、 22AB -&gt; AABB まず、あなたがプレイし2ます。次に、別のを再生します。2これは、前のから2倍になり2ます。その結果、次の2つのアクションが2倍になります。まず、A解決の2つのコピー。次に、B解決のコピー。 A4倍ではないことに注意してください。最初のコピーが最初に2動作したA後、次のコピーは次の未解決の動作に作用しBます。なしではB、 22A -&gt; AA の2番目のコピーは2次のアクションが2倍になるのを待っていますが、アクションは発生しません。 最後に、複雑な例を見てみましょう。 223BCDE -&gt; BBBCCCDDE 前と同じように、最初のもの2は2番目のもの2を2倍にします。したがって、次の2つのアクションは2倍になります。の最初のコピーは2次のアクションを2倍にします。次のアクションは3、の次のコピーを解決する前に完全に解決する必要があります2。3トリプルの最初のコピーB、および2番目のコピートリプルC。現在、まだ待機中の2番目のコピーは2、次の未解決のアクションを2倍にしDます。この後、2倍または3倍の効果は残りませんE。最終的なアクションが発生します。 テストケース …
14 code-golf  game 

6
サイクリックタグシステムのシミュレーション
環状タグシステムは、 2シンボルアルファベットからなる小さな、チューリング完全な計算モデル(私は使用しますである{0,1})、有限の空ではない環状リストプロダクションそれら二つのシンボルで構成され、無限語もから成りますこれらの2つのシンボル。 各ステップで: 単語の最初の要素が削除されます 0現在の生産だった場合はスキップされます それが1現在の生産であったならば、単語の終わりに追加されます。 次のプロダクションがアクティブになります。これが最後のプロダクションであった場合、最初のプロダクションに戻ります。 単語が空になると、システムは停止します。 例(ウィキペディアから): Productions: (010, 000, 1111) Initial word: 11001 Generation Production Word (before) Word (after) 0 010 11001 → 1001010 1 000 1001010 → 001010000 2 1111 001010000 → 01010000 3 010 01010000 → 1010000 4 000 1010000 → 010000000 5 1111 010000000 …

2
海賊番号
Piは無理数です。つまり、その10進表現は終了したり繰り返されたりすることはありません。 Piは小数点以下41桁(40桁)に切り捨てられ3.1415926535897932384626433832795028841971ます。 小数点を無視し、重複を避けるために数字を正の整数のシーケンスとしてリストすると、3 1 4 15 9 2 6 5 35 8 97 93 23 84 62 64 33 83 27 950 28 841 971(OEIS A064809)が得られます。 (すでに発生したためでは15なく、シーケンスに表示される通知。 また、正でないため発生しないことに注意してください。最初のゼロが含まれています。)1 510950 最初の著作数を作成するには、このシーケンスを使用してPiの数字にインデックスを付けます(最初の数字は3、2番目の数字は1など)。 したがって、最初の著作権侵害番号の1桁目はPiの3桁目 、2桁目はPiの1桁目 、3桁目はPiの4桁目、4桁目はPi の15桁目など です。 Piを模倣するために、最初の桁の後に小数点が追加されます。 したがって、41桁の最初の著作権侵害番号は4.3195195867462520687356193644029372991880です。 (30桁目では、Piの974桁目まで行かなければならなかったことに注意してください。) 2番目の著作権数を作成するには、Piの代わりに最初の著作権数を使用してプロセスを繰り返します。(Pi自体は0番目の海賊番号と呼ばれる場合があります。)したがって、新しいシーケンスはで4 3 1 9 5 19 58 ...あり、最初の海賊番号は2番目を生成するためにインデックス付けされます9.14858...。 同様の方法で追加の著作権侵害番号が作成され、それぞれ前の番号から生成されます。 チャレンジ あなたの仕事は、2つの整数を取り、可能な限り最短のプログラムを作成することです。NそしてD、10進N数に切り捨てられたthの実数を出力しDます。 Dは常に正ですがN、負ではなくD、Piの数字Nは0の …
14 code-golf  pi 

1
最小限のボッグルのような配置
同じ文字キューブを複数回使用しないというルールが無視される場合、任意の大きなBoggleグリッドに単語を配置する方法を検討してください。また、無制限の数の文字キューブ(すべての文字が存在する)があり、ちょうどであると仮定します。QuQ 単語MISSISSIPPIは6個のキューブのみを使用して配置できます。可能な取り決めの1つを次に示します。 S MIS PP から始めて、M単語全体が綴られるまで、水平、垂直、または斜めに任意のステップを繰り返し実行します。 驚いたことに、次のような長いフレーズでAMANAPLANACANALPANAMAも必要なキューブは6つだけです。 MAN PLC ただし、より長く複雑な文字列に必要なキューブの最小数は必ずしも明らかではありません。 チャレンジ 文字列を取り込んで、最小数のキューブが使用されるように、このBoggleのような方法でそれを配置するプログラムを作成します。(結果のグリッドの寸法と空のセルの数は関係ありません。) 空のグリッドセルとして使用されるため、スペース(16進コード21〜7E)を除く各印刷可能ASCII文字に対して無制限の数のキューブがあると仮定します。印刷可能なASCII文字列(スペースなし)のみが入力されます。 入力は、stdinまたはコマンドラインから取得する必要があります。出力はstdout(または最も近い代替)に送られます。 出力の先頭または末尾の改行とスペースは問題ありません(ただし、異常な量がないことが望ましいです)。 検索スペースは、文字列が長くなるにつれて指数関数的に爆発しますが、アルゴリズムを効率的にしようとする必要はありません(それはいいことですが:))。これはコードゴルフであるため、バイト単位の最短ソリューションが優先されます。 例 入力がOklahoma!(最小8文字)の場合、これらはすべて正確に8つの塗りつぶされたグリッドセルを持ち、(改訂された)Boggle読み取りパターンに従うため、これらはすべて有効な出力になります。 Oklaho !m または ! Oamo klh または lkO !amo h 等

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