From 2ba96a7ab7e6f2edfc580d5e0094b305464d9e48 Mon Sep 17 00:00:00 2001 From: Kai Burgdorf Date: Sun, 1 Nov 2020 22:47:31 +0100 Subject: solution by kai burgdorf --- challenge-084/kai-burgdorf/README.md | 1 + challenge-084/kai-burgdorf/perl/ch-1.pl | 18 ++++++++++++ challenge-084/kai-burgdorf/perl/ch-2.pl | 52 +++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 challenge-084/kai-burgdorf/README.md create mode 100755 challenge-084/kai-burgdorf/perl/ch-1.pl create mode 100755 challenge-084/kai-burgdorf/perl/ch-2.pl diff --git a/challenge-084/kai-burgdorf/README.md b/challenge-084/kai-burgdorf/README.md new file mode 100644 index 0000000000..f0e13acd45 --- /dev/null +++ b/challenge-084/kai-burgdorf/README.md @@ -0,0 +1 @@ +Solution by Kai Burgdorf diff --git a/challenge-084/kai-burgdorf/perl/ch-1.pl b/challenge-084/kai-burgdorf/perl/ch-1.pl new file mode 100755 index 0000000000..0e890b6e44 --- /dev/null +++ b/challenge-084/kai-burgdorf/perl/ch-1.pl @@ -0,0 +1,18 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Data::Dumper; + +my $N = $ARGV[0] // 1234; + +if ($N >= 2147483647) { + print "0"; +} +else { + my @numbers = split("", $N); + while(scalar @numbers != 0) { + print pop @numbers; + } +} diff --git a/challenge-084/kai-burgdorf/perl/ch-2.pl b/challenge-084/kai-burgdorf/perl/ch-2.pl new file mode 100755 index 0000000000..85de550fe3 --- /dev/null +++ b/challenge-084/kai-burgdorf/perl/ch-2.pl @@ -0,0 +1,52 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +#Example 1 - Output: 1 +my @input = ( [ 0, 1, 0, 1 ], [ 0, 0, 1, 0 ], [ 1, 1, 0, 1 ], [ 1, 0, 0, 1 ] ); + +#Example 2 - Output: 4 +#my @input = ( [ 1, 1, 0, 1 ], [ 1, 1, 0, 0 ], [ 0, 1, 1, 1 ], [ 1, 0, 1, 1 ] ); + +#Example 3 - Output: 0 +#my @input = ( [ 0, 1, 0, 1 ], [ 1, 0, 1, 0 ], [ 0, 1, 0, 0 ], [ 1, 0, 0, 1 ] ); + +my $size = scalar @{ $input[0] }; +my $squares = 0; + +my $r = 0; +for my $row (@input) { + my $c = 0; + for my $elem ( @{$row} ) { + if ( $elem == 1 ) { + $squares += get_squares( $r, $c ); + } + $c++; + } + $r++; +} + +print "Output: $squares\n"; + +sub get_squares { + my ( $r, $c ) = @_; + + my $square_count = 0; + my @row = @{ $input[$r] }; + + for my $top_right ( $c + 1 .. $#row ) { + + my $bottom_row = $r + $top_right - $c; + + if ( $bottom_row < $size + && $input[$r][$top_right] == 1 + && $input[$bottom_row][$c] == 1 + && $input[$bottom_row][$top_right] == 1 ) + { + $square_count++; + } + } + + return $square_count; +} -- cgit