From 82c779e1fc289d1f875ebdec292f9d741811e627 Mon Sep 17 00:00:00 2001 From: Jörg Sommrey <28217714+jo-37@users.noreply.github.com> Date: Mon, 7 Jun 2021 18:10:21 +0200 Subject: Solution to task 1 --- challenge-116/jo-37/perl/ch-1.pl | 103 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100755 challenge-116/jo-37/perl/ch-1.pl diff --git a/challenge-116/jo-37/perl/ch-1.pl b/challenge-116/jo-37/perl/ch-1.pl new file mode 100755 index 0000000000..9604083495 --- /dev/null +++ b/challenge-116/jo-37/perl/ch-1.pl @@ -0,0 +1,103 @@ +#!/usr/bin/perl -s + +use v5.16; +use Test2::V0; + +our ($tests, $examples); + +run_tests() if $tests || $examples; # does not return + +die < Date: Mon, 7 Jun 2021 20:51:21 +0200 Subject: Solution to task 2 --- challenge-116/jo-37/perl/ch-2.pl | 66 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100755 challenge-116/jo-37/perl/ch-2.pl diff --git a/challenge-116/jo-37/perl/ch-2.pl b/challenge-116/jo-37/perl/ch-2.pl new file mode 100755 index 0000000000..8e145a9dce --- /dev/null +++ b/challenge-116/jo-37/perl/ch-2.pl @@ -0,0 +1,66 @@ +#!/usr/bin/perl -s + +use v5.16; +use Test2::V0; +use Math::Prime::Util qw(vecsum is_square); + +our ($tests, $examples); + +run_tests() if $tests || $examples; # does not return + +die <= 10: + die "not valid\n" unless /^[1-9][0-9]+\z/; + + # The digits are subject to integer operations only, therefore there + # are no rounding issues. Takes a string, not an (internal) + # integer. + is_square vecsum map $_ * $_, split //; +} + + +### Examples and tests + +sub run_tests { + SKIP: { + skip "examples" unless $examples; + + ok sum_of_squares_is_square(34), 'example 1'; + ok sum_of_squares_is_square(50), 'example 2'; + ok !sum_of_squares_is_square(52), 'example 3'; + } + + SKIP: { + skip "tests" unless $tests; + ok sum_of_squares_is_square(10), 'smallest number for given limit'; + ok sum_of_squares_is_square(236), 'three nonzero digits'; + ok sum_of_squares_is_square('1' x 196), '1**2 * 196 == 14**2'; + ok sum_of_squares_is_square('9' x 81), '9**2 * 81 == 81**2'; + } + + done_testing; + exit; +} -- cgit