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

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

4
ドミノタイルの数
与えられた正のことのプログラムや関数を書くのnおよびmは、あなたが合うことができる有効な個別のドミノタイリングの数を計算n個でm個の四角形を。これはシーケンスであるA099390における整数列のオンライン百科事典。関数の引数、CLA、または標準入力で、適切な形式で入力を受け取ることができます。単一の整数を出力として返すか印刷する必要があります。 各タイリングはギャップを残してはならず、回転、反射などを含むすべての個別のタイリングがカウントされます。たとえば、2x3のタイリングは次のとおりです。 |-- ||| --| |-- ||| --| 入力/出力の例: 1, 9 -> 0 2, 2 -> 2 2, 3 -> 3 4, 4 -> 36 4, 6 -> 281 6, 6 -> 6728 7, 10 -> 53175517 プログラムは理論的には任意のnおよびmで機能するはずですが、プログラムで必要なメモリが多すぎる場合やデータ型がオーバーフローする場合は、免除されます。ただし、プログラムはn、m <= 8 で正しく機能する必要があります。 バイト単位の最短コードが優先されます。

7
Digital River(最短かつ最速のソリューション)
これが最初の質問なので、うまくいきますように。 バックグラウンド: あなたが考えているのは川ではありません。問題は、デジタルリバーの概念に関係しています。デジタルリバーは、次の番号が数字のシーケンスでnあるnその数字のプラス合計。 説明: 1 + 2 + 3 + 4 + 5 = 15であるため、12345の後に12360が続き、12345 + 15は12360になります。同様に、145の後に155が続きます。デジタルリバーの最初の数がの場合、Mこれをriverと呼びますM。 たとえば、川480は{480,492,507,519 ....}で始まるシーケンスであり、川483は{483,498,519、....}で始まるシーケンスです。通常の河川と河川は合流することができ、デジタル河川にも同じことが言えます。これは、2つのデジタル河川が同じ値のいくつかを共有している場合に発生します。 例: 480川は519で483川と合流します。480川は507で507川と合流し、481川とは合流しません。すべてのデジタル川は最終的に1川、3川、または9川に合流します。 与えられた整数nに対して、川nがこれら3つの川の1つに最初に出会う場所の値を決定できるプログラムを記述します。 入力 入力には複数のテストケースが含まれる場合があります。各テストケースは個別の行を占め、整数n(1 <= n <= 16384)を含みます。0forの値を持つテストケースnは入力を終了し、このテストケースは処理されません。 出力 入力の各テストケースについて、出力例に示すように、最初にテストケース番号(1から開始)を出力します。次に、別の行に「最初にyで川xに出会う」という行を出力します。ここで、yは川がn最初に川に出会う最低値ですx(x = 1または3または9)。の複数の値で川nが川と合流xする場合、最低値を出力します。2つの連続するテストケースの間に空白行を出力します。yx テストケース 入力: 86 12345 0 出力: Case #1 first meets river 1 at 101 Case #2 first meets …

