CS:GOで私はどれくらい良いですか?

あなたの仕事には、CS:GOのフルネーム/ショートネームの入力文字列が与えられます( Counter- Strike:Global Offensive
、コンピュータゲーム)ランクは、ランク番号を表す1から18の整数を返します。数値が高いほど、CS:GOで上位にランクされていることを意味します。

入力

CS:GOランクのフルネームまたはショートネームのいずれかを表す文字列。あなたのコードは、両方のケースを処理できる必要があります。

出力

指定された入力のランク番号を表す整数。
0-索引付けまたは1-索引付けでは、それぞれ0-17および1-18として出力できます。

テストケース:

テストケースでは、出力として1〜18を使用しますが、0のインデックスを使用している場合は1を引いてください。
SNは短い名前を意味します。

Full name                     SN   -> output

Silver I                      S1   -> 1
Silver II                     S2   -> 2
Silver III                    S3   -> 3
Silver IV                     S4   -> 4
Silver Elite                  SE   -> 5
Silver Elite Master           SEM  -> 6
Gold Nova I                   GN1  -> 7
Gold Nova II                  GN2  -> 8
Gold Nova III                 GN3  -> 9
Gold Nova Master              GNM  -> 10
Master Guardian I             MG1  -> 11
Master Guardian II            MG2  -> 12
Master Guardian Elite         MGE  -> 13
Distinguished Master Guardian DMG  -> 14
Legendary Eagle               LE   -> 15
Legendary Eagle Master        LEM  -> 16
Supreme Master First Class    SMFC -> 17
Global Elite                  GE   -> 18
ベストアンサー

Ruby、 120 111 100 99バイト

->x{x.tr!'a-z ','';x.gsub!(/I.*/){$&.sum%18%11};'

   '[x.sum%36%20+x.ord%4].ord}

Stack Exchangeソフトウェアがソースコード内の多くの印刷不能なものをmangleするので、Hexdump:

00000000: 2d3e 787b 782e 7472 2127 612d 7a20 272c  ->x{x.tr!'a-z ',
00000010: 2727 3b78 2e67 7375 6221 282f 492e 2a2f  '';x.gsub!(/I.*/
00000020: 297b 2426 2e73 756d 2531 3825 3131 7d3b  ){$&.sum%18%11};
00000030: 270e 0f0d 0920 2010 0102 0304 0511 0a20  '....  ........ 
00000040: 1206 200b 0c20 0708 275b 782e 7375 6d25  .. .. ..'[x.sum%
00000050: 3336 2532 302b 782e 6f72 6425 345d 2e6f  36%20+x.ord%4].o
00000060: 7264 7d                                  rd}

ruby – オンラインで試す “>オンラインで試してみてください!

(注:私はTIO上の “コード”ボックスにキャリッジリターンを得る方法を考え出すことができないので、TIOバージョンは
X MGEでは 13 の代わりにを使用します)。

説明:

x.tr!'a-z ',''

これにより、すべての小文字と空白が入力から削除されます。

x.gsub!(/I.*/){$&.sum%18%11}

これは、文字列中の I
を検索し、見つかった場合はそれを文字列の最後に置き換えます(ブルートフォース検索で見つかった)ローマ数字。

'junk'[more junk].ord

迷惑メールの最初のセクション(および ord )は、
[7,8,9,10,11,16,21,22,3,13,18,19,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18、対応するインデックスに適切なバイトを含む文字列にインデックスを付けることで、
1..18 の範囲に<0、1、6、12、15>

ジャンクの第2セクションは、 ["S1"、 "S2"、 "S3"、...] の値を
[7,8,9、...]
数式は、18の一意の値が存在することを保証しながら、得られた最大値を最小にする簡単なブルートフォース検索によって生成された。

返信を残す

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