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

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

29
Van EckシーケンスのN番目の用語
Van EckシーケンスのN番目の項を出力します。 Van Eckシーケンスは次のように定義されます: 0で始まります。 最後の用語がその用語の最初の出現である場合、次の用語は0です。 最後の用語が以前に発生した場合、次の用語は、最後に発生したステップの戻り数です。 https://oeis.org/A181391 https://www.youtube.com/watch?v=etMJxB-igrc https://www.youtube.com/watch?v=8VrnqRU7BVU シーケンス:0,0,1,0,2,0,2,2,1,6,0,5,0,2、... テスト: 入力| 出力 1 | 0 8 | 2 19 | 5 27 | 9 52 | 42 64 | 0 編集 1インデックスが優先され、0インデックスが許容されます。既に提出されたソリューションの一部が変更される可能性があります。 N期のみお願いします。 同じ(すでに投稿されている部分を除いて)、コードゴルファーとナンバーマニアウォッチャーにはかなりのオーバーラップがあるようです。

20
2つの数値の平均を計算する
免責事項:平均値は私によって構成されています 数値の 算術平均を 定義数値の 幾何平均を数値の 調和平均を数値の 二次平均をとして 定義する 平均値()は次のように定義されます:4つのシーケンス()を次のように定義しますnnnM1(x1、。。。、xn)=x1+x2+ 。。。+xnnM1(x1,...,xn)=x1+x2+...+xnnM_1(x_1,...,x_n)=\frac{x_1+x_2+...+x_n}{n}nnnM0(x1、。。。、xn)=x1バツ2。。。バツn−−−−−−−−√nM0(x1,...,xn)=x1x2...xnnM_0(x_1,...,x_n)=\root{n}\of{x_1x_2...x_n}nnnM− 1(x1、。。。、xn)= n1バツ2+ 1バツ2+ 。。。+ 1バツnM−1(x1,...,xn)=n1x2+1x2+...+1xnM_{-1}(x_1,...,x_n)=\frac{n}{\frac{1}{x_2} + \frac{1}{x_2} + ... + \frac{1}{x_n}}nnnM2(x1、。。。、xn)= x21+ x22+ 。。。+ x2nn−−−−−−−−−−−−−−√M2(x1,...,xn)=x12+x22+...+xn2nM_2(x_1,...,x_n)=\root\of{\frac{x_1^2+x_2^2+...+x_n^2}{n}}MMMMM_M、K、BはK、Cのkは、dはkは0=M1(X1、。。。、xはN)、ak、bk、ck、dkak,bk,ck,dka_k, b_k, c_k, d_ka0= M1(x1、。。。、xn)、b0= M0(x1、。。。、xn)、c0= M− 1(x1、。。。、xn)、d0= M2(x1、。。。、xn)、ak + 1= M1(ak,bk,ck,dk),bk+1=M0(ak,bk,ck,dk),ck+1=M−1(ak,bk,ck,dk),dk+1=M2(ak,bk,ck,dk)a0=M1(x1,...,xn),b0=M0(x1,...,xn),c0=M−1(x1,...,xn),d0=M2(x1,...,xn),ak+1=M1(ak,bk,ck,dk),bk+1=M0(ak,bk,ck,dk),ck+1=M−1(ak,bk,ck,dk),dk+1=M2(ak,bk,ck,dk)a_0=M_1(x_1,...,x_n),\\b_0=M_0(x_1,...,x_n),\\c_0=M_{-1}(x_1,...,x_n),\\d_0=M_2(x_1,...,x_n),\\ a_{k+1}=M_1(a_k,b_k,c_k,d_k),\\b_{k+1}=M_0(a_k,b_k,c_k,d_k),\\c_{k+1}=M_{-1}(a_k,b_k,c_k,d_k),\\d_{k+1}=M_2(a_k,b_k,c_k,d_k) すべての4つの配列は、に収束します同じ番号。MM(x1,x2,...,xn)MM(x1,x2,...,xn)M_M(x_1,x_2,...,x_n) 例 1と2の平均は次のように計算されます: 次に シーケンスのさらなる計算は明確でなければなりません。それらは同じ数、約に収束することがます。a0=(1+2)/2=1.5,b0=1∗2−−−−√=2–√≈1.4142,c0=211+12=43≈1.3333,d0=12+222−−−−−−−√=52−−√≈1.5811.a0=(1+2)/2=1.5,b0=1∗2=2≈1.4142,c0=211+12=43≈1.3333,d0=12+222=52≈1.5811.a_0 = (1+2)/2 = 1.5, b_0 = \root\of{1 * …
41 code-golf  math 

12
C変数宣言を読み取る
バックグラウンド Cの変数宣言ステートメントは、変数の名前、そのベース型、および型修飾子の3つの部分で構成されています。 タイプ修飾子には次の3種類があります。 ポインター*(プレフィックス) 配列[N](後置) 関数()(後置) 括弧内に関数引数のリストを指定できますが、この課題のために、それを無視して使用します()(技術的には「関数は任意の種類の引数を取ることができます」)。 また、表記を読み取る方法は次のとおりです。 int i; // i is an int float *f; // f is a pointer to a float my_struct_t s[10]; // s is an array of 10 my_struct_t int func(); // func is a function returning an int キャッチは、私たちのようなより複雑なタイプ、形成するために、これらのすべてを混在させることができるということである配列の配列や関数ポインタの配列やポインタの配列へのポインタを: int arr[3][4]; // arr …
41 code-golf  parsing  c  syntax 

27
バビロニアのように数える
チャレンジ 入力としてバビロニア番号のASCII表現が与えられた場合、西アラビア数字で番号を出力します。 バビロニア数字システム バビロニア人はどのように数えましたか?興味深いことに、彼らはBase 10システムの要素を持つBase 60システムを使用しました。まず、システムの単位列について考えてみましょう。 バビロニア人には3つしかシンボルがありませんでした:(Tまたは、レンダリングできる場合:𒐕)1を表す<(または、レンダリングできる場合:𒌋)10を表す\(またはレンダリングする場合:)𒑊ゼロを表します。 注:技術的には、\(または𒑊)はゼロではありません(バビロニア人には「ゼロ」という概念がなかったため)。「ゼロ」は後で考案されたので\、あいまいさを防ぐために後で追加されたプレースホルダーシンボルでした。ただし、この課題の目的のためには\、ゼロと見なすだけで十分です。 そのため、各列では、シンボルの値を加算するだけです。例: <<< = 30 <<<<TTTTTT = 46 TTTTTTTTT = 9 \ = 0 各列に5 <つ以上または9 つ以上あることはありませんT。\列に常に単独で表示されます。 次に、列を追加するためにこれを拡張する必要があります。これはまさに、他のベース60と同じ働きどこを乗算することにより右端の列の値が、左に1、左に1のように。次に、それぞれの値を合計して、数値の値を取得します。60 1 60 260060060^060160160^160260260^2 列は、あいまいさを防ぐためにスペースで区切られます。 いくつかの例: << <TT = 20*60 + 12*1 = 1212 <<<TT \ TTTT = 32*60^2 + 0*60 + 4*1 = 115204 ルール …

21
Malbolgeの「クレイジー」オペレーターを実装する
Malbolgeプログラミング言語の多くのユニークな機能の1つは、非常に直感的ではないOP演算子です。ドキュメントとソースコードでは「op」と呼ばれますが、一般的に「crazy」演算子として知られています。言語の作成者であるベン・オルムステッドがその文書で説明しているように、「パターンを探してはいけない、そこにはない」。 opは「tritwise」演算子です。2つの引数の対応する3進数で動作します。各トリット(3進ビット)について、opの結果は次のルックアップテーブルによって与えられます。 a op(a,b) 0 1 2 +------- 0 | 1 0 0 b 1 | 1 0 2 2 | 2 2 1 たとえば、を計算するにはop(12345, 54321)、最初に両方の数値を3進数で書き出してから、テーブル内の各トリットのペアを検索します。 0121221020 (12345_3) op 2202111220 (54321_3) -------------- 2202220211 (54616_3) 最後に重要な点は、入力値が10の幅にゼロで埋めなければならないのでMalbolgeのすべての値が10個のトリットが広いということである(例えば、op(0, 0)ある1111111111三元に)。 あなたの仕事は、2つの整数0≤ a、b<59049を入力として受け取り、の整数値を出力することですop(a,b)。 テストケース(形式a b op(a,b)): 0 0 29524 1 2 29525 59048 5 7 …
41 code-golf  number 

9
予約済みのJavaScript
ECMAScriptの2015年の時点では、JavaScriptが持っている33個の予約キーワード、などbreak、constとnewだけでなく、10将来の予約語などを、letとawait。 あなたの仕事は、機能的なJavaScriptコードを記述しながら、最大数の連続した1個の個別の予約キーワード2を連結することです3。 連続した予約キーワード-空白および/または括弧および/または中括弧のみで区切られた予約キーワード。 予約済みキーワード-ECMAScript 2015以降の予約済みまたは将来の予約済みキーワード。古い標準の予約キーワードは除外されます。許可されたキーワードの完全なリストを以下に示します。 機能コード-コードは実行(必要に応じてランタイムを記述)し、最終的に停止し、ランタイムエラーをスローしません。 コードに特定のランタイムが必要な場合、使用される予約済みキーワードは、特定の環境でノーオペレーションであってはなりません。 予約済みキーワードのリスト コードスニペットを表示 await break case catch class const continue debugger default delete do else enum export extends finally for function if implements import in instanceof interface let new package private protected public return static super switch this throw try typeof var void while …

9
シフト指向プログラミング
文字列は可能なシフト数でnバイト値取得することでc、文字列内の各文字のを計算(c + n) mod 256し、文字に結果バックを変換します。 例として、"ABC123"1 "BCD234"シフトすると、で10 "KLM;<="シフトし、255でシフトし"@AB012"ます。 タスク できるだけ多くの数字nを選んで、0 < n < 256入力として文字列を受け取るプログラムまたは関数を記述し、 ソースコードが変更されていない場合、文字列を変更せずに返しますが、 は、nソースコードがだけシフトされたときにシフトされた文字列を返しますn。 ルール 提出のスコアは、サポートされる数でありn、スコアが高いほど優れています。したがって、最大スコアは255です。 提出は少なくとも1つのシフトをサポートする必要があるため、最小スコアは1です。 同点の場合、短いプログラムが勝ちます。 シフトされたプログラムはすべて同じ言語である必要があります。

27
自己成長コードcodee codeee codeeee
プログラム(または関数)を作成します(P1と呼びましょう)。実行すると、同じ言語で、P1より正確に1バイト長い別のプログラムP2を出力します。 プログラムP2を実行すると、P2より1バイト長い3番目のプログラムP3が出力されます。P3は、P3などよりも1バイト長いプログラムP4を出力する必要があります。P5、P6、...、P∞についても同じです。 プログラムチェーンは無期限に、またはインタープリターがもう処理できない場所に移動する必要があります(ただし、言語では理論的に有効なプログラムのままでなければなりません) ルール 禁止されている標準的な抜け穴 チェーン内のすべてのプログラムは1つの言語である必要があります 入力はありません。出力は標準出力または関数の戻り値になります プログラムは一定期間後に終了する必要があります。特定のタイムスポットの後に出力の生成を停止するプログラムは、終了しない 各言語のバイト単位の最短プログラムP1が勝ちます!
41 code-golf  quine 

30
文字列をデコードする
これは、ppcgに対する私の最初の挑戦です! 入力 2つの異なるASCII文字で構成される文字列。例えば ABAABBAAAAAABBAAABAABBAABA チャレンジ タスクは、これらの規則に従ってこの文字列をデコードすることです。 最初の2文字をスキップします 残りの文字列を8文字のグループに分割します 各グループで、各文字を0元の文字列の最初の文字と同じ場合は各文字に置き換え、そうでない場合は各文字を置き換え1ます 各グループは1バイトを表します。各グループをバイト文字コードから文字に変換します すべての文字を連結する 例 上記の文字列をデコードしましょう。 AB AABBAAAA AABBAAAB AABBAABA ^^ ^ ^ ^ | | | | | \---------|---------/ | | Skip Convert to binary これAが元の文字列の最初の文字でBあり、2番目の文字であることに注意してください。そのため、それぞれ置き換えるAと0、それぞれをBして1。今、私たちは取得します: 00110000 00110001 00110010 これは[0x30, 0x31, 0x32]バイナリです。これらの値は["0", "1", "2"]それぞれ文字を表すため、最終的な出力はである必要があります012。 得点 これはもちろんcode-golfであり、コードをできるだけ短くすることを意味します。スコアはバイト単位で測定されます。 制約とIOフォーマット 標準ルールが適用されます。追加のルールは次のとおりです。 有効な入力を想定できます 入力文字列は正確に2つの異なる文字で構成されます 最初の2文字は異なります 入力文字列の最小長は2文字です …
41 code-golf  string 

21
数字を覚えやすい
覚えやすいが、理論的には簡単に作成できない数字 あなたの課題は、これらの基準に適合する一様な乱数を生成する任意の言語でプログラム/関数を作成することです。 長さは5桁です 2つの別々の繰り返される数字のペアがあります 繰り返される数字の1つのセットは先頭または末尾にあり、数字は隣り合っています 奇数番号は他の数字のペアで囲まれています 2桁のペアと他の番号はすべて一意でなければなりません あなたのプログラムは、あなたの裁量で、先頭にゼロを付けても付けなくてもかまいません。先行ゼロがサポートされている場合、出力に含める必要があります:6088ではなく06088。先行ゼロがサポートされていない場合、06088などの数値はまったく生成されません。 テストケース 受け入れられる出力: 55373 55494 67611 61633 09033 99757 95944 22808 65622 22161 受け入れられない出力: 55555 77787 85855 12345 99233 12131 アブデ 5033 このpastebinリンクで、より受け入れられるテストケースを見つけることができます。 これらは、このpythonプログラムで作成されました。 ランダムにインポート 範囲(100)のiの場合: if random.randint(0,100)> = 50:#trueの場合、最初にペアをタッチする temp = [] #working array temp.append(random.randint(0,9))#ランダムな数字を追加 temp.append(temp [0])#同じ数字を再度追加 x = random.randint(0,9) 一方、x == …

25
熱いのでドロップソーティング
この質問で説明されているように: David Morgan-Marによって設計されたDropsortは、実際にはソートされているが、元の要素の一部のみを含むリストを生成する線形時間「ソートアルゴリズム」の例です。少なくともその前の要素の最大値よりも大きくない要素は、単にリストから削除されて破棄されます。 テストケースの1つを使用するに{1, 2, 5, 4, 3, 7}は{1, 2, 5, 7}、yieldsの入力としてas 4およびasの3両方が、以前に「ソートされた」値より小さいためにドロップされます5。 「ソート」アルゴリズムが必要なわけではありません。それが本物であることを望んでいます。したがって、数値のリストを指定して、DropSortedリストのリストを出力するプログラムを作成してください(完全なソートアルゴリズムであるために、これらのリストをマージする必要がありますが、 2つのソートされたリストのマージは以前に行われ、もう一度行うように依頼することは、2つの質問をすることとほぼ同じです。したがって、この質問は、具体的には完全なDropSortの「分割」ステップです。 ただし、リストの配置と内容は非常に重要です。プログラムの出力は、DropSortの出力と同等であり、その後に破棄された値のDropSortが続き、ソートされたチェーンのリストのみになるまで続きます。繰り返しますが、既存のテストスイートを借用します(さらに2つ追加します)。 Input -> Output {1, 2, 5, 4, 3, 7} -> {{1, 2, 5, 7}, {4}, {3}} {10, -1, 12} -> {{10, 12}, {-1}} {-7, -8, -5, 0, -1, 1} -> {{-7, -5, 0, 1}, …

30
うさぎのようにスキップ!
任意の妥当な形式の非負整数のリストが与えられたら、それを繰り返し、あなたが踏むすべての整数が言う数の要素をスキップします。 これが実際の例です: [0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | [] ^ First element, always include it [0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | [0] ^ Skip 0 elements [0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | [0, 1] ^ …

11
10進数の干し草の山でバイナリ針を見つける
挑戦 あなたが与えられている: 正の整数の空ではない、ソートされていないリストh(haystack) 正の整数n(針) あなたの仕事は、バイナリ表現がnのバイナリ表現を含むhの順列のすべての一意の 10進連結のリストを返すことです。 例 h = [1、2、3] n = 65 一致する連結は1つしかないため、予想される出力は[321]です。 h = [1、2、3] n = 7 今回は、バイナリパターン111を含む3つの連結があります。予想される出力は[123, 231, 312]です。 h = [12、3] n = 7 2つの順列のみが使用可能で、両方が一致しています。予想される出力は[123, 312]です。 h = [1、2、2] n = 15 唯一のマッチング連結である122(1111010含むバイナリで1111予想出力されるように、) [122]。2つの順列は実際には122になりますが、出力することはできません[122, 122]。 明確化と規則 針は、整数(65)、10進数値を表す文字列()、"65"または2進値を表す文字列("1000001")として使用できます。 haystackは、ネイティブ配列/オブジェクト/整数のセット([11,12,13])、ネイティブ配列/オブジェクト/ 10進値を表す文字列のセット(["11","12","13"])、または10進値の区切り文字列("11 12 13"または"11,12,13")として取得できます。数字の配列(など[[1,1],[1,2],[1,3]])を使用してバリアントを選択することもできます。 出力は、上記のhaystackの形式のいずれかに従う必要がありますが、必ずしも同じ形式である必要はありません。 最高の10進連結が、言語で表現可能な最高の符号なし整数より大きいhaystacksを処理することは想定されていません。 それとは別に、十分な時間とメモリが与えられていると仮定すると、コードは理論的にはすべての入力をサポートする必要があります。 これはスパルタです! …

30
これは最終的に停止します…
入力文字列を指定すると、次のようSにprintのS後に空でない区切り文字が続きます。 ステップ1:S持って1/2印刷されているの機会、および1/2終了するプログラムのためのチャンスを。 ステップ2:S持って2/3印刷されているの機会、および1/3終了するプログラムのためのチャンスを。 ステップ3:S持って3/4印刷されているの機会、および1/4終了するプログラムのためのチャンスを。 … ステップはn:S持ってn/(n+1)印刷されているの機会、および1/(n+1)終了するプログラムのためのチャンスを。 ノート 入力文字列は、言語の文字列タイプで受け入れられる文字のみで構成されます。 常に同じである限り、空でないセパレータを使用できます。Sプログラムが終了する前の最後の印刷の後にセパレーターが印刷されることが期待されます。 プログラムは、1/2何かを印刷する前に終了する可能性があります。 末尾の改行は許容されます。 あなたの答えは、記述された確率を尊重する真の試みをしなければなりません。明らかに、n大きい場合、これはますます真実になります。回答で確率がどのように計算されるのか(および、それらが仕様を尊重し、疑似乱数性と大きな数の問題を無視する理由)の適切な説明で十分です。 得点 これはcode-golfであるため、バイト単位の最短回答が優先されます。

25
コンソールの寸法を教えてください!
任意の2桁の10進数形式での出力端末の寸法(列と行)*。たとえば、出力は次のようになります80x25。 インスピレーション。プロンプト。 *出力には、1つまたは2つの連続する行に両方のメジャーが必要です。また、出力の先頭および/または末尾の行は1つだけです(オプションで改行が続く場合があります)。(最大4)行は、max(cols、1 + len(str(cols))+ len(str(ro‌ ws)))より長くてはなりません。
41 code-golf 

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