Me metí en el golf de códigos recientemente e intenté escribir el verificador de tautogramas más pequeño.
Un tautograma es una oración en la que todas las palabras comienzan con la misma letra, por ejemplo: las flores florecen desde Francia .
Dada una oración como entrada, determine si es un tautograma.
Casos de prueba
Flowers flourish from France
True
This is not a Tautogram
False
Se me ocurrió este código de Python (porque es mi idioma principal):
print(True if len(list(set([x.upper()[0] for x in __import__('sys').argv[1:]]))) == 1 else False)
Uso:
python3 tautogram.py Flowers flourish from France
# True
python3 tautogram.py This is not a Tautogram
# False
La oración puede contener comas y puntos, pero no otros caracteres especiales, solo letras mayúsculas y minúsculas y espacios.
Su tamaño es de 98 bytes. ¿Hay una solución más pequeña en algún idioma?
code-golf
string
decision-problem
Jaime Tenorio
fuente
fuente
tips
limitarlo a una preguntaPython
? Si es así, se deben agregar estas dos etiquetas.Respuestas:
05AB1E , 5 bytes
Pruébalo en línea!
¿Esto en el móvil excusa la no explicación?
fuente
Python 2 , 47 bytes
Pruébalo en línea!
Se me ocurrió esto en el móvil. Probablemente se pueda jugar más al golf.
fuente
Clojure , 80 bytes
Pruébalo en línea! . Sin embargo, TIO no es compatible con la biblioteca de cadenas estándar de Clojure, por lo que la primera versión arrojará un error "No se puede encontrar en minúsculas".
Sin golf:
Hice una versión que evita la importación:
Pero son 112 bytes .
fuente
(define(f s)(apply char=?(map(λ(x)(char-upcase(car(string->list x))))(string-split s))))
(de f(s)(apply =(mapcar car(split(chop(lowc s))" "))))
PowerShell ,
575041 bytesPruébalo en línea!
Toma entrada y
split
la envía en espacios en blanco. Recorre cada palabra y toma la primera letra tomando las
ubstrin queg
comienza en la posición0
y va por el1
carácter. Luego,sort
s las letras (no distinguen entre mayúsculas y minúsculas por defecto) con la-u
bandera de nique para extraer solo una copia de cada letra, y verifica quecount
esos nombres sean-eq
ual1
. La salida es implícita.-9 bytes gracias a mazzy.
fuente
05AB1E (heredado) , 5 bytes
Pruébalo en línea!
fuente
Brachylog , 5 bytes
Pruébalo en línea!
fuente
Haskell , 71 bytes
Pruébalo en línea!
Haskell ,
6158 bytes (usandoData.Char.toLower
)Pruébalo en línea!
fuente
Perl 5 (
-p
), 20 bytesTIO
siguientes comentarios en caso de mala puntuación (31 bytes)
31 bytes
de lo contrario, hay otro enfoque, también con 31 bytes:
31 bytes otros
fuente
$_=!/^\W*+(.).*(?=\b\w)(?!\1)/i
JavaScript (Node.js) , 54 bytes
Pruébalo en línea!
O 47 bytes si se garantiza que cada palabra (pero la primera) esté precedida por un espacio.
fuente
\W
test
guarda otro byte.Japt
-¡
, 5 bytesIntentalo
fuente
C # (compilador interactivo de Visual C #) , 41 bytes
Lanza una excepción si es falso, nada si es verdadero.
Pruébalo en línea!
fuente
Perl 6 , 19 bytes
Pruébalo en línea!
fuente
Java, (36 bytes)
TIO
fuente
(?> *)
, usando un grupo atómico para hacer coincidir el espacio al principio y para evitar el rastreo de datos. simplemente `*` no funciona porque después de fallar los partidos retrocederá `*` para que coincida con la cadena vacía