あなたの仕事には、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の一意の値が存在することを保証しながら、得られた最大値を最小にする簡単なブルートフォース検索によって生成された。