Debes escribir un programa muy pequeño con 100 caracteres. Su programa debe distinguir entre sustantivos franceses masculinos y femeninos. El resultado debería ser un
si es masculino y une
si es femenino. A menudo, hay ciertas reglas estadísticas que puede seguir (por ejemplo, si termina en una "e", es más probable que sea femenino que masculino).
Entrada :
Una palabra francesa; puede consistir en letras minúsculas y guiones, incluidas letras minúsculas con acentos.
Entrada de ejemplo: ami
Salida :
un
si la palabra es masculina y une
si la palabra es femenina.
Salida de ejemplo: un
No es necesario que cada palabra sea correcta; Su objetivo es ser lo más preciso posible.
Puntuación : su respuesta debe estar dentro de 100 caracteres. Declaraciones como print
o console.log
o alert
qué no se cuentan como parte de los bytes totales. También puede escribir una función o método que realice esta tarea, en cuyo caso los primeros bytes (p f=x=>
. Ej. ) Que forman parte de la declaración de la función no cuentan en su total. Su puntaje total es el número de respuestas incorrectas. Los lazos están rotos por el tamaño del código.
Sustantivos para probar con:
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
Respuestas:
CJam, 0 incorrecto,
3229 bytesEste código utiliza algunos caracteres extraños (algunos de ellos no imprimibles), pero todos están dentro del rango ASCII extendido. Entonces, nuevamente, cuento cada carácter como un solo byte.
Debido a los caracteres no imprimibles, estoy seguro de que Stack Exchange se traga un poco, por lo que es posible que desee copiar el código del contador de caracteres (muestra bytes con codificación UTF-8, que es subóptimo para este desafío; también, el enlace no ' No parece funcionar en Firefox, pero funciona en Chrome).
Pruébalo aquí.
Después de un poco más de discusión en el chat, nos dimos cuenta de que regex golf no nos llevaría mucho más lejos. Entonces, siguiendo una sugerencia mía anterior (en broma), comenzamos a buscar manipular los códigos de caracteres de las palabras con ciertas funciones, de modo que todas las palabras de un grupo arrojarían un número con alguna propiedad que es fácil de verificar. ¡Y tuvimos más suerte de lo que esperábamos! Esto es lo que el código le hace a las palabras:
[133, 122, 80, 66, 58, 26, 20, 14, 9, 4]
. Esta secuencia de números está codificada como los puntos de código de una cadena (aquí es donde entran los caracteres extraños e imprimibles).0
o1
, y los 25 sustantivos femeninos rinden2
o3
con este procedimiento. Entonces, si dividimos esto por2
(división entera) obtenemos ceros para sustantivos masculinos y unos para sustantivos femeninos.Para redondear, empujamos
"un"
la pila, luego empujamos un soloe
. Luego leemos la palabra de entrada de STDIN y realizamos el cálculo anterior, y finalmente multiplicamos ele
por el resultado.Nunca antes había incluido el módulo en ninguna lista, y siento que nunca lo volveré a hacer ...
Muchas gracias por xnor y Sp3000 por lanzar ideas y ayudar con la búsqueda de la cadena divisoria.
fuente
Ruby, 0 incorrecto,
635653525150 bytesTodos los caracteres están en ASCII extendido , específicamente ISO 8859-1 , por lo que cuento cada carácter como un solo byte.
Parece que su conjunto de prueba era demasiado corto. He generado la expresión regular con el meta regex golfista de Peter Norvig .
Puede llamar a la función anterior como
f["ami"]
. Puede usar este arnés de prueba para verificar todos los casos de prueba:Pruébelo en tierra de codificación.
Editar: Usando el segundo script de Peter Norvig, encontré una expresión regular diferente, que en realidad era un byte más, pero que podía acortar a dos bytes a mano.
Editar: Sp3000 configuró el golfista de expresiones regulares que escribió para mi reciente desafío de expresiones regulares, y encontró una expresión regular de
363534 bytes para que yo usara. ¡Gracias por eso!fuente
table
es una subcadena deportable
, y cambiar el conjunto para que coincida no es muy útil porque el segundo conjunto parece más fácil de combinar ...CJam, 0 errores (
36322928 bytes)Esta es una función con nombre, así que solo estoy contando el código interno. Además,
o
es una declaración impresa, por lo que no contribuye al recuento de bytes.Pruebe los casos de prueba en el intérprete de CJam .
Cómo funciona
Solo una función hash y una búsqueda de tabla.
fuente