Exercise: rot13Reader
A Tour Of Goの
Exercise: rot13Reader
をやってみました。
正直今の自分のレベルでは難しかった。。
改めて自分の力不足に嘆きたくはなりますが、
どうにかこうにか書けた(書けたのか?)と思いますので、
メモとして残しておきます。
以下がコードです。
package main
import (
"io"
"os"
"strings"
)
type rot13Reader struct {
r io.Reader
}
func (root *rot13Reader) Read(b []byte) (int, error) {
num, err := root.r.Read(b)
if err != nil {
return num, err
}
for i := 0; i < num; i++ {
if ('A' <= b[i] && b[i] <= 'M') || ('a' <= b[i] && b[i] <= 'm'){
b[i] += 13
} else if ('N' <= b[i] && b[i] <= 'Z') || ('n' <= b[i] && b[i] <= 'z') {
b[i] -= 13
}
}
return num, nil
}
func main() {
s := strings.NewReader("Lbh penpxrq gur pbqr!")
r := rot13Reader{s}
io.Copy(os.Stdout, &r)
}
これで実行をすると以下の文がでました。
You cracked the code!