first commit

This commit is contained in:
Klaus Wendel, archium GmbH 2017-10-04 22:10:50 +02:00
commit ee57c3fe68
4 changed files with 138 additions and 0 deletions

BIN
Hormonspiegel Executable file

Binary file not shown.

0
README.md Normal file
View File

22
doc.go Normal file
View File

@ -0,0 +1,22 @@
// Hormonspiegel project doc.go
/*
Hormonspiegel document
Überprüft anhand von Übereinstimmungskriterien, ob ein Vorname eher
männlich oder eher weiblich ist um z.B. eine nicht näher definierte
Anrede so verläßlich wie möglich als Herr oder Frau bestimmen zu
können.
Sehr gute Vorarbeit bei der Sammlung markanter Wortendungen wurde
hierzu geleistet von:
http://www.herber.de/forum/archiv/1148to1152/1150639_Vorname_maennlich_oder_weiblich.html
Bei der Bewertung der Endungen erhalten hier jedoch längere
Übereinstimmungen entsprechend ihrer Wortlänge einen höheren Wert,
schließlich sind längere Zeichenketten aussagekräftiger als kürzere.
*/
package main

116
main.go Normal file
View File

@ -0,0 +1,116 @@
// Hormonspiegel project Hormonspiegel.go
package main
import (
"fmt"
"os"
"strings"
)
var signals [][][]string = [][][]string{
{
// Female
{"a", "e", "i", "y"},
{"ah", "al", "bs", "dl", "el", "et", "id", "il", "in", "it", "ll", "th", "ud", "uk"},
{"ary", "aut", "bel", "des", "dis", "een", "efa", "eig", "ett", "fer", "got", "ies", "ild", "ina", "ind", "ion", "itt", "jam", "joy", "Joy", "kim", "lar", "len", "lis", "lyn", "men", "mor", "oan", "ren", "rin", "res", "rix", "run", "san", "tas", "udy", "urg", "vig"},
{"ardi", "atie", "borg", "cole", "endy", "gard", "gart", "gnes", "gund", "iede", "indy", "ines", "iris", "iris", "ison", "istl", "ldie", "lilo", "lind", "loni", "lott", "lynn", "mber", "moni", "nken", "oldy", "quel", "riam", "rien", "sann", "smin", "ster", "uste", "vian", "vien"},
{"achel", "agmar", "almut", "becca", "candy", "doris", "echen", "edwig", "irene", "mandy", "rauke", "sandy", "sther", "uriel", "velin", "ybill"},
{"irsten", "lilian", "lorene", "almuth"},
},
{
// Male
{"f", "g", "o", "r", "s", "t", "z"},
{"ai", "an", "ax", "ay", "dy", "en", "ey", "fa", "gi", "hn", "im", "iy", "ki", "ld", "lm", "nn", "oy", "pe", "rc", "rd", "ri", "rk", "ry", "ua", "us", "uy", "ve", "we", "zy"},
{"ael", "ali", "aid", "ain", "are", "arl", "aul", "bal", "bby", "bin", "cal", "cca", "cel", "cil", "cin", "dal", "die", "don", "dre", "ede", "eil", "eit", "emy", "eon", "ffer", "gon", "gun", "hal", "hel", "hil", "hka", "ich", "iel", "ill", "ini", "kie", "lev", "lge", "lip", "lix", "lon", "lob", "lte", "lja", "mal", "met", "mil", "min", "mon", "mre", "mud", "muk", "nid", "nik", "nsi", "oah", "obi", "oel", "örn", "ole", "oni", "oly", "phe", "pit", "rcy", "ram", "rdi", "rad", "red", "rel", "ric", "rge", "rka", "ron", "rnd", "rne", "rre", "rti", "sil", "son", "sse", "ste", "tie", "tof", "ton", "uce", "udi", "uel", "uli", "uke", "uwe", "vel", "vid", "vin", "wel", "win", "xei", "xel"},
{"abel", "akim", "asan", "atti", "dres", "eith", "elin", "ence", "ffer", "frid", "gary", "gene", "hane", "hard", "hein", "idel", "iete", "irin", "jona", "kita", "kola", "land", "lion", "levi", "luka", "mike", "mund", "muth", "nand", "naud", "neth", "niel", "nnie", "ntin", "nuth", "ommy", "önke", "ören", "pete", "rank", "rene", "rick", "ried", "ries", "rlin", "rome", "rtin", "stas", "tell", "tila", "toph", "tony", "tore", "uele"},
{"astel", "benny", "billy", "billi", "elice", "ianni", "laude", "danny", "dolin", "ormen", "ronny", "seyin", "ustel", "ustin", "vanni", "willi", "willy"},
{"iedrun", "hilipp"},
},
}
const usageString string = "usage: name2gender -n name [-g m,w,n] \n\n" +
"arguments:\n" +
" -n name\n" +
" -g (optional) gender list e.g. \"male,female,device\"; (default: \"m,w,n\")\n\n" +
"http://www.archium.org"
var gender = [3]string{"m", "w", "n"}
var name string
var testosteron, oestrogen, hormonspiegel uint8
func main() {
switch len(*(MapCLIArguments())) {
case 2:
copy(gender[:], strings.Split((*(MapCLIArguments()))["-g"], ",")[:])
fallthrough
case 1:
name = (*(MapCLIArguments()))["-n"]
if name != "" {
break
}
fallthrough
default:
fmt.Println(usageString)
return
}
for i := (uint8)(0); i <= 1; i++ {
for j := 0; j < len(signals[i]); j++ {
for _, kv := range signals[i][j] {
if value := j + 1; endOfString(name, value) == kv {
hormonspiegel += uint8(value)
}
}
}
if i == 0 {
oestrogen = hormonspiegel
} else {
testosteron = hormonspiegel
}
hormonspiegel = 0
}
if testosteron > oestrogen {
fmt.Println(gender[0])
} else if testosteron < oestrogen {
fmt.Println(gender[1])
} else {
fmt.Println(gender[2])
}
// Aber notwendig ist selbst das nicht. Anonymen Funktionen können die Parameter direkt übergeben werden:
fmt.Println(func(a, b int) int {
if a > b {
return a
} else {
return b
}
}(3, 4)) // 4
}
func endOfString(chars string, digits int) string {
length := len(chars)
min := func(a, b int) int {
if a < b {
return a
} else {
return b
}
}
return chars[length-min(digits, length) : length]
}
func MapCLIArguments() *map[string]string {
cliAguments := os.Args[1:]
var cliAgumentsMapped map[string]string = make(map[string]string)
for key, value := range cliAguments {
if value[0:1] == "-" {
if len(cliAguments) > key+1 && cliAguments[key+1][0:1] != "-" {
cliAgumentsMapped[cliAguments[key]] = cliAguments[key+1]
} else {
cliAgumentsMapped[cliAguments[key]] = ""
}
}
}
return &cliAgumentsMapped
}