Hi,

my Name is Florian and i am a Software and Event Engineer. On this page i will try to share as many projects as possible. Feel free to connect with me on any of the platforms linked below.

Text Analysis with Go

Code package main import ( "fmt" "github.com/dariubs/percent" "io/ioutil" "log" "sort" "strings" ) type letter struct { upperCase string lowerCase string count int frequency float64 } type letterList []letter func (l letterList) Len() int { return len(l) } func (l letterList) Less(i, j int) bool { return l[i].frequency > l[j].frequency } func (l letterList) Swap(i, j int) { l[i], l[j] = l[j], l[i] } const lettersInTheAlphabet = 'Z' - 'A' + 1 var letters = make([]letter, lettersInTheAlphabet) func initLetterStruct() { for i := 0; i < lettersInTheAlphabet; i++ { letters[i].upperCase = string(rune('A' + i)) letters[i].lowerCase = string(rune('A' + i + 32)) } } func readFile(relativePath string) string { content, err := ioutil.ReadFile(relativePath) if err != nil { log.Fatalln(err) } return string(content) } func countLetters(inputText string) int { totalCount := 0 for i := 0; i < lettersInTheAlphabet; i++ { letters[i].count += strings.Count(inputText, letters[i].lowerCase) + strings.Count(inputText, letters[i].upperCase) totalCount += letters[i].count } return totalCount } func calculateFrequency(totalCount int) { for i := 0; i < lettersInTheAlphabet; i++ { letters[i].frequency = percent.PercentOf(letters[i].count, totalCount) } } func printResult() { 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", l.upperCase, l.lowerCase, l.count, l.frequency, ) } } func main() { initLetterStruct() //totalCount := countLetters(readFile("plaintext.txt")) totalCount := countLetters(readFile("../encrypt/output.txt")) calculateFrequency(totalCount) sort.Sort(letterList(letters)) printResult() } Makefile # Go parameters GoCMD=go GoBUILD=$(GoCMD) build GoCLEAN=$(GoCMD) clean GoTEST=$(GoCMD) test GoMOD=$(GoCMD) mod BINARY_NAME=tool # To install GoLang please follow the installation instructions on https://go.dev/ all: build build: $(GoBUILD) -o $(BINARY_NAME) -v clean: $(GOCLEAN) rm -f $(BINARY_NAME) deps: $(GoMOD) tidy

July 7, 2022 · 2 min · 265 words · Florian Hoss