Previsão do tempo: incorreto com muita frequência, certo demais para ignorar.
Dada uma temperatura alta e baixa e uma das quatro condições meteorológicas por dia, produz uma previsão gráfica de cinco dias da arte ASCII. A estrutura dos quatro indicadores gráficos é mostrada abaixo.
\ /
-O- Sunny
/ \
\ /
-O(==) Partly Cloudy
(====)
(==) Cloudy
(====)
(==)
(====) Rainy
/////
O gráfico de previsão é o seguinte: cada indicador gráfico é centralizado em sua própria caixa 9x5, com 5 caixas no gráfico. Cada caixa é separada por |
caracteres. Abaixo do indicador gráfico, há uma abreviação de três letras para o dia da semana ( MON, TUE, WED, THU, FRI, SAT, SUN
) centralizada em sua própria caixa 9x1. As temperaturas estão abaixo do dia da semana centralizadas em sua própria caixa 9x2. Um exemplo é mostrado abaixo.
---------------------------------------------------
| | | | | |
| (==) | (==) | \ / | \ / | \ / |
| (====) | (====) | -O(==) | -O- | -O- |
| | ///// | (====) | / \ | / \ |
| | | | | |
---------------------------------------------------
| MON | TUE | WED | THU | FRI |
---------------------------------------------------
| H 75 | H 69 | H 77 | H 80 | H 85 |
| L 57 | L 53 | L 61 | L 63 | L 66 |
---------------------------------------------------
Observe que "centrado" pode ser tomado de maneira vaga - veja no exemplo como o alinhamento gráfico e o alinhamento horizontal da temperatura são um pouco flexíveis.
Além disso, como eu sou dos EUA e, portanto, uso Fahrenheit, você pode assumir com segurança que as temperaturas são de dois dígitos 9 < t < 100
.
E / S e regras
Os exemplos de E / S aqui são demonstrativos do gráfico de exemplo acima.
A entrada pode ser obtida em qualquer formato razoável e por qualquer método conveniente . Por exemplo,
1) você pode usar números para os dias da semana, as temperaturas alta e baixa e as quatro condições e receber entradas como cinco tuplas, como[0, 75, 57, 2], [1, 69, 53, 3], ...
2) você pode usar entradas como cinco tuplas usando palavras, como['MON', 75, 57, 'CLOUDY'], ['TUE', 69, 53, 'RAINY'] ...
3) você pode considerar a entrada apenas no primeiro dia e uma lista de altas temperaturas, uma lista de baixas temperaturas e uma lista de condições, como1, [75, 69, ...], [57, 53, ...], [2, 3, ...]
4) etc.Novas linhas à esquerda / à direita ou outro espaço em branco são opcionais, desde que os caracteres sejam alinhados adequadamente.
- Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- A saída pode ser no console, retornada como uma lista de cadeias, retornada como uma única cadeia, etc.
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
Respostas:
Emojicode ,
1202974 bytesRecebe a entrada como uma lista de listas de números inteiros no formato de
condition day high low
onde a condição é um número inteiro entre 0 e 4. Experimente online!fonte
JavaScript (ES8),
304263222 bytesRecebe a entrada como uma matriz de 5
[w,d,h,l]
entradas, em que d é o dia como uma sequência e w , h , l são números inteiros que representam o clima (indexado 0, com 0 = ensolarado), alta temperatura e baixa temperatura, respectivamente. Retorna uma matriz de seqüências de caracteres.Demo
Mostrar snippet de código
Quão?
Nós definimos:
L = ',0,04,05,06,0,,01,,0H 2,0L 3,'.split(',')
Uma matriz de seqüências de caracteres que descreve cada linha do quadro, na qual:
"| "
W = ' (==),(====),/////,\\ /,-O(==), \\ /, -O-, / \\,'.split(',')
Uma matriz de sequências descrevendo os padrões dos indicadores gráficos.
P = '765143810210'
Uma sequência que descreve os índices dos padrões em W para cada indicador gráfico, agrupados por 3 e armazenados na ordem inversa.
A função principal agora é lida como:
fonte
Carvão ,
11094 bytesExperimente online! Link é a versão detalhada do código. Editar: salvou 16 bytes, evitando repetir a nuvem. Explicação:
Imprima a coluna da esquerda de
|
s.Loop ao longo dos 5 dias.
Insira a condição climática, numerada de 0 a 3, usando a mesma ordem que a pergunta.
Se a condição climática não estiver ensolarada:
Se a condição climática estiver parcialmente nublada, imprima um sol parcial.
Imprima uma nuvem.
Se o tempo estiver chuvoso, imprima-o.
Caso contrário, imprima o sol.
Leia e imprima o dia.
Faça um loop, insira e imprima as temperaturas.
Imprima a próxima coluna de
|
s.Loop sobre os personagens
6
,2
,3
e1
.Imprima uma linha de
-
s.Converta o caractere para inteiro e prepare-se para imprimir a próxima linha.
fonte
Python 3,
636610534464379 bytesFormato de entrada: - A primeira lista calcula as condições climáticas do dia -
0 - Ensolarado
1 - Parcialmente nublado
2 - Nublado
3 - Chuvoso.
A segunda e a terceira lista levam as temperaturas mais alta e mais baixa, respectivamente (como cadeias). Não faça nada com a quarta lista - principalmente para armazenar os dias da semana.
Experimente Online
Nota: - Um agradecimento muito especial ao Mr.XCoder, ovs e pizzapants184 por ajudar a reduzir muitos bytes.
fonte
Limpo , 328 bytes
Experimente online!
Como uma função parcial literal, pegar
[[Int]]
e retornarString
.fonte