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

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

30
インターリーブ反転
文字列が与えられたら、インターリーブで逆にします。abcdefghiおよびabcdefghijにインデックスを付ける方法を次に示します。 偶数インデックスの文字を奇数インデックスの文字から分離します。acegi bdfh acegi bdfhj 奇数インデックスで文字を反転します:acegi hfdb acegi jhfdb 再び1つの文字列にインターリーブします。ahcfedgbi ajchefgdib ルール 偶数長と奇数長の両方の文字列をサポートする必要があります。 0インデックス単位では、偶数インデックスではなく奇数インデックスで文字を反転する必要があります。 1インデックス単位では、もちろん、奇数ではなく偶数インデックスで文字を反転する必要があります。 入力は印刷可能なASCII(コードポイント32-126)で構成され、改行は含まれません。 入力は、文字列または文字のリスト(1文字の文字列ではない)として取得できます。例えばString/ char[]またはchar*許可されていますが、String[]/ char[][]またはchar**ではありません。 テストケース Input Output Hello, World! HdlroW ,olle! Hello World! H!llooW rlde ABCDEFGHIJKLMNOPQRSTUVWXYZ AZCXEVGTIRKPMNOLQJSHUFWDYB !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ }"{$y&w(u*s,q.o0m2k4i6g8e:c<a>_@]B[DYFWHUJSLQNOPMRKTIVGXEZC\A^?`=b;d9f7h5j3l1n/p-r+t)v'x%z#|!~ P P AB AB xyz xyz 空の文字列の場合、空の文字列自体を返します。
20 code-golf  string 

8
多項式を見つける
fは、非負の整数係数を持つ多項式であることを知っています。 与えられたf(1)とf(1 + f(1))はfを返します。fを係数のリスト、ASCII形式の多項式などとして出力できます。 例: f(1) f(1+f(1)) f 0 0 0 1 1 1 5 75 2x^2 + 3 30 3904800 4x^4 + 7x^3 + 2x^2 + 8x + 9 1 1073741824 x^30

1
λ式をSK式に変換
λ計算、又はラムダ計算は、匿名関数に基づいて、論理システムです。たとえば、これはλ式です。 λf.(λx.xx)(λx.f(xx)) ただし、この課題のために、表記を簡略化します。 に変更λします\(入力しやすくするため):\f.(\x.xx)(\x.f(xx)) .我々はそれをドロップすることができますので、ラムダヘッダーのは、不要です。\f(\xxx)(\xf(xx)) 使用Unlambdaとスタイルのプレフィックス表記を`(これを行う方法の完全な説明については、参照ではなく2つの関数を書くよりもアプリケーションのためのラムダ計算表記間の変換を):\f`\x`xx\x`f`xx これは最も複雑な代替です。各変数を、その変数が属するラムダヘッダーに対してどれだけ深くネストされているかに基づいて、括弧内の数字で置き換えます(つまり、0ベースのDe Bruijnインデックスを使用します)。たとえば、\xx(恒等関数)では、式を変数から最後までトラバースするときに遭遇する最初の(0から始まる)ヘッダーに属するためx、本文のはに置き換えられ[0]ます。\x\y``\x`xxxyに変換され\x\y``\x`[0][0][1][0]ます。ヘッダーに変数をドロップして、を残すことができます\\``\`[0][0][1][0]。 組み合わせ論理は、基本的にλ計算から作成されたチューリングターピットです(まあ、実際は最初に来ましたが、ここでは無関係です)。 「組み合わせロジックはラムダ計算の変形と見なすことができ、ラムダ式(機能の抽象化を表す)は限定されたコンビネータのセット、バインドされた変数が存在しないプリミティブ関数に置き換えられます。」1 組み合わせロジックの最も一般的なタイプはSKコンビネーター計算で、次のプリミティブを使用します。 K = λx.λy.x S = λx.λy.λz.xz(yz) コンビネータI = λx.xが追加されることもありますが、SKK(または実際SKxにはx)と同等であるため、冗長Iです。 必要なのは、λ計算の任意の式をエンコードできるようにするためのK、S、およびアプリケーションだけです。例として、関数λf.(λx.xx)(λx.f(xx))から組み合わせロジックへの変換を次に示します。 λf.(λx.xx)(λx.f(xx)) = S(K(λx.xx))(λf.λx.f(xx)) λx.f(xx) = S(Kf)(S(SKK)(SKK)) λf.λx.f(xx) = λf.S(Kf)(S(SKK)(SKK)) λf.S(Sf)(S(SKK)(SKK)) = S(λf.S(Sf))(K(S(SKK)(SKK))) λf.S(Sf) = S(KS)S λf.λx.f(xx) = S(S(KS)S)(K(S(SKK)(SKK))) λx.xx = S(SKK)(SKK) λf.(λx.xx)(λx.f(xx)) = S(K(S(SKK)(SKK)))(S(S(KS)S)(K(S(SKK)(SKK)))) プレフィックス表記を使用しているため、これは```S`K``S``SKK``SKK``S``S`KSS`K``SKK`です。 1出典:ウィキペディア チャレンジ 今までに、あなたはおそらく何であるかを推測しました:有効なλ式(上記の表記法)を入力および出力(または返す)としてSKコンビネーター計算で書き直されたプログラムを書く。これを書き換える方法は無限にあることに注意してください。無限の方法のいずれかを出力するだけです。 これはcode-golfであるため、最短の有効な送信(バイト単位で測定)が優先されます。 …

