2020年1月18日土曜日

開発環境

入門Goプログラミング (Nathan Youngman(著)、Roger Peppé(著)、吉川 邦夫(監修, 翻訳)、翔泳社)のUNIT 2(型)、LESSON 11(チャレンジ: ヴィジュネル暗号)の練習問題2の解答を求めてみる。

コード

package main

import (
 "fmt"
 "strings"
)

func main() {
 plainText := "your message goes here"
 replacedPlainText := strings.Replace(plainText, " ", "", -1)
 upperPlainText := strings.ToUpper(replacedPlainText)

 keyword := "GOLANG"
 replacedKeyword := strings.Replace(keyword, " ", "", -1)
 upperKeyword := strings.ToUpper(replacedKeyword)
 repeatedKeyword := strings.Repeat(upperKeyword, len(upperPlainText)/len(upperKeyword)+1)

 message := ""

 for i, c := range upperPlainText {
  t := c + ([]rune(repeatedKeyword)[i] - 'A')
  if t > 'Z' {
   t -= 26
  }
  message += string(t)
 }
 fmt.Println(message)
}

入出力結果(Zsh、PowerShell、Terminal)

% go run ./cipher.go
ECFRZKYGLGRMUSDHRXK
%

0 コメント:

コメントを投稿