Aquí hay una imagen:
%%%%%%%%%%%%%
% Hello, %
% world! %
%%%%%%%%%%%%%
Pero es demasiado confuso para nuestros cerebros de tamaño insuficiente para calcular. Entonces lo promediamos así:
Divídalo en 2 x 2 secciones. Si la imagen termina antes de que se complete una sección, imagine que hay espacios allí.
Promedio de los valores de los caracteres ASCII en cada sección.
Redondea este promedio y conviértelo a un carácter ASCII.
- Finalmente, reemplace todos los caracteres de la sección por el carácter promedio.
Repita esto para todas las secciones.
Entonces el promedio de la imagen de arriba se ve así:
$$>>II99######
$$>>II99######
$$##88KKGG####
$$##88KKGG####
Su tarea: escriba un programa que tome una imagen ASCII como entrada y genere su promedio.
Nota Los enteros se redondean por función floor(x+0.5)o función similar; en otras palabras, redondean mitades hacia arriba.

Respuestas:
JavaScript (ES6), 159 bytes
Toma una cadena multilínea como entrada.
fuente
MATL ,
3230 bytesLa entrada es una matriz de caracteres 2D, con filas separadas por
;.Pruébalo en línea!
Explicación
fuente
Pyth, 58 bytes
Pruébalo en línea!
fuente
LUA,
382376367353348 bytesFunciona en la línea de comando; acepta una cadena como el caso de prueba.
fuente
Ruby,
235230 bytesfuente
Python, 319 bytes
La segunda sangría es pestañas.
Lo anterior
Ces el relleno,Ces el proceso de promediación de letras individuales y el resto se emitefuente
R,
433399 bytesMe estoy desesperando porque esta cosa parece no competir como diablos. Se imprime
para el caso de prueba.
Si te alimentas en el 7 × 3
la salida será
debido a la divisibilidad por 2 etc. etc.
Sin golf:
Solo mire cómo maneja este magnífico ejemplo (cortesía de chris.com):
Después:
fuente
Ruby,
180158148128 + 4124 + 4 = 128 bytesEjecutar con
$ ruby -nl(+4 bytes para-nlbanderas). Toma entrada en STDIN.Véalo en ideone: http://ideone.com/brmP3L
Sin golfos y explicación
Por ejemplo
man ruby, la-nbandera "[c] hace que Ruby asuma el siguiente ciclo alrededor de su script ...while gets ... end". La variable especial$_contiene la última línea leída porgets. La-lbandera elimina el\nde cada línea, equivalente a$_.chop!.La variable especial
$.es el número de líneas que se han leído hasta ahora, y$<es STDIN. Los pares de caracteres de cada segunda línea se comprimen con los de la línea anterior. La cadena de formato%2s%2scombina los caracteres y los rellena con espacios, luego los caracteres se promedian.fuente
w=s=~/$/es más corto para calcular el ancho inicial. También solo devuelva la cadena calculada en lugar de imprimir porque eso cuenta como salida