Czy to słowo „żeński” czy „męski”?

12

Napisz program lub funkcję, która pobiera pojedynczy ciąg zawierający tylko małe litery az, i wypisuje lub zwraca prawdziwą wartość, jeśli słowo jest żeńską wersją rzeczy, którą reprezentuje, i wartością fałsz, jeśli jest to wersja męska . Na przykład henjest kobiecą wersją dla kurczaka i roosterjest męską wersją, więc henmoże produkować 1i roosterprodukować 0.

Robienie tego dla wszystkich angielskich słów odzwierciedlających płeć byłoby oczywiście zbyt niewygodne. Twój program / funkcja musi obsługiwać tylko 20 męskich / żeńskich par. Poniżej znajduje się pięć zestawów 10 męskich / żeńskich par, pogrupowanych tematycznie. Wybierz dowolne dwa zestawy; 20 par w tych dwóch zestawach to 40 słów, na które Twój program / funkcja musi działać.

(format to masculine_version feminine_version)

  1. Generał

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

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

    lion lioness
    rooster hen
    stallion mare
    bull cow
    drake duck
    boar sow
    buck doe
    ram ewe
    gander goose
    billy nanny
    
  4. Królewski

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

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

Na przykład możesz wybrać kategorie Ogólne i Rodzinne. Wtedy każdy wkład z hedo sirlub fatherdo nephewwytworzyłby wartość fałszowania, a każdy wkład z shedo madamlub motherdo niecewytworzyłby prawdziwą wartość.

Nie wszystkie wartości muszą być tego samego typu prawda / fałsz, np. heMogą dawać, 0ale sirmogą dawać false. Możesz założyć, że wprowadzono tylko 40 określonych małych liter az z dwóch wybranych kategorii.

Najkrótsza odpowiedź w bajtach wygrywa. Tiebreaker jest wcześniejszym postem.

(Wyzwanie to nie ma na celu korelowania ani wypowiadania się na temat bieżących problemów społecznych związanych z płcią ).

Hobby Calvina
źródło
1
Związane z.
Martin Ender
Czy nie powinien countbyć męski countess?
mbomb007
@ mbomb007 Niekoniecznie.
Hobby Calvina
3
Trzy odpowiedzi, wszystkie Retina.
Alex A.

Odpowiedzi:

9

Siatkówka , 26 bajtów (zestawy 4, 5)

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

Retina jest językiem regularnym @ MartinBüttner. Nie użyłem niczego specyficznego dla wyrażeń regularnych .NET, więc możesz przetestować wyrażenie regularne w Regex101 tutaj . Alternatywnie możesz użyć Gtrybu grep Retiny w następujący sposób:

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

i potokuj w pliku z jednym słowem w wierszu do testowania wsadowego.

Siatkówka domyślnie wyświetla liczbę dopasowań, co daje nam naszą wartość prawda / fałsz. Zasada „wartości nie muszą być tego samego typu prawda / fałsz” jest dość ważna, ponieważ marchionessdopasowuje się dwukrotnie, dając wynik 2.

(Korzystanie z metody łączenia modów z poprzedniego pytania mężczyzna / kobieta wydaje się być krótsze w CJam, ale pozwolę komuś innemu to zrobić)

Sp3000
źródło
2
czas nigdy nie jest marnowany na wyrażenia regularne
CousinCocaine
3

Retina, 39 32 bajty (zestawy 2, 4)

Rachunkowość marquessbyła denerwująca, ponieważ używanie mabyło najlepszym sposobem na zdobycie niektórych kobiet.

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

Wypróbuj tutaj

Dzięki Sp3000 za jego sugestie dotyczące golfa.

mbomb007
źródło
Z niewielkimi
zmianami
@ Sp3000 Ah, dzięki. Nie zauważyłem, że mogę $do tego wykorzystać .
mbomb007
2

Siatkówka, 28 bajtów (zestawy 3,4)

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

Retina używa wyrażenia regularnego .NET, ale każdy smak powinien działać. Przetestuj na Regex101 .

NinjaBearMonkey
źródło