Dados dos números enteros positivos, 'A' y 'b', salida de una "caja" ascii-arte que es un caracteres de ancho y b caracteres de altura. Por ejemplo, con '4' y '6':
****
* *
* *
* *
* *
****
Simple derecho? Aquí está el giro: el borde del cuadro debe ser los caracteres de "a" y "b" alternando. Esto comienza en la esquina superior izquierda y continúa en una espiral en el sentido de las agujas del reloj. Por ejemplo, el ejemplo anterior con 4 y 6 debería ser
4646
6 4
4 6
6 4
4 6
6464
A y B pueden ser números de dos dígitos. Por ejemplo, las entradas "10" y "3" deberían mostrar esto:
1031031031
1 0
3013013013
Para mantener la salida relativamente pequeña, no tiene que admitir tres o más números de dígitos. Además, dado que las entradas están restringidas a enteros positivos , '0' es una entrada no válida, que no tiene que manejar.
Aquí hay algunos casos de prueba más:
Input: (3, 5)
Output:
353
5 5
3 3
5 5
353
Input: (1, 1)
Output:
1
Input: (4, 4)
Output:
4444
4 4
4 4
4444
Input: (27, 1)
Output:
271271271271271271271271271
Input: (1, 17)
Output:
1
1
7
1
1
7
1
1
7
1
1
7
1
1
7
1
1
Input: (12, 34):
Output:
123412341234
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
432143214321
Puede tomar entradas y salidas en cualquier formato razonable, y las lagunas estándar están prohibidas. Como se trata de código de golf, ¡la respuesta más corta en bytes gana!
a
es 1, ¿es la pared izquierda o la pared derecha?Respuestas:
Pyth ,
6551 bytesPruébalo en línea!
fuente
C #, 301 bytes
Estoy seguro de que se puede hacer mucho más golf aquí, pero estoy feliz de haber obtenido una solución que funcionó.
Encontré un error donde el resultado final estaba en el orden incorrecto, ¡maldición!
Versión antigua: 280 bytes
fuente
Python 2, 199 bytes
fuente
Ruby, 128 bytes
Salidas de nueva línea si la altura es 1.
Enlace de Ideone: https://ideone.com/96WYHt
fuente
[w,h]*""
lugar de"%d%d"%[w,h]
4 bytes, y no necesita los paréntesiss[q-2,w].reverse
, pero luego necesitará un espacio después del:
byte, así que -1 byte.JavaScript
213212202Seguramente tiene margen de mejora.
Editar: guardado un byte gracias a TheLethalCoder
fuente
`${c}${a}`.repeat(l+1)
podría ahorrarte un byte.W=W.substr(0,a-2).replace(/./g," ")
mismo queW=" ".repeat(a-2)
? (¿Su código realmente funcionaa=1
?)C, 311 bytes
Utiliza automáticamente bibliotecas incluidas
stdio.h
ystring.h
.fuente
JavaScript (ES6), 171 bytes
Donde
\n
representa el carácter de nueva línea literal. Crea una cadena de dígitos repetida, luego decide qué concatenar en función de en qué fila estamos; la fila superior es solo la porción inicial de la cadena de dígitos repetida, la fila inferior (si la hay) es una porción invertida desde el medio de la cadena, mientras que las filas intermedias se construyen usando caracteres tomados de otras partes de la cadena.fuente
(w,h)=>
aw=>h=>
para guardar un byteTSQL, 291 bytes
Golfizado:
Sin golf:
Violín
fuente
Python 3,
155148 bytesGolfed de 7 bytes más:
Sustituido
2*w+2*h-4or 1
pormax(1,2*w+2*h-4)
y['',s[-i-1]][w>1]
para(s[-i-1]if w>1else'')
.Versión anterior:
fuente