DEV Community

Discussion on: Daily Challenge #2 - String Diamond

Collapse
 
choroba profile image
E. Choroba

Let's go functional in Perl! (Tests included).

#!/usr/bin/perl
use warnings;
use strict;

use Test::More;

sub diamond {
    my ($n) = @_;
    return if $n < 1 or 0 == $n % 2;

    return join "\n",
           map { ' ' x (($n - $_) / 2) . '*' x $_ }
           grep $_ % 2,
           1 .. $n, reverse 1 .. $n - 1
}

is diamond(0), undef;
is diamond(1), "*";
is diamond(2), undef;
is diamond(3), " *\n***\n *";
is diamond(5), "  *\n ***\n*****\n ***\n  *";

done_testing();