Dada una entrada de número entero no negativo, escribir un programa que convierte el número en hexadecimal y devuelve un valor Truthy si la forma hexadecimal del número contiene sólo los caracteres A
a través F
y un valor Falsey lo contrario.
Casos de prueba
10
==> True (A in hexadecimal)
100
==> False (64 in hexadecimal)
161
==> False (A1 in hexadecimal)
11259375
==> True (ABCDEF in hexadecimal)
0
==> False (0 in hexadecimal)
Bonificación: -40 bytes si su programa imprime Only letters
para el desafío descrito anteriormente, Only numbers
si la versión hexadecimal del número solo contiene los dígitos 0-9
y Mix
si el número hexadecimal contiene al menos un número y al menos una letra.
Este es el código de golf. Aplican reglas estándar. El código más corto en bytes gana. Se permiten funciones o programas completos.
code-golf
number
base-conversion
hexadecimal
Arcturus
fuente
fuente
NaN
MixOnlynumbersletters
tiene 21 caracteresRespuestas:
Pyth, 43-40 = 3 bytes
Banco de pruebas
Esto logra la bonificación.
Only numbers
yOnly letters
afortunadamente solo difieren en 4 letras. Se utiliza el formato de estilo printf con%
.El sistema de selección se realiza tomando la intersección del hex con
G
el alfabeto y restandoG
. Si ninguno de los dos termina siendo falso, es una mezcla, mientras que si la intersección es falsa, son números, y si la resta es falsa, son letras.fuente
Pyth, 6 bytes
Pruébalo aquí
fuente
Jalea , 6 bytes
Pruébalo en línea!
Cómo funciona
fuente
TeaScript , 11 bytes
13 15 16Bastante simple. Esto usa TeaScript 2.0. Puedes obtener esta versión de Github
Explicación
Pruébelo en línea (versión ligeramente modificada que funciona en la web)
fuente
Python, 24 bytes
Convierte la entrada en una cadena hexadecimal (sin
0x
prefijo) con'%x'%n
. Ve si todos sus caracteres son mayores que'9'
(qué letras son) al ver simin
está arriba'9'
.fuente
'9'
es 54. Entonces, si puede escribir...>54
, puede guardar un byte.MATL , 10
Ejemplos
Explicación
Reto de bonificación: 53−40 = 13
Ejemplos
Explicación
fuente
LabVIEW, 52-40 = 12 primitivas de LabVIEW
Alabado sea el incorporado!
fuente
C,
464337 bytes¡Ahora con más recursividad! (Gracias Dennis):
Bono: incluso más corto (33 bytes), pero falla por
x = 0
:F()
toma unint
y devuelve0
(falso) o no cero (verdadero).Ni siquiera intenté alcanzar la bonificación, solo
"MixOnly lettersnumbers"
toma 23 bytes, el seguimiento de la nueva condición habría requerido 9 bytes adicionales,printf()
es de 8 bytes, lo que suma 40, anulando el esfuerzo.Prueba principal:
fuente
?:
? Tuve que reemplazarlo||
para que se compilara. Además, ¿puede guardar un byte reemplazando el*
con un&
evitando así el()
s de la izquierda (aunque luego tiene que agregar un espacio)?a?:b
es una extensión de GNU que evalúaa
sia
es un valor verdadero, de lo contrariob
. Es útil para manejar punteros nulos comosend(message ?: "(no message)");
. Sé que no es portátil, pero la portabilidad del código nunca es una preocupación en el golf de código :)33
bytes al hacer esto:F(x){x=(x%16>9)*(x<16?:F(x/16));}
esto abusa de un error (GCC) donde si no hay una variable de retorno en una función y se estableció el argumento principal, en algunos casos devolverá automáticamente el argumento principal ( basado en qué lógica se hizo), ¡y este es uno de esos casos! Pruébelo en línea: bit.ly/2pR52UHPython 3,
3029 bytes1 byte eliminado gracias a sysreq y Python 3.
Simple
lambda
y rebanador.fuente
Perl 6 , 18 bytes
uso:
fuente
Mathematica, 32 bytes
Explicación:
fuente
Javascript, ES6, no regexp, 28 bytes
También existe esta versión de 27 bytes, pero devuelve el valor inverso.
fuente
F=n=>!n||n%16>9&F(n>>4)
F=n=>n%16>9&&n<16|F(n>>4)
entonces.||
, pero creo que podría salirse con la suya en&
lugar de hacerlo&&
en ese caso.Julia, 18 bytes
Esta es una función anónima que acepta un entero y devuelve un booleano. Para llamarlo, dale un nombre, por ejemplo
f=n->...
.La entrada se convierte en una cadena hexadecimal usando
hex
, luego verificamos si está completamente compuesta de caracteres alfabéticos usandoisalpha
.fuente
JavaScript ES6, 29
Sin bonificación
Con el nuevo valor de -40, el bono está más cerca ahora ... pero no lo suficiente. Puntuación de bonificación 70
71- 40 => 3031Fragmento de prueba (escriba un número dentro del cuadro de entrada)
fuente
-n-1
=~n
, ¿verdad?~n == -1
mientras que-n-1 == NaN
GS2 , 6 bytes
El código fuente usa la codificación CP437. Pruébalo en línea!
Cómo funciona
fuente
Octava, 22 bytes
fuente
Java,
464438 bytesBastante simple que convierte el número entero en una cadena hexadecimal y usa expresiones regulares para determinar si todos los caracteres son letras.
-2 bytes gracias a @ Eng.Fouad.
fuente
"[a-f]+"
ahorraría 2 bytes.+
–es un desperdicio de bytes.matches
devuelve verdadero si toda la cadena puede coincidir con la expresión regular dada.[a-f]
sin el signo más es incorrecto ya que no coincide con toda la cadena dado que contiene más de un carácter; Lo haría si y solo si un carácter válido está presente.CJam (
98 bytes)Demostración en línea
fuente
{Gb$N<!}
Ruby, 19 bytes
Sin golf:
Uso:
Con bonificación, 70 - 40 = 30 bytes
Uso:
fuente
'%x'%n!~/\d/
es una verificación más corta para la solución uno, y la solución dos tiene un recuento de bytes sin procesar de 70, no 75.Perl, 69-40 = 29 bytes
fuente
Ceilán, 55 bytes
Directo ... formateamos
n
como un número hexadecimal (que produce una cadena), llamamos a cada carácter de esa cadena el.digit
número (que devuelve verdadero si es un dígito), luego verificamos si alguno de ellos es verdadero, y luego lo negamos.La versión con bonificación tiene una puntuación mucho más alta de 119-25 = 94 :
No estoy seguro de cómo alguien podría hacer una versión de bonificación lo suficientemente corta como para ser mejor que la versión sin bonificación, incluso esas cadenas solo tienen una longitud 28 juntas. Quizás un lenguaje que hace que sea realmente difícil producir un valor verdadero / falso.
Aquí hay una versión formateada:
fuente
Óxido, 70 bytes
Porque, ya sabes,
JavaRust.Sin embargo, en realidad es bastante elegante:
Pero es una pena que la definición de la función repetitiva sea tan larga ...: P
fuente
CJam, 44 bytes - 40 bonus = 4 bytes
Pruébalo aquí ~
fuente
En serio, 12 bytes
Hex Dump:
Pruébalo en línea
Es lo mismo que las otras respuestas de lenguaje de pila. Sería de solo 7 bytes si Seriamente soportara la sustracción de cadenas todavía.
EDITAR: en serio ahora admite la resta de cadenas y la siguiente solución de 7 bytes ahora funciona:
Hex Dump:
Pruébalo en línea
fuente
4╙,¡#S;ú∩S=
(o4ª
o8τ
, muchas formas de deletrear:16:
en dos bytes: P)05AB1E , 2 bytes (no competitivos)
Código:
¡Decir ah! ¡Eso es dos bytes! Lamentablemente no compite porque este lenguaje es posterior al desafío :(
Explicación:
Pruébalo en línea! o Verifique todos los casos de prueba!
fuente
hdÔ©1åi•4?ŸâτΛ•}®0åi•4?ŸàpÕTà•}®g2Qi•²
•} 36B` para la bonificación que resulta en ... ¡6 más! Wooooo bonos!Python 3, 28 bytes
fuente
Lisp común, 40 bytes
Pruébalo en línea!
fuente
SmileBASIC 3.2.1, 78 bytes
fuente
81
.0-127
, por lo tanto, su recuento de bytes es81
.Japt, 12 bytes
Pruébalo en línea!
Cómo funciona
fuente
!!UsG r"\\d
podría funcionar y ahorrar un byteGema, 41 personajes
No hay booleanos en Gema, por lo que simplemente genera "t" o "f".
Ejecución de muestra:
fuente