Definición
Una palabra dólar es una palabra en la que cuando a cada una de sus letras se le asigna un valor en centavos, de a = 1 a z = 26, y las letras se suman, el resultado es 100. Aquí hay un ejemplo en CodeReview, y aquí hay una lista de palabras en dólares que encontré en línea.
Entrada
La entrada será alfabética desde az, en los tipos de datos de texto de su idioma (se permiten matrices). No necesita tener en cuenta ninguna otra entrada; no habrá espacios, apóstrofes ni guiones. Puede tomar en minúsculas, mayúsculas o una combinación. Se permiten nuevas líneas al final.
Salida
Genere un valor verdadero si la entrada es una palabra en dólares y un valor falso si no lo es.
Casos de prueba
Verdad:
buzzy
boycott
identifies
adiabatically
ttttt
Falsey
zzz
zzzzzzz
abcdefghiljjjzz
tttt
basic
Este es el código de golf, por lo que gana la respuesta más corta en bytes. Se aplican las lagunas y normas estándar. La corbata va al primer póster.
Respuestas:
GS2 , 6 bytes
La entrada debe estar en mayúscula.
Pruébalo en línea!
Cómo funciona
fuente
Python,
3938 bytesPruébalo en línea!
-1 byte gracias a @JonathanAllan
fuente
05AB1E , 8 bytes
Código:
Utiliza la codificación CP-1252 . Pruébalo en línea!
Explicación:
fuente
Tn
también funciona: PÇ4+OTn%0Q
Fue otra idea que tuve, pero es peor.Perl 6 , 21 bytes
Intentalo
Alterno:
Intentalo
Tenga en cuenta que
Ⅽ
esROMAN NUMERAL ONE HUNDRED
U + 216D con un unival de ... 100,que toma 3 bytes para codificar.
Expandido:
fuente
MATL , 8 bytes
Utiliza entrada en minúsculas.
Pruébalo en línea!
Explicación
El código es tan legible como se pone:
fuente
JavaScript (ES6), 46 bytes
Devoluciones
0
o1
.fuente
reduce
y la recursión, ambos salieron 2 bytes más.reduce()
durante los primeros minutos del período de gracia cuando lo publiqué inicialmente.Haskell , 32 bytes
Pruébalo en línea!
La idea es hacer una lista de caracteres desde
a
el carácter dado para cada carácter en la lista, y verificar que la longitud total sea 100.Otros intentos
Lástima que
enumFromTo
sea tan largo.fuente
(100==).length.(enumFromTo 'a' =<<)
es un uso tan limpio de la ausencia de puntosC,
4543 bytes¡Gracias a @Neil por guardar dos bytes y hacer que la solución no distinga entre mayúsculas y minúsculas!
Pruébalo en línea!
fuente
n=0
globalmente y luego omitiendo la primera cláusula de la especificación del bucle, ¿no? editar: no importa, supongo que eso solo funcionaría para la primera llamada.&31
podría funcionar para que su código no sea sensible a mayúsculas y minúsculas.n=!n
funciona? Entiendo que comprueba sin
es cero, porque en base a alguna prueba veo!0
retornos1
;!15
vuelve0
; y!-15
vuelve0
también. ¿Pero por qué? ¿Qué operando está!
en C cuando se usa como!integer
?!
es solo lo lógiconot
. En C,0
significafalse
, y cualquier otro valor entero significatrue
. Entonces!0 == 1
, y!n == 0
para todosn != 0
.0=false; 1=true
, de ahí mi confusión. Gracias por la respuesta.Haskell , 32 bytes
Esto funciona para la entrada en minúsculas. Para mayúscula,
s/96/64/
. La compatibilidad con mayúsculas y minúsculas agregaría un montón de bytes.fuente
Mathematica, 23 bytes
Función pura que toma una cadena (o una matriz de letras) como entrada, no distingue entre mayúsculas y minúsculas y devuelve
True
oFalse
. AquíTr
solo agrega los números de letras juntos; todo lo demás se explica por sí mismo.fuente
Jalea ,
97? * 8 bytesPrograma completo, generando 1 si la entrada es una palabra en dólares, o 0 si no.
Pruébalo en línea!
¿Cómo?
* ¿Podría ser de 7 bytes?
La única razón de que esto tomó de entrada con
ɠ
era mantener³
como el literal 100 en lugar de la 3 ª entrada de línea de comandos (1 st entrada del programa).Una manera de evitar eso sería, como lo señaló Dennis, crear 100 usando la forma literal sin procesar
ȷ2
que es 10 2 . Esto lleva a otra de 8 bytesO%32S=ȷ2
, pero esto ahora es una función monádica sin nombre (así como de funcionamiento como un programa completo con 3 rd argumento).Dado que, en el golf, uno puede crear variables o funciones auxiliares que restrinjan el programa en el que pueden residir (no se puede reutilizar el nombre dentro del alcance sin evitar que la función sea reutilizable), tal vez restringir el programa a solo recibir información de STDIN. también será aceptable, en cuyo caso el byte 7
O%32S=³
sería aceptable aquí como una función sin nombre.fuente
O%32S=ȷ2
. Funciona para mayúsculas y minúsculas.O%32S⁼³
realidad no sería una entrada válida, ya que define una función reutilizable sin nombre, siempre que el resto del programa en el que se encuentra no utilice argumentos de línea de comandos para la entrada.Alice , 23 bytes
Pruébalo en línea!
La entrada debe ser minúscula. Imprime
1
palabras en dólares y de0
otra manera.Explicación
Es hora de mostrar la cinta de Alice y un flujo de control avanzado. A pesar de ser bastante bueno trabajando con enteros y cadenas individualmente, Alice no tiene funciones integradas para a) determinar la longitud de una cadena, b) convertir entre caracteres y sus puntos de código. La razón de esto es que todos los comandos de Alice asignan enteros a enteros o cadenas a cadenas. Pero ambos requerirían asignar cadenas a enteros o viceversa, por lo que no encajan en ninguno de los modos de Alice.
Sin embargo, además de su stack, Alice también tiene una cinta y los modos Cardinal y Ordinal interpretan los datos en la cinta de diferentes maneras.
Esta cinta se puede usar para las dos operaciones anteriores: para obtener una longitud de cadena, la escribimos en la cinta en modo Ordinal, buscamos la terminación -1 en modo Cardinal y recuperamos la posición del cabezal de la cinta. Para convertir caracteres a sus puntos de código, simplemente los leemos de la cinta en modo Cardinal.
Las otras dos características importantes utilizadas en esta solución son la pila de retorno y un iterador. Alice tiene una pila de retorno que generalmente se llena cuando se usa el comando de salto
j
, y desde la que puede hacer saltar una dirección para volver a saltark
. Sin embargo, también es posible enviar la dirección actual a la pila de retorno sin saltar a ningún ladow
. Si combinamosw
con el comando de repetición&
, podemos empujar la dirección actual a la pila de retorno n veces. Ahora, cada vez que llegamosk
, se saca una copia de la pila de retorno y realizamos otra iteración desdew
(comenzando en la celda después de ella, porque la IP se mueve antes de ejecutar otro comando). Cuando la pila de devolución se vacía,k
no hace nada y la IP simplemente pasa. Por lo tanto,&w...k
aparece un entero n y luego se ejecuta...
n + 1 veces, lo que nos da una forma muy concisa de expresar unfor
bucle simple .En el código en sí ...
fuente
R,
5554 bytes-1 byte gracias a BLT
devuelve una función que realiza el cálculo requerido, que devuelve
TRUE
yFALSE
como cabría esperar.toma la entrada en minúsculas; solo sería un cambio de
letters
aLETTERS
para todas las mayúsculasfuente
function(x)sum(match(el(strsplit(x,"")),letters))==100
Guarda un byte.Rubí, 25 bytes
Obras para mayúsculas.
Veo un par de entradas de Ruby más complejas, pero realmente es así de simple.
s.sum
agrega los códigos ASCII de la cadena de entrada, y de esto restamos 64 veces la longitud de la cadena.Ejemplo de uso
fuente
Java 8, 36 bytes
Pruébalo en línea!
Nota: caso independiente.
fuente
05AB1E , 9 bytes
Pruébalo en línea!
Explicación
Como 1 es el único valor verdadero en 05AB1E, podemos guardar un byte usando la resta en comparación con 100 .
fuente
Perl 5 , 30 bytes
-1 byte gracias a @Neil (en
31&
lugar de-96+
).29 bytes de código +
-p
bandera.Pruébalo en línea!
fuente
31&ord
en su lugar?-96+
para tales cosas ... ¡Muchas gracias por eso! (pero ahora siento que debería volver a mis viejas publicaciones y reemplazar cada-96+
: x){$@+=31&ord for@_;$@==100}
(no probado)+=
, pero en otros casos puede desperdiciar el ahorro en paréntesis.your one language's text datatypes
. Las matrices no son el tipo de datos de texto de Perl ... (de lo contrario, habría guardado 1 byte)PowerShell ,
3630 bytesPruébalo en línea!
Entradas como una matriz, pero me pregunto si hay una mejor manera de manejar los caracteres.
EDITAR Se perdió un espacio fácil, pero @AdmBorkBork amablemente me avisó: P también, de hecho, ¡había una mejor manera de manejar a los personajes!
fuente
[char]$_-96
, y no necesita el espacio entre-eq
y100
, lo que lo reduce a 33. También puede hacerlo en"$_"[0]
lugar de[char]$_
reducirlo a 32. ¡ Pruébelo en línea!"
alrededores$_
? Parece funcionar sin el elenco. ¿Podría ser debido a que la entrada ya es una matriz de cadenas?"
se necesitan en este caso particular.Alicia ,
2818 bytesGracias a @MartinEnder por jugar al golf 10 bytes
Pruébalo en línea!
Este envío utiliza un método diferente al de la respuesta de @ MartinEnder.
Esta sumisión da como resultado la
0x00
falsedad y la0x01
verdad.Así que aquí hay una versión que sale
0
o, en1
cambio, ¡ pruébalo!Explicación
La explicación a continuación es para la versión "visible". Ambos son muy similares, excepto en el primer programa, el último
o
no convierte el0
o1
en una cadena (porque estamos en modo cardinal), sino que toma el número y muestra el carácter en ese punto del código.Después de esto, la IP se ajusta al borde izquierdo en el
=
. Si el valor superior de la pila es0
, la IP continúa con su ruta, aumentando la suma total de todos los caracteres, una vez que se hace con la entrada (la parte superior de la pila será1
), entonces la IP gira a la derecha (90 grados en sentido horario).Una cosa es importante tener en cuenta, el bucle en la primera línea iterará una vez que la entrada haya finalizado. Esto restará
97
(96
del'`
y-1
de la falta de entrada) del total.fuente
Taxi , 1259 bytes
Con saltos de línea, se ve así:
Acepta mayúsculas o minúsculas porque las
Auctioneer School
convierte a mayúsculas.Chop Suey
lo divide en caracteres individuales.Charboil Grill
convierte caracteres a su código ASCII.Recogemos un carácter a la vez, lo convertimos a ASCII, restamos 65 y lo sumamos al total acumulado.
Una vez que no haya más personajes, compara el total con 100.
Devoluciones
TRUE
para palabras en dólares yFALSE
para todo lo demás.fuente
Código de máquina IA-32, 21 bytes
Hexdump:
Código de montaje:
Cuenta de 100 a 0. Si llega a 0, devuelve verdadero (0xff); de lo contrario falso (0x00).
fuente
Dyalog APL,
1715 bytesUtiliza el conjunto de caracteres Dyalog Classic.
fuente
Python , 38 bytes
Pruébalo en línea!
Misma longitud que la solución de ovs . En lugar de restar 96 de cada
ord
valor, esto verifica si elord
total es igual100+96*len(s)
. Esto se expresa un byte más corto como4-96*~len(s)
, que es igual4-96*(-len(s)-1)
.fuente
lambda s:sum(s.encode(),96*~len(s))==4
también funcionaría.Ruby ,
3530 bytesPruébalo en línea!
fuente
Retina ,
4723 bytesPruébalo en línea! Nota: El encabezado ingresa en minúsculas y lo divide en palabras; Los resultados aparecen en líneas separadas. Editar: se guardaron demasiados bytes gracias a @MartinEnder.
fuente
Octava, 18 bytes
Resta
96
de la cadena de entradax
(minúscula), para obtener los valores numéricos de las letras. Toma elsum
y lo compara con100
. Devuelve una lógica1
para casos verdaderos y una lógica0
para casos falsos.Podría guardar un byte si estuviera bien dar falso para "palabras en dólares" y verdadero para "palabras en dólares".
fuente
Japt ,
13 1210 bytesExplicación:
¡Pruébelo en línea!
12 bytes:
Pruébalo en línea!
Otra solución de 12 bytes que utiliza una técnica diferente.
Pruébalo en línea!
fuente
m%H
lugar dem-96
(¡funcionará en ambos casos ahora, bonus!), Y uno en el segundo conL¥U¬x@;CaX Ä
m%H
Fue un buen hallazgo.x@
¡Fue una gran idea también!Ruby (2.4+), 38 bytes
Toma entrada en minúsculas. Requiere Ruby 2.4
Array#sum
para que no se ejecute en TIO.fuente
String#bytes
lugar deString#chars
para no tener que llamarc.ord
.sum
en la matriz en lugar demap
/// ,
564210189185 bytesPruébalo en línea!
Imprime un 1 si es una "palabra dólar", de lo contrario imprime un "0"
La entrada es la siguiente: (Desplácese hacia la derecha)
Funciona reemplazando cada letra con su valor en unario, luego reemplazando un 100 unario con un 0. Luego sustituye cualquier valor de la palabra con un 1. Si el valor de la palabra es 0, imprimirá un 1 porque al final de el código, está reemplazando un 0. Si el valor de la palabra es otra cosa, simplemente imprimirá ese 0.
El golf funciona mediante el uso de ocurrencias comunes en el código como reemplazos.
fuente
Bash + GNU utils, 47
Pruébalo en línea .
fuente