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

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

15
マナはどれくらい必要ですか?
ダンジョンマスターは、1987年にアタリSTでリリースされた最初のリアルタイムロールプレイングゲームの1つでした。当時のエキサイティングなものの中でも、ルーン文字に基づいたかなり洗練されたスペルシステムを提供していました。 今日のあなたの仕事は、ダンジョンマスターで特定の呪文を唱えるのに必要なマナポイントの数を評価するプログラムまたは関数を書くことです。 「スペルキャスト」システムは、上の図の右上のシアンのボックスです。 スペル、ルーン、マナ ダンジョンマスタースペルは、2〜4個のルーンで構成され、次のカテゴリからこの順番で選択されます。 電力(必須) 元素の影響(必須) フォーム(オプション) クラス/アライメント(オプション) 有効なスペルは次のいずれかであることを意味します。 パワー+エレメンタルインフルエンス パワー+エレメンタルインフルエンス+フォーム パワー+エレメンタルインフルエンス+フォーム+クラス/アライメント 各カテゴリには6つのルーンが含まれ、各ルーンには関連する基本マナコストがあります。 ============================================================================= | Power | Rune | Lo | Um | On | Ee | Pal | Mon | | +-----------+------+------+------+------+------+------+ | | Base cost | 1 | 2 | 3 | 4 | 5 | 6 …

30
バーコードは有効ですか?
EAN-8バーコードは7情報の桁と8チェックサム・デジットを有しています。 チェックサムは、数字に3と1を交互に掛け、結果を加算し、次の10の倍数から減算することで計算されます。 たとえば、数字が与えられた場合2103498: Digit: 2 1 0 3 4 9 8 Multiplier: 3 1 3 1 3 1 3 Result: 6 1 0 3 12 9 24 これらの結果の数字の合計は55なので、チェックサムの数字は60-55 = 5です。 チャレンジ あなたの仕事は、8桁のバーコードが与えられたら、それが有効かどうかを確認することです。チェックサムが有効であれば真理値を返し、そうでなければ偽りを返します。 次のいずれかの形式で入力できます。 バーコードの数字を表す8文字の文字列 8つの整数のリスト、バーコードの桁 非負の整数(1= が指定されていない場合、先行ゼロを想定するか00000001、ゼロが指定された入力を要求できます) EAN-8チェックサムを計算する(つまり、最初の7桁を取得して最後の桁を計算する)ビルトインは禁止されています。 これはcode-golfなので、最短のプログラム(バイト単位)が勝ちです! テストケース 20378240 -> True 33765129 -> True 77234575 -> True 00000000 …

30
制限付きミニチャレンジの警官のスレッド
強盗のスレッド 警官としてのあなたの仕事は、次の3つを選択することです。 プログラミング言語 OEISシーケンス バイトセット 次に、セット内のバイトのみを使用してn番目の用語シーケンスを計算するプログラムを密かにその言語で作成します。強盗がプログラムを把握できるように、3つの情報を明らかにします。 回答は、バイトセット内のバイト数によってスコアリングされ、スコアが高いほど良好です。クラックされた回答の自動スコアは0です。回答が1週間後にクラックされない場合、目的のプログラムを公開し、回答を「安全」とマークすることができます。 回答は、シーケンスのbファイル内のすべての項を計算できる必要がありますが、その後の項を計算する必要はありません。 警官と強盗の両方に対して、シーケンスに1または0のインデックスを付けることができます。 コードが指定されたバイトセットと一致するかどうかを確認するPythonスクリプトを次に示します。

30
最も高い一意の数字を見つける
驚くべきことに、私たちは単純な「最高位の数字を見つける」チャレンジをまだしていませんでしたが、それは少し簡単すぎると思います。 負でない整数の入力が与えられた場合、整数で見つかった最も高い一意の(つまり、繰り返されない)数字を返します。一意の数字がない場合、プログラムは何でもできます(未定義の動作)。 入力は、単一の整数、文字列、または数字のリストとして取得できます。 テストケース 12 -> 2 0 -> 0 485902 -> 9 495902 -> 5 999999 -> Anything 999099 -> 0 1948710498 -> 7 これはコードゴルフなので、各言語で最少のバイトが勝ちます!

