Соревнование
Даны две строки, каждая длиной до 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-искусство.