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

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

30
単調さを減らしましょう
...しかし、ちょっと、厳密である必要はありません。 厳密に正の整数の空でない配列が与えられた場合、それが以下であるかどうかを判断します。 単調に厳密に減少します。これは、各エントリが前のエントリよりも厳密に少ないことを意味します。 単調な増加はしませんが、厳密には減少しません。これは、各エントリが前のエントリ以下であり、配列が上記のカテゴリに該当しないことを意味します。 上記のどれでもない。 次のコーナーケースに注意してください。 単一の数値を持つ配列は、単調に厳密に減少します(無意味に減少します)。 同じ数が繰り返された配列は、単調な非増加ですが、厳密には減少していません。 ルール プログラムまたは機能を提供できます 入力は、配列、リスト、スペースで区切られた数字の文字列など、任意の合理的な形式で取得できます。 3つのカテゴリに対してそれぞれ3つの一貫した出力を選択できます。例えば、出力は数値とすることができます0、1、2。または文字列1 1、1 0空の文字列。 バイト単位の最短コードが勝つ テストケース 単調に厳密に減少: 7 5 4 3 1 42 41 5 単調に増加しないが、厳密には減少しない: 27 19 19 10 3 6 4 2 2 2 9 9 9 9 上記のどれでもない: 1 2 3 2 10 9 8 7 12 …

18
テンキーの騎士番号
標準テンキーのゼロ以外の数字の場合 789 456 123 チェスナイトを任意の桁に配置し、通常のL字型ジャンプを何回か実行して、正の10進整数をトレースすることを検討してください。このような方法で表現できる正の整数は何ですか? それらの1つは38、ナイトがスタートして3、左と上に移動できるから8です。381そして383また可能です。 3ジャンプが行われない場合、それ自体が可能です(これは許可されています)。5も同様ですが、から他の数字に到達できない5ため、数字5が表示される唯一の数字です。 正の10進整数(必要に応じて文字列として取得できます)を取り、数値がテンキーの騎士によって記述された方法で表現できる場合は真理値を出力または返すプログラムまたは関数を記述しますが、そうでなければ出力しますfalsy値。 バイト単位の最短コードが優先されます。Tiebreakerは以前の回答です 例 真実: 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 18, 38, 61, 81, 294, 349, 381, 383, 729, 767, 38183, 38383, 18349276, 183492761, 618349276 偽物: 10, 11, 50, 53, 55, 65, 95, 100, 180, 182, 184, 185, 186, …

18
piのn番目の小数を見つける
既にpi専用の30の課題がありますが、n番目の小数を見つけるように1つだけ要求されるわけではありません。 チャレンジ 0 <= n <= 10000表示範囲内の任意の整数の場合、πのn番目の小数。 ルール 小数点以下はすべての数字です 3. あなたのプログラムは機能、または完全なプログラムかもしれません 結果を基数10で出力する必要があります n任意の適切な入力メソッド(stdin、input()、関数パラメーターなど)から取得できますが、ハードコードされていません 選択した言語のネイティブの場合は、1ベースのインデックスを使用できます 無効な入力(n == -1、n == 'a'またはn == 1.5)に対処する必要はありません。 少なくとも 10kの小数までサポートする場合、組み込みが許可されます これは最短のコードであり、最速のコードではないため、ランタイムは関係ありません これはcode-golfで、バイト単位の最短コードが勝ちです テストケース f(0) == 1 f(1) == 4 // for 1-indexed languages f(1) == 1 f(2) == 1 // for 1-indexed languages f(2) == 4 f(3) …
33 code-golf  math  pi 

