Смерть пиксельного искусства с низким разрешением (или «Нарисуй ту смерть»)

20

Это нерегулярный вебкомик! тематическое задание. *

Смерть - это довольно обширная организация, и, хотя Головная Смерть без труда рассказала своим сотрудникам, некоторые другие сущности, связанные с организацией, не могли отследить их всех.

Таким образом, ваша задача здесь состоит в том, чтобы, учитывая название одной из различных смертей, сгенерировать соответствующее 32x32 пиксельное изображение этой смерти.

Кроме того, так как Head Death довольно бюрократична (и немного скупа), самая короткая программа (после того, как несколько бонусов были учтены) будет выбрана для официального использования.

Ввод должен быть без учета регистра. Кроме того, префиксы Death Of, Death Byи The Death Ofдолжны рассматриваться в качестве эквивалента.

Выходное изображение может быть сохранено в файл (в любом формате растрового изображения без потерь) или отображено на экране.

Ниже приведены ТОЧНЫЕ значения RGB, которые будут использоваться:

White 255 255 255
Black 0 0 0
Dark Gray 125 125 125
Bone Gray 170 170 170
Purple 60 0 140
Brown 120 40 0
Blue 0 80 200
Green 0 100 0
Neon Green 100 255 0
Red 0 255 0

(Обратите внимание, что ни одна Смерть не использует все эти цвета, и единственный цвет, который является общим для всех них, это серый кость)

Каждое выходное изображение, показанное здесь, показывается сначала в реальном размере, а затем в 3-кратном увеличении.

Вы обязаны поддерживать следующие смерти:

Смерть безумно одолели огненные шары

введите описание изображения здесь введите описание изображения здесь

Смерть от удушения гигантской лягушкой

введите описание изображения здесь введите описание изображения здесь

Голова Смерти

введите описание изображения здесь введите описание изображения здесь

Смерть Смерти Стивом

введите описание изображения здесь введите описание изображения здесь

Смерть вдыхая шляпные химикаты

введите описание изображения здесь введите описание изображения здесь

Харон

введите описание изображения здесь введите описание изображения здесь

(Обратите внимание, что точная роль Харона в организации неизвестна)

Вы не обязаны поддерживать следующие Смерти, но можете делать это для различных бонусов.

Смерть от раздавленного таза (бонус -8%)

введите описание изображения здесь введите описание изображения здесь

Смерть от того, что они были найдены с помощью инструмента для истирания скалы Mars Rover (бонус -10%)

введите описание изображения здесь введите описание изображения здесь

Смерть тонущего в пуле реактора (бонус -10%)

введите описание изображения здесь введите описание изображения здесь

Смерть пронзенного копьем (бонус -8%)

введите описание изображения здесь введите описание изображения здесь

Смерть от удара ножом (бонус -9%)

введите описание изображения здесь введите описание изображения здесь

Смерть плохой доставки пиццы (бонус -7%)

введите описание изображения здесь введите описание изображения здесь

(Вероятно, единственная Смерть, которая не носит плащ. Не спрашивайте меня, почему.)

Если вы добавите включить все из них, окончательный множитель будет 0.92*0.9*0.9*0.92*0.91*0.93≈0.58.

Дополнительный бонус

Если вы используете формат RGBA и заменяете белый фон прозрачностью, сэкономьте дополнительные 12%.

* Нерегулярный вебкомик! это © 2002-настоящее время Дэвид Морган-Мар. CC BY-NC-SA.

SuperJedi224
источник
Поскольку было много прокрутки, чтобы сделать изображения, я поместил их рядом, а не вертикально. Надеюсь, это улучшение, но не стесняйтесь откатить изменения, если это не то, что вы хотите.
трихоплакс

Ответы:

7

JavaScript (ES6), 714 677,97 651,76 634,36 545,76 1063 - (8% * 10% * 10% * 8% * 9% * 7% * 12%) = 542,75

e=>(e=e.slice(-4,-2),c=document.createElement("canvas"),c.width=c.height=32,t=(r="000")=>(o=c.getContext("2d")).fillStyle="#"+r,r=(r,t,l=1,e=1)=>o.fillRect(r,t,l,e),u=12,i="7d7d7d",t(),r(l=13,8,3),(n=!/ea|te|ca|ri|Po/.test(e))&&(r(l,6,3,5),r(u,7,5,3)),"ca"==e&&(r(l,3,3,3),r(u,6,5)),"ri"!=e&&(t("ea"==e?"3C008C":/te|Po/.test(e)?"006400":""),r(10,l,9,15+("ea"==e)),r(11,u,7),r(u,11,5)),"te"==e&&(t("782800"),r(u,6,5),r(l,5),r(15,5)),"ri"==e&&(t("f00"),r(l,5,3,2),r(16,6)),t("aaa"),r(l,7,3),r(l,9,3),r(m=14,8),r(m,u,1,u),r(u,u,5),r(l,m,3),r(l,16,3),r(l,18,3),r(l,20,3),r(l,24,3),r(u,25),r(16,25),r(11,26,1,6),r(17,26,1,6),r(17,l,1,8),n||r(m,10,1,2),/al|ar|sh|el|To/.test(e)?(r(8,u,4),t(),r(7,9,1,23),"al"==e&&(r(3,9,4,2),r(2,10,1,2)),"sh"==e&&r(2,8,6,4),"el"==e&&(r(6,6,3,4),r(7,4,1,2),r(5,8,5)),"To"==e&&(r(6,8,3,23),r(4,m,2,3),r(3,m),r(l,9,3),t("fff"),r(6,9),r(5,15),t("0050c8"),r(l,7,3,2),r(m,9))):"la"==e?(r(11,u),r(10,l),r(9,15,1,2),t(i),r(9,17,1,12),r(8,17),r(7,18),r(8,19)):r(11,l,1,8),"Po"==e&&(t(i),r(l,10,3),t("64ff00"),r(u,7,5,3),r(l,6,3)),c.toDataURL())

Генерирует URL-адрес данных для png изображения и покрывает все бонусы.

РЕДАКТИРОВАТЬ: Только что понял бонус, что прозрачный фон сбивает еще 12%, что также уменьшает мое количество байтов!

Mwr247
источник