Finish lab
This commit is contained in:
parent
88c32093a3
commit
6da3e784cd
9 changed files with 101 additions and 78 deletions
|
@ -34,15 +34,14 @@ func (l letterList) Swap(i, j int) {
|
|||
l[i], l[j] = l[j], l[i]
|
||||
}
|
||||
|
||||
const LettersInTheAlphabet = 26
|
||||
const startUpperCase = 65
|
||||
const lettersInTheAlphabet = 'Z' - 'A' + 1
|
||||
|
||||
var letters = make([]letter, LettersInTheAlphabet)
|
||||
var letters = make([]letter, lettersInTheAlphabet)
|
||||
|
||||
func initLetterStruct() {
|
||||
for i := 0; i < LettersInTheAlphabet; i++ {
|
||||
letters[i].upperCase = string(rune(startUpperCase + i))
|
||||
letters[i].lowerCase = string(rune(startUpperCase + i + 32))
|
||||
for i := 0; i < lettersInTheAlphabet; i++ {
|
||||
letters[i].upperCase = string(rune('A' + i))
|
||||
letters[i].lowerCase = string(rune('A' + i + 32))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -56,7 +55,7 @@ func readFile(relativePath string) string {
|
|||
|
||||
func countLetters(inputText string) int {
|
||||
totalCount := 0
|
||||
for i := 0; i < LettersInTheAlphabet; i++ {
|
||||
for i := 0; i < lettersInTheAlphabet; i++ {
|
||||
letters[i].count +=
|
||||
strings.Count(inputText, letters[i].lowerCase) +
|
||||
strings.Count(inputText, letters[i].upperCase)
|
||||
|
@ -66,13 +65,13 @@ func countLetters(inputText string) int {
|
|||
}
|
||||
|
||||
func calculateFrequency(totalCount int) {
|
||||
for i := 0; i < LettersInTheAlphabet; i++ {
|
||||
for i := 0; i < lettersInTheAlphabet; i++ {
|
||||
letters[i].frequency = percent.PercentOf(letters[i].count, totalCount)
|
||||
}
|
||||
}
|
||||
|
||||
func printResult() {
|
||||
for i := 0; i < LettersInTheAlphabet; i++ {
|
||||
for i := 0; i < lettersInTheAlphabet; i++ {
|
||||
l := letters[i]
|
||||
fmt.Printf(
|
||||
"The letter %s (%s) occurs %d times in the text and the frequencyArray in percent is %0.2f\n",
|
||||
|
@ -83,14 +82,14 @@ func printResult() {
|
|||
|
||||
func plotResult() {
|
||||
var count plotter.Values
|
||||
for i := 0; i < LettersInTheAlphabet; i++ {
|
||||
for i := 0; i < lettersInTheAlphabet; i++ {
|
||||
count = append(count, float64(letters[i].count))
|
||||
}
|
||||
p := plot.New()
|
||||
p.Title.Text = "Letter count"
|
||||
p.X.Label.Text = "letter"
|
||||
p.Y.Label.Text = "count"
|
||||
countBars, err := plotter.NewBarChart(count, vg.Points(LettersInTheAlphabet/2))
|
||||
countBars, err := plotter.NewBarChart(count, vg.Points(lettersInTheAlphabet/2))
|
||||
countBars.Color = plotutil.Color(2)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
|
|
|
@ -10,11 +10,7 @@ import (
|
|||
"unicode"
|
||||
)
|
||||
|
||||
const lettersInTheAlphabet = 26
|
||||
const startUpperCase = 65
|
||||
const endUpperCase = startUpperCase + lettersInTheAlphabet
|
||||
const startLowerCase = 97
|
||||
const endLowerCase = startLowerCase + lettersInTheAlphabet
|
||||
const lettersInTheAlphabet = 'Z' - 'A' + 1
|
||||
|
||||
type keyLetter struct {
|
||||
upperCase string
|
||||
|
@ -76,8 +72,8 @@ func encryptMessage(keyWord []keyLetter, message string) string {
|
|||
} else {
|
||||
keyWordIndex := index % len(keyWord)
|
||||
newLetter := letter + keyWord[keyWordIndex].position
|
||||
if (unicode.IsLower(letter) && newLetter >= endLowerCase) ||
|
||||
(unicode.IsUpper(letter) && newLetter >= endUpperCase) {
|
||||
if (unicode.IsLower(letter) && newLetter > 'z') ||
|
||||
(unicode.IsUpper(letter) && newLetter > 'Z') {
|
||||
newLetter -= lettersInTheAlphabet
|
||||
}
|
||||
encrypted += string(newLetter)
|
||||
|
|
Reference in a new issue