Vous devez écrire un très petit programme de 100 caractères. Votre programme doit faire la distinction entre les noms français masculins et féminins. La sortie doit être un
si elle est masculine et une
si elle est féminine. Souvent, il existe certaines règles statistiques que vous pouvez suivre (par exemple, si elle se termine par un «e», elle est plus susceptible d'être féminine que masculine).
Entrée :
Un mot français; il peut être composé de lettres minuscules et de tirets, y compris de lettres minuscules accentuées.
Exemple d'entrée: ami
Sortie :
un
si le mot est masculin et une
si le mot est féminin.
Exemple de sortie: un
Vous n'avez pas besoin de bien saisir chaque mot; votre objectif est d'être aussi précis que possible.
Notation : votre réponse doit contenir moins de 100 caractères. Des déclarations telles que print
ou console.log
ou alert
ne pas compter dans le cadre de vos octets au total. Vous pouvez également écrire une fonction ou une méthode qui exécute cette tâche, auquel cas les premiers octets (par exemple f=x=>
) qui font partie de la déclaration de fonction ne comptent pas dans votre total. Votre score total est le nombre de réponses incorrectes. Les liens sont rompus par la taille du code.
Noms à tester avec:
un ami
un café
un chapeau
un concert
un crayon
un garage
un garçon
un lit
un livre
un mari
un musée
un oncle
un ordinateur
un pantalon
un piano
un pique-nique
un portable
un père
un sandwich
un saxophone
un stade
un stylo
un théâtre
un téléphone
un voisin
une botte
une boum
une chaise
une chaussette
une chemise
une clarinette
une copine
une femme
une fille
une glace
une heure
une lampe
une maison
une montagne
une personne
une piscine
une pizza
une radio
une raquette
une salade
une souris
une sœur
une table
une télé
une voiture
Réponses:
CJam, 0 incorrect,
3229 octetsCe code utilise quelques caractères impairs (certains non imprimables), mais ils sont tous bien dans la plage ASCII étendue. Encore une fois, je compte chaque caractère comme un seul octet.
En raison des caractères non imprimables, je suis sûr que Stack Exchange en avale, donc vous voudrez peut-être copier le code du compteur de caractères (il affiche des octets avec le codage UTF-8, ce qui n'est pas optimal pour ce défi; aussi, le lien ne fonctionne pas '' semble pas fonctionner dans Firefox, mais fonctionne dans Chrome).
Testez-le ici.
Après quelques discussions supplémentaires dans le chat, nous avons pensé que le golf regex ne nous amènerait pas beaucoup plus loin. Donc, suite à une suggestion (plaisantante) de moi, nous avons commencé à chercher à manipuler les codes de caractères des mots avec certaines fonctions, de sorte que tous les mots d'un groupe donneraient un nombre avec une propriété facile à vérifier. Et nous avons eu plus de chance que prévu! Voici ce que le code fait aux mots:
[133, 122, 80, 66, 58, 26, 20, 14, 9, 4]
. Cette séquence de nombres est elle-même codée comme les points de code d'une chaîne (c'est là qu'interviennent les caractères étranges et non imprimables).0
ou1
, et les 25 noms féminins donnent2
ou3
avec cette procédure. Donc, si nous divisons cela par2
(division entière), nous obtenons des zéros pour les noms masculins et des zéros pour les noms féminins.Pour arrondir, on pousse
"un"
sur la pile, nous poussons un seule
. Ensuite, nous lisons le mot d'entrée de STDIN et effectuons le calcul ci-dessus, et finalement multiplions lee
par le résultat.Je n'ai jamais ajouté modulo à aucune liste auparavant, et j'ai l'impression de ne plus jamais le faire ...
Un grand merci pour xnor et Sp3000 pour avoir lancé des idées et aidé dans la recherche de la chaîne de diviseurs.
la source
Ruby, 0 incorrect,
635653525150 octetsTous les caractères sont en ASCII étendu , en particulier ISO 8859-1 , donc je compte chaque caractère comme un seul octet.
Il semble que votre jeu de test soit un peu trop court. J'ai généré l'expression régulière avec le golfeur meta regex de Peter Norvig .
Vous pouvez appeler la fonction ci-dessus comme
f["ami"]
. Vous pouvez utiliser ce faisceau de test pour vérifier tous les cas de test:Testez-le sur Coding Ground.
Edit: En utilisant le deuxième script de Peter Norvig, j'ai trouvé un regex différent, qui était en fait un octet de plus, mais que je pouvais raccourcir de deux octets à la main.
Edit: Sp3000 a défini le golfeur regex qu'il a écrit pour mon récent défi regex dessus, et a trouvé une regex
363534 octets pour moi à utiliser. Merci pour ça!la source
table
c'est une sous-chaîne deportable
, et changer le jeu qui correspond n'est pas très utile parce que le deuxième jeu semble plus facile à faire correspondre ...CJam, 0 erreur (
36322928 octets)Ceci est une fonction nommée, donc je ne compte que le code interne. Également,
o
est une instruction d'impression, donc elle ne contribue pas au nombre d'octets.Essayez les cas de test dans l' interpréteur CJam .
Comment ça marche
Juste une fonction de hachage et une recherche de table.
la source