18
(奇妙な)単位円を描いてください!
前書き 通常の単位円を知っていて、愛しているかもしれません。しかし、数学者は狂っているので、彼らはコンセプトを満足するところまで抽象化しましたx*x+y*y=1。Cryptographers 1も奇妙であるため、彼らは有限の場と時々有限のリングを愛します(しかし、彼らは多くの選択肢があるわけではありません)。 チャレンジ 入力 お気に入りのエンコードで1より大きい正の整数。この番号をnと呼びましょう。 出力 "X"(大文字のラテンX)と ""(スペース)を使用して、入力整数を法としてASCII-Artとしてモジュレーションする単位円の "picture"(n x n文字で構成される)を出力します。末尾のスペースと改行を使用できます。 詳細 座標系を左下から右上にスパンする必要があります。ポイントが円の方程式を満たしている場合は常に、その位置にXを配置し、そうでない場合はスペースを配置します。 円の境界の一部と見なされるポイントの条件は次のとおり mod(x*x+y*y,n)==1です。 ここで座標系の簡単な説明: (0,4)(1,4)(2,4)(3,4)(4,4) (0,3)(1,3)(2,3)(3,3)(4,3) (0,2)(1,2)(2,2)(3,2)(4,2) (0,1)(1,1)(2,1)(3,1)(4,1) (0,0)(1,0)(2,0)(3,0)(4,0) 役立つ場合は、軸の方向を逆にすることもできますが、例ではこの方向を想定しています。 誰が勝ちますか? これはコードゴルフなので、バイト単位の最短コードが勝ちです!デフォルトのI / Oメソッドのみが許可され、すべての標準的な抜け穴は禁止されています。 例 入力:2 X X 入力:3 X X XX 入力:5 X X X X 入力:7 X X X X X X X X 入力:11 …

30
配列に2以外のものが含まれているかどうかを判別
数値または配列で構成される配列を取得し、2s のみが含まれる場合に出力します。 出力は真実または偽の値である必要があります(これにより回答が破壊される場合はご容赦ください) 真実のテストケース [2] [2,2] [[2],[2,2],2] [] [[],[]] Falseyテストケース [1] [22] [2,2,2,1] [[1,2],2] 標準の抜け穴は禁止されています。 デフォルトのIOルールが適用されます。 コードゴルフ、最少バイトが勝ちます!

