2019年3月1日金曜日

開発環境

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES) (Alan A.A. Donovan(著)、Brian W. Kernighan(著)、柴田 芳樹(翻訳)、丸善出版)の第3章(基本データ型)、3.3(文字列)、3.5.4(文字列とバイトスライス)、練習問題3.12の解答を求めてみる。

コード

package main

import (
 "fmt"
)

func main() {
 s := []string{"", "a", "ab", "ba", "abcde", "aebdc"}
 for _, s1 := range s {
  fmt.Println("「" + s1 + "」のアナグラムになってるかかどうか。")
  for _, s2 := range s[:] {
   fmt.Print("「" + s2 + "」 ")
   if isAnagram(s1, s2) {
    fmt.Println("アナグラムになっている。")
   } else {
    fmt.Println("アナグラムになっていない。")
   }
  }
 }
}
func iter(a, b string) bool {
 if len(a) == 0 {
  return true
 }
 for i, c1 := range a {
  for j, c2 := range b {
   if c1 == c2 {
    return iter(a[:i]+a[i+1:], b[:j]+b[j+1:])
   }
  }
 }
 return false
}

func isAnagram(a, b string) bool {
 if len(a) != len(b) {
  return false
 }
 return iter(a, b)
}

入出力結果(cmd(コマンドプロンプト)、Terminal)

C:\Users\...>go run sample12.go 
「」のアナグラムになってるかかどうか。
「」 アナグラムになっている。
「a」 アナグラムになっていない。
「ab」 アナグラムになっていない。
「ba」 アナグラムになっていない。
「abcde」 アナグラムになっていない。
「aebdc」 アナグラムになっていない。
「a」のアナグラムになってるかかどうか。
「」 アナグラムになっていない。
「a」 アナグラムになっている。
「ab」 アナグラムになっていない。
「ba」 アナグラムになっていない。
「abcde」 アナグラムになっていない。
「aebdc」 アナグラムになっていない。
「ab」のアナグラムになってるかかどうか。
「」 アナグラムになっていない。
「a」 アナグラムになっていない。
「ab」 アナグラムになっている。
「ba」 アナグラムになっている。
「abcde」 アナグラムになっていない。
「aebdc」 アナグラムになっていない。
「ba」のアナグラムになってるかかどうか。
「」 アナグラムになっていない。
「a」 アナグラムになっていない。
「ab」 アナグラムになっている。
「ba」 アナグラムになっている。
「abcde」 アナグラムになっていない。
「aebdc」 アナグラムになっていない。
「abcde」のアナグラムになってるかかどうか。
「」 アナグラムになっていない。
「a」 アナグラムになっていない。
「ab」 アナグラムになっていない。
「ba」 アナグラムになっていない。
「abcde」 アナグラムになっている。
「aebdc」 アナグラムになっている。
「aebdc」のアナグラムになってるかかどうか。
「」 アナグラムになっていない。
「a」 アナグラムになっていない。
「ab」 アナグラムになっていない。
「ba」 アナグラムになっていない。
「abcde」 アナグラムになっている。
「aebdc」 アナグラムになっている。

C:\Users\...>

0 コメント:

コメントを投稿