Вызов
Учитывая входное изображение Луны, выведите фазу Луны.
Фазы Луны
Ваша программа получит одно из этих изображений в формате png, и вы должны вывести фазу точно так, как указано:
new moon
waxing crescent
first quarter
waxing gibbous
full moon
waning gibbous
third quarter
waning crescent
вход
Входными данными будет путь к png-файлу 240 на 240 пикселей и будет один из изображений выше.
Байты изображения гарантированно будут одинаковыми.
выигрыш
Самый короткий код выигрывает
code-golf
image-processing
Бета распад
источник
источник
Ответы:
Node.js , 145 байт
Попробуйте онлайн! (генерирует фиктивные файлы с одинаковыми размерами)
Как?
Мы просто смотрим на размер файла и конвертируем его в индексы в двух таблицах поиска.
Первая часть:
Вторая часть:
источник
Python 2 ,
223222 байта-1 байт благодаря OMᗺ
getpixel((x,y))
- вернет пиксель RGBA вx,y
getpixel((n*48,99))[2]for n in[1,2,3,4]
- вернет синий канал средней линии, гдеn*48 ... for n in 1,2,3,4
будет 4 точки, где может освещаться солнечный светn*getpixel(...)
- сгенерирует разные значения для каждого столбцаsum(...)%13
- эти значения складываются вместе и%13
используются для получения уникального значение для каждой фазы, которое будет использоваться в качестве индекса для списка фаз. Пиксели находятся примерно внутри красных кружков:
источник
Рубин, 131 байт
Смещения байтов, найденные методом грубой силы - например, если взять 699-й байт файла по модулю 7, то получится индекс в первой таблице поиска.
источник
Python 2 ,
196165 байтПопробуйте онлайн!
источник
PHP (> = 5,4),
199197 байт(-2 байта больше игры в гольф)
Чтобы запустить это:
Пример:
Ноты:
-d error_reporting=0
Опция используется для вывода уведомлений не / предупреждений.-d short_open_tag=1
Требуется , чтобы короткие теги.https
URL, как в примере выше, OpenSSL также должен быть включен.Как?
Получает размер файла (в байтах) и создает для него уникальный номер по следующей формуле:
((<first_bytes_digit> + <fourth_bytes_digit>) % 11) - 2
Эта формула генерирует числа от 0 до 8 с пропущенными только 3.
Предыдущие подходы:
PHP (> = 5,4), 251 байт
Чтобы запустить это:
Пример:
Ноты:
-d error_reporting=0
Опция используется для вывода уведомлений не / предупреждений.-d short_open_tag=1
Требуется , чтобы короткие теги.https
URL, как в примере выше, OpenSSL также должен быть включен.Как?
Проверки цвета 4 пикселя в изображении на
40,120
,80,120
,160,120
и200,120
и принимают решение о фазе Луны от этих цветов.источник