3
[Br] eaking Code Golf [Ba] d
次の文字列を検討してください。 Tin Snips この文字列には、周期表の原子記号がいくつか含まれています。これらのいくつかを識別するために、この文字列を書き換えることができます。 [Ti][N] [Sn][I][P][S] もちろん、次のように書くこともできます。 T[In] [S][Ni][P][S] 入力を書き換える規則は次のとおりです。 入力の大文字小文字は、アトミックシンボルの一致に関しては重要ではありません。 要素がアトミックシンボルで使用される場合、シンボルが正しいように大文字と小文字を変更する必要があります。例:hになり[H]ます。 すべての要素のシンボルはASCII角括弧に包まれ、されている[と]。 空白は保持さBig egoれ[Ge]ます。「g」と「e」をに結合することはできません。 すべての入力文字をアトミックシンボルに結合する必要はありません。入力文字がシンボルに入れられない場合、そのまま渡されます(大文字と小文字は区別されません)。 シンボルを作成できる場合は、作成する必要があります。つまり、Tin上記の例では、その単語に少なくとも1つのシンボルを作成できるため、出力することはできません。未使用の文字を通過できるのは、アトミックシンボルの構築に使用できない場合だけです。 この課題のために、水素(1)からオガネソン(118)までのすべての要素が有効です。有効な上位要素はありません。 上位の要素のいくつかは、あいまいな名前と記号を持っています。この課題のために、Wikipediaのバージョンが使用されます。便宜上、許容される原子記号は次のとおりです。H、He、Li、Be、B、C、N、O、F、Ne、Na、Mg、Al、Si、P、S、Cl、Ar、K、Ca、 Sc、Ti、V、Cr、Mn、Fe、Co、Ni、Cu、Zn、Ga、Ge、As、Se、Br、Kr、Rb、Sr、Y、Zr、Nb、Mo、Tc、Ru、Rh、 Pd、Ag、Cd、In、Sn、Sb、Te、I、Xe、Cs、Ba、La、Ce、Pr、Nd、Pm、Sm、Eu、Gd、Tb、Dy、Ho、Er、Tm、Yb、 Lu、Hf、Ta、W、Re、Os、Ir、Pt、Au、Hg、Tl、Pb、Bi、Po、At、Rn、Fr、Ra、Ac、Th、Pa、U、Np、Pu、Am、 Cm、Bk、Cf、Es、Fm、Md、No、Lr、Rf、Db、Sg、Bh、Hs、Mt、Ds、Rg、Cn、Nh、Fl、Mc、Lv、Ts、Og。 提供された単一の入力からすべての可能な出力を生成するプログラムまたは関数を作成します。入力と出力の両方は、任意の形式にすることができます。これは、文字列、文字の配列、またはその他のデータ構造である可能性があります。便利で入力と出力を明確に表すものであれば何でもかまいません。入力と出力の両方をコードの入出力に渡すことができますが、標準の入出力、関数の引数/戻り値、またはその他の選択を選択できます。 入力は、任意の大文字小文字のASCII文字とスペース(0x20)文字のみを含む正の長さの文字列(前の段落を参照)でなければなりません。 コードは、上記の入力ルールを使用して作成できるすべての出力文字列を生成する必要があります。 出力の順序は実装定義です。唯一の要件は、すべての出力文字列が存在することです。 アトミックシンボルを含まない有効な入力文字列が提示された場合、単に入力文字列を出力します。 上記のルールに従って無効な入力文字列(null、ゼロ文字、不正な文字が含まれているなど)が提示された場合、プログラムは何でもできます(クラッシュ、空白出力など)。 周期表と一致する必要があるアトミックシンボル以外の出力では、大文字と小文字は区別されません。 標準の抜け穴は許可されていません。 テストケース: Tin Snips [Ti][N] [Sn][I][P][S] [Ti][N] [S][Ni][P][S] [Ti][N] [S][N][I][P][S] T[In] [Sn][I][P][S] T[In] [S][Ni][P][S] T[In] [S][N][I][P][S] T[I][N] ... Quack Q[U][Ac][K] …

