@seahawk1986: Deine Schleife kann man wesentlich kompakter schreiben:
1 2 | for s in test_strings: print(s, len(s) == 5 and set(s) == test_set) |
☺
Anmeldungsdatum: Beiträge: 2669 Wohnort: Hamburg |
@seahawk1986: Deine Schleife kann man wesentlich kompakter schreiben:
☺ |
||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 340 |
Hi, King of Regexp
Das ist auch mein Favorit geworden. Leider unterstützt go (die Sprache versuche ich grad ein bischen zu verstehen) keine Backreference (Engine RE2) - aber es gibt ja genügend Sprachen die z.B. auf PCRE aufbauen. |
||||
Anmeldungsdatum: Beiträge: 17552 Wohnort: Berlin |
Danke, aber der Tag ist ja schon vorbei - die Krone ist wieder vakant. ☺
Hat go denn ein Test.toSet == Muster.toSet && Test.size == 5? Das ist doch auch hübsch elegant, bzw. das ähnliche
|
||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 340 |
Keine Ahnung ob go sowas hat. Habs jetzt so so gebaut. var possiblevals = []string{"a","b","c","d","e"} func result_strings(s string) (bool) { if len(s)!=5 { return false } else { for _, v := range possiblevals { if strings.Index(s, v) < 0 { return false } } } return true } func result_regexp(s string) (bool) { if len(s)!=5 { return false } else { for _, v := range possiblevals { ok, _ := regexp.MatchString(v, s) if ! ok { return false } } } return true } |
||||
Anmeldungsdatum: Beiträge: 2669 Wohnort: Hamburg |
Ehrlich gesagt ist das alles andere als hübsch und schon gar nicht elegant, da es von der Komplexität ein wahrer Alptraum ist - O(s*len(s)*x), bei Nee, der Ansatz über Mengen ist hier schon der optimale - O(s*x) - zudem ist er wesentlich leichter lesbar ☺ |
||||
Anmeldungsdatum: Beiträge: 17552 Wohnort: Berlin |
Elegant - nicht effizient. Elegant daran ist, das mit wenig Aufwand auf leicht erkennbare Weise der Sachverhalt beschrieben wird: Alle Element kommen genau 1x vor. Wenn es etwas wie toSet oder unique gibt, dann ist das wohl schneller und ähnlich kurz und klar - womöglich sogar klarer. |