Essa palavra é feminina ou masculina?


12

Escreva um programa ou função que utilize uma única string contendo apenas az minúscula e imprima ou retorne um valor verdadeiro se a palavra for a versão feminina do que representa e um valor falso se for a versão masculina . Por exemplo, hené a versão feminina para frango e roostera versão masculina, portanto, henpode produzir 1e roosterpode produzir 0.

Fazer isso para todas as palavras em inglês que refletem gênero seria, obviamente, muito complicado. Seu programa / função precisa apenas suportar 20 pares masculino / feminino. Abaixo estão cinco conjuntos de 10 pares masculino / feminino, categorizados por tópico. Escolha dois dos conjuntos; os 20 pares totais nesses dois conjuntos são as 40 palavras em que seu programa / função deve trabalhar.

(o formato é masculine_version feminine_version)

  1. Geral

    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. 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
    

Portanto, por exemplo, você pode escolher as categorias Geral e Familiar. Em seguida, qualquer entrada hede sirou fatherpara nephewproduziria um valor Falsas, e qualquer entrada shede madamou motherpara nieceproduziria um valor truthy.

Os valores nem todos precisam ser do mesmo tipo de verdade / falsidade, por exemplo, hepodem produzir, 0mas sirpodem produzir false. Você pode assumir que apenas as 40 palavras az específicas em minúsculas de suas duas categorias selecionadas são inseridas.

A resposta mais curta em bytes vence. O desempatador é uma publicação anterior.

(Este desafio não tem como objetivo correlacionar-se ou fazer declarações sobre quaisquer problemas sociais atuais baseados em gênero .)



Não deveria countser o masculino de countess?
Mbomb007


3
Três respostas, todas Retina.
Alex A.

Respostas:


9

Retina , 26 bytes (conjuntos 4, 5)

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

Retina é a linguagem regex de @ MartinBüttner. Eu não usei nada específico para regexes do .NET, então você pode testar o regex no Regex101 aqui . Como alternativa, você pode usar o Gmodo grep do Retina da seguinte maneira:

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

e canalize um arquivo com uma palavra por linha para teste em lote.

Por padrão, o Retina gera o número de correspondências, fornecendo nosso valor de verdade / falsidade. A regra "os valores nem todos precisam ser do mesmo tipo de verdade / falsidade" é muito importante, já que marchionesscorresponde duas vezes, resultando em 2.

(Usar o método mod-encadeamento da pergunta masculino / feminino anterior parece ser mais curto no CJam, mas deixarei que outra pessoa faça isso)


2
o tempo nunca é desperdiçado em uma expressão regular
CousinCocaine


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.