Соревнование
Даны две строки, каждая длиной до 30, состоящая из печатных символов ASCII (коды ), поместите их на весы с наименьшим количеством байтов кода! Это состоит из следующих шагов:
- Рассчитайте и сравните вес струн
- Выберите соответственно наклоненную шкалу ASCII-art
- Поместите две строки на весы
Строки могут быть переданы как массив, два аргумента или любой другой разумный метод.
Вес строки определяется как сумма весов символов этой строки, где:
- Пробелы имеют вес 0 (
) - Строчные буквы имеют вес 2 (
abcdefghijklmnopqrstuvwxyz) - Прописные буквы имеют вес 4 (
ABCDEFGHIJKLMNOPQRSTUVWXYZ) - Все остальные символы имеют вес 3 (
!"#$%&'()*+,-./0123456789:;<=>?@[\]^_`{|}~)
Весы выглядят так:
, _
| _- * / \
| - * / \
_- * | / \
_- * | / \
/ \ | * ------ *
/ \ |
/ \ |
/ \ |
* ------ * |
______ | ______
_.
/ \ * -_ |
/ \ * - |
/ \ | * -_
/ \ | * -_
* ------ * | / \
| / \
| / \
| / \
| * ------ *
______ | ______
,
|
______ | ______
/ \ | / \
/ \ | / \
/ \ | / \
/ \ | / \
* ------ * | * ------ *
|
|
______ | ______
Если первая строка тяжелее, используйте первый рисунок в качестве основы для вывода; если вторая строка тяжелее, используйте второй рисунок; если строки имеют одинаковый вес, используйте третий. Конечный пробел разрешен.
Я буду использовать сегмент третьего рисунка в качестве основы для всех следующих примеров.
Первая строка должна быть размещена на левой панели, а вторая строка на правой панели.
Поместите строку на сковороде, помещая его некосмические символы в области 6х5 непосредственно над черточками, как отмечено на #с здесь (Вы можете закончить перезапись части шкалы баланса - это хорошо):
###### _ ###### ###### ###### / ###### \ * ------ *
Все эти символы должны быть "урегулированы", т.е. либо над -символом, либо другим символом из строки:
НЕПРАВИЛЬНО НЕПРАВИЛЬНО ПРАВИЛЬНО
____ ____ ____
f / \ / \ / \
л \ / \ / \
/ \ / hov \ / s \
/ oating \ / eri ng \ / ettled \
* ------ * * ------ * * ------ *
Кроме того, весь стек должен быть как можно более плоским, а это означает, что из шести столбцов шириной в 1 высота самого высокого и высота самого короткого не должны отличаться более чем на 1:
НЕПРАВИЛЬНО НЕПРАВИЛЬНО ПРАВИЛЬНО
[самое высокое: 5] [самое высокое: 4] [самое высокое: 5] [самое высокое: 2]
[самое короткое: 0] [самое короткое: 2] [самое короткое: 4] [самое короткое: 2]
5__5_ ____ 5_5__ ____
45445 & / \ 445454 / \
45445 $% & $ @ 445454 / \
/ 45445 &% @% $ & 445454% & $ @% &
/ 45445 \ / & $ @ $ &% \ / 445454 \ / $ @ $% $$ \
* ------ * * ------ * * ------ * * ------ *
Точный порядок / расположение символов не имеет значения. Ниже приведены все допустимые меры для строки «Взвесьте свои слова!»:
____ ____ ____ ____ / \ / \ / \ / \ DS! \ / owd oe \ u! Wd \ ourwor Wihuos yoiwgr eghioo / Weighy \ / egyrr! \ / Wrhd! S \ / rrsuwy \ * ------ * * ------ * * ------ * * ------ *
Контрольные примеры
INPUT: «CODE GOLF», «проблемы кодирования»
Вес: 32, 32
ПРИМЕР ВЫХОДА:
,
|
______ | ______
/ \ | / \
/ \ | Нге \ s
/ OO \ | Шаль
/ CFGLED \ | / Кодирования \
* ------ * | * ------ *
|
|
______ | ______
ВВОД: "", "$"
ВЕСА: 0, 3
ПРИМЕР ВЫХОДА:
_.
/ \ * -_ |
/ \ * - |
/ \ | * -_
/ \ | * -_
* ------ * | / \
| / \
| / \
| / $ \
| * ------ *
______ | ______
ВХОД: «ВЫ ЗНАЕТЕ, ЧТО ОНИ СКАЗЫВАЮТ!», «Существует_always_a_relevant_xkcd»
Вес: 75, 65
ПРИМЕР ВЫХОДА:
, tr_a_s
| _hekx_y
| - * elcdta
_- * | revanw
_- * | / E's_al \
T / \ | * ------ *
AUYOHY |
A! HWYK |
/ OTSMEW \ |
* ------ * |
______ | ______
+1. Во-первых: если пробелы ничего не «весят» и не включаются в произведение искусства, тогда зачем вообще их включать? Это просто ненужные накладные расходы, чтобы сначала отфильтровать их. Во-вторых: это похоже на вызов «2-в-1» / хамелеон для меня - Задача 1: Определить, какая нить «тяжелее», Задача 2: Сгенерировать ASCII-искусство.