5
> <>水不足
&gt; &lt;&gt;(難解なプログラミング言語)のコードを泳ぐ愛する魚は、その自然環境から取り出されました。この変更により、従来の方法で動き回ることができなくなりました。トロイダル運動であったものは、単純な左から右への動きに制限されていました。しかし、&gt; &lt;&gt;プログラムは、魚がそれらの中を移動できるように書かれています。親愛なるプログラマーの仕事は、プログラムを書いて&gt; &lt;&gt;プログラムを線形化することです。そして、できるだけ少ないバイトでそれを行います。魚にはあまり大きな記憶がありません。 &gt; &lt;&gt;での移動 &gt; &lt;&gt;では、動きはトロイダルで、一度に1つのキャラクターになります。これは、魚(ポインター)が行の終わりから先頭まで「ラップ」できることを意味します。&gt; &lt;&gt;では、ほとんどのポインターの動きとは対照的に、魚は上から下、下から上、および右から左に移動することもできます。したがって、この移動パターンは有効です。 &gt;&gt;&gt;^ &gt;&gt;&gt;v &gt;&gt;&gt;^ v そして、それは無限ループで終了します(底部を無限に通過すると、最上部のラインに戻ります)。 魚は、max(row length)に等しい長さと、行の数に等しい高さのグリッドで移動します。 魚がどのように動くかをどのように把握しますか?これらのコマンドは、移動の方向ベクトルを変更します(たとえば(-1,0)、右から左を意味します)。 Command | Direction Change --------------------------- &gt; | (1,0) (default) &lt; | (-1,0) ^ | (0,1) v | (0,-1) / | (x,y) -&gt; (y,x) \ | (x,y) -&gt; (-y,-x) | | (x,y) -&gt; (-x,y) …
20 code-golf  grid 

6
Quandle QuandaryエピソードI:有限カンドルの識別
与えられた行列がカンドルを表すかどうかを判断するプログラムを作成します。quandleは以下の公理に従う単一(非可換、非会合)操作◃を備えたセットです。 操作は閉じられます。つまり、a◃b = cは、セットの要素である場合a、常にセットのb要素です。 操作は、自己分散型です(a◃b)◃c = (a◃c)◃(b◃c)。 操作は右割り可能です:aおよびの任意のペアに対して、次のようなb単一の一意性cがあります。c◃a = b 操作はべき等です: a◃a = a 有限のカンドルは正方行列として表すことができます。以下は、5次カンドル(source)の例です。 0 0 1 1 1 1 1 0 0 0 3 4 2 4 3 4 2 4 3 2 2 3 3 2 4 n番目の行とm番目の列(0から始まる)にある値は、n◃mの値です。たとえば、このカンドルでは、4◃1 = 3。この行列から、カンドルプロパティの一部を簡単に確認できます。 この5x5マトリックスには値0〜4のみが表示されるため、閉じられます。 行列の対角が0 1 2 3 4であるため、べき等です。 列に重複値が含まれていないため、右分割可能です。(行は可能であり、通常はそうなります。) …

3
ラフティングの問題(ナップザックバリアント)
私からの最初のパズル、改善の提案を喜んで受け取った! シナリオは次のとおりです。あなたは急流ラフティング会社のマネージャーとして働いています。毎朝、予約のリストが表示され、ラフトロードに並べ替える必要があります。選択した言語でこれを行うプログラムまたは関数を作成します。 各ラフトには最大数のnクライアントが収容され、各予約は1 n人以上のグループ(包括的)です。次のルールを順守する必要があります。 グループを分割することはできません。一緒に予約した場合、全員が同じラフトにいなければなりません。 いかだの数は最小限に抑える必要があります。 上記の2つの規則に従って、グループはいかだの間で可能な限り均等に広げられなければなりません。 入力。 番号n(これは正の整数であると想定できます)、およびすべての予約のサイズ。言語がそのようなことをサポートしている場合、これは配列、リスト、または同様のデータ構造になります。これらはすべて1〜の正の整数になりnます。予約の順序は定義されておらず、重要でもありません。 出力。 いかだ積み荷にグループ化された予約番号のリスト。次のように、グループ化を明確に示す必要があります。 リスト、または配列の配列。 いかだごとのコンマ区切りリスト。各ラフト間の改行。 3番目のルールをどのように実装するかはユーザー次第ですが、これには、いかだの平均占有率を見つけ、それから可能な限り逸脱を最小限に抑えることが含まれます。ここにいくつかのテストケースがあります。 n Bookings Output 6 [2,5] [5],[2] 4 [1,1,1,1,1] [1,1,1],[1,1] 6 [2,3,2] [2,2],[3] 6 [2,3,2,3] [2,3],[2,3] 6 [2,3,2,3,2] [2,2,2],[3,3] 12 [10,8,6,4,2] [10],[8,2],[6,4] 6 [4,4,4] [4],[4],[4] 12 [12,7,6,6] [12],[7],[6,6] 標準ルールが適用され、最短のコードが優先されます。楽しむ! 編集済み; 3番目のルールを可能な限り均等に定義するための提案された方法。 いかだの数rが決定されると(2番目の規則に従い)、a予約を合計し、で割ることで平均占有率を計算できますr。各ラフトについて、を使用して平均占有率からの偏差を見つけることができますd(x) = abs(n(x)-a)。ここn(x)で、は各ラフトとの人数です1 &lt;= x &lt;= …

