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

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

30
eの近似
eで表される、変数xの累乗に対するオイラーの数は、Maclaurin級数展開を使用して近似できることは誰もが知っています。 xを1に等しくすることにより、 チャレンジ 入力Nを取り込み、N番目の項までの系列を計算することにより、オイラーの数を近似する任意の言語でプログラムを作成します。最初の項の分母は0!であり、1!ではないことに注意してください。つまり、N = 1は1/0!に対応します。 得点 最小バイト数のプログラムが優先されます。

24
10ピンボウリングスコア-ワールドボウリングエディション
ワールドボウリングの得点 多くの人が地元のボウリングセンターに行ってボウリングのゲームを数回行っており、多くの人がスコアの計算に苦労しています。ワールドボウリングは、より多くの人々をスポーツに引き付けるために、単純化されたスコアリングシステムを導入しました。このスコアリングシステムは、国際的なゲームで利用されています。 スコアリングシステムは次のように機能します(Wikipediaから)。 「現在のフレームスコアリング」[32]と呼ばれるワールドボウリングスコアリングシステムは、次のようにピンを授与します。 ストライク:30(ロールの結果に関係なく) スペア:10プラス現在のフレームの最初のロールのピンフォール オープン:現在のフレームの合計ピンフォール 10ピンボウリングに慣れていない場合は、ここで要約します。 ボウリングレーンの端には10本のピンがあり、ゴールはそれらすべてをボウリングボールで倒すことです。ボールを2回ロールして、それらをすべてノックダウンしようとします。できれば、最初のロールでそれらをすべてノックダウンしてください(ストライクとして知られています)。ストライクをした場合、そのフレームは完成しているので、ボールをもう一度転がす必要はありません。ストライキは30の価値があります。 10個すべてをノックダウンしなかった場合、もう1回ロールします。残りのピンをすべてノックダウンすると、スペアとして知られています。スコアは10ピン+最初のロールでノックダウンされたピンの数に相当します。たとえば、7つのピンをノックダウンした場合、残りの3つをノックダウンできたので、17の価値があります。 2回目のロールの後、10個すべてをノックダウンできない場合、それはオープンフレームとして知られています。スコアは、そのフレームでノックダウンされたピンの総数に相当します。 ゲームには10個のフレームがあります。従来のボウリングスコアリングに精通している場合、ワールドボウリングスコアリングで10番目のフレームに余分なロールはありません。従来のボウリングスコアリングでは、300の完全なスコアを得るには12回連続でストライクが必要でしたが、ワールドボウリングスコアリングでは10回の連続ストライクしか必要ありません。 チャレンジ あなたの課題は、スコアシートから値を与えられたスコアを計算することです。 スコアシートでは、ミスはダッシュ(-)、ストライクはX、スペアはスラッシュ(/)で示されます。これらが当てはまらない場合、ピンフォールカウントは単に数字(1-9)で示されます。ファウルとスプリットもスコアシートに記録されますが、これらについて心配する必要はありません。 入力 各フレームのスコアで構成される文字列が与えられ、合計10フレームになります。各フレームには最大2つの値があり、ストライクが発生した場合は1つの値になります。入力は、関数への文字列パラメーター、ファイル、またはSTDINから読み取ることができます。 たとえば、最初のロールで1つのピンをノックダウンしてから2をノックダウンすると、フレームは「12」のようになります。これは12(12)を意味するのではなく、1と2を意味し、合計3です。 両方のロール(ガターボール)ですべてのピンを見逃した場合、この「-」(スコア0)のように見えます。 各フレームはスペースで区切られます。 サンプル入力 -- 9- -9 X -/ 8/ 71 15 44 X この例を分解するには、 フレーム1(-)-両方のロールが失敗しました。0点数 フレーム2(9-)-最初のロールで9をノックダウンし、2番目のロールでミスしました。スコア9 フレーム3(-9)-1回目はすべて逃し、2回目は9回逃しました。スコア9 フレーム4(X)-ストライク、10個すべてをノックダウン。スコア30 フレーム5(-/)-スペア、最初はすべてミス、2回目はすべてノックダウン。スコア10 + 0 = 10 フレーム6(8 /)-スペア、最初のロールに8ピン、2番目のロールで他の2つをノックダウン。スコア10 + 8 = 18 フレーム7(71)-オープンフレーム、最初のロールに7ピン、2番目のロールに1ピン。スコア7 + 1 …

