Вот изображение:
%%%%%%%%%%%%%
% Hello, %
% world! %
%%%%%%%%%%%%%
Но это слишком запутанно для нашего маленького мозга, чтобы вычислять. Итак, мы усредняем это так:
Разделите его на 2 х 2 секции. Если картина заканчивается до завершения раздела, представьте, что там есть пробелы.
Усредните значения символов ASCII в каждом разделе.
Округлите это среднее значение и преобразуйте его в символ ASCII.
- Наконец, замените все символы в разделе на средний символ.
Повторите это для всех разделов.
Таким образом, среднее изображение выше выглядит так:
$$>>II99######
$$>>II99######
$$##88KKGG####
$$##88KKGG####
Ваша задача: написать программу, которая принимает изображение ASCII в качестве входных данных и выдает их среднее значение.
Примечание. Целые числа округляются по функциям floor(x+0.5)
или аналогичным функциям - другими словами, округляют пополам вверх.
Ответы:
JavaScript (ES6), 159 байт
Принимает многострочную строку в качестве ввода.
источник
MATL ,
3230 байтВвод - это двумерный массив символов, разделенный строками
;
.Попробуйте онлайн!
объяснение
источник
Pyth, 58 байт
Попробуйте онлайн!
источник
Lua,
382376367353348 байтРаботает в командной строке; принимает строку как тестовый пример.
источник
Рубин,
235230 байтисточник
Python, 319 байт
2-й отступ - вкладки.
Материал перед
C
заполнением,C
это процесс усреднения по отдельным буквам, а остаток выводитсяисточник
R
433399 байтЯ впадаю в отчаяние, потому что эта штука кажется неконкурентоспособной. Это печатает
для теста.
Если вы кормите в 7 × 3
выход будет
из-за делимости на 2 и т. д. и т. д.
Ungolfed:
Посмотрите, как он справляется с этим великолепным примером (любезно предоставлено chris.com):
После:
источник
Рубин,
180158148128 + 4124 + 4 = 128 байтЗапустить с
$ ruby -nl
(+4 байта для-nl
флагов). Принимает участие в STDIN.Смотрите его на ideone: http://ideone.com/brmP3L
Ungolfed & объяснение
Во-первых
man ruby
,-n
флаг «[c] использует Ruby для выполнения следующего цикла вокруг вашего скрипта ...while gets ... end
». Специальная переменная$_
содержит последнюю строку, прочитаннуюgets
.-l
Флаг удаляет\n
из каждой строки, что эквивалентно$_.chop!
.Специальная переменная
$.
- это количество строк, которые были прочитаны до сих пор, и$<
это STDIN. Пары символов из каждой второй строки упаковываются вместе с предыдущей строкой. Строка формата%2s%2s
объединяет символы и дополняет ее пробелами, после чего символы усредняются.источник
w=s=~/$/
короче для расчета начальной ширины. Также просто возвращайте вычисленную строку вместо печати, потому что это считается выходным