commit
ee57c3fe68
4 changed files with 138 additions and 0 deletions
Binary file not shown.
@ -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 |
@ -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