¿Es esa palabra femenina o masculina?

12

Escriba un programa o función que tome una sola cadena que contenga solo az minúscula, e imprima o devuelva un valor verdadero si la palabra es la versión femenina de lo que representa y un valor falso si es la versión masculina . Por ejemplo, henes la versión femenina para pollo y roosteres la versión masculina, por lo que henpodría producir 1y roosterpodría producir 0.

Por supuesto, hacer esto para todas las palabras en inglés que reflejan género sería demasiado difícil de manejar. Su programa / función solo necesita admitir 20 pares masculinos / femeninos. A continuación se presentan cinco conjuntos de 10 pares masculinos / femeninos, clasificados por tema. Elige cualquiera de los dos conjuntos; Los 20 pares totales en estos dos conjuntos son las 40 palabras para las que su programa / función debe funcionar.

(el formato es masculine_version feminine_version)

  1. General

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

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

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

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

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

Entonces, por ejemplo, puede elegir las categorías General y Familiar. Entonces, cualquier entrada de hea siro fathera nephewproduciría un valor Falsy, y cualquier entrada de shea madamo mothera nieceproduciría un valor Truthy.

No todos los valores tienen que ser del mismo tipo verdadero / falso, por ejemplo, hepodría producir 0pero sirpodría producir false. Puede suponer que solo se ingresan las 40 palabras az específicas en minúsculas de las dos categorías seleccionadas.

La respuesta más corta en bytes gana. Tiebreaker es una publicación anterior.

(Este desafío no tiene la intención de correlacionar o hacer declaraciones sobre cualquier problema social actual basado en el género ).

Pasatiempos de Calvin
fuente
1
Relacionado.
Martin Ender
¿No debería countser el masculino de countess?
mbomb007
@ mbomb007 No necesariamente.
Hobbies de Calvin
3
Tres respuestas, todas retina.
Alex A.

Respuestas:

9

Retina , 26 bytes (conjuntos 4, 5)

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

Retina es el lenguaje de expresiones regulares de @ MartinBüttner. No he usado nada específico para las expresiones regulares .NET, por lo que puede probar la expresión regular en Regex101 aquí . Alternativamente, puede usar el Gmodo grep de Retina de esta manera:

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

y canalizar en un archivo con una palabra por línea para la prueba por lotes.

Retina genera el número de coincidencias de forma predeterminada, dándonos nuestro valor verdadero / falso. La regla "no todos los valores tienen que ser del mismo tipo verdadero / falso" es bastante importante ya que marchionesscoincide dos veces, dando una salida de 2.

(El uso del método de encadenamiento de mod de la pregunta masculina / femenina anterior parece ser más corto en CJam, pero dejaré que alguien más lo haga)

Sp3000
fuente
2
el tiempo nunca se pierde en una expresión regular
CousinCocaine
3

Retina, 39 32 bytes (conjuntos 2, 4)

La contabilidad marquessera molesta, ya que usar maera la mejor manera de obtener algunas de las mujeres.

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

Pruébalo aquí

Gracias a Sp3000 por su sugerencia de golf.

mbomb007
fuente
@ Sp3000 Ah, gracias. No me había dado cuenta de que podía usar $eso.
mbomb007
2

Retina, 28 bytes (conjuntos 3,4)

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

La retina usa expresiones regulares .NET, pero cualquier sabor debería funcionar. Pruébelo en Regex101 .

NinjaOsoMono
fuente