Browse Source

first commit

master
Klaus Wendel 5 years ago
commit
ee57c3fe68
  1. BIN
      Hormonspiegel
  2. 0
      README.md
  3. 22
      doc.go
  4. 116
      main.go

BIN
Hormonspiegel

Binary file not shown.

0
README.md

22
doc.go

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

@ -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…
Cancel
Save