16
私はあなたにN番目の順列を与えます、あなたは私にNを与えます
入力:大文字のシーケンス(ASCII [65; 90])。これは、その文字のマルチセットのN番目 *辞書編集順列です。 *順列は0または1から番号が付けられます 出力: 10を底とする整数N ルールズ 重複する可能性があります (これが、このチャレンジとこのチャレンジの違いです ) 文字はASCII値の順に並べられます 未満または1に等しい長さの入力の場合、入力は、最初の順列であり、結果は0、または1それぞれ 最初の順列では、左端の文字の値が最も低く、右端の文字の値が最も高く、最初と最後の文字の間の文字シーケンスは、その文字のマルチセットの最初の順列です(再帰定義!) 最短エントリーが勝ちます 例 入力AABは出力を生成します0 入力ABAは出力を生成します1 入力BAAは出力を生成します2 入力ZZZは出力を生成します0 入力DCBAは出力を生成します23 編集 すべての順列を生成せずに入力を検索するソリューションを思い付くことができる人への追加の名誉。それはいくつかの挑戦です。

19
Steamユーザーの評判はどのくらいですか?[閉まっている]
閉じた。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 2年前に閉店。 前書き 蒸気に精通していない人-または少なくともこの特定の側面: 多くの場合、人々のプロフィールには、「+ rep _____」または「-rep _____」のいずれかのコメントが残されています。これらは、いくつかの理由で、コミュニティの誰かが良い評判か悪い評判かを示す非公式の手段です。このようなコメントは次のようになります。 +良い選手を代表する +担当者役立つ -repハッカー -rep詐欺師 仕事 プログラムは、合意に基づいた方法で入力を取得する必要があります。入力は、オプションの改行(\n)を含む文字列で構成されます。各行の先頭、'+rep 'または'-rep '存在する可能性があります。残りの行は破棄できます。行が'+rep 'またはで始まらない場合'-rep '(末尾のスペースに注意してください)、行は無視されます。 その後、プログラムは合計評価スコアを保持する必要があります。で始まり0、このスコアはで始まるすべての行で増加し、で始まるすべての行で'+rep '減少し'-rep 'ます。 この結果は、合意された方法で出力する必要があります。 テストケース Input: +rep fast trade +rep nice person -rep too good Output: 1 Input: -rep hacker -rep scammer -rep was mean Output: -3 Input: first i don't …

4
多項式を局所的に反転する
チャレンジ 多項式所定のp順序の実際の係数を有する1と程度n、別の多項式を見つけるq高々度にnなるように(p∘q)(X) = p(q(X)) ≡ X mod X^(n+1)、換言すれば、その結果p(q(X)) = X + h(X)ここhで任意の多項式ですord(h) ≥ n+1。多項式qはによって一意に決定されpます。 多項式のためにp(X) = a(n)*X^n + a(n+1)*X^(n+1) + ... + a(m)*X^mどこn &lt;= mとa(n) ≠ 0、a(m) ≠ 0我々が言うnでオーダーのpとmある程度のp。 単純化:にp整数係数があると仮定できますa(1)=1(そしてp(X) = X + [some integral polynomial of order 2])。この場合q、積分係数もあります。 この単純化の目的は、浮動小数点数の問題を回避することです。ただし、説明のために非整数の例があります。 例 テイラー級数を考えるexp(x)-1 = x + x^2/2 + x^3/6 + x^4/24 …

