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

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

19
長さのn倍を印刷するプログラムを生成する
非負の整数を指定するnと、ソリューションは、選択した言語でプログラムを出力する必要があります。その出力にはn、出力されるプログラムのバイト数の倍のバイトがあります。 ルール ソリューションが出力するプログラムの言語とエンコードを指定する必要があります。また、ソリューションへの異なる入力に対して異なる言語またはエンコードを選択することはできません。出力プログラムの言語は、ソリューションの言語と同じ場合と異なる場合があります。 あなたの提出はあなたの言語の範囲内の整数を処理する必要があるだけですが、この規則を乱用しないでください。 これはコードゴルフなので、バイト単位での最短の提出が勝ちです。 例 n4 と仮定します。その後f_8、私のソリューションは、(想像上の)言語で出力するプログラムを出力しますj3 1s+/2]!mz。プログラム出力の長さは3で、出力の長さは3 * 4 = 12なので、入力4の解は正しいです。 代わりに、それnが1で、私のプログラムが出力すると仮定しますffffpfpffp(10バイト)。ffffpfpffp選択した言語のプログラムは、10 * 1 = 10バイトの出力を生成する必要があります。
16 code-golf  quine 

14
ネクタイ付きマリオカートスコアリング
私はこのサイトのために作っている別の挑戦に取り組んでいる間、この問題に遭遇しました。そのチャレンジでは、「マリオカート8スコアリング」を利用します。k位のプレーヤーが獲得するポイントの量は、この1インデックス配列[15,12,10,9,8,7,6,5,4,3,2,1]で表されます。したがって、1位には15ポイント、2位には12ポイントなどが割り当てられます。 このようにポイントを割り当てるのは十分簡単ですが、トリッキーな部分にはタイの処理方法が付属しています。私がしていることは、各タイイングプレイヤーに各タイイングプレイスに与えられたポイントの平均を与えることです。たとえば、1番目と2番目だけが同点の場合、両方のプレイヤーは(15 + 12)/ 2 = 13.5ポイントを獲得します。(注:最も近い整数に丸めることができるため、13または14の両方を使用することもできます。)3位から12位までは、通常の位置のポイントを獲得します。 チャレンジ 12個の非負の整数スコアが徐々にソートされている場合、各プレーヤーが獲得するポイント数を出力します。入力としてポイントリスト[15,12,10,9、...]を使用することもできます。各プレイヤーが獲得するポイントの数は、スコアの実際の値ではなく、他のスコアとの比較方法に依存することに注意してください。 テストケース 【21,21,15,14,12,9,6,5,4,3,2,1] => [ 14,14、10,9,8,7,6,5,4,3,2、 1] 【20,15,15,15,10,9,8,7,6,5,4,3] => 15、10,10,10、8,7,6,5,4,3,2、 1] 説明:(12 + 10 + 9)/ 3 = 10.3333 [1,1,1,1,1,1,1,1,1,1,1,1,1] => [ 7,7,7,7,7,7,7,7,7,7,7、 7 ] 説明:(15 + 12 + 10 + 9 + 8 + 7 + 6 + 5 + 4 …

24
連結された三角形の行を合計します
次の三角形を考えてください。 1 23 456 7891 01112 131415 1617181 92021222 324252627 2829303132 33343536373 839404142434 4454647484950 51525354555657 585960616263646 5666768697071727 37475767778798081 お気づきのとおり、最初の行の長さは1で、その後の各行は前の行よりも1桁長く、連結された正の整数の桁が含まれています。 整数Nが与えられます。あなたの仕事は、上の三角形のN番目の行にある数字の合計を見つけることです。 ルール 0または1のインデックス作成を選択できます。答えにそれを明記してください。 デフォルトの抜け穴が適用されます。 入力を取得し、任意の標準手段によって、適切な形式で出力を提供できます。 これはOEIS A066548であり、このシーケンスは三角形自体です(ただし、先行ゼロを削除しないことを除く)。 これはcode-golfなので、バイト単位の最短コード(すべての言語で)が勝ちます。ゴルフをお楽しみください! テストケース Input | Output 0 | 1 1 | 5 2 | 15 3 | 25 4 | 5 5 | 15 6 …

20
セル表記を列挙する
したがって、スプレッドシートの「A1」セル表記に慣れ親しんでいることを願っています。 これは、グリッド内のセルの位置の英数字表現です。文字はセルの列の位置を表し、数字は行を表します。 「文字」部分は、26文字の英字アルファベットの1文字以上で構成できます。これらはすべて大文字でなければなりません。これらは、26進全単射記数法を使用して数値にマッピングされます。「数値」部分は、ゼロ以外の正の整数で構成できます。 チャレンジは、任意のセルのA1表記を単一の文字列として指定するプログラムを作成し、数値として表される列位置、その後にスペース、次に行番号を含む文字列を出力できます。 以下のサンプル入出力: A1 >>1 1 B10 >>2 10 AC4 >>29 4 AAC753 >>705 753 F123 >>6 123 GL93 >>194 93 これが私の最初の課題です。したがって、基準の相対的な単純さと潜在的な欠陥です。 編集:文字列は数字に続く数字でなければならず、勝ちの基準は最短のコード長です(それが問題になる可能性がある場合) 編集:これに関連しますが、異なる開始インデックスで逆のプロセスを行います。この事実がリンクされたパズルをより面白くすると主張する人もいるかもしれません。

6
ダブルスリット実験
怠zyな物理学者は、二重スリット実験を実行する仕事を持っています。ただし、それらは怠け者であり、すべての機器をセットアップすることに煩わされることはないため、エフェクトをシミュレートします。彼らはプログラムできないので、いくつかの助けが必要になります。怠laなので、プログラムはできるだけ短くする必要があります。 奇数の正の整数n(n >= 1およびn % 2 == 1)を指定して、シミュレーションを実行します。 使い方 空のキャンバスから始めて、各フレームの光の粒子がスリットを通過してキャンバスに着地します。パーティクルは次の機会に最大値に到達します: n = 1: +-----+ | | | 1/2 | | | +-----+ n = 3: +-----+ +-----+ +-----+ | | | | | | | 1/4 | | 1/2 | | 1/4 | | | | | | | +-----+ …

16
パーティションはいくつありますか?
正の整数のパーティション番号は、正の整数の合計として表現できるウェイの数として定義されます。言い換えれば、それが持っている整数パーティションの数。たとえば、番号4には次の部分があります。 [[1、1、1、1]、[1、1、2]、[1、3]、[2、2]、[4]] したがって、5パーティションがあります。これはOEIS A000041です。 仕事 与えられた正の整数Nは、そのパーティション番号を決定します。 すべての標準ルールが適用されます。 入力および出力は、合理的な手段で処理できます。 これはcode-golfであるため、バイト単位の最短コードが優先されます。 テストケース 入力| 出力 1 | 1 2 | 2 3 | 3 4 | 5 5 | 7 6 | 11 7 | 15 8 | 22 9 | 30 10 | 42

15
どこかに行って!No-1's Here!
私はいくつかの数字で遊んでいて、もちろんOEISにあるシーケンスを見つけました。それはあるA005823:その三拡張なし1つのが含まれていない数字。それは行く: a(2n)= 3 * a(n)+2 a(2n + 1)= 3 * a(n + 1) a(1)= 0 a = 0,2,6,8,18,20,24,26,54 .... 最初のnを生成するCJamプログラムを作成しましたインデックスをバイナリに変換し、1を2に置き換え、3進数から10進数に変換することにより、これらの数値の。 また、シーケンス内の2つの数値(場合によってはそれ自体の数値)の合計を取ることで、偶数を取得できることにも気付きました。 チャレンジ: 入力として負でない偶数を指定すると、合計するシーケンス内の2つの数値のインデックスを出力します。(複数のペアが可能な場合があることに注意してください。) ルール: 0または1のインデックスを使用するかどうかを指定します。 文字列として出力する場合は、2つのインデックスの間に区切り文字を入れます。 複素数として出力できます。 必要に応じて、すべての有効なペアを出力できます。 コードゴルフ:最短回答が勝ちます テストケース 0インデックスを使用します。ここでは、各入力に対して可能なすべての出力をリストしますが、出力する必要があるのは1つだけです。 0: [0 0] 2: [1 0] 4: [1 1] 6: [2 0] 8: [2 1] [3 0] 10: [3 …

9
無限の連鎖を作る
関数のクラスを定義しましょう。これらの関数は、正の整数から正の整数にマップし、次の要件を満たしている必要があります。 この関数は全単射である必要があります。つまり、すべての値が正確に1つの値にマッピングされ、マッピングされます。 関数またはその逆を繰り返し適用することにより、正の整数から他の正の整数に到達できる必要があります。 次に、入力でこのクラスの任意の1つの機能を実行するコードを作成します。 これはコードゴルフの質問なので、回答はバイト単位でスコアリングされ、バイト数が少ない方が良いでしょう。
16 code-golf  math  number 

7
完全な正方形のみを含むパーティションはいくつありますか?
非負の整数または数字のリストが与えられた場合、先行ゼロが含まれる可能性のある平方数を連結することで、いくつの方法で数を形成できるかを決定します。 例 input -> output # explanation 164 -> 2 # [16, 4], [1, 64] 101 -> 2 # [1, 01], [1, 0, 1] 100 -> 3 # [100], [1, 00], [1, 0, 0] 1 -> 1 # [1] 0 -> 1 # [0] 164900 -> 9 # [1, 64, …

10
リスクバトル:ダウンする
Riskでの戦闘のための2つのサイコロのリストを考えると、プログラムまたは機能は、各プレイヤーが失う軍隊の数を出力する必要があります。 バックグラウンド あなたはこれを読む必要はありません。それは単なる背景です。「タスク」の小見出しにスキップして、衰えずに続行します。 リスクのゲームでは、1人のプレイヤーが別のプレイヤーを攻撃できます(実際、これは勝つために必要です)。戦闘の結果は、サイコロの出目によって決まります。すべてのバトルは、各プレイヤーが最大で負けるサブバトルの連続として発生します2で軍隊のピースます。 サブバトルでは、ディフェンダーとアタッカーはそれぞれ、このチャレンジとは無関係の状況に基づいて数が異なる可能性のあるいくつかのサイコロを振ります。攻撃者の最も価値のあるダイスは、防御者の最も価値のあるダイスと比較されます。攻撃者のダイスが防御者のダイスよりも高い場合、防御者は1ピースを失います。それ以外の場合、攻撃者は1つのピースを失います。 次に、両方のプレイヤーが少なくとも2つのサイコロを持っている場合、2人のプレイヤーの2番目に高いサイコロが比較されます。繰り返しますが、攻撃者のダイスが防御者のダイスよりも高い場合、防御者は1ピースを失います。それ以外の場合、攻撃者は1つのピースを失います。 (防御側が同点を勝ち取ります。防御側と攻撃側の両方がをロールした4場合、攻撃側は駒を失います。) ウィキペディアの記事のこのサブバトルでは、攻撃者のサイコロは赤で、防御者のサイコロは白です。攻撃者のサイコロ4の最高値はであり、防御者のサイコロの最高値は3です。攻撃側の方が高かったため、防御側はピースを失います。二番目に高い3、攻撃者と2防御者です。攻撃者が再び高くなったため、防御者は別のピースを失います。したがって、このサブバトルでは、攻撃者はピースを失いませんし、防御者は2ピースを失います。 3番目に高い部分は比較されないことに注意してください。これは、ディフェンダーが1つのサブバトルで2つ以下のサイコロを持っているため、これまでに比較する3番目に高いピースがないためです。 仕事 リスクのサブバトルの攻撃者と防御者の両方の任意の便利な形式の未分類のサイコロ(1〜6の範囲の整数)を考慮して、各プレイヤーが失う軍隊の数を出力します。5つの可能性を示すさまざまな出力がある限り、出力は任意の便利な形式にすることができます。質問には、これらの異なる出力が何であるかを示す必要があります。 出力は次のように決定されます。開始とdef=0とatk=0。攻撃者のさいころのリストの最大値が、防御者のさいころのリストの最大値よりも大きい場合、増分しますdef。それ以外の場合、インクリメントしますatk。 サイコロの両方のリストの長さが少なくとも2である場合:攻撃者のサイコロのリストの2番目に大きい値がリストの2番目に大きい値よりも大きい場合、インクリメントしdef、そうでなければインクリメントするatk。 最後に、プログラムまたは関数は、次の5つの出力候補のそれぞれに対して一意の識別子を出力する必要があります。 ╔═══╦═══╗ ║atk║def║ ╠═══╬═══╣ ║ 1 ║ 0 ║ ║ 0 ║ 1 ║ ║ 2 ║ 0 ║ ║ 1 ║ 1 ║ ║ 0 ║ 2 ║ ╚═══╩═══╝ 例 防御者:[3, 2] 攻撃者:[2, 4, 1]防御3者の最大値と攻撃者の最大値はです4。4>3のでdef=1 、防御側の22番目は攻撃側の2番目です2。Not(2>2)、そうatk=1。出力は次のようになります[1,1]。 …

2
花火を見せて!
与えられた、任意の方法と順序で、 寸法(任意の順序) 確率(任意の形式) 反復回数(初期状態をカウントするかどうかを選択できます) やる1以下のを: アニメート、または 各ステップを出力する、または の状態のリストを返します それらの次元の空間で満たされた空。 反復ごとに: すべての空のキャラクターは、 * ただし、星にならない場合は、周囲の8文字がに*なり \ | / - - / | \ますが、 文字が2 *の範囲内にある場合、それをX 例 7×22の空(わかりやすくするためにフレームを表示-フレームを出力しない) ┌──────────────────────┐ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └──────────────────────┘ 1%の確率で ┌──────────────────────┐ │ * │ │ │ │ │ …

11
2D分割累積合計
チャレンジ 行列の所与のMとr個の行とCの列、及び2つのブールリストV長さのR及びH長さのC、分配累積垂直方向と水平方向の和を計算します。 ルール rおよびcは1以上 HとVは真の値で始まります Mの値は、言語の合理的な数値領域内にあります。 パーティション化と加算は左上隅から始まります。 歩く 与えられたM: ┌──────────────┐ │ 1 2 3 4 5│ │ 6 7 8 9 10│ │11 12 13 14 15│ │16 17 18 19 20│ └──────────────┘ H:1 0 1 0 0 V:1 1 0 1 Mを列のグループに分割し、Hの真の値ごとに新しいグループを開始します ┌─────┬────────┐ │ 1 2│ 3 4 5│ …

2
各フィールドサイズのプリミティブ要素を出力する
原始有限フィールドのフィールドの乗法群の生成元です。つまり、alphain F(q)は、in q−1の単一性の原始thルートである場合、原始要素と呼ばれF(q)ます。これは、のすべての非ゼロ要素を何らかの(正の)整数F(q)として記述できることを意味します。alpha^ii フィールドのすべての要素がF_{2^k}高々度の多項式として書くことができるk-1のいずれかである係数を持ちます1か0。これは完全なものにするために、あなたのコードも出力する必要がある既約多項式次数のk使用しているフィールドを定義します。 タスクはF_{2^k}、それぞれk = 1 .. 32に選択したプリミティブ要素を順番に出力するコードを書くことです。 出力は、単純kな要素の係数を任意の形式で単純にリストし、k+1さらに既約多項式の要素を別の行にリストする必要があります。k可能であれば、各値の出力を分離してください。 コードは好きなだけ時間がかかりますが、回答を送信する前にコードを最後まで実行する必要があります。 有限フィールドのプリミティブ要素を返す、または要素がプリミティブであるかどうかをテストする組み込み関数またはライブラリ関数を使用することはできません。 例 以下のためにk = 1のみ原始元です1。 以下のためにk = 2、私たちは持っています F_4。4つの要素がある{0, 1, x, x + 1}ため、2つのプリミティブ要素xとがありx + 1ます。したがって、コードは出力できます 1 1 1 1 1 例えば係数として、2行目は既約多項式で、この場合はx^2+x+1係数を持ち1 1 1ます。

4
清らかな世界をやめる
この挑戦はHelka Hombaの質問 " 原始世界のプログラミング "に基づいています。その質問から、初期のプログラムの定義は次のとおりです。 そのままのプログラムを、それ自体にエラーはないが、N文字の連続する部分文字列を削除して修正するとエラーになるプログラムとして定義してみましょう1 <= N < program length。 たとえば、3文字のPython 2プログラム `8` 長さ1の部分文字列を削除した結果、すべてのプログラムでエラーが発生するため(実際には構文エラーですが、あらゆるタイプのエラーが発生するため)、初期のプログラム(ありがとう、Sp)です。 8` `` `8 また、長さ2の部分文字列を削除した結果、すべてのプログラムがエラーを引き起こします。 ` ` たとえば、エラーのない`8プログラムであった場合、部分文字列の削除の結果はすべてエラーになる必要がある`8`ため、初期状態ではありません。 ノート: コンパイラの警告はエラーとしてカウントされません。 エラーが発生したサブプログラムは、最終的にはエラーにならない限り、入力を取得したり、出力したり、他のことを実行したりできます。 あなたの仕事は、独自のソースコードを正確に印刷し、適切なquineのルールに従い、初期状態である、長さがゼロでないプログラムを作成することです。 各言語のバイト単位の最短回答が優先されます。

3
MacGyverの2番目のツールボックス
この質問では、各回答はプログラム/機能を構築するために使用できる「ツールボックス」を取得します。ツールボックスは次の2つの要素で構成されます。 プログラミング言語のリスト 有効な文字のリスト ツールボックスの文字のみを使用して、提供されている言語のいずれかで有効なプログラム/関数を作成する必要があります。プログラム/関数は、この質問に既に存在する回答の数を出力する必要があります。 回答を作成して投稿すると、使用した言語と文字がツールボックスから削除され、次の回答のツールボックスとして使用される新しい言語と新しい文字がランダムに追加されます。 ルール それぞれの答えは: その前に来る有効な回答の数を出力する その回答のツールボックスで提供される文字のサブセットが含まれています。(繰り返し可能) 提供されたツールボックスの言語のいずれかである 次のツールボックスは、この pythonプログラムによって決定されます。次のツールボックスを生成するには、最後の回答の投稿IDとともに残りの言語と文字を入力します。 ここの言語リストは、この投稿の時点でオンラインで試すことができるすべての言語です。文字の文字コードは0〜127です。 完全なプログラムまたは関数のいずれかを回答として作成できます。REPLは異なる言語であるため、許可されません。(すべての言語のTIOバージョンを使用) 言語が特殊なエンコードを使用する場合、文字はバイトとして解釈される必要があります(ASCIIからデコードされ、ゼロが埋め込まれます)。 開始ツールボックスは、この質問の投稿ID(128464)からランダム化されます。開始する言語は7つありechoprint0、無料でキャラクターとascii 0-31を追加してユーザーを開始します。 連続して2回答えてはいけません 得点 人が答えるたびに、答えに対して多くのポイントを獲得します。目標は、できるだけ多くのポイントを獲得することです。言語Xでの回答については、ツールボックスで言語Xが未使用になった回数だけ取得します。たとえば、言語がツールボックスに追加されたばかりなので、最初に回答した人は1ポイントを獲得します。必ずしも終わりがあるわけではなく、私は答えを受け入れません。 スポーツ これはコンペティションですが、競争力を維持しながら、勝つことよりも楽しいことをお勧めします(もし勝ちの基準を「楽しい」にしたいなら)。面白くないもの: 意図的にキャラクターを使用すると、将来の回答を気にする必要はありません。 ポストIDシステムをゲーム化して、将来のツールボックスを使いにくくすることを試みています。 将来のツールボックスを使いやすくするために、ポストIDシステムをゲームにしようとしています。 私は誰もこれらのことをするのを防ぐことはできませんが、私がこれをしていると思われる答えを否定します。 よりポジティブな注意として、ここには良いスポーツで奨励されているものがいくつかあります: チャットで他のユーザーと調整します。 より厳しいまたはより制限の厳しい言語の文字を保存する これはここで見つけられた挑戦の2回目の反復です。最初の問題を改善します。これらの質問を議論するメタがここにあります。

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