// 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 }