Recientemente, mi reputación fue 25,121
. Noté que cada agrupación de dígitos (es decir, los números separados por comas) era un cuadrado perfecto.
Su desafío es, dado un número entero no negativo N y una función de caja negra booleana unaria f : Z * → B , producir un valor de verdad si cada valor de f aplicado a las agrupaciones de dígitos de N es verdadero, y falsey de lo contrario.
Se pueden encontrar las agrupaciones de dígitos dividiendo el número en grupos de 3, comenzando por el lado derecho. El grupo más a la izquierda puede tener 1, 2 o 3 dígitos. Algunos ejemplos:
12398123 -> 12,398,123 (3 digit groupings)
10 -> 10 (1 digit grouping)
23045 -> 23,045 (2 digit groupings)
100000001 -> 100,000,001 (3 digit groupings)
1337 -> 1,337 (2 digit groupings)
0 -> 0 (1 digit grouping)
Reglas adicionales
- Esta función se puede asignar a booleanos (por ejemplo,
true
yfalse
),1
sy0
s, o cualquier valor verdadero / falso. Especifique qué formato (s) son compatibles con su respuesta. - Puede tomar un entero como entrada o una cadena de enteros (es decir, una cadena compuesta de dígitos).
- Puedes escribir un programa o una función.
- Al pasar los grupos digitales a la función f , debe recortar todos los ceros iniciales innecesarios. Por ejemplo, f , cuando se aplica a N = 123,000 debe ejecutarse como f (123) yf (0).
Casos de prueba
Notación de función es n -> f(n)
, por ejemplo, n -> n == 0
. Todos los operadores suponen aritmética de enteros. (Ej. sqrt(3) == 1
)
function f
integer N
boolean result
n -> n == n
1230192
true
n -> n != n
42
false
n -> n > 400
420000
false
n -> n > 0
0
false
n -> n -> 0
1
true
n -> sqrt(n) ** 2 == n
25121
true
n -> sqrt(n) ** 2 == n
4101
false
n -> mod(n, 2) == 0
2902414
true
n -> n % 10 > max(digits(n / 10))
10239120
false
n -> n % 10 > max(digits(n / 10))
123456789
true
code-golf
number
decision-problem
functional-programming
Conor O'Brien
fuente
fuente
n -> n > 0
aplicado0
) a los casos de prueba porque la mayoría de las respuestas fallan.[0]
.Respuestas:
Jalea , 5 bytes
Pruébalo en línea!
El argumento de la línea de comando es el número. La línea sobre la línea en la que reside esta función es la línea principal del resto del programa, es decir, el código que se llama para cada uno de los grupos. ¡Tenga cuidado de no referirse a que la línea
bȷÇ€Ạ
está adentro! El ejemplo utilizado aquí es el quinto caso de prueba.fuente
n -> n != 0
a0
0
, y su lista de grupos de dígitos es[0]
, entoncesṆ
se asigna a cada elemento (el único0
aquí), convirtiendo la lista en[1]
y, dado que todos los elementos de esta lista son verdaderos,1
se devuelve. Tenga en cuenta que si tuviera la lista de grupos de dígitos en su[]
lugar, el resultado no cambiaría, ya que todos los elementos de[]
son verdaderos (verdad vacía). Sin embargo, el resultado puede ser diferente para diferentes programas, y las reglas no son exactamente claras al respecto (se le preguntó a OP ).Brachylog , 8 bytes
Pruébalo en línea!
La función blackbox va en la segunda línea (o el "Pie de página" en TIO) y el entero se lee desde STDIN. Impresiones
true.
o enfalse.
consecuencia.fuente
APL (Dyalog) ,
1613 bytes3 bytes guardados gracias a @ Adám
Pruébalo en línea!
¿Cómo?
1e3⊥⍣¯1⊢⎕
- ingrese el número y codifique en la base 1000⎕¨
- ingrese la función y aplique en cada∧/
- reducir con lógica yfuente
Python 2 , 46 bytes
Pruébalo en línea!
fuente
*
en lugar deand
.Haskell,
424038 bytesLa función blackbox debe devolver
True
oFalse
.Pruébalo en línea!
Editar:
-2-4 bytes gracias a @ovs.fuente
&&
lugar deand
C (gcc) ,
665848 bytes-10 bytes gracias a @Neil!
Pruébalo en línea!
fuente
g(f,i)int f();{i=!i||f(i%1000)&&g(f,i/1000);}
f(n){return n > n;}
a0
Wolfram Language (Mathematica) , 30 bytes
Pruébalo en línea!
fuente
JavaScript (ES6),
4036 bytesToma la función y el valor al curry y devuelve 0 o 1. Editar: Guardado 4 bytes gracias a @Shaggy.
fuente
1000
->1e3
para guardar un par de bytes. Y podría reemplazar&&
con&
otro byte?function_name(n=>n>0)(0)
(regresatrue
)Pyth , 9 bytes
Pruébalo en línea! (usa el tercer caso de prueba)
Asume que se nombra la función de recuadro negro
y
. Puede declarar dicha función utilizandoL
(argumentob
:), como se muestra en TIO. Implementaré todos los casos de prueba más tarde, si tengo tiempo.fuente
Stax , 8 bytes
Los programas Stax no tienen llamadas de función o argumentos, por lo que almacenamos un bloque en el
Y
registro que consume y produce un solo valor. Esto se puede hacer antes del código del programa.Aquí hay un ejemplo usando la función cuadrada perfecta.
fuente
Limpio , 54 bytes
Pruébalo en línea!
Define la función
$ :: Int -> Bool
, esperando que una funciónf :: Int -> Bool
se defina en otro lugar.fuente
n -> n > 0
a0
Java (OpenJDK 9) , 94 bytes
Pruébalo en línea!
fuente
n -> n > 0
a0
Lisp común ,
7372 bytesPruébalo en línea!
fuente
05AB1E , 8 bytes
Pruébalo en línea!
Explicación
Toma el número como la primera línea de entrada y la función como la segunda.
Salidas 1 para verdad y 0 para falsedad.
fuente
Q
yÊ
sin embargo. Volveré a la versión de 8 bytes..V
que se vectorice, ni siquiera toma la lista como un argumento en sí mismo para comenzar..V
vectorizara. En el ejemplo en mi enlace esÈ
.Q
yÊ
trabajaría con vectorización a diferencia de lo dicho anteriormente, pero utilizando vectorización automática haría que estos comandos mapa en toda la lista que se siente fuera del espíritu del reto por lo que necesitamosε
.Excel VBA, 79 bytes
Una función de ventana inmediata anónima de VBE que toma entrada,
n
como tipo entero de rango[A1]
, y el nombre de una función VBA definida públicamente de rango[B1]
.Ejemplo de uso
En un módulo público, la función de entrada, en este caso,
f()
está definida.Las variables de entrada están establecidas.
Entonces se llama a la función de ventana inmediata.
fuente
Rubí , 37 bytes
Pruébalo en línea!
Una lambda recursiva, que toma función y número entero y devuelve booleano
36 bytes (solo positivo n)
Esta versión vuelve
1
para la verdad,false
para Falsey. Lamentablemente puede fallar cuandon = 0
Pruébalo en línea!
fuente
g=
si es recursivo1
como el valor deg[->n{n>0},0]
(devolucionestrue
). Solo falla si la entrada es0
pero la pregunta dice "no negativo", por lo que debería volver al 37. lo sientoManzana , 51 bytes
Función lambda anónima que toma un número y una función y devuelve un valor booleano.
Pruébalo en línea!
fuente
Añadir ++ , 15 bytes
Pruébalo en línea!
Requiere
f
que se declare una función en el encabezado TIO.Cómo funciona
fuente