Escreva uma função que contenha cinco linhas.
Se você executar a função como ela é, ela deve retornar 0.
Se você remover qualquer uma das cinco linhas e executar a função, deverá informar qual das linhas foi removida (por exemplo, se você remover a linha final, ela retornará 5).
Brevidade, novidade e elegância merecem consideração. A solução mais votada (após um período de tempo razoável) vence.
popularity-contest
function
jawns317
fonte
fonte
Respostas:
Rubi
Evitando números mágicos, pois não é um código de golfe.
Cada linha retira seu próprio número
1^2^3^4^5
. É Ruby, então a última linha define o valor de retorno.fonte
JavaScript (
13477696560 caracteres)→ demonstração ao vivo ←
chame esta função com n = 10.
Versões prévias:
65 caracteres
(deve ser chamado com n = 15)
69 caracteres
(deve ser chamado com n = 15)
77 caracteres
134 caracteres
sem golfe
fonte
var a
depois doreturn
fazer? Em teoria, não deve ser alcançado.Python
Se parâmetros forem permitidos, isso funcionará:
fonte
R
A função usa "constantes" internas e atribui outro valor a cada uma delas. Se todas essas variáveis forem iguais ao novo valor, a função retornará 0. Os valores lógicos serão transformados em valores numéricos devido aos operadores matemáticos. Os parênteses em torno da quarta linha permitem retornar visivelmente o resultado (se for o último comando).
fonte
Lua 5.2+
55 caracteres no corpo da função, excluindo novas linhas. Eu não poderia pensar em nada melhor, mas isso:
Na esperança de obter pontos extras por abuso de comentários: P
O motivo pelo qual não funciona no 5.1 é que os aninhados
[[]]
foram removidos e no 5.1 ele gera um erro de compilação em vez de ignorá-lo, como o 5.2.return 7-2-5
return 1
return 7-5
return 7-2-2
return 7-2-1
return 7-2
fonte
Rubi
Tentei fazê-lo com operações bit a bit e então percebi que há uma solução muito mais simples usando listas! Esse desafio é melhor atendido por uma linguagem de programação que retorna automaticamente o último valor que vê, como Ruby.
fonte
O Befunge não possui funções explícitas, mas aqui está o que eu chamaria de função no Befunge:
A primeira e a última linha são o início e o término da função. Faz a coisa mais próxima de "retornar", ou seja, coloca o valor correto na pilha.
fonte
Nova resposta
Encontrei outra solução. Isso é tão ruim, eu gostei muito da matemática. Essa solução usa variáveis globais e de recursão (eca!) Para saber se todas as linhas foram executadas ou não. Eu queria fazer algo diferente das outras soluções, então isso não é muito elegante, mas funciona corretamente :)
PHP
Eu realmente gostei deste desafio, obrigado! :)
Resposta antiga
Eu resolvi isso usando matemática. Se cada variável é vista como desconhecida e fazemos uma declaração por linha, há cinco desconhecidas e cinco linhas de código: isso nos leva ao seguinte sistema 5x5:
Depois de encontrar os valores, codifiquei-os e adicionei algumas coisas básicas.
PHP
Nota: A resposta antiga não funcionará se for deixada como está.
fonte
cera de abelha , 86 bytes
Experimentando meu primeiro esolang inventado. Após confusão inicial, descobri que a solução é muito simples.
Explicação:
programas de cera de abelha trabalham em uma grade hexagonal 2D. Os programas são armazenados em um formato retangular.
é armazenado como
As instruções para se mover em determinadas direções são:
Breve explicação
_1 p
Crie um IP, adicione 1 e redirecione o IP para a linha 2_^v>~2+p
Crie outro IP, caso a linha 1 esteja ausente, diminua a velocidade do IP para garantir que o IP da linha um esteja à frente, adicione 2 e redirecione para a linha 3> >~3+p
Adicione 3 e redirecione para a linha 4> >~4+X@7~8+~@$^^{;
Adicione 4, defina o 2º valor do lstack como 15 e, em seguida, o XOR lstack top e o 2º, reduza a velocidade do IP (para garantir que o IP na linha 5 esteja à frente, se a linha 5 existir) e emita o resultado e encerre o programa.> >~5+@7~8+~@${;
Adicione 5 e faça o mesmo que na linha 4, exceto a desaceleração.Basicamente, o programa apenas calcula uma soma xor 15
O adicional
>
nas linhas 3 a 5 apenas garante que, se uma das linhas 2 a 4 estiver ausente, o IP ainda será redirecionado corretamente e não sairá do programa.Você pode clonar meu intérprete de cera de abelha, escrito em Julia, no meu repositório GitHub
O leia-me no GitHub é mais atualizado e melhor estruturado que a página esolangs.
fonte
MuPAD, 57 caracteres
fonte
LISP comum:
NB: Ter parênteses finais em sua própria linha é considerado um estilo ruim, mas como outros idiomas têm
end
e}
eu presumo que seja permitido.fonte
Bash, 131 caracteres
Tudo é direto até a linha 5. Em seguida, ele precisa detectar se a linha final se foi. Isso tira proveito dos parâmetros de função permitidos, chamando a si próprio recursivamente, uma vez, para testar seu próprio valor de sucesso quando é instruído a falhar na linha 5 e, se a linha 5 for removida, a linha 4 retornará
5
.(Nota: o limite é de no mínimo 131 caracteres, se você retirar tudo, menos a função, deixar espaço em branco e alterar / bin / bash para / bin / sh)
fonte
Javascript
fonte