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
    
  • 中途半端だが,今日はここまで

results matching ""

    No results matching ""