0507
LOGS
カプレカ数
なるものを知る- 早速計算するプログラムを golang で AI に書かせてみる
- 先にモジュールをインストールする必要があるので以下のコマンドを実行
> go mod download github.com/google/go-github/v32
- できたらコードを書く
- 以下は3桁のカプレカ数を手続き的に計算するコード
package main import ( "fmt" "sort" "strconv" ) func main() { for i := 100; i <= 999; i++ { if isCaprekarNumber(i) { fmt.Printf("%d is a Kaprekar number\n", i) } } } func isCaprekarNumber(n int) bool { str := strconv.Itoa(n) digits := make([]rune, len(str)) for i, c := range str { digits[i] = c } sort.Slice(digits, func(i, j int) bool { return digits[i] < digits[j] }) ascending := atoi(string(digits)) sort.Slice(digits, func(i, j int) bool { return digits[i] > digits[j] }) descending := atoi(string(digits)) diff := descending - ascending if diff == n { fmt.Printf("%d - %d = %d\n", descending, ascending, diff) } return n == diff } func atoi(s string) int { n, _ := strconv.Atoi(s) return n }
実行してみた
954 - 459 = 495 495 is a Kaprekar number
よしよし.できている.
Tour of Go の続き
- 頭大文字はエクスポートされたもの.小文字はエクスポートされていない.
- e.g.
math.Pi
←◯math.pi
←✕
- 関数の書き方
- 引数には型をつける(
変数名 型
の書き方)func add(x int, y int) int { // こう書くこともできる // func add(x, y int) int { return x + y }
fmt
もインポートしないとだめなんだな- 関数のレスポンスの型の書き方
func swap(x, y string) (string, string) { return y, x }
- 変数宣言は
var
で,後ろに型
var c, python, java bool // 初期値も設定できる var i, j int = 1, 2 // 関数内なら := の代入文を用いて暗黙の型宣言ができる k := 3
- 頭大文字はエクスポートされたもの.小文字はエクスポートされていない.
中途半端だが,今日はここまで