From c505ae57f3cb10f6c84dd9bd373dbe456d3031eb Mon Sep 17 00:00:00 2001 From: Peter Campbell Smith Date: Mon, 12 Aug 2024 12:51:12 +0100 Subject: Week 282 - Integggers and keys --- challenge-282/peter-campbell-smith/blog.txt | 1 + challenge-282/peter-campbell-smith/perl/ch-1.pl | 39 +++++++++++++++++++++++++ challenge-282/peter-campbell-smith/perl/ch-2.pl | 32 ++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 challenge-282/peter-campbell-smith/blog.txt create mode 100755 challenge-282/peter-campbell-smith/perl/ch-1.pl create mode 100755 challenge-282/peter-campbell-smith/perl/ch-2.pl diff --git a/challenge-282/peter-campbell-smith/blog.txt b/challenge-282/peter-campbell-smith/blog.txt new file mode 100644 index 0000000000..d05f459565 --- /dev/null +++ b/challenge-282/peter-campbell-smith/blog.txt @@ -0,0 +1 @@ +http://ccgi.campbellsmiths.force9.co.uk/challenge/281 diff --git a/challenge-282/peter-campbell-smith/perl/ch-1.pl b/challenge-282/peter-campbell-smith/perl/ch-1.pl new file mode 100755 index 0000000000..ddfe6d6b37 --- /dev/null +++ b/challenge-282/peter-campbell-smith/perl/ch-1.pl @@ -0,0 +1,39 @@ +#!/usr/bin/perl + +# Blog: http://ccgi.campbellsmiths.force9.co.uk/challenge + +use v5.26; # The Weekly Challenge - 2024-08-12 +use utf8; # Week 282 - task 1 - Good integer +use warnings; # Peter Campbell Smith +binmode STDOUT, ':utf8'; + +# good ones +good_integer('12333456'); +good_integer('333456'); +good_integer('456333'); +good_integer('129934956799998999'); + +# bad ones +good_integer('123333456'); +good_integer('3333456'); +good_integer('123333'); +good_integer('123345'); + +sub good_integer { + + my $int = $_[0]; + say qq[\nInput: \$int = $int]; + + # pad left and right with non-integer + $int = qq[¦$int¦]; + + # check for xyyyz pattern + while ($int =~ m|(.)(.)\2\2(.)|g) { + next unless ($1 ne $2 and $2 ne $3); + + # pattern found! + say qq[Output: $2$2$2]; + return; + } + say qq[Output: -1]; +} diff --git a/challenge-282/peter-campbell-smith/perl/ch-2.pl b/challenge-282/peter-campbell-smith/perl/ch-2.pl new file mode 100755 index 0000000000..e1878302da --- /dev/null +++ b/challenge-282/peter-campbell-smith/perl/ch-2.pl @@ -0,0 +1,32 @@ +#!/usr/bin/perl + +# Blog: http://ccgi.campbellsmiths.force9.co.uk/challenge + +use v5.26; # The Weekly Challenge - 2024-08-12 +use utf8; # Week 282 - task 2 - Changing keys +use warnings; # Peter Campbell Smith +binmode STDOUT, ':utf8'; + +changing_keys('aaabbbcCc'); +changing_keys('abbbbb'); +changing_keys('aaaaab'); +changing_keys('abcde'); +changing_keys('aAaAaAa'); +changing_keys('Committee'); + +sub changing_keys { + + my ($str, $c, $count); + + # initialise + $str = shift; + say qq[\nInput: \@str = '$str']; + + # count key changes + $str = lc($str); + $count = 0; + for $c (0 .. length($str) - 2) { + $count ++ if substr($str, $c, 1) ne substr($str, $c + 1, 1); + } + say qq[Output: $count]; +} -- cgit