O StickStack é uma linguagem de programação muito simples, baseada em pilha, com apenas duas instruções:
|
empurra o comprimento da pilha para a pilha-
exibe os dois principais elementos da pilha e diminui a diferença (second topmost - topmost
)
Detalhes do idioma
- A pilha está vazia no início do programa.
- Todas as instruções são executadas seqüencialmente da esquerda para a direita.
- Se houver menos de 2 números na pilha, a
-
instrução é ilegal. - No final da execução, a pilha deve conter exatamente um número .
Qualquer número inteiro pode ser gerado por um programa StickStack. Por exemplo:
|||--||-- generates the number 2 through the following stack states:
[]
[0]
[0, 1]
[0, 1, 2]
[0, -1]
[1]
[1, 1]
[1, 1, 2]
[1, -1]
[2]
Para avaliar seu código StickStack, você pode usar este avaliador online (CJam) . (Obrigado por @Martin pelo código.)
A tarefa
Você deve escrever um programa ou função que tenha fornecido um número inteiro como saída ou retorne uma string que representa um programa StickStack que gera o número fornecido.
Pontuação
- Sua pontuação principal é a duração total dos programas StickStack para os casos de teste abaixo. Menor pontuação é melhor.
- Seu envio é válido apenas se você executou seu programa em todos os casos de teste e contou sua pontuação.
- Sua pontuação secundária (desempate) é a duração do seu programa ou função de geração.
Casos de teste de entrada
(Cada número é um caso de teste diferente.)
-8607 -6615 -6439 -4596 -4195 -1285 -72 12 254 1331 3366 3956 5075 5518 5971 7184 7639 8630 9201 9730
Seu programa deve funcionar para quaisquer números inteiros (que seu tipo de dados possa manipular) e não apenas para os casos de teste fornecidos. As soluções para os números de teste não devem ser codificadas no seu programa. Se houver dúvida de codificação, os números de teste serão alterados.