こんにちは、ナナオです。

前回に引き続き競プロを実施していきたいと思います。

今回の問題は以下です。

大文字小文字判定(1) | アルゴ式

実装

以下のように実装しました。

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に変換してあげる必要があるのです。面白いですね。

ということで今回はこれで👍