16
表現をシグマ化する
知らなかった人のために、シグマ はギリシャ語の文字であり、数学で加算記号として頻繁に使用されます。を表す依存する式を表す文字列が与えられた場合、各について結果の合計を計算します。簡潔には、次のようなを見つける必要があります。kkkE(k)E(k)E(k)E(k)E(k)E(k)k∈{1,2,3,4,5}k∈{1、2、3、4、5}k\in\{1,2,3,4,5\}SSS S=∑k=15E(k)S=∑k=15E(k)S=\sum^5_{k=1}E(k) 式の例:E(k)=k2+k2E(k)=k2+k2E(k)=\frac k 2 + k^2 スペック あなたは保証されています: 式が有効であるため、エラーが含まれておらず、選択した構文に依存していること(例:サポートしている場合のみ2*k、なし2k) あなただけの結果の中で値が定義されているので、のように何の値に1/0、infまたはがnan表示されません 上記の式は、選択したプログラミング言語の制限に適合しているため、オーバーフローやその他の制限に関連するエラーは発生しません。 代わりに他の非空白ASCII文字をk選択できます プログラムは次の操作をサポートする必要があります。 さらに(+、plus()、add()、sum()) 減算(-、minus()、subtract()) べき乗(**、^、pow()負塩基および指数に支持して、または他の指定されなければなりません) 形で平方根sqrt(k)、k^0.5、k**0.5あなたが望む、またはしかし、他 乗算と除算 提出は、完全なプログラムまたは機能のいずれかであり、その使用法について言及しています 出力時に、後続の/先頭の空白は許可されます 最小精度:小数点以下2桁 テストケース(with k) +---------------+--------------+ | Input = E(k) | Output | |---------------+--------------| |2*k | 30 | |---------------+--------------| |sqrt(k) | 8.38 | (* with minimum decimal precision) |---------------+--------------| |k+k/2+k**2 …

30
正方形を作ってみてください!
仕事 空白以外の印刷可能な文字を1つ指定して、その入力の3x3の正方形表現を作成します。たとえば、入力がの場合#、出力は次のとおりです。 ### # # ### ルール 出力形式は厳密ですが、末尾の改行を使用できます。つまり、中央にスペースが必要であり、3行を区切る2つの改行文字も必要です。 テストケース 入力: # 出力: ### # # ### 入力: A 出力: AAA A A AAA 入力: 0 出力: 000 0 0 000 得点 これはcode-golfです。バイト単位の最短回答が優先されます。

12
LípínguapuadopoPêpê
LínguadoPê、またはP Languageは、ブラジルとポルトガルでポルトガル語で話される言語ゲームです。オランダ語やアフリカーンス語など、他の言語でも知られています。(ウィキペディア) この言語ゲームにはいくつかの方言があります。ゲームで使用されるさまざまな言語には、独自の方言があります。一部の人々はP言語を話すことに堪能で、最高の人はその場で好きな方言にテキストを翻訳することさえできます! P言語 この課題では、Double Talk方言を使用します。 テキストをP言語に翻訳するには、テキスト内の母音のシーケンスに1 p文字を追加し、その後に母音のシーケンスのコピーを追加します。 チャレンジ 文字列を入力として受け入れ、その翻訳をP言語で出力する関数またはプログラムを作成します。 入力は、印刷可能なASCII文字のみで構成されます。 出力は、翻訳された入力とオプションで末尾の改行のみで構成されます。 母音は、次の文字のいずれかですaeiouyAEIOUY。 母音のシーケンスは、他の文字で区切られます。文字列に"Aa aa-aa"は3つの母音シーケンスがあります。 オプションで、変換された出力文字列から先頭と末尾の空白を省略できます。 例 "" => "" "Lingua do Pe" => "Lipinguapua dopo Pepe" "Hello world!" => "Hepellopo woporld!" "Aa aa-aa" => "AapAa aapaa-aapaa" "This should be easy, right?" => "Thipis shoupould bepe eapeasypy, ripight?" "WHAT ABOUT …
20 code-golf  string 

