Quella parola è femminile o maschile?


12

Scrivi un programma o una funzione che accetta una singola stringa contenente solo az minuscola e stampa o restituisce un valore di verità se la parola è la versione femminile della cosa che rappresenta e un valore di falsa se è la versione maschile . Ad esempio, henè la versione femminile per il pollo ed roosterè la versione maschile, quindi henpotrebbe produrre 1e roosterpotrebbe produrre 0.

Farlo per tutte le parole inglesi che riflettono il genere sarebbe ovviamente troppo ingombrante. Il tuo programma / funzione deve supportare solo 20 coppie maschili / femminili. Di seguito sono riportati cinque set di 10 coppie maschili / femminili, classificati per argomento. Scegli due set qualsiasi; le 20 coppie totali in questi due set sono le 40 parole per le quali il tuo programma / funzione deve funzionare.

(il formato è masculine_version feminine_version)

  1. Generale

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

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

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

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

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

Quindi, ad esempio, potresti scegliere le categorie Generale e Familiare. Allora qualsiasi input da hea siro fatherper nephewprodurrebbe un valore falsy e ogni input da shea madamo motherper nieceprodurrebbe un valore truthy.

Non tutti i valori devono essere dello stesso tipo di verità / falsità, ad esempio hepotrebbero produrre 0ma sirpotrebbero produrre false. Si può presumere che vengano mai inserite solo le 40 parole az minuscole specifiche delle due categorie selezionate.

Vince la risposta più breve in byte. Tiebreaker è post precedente.

(Questa sfida non ha lo scopo di correlare o fare dichiarazioni su eventuali problemi sociali di genere attuali .)



Non dovrebbe countessere il maschile di countess?
mbomb007,


3
Tre risposte, tutta Retina.
Alex A.

Risposte:


9

Retina , 26 byte (set 4, 5)

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

Retina è il linguaggio regex di @ MartinBüttner. Non ho usato nulla di specifico per regex .NET, quindi puoi testare il regex su Regex101 qui . In alternativa puoi usare la Gmodalità grep di Retina in questo modo:

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

e pipe in un file con una parola per riga per i test batch.

Retina emette il numero di partite per impostazione predefinita, dandoci il nostro valore di verità / falsità. La regola "i valori non devono essere tutti dello stesso tipo di verità / falsità" è piuttosto importante, dato che marchionesscorrisponde due volte, dando un output di 2.

(L'uso del metodo di concatenamento mod della precedente domanda uomo / donna sembra essere più breve in CJam, ma permetterò a qualcun altro di farlo)


2
il tempo non si
perde

3

Retina, 39 32 byte (set 2, 4)

La contabilità marquessera fastidiosa, poiché l'uso maera il modo migliore per ottenere alcuni dei femminili.

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

Provalo qui

Grazie a Sp3000 per il suo suggerimento sul golf.



@ Sp3000 Ah, grazie. Non avevo notato che avrei potuto usare $per quello.
mbomb007,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.