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

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

21
アルファベットヒストグラム
1つ以上の単語[a-z]+と0個以上のスペースで構成される入力文が与えられた場合、入力文の文字分布のASCIIアートヒストグラム(棒グラフ)を出力します。 ヒストグラムは水平に配置する必要があります。つまり、左から右へアルファベット順にアルファベットキーを使用し、Y軸にラベルを付け1-、5単位ごとに配置します。Y軸は、少なくとも最も高いバーと同じ高さの最小の5の倍数でなければならず、右揃えでなければなりません。X軸には入力文字のラベルが付けられ、間に隙間はありません。例えば、入力は、a bb ddラベル持つべきabdではなくab d、スキップをc。バー自体は、一貫性のあるASCII文字で作成できますX。ここでは、例で使用します。 test example 5- X X X 1-XXXXXXXX aelmpstx の3つe、2つt、および1つがありalmsxます。 その他の例: the quick brown fox jumped over the lazy dogs 5- X X X X XX X X X XX 1-XXXXXXXXXXXXXXXXXXXXXXXXXX abcdefghijklmnopqrstuvwxyz now is the time for all good men to come to the aid of …

30
可能な限り公正であること
前書き この課題では、整数を2つの部分に分割する必要があります。誰も小さなケーキを手に入れるのが好きではないので、あなたの目標は可能な限り公平になることです。たとえば、整数7129を2つに分割する場合、3つの方法があります。 7,129、71,29および712,9すべての可能性が71,29ありますが、2つの違いを最小限に抑えるため、2つの部分に分割する最も公平な方法です。 7 129 -> |7-129| = 122 71 29 -> |71-29| = 42 712 9 -> |712-9| = 703 チャレンジ 整数が与えられた場合、上記のように整数を分割する最善の方法を決定し、結果の差を報告します。 ルール 分割は、長さが少なくとも2の整数に対してのみ意味があり、入力は常に10以上です。 入力は、整数、数字のリスト、または文字列のいずれかです 無効な入力を処理する必要はありません テストケース 結果の違いのみを報告する必要があります。パーティション分割は、説明のためにのみここにあります。 10 -> 1,0 -> 1 11 -> 1,1 -> 0 12 -> 1,2 -> 1 13 -> 1,3 -> 2 101 …

30
いくつの引数が渡されましたか?
選択した言語を使用して、可変数の引数を取り、呼び出された引数の数を返す関数を作成します。 詳細: あなたの言語は可変引数関数をサポートする必要があります:任意の数の引数を取り値を返す呼び出し可能なもの。 パラメータは個別に渡すことができる必要があります。これは、配列を渡すと1つのパラメーターしかカウントされないことを意味します。言語でサポートされている場合は、「すべての引数を渡す」配列を使用できます。関数の呼び出し方法に制限があります。 この関数を呼び出すコードは、ソース内の引数の数を渡す必要はありません。コンパイラーが呼び出し規約の一部として引数の数を挿入する場合、それは許可されます。 引数は任意のタイプにすることができます。サポートできるのは、単一のタイプ(たとえば、サポートのみint有効)、任意のタイプ(任意のタイプの引数が許可されます)、または任意の組み合わせの引数タイプ(たとえば、最初の引数がint、残りが文字列)です。 関数には最大数の引数がある場合があります(特にリソースが有限であるため)が、少なくとも2つの引数をサポートする必要があります。 サンプル: f() 返す 0 f(1)またはf("a")返す1 f([1, 2, 3])13つの引数ではなく配列が渡されたときに戻ります f(1, 10)またはf(1, "a")返す2 これはコードゴルフであるため、最も優れたソリューションは、使用するバイト数が最も少ないソリューションです。

