first commit
This commit is contained in:
commit
ee57c3fe68
BIN
Hormonspiegel
Executable file
BIN
Hormonspiegel
Executable file
Binary file not shown.
22
doc.go
Normal file
22
doc.go
Normal 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
116
main.go
Normal 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
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user