diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2023-02-27 14:01:21 +0100 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2023-02-27 14:01:21 +0100 |
| commit | 978a6e83d295db79dfbbbb410bfb7024ee97c962 (patch) | |
| tree | 735991db6113784da17099a2f50bb4c07ab01744 | |
| parent | 09eef326c170759598ee2d5d35a5aad50be4a11c (diff) | |
| download | perlweeklychallenge-club-978a6e83d295db79dfbbbb410bfb7024ee97c962.tar.gz perlweeklychallenge-club-978a6e83d295db79dfbbbb410bfb7024ee97c962.tar.bz2 perlweeklychallenge-club-978a6e83d295db79dfbbbb410bfb7024ee97c962.zip | |
Task 1 done
| -rw-r--r-- | challenge-206/luca-ferrari/raku/ch-1.p6 | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/challenge-206/luca-ferrari/raku/ch-1.p6 b/challenge-206/luca-ferrari/raku/ch-1.p6 new file mode 100644 index 0000000000..e9e31dddec --- /dev/null +++ b/challenge-206/luca-ferrari/raku/ch-1.p6 @@ -0,0 +1,38 @@ +#!raku + +# +# Perl Weekly Challenge 206 +# Task 1 +# +# See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-206/> +# + +sub diff ( $start, $end ) { + my ( $start-hours, $start-mins ) = $start.chomp.split( ':' ); + my ( $end-hours, $end-mins ) = $end.chomp.split( ':' ); + + if ( $start-hours == 0 ) { + $start-hours = 23; + $start-mins += 60; + } + + if ( $end-hours == 0 ) { + $end-hours = 23; + $end-mins += 60; + } + + my $diff-hours = abs( $end-hours - $start-hours ); + my $diff-mins = abs( $end-mins - $start-mins ) % 60; + + return $diff-hours * 60 + $diff-mins; + +} + +sub MAIN( :$verbose = True, *@times where { @times.grep( * ~~ / ^ \d ** 2 ':' \d ** 2 $ / ).elems == @times.elems } ) { + + my %diffs; + %diffs{ diff( $_[ 1 ], $_[ 0 ] ) } = [ $_[0], $_[1] ] for @times.sort.combinations( 2 ); + + %diffs.keys.map( *.Int ).min.say; + %diffs{ %diffs.keys.map( *.Int ).min }.join( ' - ' ).say if ( $verbose ); +} |