21
最長の非繰り返し部分文字列
入力として文字列を指定すると、2回以上文字を持たない最長の連続部分文字列を見つけます。そのような部分文字列が複数ある場合は、どちらかを出力できます。必要に応じて、入力が印刷可能なASCII範囲にあると想定できます。 得点 回答は、最初に独自の最長の非繰り返し部分文字列の長さによってランク付けされ、次にその合計長さによってランク付けされます。両方の基準でスコアが低いほど優れています。言語によっては、これはおそらくソース制限のあるコードゴルフの挑戦のように感じるでしょう。 自明 1、x(言語)または2のスコアを達成する一部の言語では、x(Brain-flakおよびその他のチューリングターピット)は非常に簡単ですが、最長の非繰り返し部分文字列を最小化することが課題となる他の言語もあります。Haskellで2点を獲得するのはとても楽しかったので、このタスクが楽しい言語を探すことをお勧めします。 テストケース "Good morning, Green orb!" -> "ing, Gre" "fffffffffff" -> "f" "oiiiiioiiii" -> "io", "oi" "1234567890" -> "1234567890" "11122324455" -> "324" 得点提出 次のスニペットを使用してプログラムを採点できます。 コードスニペットを表示 input.addEventListener("input", change); // note: intentionally verbose :) function isUnique(str) { var maxCount = 0; var counts = {}; for(var i = …

30
Flippign Lettesr Aroudn
チャットでは、私たちは多くの場合タイプが速いため、メッセージを投稿する前に文字の順序を実際に見ません。怠け者なので、単語の最後の2文字を自動的に交換するプログラムが必要ですが、遅すぎる応答を望まないため、コードは短くなければなりません。 あなたはそれを受け入れることを希望する場合はあなたの仕事は、与えられた文字列内の各単語の最後の2つの文字(ワードので、反転するプログラム書くことであるThanskにターンThanks)。言葉はで区切られた英語のアルファベットで二つ以上の文字の配列である単一のスペース。 文字列/リストの文字入力のみアルファベット文字とスペース(ASCII [97から122]、[65から90]および32)を含むことが保証されるよう、あなたは受け取ります。 これらの抜け穴はデフォルトでは禁止されていることに注意しながら、任意のプログラミング言語で、任意の標準的な方法で入力を取得し、出力を提供できます。 出力には、末尾にスペースが1つと、末尾に改行が1つある場合があります。 入力には常に単語(および対応する空白)のみが含まれ、少なくとも1つの単語で構成されます。 これはコードゴルフなので、各言語での最短の提出(バイト単位)が勝ちです! テストケース 文字列は読みやすくするために引用符で囲まれていることに注意してください。 入力->出力 「ありがとう」->「ありがとう」 「あなたのウェルカム」->「どういたしまして」 「これはリンゴです」->「Thsi si na appel」 「Flippign Lettesr Aroudn」->「Flipping Letters Around」 「スワップレットを使用したチャレンジ」->「スワップされたレターを使用したチャレンジ」 または、テストスイートの利便性のために、入力とそれに対応する出力を個別に示します。 ありがとう あなたのウェルカム これはリンゴです Flippign Lettesr Aroudn スワップレットを使用したチャレンジ ありがとう どういたしまして このsi app 手紙をめくる 交換されたレターを使用したチャレンジチャレンジ タイトルをくれたDJMcMayhemに感謝します。これはもともとCMCでした。
33 code-golf  string 

30
nで終わり、nで割り切れる桁の合計がnになる最小の正の整数を見つける
それはすべてタイトルにあります... 入力として正の整数n>=12を取り、...タイトルが言うことをします。 はい、これはOEIS A187924にあります。 いくつかのテストケース 12 -> 912 13 -> 11713 14 -> 6314 15 -> 915 16 -> 3616 17 -> 15317 18 -> 918 19 -> 17119 20 -> 9920 40 -> 1999840 100-> 99999999999100 これはcode-golfです。バイト単位の最短コードが勝ちです!

