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

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

3
山の指輪はありますか?
チャレンジ 正の整数の行列が与えられた場合、山の「リング」があるかどうかを判断します。このチャレンジの正式な定義は次のとおりです。正の整数のマトリックスが与えられた場合n、マトリックスn内のセルの閉じたリングがあり、そのリングに囲まれたすべてのセルが以下であるような厳密に大きい正の整数がありますへn。 真実の例を見てみましょう: 3 4 5 3 3 1 2 3 4 2 1 3 4 3 6 5 に設定nした場合2: 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 はっきりとわかるよう1に、エッジに沿ったsはリングを形成しています。 リングは、コレクション内の隣接するセルもグリッド上で隣接している(エッジまたはコーナー)セルの順序付けられたコレクションとして定義します。さらに、リングには少なくとも1つのセルが含まれている必要があります。つまり、コレクション内のセルを除くマトリックス全体をエッジのみのBFSフラッディングで埋めようとして、コレクション内のセルを走査しないようにするには、少なくとも1つのセルを逃す必要があります。 真実のテストケース 4 7 6 5 8 -> 1 1 1 1 1 …

6
コードゴルフ最高の順列
チャレンジ 整数n≥4が与えられた場合、2つの連続した整数が互いに隣接しないという性質を持つ整数[0、n-1]の順列を出力します。順列の値は、すべてのインデックスのpi合計です。abs(pi[i] - i)i 例 (1, 3, 0, 2) 価値がある 6 (0, 2, 4, 1, 3) 価値がある 6 (0, 2, 4, 1, 3, 5) 価値がある 6 (0, 2, 4, 1, 5, 3, 6) 価値がある 8 回答のスコア 回答のスコアは、順列の値の合計にn = 4 .. 14コードが使用するバイト数を加えたものです。スコアが低いほど優れています。コードは、これらのすべての値に対して有効な出力を提供する必要がありますn。 マシン上で提出を完了できる必要があります。 同点の場合、関連するスコアをもたらした最後の編集の時間が決定者になります。 これは同じ問題ではありませんこの1? リンクされた質問への回答は、置換の価値を最適化する努力をしないため、この質問に対して競争力がありません。たとえば、ほとんどの回答で与えられn=10た順列[1, 3, 5, 7, 9, 0, …

30
アルファ数値ボウタイ
この正確なテキストを出力します。 1 i 12 hi 123 ghi 1234 fghi 12345 efghi 123456 defghi 1234567 cdefghi 12345678 bcdefghi 123456789abcdefghi 12345678 bcdefghi 1234567 cdefghi 123456 defghi 12345 efghi 1234 fghi 123 ghi 12 hi 1 i 単一の末尾の改行は許容されますが、他のフォーマットの変更は許可されません。 ルールとI / O 入力なし 便利な方法で出力できます。 完全なプログラムまたは機能のいずれかが受け入れられます。関数の場合、出力する代わりに出力を返すことができます。 標準的な抜け穴は禁止されています。 これはコードゴルフなので、通常のゴルフルールがすべて適用され、最短のコード(バイト単位)が勝ちます。

14
トレジャーマップ描画ボット
あなたはあなたの友人のために宝探しを組織しています。物事をより簡単に行うには、貴重なオブジェクトを隠したすべての場所の地図を描きたいと思います。 入力 (負ではない)x座標とy座標で構成0 0され、左上隅である点のリストを示す任意の形式の入力が許可されます(注:回答で1ベースのインデックスを使用することもできます。 )。例: 1 2 3 0 0 1 チャレンジ 関数またはプログラムはx、出力内の行y + 1および列x + 1にマークがある場所で、指定されたすべての場所を示すマップを構築できる必要があります。マークされていない場所はで表されます。マップは、角が+s、垂直線が|s、水平線が-sのフレームで構成されます。ソリューションは、可能な限り小さいフレームを出力する必要があります。上記の入力例のマップ: +----+ | x| |x | | x | +----+ 可能なテストケース "0 0" => +-+ |x| +-+ "0 10 5 5 10 0" => +-----------+ | x| | | | | | | | …

10
境界ループで囲まれた領域
周囲のループが90度の回転シーケンスとして与えられたユニットセルの領域の面積を見つけます。 たとえば、3セルの領域を取ります XX X 誰の境界ループを描くか L<S<L v ^ S R>L v ^ L>L 各ターンには、左(L)、直線(S)、ま​​たは右(R)のマークが付いています。Rから始まって、ターンはRLLSLSLLです。したがって、inputが与えられたRLLSLSLL場合、エリアに対して3を出力する必要があります。 入力シーケンスは、左側の単一の領域を囲むループをトレースすることが保証されています。 パスは始点で戻り、最初の方向を向いてループを形成します。 ループはそれ自体と交差したり接触したりしません。 ループは、領域を反時計回りに回ります。 I / O 入力は、文字のリストまたは文字列LSRとして、または-1, 0, 1左、ストレート、右の数字として受け取ることができます。出力は正の整数です。フロートは大丈夫です。 テストケース 入力は両方の形式で与えられ、その後にそれぞれの出力が続きます。 RLLSLSLL LLLL SLLSLL LSRRSLLSSLSSLSSL SSSSSLSSSSSLSSSSSLSSSSSL [1, -1, -1, 0, -1, 0, -1, -1] [-1, -1, -1, -1] [0, -1, -1, 0, -1, -1] [-1, …

24
分割して大文字にする
チャレンジ: 特定の位置で分割された文字列を指定し、指定された単語の最初の文字を大文字にします。最初の単語の最初の文字が大文字になっている場合にのみ大文字にする 入力: 文字列sと文字c。 出力: 出現するたびにc最初の文字を大文字にした文字列 例: STRING(s) CHARACTER(c) RESULT Hello_world _ HelloWorld me,no,like , meNoLike you-got-it - youGotIt Am^I^clear ^ AmIClear go!full!caps ! goFullCaps weird&but&tRue & weirdButTRue ProbleM1fixed1no 1 ProbleMFixedNo !prob!!lem!s!Olved!! ! ProbLemSOlved 注意 : 指定された入力は常に有効です。つまり、最初の文字列は常に、置換する文字の少なくとも1つのインスタンスを持つ文字列になります。2番目は常に単一の文字になります。 入力文字列の長さは4より大きくなります。 分割する文字が少なくとも1回出現します。 入力には、文字と区切り文字のみが含まれることが保証されます(@Arnauldに感謝) 区切り文字はアルファベットではないもの(az / AZ)(@Dennisが推奨) 受賞基準: これはコードゴルフなので、各言語のバイト単位の最短コードが優先されます。 2つの間違いを指摘してくれた@JonathanAllanに感謝します。
14 code-golf  string 

6
あなたは私のウィーバーになりますか?
私は最近「The Weaver」をプレイしてきましたが、これはコードゴルフにとって興味深い挑戦になると思います。 前提: ウィーバーは、2つの方向から90度離れた多数のリボンが与えられるゲームであり、目標は、特定の交差点でそれらを交換して、所望の出力を達成することです。 このように:これはスワップです:これはそうではありません: 入力: 3つの配列: 上部のリボン(左から右) 左のリボン(上から下) 交換する交差点の座標 出力: 2つの配列: 下のリボン(左から右) 右リボン(上から下) 例: 最初の例として上記の画像を使用します。 入力: [r, y, b], [r, y, b], [(0, 1), (2, 1), (2, 2)] 何が起こるのですか: r y b r y b r r r r•y y y y r r b y y y y …

15
私はピライ素数ですか?
A Pillaiさん素数が素数であるpppいくつかの肯定が存在するためmmmそのような(m!+1)≡0(mod p)(m!+1)≡0(mod p)(m! + 1) \equiv 0 \:(\text{mod } p)p≢1(mod m)p≢1(mod m)p \not\equiv 1\:(\text{mod }m) 換言すれば、整数、それがある場合Pillaiさんの素数である素数別の正の整数が存在する場合、ような階乗の、プラスで割り切れる及び場合で割り切れない。pppmmmmmm111pppp−1p−1p - 1mmm 入力として正の整数を指定し、それがピライ素数であるかどうかを判断します。ピライ素数の配列はOEIS A063980です。 たとえば、はピライ素数です。232323 これは素数であり、2つの要素しかありません。 m=14m=14m = 14およびは上記の条件を満たす:およびは分割しない。およびはも分割しません。23 ∣ (14 !+ 1 )14 22 23 ∣ (18 !+ 1 )18 22m=18m=18m = 1823∣(14!+1)23∣(14!+1)23 \mid (14! + 1)14141422222223∣(18!+1)23∣(18!+1)23 \mid (18! + 1)181818222222 テストケース …

9
ザイデルトライアングル
ザイデル三角形は、パスカルの三角形に似た数学的構造であり、ベルヌーイ数との関係で知られています。 最初の数行は次のとおりです。 1 1 1 2 2 1 2 4 5 5 16 16 14 10 5 16 32 46 56 61 61 各行は次のように生成されます。 行番号が偶数(1から始まる)の場合: 前の行の最初のアイテムを停止します 次のすべてのアイテムは、前のアイテムとその上のアイテムの合計です 最後のアイテムを複製する 行番号が奇数の場合: 前の行の最後のアイテムを停止する 後方に行くと、各アイテムは前のアイテムとその上のアイテムの合計です 現在の最初のアイテムを複製します。 基本的に、三角形をジグザグパターンで作成します。 1 v 1 > 1 v 2 < 2 < 1 v 2 > 4 > 5 …

27
プライムまたは最高因子
チャレンジ: の範囲の0 to Infinity非負の整数の配列が与えられた場合、それらのすべてが素数であるかどうかを確認します。(必要に応じて入力を文字列として受け取ることもできます) 入力: 入力:数字の配列 出力:すべての要素が次のいずれかに置き換えられた配列: -1 -----> If 0, 1 1 -----> If it is a prime number greater than 1 the highest factor -----> If that number is not prime -1(0、1)、1(素数> = 2の場合)、または指定された数の最大因子(非素数の場合)を返します 例: [1, 2, 3, 4, 10, 11, 13] ---> [-1, 1, 1, 2, 5, …
14 code-golf  math  primes 

12
サークル交差点
説明: 所与x及びyそれらと一緒に二つの円の位置radii、出力2円の交点の領域。 入力: 次の入力が与えられます。 array 1 = x and y positions of circle a array 2 = x and y positions of circle b radius = radii of the two congruent circles 入力方式 : ([12 , 20] , [20 , 18] , 12) ---> two array and number ([12 , …

9
ブロックの再配置
したがって、あなたの仕事は3x3ブロックを取得することです。ここで、-の意味は空白スペースであり、*の意味は塗りつぶされたスペースです、例えば: -** -*- *-* 次*のように、がXを形成するようにブロックを再配置します。 *-* -*- *-* 入力: 上記のような3x3の正方形、3行、配列、または必要に応じて。 出力: Xに再配置するための最短の移動量。各移動は、互いに水平であるか、互いに垂直であるか、または互いに斜めである、接触している2つのキャラクターを反転させます。不可能な場合は、不可能な出力を返します(例:999または)-4242。5最小のそのような数です。 テストケース: 1)出力:1 -** -*- *-* 2)出力:-1 -*- -*- *-* 3)出力:3 --- -** *** 4)出力:0 *-* -*- *-* 空白文字と非空白文字を置き換えることができますが、投稿にどちらが含まれるかを必ず確認してください コードゴルフ これは、最短のコードが勝つコードゴルフです。

15
私の指数関数的ポテンシャルは何ですか?
正の整数MのN指数ポテンシャルを、完全なN乗であるM Nのプレフィックスの数として定義します。 整数のプレフィックスは、例えばベース10に数値として解釈最初のもの、で始まる数字の全ての隣接サブシーケンスである、のプレフィックス2744がある2、27、274および2744。 K N = Pのような整数Kが存在する場合、接頭辞Pは完全なN乗です。たとえば、3 4 = 81であるため、81は完全な4乗です。 2つの厳密に正の整数MおよびNが与えられた場合、上記の定義に従ってMのN指数ポテンシャルを計算します。 例えば、2の-exponential電位13は、ある3ので、13 2で169、及び1、16及び169は、全て完全正方形です。 テストケース 当然、出力はほとんどの場合非常に小さくなります。なぜなら、パワーは...まあ...指数関数的に成長する関数であり、複数の完全なパワーのプレフィックスを持つことはかなりまれだからです。 M, N -> Output 8499, 2 -> 1 4, 10 -> 2 5, 9 -> 2 6, 9 -> 2 13, 2 -> 3
14 code-golf  math  number 

1
9の倍数の正規表現
9の倍数を認識する有限状態マシンを記述するのは簡単です。数字の合計(mod 9)を追跡し、次に受け入れられる数字を追加します。このようなFSMには9つの状態しかなく、非常に簡単です!FSMの認識可能性と正規言語の同等性により、9の倍数の正規表現があります。しかし、そのような正規表現はおそらく...非常に...長いです。のように、おそらくギガバイトのオーダーで。 https://www.quaxio.com/triple/には、3の倍数の有効な例があります。ページの下部で、著者は、「手作業で最適化された」ソリューションを提供します。正規表現へのFSM。 チャレンジ: 9の倍数を検出するには正規表現を作成する必要があります。このような正規表現は非常に長いことが予想されるため、正規表現を出力できるプログラムを提供するようお願いします。(正規表現全体を提供したい場合は、おそらく他の場所でホストし、ここにリンクしてください!) プログラムの出力の正確な文字数を教えてくれる必要があります。つまり、ある長さまですべての正規表現を試行するプログラムは、動作するものが見つかるまで、十分に速く実行しない限り受け入れられません。最後まで実行して、結果の正規表現の長さを教えてください! もちろん、プログラムの長さに基づくのではなく、最短の出力正規表現を使用するためです。正規表現は私が求めている「プログラム」であり、ここで便利に送信するには長すぎるので、このコードゴルフにタグを付けています。 ルール: 入力には、に一致する文字のみが含まれます[0-9]*。 正規表現は9の倍数と一致する必要がありますが、それ以外は一致しません。完全に数字0〜9で構成されておらず、無効な入力であるケースは、希望どおりに一致または失敗する可能性があります。 DFAで簡単に認識されるという動機を考えると、結果の正規表現は、実際にはより理論的な用語での正規表現、つまり、正規言語が閉じられている演算子のみである必要があります。正確に言うと、許可される唯一のもの: リテラル、文字範囲([ab]、[a-f]、[^k])、クリーネ閉包(*)、アンカー(^および$)、括弧を介して、交互(グループ化|)、任意の用語(?)、一又は、複数の用語(+)、先読み((?=))、負の先読みを((?!))、 lookbehinds( (?<=))、負lookbehinds( (?<!)(のように)、条件文https://www.regular-expressions.info/conditional.html - (?(?=test)then|else))、及び有界長の後方参照(下記参照)。 許可されていないものの例: 任意の長さの後方参照、前方参照、再帰、サブルーチン、ループ構造、実行可能コード、「eval」のバリエーション、または文字列を算術値にキャストするための組み込み構造。 制限された長さのバインディング文字列を持つことを示すことができる後方参照は、有限状態で保存でき、言語の規則性を変更しないため、受け入れられます。たとえば(..2.[3-5])4\1.\1、キャプチャグループにバインドされた長さがあるため、正規表現は受け入れられ\1ます。これは通常の構造です。(2*)0\1キャプチャされたグループは有限状態で保存できないため、このような構造は受け入れられません。 正規表現は、必要に応じて、余分な先行ゼロを含む整数を自由に受け入れたり拒否したりできます。ただし、文字列"0"は受け入れられる必要があります。

11
トランペットの演奏を手伝ってください
トランペットは、通常で登板バルブ付きaerophone機器、ですB♭。プレイヤーが唇を振動させて楽器内の空気を移動させると、音が鳴ります。その振動は、アンブシュアと呼ばれる特定の方法で口を設定することによって取得されます。唇がよりタイトまたはルーズなアンブシュアは、ピッチが異なります。 さらに、トランペットの各バルブは、楽器のピッチも変更します。押されると、バルブが楽器のチューブ内の経路を閉じ、空気が長い経路を流れるようにし、元の音のピッチを下げます。この課題のために、標準のB♭トランペットを考えます。最初のバルブはピッチをフルステップ下げ、2番目はピッチをハーフステップ下げ、3番目はピッチを1段下げ、半歩。 チャレンジ あなたの課題は、2つの入力embouchureとが与えられたときvalvesに、演奏されるノートのピッチを決定するプログラムまたは関数を作成することです。 このチャレンジの目的のために、メモはシーケンスに従います。 B♭, B, C, C♯, D, E♭, E, F, F♯, G, G♯, A. ルール I / Oは、合理的な方法で取得/指定できます。 標準の抜け穴が適用されます。 必要に応じて、bおよびの#代わりに使用することができます。♭♯ の入力はvalves、押し下げられたバルブのリスト(1, 3)またはブールリスト(1, 0, 1)として取得できます。 これはcode-golfなので、各言語で最も短いコードが優先されます。 テストケース: Valves これらのテストケースでは、0が押され、1が押されたことを意味するブールリストとして与えられます。 Embouchure: Valves: Output: B♭ 0 0 0 B♭ B♭ 0 1 0 A B♭ 1 0 1 F C♯ …
14 code-golf  music 

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