diff --git a/Retos/Reto #22 - LA ESPIRAL [Media]/perl/joaquinferrero.pl b/Retos/Reto #22 - LA ESPIRAL [Media]/perl/joaquinferrero.pl new file mode 100644 index 0000000000..6529781fb8 --- /dev/null +++ b/Retos/Reto #22 - LA ESPIRAL [Media]/perl/joaquinferrero.pl @@ -0,0 +1,36 @@ +#!/usr/bin/env perl +# +# La espiral +# +# Crea una función que dibuje una espiral como la del ejemplo. +# - Únicamente se indica de forma dinámica el tamaño del lado. +# - Símbolos permitidos: ═ ║ ╗ ╔ ╝ ╚ +# +# Ejemplo: espiral de lado 5 (5 filas y 5 columnas): +# ════╗ +# ╔══╗║ +# ║╔╗║║ +# ║╚═╝║ +# ╚═══╝ +# +# Joaquín Ferrero, 20230921 +# +use v5.38; + +sub espiral($tamano) { + my $ancho = int $tamano/2+0.5; + + say '=' x ($tamano-1), '╗'; + + for my $i (1 .. $ancho-1) { + say '║' x ($i-1), '╔', '=' x ($tamano - (2 * $i) - 1), '╗', '║' x $i; + } + + for my $i ($ancho .. $tamano-1) { + say '║' x ($tamano - $i-1), '╚', '=' x ((2 * $i) - $tamano), '╝', '║' x ($tamano - $i-1); + } +} + +espiral(10); + +__END__ diff --git a/Retos/Reto #22 - LA ESPIRAL [Media]/raku/joaquinferrero.raku b/Retos/Reto #22 - LA ESPIRAL [Media]/raku/joaquinferrero.raku new file mode 100644 index 0000000000..592aa530cc --- /dev/null +++ b/Retos/Reto #22 - LA ESPIRAL [Media]/raku/joaquinferrero.raku @@ -0,0 +1,35 @@ +#!/usr/bin/env raku +#`( + La espiral + + Crea una función que dibuje una espiral como la del ejemplo. + - Únicamente se indica de forma dinámica el tamaño del lado. + - Símbolos permitidos: ═ ║ ╗ ╔ ╝ ╚ + + Ejemplo: espiral de lado 5 (5 filas y 5 columnas): + ════╗ + ╔══╗║ + ║╔╗║║ + ║╚═╝║ + ╚═══╝ + + Joaquín Ferrero, 20230921 +) +use v6; + +sub espiral($tamano) { + my $ancho = ceiling($tamano/2); + + say '=' x ($tamano-1), '╗'; + + for 1 ..^ $ancho { + say '║' x ($_-1), '╔', ('=' x ($tamano - 2*$_ - 1)), '╗', ('║' x $_); + } + + for $ancho ..^ $tamano { + say '║' x ($tamano - $_-1), '╚', '=' x (2*$_ - $tamano), '╝', '║' x ($tamano - $_-1); + } +} + +espiral(10); +