8
今日は無事ですか?
Debian Linuxディストリビューション(およびUbuntuやKaliなどのDebianベースのディストリビューション)は、APTと呼ばれるパッケージマネージャを使用します。プログラムをインストールするfooには、ターミナルに入力します sudo apt-get install foo APTの小さなイースターエッグは次のとおりです apt-get moo 入力後、次の出力が生成されます (__) (oo) /------\/ / | || * /\---/\ ~~ ~~ ..."Have you mooed today?"... この正確な出力をできるだけ少ないバイト数で生成するプログラムを作成する必要があります。(末尾のスペースと改行を含む) 以下は、\n改行文字を表すために追加された同じ出力と、*末尾のスペースを表すためのa です。 (__)*\n (oo)*\n /------\/*\n / | ||***\n * /\---/\*\n ~~ ~~***\n ..."Have you mooed today?"...\n コメントで要求されているように、これはムーイングのmd5sumです。 35aa920972944a9cc26899ba50024115 -

3
合計が最大の数字からの平方
数字のリストを入力として受け取り、出力するか、これらの数字を正方形に配置することで達成可能な最大の合計を返すプログラムまたは関数を書く必要があります。 入力には常に正方形の数字が含まれます。入力の正方形の配置の例9 1 2 3 4 5 6 7 7は次のようになります。 677 943 125 合計は、すべての行と列の合計として計算されます。上記の配置の場合、合計はになります677 + 943 + 125 + 691 + 742 + 735 = 3913。これは最大合計ではないため、これは期待される出力ではないことに注意してください。 入力 ゼロ以外の数字()を含む長さn^2(n>=1)のリスト1-9。 出力 整数、正方形に配置された入力桁で達成可能な最大の合計。 例 形式の例はinput => outputです。 5 => 10 1 2 3 4 => 137 5 8 6 8 => 324 9 …

4
アンタッチャブル
アンタッチャブルナンバーズα 触れられない数は正の整数であり、正の整数(触れられない数自体を含む)の適切な除数すべての合計として表すことはできません。 たとえば、数値4は、9の適切な除数の合計に等しいため、変更不可ではありません。1+ 3 =4。数値5は、正の整数の適切な除数の合計ではないため、変更不可です。5 = 1 + 4は、1を含む明確な正の整数の合計として5を書き込む唯一の方法ですが、4が数値を除算すると、2も除算されるため、1 + 4は、任意の数値の適切な除数すべての合計になることはできません。因子のリストには4と2の両方が含まれている必要があります。 数字の5は変更できない唯一の奇数であると考えられていますが、これは証明されていません。それは、ゴールドバッハ予想のわずかに強いバージョンから続くでしょう。β ポールエルデスによって証明された事実は、無数の手に負えない数です。 アンタッチャブルのいくつかのプロパティ: アンタッチャブルは素数よりも1だけ大きい アンタッチャブルは5を除いて素数より3大きい 手に負えないものは完璧な数ではない これまでは、2と5以外のすべてのアンタッチャブルはコンポジットです。 目的 標準入力または関数パラメーターを介して自然数を取り、最初の変更不可能な数を出力するプログラムまたは関数を作成します。nn 出力では数字を分離する必要がありますが、これは何でもかまいません(つまり、改行、コンマ、スペースなど)。 これは少なくとも機能するはず1 <= n <= 8153です。これは、B-ファイルがOEISエントリのために提供するという事実に基づいているγに上がりますn = 8153。 通常通り、標準の抜け穴は許可されていません。 I / Oの例 1 -> 2 2 -> 2, 5 4 -> 2, 5, 52, 88 10 -> 2, 5, 52, …

1
ノックアウト確率
ノックアウトは、プレーヤーが交代で撃つバスケットボールゲームです。それは、2人のプレーヤーのコンテストのシーケンスとして再生されます。各コンテストは、それらのプレーヤーの1人を「ノックアウト」する可能性があります。 プレーヤーがそうでA B C Dあり、射撃とバスケットを作るチャンスが0.1 0.2 0.3 0.4それぞれ、コンテストの他のプレーヤーとは無関係であると仮定します。最前線にいる2人の選手、AそしてB「ファイト」。以来A最初に行く、彼はディフェンダーに排除される危険で、そしてBある攻撃者の即時撤廃の危険にさらされていない、と。A最初に撃つ。成功した場合Aは、A防御に成功し、列の最後に移動します。行はに変わりB C D Aます。Aうまくいかない場合は、B発砲します。作成した場合B、A外に出Bて行の後ろに移動するので、行はになりC D Bます。どちらでもない場合ABして、それ、プロセスの繰り返しを作るAのいずれかになるまで、再び撮影AまたはBバスケットになります。 行がB C D A(A正常に防御された)に変化したとします。さて、BそしてC「ファイト」B、そしてディフェンダーでありC、アタッカーである。このプロセスは、一人だけが残るまで繰り返されます。その人が勝者です。 あなたの仕事は、バスケットを作るチャンスを与えられた勝者一人一人の確率を計算することです。 入力: 数字などのリスト0.1 0.2や0.5 0.5 0.5 0.5、N番目の数は可能性あるのn番目のプレイヤーがバスケットを行います。この入力は、関数へのパラメーターとしてを含め、任意の形式で取得できます。 出力: 数字のリスト。n番目の数字は、n番目のプレーヤーがゲームに勝つ確率です。数値は、少なくとも90%の確率で小数点第2位まで正確でなければなりません。つまり、シミュレーションベースのアプローチを使用できます。ただし、コードがシミュレーションベースではない場合(少なくとも小数点以下6桁に正解が返されることが保証されている場合)、スコアから30%を取り除きます。 間の例0.5 0.5:プレーヤーAとを呼び出しBます。pAが勝つ確率を見てみましょう。防御に成功Aする2/3可能性があります(スコア1/2をA獲得する1/4チャンス、AミスとBスコアを獲得する1/4チャンス、ミスとプロセスの両方が繰り返される可能性があるため)。A防御に失敗した場合、彼はノックアウトされてB勝利します。A防御する場合、ラインはになりB Aます。状況は対称的であるため、A勝つ確率はです(1 - p)。我々が得る: p = 2/3 * (1 - p) + 1/3 * 0。解決、我々が得ますp = 2/5。出力は次のようになります2/5 3/5か0.4 0.6。 より複雑な例を実行する確率は十分ではありません。 さらにテストケースが必要な場合は、次の例をご覧ください。 0.1 0.2 …

1
マーチングスクエアルックアップ
マーチングスクエアはコンピューターグラフィックスのアルゴリズムであり、サンプルのグリッドから2D等高線を復元するために使用されます(3D設定用の兄貴のマーチングキューブも参照)。アイデアは、グリッドの各セルを個別に処理し、コーナーの値に基づいてそのセルを通過する輪郭を決定することです。 このプロセスの最初のステップは、コーナーがコンターの値の上か下かに基づいて、コンターによって接続されているエッジを判別することです。簡単にするため、値0に沿ったコンターのみを考慮し、コーナーが正か負かを調べます。区別するケースがあります:24 = 16 画像ソース:ウィキペディア ここでは白と黒の識別はそれほど重要ではありませんが、明確にするために、白はポジティブで黒はネガティブであると言います。コーナーの1つが正確にある場合は無視し0ます。 サドルポイント(ケース5と10)は、少し余分な難しさを提供します。コーナーを見るだけではどの対角線を使用すべきかが明確ではありません。これは、4つのコーナーの平均(つまり、中心値の概算)を見つけ、コンターが反対の符号でコーナーからセンターを分離するように対角線を選択することで解決できます。平均が正確0にの場合、どちらのケースも選択できます。 通常、これらの16のケースは単にルックアップテーブルに格納されます。これは効率的には優れていますが、もちろん、ここではコードを短くすることをお勧めします。したがって、あなたの仕事は、このルックアップ手順を実行し、ケースのASCII表現をできるだけ少ないコードで出力することです。 チャレンジ 選択した固定順序で4つのコーナー(ゼロ以外の整数)の値が与えられます。次に、等高線の正しいレイアウトを生成し、鞍点のケースを正しく解決する必要があります。 プログラムまたは関数を記述し、STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取り、STDOUT(または最も近い代替)、関数の戻り値または関数(out)パラメーターを介して結果を出力できます。 入力は、任意の便利な文字列またはリスト形式で取得できます。 16のケースは、次の5x5ブロックのいずれかを使用してASCIIアートで表されます。 o---o o---o o---o | | | | | | | | | |---| | | | | | | | | | | o---o o---o o---o o---o o---o o---o o---o |/ | | \| | | | …

3
浮動小数点数を10進数として正確にフォーマットする
2進浮動小数点は、10進数で正確にフォーマットできます。結果の文字列は多少長くなる可能性がありますが、可能です。では、浮動小数点の私の記事私は精度の重要性をカバーし、そして今、私はこの機能が欲しいです。この課題は、浮動小数点値を入力として受け取り、正確な10進文字列を出力としてフォーマットするプログラムまたは関数を記述することです。 正しい浮動小数点数で作業していることを確認するには、プログラムへの入力として正確な形式を指定する必要があります。この形式は2つの整数Significand Exponentで、実際の浮動小数点値はSignificand * 2 ^ Exponentです。どちらの値も負になる可能性があることに注意してください。 詳細: 少なくとも32ビットfloatの範囲と精度をサポートする必要があります(それ以上の入力はできません) 10進数でフォーマットされた値は正確な表現である必要があります(浮動小数点への正しい丸めを保証するのに十分近いだけでは十分ではありません)。 標準ライブラリの浮動小数点フォーマット関数の正確性や十分な速さ(例:)を信頼していないprintfため、使用できない場合があります。あなたは、書式設定を行う必要があります。統合フォーマット/変換関数が許可されています。 .整数コンポーネントがない場合は、の前に必要な1つの先行ゼロを除いて、先行ゼロまたは後続ゼロがない場合があります。 関数、またはプログラム全体が許可されます。 例: 1 -2 => 0.25 17 -3 => 2.125 -123 11 => -251904 17 50 => 19140298416324608 23 -13 => 0.0028076171875 3 120 => 3987683987354747618711421180841033728 3 -50 => 0.00000000000000266453525910037569701671600341796875 -3 -50 => -0.00000000000000266453525910037569701671600341796875 10 -2 => 2.5 …

7
最も重い増加するサブシーケンス
サブシーケンスは、残りの要素の順序を変更せずに一部の要素を削除することにより、別のシーケンスから派生できるシーケンスです。厳密に増加するサブシーケンスは、すべての要素が前の要素よりも大きいサブシーケンスです。 シーケンスの最も大きく増加するサブシーケンスは、要素の合計が最大である厳密に増加するサブシーケンスです。 非負整数の特定のリストの最も大きく増加するサブシーケンスの要素合計を見つけるプログラムまたは関数を、選択した言語で実装します。 例: [] -> 0 ([]) [3] -> 3 ([3]) [3, 2, 1] -> 3 ([3]) [3, 2, 5, 6] -> 14 ([3, 5, 6]) [9, 3, 2, 1, 4] -> 9 ([9]) [3, 4, 1, 4, 1] -> 7 ([3, 4]) [9, 1, 2, 3, 4] -> …

1
有理座標が正しいシェルピンスキー三角形にあるかどうかを判別
シェルピンスキーの三角形は、単一の三角形で始まる繰り返し4つの合同な三角形にすべての三角形を分割し、中央の三角形を除去することによって構築される平面上の点の集合です。右のシェルピンスキー三角形には(0,0)、(0,1)と(1,0)に角があり、次のようになります。 このセットの同等の定義は次のとおりです。 nすべてのについて、上記のプロセスのth番目の反復のポイントn。 点(x,y)と0 <= x <= 1し、0 <= y <= 1すべての正の整数のようにn、nxのバイナリ膨張番目のビットとYの両方ではありません1。 しましょう T = {(0,0),(1,0),(0,1)} をf次のように定義された2Dポイントのセットの関数とします。 f(X) = {(0,0)} ∪ {(x+t)/2 | x∈X, t∈T} 右シェルピンスキーの三角形は、トポロジカルクロージャの最小不動点の(セット封じ込めによって)f。 S正方形にしよう{(x,y) | 0<=x<=1 and 0<=y<=1} Let g(X) = S ∩ {(x+t)/2 | x∈(X), t∈T}(T上記は上で定義したとおり) 次に、右のシェルピンスキー三角形がの最大の不動点ですg。 チャレンジ 4つの整数を受け入れa,b,c,d、正しいシェル(a/b,c/d)ピンスキー三角形に属している場合は真の値を与え、そうでない場合は偽の値を与えるプログラムまたは関数を記述します。 得点 これはコードゴルフです。バイト単位の最短コードが優先されます。 テストケース 以下は、シェルピンスキー三角形の右側にあります。 0 1 0 …

2
アスキーアートスクエアアフィンフラクタル
アフィンフラクタルを作成するための最小のプログラムを記述します。以下のルールと同じ結果が得られると思われる任意の方法を使用できます。提案された方法からアイデアを使用する必要はありません! プログラムは、形式でパターンを定義する最初の2つの入力をとる074第2の入力のサイズを定義する7 0〜3桁からなる3、8×8なり4、16×16など(2 ^ n)の上になります。プログラムは、0(1x1)から少なくとも5(32x32)までのすべてのサイズについて正しい結果を出力する必要があります。それ以上の数の出力を生成する場合、それは正しい必要があります。つまり、特定のサイズまでは正しい出力を生成する必要がありますが、間違っている場合はそのサイズを超える出力は生成しません。最大サイズは15(32768x32768)と想定できます。これは、すでにASCIIアート(1GB)の非常識なサイズだからです。 8x8パターンは以下のようになります(ルール160)。左端の桁はblock A、中央の桁(失礼な考えはありません!)はblock B、右端の桁はblock Cです。フラクタルを作成するには、両方の次元で半分に縮小し、ブロックに回転/ミラーリングルールを適用します。パターンを縮小するには、2x2の領域に均等に分割します。各エリアに3つの表示文字があるか、何も表示されません。目に見える文字がある場合は、小さいブロックの適切な場所に文字を配置し、そうでない場合はスペースを配置します。ルール0- 3ミラーリングされません、ルール4- 7ミラーリングされます。ルール0と4回転されていない、1と5時計回りに90度回転され、2そして6回転180度であり、3そして7時計回りに270度回転されます。3つのブロックをA左上隅、B左下、C右下の順序で縫い合わせます。 AAA AA A AA A BBB CC B BBC BBCCC B CCC 縮小、回転、ルール番号でミラーリング: 0 1 2 3 4 5 6 7 ---- ---- ---- ---- ---- ---- ---- ---- AA BAA CCB C C BCC AAB AA A BB …

4
確率を正確に計算する
このタスクは、確率を正確に計算するコードを記述することです。出力は、最も縮小された形式で分数として記述された正確な確率でなければなりません。つまり、出力んです4/8けど、むしろ1/2。 いくつかの正の整数についてn、1と-1の長さの一様にランダムな文字列を検討し、nそれをAと呼びます。次にA、最初の値に連結します。これはA[1] = A[n+1]、1からのインデックスAが長さを持っている場合 n+1です。ここでn、最初のn値が-1、0、または1であり、確率がそれぞれ1 / 4、1 / 2、1 / 4 である長さの2番目のランダムな文字列についても検討し、Bと呼びます。 たとえば、を検討してくださいn=3。以下のための可能な値Aとは、B可能性A = [-1,1,1,-1]とB=[0,1,-1]。この場合、2つの内積は0および2です。 今の内積考えるA[1,...,n]とBとの内積をA[2,...,n+1]してB。 コードは、両方の内積がゼロである確率を出力する必要があります。 以下のためにn=1、この確率明確です1/2。 nコードでどのように指定されているかは問題ではありませんが、変更方法は非常に単純で明白なはずです。 言語とライブラリ 任意の言語とライブラリを使用できます。コードを実行したいので、可能であればLinuxでコードを実行/コンパイルする方法の完全な説明を含めてください。

7
最長の音楽部分文字列を見つける
音楽の文字列は、ピアノの鍵盤で演奏することができます任意の文字列です。 子供の頃にピアノを習得することを余儀なくされた私たちのために、キーボードは次のようになります。 つまり、文字列feed a dead cabbageはすべて1つの文字がこれらのnotの1つに対応するため、音楽的な文字列です。 あなたの課題は、文字列をSTDINから入力として受け取り、最も長い音楽の部分文字列を見つけるプログラムを作成することです。次に、プログラムは部分文字列とその長さを出力する必要があります。以下に入力/出力の例をいくつか示します。 入力:「FEED ME!お腹がすいている!」 出力:フィード4 入力:いいえ、いいえ、いいえ、ムシストリンなし! 出力:0 入力: "A **bad** !!!fAd82342" 出力:abadfad 7 入力:「ゴルフが上手です!」 出力:dg 2 ルール 出力は大文字でも小文字でもかまいませんが、句読点やスペースがあってはなりません。 入力文字列には大文字と句読点がありますが、これは部分文字列が「音楽的」と見なされるかどうかに影響しません。 音楽の部分文字列と数字の間にスペースが必要です。

4
テセウスの新しい船
テセウスの船は、次のような古い質問です。 船が元の部品をすべて交換した場合、それはまだ同じ船ですか? このゴルフでは、「船」の「部品」をゆっくりと交換し、まったく新しい船を入手するのにかかる時間を確認します。 仕事 船は少なくとも2つの部分で構成されます。パーツは、パーツの状態を表す正(ゼロ以外)の整数の配列として指定されます。 各サイクルで、リストから1つの部品を均一な方法でランダムに選択します。その部分の状態は1つ減ります。部品の状態がゼロになると、新しい部品に置き換えられます。新しいパーツは、元のパーツと同じ条件値で始まります。 すべての部品が(少なくとも)1回交換された最初のサイクルで、停止して、かかったサイクル数を出力します。 たとえば(ここでランダムにパーツを選択していると仮定します): 2 2 3 <- starting part conditions (input) 2 1 3 <- second part reduced 2 1 2 ... 2 1 1 2 2 1 <- second part reduced to zero, replaced 1 2 1 1 2 3 <- third part replaced …

3
IMP:暗黙的な乗算パーサー
ジャックはCプログラミング言語が好きですがV=a*b*h; 、値を乗算するような式を書くのは嫌いです。 V=abh;代わりに彼は書きたいのですが、定義されabhているのでシンボルが未定義であることについてコンパイラがうめき声を出してint a, b, h;、乗算を推定できるようにする必要がありますか? 現在のスコープで定義されている変数のセットがわかっている場合、単一の乗算項を解読するパーサーの実装を支援します。 簡単にするために、(のように2*a*b)数値による乗算は考慮されず、変数のみが表示されます。 入力は、正規表現を満たす乗算項Tです。 [a-zA-Z_][a-zA-Z_0-9]* 変数セットZ。 変数セットZに対する項Tの解析Pは、次の条件を満たす文字列です。 *Pからのすべての出現を削除した後、Tを受け取り、 Zからの変数名であるか、Zからの適切な変数名を1 *文字で分割して構成されています。 ソリューションは、用語のすべての解析を出力する必要があります。 サンプル: Vars a, c, ab, bc Term abc Solution ab*c, a*bc Vars ab, bc Term abc Solution - Vars - Term xyz Solution - Vars xyz Term xyz Solution xyz Vars width, height Term …

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