9
バイナリツリーを列挙する
二分木 二分木は、3つのタイプのノードを持つツリーです。 子を持たないターミナルノード それぞれが1つの子を持つ単項ノード それぞれ2つの子を持つバイナリノード BNF(Backus–Naur形式)で与えられる次の文法でそれらを表現できます。 &lt;e&gt; ::= &lt;terminal&gt; | &lt;unary&gt; | &lt;binary&gt; &lt;terminal&gt; ::= "0" &lt;unary&gt; ::= "(1" &lt;e&gt; ")" &lt;binary&gt; ::= "(2" &lt;e&gt; " " &lt;e&gt; ")" この文法では、ノードは事前順序で指定され、各ノードは、子の数である数字で表されます。 モッツキン数 Motzkin番号(OEIS)(Wikipedia)には多くの解釈がありますが、1つの解釈は、nth Motzkin番号はnノードを持つ別個の二分木の数であるということです。Motzkin番号の表が始まります N Motzkin number M(N) 1 1 2 1 3 2 4 4 5 9 6 21 7 …

8
アルファベットを導く
アルファベットを導く 方向の配列を指定すると、方向は次のように定義されます。 NW N NE W . E SW S SE または、インデックスとして(上記の文字列の代わりにこれらのインデックスをルートに使用できます): 0 1 2 3 . 4 5 6 7 どちらの形式を選択してもかまいませんが、チャレンジでは両方をサポートする必要はありません。Aで始まる、描かれたパスを表す対応するアルファベット文字列を生成します。方向の数が25を超えることは決してZありません。言語の制限によりこれらの形式が機能しない理由を説明できない限り、他の入力形式は受け入れられません。これは、冗長な例を使用して説明する方が簡単です。 それでは、簡単な例を見てみましょう。 [E,SE,N,S,S,S,NW,W,N] or [4,7,1,6,6,6,0,3,1] 常にAで始まります。 A Bに東に行きます。 A-B 南東にCに行きます。 A-B \ C Dに北上します。 A-B D \| C 南に戻ってEに戻り、Cを上書きします。 A-B D \| E FとGの両方まで南に2サイクル進みます。 A-B D \| E | …

9
Cantorセット内ですか?
チャレンジ この課題では、特定の番号がカンターセットに含まれているかどうかを判断する必要があります。最初に、Cantorセットを定義しましょう。 最初に、0〜1の数字から始めます。この範囲外の数字は、Cantorセットには含まれません。ここで、数字を3つの等しい部分に分割しましょう:[0,1 / 3]、[1 / 3,2 / 3]、[2/3、1]。最初と最後の部分の範囲内にない数値は、カンターセットに含まれません。ここで、セグメント[0,1 / 3]および[2/3、1]に対してこのプロセスを繰り返します。それから残り物を繰り返します。あなたはこれを永遠にやり続けます。最終的に、残りのすべての番号はカンターセットに含まれます。以下に、最初の6つの反復の図を示します。 入力 2つの整数xとy。 0 &lt; y &lt; 2^15 0 &lt;= x &lt;= y 最大公約数xとyしない限り、1ですx == 0。 出力 x/yCantorセットにある場合は真実です。カントールセットにない 場合x/yは偽。 例 次に、Cantorセットに含まれる数値の例を見てみましょう。 1/3 -&gt; true それは境界上にあり、境界は削除されません。 1/4 -&gt; true 1/4セグメントの中央の3分の1にあることはありませんが、どちらの境界にもあることはありません。そのパスをたどると、実際にはセクションの最初と最後の3分の1にあることがわかります。 1/13 -&gt; true 1/13 最初のセクション、最初のセクション、最後のセクションを交互に切り替えます。 1/5 -&gt; false 1/5 上の図の3行目の1/9から2/9までの最初の空のブロックに分類されます。 その他のテストケース: …

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