お試し期間と乙女指揮官は似ている(混乱中)。うわぁーーん! もう今日はやる気なくなった!! エリチカ、おうちに帰る!!! 級の衝撃だわ。
3ヶ月といわず末永く爆発しろ。
SQちゃんと覚えるRuby String#succ
A, B, Cから始まってZまで行ったら、
p "A".succ # => "B"
p "B".succ # => "C"
p "Y".succ # => "Z"
次はAA, AB, ACって数えていくと、
p "Z".succ # => "AA"
p "AA".succ # => "AB"
p "AB".succ # => "AC"
SQって何番目になると思う?
p "A".upto("SQ").count # => 511
String#uptoはString#succを使ってEnumeratorオブジェクトを返し、Enumerable#countが要素数を数えて返すので、組み込みライブラリのみで簡潔に数えられる。
愚直に数えるので実行効率はよくないけれど、SQちゃんに問われた際に間違う余地なく安心して即答できる。
範囲式を使えばより短く書けるけど、閉区間と半開区間を間違えないよう注意。
p ("A".."SQ").count # => 511
p ("A"..."SQ").count # => 510
乗算使いつつRubyぽく書くならこう?
ALPHA = 26
NUM = 10
p "SQ".chars.map { (it.to_i(ALPHA + NUM) - NUM + 1).tap { raise unless it.positive? } }.reverse.map.with_index {|i, idx| i * ALPHA ** idx }.sum
念を押されても、今はアメリアちゃんいるし事情が違うよね。
サラン団長の方も、なんで今更とか言われても困るがな。放置してた晶のせいでは。
事後に観るよりはよかったのかな。