21
キーストロークをシミュレートする
あなたの仕事は、ユーザーが入力するいくつかのキーストロークをシミュレートすることです。 入力 少なくとも1つの「キーストローク」を含む、選択した区切り文字(範囲32〜126以外)を持つ文字列配列または文字列。 この配列には、パッシブキーストローク(単一の文字)とコマンド(括弧内の文字)の2種類の文字列のみが含まれます[ ]。 パッシブキーストローク ASCII文字コード [32-126] コマンド: [B] :バックスペース(最後に追加された文字がある場合は削除します) [C] :すでに書き込まれたものをすべてコピーします [D] :書き込まれた内容をすべて削除します [P] :コピーされたものを貼り付ける 出力 キーストロークによって生成される文字列。 例 ['H', 'e', 'l', 'l', 'o'] -> 'Hello' ['H', 'e', 'l', 'l', 'o', ' ', '[C]', '[P]'] -> 'Hello Hello ' ['[D]', 'D', '[B]'] -> '' ['H', '[C]', 'i', '[P]', '[C]', …
33 code-golf  string 

5
角かっこを作る
すべてのプログラマーは、括弧[]{}()<>が本当に楽しいことを知っています。この楽しさを悪化させるために、織り込まれたブラケットのグループをキュートでファジーな図に変換できます。 のように、バランスの取れた括弧を含む文字列があるとしましょう[{][<(]})>(())。ステップ1は、弦を時計回りに45度回転させることです。(Mathematicaでは、これはほとんどでできますRotate[ur_string,-pi/4])。最初のステップの結果は次のとおりです。 [ { ] [ < ( ] } ) > ( ( ) ) 次に、各文字の間に斜めのスペースを追加します。 [ { ] [ < ( ] } ) > ( ( ) ) 次に、一番左のブラケットから始めて、ブラケットと犯罪のパートナーとの間に四角形を描きます。 +---+ | | | { | | | +---+ [ < ( ] } ) > ( ( …

30
文字列を伸縮させるプログラムを書く
タイトルにある素敵な動詞。 入力文字列を指定したプログラムを作成し、この文字列を「弾性化」して結果を出力します。文字列の伸縮は、次のように行われます。 最初の文字は一度表示されます。2番目の文字は2回表示されます。3番目の文字が3回表示されます。 ご覧のとおり、特定の文字の重複の量は、文字列での以前の出現とは対照的に、文字のインデックスに関連しています。 印刷可能なASCII文字のみを受け取ることができます。次のリンクに基づいて、これらの文字には10進数値32-126があります。 例: Why: Whhyyy SKype: SKKyyyppppeeeee LobbY: LoobbbbbbbYYYYY (最初のbが3回表示され、2番目のbが4回表示され、合計7つのbになるため、7つのbがあることに注意してください)。 A and B: A aaannnnddddd BBBBBBB 最短バイトが勝ちます:)
33 code-golf  string 

24
この番号はレーシアンですか?
正の整数kは、次の場合、レーシアン数です。 ki*i + j*j + i*jfor i、j整数として表現できます。 たとえば、最初の正のロジアン数は次のとおりです。1(i=1、j=0); 3(i=j=1); 4(i=2、j=0); 7(i=2、j=1); 9(i=-3、j=3); ... は、特定のに対して一意ではないことiに注意してください。例えば、も用いて生成することができます、。jk9i=3j=0 これらの数値の他の同等の特性は次のとおりです。 k表すことができるi*i + j*j + i*jためi、j負でない整数。(整数の各ペアについてi、j同じを与える非負整数のペアがありますk) k六角形のグリッド上でテッセレーションを形成する一連の連続した六角形があります(k = 4およびの図を参照k = 7)。(この特性のため、これらの数値はモバイルセルラー通信ネットワークに適用されます。) シーケンスのOEISページでその他の特性を参照してください。 チャレンジ 正の整数が与えられた場合、それがレーシアン数であれば真の結果を出力し、そうでなければ偽の結果を出力します。 プログラムまたは関数は1000、データ型の制限まで、または1分未満で入力を処理する必要があります。 コードゴルフ。最短勝。 テストケース 次の数値は、真の結果を出力するはずです。 1, 4, 7, 12, 13, 108, 109, 192, 516, 999 次の数値は偽の結果を出力するはずです。 2, 5, 10, 42, 101, 102, 128, …
33 code-golf  math  number  number-theory  decision-problem  code-golf  kolmogorov-complexity  code-golf  sequence  code-golf  path-finding  chess  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  math  arithmetic  code-golf  code-golf  number  code-golf  geometry  code-golf  math  code-golf  code-golf  kolmogorov-complexity  alphabet  code-golf  regular-expression  hexagonal-grid  king-of-the-hill  path-finding  java  code-golf  string  sorting  code-golf  string  grid  code-challenge  compression  code-golf  random  code-golf  sequence  arithmetic  code-golf  number  grid  tiling  code-golf  tips  code-golf  sequence  number-theory  recursion  code-golf  string  grid  code-golf  math  number  combinatorics  permutations  string  code-challenge  code-golf  sequence  number-theory  subsequence 

11
どの曲が再生されていますか?
このxkcdに触発された あなたはシャザムで働いており、彼らはあなたのためのプロジェクトを持っています。一部の顧客は、アプリが携帯電話で多くのスペースを占有していることに不満を持っているため、アプリのライトバージョンをコーディングしてほしいと考えています。残念ながら、既存のコードは「na」という単語しか理解できないため、すぐに出荷する必要があります。それは大丈夫です、私たちは持っているもので最善を尽くします。 チャレンジ ユーザー入力またはコマンドライン引数を取る完全なプログラムを作成し、曲のタイトルとアーティストを印刷する必要があります。プログラムのサイズについて不満を持っているお客様を修正しようとしているため、コードはできるだけ短くする必要があります。入力はnaのみで構成された文字列であり、その間に単一のスペースがあります。小文字/大文字は任意です。これは有効な入力と見なされます:Na Na nA na NAこれは無効な入力です:nah nah NA naNa bananaどの曲が再生されているかを判断し、正確に次の形式で出力する必要があります。 Song: <trackname> Artist: <artist> 入力が正確に 8 naの場合、これは2つの別個の曲に一致するため、両方を印刷する必要があります。 Song: Batman Theme Artist: Neal Hefti そして Song: Na Na Hey Hey Kiss Him Goodbye Artist: Steam 入力が正確に 10 naの場合、次を印刷する必要があります。 Song: Katamari Damacy Artist: Yuu Miyake 入力が正確に 11 naの場合、次を印刷する必要があります。 Song: Hey …

30
アレイを統合する
タスクは簡単です。intの配列を統合します。このアレイの統合は、次のもので構成されています。 0のすべてのインスタンスは、配列の最後に移動する必要があります。 ゼロ以外の整数の間に0があってはなりません。 すべての非ゼロインデックスは順序を保持する必要があります。 チャレンジ 最小バイト数で配列を統合します。 ランダムな整数を使用して、言語の最大サイズまでのランダムな長さの配列を統合しています。入力はあなたの言語にとって自然な方法かもしれません。 例 入力 0 5 8 8 3 5 1 6 8 4 0 3 7 5 6 4 4 7 5 6 7 4 4 9 1 0 5 7 9 3 0 2 2 4 3 0 4 8 7 3 1 …

15
シンコペーションを見つける
q四分音符をe表すsと8 分音符を表すs のみで構成される文字列の入力が与えられると、シンコペーションされる四分音符のインデックスを出力します。 シンコペーションは複雑ですが、この課題のために、「シンコペート」の定義は非常に単純です。つまり、「オフビート」で始まる4分音符、つまりn / 4で「and」としてカウントされるビートです。時間。 あるいは、奇数の8分音符が先行する4分音符として定義することもできます。たとえば、*以下のマークが付いたノートはシンコペートされていると見なされ、そのインデックスも表示されます。 eqqeqqeqqe ** ** 12 78 Output: 1 2 7 8 入力は、常に4/4時間の整数の小節から構成されます(4分音符は1小節の4分の1、8分音符は1小節の8分の1)。(入力も空になることはありません。)出力は、数字を含まない区切り文字または配列/リスト/などで区切られた要素を持つ単一の文字列にすることができます。出力は、必要に応じて1から始まる(つまり、最初のインデックスが0ではなく1)場合があり、任意の数値ベース(単項、十進など)になる場合もあります。 これはcode-golfであるため、バイト単位の最短コードが優先されます。 テストケース: In Out ----------------------------------------------- eqqqe 1 2 3 qeqeq 2 qqqeqqeeeeqeqeqeqqeqqeqq 4 5 10 14 19 20 eeeeeqeeqeeqqqqeqeqeeqe 5 8 11 12 13 14 18 21 qqqq <none> eeeeeeee <none>
33 code-golf  music 


29
プレフィックスコードですか?
情報理論では、「プレフィックスコード」とは、どのキーも別のキーのプレフィックスではない辞書です。言い換えれば、これは、文字列が他の文字列で始まらないことを意味します。 たとえば、{"9", "55"}はプレフィックスコードですが、そうで{"5", "9", "55"}はありません。 これの最大の利点は、エンコードされたテキストを区切り文字なしで書き留めることができ、一意に解読できることです。これは、常に最適なプレフィックスコードを生成するHuffmanコーディングなどの圧縮アルゴリズムに現れます。 タスクは簡単です。文字列のリストが与えられたら、それが有効なプレフィックスコードかどうかを判断します。 あなたの入力: 妥当な形式の文字列のリストになります。 印刷可能なASCII文字列のみが含まれます。 空の文字列は含まれません。 出力は、真/偽の値になります。有効なプレフィックスコードの場合はTruthy、そうでない場合はfalseyです。 真のテストケースを次に示します。 ["Hello", "World"] ["Code", "Golf", "Is", "Cool"] ["1", "2", "3", "4", "5"] ["This", "test", "case", "is", "true"] ["111", "010", "000", "1101", "1010", "1000", "0111", "0010", "1011", "0110", "11001", "00110", "10011", "11000", "00111", "10010"] いくつかの誤ったテストケースを次に示します。 ["4", "42"] ["1", "2", …

18
ピタゴラスのもう一方の足
ピタゴラスは戦争で足を膨らませました。それは切断されなければならず、彼は死にそうになったが、彼は乗り越えて完全に回復した。今、松葉杖で歩いて1年後、彼は義足を手に入れる特権を得ます!ただし、適合するものはいくつかありますが、どれですか? タスク ピタゴラストリプルの一方の足の長さである正の整数を入力として指定すると、もう一方の足のすべての可能性が出力されます。たとえば、最小のピタゴラストリプルは(3,4,5)で、長さ3と4の2本の脚と長さ5の斜辺を持つ三角形を形成します。 例 Leg:5 12 Leg:28 21 45 96 195 Leg:101 5100 Leg:1001 168 468 660 2880 3432 4080 5460 6468 10200 38532 45540 71568 501000 ルール 入力は単一の正の整数になりnます。 出力は、任意の順序、任意の区切り文字、任意のベース(このベースは一貫している必要があります)、オプションの開始ブレースと終了ブレース、およびオプションの末尾空白を使用できます。つまり、1 2 3、[1,2,3]、および1,11,111すべてこの出力仕様に合います。 あなたはnあなたの言語の制限の4番目のルートの4分の1より大きくなることは決してないと仮定するかもしれません(ライブラリを使わないで)。実際には、入力がこれまたは10,000のいずれか少ない方より少ないと仮定できます。 ピタゴラスがあなたを待っているので、コードをすばやく短く書いてください!
33 code-golf 

5
重力シミュレーター
ステートメント 2Dグリッドに落ちる一連のボールの静止画が表示されます。このグリッドは不変で壊れない壁に囲まれているため、すべてのアクションが壁に含まれています。あなたの仕事は、重力がすべての作業を行った後、シナリオの状態がどうなるかを決定することです。 グリッド内の要素 - 床、落下するボールの方向を変えません。 \ 右スライド、ボールのパスを1つ右に変更します。 / 左スライド、ボールのパスを1つ左に変更します。 o ボール。 ルール ボールが落ちる。 床とスライドは落ちません。 ボールがスライドを打って壁(\#または#/)を通過したり、床を横切ったりすると、スライドは床として機能します。 ボールが別のボールに当たった場合、ボールは1つのボールになりますが、両方のボールの合計までパワーを増やします。 (結合された)新しいボールは、通常どおりに動作し続けます。 ボールがそれ以上移動できなくなると、その力に置き換えられます。 ボールのパワーは常に最大9です。 入力 グリッドは、選択した言語で最も短い名前の文字列変数で指定されます。デフォルトではa、入力として使用します。受け取ったとおりの入力のサンプル: ##########\n# \ #\n#o #\n# - -\o #\n#/- \ #\n# \oo-/\#\n#-/ \ /#\n# \ \ #\n# /#\n########## 生成されたランダムグリッドの場合はhttps://repl.it/B1j3/2を使用します。代わりに生成されたページを使用します(広告なし、がらくたなし、入力と出力のみ) 注改行があります\n。入力を画面に印刷すると(チャレンジには不要)、次のように表示されます。安全なスペースに4つのパズルを並べましたが。 ########## ########## ########## ########## # \ # # o -/# # …

4
ASCIIを分割する
ASCIIと改行で95の印刷可能文字が与えられた場合、それを2つの等しい48文字グループ(以降、グループAおよびグループBと呼びます)に分けます。2つのグループ間で、選択した 1対1のマッピングを作成します(完全な裁量権があります)。言い換えれば、Aにマッピングするかもしれないaし、その逆もまた同様で、しかしAまたにマッピングするかもしれない>それはあなたがあなたのプログラムのために必要なものだ場合、およびその逆。 ASCIIを2つのグループに分割したら、各グループの文字のみを使用して、それぞれ2つのプログラムや関数を作成します。つまり、グループAの文字のみを使用する1つのプログラム/関数と、グループBの文字のみを使用する別のプログラム/関数を作成します。 これらのプログラムは、入力として1文字を受信できる必要があります。グループAの文字で書かれたプログラムは、入力がグループAの文字である場合は同じ文字を出力/返す必要があり、グループBの文字を受け取った場合はマップされたグループAの文字を返します。グループAプログラムは常にグループA文字を出力する必要があります。同様に、グループBプログラムは、グループBの文字である場合は同じ文字を出力し、入力がグループAの文字である場合はマップされたグループBの文字を出力する必要があります。 それはそれほど明確ではないかもしれないので、ここに例を示します。すべての大文字がグループAにあり、すべての小文字がグループBにあり、これらの文字の1対1マッピングが1対1であると選択した場合、次のようになります。サンプル入出力: プログラムA: Input Output A A D D a A q Q プログラムB: Input Output A a D d a a q q その他の規則: 2つのプログラムは同じ言語である必要はありません。 両方のプログラムまたは両方の機能である必要はありません。1つはプログラムであり、もう1つは関数である可能性があります。 それらは同じように機能する必要はなく、同じような長さである必要はありません。それらは上記の他のルールを満たしている必要があります。 はい、プログラムの1つだけが改行を使用でき、スペースを使用できるのは1つだけです(これは同じプログラムでも異なるプログラムでもかまいません)。 各プログラムで48文字すべてを使用する必要はありません。 通常の標準的な抜け穴は禁止されています。すべてのプログラムは自己完結型である必要があり、選択したマッピングを含むファイルはありません。 採点基準:code-golf。具体的には、2つのプログラムのテキストのバイトの合計。 次のように回答を投稿してください。 言語-#バイト+言語-#バイト=#バイト マッピングの明確な説明。複雑な場合は、次のようなチャートを使用します。 ABCDEFGHIJKLMNOPQRSTUVWXYZ (etc.) zyxwvutsrpqonmlkjihgfedcba (etc.) または、それを説明するだけで(最初の48個のマップから最後の48個のシーケンスに)、通常どおりに答えを続けることができます。

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