円形キーボードスパイラル

これはQWERTYキーボードです。

Q W E R T Y U I O P
 A S D F G H J K L
  Z X C V B N M

We can “spiral out” on this keyboard, starting from G. The
spiral will start at G, go to H, then to Y, then to T, then F, then
V, then B, then N, then J, then U, then R, then D, then C,… etc.
Your challenge is to, given a number 1 ≤ N ≤ 26,
output the first N characters in this spiral. (If
you are confused, refer to the ピクチャー at the end of the post.)

キャッチ?あなたのプログラムのスコアは、スパイラルの中にある文字のインデックスに比例します!

スコアリング

  1. コード内のすべての文字(大文字小文字を区別しない)については、スパイラル内のその文字のインデックスをスコアに追加します(1から開始)。
  2. スパイラルにないすべての文字について、スコアに10を追加します。
  3. 最低得点が勝ちます。

たとえば、プログラム print( "Hello、World!")のスコアは300です。

あなたの便宜のために、私は自動プログラム・グレーダーを作成しました。

<div class=”snippet” data-lang=”js” data-hide=”true”
data-console=”true” data-babel=”false”> <div
class=”snippet-code snippet-currently-hidden”>

var SPIRAL = "GHYTFVBNJURDCMKIESXLOWAZPQ";
function grade(program) {
    var score = 0;
    for(var i = 0; i < program.length; i++) {
        if(/^[A-Za-z]$/.test(program[i])) {
            score += SPIRAL.indexOf(program[i].toUpperCase()) + 1;
        }
        else {
            score += 10;
        }
    }
    return score;
}

input.oninput = function() {
    output.value = "Your program's score is: " + grade(input.value);
}
textarea { width: 500px; height: 6em; font-style: monospace; }



</div> </div>

その他のルール

  • 提出物はプログラムまたは機能です。
  • それぞれ0または1から始まり25または26で終了する N
    を取ることができますが、出力は「G」で始まり「GHYTFVBJJDCMKIESXLOWAZPQ」で終わる必要があります。
  • 文字をスパイラルで順番に出力する必要があります。
  • 関数の場合、文字列ではなく文字のリストを返すことができます。
  • 出力の後に改行が1つ続くことがあります。
  • 大文字の代わりに小文字を使用することも、両方を組み合わせて使用​​することもできます。

テストケース

number -> output
1 -> G
2 -> GH
5 -> GHYTF
12 -> GHYTFVBNJURD
15 -> GHYTFVBNJURDCMK
24 -> GHYTFVBNJURDCMKIESXLOWAZ
26 -> GHYTFVBNJURDCMKIESXLOWAZPQ

ピクチャー

regular keyboard

スパイラルが重ね合わされた:

spiral keyboard

ベストアンサー

Japt, 304 264 162 points

@ ConorO’Brienのおかげで40ポイントの節約

Test it online!

できるだけ多くのポイントを節約するために、3文字の各ランをベース36の数字として解釈し、コードポイントに変換することによって、文字列全体が9つのUnicode文字に凝縮されます。プログラム自体はこの圧縮された文字列(引用符も含めて110ポイント)を持ち、それぞれの
c ハーコードを s > G ;最初は の後ろ)
îはこれの最初の{input}文字を取ります。これは暗黙的に出力されます。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です