Desafío
Escriba un programa que tome una matriz de 4 enteros ( que representa una secuencia de números generados por un cierto algoritmo ) y devuelva el siguiente entero que seguiría.
Solo usaremos algoritmos simples de suma, resta, multiplicación y división con una variación constante (es decir, no variable).
Para la división usaremos los floor
valores enteros: 133/4 = 33
y33/4 = 8
Puede suponer que siempre habrá un único valor de retorno válido
Casos de prueba
[14,24,34,44]
debería devolver 54 (Algoritmo adicional)
[105,45,-15,-75]
debería devolver -135 (algoritmo de resta)
[5,25,125,625]
debería devolver 3125 (algoritmo multiplicativo)
[256,64,16,4]
debería devolver 1 (algoritmo de división)
Reglas generales
- Este es el código de golf , por lo que la respuesta más corta en bytes gana el desafío.
- Las lagunas estándar están prohibidas
-81/4
es21 r 3
o-20 r -1
.Respuestas:
05AB1E ,
181618 bytesExplicación
Pruébalo en línea!
fuente
[-325, -82, -21, -6]
Javascript (ES6),
444244 bytes (fijo)Guardado 2 bytes, siguiendo el consejo de IsmaelMiguel.
Versión fija para
[2,1,0,0]
y[1,0,0,0]
según lo sugerido por edc65Versión de 30 bytes
Para el registro, mi primer intento fue de
32 a30 bytes, pero carecía de soporte de floor () para la división. También falla para casos especiales como[2,1,0,0]
y[1,0,0,0]
.Manifestación
fuente
[a,b]=>
para los parámetros de la función. Los paréntesis son obligatorios.b*2==c+a
<=> algoritmo de suma / restaBrachylog ,
373327 bytesPruébalo en línea! o verificar todos los casos de prueba .
Guardado 10 bytes gracias a @LeakyNun .
Explicación
Como señaló LeakyNun, no necesitamos el caso de resta porque
I
puede ser cualquier número entero.fuente
Haskell, 65 bytes
fuente
Python 2, 40 bytes
Es literalmente la respuesta de JS portada a Python (¡gracias @LeakyNun!). Mi enfoque anterior fue ridículamente largo, pero aquí está:
Pitón 2,
169166 bytesEl segundo y tercer nivel son una pestaña sin procesar y una pestaña sin procesar más un espacio, respectivamente, que juega muy mal con Markdown, por lo que las pestañas han sido reemplazadas por 2 espacios.
Bastante simple; prueba cada constante y operador que cree que podría ser la constante, luego, si la combinación constante / operador funciona para cada elemento de la lista (usando un
try
/except
par para evitarZeroDivisionError
s), imprime el resultado para el último elemento de la lista.Estoy seguro de que hay un mejor método aquí, este es el método ingenuo.
fuente
[1,0,0,0]
que debería salir0
TSQL, 55 bytes
Este script intenta sumar y restar en la misma verificación, luego intenta multiplicar, si eso falla, debe ser una división.
Violín
fuente
C #, 63 bytes
Comprueba si la diferencia entre el primer y el segundo elemento es la misma que la diferencia entre el segundo y el tercer elemento. Si es así, suma / resta, de lo contrario, multiplica / divide.
fuente
JavaScript, 73 bytes
Pruebas :
Funciona para todos ellos.
fuente
Lenguaje GameMaker, 70 bytes
fuente
R,
6874Matriz: 68 bytes
4 entradas: 45 bytes
Solución de experiencia con
log
,exp
,var
, 71 bytesactualización: división entera
fuente
b-a
para guardar un byte (y noto que tus llamadas de ejemplo están agregando espacios de nuevo).261,65,16,4
retornos en0.9961686
lugar de1
(por supuesto, debería haber un caso de prueba para esto en la pregunta).Java,
125123 bytesGolfizado:
Sin golf:
Este código seguramente tiene algunos problemas, ya que no maneja la división por cero y esas cosas. Por supuesto, tampoco funcionará si hay más (o menos) de 4 enteros en la matriz de entrada
a
. Lo que lo hace más que estúpido, pero me divertí :)Pruébelo: https://ideone.com/nELH5I
fuente
TI-Basic, 37 bytes
Funciona en cualquier calculadora TI-83/84
fuente
Python 2,
75 66 6561 bytesMucho más tiempo que mi entrada anterior de 38 bytes que no satisfacía correctamente la serie de división (al igual que la mayoría de los demás).
Los casos de prueba y más casos extremos están en ideone
Nota: la división entera para un negativo aquí se define como tener un resto con el mismo signo que el divisor, por
-81/4
lo que sería-21
con un resto de3
y-81/-4
sería20
con un resto de-1
.fuente
-81/-4 != -21
Jalea , 14 bytes
Pruébalo en línea!
fuente
Pyth, 18 bytes
Acepta entradas como una lista de valores separada por una nueva línea.
Pruébalo en línea!
Explicación:
fuente