Desafio
Escreva um programa que utilize uma matriz de 4 números inteiros ( que representa uma sequência de números gerados por um determinado algoritmo ) e retorne o próximo número inteiro a seguir.
Usaremos apenas algoritmos simples de adição, subtração, multiplicação e divisão com uma variação constante (ou seja, não variável).
Para divisão, usaremos os floor
valores inteiros: 133/4 = 33
e33/4 = 8
Você pode assumir que sempre haverá um único valor de retorno válido
Casos de teste
[14,24,34,44]
deve retornar 54 (algoritmo de adição)
[105,45,-15,-75]
deve retornar -135 (algoritmo de subtração)
[5,25,125,625]
deve retornar 3125 (algoritmo multiplicativo)
[256,64,16,4]
deve retornar 1 (algoritmo de divisão)
Regras gerais
- Isso é código-golfe , então a resposta mais curta em bytes vence o desafio.
- As brechas padrão são proibidas
-81/4
é21 r 3
ou-20 r -1
.Respostas:
05AB1E ,
181618 bytesExplicação
Experimente online!
fonte
[-325, -82, -21, -6]
Javascript (ES6),
444244 bytes (fixo)Economizou 2 bytes, seguindo o conselho de IsmaelMiguel.
Versão fixa para
[2,1,0,0]
e[1,0,0,0]
como sugerido por edc65Versão de 30 bytes
Para constar, minha primeira tentativa foi de
32 a30 bytes, mas faltava suporte floor () para a divisão. Também falha em casos especiais como[2,1,0,0]
e[1,0,0,0]
.Demo
fonte
[a,b]=>
parâmetros de função. Os parênteses são obrigatórios.b*2==c+a
<=> algoritmo de adição / subtraçãoBrachylog ,
373327 bytesExperimente online!ou verifique todos os casos de teste .
Guardou 10 bytes graças a @LeakyNun .
Explicação
Como LeakyNun apontou, não precisamos do caso de subtração porque
I
pode ser qualquer número inteiro.fonte
Haskell, 65 bytes
fonte
Python 2, 40 bytes
É literalmente a resposta do JS portada para o Python (obrigado @LeakyNun!). Minha abordagem anterior foi ridiculamente longa, mas aqui está:
Python 2,
169166 bytesO segundo e o terceiro níveis são uma guia bruta e uma guia bruta mais um espaço, respectivamente, que joga muito mal com o Markdown; portanto, as guias foram substituídas por 2 espaços.
Bem simples; tenta todas as constantes e operadores que acha que podem ser as constantes; se a combinação constante / operador funcionar para todos os elementos da lista (usando um par
try
/except
para evitarZeroDivisionError
s), ela imprimirá o resultado do último elemento da lista.Tenho certeza de que existe um método melhor aqui, este é o método ingênuo.
fonte
[1,0,0,0]
que deve saída0
TSQL, 55 bytes
Este script está tentando adicionar e subtrair na mesma verificação e tenta multiplicar; se isso falhar, deve ser divisão.
Violino
fonte
C #, 63 bytes
Verifica se a diferença entre o primeiro e o segundo elemento é a mesma que a diferença entre o segundo e o terceiro elemento. Nesse caso, faz adição / subtração, caso contrário, faz multiplicação / divisão.
fonte
JavaScript, 73 bytes
Testes :
Funciona para todos eles.
fonte
Idioma do GameMaker, 70 bytes
fonte
R,
6874Matriz: 68 bytes
4 entradas: 45 bytes
Solução com bónus
log
,exp
,var
, 71 bytesupdate: divisão inteira
fonte
b-a
para salvar um byte (e notei que suas chamadas de exemplo estão adicionando espaços novamente).261,65,16,4
retorna em0.9961686
vez de1
(é claro que deve haver um caso de teste para isso na questão).Java,
125123 bytesGolfe:
Ungolfed:
Esse código certamente tem alguns problemas, pois não lida com a divisão por zero e outras coisas. É claro que também não funcionará se houver mais (ou menos) que 4 números inteiros na matriz de entrada
a
. O que torna isso estúpido, mas eu me diverti :)Experimente: https://ideone.com/nELH5I
fonte
TI-Basic, 37 bytes
Funciona em qualquer calculadora TI-83/84
fonte
Python 2,
75 66 6561 bytesMuito mais tempo do que minha entrada anterior de 38 bytes, que não atendia corretamente à série de divisões (da mesma forma que a maioria das outras).
Casos de teste e mais casos extremos estão no ideone
Nota: a divisão inteira para um negativo aqui é definida como tendo um restante com o mesmo sinal que o divisor, portanto,
-81/4
seria-21
com um restante de3
e-81/-4
seria20
com um restante de-1
.fonte
-81/-4 != -21
Gelatina , 14 bytes
Experimente online!
fonte
Pyth, 18 bytes
Aceita entrada como uma lista de valores separados por nova linha.
Experimente online!
Explicação:
fonte