Usando solo ASCII imprimible (códigos hexadecimales 20 a 7E), escriba un programa central cuadrado N × N sin comentarios que esté rodeado por 4 capas más , creando un programa cuadrado (N + 8) × (N + 8) cuadrado (N> 0) . Para N = 3, el diseño (para ser reemplazado por el código real) se ve así:
44444444444
43333333334
43222222234
43211111234
4321CCC1234
4321CCC1234
4321CCC1234
43211111234
43222222234
43333333334
44444444444
- Las C representan el núcleo del programa 3 × 3.
- Los 1 representan la primera capa, los 2 representan la segunda capa, etc.
El programa siempre toma una cadena de enteros separados por espacios, como a 0 -1 31 -1 2 2 2
través de stdin o similar (solo deben ser números simples, sin comillas ni corchetes ni nada). El resultado depende de qué partes del diseño se ejecutaron.
Hay cinco formas de ejecutar el programa (se incluyen nuevas líneas en la ejecución). Cada uno hace algo diferente a la lista:
Ejecute solo el núcleo:
CCC CCC CCC
Esto calcula el máximo de los valores absolutos de los elementos de la lista de entrada e imprime
CORE
en una nueva línea muchas veces. Si el máximo es 0, no se emite nada (una nueva línea está bien).La salida para
0 -1 31 -1 2 2 2
seríaCORE CORE ...
31 veces
Ejecute el núcleo con la capa 1:
11111 1CCC1 1CCC1 1CCC1 11111
Esto genera el promedio (media aritmética ) de los valores de la lista con precisión de coma flotante estándar.
- La salida para
0 -1 31 -1 2 2 2
sería 35/7 =5
(5.0
está bien).
- La salida para
Ejecute el núcleo con las capas 1 y 2:
2222222 2111112 21CCC12 21CCC12 21CCC12 2111112 2222222
Esto genera una lista separada por espacios de la lista de entrada invertida.
- La salida para
0 -1 31 -1 2 2 2
sería2 2 2 -1 31 -1 0
.
- La salida para
Ejecute el núcleo con las capas 1, 2 y 3 (el patrón debería ser obvio).
Esto genera una lista separada por espacios de la lista de entrada ordenada.- La salida para
0 -1 31 -1 2 2 2
sería-1 -1 0 2 2 2 31
.
- La salida para
Ejecute el núcleo con las capas 1, 2, 3 y 4.
Esto genera una lista separada por espacios de la lista de entrada con los duplicados eliminados, el orden no importa.- La salida para
0 -1 31 -1 2 2 2
podría ser-1 0 2 31
.
- La salida para
Todo el resultado es stdout o una alternativa similar.
Solo estas 5 combinaciones de diseño tienen un comportamiento específico.
Notas
- No se permiten comentarios en el núcleo o capas o combinaciones de los mismos. El código que no funciona o que no hace nada constructivo no cuenta como un comentario.
- Recuerde que el núcleo puede tener cualquier dimensión N × N (positiva), pero las capas tienen solo un carácter de grosor.
- Puede suponer que la entrada no tiene espacios iniciales o finales y exactamente un espacio entre los números. Siempre contendrá al menos un número. (Las listas de salida también deberían estar formateadas de esta manera).
- Puede suponer que la lista y los cálculos necesarios para la salida no tendrán valores que desborden (o desborden) sus enteros (siempre que su máximo sea algo razonable como 2 16 ).
Tanteo
Escribir este programa normalmente sería fácil. Escribirlo con un núcleo pequeño es difícil.
El programa con el tamaño de núcleo más pequeño (el N más pequeño) gana. En caso de empate, el ganador es el programa completo (el cuadrado (N + 8) × (N + 8)) con la menor cantidad de caracteres distintos (sin contar líneas nuevas).
Informe su valor de N en la parte superior de su respuesta.