9
レーベンシュタインの隣人
ほとんどの平方数には、そのレーベンシュタイン距離が正確に1 である少なくとも1つの異なる平方数があります。与えられた平方xxx、この条件を満たす各平方はxのレーベンシュタイン近傍と呼ばれます。たとえば、はレーベンシュタインネイバーです。1つの編集()のみが必要です。ただし、は最低2回の編集が必要なため、レーベンシュタインネイバーではありません。先頭に0が付いている数値()は、レーベンシュタインの隣人ではありません。xxx3636361616161→31→31 \to 36464641616162025→0252025→0252025 \to 025 あなたの仕事は、入力として平方数を取り、その合理的なフォーマットで、レーベンシュタインの隣人の完全なリストを出力することです。必要に応じて、リストにリピートネイバーを含めることができますが、元の入力は、それ自体のレーベンシュタインネイバーではないため、含めることはできません。 合理的な形式では、出力,や改行などの出力の間に何らかの区切り文字を含める必要があり、数字自体ではなく、対応するUnicode値(つまりBrainfuck)を持つ文字を出力できます。出力の順序は関係ありません。 この入力は、常により大きい平方数になり。プログラムには理論的な制限はありませんが、実際的な理由(たとえば32ビット数を超える)で大きな数で失敗する場合は、まったく問題ありません。000 入力にレーベンシュタインの隣人がいない場合、出力は何も出力しない、空の配列/文字列、負の整数、など、これを明確に反映する必要があります。000 これはcode-golfであるため、バイト単位の最短コードが優先されます。 テストケース これらはの正方形の結果です111にスルー202020: 1: 4, 9, 16, 81 4: 1, 9, 49, 64 9: 1, 4, 49 16: 1, 36, 169, 196 25: 225, 256, 625 36: 16, 361 49: 4, 9 64: 4 81: 1, 841 100: 400, 900, …

20
行列を2回並べ替える
あなたが正方形与えられる行列、リスト(またはベクトル)長さの数を含む介して(またはを介して)。タスクは、指定された順序に従って行列列と行を並べ替えることです。n×nn×nn \times nAAAuuunnn111nnn000n−1n−1n-1AAAuuu つまり、あなたがマトリックス構築物であろう番目の要素である番目の要素。このアクションの逆も出力する必要があります。つまり、の(i、j)番目の要素位置してしまう新しい行列にC。BBB(i,j)(i,j)(i,j)(u(i),u(j))(u(i),u(j))(u(i),u(j))AAAAAA(u(i),u(j))(u(i),u(j))(u(i),u(j))CCC たとえば、A=⎡⎣⎢112131122232132333⎤⎦⎥,u=[312]A=[111213212223313233],u=[312]A = \begin{bmatrix} 11 &12& 13 \\ 21& 22& 23 \\ 31& 32& 33 \end{bmatrix},\quad u=\begin{bmatrix}3 & 1 & 2\end{bmatrix} 出力はB=⎡⎣⎢331323311121321222⎤⎦⎥,C=⎡⎣⎢223212233313213111⎤⎦⎥B=[333132131112232122],C=[222321323331121311]B = \begin{bmatrix}33 & 31 & 32 \\ 13 & 11 & 12 \\ 23 & 21 & 22 \end{bmatrix},\quad C= \begin{bmatrix}22 & 23 & 21 …

9
反ったチェス盤
この課題は、以下で説明するように、正方形のサイズがボード全体で一定ではなく、一定の非減少シーケンスに従うチェス盤を構築することです。 ボードは繰り返し定義されます。サイズボードは、サイズの正方形の「レイヤー」で右下に拡張することにより、サイズに拡大されます。で、ははです。対角線上の正方形は常に同じ色です。n × nn×nn \times n(n + k )× (n + k )(n+k)×(n+k)(n+k)\times(n+k)kkkkkknnnn−−√n\sqrt{n} 具体的には、のように表さ色でボードを考える#と+。 チェス盤を初期化する # これまでのボードのサイズはです。の唯一の約数は、超えません。そこで、を取り、対角線上に、サイズの正方形のレイヤーを追加してボードを拡張します。1 × 11×11\times 11111111–√1\sqrt{1}k = 1k=1k=1111# #+ +# これまでに構築されたボードのサイズはです。の約数は、を超えない最大の約数はです。したがって、再びであり、ボードは2 × 22×22 \times 22221 、21、21,22–√2\sqrt{2}111k = 1k=1k=1 #+# +#+ #+# サイズはです。。にまで及びます3 × 33×33 \times 3k = 1k=1k=1 #+#+ +#+# #+#+ +#+# サイズはです。今ため、の最大除数でない超える。サイズ正方形で形成される厚さレイヤーで拡張し、対角線に色を付けます。4 × 44×44 \times …

