こんにちは、ナナオです。
前回に引き続き競プロを実施していきたいと思います。
今回の問題は以下です。
実装
以下のように実装しました。
package main
import (
"fmt"
)
func main() {
var c string
fmt.Scan(&c)
if int(c[0]) - 96 > 0 {
fmt.Println("lowercase")
} else {
fmt.Println("uppercase")
}
}
ちなみに、 c[0]をintでキャストしているのは、デフォルトだとc[0]はbyte型(正体は uint8)だからです。
uint8 は「0〜255 の数しか入れられない箱」だと思ってください。マイナスの数はそもそも表現できません。
例えば文字としてAが渡されたとき、「A」の文字コードは 65 なのでc[0]は65になります。
ただuint8はマイナスを表現できなので、以下のようになります。
65 − 96 → 0を通り越して255側に回り込む → 225
なので、今回の実装ではマイナスを扱えるようにintに変換してあげる必要があるのです。面白いですね。
ということで今回はこれで👍