Basta ya de indagar en internet porque llegaste al espacio indicado, poseemos la solución que necesitas recibir pero sin complicarte.
Solución:
GFA básico 3.51 (Atari ST), 156134 124 bytes
Una lista editada manualmente en formato .LST. Todas las líneas terminan con CR
incluido el último.
PRO f(n)
DR "MA0,199"
p(n,90)
RET
PRO p(n,a)
I n
n=n-.5
DR "RT",a
p(n,-a)
DR "FD4"
p(n,a)
DR "FD4"
p(n,-a)
DR "LT",a
EN
RET
Ampliado y comentado
PROCEDURE f(n) ! main procedure, taking the number 'n' of iterations
DRAW "MA0,199" ! move the pen to absolute position (0, 199)
p(n,90) ! initial call to 'p' with 'a' = +90
RETURN ! end of procedure
PROCEDURE p(n,a) ! recursive procedure taking 'n' and the angle 'a'
IF n ! if 'n' is not equal to 0:
n=n-0.5 ! subtract 0.5 from 'n'
DRAW "RT",a ! right turn of 'a' degrees
p(n,-a) ! recursive call with '-a'
DRAW "FD4" ! move the pen 4 pixels forward
p(n,a) ! recursive call with 'a'
DRAW "FD4" ! move the pen 4 pixels forward
p(n,-a) ! recursive call with '-a'
DRAW "LT",a ! left turn of 'a' degrees
ENDIF ! end
RETURN ! end of procedure
Salida de ejemplo
Perl 6, 117 bytes
map ->ymap (((++$+y)%2+$++)%3**(y+$^v,*/3...*%3)??$^s[$++%2]!!'│')xx$_*3,<┌ ┐>,$_,<└ ┘>,1,^$_o*R**3
¡Pruébelo en línea!
0-indexado. Devuelve un 2D array de caracteres Unicode. La idea básica es que para las filas inferiores, la expresión
(x + (x+y)%2) % (3 ** trailing_zeros_in_base3(3*(y+1)))
produce el patrón
|....||....||....||....||.. % 3
..||....||....||....||....| % 3
|................||........ % 9
..||....||....||....||....| % 3
|....||....||....||....||.. % 3
........||................| % 9
|....||....||....||....||.. % 3
..||....||....||....||....| % 3
|.......................... % 27
Para las filas superiores, la expresión es
(x + (x+y+1)%2) % (3 ** trailing_zeros_in_base3(3*(y+3**n)))
Explicación
... o*R**3 # Feed $_ = 3^n into block
map ->y ... ,^$_ # Map y = 0..3^n-1
|map ... ,<┌ ┐>,$_,<└ ┘>,1 # Map pairs (('┌','┐'),3^n) for upper rows
# and (('└','┘'),1) for lower rows.
# Block takes items as s and v
( ... )xx$_*3 # Evaluate 3^(n+1) times, returning a list
(++$+y)%2 # (x+y+1)%2 for upper rows, (x+y)%2 for lower rows
( +$++) # Add x
(y+$^v,*/3...*%3) # Count trailing zeros of 3*(y+v) in base 3
3** # nth power of 3
% # Modulo
??$^s[$++%2] # If there's a remainder yield chars in s alternately
!!'│' # otherwise yield '│'
K (ngn/k), 3727 26 bytes
'y:x,,~>+x),x/1,&2*
¡Pruébelo en línea!
devuelve una matriz booleana
|'y
es la sintaxis específica de ngn/k. otros dialectos requieren un :
para hacer monádico un verbo each-ed: |:'y
Sección de Reseñas y Valoraciones
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)