8
アリスの最初のコードレビュー
アリスは、Brainfuckをクライアント側とサーバー側の両方の開発の主要言語として使用している会社のインターンです。アリスは最初のコードを書いたばかりで、最初のコードレビューの準備をしているので少し緊張しています。 アリスはコードを適切にフォーマットして見栄えを良くしたいと考えていますが、328ページの会社コードスタイルガイドを読む時間がないため、完全な正方形としてフォーマットすることにしました。残念ながら、正方形を形成するにはコード長が不十分な場合があるため、彼女は中央に長方形の隙間を残すことにしました。ギャップは完全に中央に配置され、可能な限り正方形に近い必要があります。 例 ++++++ +++++ +++++ +++++ +++++ +++++ ++++++ +++++ +++++ + ++ ++ ++ +++++ ++++++ ++ ++ + + + ++ + + ++++++ +++++ +++++ +++++ ++ ++ +++++ ++++++ +++++ +++++ +++++ +++++ +++++ Perfect OK Acceptable Unacceptable No way! Nope. Aliceを支援するプログラムまたは関数を作成します。Aliceのコードを入力文字列として指定し、可能であれば、以下で説明するように適切にフォーマットされたコードを出力します。フォーマットが不可能な場合、泣いている絵文字を出力します:~(。 これはコードゴルフなので、回答はバイト単位でスコアリングされ、より少ないバイトが目標になります。 制約 プログラムまたは関数は、単一の文字列を入力として使用し、1行以上のテキストを出力する必要があります(または、関数を実装する場合は、複数行の文字列または文字列の配列を返します)。 …

11
すべての正方形を爆発させる
あなたは幅の正方行列与えられている≥ 2≥2\ge2平方数含む、≥ 1≥1\ge1。 あなたの仕事は、すべての平方数がすべて消えるまで「爆発」させることです。最終マトリックスを印刷するか、返す必要があります。 すなわち: マトリックス内で最も高い正方形バツ2バツ2x^2を探します。 隣接する最小のnnn探します(水平方向または垂直方向に、ラップアラウンドなしで)。 置き換えバツ2バツ2x^2とバツバツxと置換nnnとn × xn×バツn\times x。 マトリックスに正方形がなくなるまで、ステップ1からのプロセスを繰り返します。 例 入力行列: (62519636324)(62536196324)\begin{pmatrix} 625 & 36\\ 196 & 324 \end{pmatrix} 最も高い正方形625625625は、√の 2つの部分に爆発します。625−−−√= 25625=25\sqrt{625}=25とその最小隣人と合流363636なり、36 × 25 = 90036×25=90036\times 25=900: (25196900324)(25900196324)\begin{pmatrix} 25 & 900\\ 196 & 324 \end{pmatrix} 最も高い正方形900900900爆発し、最小の隣接252525と結合します。 (75019630324)(75030196324)\begin{pmatrix} 750 & 30\\ 196 & 324 \end{pmatrix} 最高の正方形324324324が爆発し、最小の隣接303030と結合します。 (75019654018)(75054019618)\begin{pmatrix} 750 …
20 code-golf  matrix 

16
キューバのプライム
自然数を指定すると、番目のキューバプライムを返します。nnnnnn キューバのプライム キューバ素数は次の形式の素数です p=x3−y3x−yp=x3−y3x−yp = \frac{x^3-y^3}{x-y} ここで、およびまたはy>0y>0y>0バツ = 1 +yx=1+yx = 1+yx = 2 + yx=2+yx = 2+y 詳細 最適なものであれば、0または1ベースのインデックスを使用できます。 インデックスまたは最初の素数を昇順に指定して番目の素数を返すか、または素数を昇順で生成する無限リスト/ジェネレーターを返すことができます。nnnnnnnnn テストケース 最初のいくつかの用語は次のとおりです。 (#1-13) 7, 13, 19, 37, 61, 109, 127, 193, 271, 331, 397, 433, 547, (#14-24) 631, 769, 919, 1201, 1453, 1657, 1801, 1951, 2029, 2269, 2437, (#25-34) …

22
整数の回転位置
チャレンジ: 入力: 正の整数のソートされたリスト。 出力: 各整数の数字を左に向かってインデックスの回数だけ回転し、変更されたリストを再度並べ替えた後、まだまったく同じインデックスにある整数の量。 例: 入力:[8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788] 出力(0ベースのインデックス付け):6 出力(1ベースのインデックス付け):5 どうして? 0ベースのインデックス付け: After rotating each: [8,94,73,102,592,276,8227,3338,9217,63784,89487,7887471] Sorted again: [8,73,94,102,276,592,3338,8227,9217,63784,89487,7887471] Input indices: 0 1 2 3 4 5 6 7 8 9 10 11 Original input-list: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788] Modified list: [8,73,94,102,276,592,3338,8227,9217,63784,89487,7887471] Modified indices: 0 2 1 3 5 4 7 6 8 9 …

8
トーラス上のサイクル
チャレンジ この課題は、次の2つの整数を取り込んでプログラム書く必要がありますnし、mそして上の番号非交差ループを出力nすることによってmで起動することによって作られたトーラス(0,0)とステップのみを取って右へを。トーラスは、上部と下部、側面の両方にラップアラウンドしたグリッドと考えることができます。 これはコードゴルフなので、バイト数が最も少なくなります。 例 たとえば、入力がの場合n=m=5、1つの有効なウォークは (0,0) -> (0,1) -> (0,2) -> (1,2) -> (2,2) -> (2,3) -> (2,4) -> (2,0) -> (3,0) -> (4,0) -> (4,1) -> (4,2) -> (4,3) -> (0,3) -> (1,3) -> (1,4) -> (1,0) -> (1,1) -> (2,1) -> (3,1) -> (3,2) -> (3,3) -> (3,4) …

30
電気回路の並列抵抗
前書き: 2つの抵抗、R1およびR2、並列(で示されるR1 || R2)は、次のように結合された抵抗を持ちますRp。 RP2=R1⋅R2R1+R2RP2=R1⋅R2R1+R2R_{P_2} = \frac{R_1\cdot R_2}{R_1+R_2} またはコメントで提案されているとおり: RP2=11R1+1R2RP2=11R1+1R2R_{P_2} = \frac{1}{\frac{1}{R_1} + \frac{1}{R_2}} 3個の抵抗器はR1、R2とR3平行に(R1 || R2 || R3)合成抵抗を有しています(R1 || R2) || R3 = Rp || R3。 RP3=R1⋅R2R1+R2⋅R3R1⋅R2R1+R2+R3RP3=R1⋅R2R1+R2⋅R3R1⋅R2R1+R2+R3R_{P_3} = \frac{\frac{R_1\cdot R_2}{R_1+R_2}\cdot R_3}{\frac{R_1\cdot R_2}{R_1+R_2}+R_3} または、再びコメントで提案されたとおり: RP3=11R1+1R2+1R3RP3=11R1+1R2+1R3R_{P_3} = \frac{1}{\frac{1}{R_1} + \frac{1}{R_2}+ \frac{1}{R_3}} もちろん、これらの式は無制限の抵抗に拡張できます。 チャレンジ: 入力として正の抵抗値のリストを取得し、電気回路に並列に配置されている場合は合成抵抗を出力します。抵抗器の最大数を想定することはできません(もちろん、コンピュータがそれを処理できることを除いて)。 テストケース: 1, 1 0.5 1, 1, 1 …

17
整数からの平方根距離
10進数が与えられた場合、の平方根が整数の範囲内にkなるnような最小の整数を見つけます。ただし、距離はゼロ以外である必要があり、完全な正方形にすることはできません。nkn 与えられkた10進数または分数(どちらか簡単な方)、など、の平方根と平方根に最も近い整数の差がゼロ以下で0 < k < 1あるnように最小の正の整数を出力する。nnk iがの平方根に最も近い整数である場合n、最初のnwhereを探しています0 < |i - sqrt(n)| <= k。 ルール 言語の整数以外の数値の不十分な実装を使用して、問題を単純化することはできません。 それ以外の場合はk、浮動小数点の丸めなどの問題が発生しないと想定できます。 テストケース .9 > 2 .5 > 2 .4 > 3 .3 > 3 .25 > 5 .2 > 8 .1 > 26 .05 > 101 .03 > 288 .01 > 2501 .005 > 10001 …

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