Ist das Wort weiblich oder männlich?

12

Schreiben Sie ein Programm oder eine Funktion, die eine einzelne Zeichenfolge enthält, die nur az in Kleinbuchstaben enthält, und einen Wahrheitswert ausgibt oder zurückgibt , wenn das Wort die weibliche Version des Objekts ist, das es darstellt, und einen falschen Wert, wenn es die männliche Version ist. Ist zum Beispiel hendie weibliche Version für Hühnchen und roosterist die männliche Version, henkönnte also produzieren 1und roosterkönnte produzieren 0.

Dies für alle englischen Wörter zu tun , die das Geschlecht widerspiegeln, wäre natürlich viel zu schwerfällig. Ihr Programm / Ihre Funktion muss nur 20 männliche / weibliche Paare unterstützen. Unten sind fünf Sätze von 10 männlichen / weiblichen Paaren aufgeführt, die nach Themen geordnet sind. Wähle zwei beliebige Sets aus. Die insgesamt 20 Paare in diesen beiden Sätzen sind die 40 Wörter, für die Ihr Programm / Ihre Funktion arbeiten muss.

(Format ist masculine_version feminine_version)

  1. Allgemeines

    he she
    him her
    man woman
    boy girl
    male female
    masculine feminine
    guy gal
    lad lass
    mister miss
    sir madam
    
  2. Familiär

    father mother
    dad mom
    pa ma
    son daughter
    brother sister
    husband wife
    grandfather grandmother
    grandpa grandma
    uncle aunt
    nephew niece
    
  3. Tier

    lion lioness
    rooster hen
    stallion mare
    bull cow
    drake duck
    boar sow
    buck doe
    ram ewe
    gander goose
    billy nanny
    
  4. königlich

    king queen
    prince princess
    emperor empress
    duke duchess
    marquess marchioness
    earl countess
    baron baroness
    baronet baronetess
    lord lady
    knight dame
    
  5. Fantastisch

    wizard witch
    giant giantess
    incubus succubus
    nidorino nidorina
    nidoking nidoqueen
    ents entwives
    hanuvoite inimeite
    centaur centaurides
    merman mermaid
    khal khaleesi
    

So können Sie beispielsweise die Kategorien Allgemein und Familiär auswählen. Dann würde jede Eingabe von hebis siroder fatherbis nepheweinen falschen Wert erzeugen, und jede Eingabe von shebis madamoder motherbis niecewürde einen wahren Wert erzeugen.

Die Werte müssen nicht alle den gleichen Wahrheits- / Falschtyp haben, z. B. hekönnen sie produzieren, 0aber sirkönnen sie produzieren false. Sie können davon ausgehen, dass immer nur die 40 speziellen Kleinbuchstaben der beiden ausgewählten Kategorien eingegeben werden.

Die kürzeste Antwort in Bytes gewinnt. Tiebreaker ist früherer Beitrag.

(Diese Herausforderung soll nicht mit aktuellen geschlechtsspezifischen sozialen Themen korrelieren oder Aussagen zu diesen machen .)

Calvins Hobbys
quelle
1
Verbunden.
Martin Ender
Sollte nicht countmännlich sein countess?
mbomb007
@ mbomb007 Nicht unbedingt.
Calvins Hobbys
3
Drei Antworten, alle Retina.
Alex A.

Antworten:

9

Netzhaut , 26 Bytes (Sätze 4, 5)

[^u]es|ee|m.i|y|^...c|d.*a

Retina ist @ MartinBüttners Regex-Sprache. Ich habe nichts spezielles für reguläre Ausdrücke in .NET verwendet, daher können Sie die reguläre Ausdrücke hier bei Regex101 testen . Alternativ können Sie den Grep- GModus von Retina wie folgt verwenden:

G`[^u]es|ee|m.i|y|^...c|d.*a

und Pipe in einer Datei mit einem Wort pro Zeile für Batch-Tests.

Standardmäßig gibt Retina die Anzahl der Übereinstimmungen aus und gibt uns unseren Wahrheitsgehalt / Falschwert. Die Regel "die Werte müssen nicht alle der gleiche Wahrheits- / Falschtyp sein" ist jedoch ziemlich wichtig, da sie marchionesszweimal übereinstimmen und eine Ausgabe von 2 ergeben.

(Die Mod-Verkettungsmethode aus der vorherigen männlichen / weiblichen Frage scheint in CJam kürzer zu sein, aber das werde ich jemand anderem überlassen.)

Sp3000
quelle
2
Zeit wird nie für einen regulären Ausdruck verschwendet
CousinCocaine
3

Retina, 39 32 Bytes (Sätze 2, 4)

Die Buchhaltung marquesswar nervig, da die Verwendung mader beste Weg war, um einige der Frauen zu bekommen.

[^u]es|ma$|mo|y|[mie]e|wi|ter|au

Probieren Sie es hier aus

Vielen Dank an Sp3000 für seinen Golfvorschlag.

mbomb007
quelle
@ Sp3000 Ah, danke. Mir war nicht aufgefallen, dass ich das gebrauchen $konnte.
mbomb007
2

Retina, 28 Bytes (Sätze 3,4)

w|[mhorse]e|[^u]es|duc|[dn]y

Retina verwendet .NET Regex, aber jeder Geschmack sollte funktionieren. Testen Sie es bei Regex101 .

NinjaBearMonkey
quelle