Прогноз погоды: слишком часто ошибаться, чтобы полагаться, слишком часто игнорировать.
Учитывая высокую и низкую температуру и одно из четырех погодных условий в день, выведите графический прогноз погоды на пять дней в формате ASCII. Структура четырех графических индикаторов показана ниже.
\ /
-O- Sunny
/ \
\ /
-O(==) Partly Cloudy
(====)
(==) Cloudy
(====)
(==)
(====) Rainy
/////
График прогнозирования выглядит следующим образом: каждый графический индикатор центрируется в своем собственном блоке 9х5 с 5 блоками на графике. Каждое поле разделено |
символами. Ниже графического индикатора находится трехбуквенное сокращение дня недели ( MON, TUE, WED, THU, FRI, SAT, SUN
), центрированное в его собственном окне 9x1. Температуры ниже дня недели сосредоточены в их собственной коробке 9x2. Пример показан ниже.
---------------------------------------------------
| | | | | |
| (==) | (==) | \ / | \ / | \ / |
| (====) | (====) | -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 |
---------------------------------------------------
Обратите внимание, что «по центру» можно взять свободно - посмотрите в примере, как графическое выравнивание и горизонтальное выравнивание температуры несколько гибки.
Кроме того, поскольку я из США и поэтому использую Фаренгейт, вы можете смело предположить, что все температуры являются двузначными, поэтому 9 < t < 100
.
Ввод / вывод и правила
Приведенные здесь примеры ввода / вывода демонстрируют приведенную выше диаграмму.
Входные данные могут быть приняты в любом разумном формате и любым удобным способом . Например,
1) вы можете использовать числа для дней недели, высоких и низких температур и четырех условий, и принимать входные данные в виде пяти кортежей, например,[0, 75, 57, 2], [1, 69, 53, 3], ...
2) вы можете принимать входные данные в виде пяти кортежей, используя слова, например,['MON', 75, 57, 'CLOUDY'], ['TUE', 69, 53, 'RAINY'] ...
3). Вы можете использовать входные данные как первый день, а также список высоких температур, список низких температур и список условий, например1, [75, 69, ...], [57, 53, ...], [2, 3, ...]
4) и т. д.Лидирующие / завершающие символы новой строки или другие пробелы являются необязательными, при условии, что символы выстраиваются соответствующим образом.
- Либо полная программа или функция приемлемы. Если функция, вы можете вернуть вывод, а не распечатать его.
- Вывод может быть на консоль, возвращен в виде списка строк, возвращен в виде одной строки и т. Д.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
Ответы:
Emojicode ,
1202974 байтаВводит в виде списка целых чисел в формате,
condition day high low
где условие является целым числом от 0 до 4. Попробуйте онлайн!источник
JavaScript (ES8),
304263222 байтаПринимает входные данные в виде массива из 5
[w,d,h,l]
записей, где d - это день в виде строки, а w , h , l - целые числа, представляющие погоду (с индексом 0, с 0 = солнечно), высокую температуру и низкую температуру соответственно. Возвращает массив строк.демонстрация
Показать фрагмент кода
Как?
Мы определяем:
L = ',0,04,05,06,0,,01,,0H 2,0L 3,'.split(',')
Массив строк, описывающих каждую строку доски, в которой:
"| "
W = ' (==),(====),/////,\\ /,-O(==), \\ /, -O-, / \\,'.split(',')
Массив строк, описывающих шаблоны графических индикаторов.
P = '765143810210'
Строка, описывающая индексы шаблонов в W для каждого графического индикатора, сгруппированные по 3 и сохраненные в обратном порядке.
Основная функция теперь выглядит как:
источник
Древесный уголь ,
11094 байтаПопробуйте онлайн! Ссылка на подробную версию кода. Изменить: Сохранено 16 байтов, избегая повторения облака. Объяснение:
Распечатать левый столбец
|
s.Цикл 5 дней.
Введите погодные условия, пронумерованные от 0 до 3, используя тот же порядок, что и вопрос.
Если погодные условия не солнечные:
Если погодные условия частично облачные, напечатайте частично солнце.
Распечатать облако.
Если погода дождливая, распечатайте ее.
В противном случае напечатайте солнце.
Прочитайте и распечатайте день.
Зациклите и введите и распечатайте температуру.
Распечатать следующий столбец
|
с.Петля над персонажами
6
,2
,3
и1
.Распечатать строку
-
с.Приведите символ в целое число и переместите готовый к печати следующий ряд.
источник
Python 3
636610534464379 байтФормат ввода: - Первый список принимает погодные условия днем -
0 - Солнечно
1
- Небольшая облачность 2 - Облачно
3 - Дождливо.
Второй и третий список берут самые высокие и самые низкие температуры соответственно (в виде строк). Ничего не делайте с четвертым списком - он в основном хранит дни недели.
Попробуйте онлайн
Примечание: - Особая благодарность Mr.XCoder, ovs и pizzapants184 за помощь в сокращении большого количества байтов.
источник
Чистый , 328 байт
Попробуйте онлайн!
Как частичная функция, буквальная, принимающая
[[Int]]
и возвращающаяString
.источник