30
数字を最大桁で減らす
仕事: 10進法で整数を指定した場合、次のように1桁の10進数に減らします。 数値を10進数のリストに変換します。 最大桁Dを見つける リストからDを削除します。Dが複数ある場合は、左から1番目(最も重要な位置)を選択します。他のすべてはそのまま残ります。 結果のリストを10進数に変換し、Dを掛けます。 数値が9より大きい(10進数が1桁以上)場合は、手順全体を繰り返して、結果をそれに入力します。1桁の結果が得られたら停止します。 結果を表示します。 例: 26364 -> 1. 2 6 3 6 4 2. The largest digit is 6, so D=6 3. There are two occurrences or 6: at positions 1 and 3 (0-based). We remove the left one, at position 1 and get the list …

29
ドル紙幣オークション
これは、ゲーム理論におけるドル札オークションゲームのKOTHチャレンジです。その中で、ドルは最高入札者に売られています。入札単価は5¢単位で上昇し、敗者も入札単価を支払います。損失を削減するために、両プレイヤーは入札戦争をドルの価値をはるかに超えてエスカレートするという考え方です。 ボットがそれよりも賢いことを望みましょう。 net.ramenchef.dollarauction.DollarBidderクラスを拡張して、このゲームをプレイするボットを作成します。nextBid他のボットの以前の入札に基づいて、ボットの次の入札を返すメソッドを実装する必要があります。必要に応じて、このnewAuctionメソッドを使用して、対戦相手のボットのクラスで各オークションをリセットすることもできます。 public abstract class DollarBidder { /** * Used by the runner to keep track of scores. */ long score = 0; /** * (Optional) Prepare for the next auction. * * @param opponent The class of the opponent's bot. */ public void newAuction(Class<? extends DollarBidder> opponent) {} …

1
微小重力ボール
高度な銀河間宇宙ステーションにいます。重力の研究で未成年であるあなたの友人が、ボールを動かす方法として微小重力を使用するゲームを作成しました。 彼女は、4つの方向矢印と、左に座っているボールを持つ迷路のような構造を持つ小さなコントローラーをあなたに渡します。彼女はゲームの仕組みを説明し始めます。 左<と右の2つの方向ボタンがあります>。 また^、上下に2つの重力ボタンがありますv(少なくとも参照フレームから) これらの矢印ボタンを使用して、画面上でボールを動かします。 「従う必要があるいくつかのルールがあります。」彼女が言います カップに到達する前に、すべてのプラットフォームを横断する必要があります \ / 矢印< > ^ vはボールの動きを指定するために使用されます 重力は^ v(上下)です。これにより、ボールはその方向の次のプラットフォームまでずっと移動します。(距離は上下で計算されません) ボールを失うのは悪いことです!ボールがプラットフォームに到達しないように、端から落ちたり、重力を切り替えすぎないでください 移動は次のステップでカウントされます < > ルール1が守られている限り、ボールはどの方向からでもカップに入ることができます。 ボールが浮かないように重力の方向を指定する必要があります 規則1と規則4に従う限り、動きはランダムになる場合があります 解決できない場合は、FalseまたはInvalidを出力します ボール、プラットフォーム、カップの簡単な例: v o ---\ / v> o ---\ / v>> o ---\ / v>>> o ---\ / v>>>> ---\o/ 同じプラットフォームを再度横断する例。 v o ---- \ /------- v> o …

30
私のマトリックスアローヘッドですか?
定義 矢印行列はあるマトリックスのすべてのエントリに等しいた0主対角、一番上の行と一番左の列にものを除きます。つまり、マトリックスは次のようになります。 * * * * * * * * 0 0 0 0 * 0 * 0 0 0 * 0 0 * 0 0 * 0 0 0 * 0 * 0 0 0 0 * 各*はゼロ以外のエントリです。 仕事 非負の整数の正方行列が与えられた場合、上記の定義に従って矢じりかどうかを確認します。 配列に相当する言語がポインターや長さ(Cなど)のようなものでない限り、入力として行列のサイズを使用することはできません。常に少なくとも3 x 3になります。 各言語のバイト単位の最短コードが優先されます。 入出力 入力を受信するために、次の形式のいずれかを選択できます。 ネイティブマトリックスタイプのマトリックス(言語にマトリックスがある場合) 2D配列1(それぞれが1行に対応する1D配列の配列) 1D配列(行列は常に正方形であるため) …

8
互いに素な近傍はありません
正の整数のリストが与えられた場合、隣接する整数のペアがすべて素因数を共有するかどうかを出力します。言い換えると、リスト内の隣接する2つの整数が互いに素でない場合にのみ、真実を出力します。 さらに他の言葉で:正の整数のリスト[a 1 a 2 …a n ]が与えられたら、 gcd(a 1、a 2)> 1 && gcd(a 2、a 3)> 1 &&…&& gcd(a n-1、a n)> 1。 リストには常に少なくとも2つの要素が含まれます(n≥2)。 しかしながら… この課題は制限されたソースでもあります。答えのコードポイント(コードページがどのようなものであっても)は、プログラムがチェックする条件を満たさなければなりません。 たとえばprint 2、有効なプログラムです。Unicodeコードポイントのリストとしては[112 114 105 110 116 32 50]であり、これはこの条件を満たします。112と114は2の係数を共有します。そして114及び105の共有A因子3、等 しかし、mainすることができません(すみません!)、ユニコードのコードポイントとして有効なプログラムで発生mし、aすなわち、109と97、互いに素です。(ありがたいことに、提出は完全なプログラムである必要はありません!) プログラムにコードポイント0を含めることは許可されていません。 テストケース 真実: [6 21] -> 1 [502 230 524 618 996] -> 1 [314 112 …

11
整数をエンコードする
与えられた正の整数n > 2。次のように配列に変換します。 2空の配列を返すことに等しい場合 そうでない場合、すべてnの素因数の配列を昇順で作成し、各要素を素数の順序でそのインデックスに置き換え、最後に各要素を配列に変換します たとえば、数値46を配列に変換できます。まず、それをその素因数の配列に変換します。 [2, 23] 数値23は9th番目の素数なので2、空の配列と23で置き換え[9]ます。配列は次のようになります。 [[], [9]] の主な要因9は3および3ですので、 [[], [3, 3]] 両方について同じことを行います3: [[], [[2], [2]]] そして最後に: [[], [[[]], [[]]]] 今、それをエンコードするために、それぞれの開いている括弧をで置き換え1、それぞれの閉じている括弧を0で置き換えて1から、すべての終了ゼロを削除し、最後から1をドロップします。これは2進数です。上記の例を使用して: [ ] [ [ [ ] ] [ [ ] ] ] | | | | | | | | | | | | | | …

12
イワシが大好き
私はイワシが大好きで、それを十分に手に入れることができません。また、私のコンピューターであるOmnilang 5000は言語に依存しません。 私のコンピューターにイワシを体験する喜びを与えるために、さまざまな向きでイワシの缶詰を画面に表示し、最大10個のイワシを表示できる多くのプログラムを彼に提供することにしました。 この課題では、次のパラメーターに基づいてプログラムを作成する必要があります。 入力 数値(0〜10)と次の「LR」(それぞれ左または右を表す)のいずれかからの文字。例:3Lまたは5R; これがプログラムにどのように入力されるかはあなた次第です。 出力 イワシの開いた缶は、イワシが指示された方向を向いており、キー(「%」文字で表される)と皮をむいた蓋(「@」文字で表される端で巻き上げられた缶)が缶の上部にあります。 すべてのイワシは、入力で示された方向を向く必要があります。 すべてのイワシは、g( " )"または " (")と尾 " ><"の間に5文字の長さの体を持ちます。 キーと皮をむいたふたロールは、常にイワシの反対方向を向いています。 以下の例に示すように、錫は3次元の外観を持っている必要があります。 スズの最小高さは3イワシです。そのため、数が3未満の場合、入力されたイワシの数とともに、高さが3匹のイワシのスズを表示する必要があります。それ以外の場合、スズは入力で示されたイワシの高さでなければなりません。入力は、だから、0Rまたは0L空のイワシ錫が表示されます。 検証できない他の入力には何も表示されません。 たとえば、「3L」 __________ (__________@% |<*)_____><|| |<*)_____><|| |<*)_____><|| '=========='' 「7R」について __________ %@__________) ||><_____(*>| ||><_____(*>| ||><_____(*>| ||><_____(*>| ||><_____(*>| ||><_____(*>| ||><_____(*>| ''==========' 「2L」について __________ (__________@% |<*)_____><|| |<*)_____><|| | || '=========='' 「0R」について __________ %@__________) …

