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 nindicando 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 nestiver abaixo de 45, a lâmpada de lava ainda está esquentando, portanto a saída será de quatro linhas vazias 1000na parte inferior:
1000
2) Se nestiver 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 nfor 60superior ou superior, a cera pode estar em qualquer um dos cinco níveis.
Portanto, considerando o número inteiro positivo ncomo 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 nque seja >= 45:
523
106
371
913
87
Saídas possíveis para qualquer um nque seja >= 60:
73
113
312
5
497
284
55
637
24
Saída constante para nisso é <= 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
0nã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 ser0ou 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\nvez de\n\n\n\n1000ou em[87, null, 913, null, null]vez de[null, null, 913, null, 87]). - Os números devem ser inteiros. Podem ser decimais com o
0valor 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
ndevem 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.
0um número negativo ou false.
n < 60?
n < 45apenas 1 nível é preenchido no entanto (superior ou inferior, dependendo da ordem que você mostrar em), que é 1000. Com 45 <= n < 60três dos cinco e com n >= 60todos os cinco. Mas a saída sempre conterá cinco 'linhas'.
