Dar crédito a quien se le debe el crédito .
Objetivo Dado un número entero N > 0
, los números enteros más pequeños A
, B
y C
de modo que:
- Todos
A
,B
yC
son estrictamente mayor queN
; 2
divisionesA
;3
divisionesB
;- y
4
se divideC
.
Este es un código de golf, por lo que gana la respuesta más corta en bytes. Puede usar un lenguaje creado / actualizado después de este desafío, pero es estrictamente no competitivo.
Casos de prueba
N => A, B, C
1 => 2, 3, 4
4 => 6, 6, 8
43 => 44, 45, 44
123 => 124, 126, 124
420 => 422, 423, 424
31415 => 31416, 31416, 31416
1081177 => 1081178, 1081179, 1081180
C B A
) si se especifica claramente en la respuesta?Respuestas:
Jalea , 8 bytes
Pruébalo en línea! o verificar todos los casos de prueba .
Cómo funciona
fuente
Python 2, 32 bytes
Aritmética de bits para 2 y 4, aritmética modular para 3.
Encontré cuatro expresiones de 7 bytes para el siguiente múltiplo de
k
arriban
pero ninguno más corto:Cualquiera da 34 bytes cuando se copian
k=2,3,4
y 33 bytes si se combinan:Pero, 2 y 4 son potencias de 2 que permiten que los trucos de bits pongan a cero los últimos 1 o 2 bytes.
Esto da 6 bytes (en lugar de 7) para obtener el siguiente múltiplo, para 32 bytes en general, superando el
for k in 2,3,4
.Desafortunadamente, el aspecto prometedor
n|1+1
yn|3+1
la adición se realizan primero, por lo que incrementar la salida toma paréntesis.fuente
n+k-n%k
.n&3+1
la adición también primero?Julia, 16 bytes
Pruébalo en línea!
fuente
MATL,
15 109 bytesPruébalo en línea!
Explicación:
fuente
5M
(portapapeles automático de entradas de función) en lugar del segundo2:4
.MATL, 8 bytes
Utiliza el algoritmo Jelly de Denis, ¡me sorprende que tenga la misma longitud!
Pruébelo en línea o verifique todos los casos de prueba .
fuente
Matlab, 33 bytes
Otro enfoque ligeramente diferente
fuente
05AB1E , 8 bytes
Código:
Pruébalo en línea! .
fuente
±D2xŸ%α
(2xŸ
es solo una alternativa para usted3L>
; y otras dos alternativas de igual byte podrían serƵ…S
o4L¦
).Rubí, 27 bytes
Mapas 2, 3 y 4 al siguiente múltiplo anterior
n
.fuente
CJam, 15 bytes
Pruébalo en línea! o verificar todos los casos de prueba .
fuente
Pyke,
11 98 bytesPruébalo aquí!
fuente
Mathematica, 21 bytes
Esta es una función sin nombre que toma un solo entero como entrada y devuelve una lista de los múltiplos.
La
Ceiling
función toma un segundo parámetro opcional que le dice que se redondee al siguiente múltiplo del número dado. Afortunadamente, también se enhebra automáticamente sobre su segundo argumento de modo que podamos darle una lista de valores y, a su vez, obtendremos múltiplos redondeados para todos esos.fuente
Octava, 20 bytes
Ejemplos:
Vale la pena señalar que podemos hacer esto hasta 9 sin agregar bytes adicionales:
Salida (2520 es el entero positivo más pequeño divisible por todos los números de un solo dígito):
fuente
Haskell, 27 bytes
fuente
Laberinto , 19 bytes
Pruébalo en línea!
Esto genera los resultados en el orden
C, B, A
separado por saltos de línea.Explicación
Como de costumbre, una breve cartilla de laberinto:
A pesar de los dos no-ops (
"
) que hacen que el diseño parezca un poco derrochador, estoy bastante contento con esta solución, porque su flujo de control es bastante sutil.La IP comienza en la esquina superior izquierda a la
:
derecha. Inmediatamente llegará a un callejón sin salida?
y se dará la vuelta, de modo que el programa realmente comience con este código lineal:Eso significa que ahora tenemos tres copias de
n
en la pila principal, pero su profundidad es4
. Eso es conveniente porque significa que podemos apilar la profundidad para recuperar el multiplicador actual mientras trabajamos a través de las copias de la entrada.La IP ahora entra en un bucle 3x3 (en sentido horario). Tenga en cuenta que
#
, lo que empuja la profundidad de la pila, siempre empujará un valor positivo de modo que sepamos que la IP siempre girará hacia el este en este punto.El cuerpo del bucle es este:
Después de recorrer el bucle (hasta
!
) tres veces, todas las copiasn
se agotan y se revela el cero debajo. Debido a la"
parte inferior (que de otro modo parece bastante inútil), esta posición es un cruce. Eso significa que con un cero en la parte superior de la pila, el IP intenta ir en línea recta (oeste), pero debido a que hay un muro, en realidad gira 180 grados y se mueve hacia el este como si hubiera tocado un callejón sin salida.Como resultado, ahora se ejecuta el siguiente bit:
fuente
Matlab, 50 bytes
fuente
2:4
lugar de[2 3 4]
.Pyth,
1110 bytesBanco de pruebas.
Gracias a Dennis por un byte!
fuente
JavaScript (ES6), 26 bytes
Curiosamente, portar la respuesta Ruby de @ KevinLau o la respuesta Python de @ xnor da como resultado la misma longitud:
Tengo una ligera preferencia por el puerto de la respuesta Rubí ya que funciona hasta 2 53 -3, mientras que el puerto de la respuesta Python sólo funciona hasta 2 31 -5.
fuente
)
->]
como creoC,
5046 bytes¡Gracias a Neil y nwellnhof por guardar 4 bytes!
Decepcionantemente largo. Siento que hay un truco que cambia un poco aquí y que no conozco, pero aún no puedo encontrarlo. Devuelve un puntero a una matriz que contiene los tres elementos. Programa completo:
fuente
n + i - n % i++
resultado un comportamiento indefinido?s/a[i-2]/*a++/
para guardar dos bytes.f(a,n,i)int*a;{for(i=1;++i<5;)*a++=n+i-n%i;}
Reng, 40 bytes
1: init
i1+#i
establece la entrada a1 + input
; Esto se debe a que debemos trabajar en los números estrictamente mayores que la entrada.234
inicializa la cinta con nuestros valores de iteración y1ø
salta al comienzo de la siguiente línea.2a: bucle
i(
coloca la entrada en STOS y crea2[
una nueva pila con los 2 elementos principales.¤
duplica la pila y,
hace módulo. Si hay un resto,q!^
salga del bucle para ir a (b). De lo contrario, estamos bien para imprimir.$
elimina la cosita extra,]
cierra la pila y laæ
imprime muy bien.l0wq!~
termina si la pila contiene cero miembros.2b: ese otro bucle
(1+)
agrega 1 al STOS y31j
salta a la parte del bucle que no toma cosas de la pila. Y lucro.Ese espacio en blanco extra realmente me está molestando. Toma un GIF.
fuente
Retina,
624326 bytes17 bytes gracias a @Martin Büttner .
(Tenga en cuenta la nueva línea final).
Pruébalo en línea!
Entrada en unario
1
, salida en unario en1
separado por nuevas líneas.Versión anterior de 43 bytes:
Pruébalo en línea!
Entrada en unario, salida en unario separada por punto y coma (
;
).Versión anterior de 62 bytes:
Pruébalo en línea!
Entrada en unario, salida en unario separada por punto y coma (
;
).fuente
Octava,
272220 bytesMATLAB y Octave:
Mejor (las soluciones son equivalentes, pero una puede superar a la otra cuando se juega más), MATLAB y Octave:
Solo en octava:
Prueba aquí .
fuente
Minkolang 0.15 , 17 bytes
Pruébalo aquí!
Explicación
fuente
> <> , 31 bytes
Espera
N
estar presente en la pila al inicio del programa. Pruébalo en línea!fuente
Mathematica 28 bytes
{2, 3, 4}
{6, 6, 8}
{44, 45, 44}
{124, 126, 124}
{422, 423, 424}
{31416, 31416, 31416}
{1081178, 1081179, 1081180}
El caso general produce una respuesta general:
{2 + r - Mod [r, 2], 3 + r - Mod [r, 3], 4 + r - Mod [r, 4]}
fuente
R,
3026 bytes(Reducido 4 bytes gracias a @Neil)
Esto (al igual que el resto de las respuestas, supongo) agrega 2: 4 a la entrada y reduce el resto después de ejecutar el módulo en los mismos números.
fuente
N+2:4-N%%2:4
?UGL ,
51312524 bytesPruébalo en línea!
Versión anterior de 25 bytes:
Pruébalo en línea!
Versión anterior de 31 bytes:
Pruébalo en línea!
Versión anterior de 51 bytes:
Pruébalo en línea!
fuente
Java
7057fuente
=
en blanco alrededorint a = new Integer(z[0]);
Golfscript, 22 bytes
Pruébalo en línea!
Solución alternativa de 22 bytes:
Pruébalo en línea!
fuente
En realidad, 22 bytes
Pruébalo en línea!
Dato curioso: se encontraron y corrigieron 3 errores en el intérprete de Actually al escribir este programa.
Dato no tan divertido: esos 3 errores impidieron que esta solución fuera mucho más corta.
Explicación:
fuente
J, 18 bytes
Pruébalo en línea!
fuente