Вступление
Оби-Ван Кеноби, Куай-Гон Джинн и Дарт Мол собираются сражаться! Тем не менее, они все забыли принести свои световые мечи. Напишите программу или функцию, которая, учитывая строку в Jedi
качестве входных данных, генерирует изображение, похожее на это * :
и учитывая строку Sith
, генерирует изображение, похожее на это:
Характеристики изображения
Любой из 3 световых мечей (белый клинок, включая круглый край на конце (2 круглых края для красного) и включая ручку ) имеет длину 900 пикселей (это не включает в себя цветовой градиент вокруг клинка).
Закругленный край на конце лопасти представляет собой полукруг (очевидно, с дискретным приближением) с диаметром, равным ширине лопасти.
Клинок (то есть белая часть светового меча) имеет ширину 12 пикселей.
Зеленый и синий световые мечи разделены на 200 пикселей (от центральной линии зеленого клинка до центральной линии синего клинка).
Рукоятка для всех 3 световых мечей 180px (1/5 от общей длины). Поэтому сам клинок, включая круглые края, имеет длину 720 пикселей для синих и зеленых световых мечей и длину 360 пикселей для двух лезвий красного светового меча.
Ручка сине-зеленого светового меча находится внизу светового меча. Ручка для красного светового меча расположена горизонтально по центру.
Длина градиента от края белого лезвия до полностью белого цвета составляет 1,5 * ширины лезвия (например, 18px для линейных частей).
Зеленый градиент изменяется от RGB (0,255,0) до белого (255,255,255) (или прозрачный, если вам проще его реализовать). Красный градиент идет от (255,0,0) до белого, а синий градиент идет от (0,0,255) до белого.
Цвет ручки - RGB (128,128,128).
Вокруг светового меча может быть белое пустое пространство.
входные
Либо Sith
или Jedi
в виде строки. Вы можете взять эту строку из STDIN в качестве аргумента функции, параметра командной строки или чего-либо подобного. Вы можете предположить, что ввод всегда будет точным Sith
или Jedi
иным образом.
Выход
Вы должны сгенерировать файл изображения, содержащий изображение, соответствующее входной строке. Вы можете свободно выбирать любой формат изображения, если хотите, чтобы это было изображение True Color .
счет
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах. Да пребудет с тобой сила.
* Изображения в этом посте не отображаются в полном размере.
источник
Ответы:
HTML / CSS решение,
765 740541 байтНедавний рефакторинг использует
:target
псевдокласс, а не<form>
Javascript.Чтобы ввести любой ввод, добавьте его в конец URL в качестве цели, например,
test.html#Jedi
илиtest.html#Sith
Вот снова с пробелами и несколькими комментариями:
Световые мечи - это
<table>
элементы с одной ячейкой на деталь (лезвие / ручка), которые не скрыты своимиid
атрибутами.Лезвия окрашены с помощью CSS
box-shadow
и световые мечи джедаев подвергаются atransform: rotate()
.Картинки или этого не произошло (нажмите для полного разрешения):
Если вы добавите
td{background:#fff}body{background:#000}
в CSS, вы получите крутой темный вид.Протестировано в Firefox и Chrome (в Linux). Обратите внимание, что это совсем не соответствует стандартам, так как я пытался максимально уменьшить размер.
Спасибо @manatwork за
border-spacing
и:target
.источник
:target
псевдокласс , как я однажды . pastebin.com/WtxbSsr3, затем получите к нему доступ как file: ///tmp/test.html#Jedi и file: ///tmp/test.html#Sith (Кстати, изменение HTMLcellspacing=0
→ CSSborder-spacing:0
выглядит корректно в моем Firefox, но не проверено в других браузерах.)border-spacing
(это сэкономило 25 символов).:target
Совет позволил извлекать<form>
и все JS. В моем последнем редактировании я также усилил его еще больше. Это может стать еще меньше, если мы используем<hr>
сfloat:left
иclear:left
, но это должно сделать.style>[id]:not(:target){display:none}table{width:900px;height:12px;border-spacing:0}td:last-child{border-radius:0 12px 12px 0}#Sith td:first-child{border-radius:12px 0 0 12px}#Sith td{box-shadow:0 0 18px red}#Jedi{transform:rotate(-90deg);margin:350px 0}#Jedi td{box-shadow:0 0 18px #0f0}*+table{margin:200px 0 0 0}#Jedi *+table td{box-shadow:0 0 18px #00f}td:nth-last-child(2){background:#888;width:180px;box-shadow:none!important}</style><div id=Jedi><table><td><td></table><table><td><td></table></div><table id=Sith><td><td><td></table
<hr>
s вместо<table>
s.