28
バイナリ壁を作成する
10を底とする正の整数の配列を指定n > 0すると、は、バイナリ壁の表現を出力します。 これはどのように作動しますか? 各数値をバイナリ表現に変換します。 表現の先頭にゼロを追加して、最も長いものの長さ(つまり、1, 2-> 1, 10->)にし01, 10ます。 1sがレンガであり、sがレンガ0が欠けている壁を作成します。 壁は文字のブロックで、印刷可能な文字はレンガを表し、スペース(32)は欠けているレンガを表します。レンガには任意の文字を選択できます。空白文字でない限り、壁全体で区別する必要はありません。行方不明のレンガ文字はスペースでなければなりません。以下の例*では、レンガに使用しました。 例 入力: [ 15, 7, 13, 11 ] [ 1111, 111, 1101, 1011 ] [ 1111, 0111, 1101, 1011 ] 出力: **** *** ** * * ** ルール ご使用の言語で使用できない他のベースが言語で受け入れられている場合は、ベース10で入力する必要があります。 先頭と末尾の改行が許可されます。 入力は、整数のリスト、個別の引数、または任意の妥当な形式として取得できます。 出力は、改行で区切られた文字列、行の配列、2D配列など、任意の妥当な形式になります。 標準の抜け穴は許可されていません。 テストケース 最初のテストケースでは、すべてのレイヤーの最後に空のブリックがあることに注意してください。 [ 14, 4, …

30
この番号はレプディジットですか?
チャレンジ ぞろ目には、その数字全て等しい正の整数です。 入力として単一の整数を取り、入力数が10進数のrepdigitである場合は真理値を出力し、それ以外の場合は偽値を出力する関数または完全なプログラムを作成します。 入力は正の整数であることが保証されています。 入力を基本10の文字列表現として使用し、免責することができます。 テストケース これらはすべて1000未満の繰り返し桁です。 1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 111 222 333 444 555 666 777 888 999 より大きなリストはOEISにあります。 勝ち バイト単位の最短コードが優先されます。それは、冗長言語での賢い答えが歓迎されないということではありません。

30
指定されたインデックスの文字を削除
(指定されたインデックスの文字列の要素に強く触発された) のインデックスを表す文字列sと整数nを指定すると、-th位置の文字が削除されてs出力されます。sn 0インデックスと1インデックスが許可されます。 0インデックスの場合、n負ではなく、の長さより小さくなりsます。 1-indexingの場合、n正で、の長さ以下になりsます。 s印刷可能なASCII文字のみで構成されます(\x20-\x7E、または から~)。 合理的な入力/出力が許可されます。標準の抜け穴が適用されます。 テストケース(0から始まる): n s output 0 "abcde" "bcde" 1 "abcde" "acde" 2 "a != b" "a = b" 3 "+-*/" "+-*" 4 "1234.5" "12345" 3 "314151" "31451" テストケース(1-indexed): n s output 1 "abcde" "bcde" 2 "abcde" "acde" 3 "a != b" "a = …
33 code-golf  string 

10
マーティンvsデニス-ラウンド1:誰がより多くの担当者を持っていますか?
「世界で最高の2人のコードゴルファー」について多くの課題があったことは知っていますが、これはもう少しユニークで、2人が関与する一連の(将来の)課題のラウンド1です。 あなたの仕事は、デニス♦とマーティンエンダー♦の間で、プログラムの実行時に評価が高い2つの異なる非空白ASCII文字列を返すプログラムまたは関数を記述することです。トリッキーな部分は、レピュテーションが同一(可能性が低い)で、上記の2つの異なる非空白ASCII文字列が「tie」*と異なる場合に、正確な文字列「tie」を出力する必要があることです。 ユーザー名やユーザーIDなどの入力は取得できません。通常どおり、URL短縮サービスは禁止されており、一般的な抜け穴も禁止されています。 例: Let the chosen string for Dennis be "D" and the chosen one for Martin Ender be "M" (should be specified) If Dennis' rep > Martin Ender's rep => D If it's the other way around => M If it's a tie => tie 重要!以下のソリューションをテストするためにネクタイに影響を与えることのみを目的としたDennis&Martinによる投稿への投票は、Stack Exchangeネットワーク全体で禁止されているターゲットを絞った投票を構成します。ソリューションが適切に出力することをテストする場合は、その中tieのIDを、関係があることがわかっている2人のユーザーのIDに変更します。詳細については、このメタ投稿を参照してください。 * …

30
爆発させる!
入力として正の整数の行列を取り、爆発させます! マトリックスを分解する方法は、外側の境界を含むすべての要素の周囲にゼロを追加するだけです。 入出力フォーマットはいつものようにオプションです! テストケース: 1 ----- 0 0 0 0 1 0 0 0 0 -------------- 1 4 5 2 ----- 0 0 0 0 0 0 1 0 4 0 0 0 0 0 0 0 5 0 2 0 0 0 0 0 0 -------------- 1 4 7 …
33 code-golf  matrix 

13
お誕生日おめでとう、ラファエル・チェッコ!
ラファエル・セコは生産プログラマであるいくつかの最高のためのビデオゲームをZXスペクトラム 80年代後半には、コンピュータ。とりわけ、彼は高い評価を得ているCyber​​noidとExolonを開発しました。 Raffaeleは2017年5月10日に50歳になります。私たちの多くがこれらの素晴らしいゲームをプレイして過ごした幸せな時間と、彼らがもたらしたモチベーションのために、この挑戦​​は彼への小さな敬意です。 チャレンジ 目的は、Cyber​​noidのメインメニュー画面に見られるものに触発されたが、ASCIIアートで長方形のマーキーを作成することです。 具体的には"Happy birthday Raffaele Cecco "、12x5の長方形の端に沿って回転するストリング(最終スペースに注意)が表示され、スナップショットの間隔は一定です。 たとえば、テキストが時計回りに表示され、反時計回りに回転すると仮定すると(以下のオプションを参照)、長方形のマーキーの3つの連続したスナップショットがあります。 Happy birthd a o y c ceC eleaffaR それから appy birthda H y o R cceC eleaffa それから ppy birthday a H R a occeC eleaff 等々。 ルール 入力は行われません。出力は、STDOUTまたは同等のものを介して、またはグラフィカルウィンドウで行われます。 出力には、実際にテキストの回転が描かれているはずです。つまり、新しいスナップショットごとに上書きする必要があります、移動の印象を与えるために、前のする。これは、たとえば、適切な数の改行を書き込んで画面を効果的にクリアするなど、あらゆる手段で実行できます。これが特定の画面サイズに対してのみ有効である場合は許容できます。答えで指定するだけです。 次のオプションが受け入れられます。 テキストは時計回りまたは反時計回りに表示でき、時計回りまたは反時計回りに回転できます(上記のスナップショットの例では、時計回りの表示と反時計回りの回転を想定しています)。 回転は無限ループで周期的に継続し(プログラムが停止するまで)、任意のフェーズで開始できます。 スナップショット間の一時停止時間はほぼ一定である必要がありますが、0.1〜1秒の間で自由に選択できます。最初のスナップショットを表示する前の最初の一時停止は許容されます。 文字は、大文字、小文字、または大文字と小文字を混在させることができます(上記の例のように)。 先頭または末尾の空白スペースが許可されます。 プログラムまたは機能にはいずれにも、許可されているプログラミング言語。標準的な抜け穴は禁止されています。 可能であれば、出力を示すgifファイル、またはプログラムをテストするためのリンクを提供してください。 バイト単位の最短コードが優先されます。

13
最適なパターンを見つける
以下のような小文字で構成される文字列sが与えられた場合 aabaaababbbbaaba およびなどの正の整数nは4、長さnの文字列tを出力します。これにより、tがsの長さまで繰り返されたときに、できるだけ多くの共通文字を持ちます。与えられた例の場合、最適な出力はaaba、ターゲット文字列と共通の13文字を持っているため、です。 s: aabaaababbbbaaba t: aabaaabaaabaaaba (aaba) ^^^^^^^^ ^ ^^^^ 可能なtはそれ以上ありません。ただし、にはaaaaaab、2つの出力があります。aaaaおよびaabaには、ターゲット文字列と共通の6文字があります。 s: aaaaaab t: aaaaaaaa (aaaa) ^^^^^^ s: aaaaaab t: aabaaaba (aaba) ^^ ^^^^ どちらaaaaかaaba、または出力可能、または必要に応じて両方を出力できます。sは繰り返されないことに注意してください。tのa両方の繰り返される値の末尾は単に無視されます。 テストケース Inputs -> Valid outputs 1 a -> a 1 aa -> a 2 aa -> aa 1 ab -> a b 2 ab …
33 code-golf  string 

30
この数字は三角形ですか?
チャレンジ 正の整数を指定して、それが三角数かどうかを判断し、それに応じて任意の2つの定数の異なる値のいずれかを出力します。 定義 三角形の数は、それらはまた、式で表すことができる1から始まる、連続する正の整数の和として表すことができる数でありn(n + 1) / 2、nいくつかの正の整数です。 テストケース 真実: 1 3 6 10 15 21 55 276 1540 2701 5050 7626 18915 71253 173166 222111 303031 307720 500500 998991 偽物: 2 4 5 7 8 9 11 16 32 50 290 555 4576 31988 187394 501500 999999 ルール エントリは関数またはプログラムの場合があります。 …

10
完璧なナンバープレート
完璧なナンバープレート 数年前から、私は車で走りながら小さなゲームを作りました。近くのナンバープレートが「完璧」かどうかを確認しました。比較的まれですが、見つけたときは刺激的です。 ナンバープレートが完璧かどうかを確認するには: A = 1、B = 2、... Z = 26で文字を合計します。 数字の連続した各チャンクを取り、それらを合計します。これらの合計を乗算します。 パート1とパート2の値が等しい場合、おめでとうございます!完璧なナンバープレートが見つかりました! 例 License plate: AB3C4F Digits -> 3 * 4 = 12 Chars -> A + B + C + F = 1 + 2 + 3 + 6 = 12 12 == 12 -> perfect! License plate: …

20
制限速度を超えていますか?
アスキーアートの道とそれを横断するのにかかった時間を考えると、スピードを出しているかどうかを教えてください。 単位 距離はの任意の単位ですd。時間はの任意の単位ですt。 道 簡単な道は次のとおりです。 10===== 10手段10 dあたりt。それが道路の制限速度です。道路は5 =秒なので、d5です。したがって、0.5 tでその道路を横断する場合、5 / 0.5 = 10なので10 dあたりに行きましたt。その道路の制限速度は10なので、制限速度内にとどまりました。 しかし、0.25 tでその道路を横断する場合、5 / 0.25 = 20 なので20 dあたり20になりました。その道路の制限速度は10なので、制限速度を10超えました。t 例と計算 入力1は道路の移動にかかった時間であり、入力2は道路そのものです。 これが複雑な道です。 Input 1: 1.5 Input 2: 5=====10===== 最初の道(最初の5 =秒)で(合法的に)行った最速は5 dあたりtです。5(距離)を5(速度制限)で割った値は1であるため、その道路を走行できた最速は1 tです。 次の道路では、制限速度は10で、距離も5です。横断できる最速は0.5(5/10)です。最小時間を合計すると1.5になります。つまり、正確に速度制限に達しました。 注:ある道路では非常に速く、別の道路では非常に遅く、1.5でクロスする可能性がありますが、ここではベストを想定しています。 最後の例: Input 1: 3.2 Input 2: 3.0==========20=== 最初の道路は長さが10で、速度制限は3です。したがって、最短時間は3.33333 ...(10/3)です。 2番目の道路は3本の長さで、速度制限は20なので、最小時間は0.15(3/20)です。 時間を合計すると3.483333333になります... 3.2でそれを超えたため、どこかでスピードを上げる必要がありました。 …

30
画面解像度を教えてください!
特定の形式でデバイスの画面解像度を出力します[width]x[height](括弧なし)。たとえば、出力は次のようになります1440x900。 以下は、独自の画面解像度を確認するために使用できるオンラインテスターです。
33 code-golf 

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