ikuma-t.

登壇 登壇 検索

IkumaScriptと37進数

ikuma, akuma, xkuma, ukuma…

JSやTSのサンプルコードで、よく自分の名前ikumaを一文字変えて使っているのだけれど、毎回入力するのも面倒なので、スニペット化しました。ikumaを複製するので、ECMAScriptを文字ってIkumaScriptです。

[...Array(26)].map((_, index) => `${(index + 10).toString(36)}kuma`)
// [ 'akuma', 'bkuma', 'ckuma', 'dkuma', 'ekuma', 'fkuma', 'gkuma', 'hkuma', 'ikuma', 'jkuma', 'kkuma', 'lkuma', 'mkuma', 'nkuma', 'okuma', 'pkuma', 'qkuma', 'rkuma', 'skuma', 'tkuma', 'ukuma', 'vkuma', 'wkuma', 'xkuma', 'ykuma', 'zkuma' ]

親の顔よりよくみた連番作成処理を行います。

[...Array(26)].map((_, index) => index)
// [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 ]

実際には+ 10しているので10 ~ 35までの値を含む配列が取得できます。

ここからN進数を利用してアルファベットに変換を行っていきます。文字としての数字は0から9までの10種類しかないので、36進数に変換すると、10 ~ 35がそれぞれa ~ zに相当することになります(36 - 10 = 26個のアルファベットが必要になる)

37進数にはどの記号が採用されるのか

ここでふと疑問に思うのが、37進数以降の場合、アルファベットで賄えない部分はどうなるのかということです。実際にやってみました。

(36).toString(37)
// Uncaught RangeError: toString() radix argument must be between 2 and 36
at Number.toString (<anonymous>)

Number.prototype.toString() - JavaScript | MDNにも記載がありましたが、37以上はエラーになるようですね。

Rubyでも試してみます。

36.to_s(37)
# => (irb):3:in `to_s': invalid radix 37 (ArgumentError)

Integer#inspect (Ruby 3.1 リファレンスマニュアル)

こちらもリファレンスに記載がありましたが、37以上を指定するとエラーになるようです。

おわりに

ikumaという名前が名付けられた経緯には色々な意味があるのですが、時代背景的に悪魔ちゃん命名騒動 - Wikipediaがあったこともあり、あえて一文字ずらして「ikuma」になったみたいな理由もあると以前母から聞きました。

1文字どころかたくさんずらして遊んでます。 — 息子より

ikuma-t

ikuma-t

about

9割笑顔、1割 (´・ω・)