開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Go (プログラミング言語)
プログラミング言語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 コメント:
コメントを投稿