Finish lab

This commit is contained in:
Florian Hoss 2022-06-08 16:26:04 +02:00
parent 88c32093a3
commit 6da3e784cd
9 changed files with 101 additions and 78 deletions

View file

@ -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)

View file

@ -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)