Introdução:
Acho que todo mundo sabe o que é uma lâmpada de lava, mas, caso não saiba:
São basicamente tubos de vidro que contêm cera em um líquido translúcido. A parte inferior é aquecida quando a lâmpada é acesa, causando uma alteração na densidade e, portanto, a cera flutua para o topo. Quando esfria, cai novamente, causando o efeito que vemos acima.
Geralmente, leva de 45 a 60 minutos para que a base da lâmpada aumente a temperatura alta o suficiente para mudar a cera sólida para cera líquida (se a lâmpada estiver localizada em uma área à temperatura ambiente).
Mais informações na Wikipedia, que também é usada como fonte para alguns dos textos acima.
Desafio:
Dado um número inteiro positivo n
indicando a quantidade de minutos que passaram desde que ligamos a Lava Lamp, produza um estado aleatório da Lava Lamp com base em números inteiros em cinco níveis.
Para este desafio, diremos que a lâmpada de lava contém 1000 unidades de cera no total e temos cinco níveis em que a cera pode estar.
1) Se n
estiver abaixo de 45, a lâmpada de lava ainda está esquentando, portanto a saída será de quatro linhas vazias 1000
na parte inferior:
1000
2) Se n
estiver na faixa, [45, 60)
a Lava Lamp aumentou a temperatura o suficiente para a cera se movimentar, mas ainda não está muito alta. A cera pode atingir até e incluindo o terceiro nível.
3) Se n
for 60
superior ou superior, a cera pode estar em qualquer um dos cinco níveis.
Portanto, considerando o número inteiro positivo n
como entrada, produziremos um estado aleatório com as três regras acima em mente.
Aqui estão alguns exemplos de saídas:
Saídas possíveis para qualquer um n
que seja >= 45
:
523
106
371
913
87
Saídas possíveis para qualquer um n
que seja >= 60
:
73
113
312
5
497
284
55
637
24
Saída constante para n
isso é <= 44
(e saída possível para qualquer n
):
1000
Regras do desafio:
- Pode haver linhas vazias, mesmo que o nível acima dele não esteja vazio.
- Apenas
0
não é permitido em nenhuma linha. Em vez disso, deve estar vazio. - A saída é um pouco flexível. Você tem permissão para gerar uma lista / matriz de seqüências de caracteres / objetos em vez de um resultado delimitado por nova linha, como acima. A razão pela qual digo strings / objetos é devido à regra acima. Uma linha vazia deve ser
""
,null
,[]
, etc, mas não pode ser0
ou um número inteiro negativo (nem pode serfalse
) (Ie["", "", 913, "", 87]
paran >= 45
). Você também pode reverter a saída (ou seja, em1000\n\n\n\n
vez de\n\n\n\n1000
ou em[87, null, 913, null, null]
vez de[null, null, 913, null, 87]
). - Os números devem ser inteiros. Podem ser decimais com o
0
valor decimal, mas nenhum dos números deve ter dígitos decimais e os números inteiros devem sempre somar exatamente1000
. - Todas as saídas aleatórias possíveis com base em
n
devem ter uma chance diferente de zero. - É permitida uma nova linha à direita (portanto, existem seis linhas de saída).
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta, para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código.
- Além disso, é altamente recomendável adicionar uma explicação para sua resposta.
0
um número negativo ou false
.
n < 60
?
n < 45
apenas 1 nível é preenchido no entanto (superior ou inferior, dependendo da ordem que você mostrar em), que é 1000
. Com 45 <= n < 60
três dos cinco e com n >= 60
todos os cinco. Mas a saída sempre conterá cinco 'linhas'.