Objetivo
El objetivo del programa es dibujar un rectángulo de arte ASCII repetidamente duplicado en tamaño, alternando horizontal y verticalmente. Cada vez que el rectángulo duplica su tamaño, el área adicional se representa con un carácter diferente y las áreas anteriores permanecen sin cambios. Las dos secciones más pequeñas contienen un carácter cada una y pueden estar en cualquier esquina.
El programa acepta un solo entero como entrada, definiendo el número de secciones que contiene el rectángulo completo.
No se permiten otros recursos externos o insumos.
Muestra de entrada y salida
10
ABDDFFFFHHHHHHHHJJJJJJJJJJJJJJJJ
CCDDFFFFHHHHHHHHJJJJJJJJJJJJJJJJ
EEEEFFFFHHHHHHHHJJJJJJJJJJJJJJJJ
EEEEFFFFHHHHHHHHJJJJJJJJJJJJJJJJ
GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ
GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ
GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ
GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
Criteria de selección
El código más corto en una semana gana los puntos.
Respuestas:
APL, 25 caracteres / bytes *
Vista en despiece ordenado
Ejemplos
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ *: APL se puede escribir en su propio juego de
caracteres de un solo byte (heredado) que asigna símbolos APL a los valores superiores de 128 bytes. Por lo tanto, para fines de puntuación, un programa de N caracteres que solo usa caracteres ASCII y símbolos APL puede considerarse que tiene una longitud de N bytes.
fuente
GolfScript, 30 caracteres
Ejemplo (ejecutar en línea ):
fuente
Python 2.7 - 85
103Esto usa la
zip(*s)
sintaxis para transponer continuamente la lista. ¡Muchas gracias a Daniel por su consejo que afeitó a 12 personajes! Luego se afeitó un poco más usando números en lugar de letras.Además, esto utiliza en
1<<x
lugar de2**x
como bit shift tiene una precedencia más baja (?). Observar:Y algo de salida:
fuente
for i in s:print''.join(i)
.Ruby, 88
Lee N de la entrada estándar.
Ejemplo de uso para N = 8:
Salida:
N = 10
Salida:
fuente
J,
5743Ejemplos:
fuente
MATLAB, 86 Personajes
Mi intento más corto en MATLAB, impulsado por @flawr (¡dos veces!):
Salida de ejemplo:
fuente
function M=f(n) M=''; if n M=cat(mod(n,2)+1,f(n-1),64+n*ones(2.^fix([n-1,n-2]/2))); end
fix
confix(n/2-[.5,1])
PS: una solución realmente agradable concat
, no sabía sobre este uso donde puede elegir la dimensión =)q [73 caracteres]
ejemplo
fuente
Sclipting , 59 caracteres
(Este programa podría ser bastante más corto si tuviera instrucciones para el logaritmo de base 2, pero no las tengo, así que lo hago manualmente con un bucle).
Código anotado
n
es la entradaSalida
Para
n
= 6:Por supuesto, puede cambiar
뀀
(@
) a cualquier otro carácter base, por ejemplo, con글
(espacio) yn
= 7:El número más alto que no hace que el programa sea más largo es
믰
(= 255), lo que nos da (n
= 8 esta vez):Si alargamos el carácter del programa 1, por ejemplo, usar
냟및
(=\u4DFF
) yn
= 9, obtenemos:fuente
C #,
239185182180 bytesC # no tiene nada en los lenguajes menos detallados.
Salida, caracteres elegidos para la belleza:
fuente
for
bucle externo , haciendo 182.PERL, 122 caracteres
con espacio en blanco agregado:
Salida:
fuente
PERL,
9481 caracteresConstruye el fractal iterativamente letra por letra, agregando nuevas filas y columnas y filas y columnas ... Utiliza operaciones de cadena simples para hacer eso. Tenga en cuenta que estoy abusando de la variable estándar en lugar de la letra uno para permitir el azúcar de sintaxis (como omitir espacios,
$:x2
etc.)Con espacios en blanco y comentarios agregados:
Alguna salida:
fuente
Sclipting , 45 caracteres
Esta solución funciona de manera completamente diferente a la otra solución Sclipting. Es mucho más aburrido, pero es más corto ...
Anotado
fuente
Delphi 348 || 449 con sangría
Sin sangría
Con sangría
fuente
CJam, 30 (23) bytes
CJam es unos meses más joven que este desafío, por lo que no es elegible para la marca de verificación verde.
Pruébalo aquí.
El OP aclaró en un comentario que se permite cualquier conjunto de caracteres imprimibles únicos, por lo que solo estoy tomando los caracteres ASCII imprimibles desde el principio (con un espacio en la esquina, a
!
continuación , etc.).Si la orientación puede cambiar entre entradas pares e impares (lo cual no creo, pero eso es lo que hace el envío de GolfScript), puedo hacerlo en 25 bytes:
La idea es realmente simple: comience con una cuadrícula que contenga un espacio, y luego N-1 la transponga y duplique todas las líneas con el siguiente carácter.
Para la versión larga, al final también vuelvo a transponer N-1 veces para garantizar una orientación constante.
fuente