28
強い言葉ですか?
彼らはそれhateが強い言葉だと言います。その理由を知りたかったので、この言葉をよく見てみました。 すべての子音の後に母音が付いていることに気付きました。それは私にとって非常に強く見えたので、私はそれが言葉を強くするものだと決めました。 もっと強い言葉を見つけたいので、そのためのプログラムが必要です! 強い言葉を見つける 強い単語とは、すべての子音(セット内の文字BCDFGHJKLMNPQRSTVWXZ)の後に母音(セット内の文字)が続く単語AEIOUYです。それでおしまい。他には何も関係ありません。 単語が母音で始まる場合、最初の子音の前の文字について心配する必要はありません。単語に子音がまったく含まれていない場合、自動的に強力な単語になります。 強い単語の例はagate、hateおよびyouです。agate母音で始まりますが、すべての子音の後に母音が続くため、まだ強力な単語です。you子音がないため、強い言葉です。 強い単語の長さに制限はありません。 チャレンジ 入力として空でない文字列を受け取り、それが強い単語であれば真理値を出力し、そうでなければ偽値を出力するプログラムまたは関数を作成します。 明確化 入力は小文字または大文字のどちらで入力するかを決定できます。回答でどれを指定してください。 単語には、いかなる種類の句読点も含まれません。セットにはプレーンな文字のみが含まれABCDEFGHIJKLMNOPQRSTUVWXYZます。 真実の値と偽の値の代わりに、2つの異なる一貫した値を選択して、trueとfalseを返します。これを行う場合は、回答で選択した値を指定します。 あるいは、強い単語に対しては偽の値を出力し、非強い単語に対しては真実の値を出力することができます。 テストケース Input -> Output hate -> true love -> true popularize -> true academy -> true you -> true mouse -> true acorn -> false nut -> false ah -> false strong -> false false …

22
登山グレードを並べ替える
私の最初のコードのゴルフ投稿、間違いをおologiesびします... コンテキスト ロッククライミング(特にボルダリング)では、V / Vermin(米国)の登山グレードは「VB」(最も簡単なグレード)から始まり、「V0」、「V0 +」、「V1」、「V2」、「V3」に進みます、「V4」、「V5」などから「V17」(最も厳しいグレード)まで。 仕事 入力として登山グレードのリスト/配列を取得し、最も簡単なものから最も難しいものに分類されたグレードのリスト/配列を返すか、印刷する必要があります。 入力が空の場合、空のデータ構造を返します。それ以外の場合、入力は常に有効です。 テストケース Input | Output [] | [] ['V1'] | ['V1'] ['V7', 'V12', 'V1'] | ['V1', 'V7', 'V12'] ['V13', 'V14', 'VB', 'V0'] | ['VB', 'V0', 'V13', 'V14'] ['V0+', 'V0', 'V16', 'V2', 'VB', 'V6'] | ['VB', 'V0', 'V0+', 'V2', 'V6', 'V16'] これはコードゴルフの挑戦です。

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