From 59a313716661df0f7f023144d39c5f7108ca0050 Mon Sep 17 00:00:00 2001 From: boblied Date: Fri, 30 Oct 2020 17:14:58 -0500 Subject: Solution PWC 084 Task 1 Reverse Integer --- challenge-084/bob-lied/perl/ch-1.pl | 45 +++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 challenge-084/bob-lied/perl/ch-1.pl diff --git a/challenge-084/bob-lied/perl/ch-1.pl b/challenge-084/bob-lied/perl/ch-1.pl new file mode 100644 index 0000000000..2a53636592 --- /dev/null +++ b/challenge-084/bob-lied/perl/ch-1.pl @@ -0,0 +1,45 @@ +#!/usr/bin/env perl +# vim:set ts=4 sw=4 sts=4 et ai wm=0 nu: +#============================================================================= +# ch-1.pl +#============================================================================= +# Copyright (c) 2020, Bob Lied +#============================================================================= +# Perl Weekly Challenge 084 Task #1 > Reverse Integer +#============================================================================= +# You are given an integer $N. +# Write a script to reverse the given integer and print the result. +# Print 0 if the result doesn’t fit in 32-bit signed integer. +# The number 2,147,483,647 is the maximum positive value for a 32-bit signed binary integer in computing. + +use strict; +use warnings; +use v5.30; + +use experimental qw/ signatures /; + + +sub Usage { "Usage: $0 args" }; + +my $N = shift; + +die Usage() unless $N; + +my $sign = 1; +if ( $N < 0 ) +{ + $sign = -1; + $N = -$N; +} + +# Adding 0 forces numeric, drops leading zeroes. +my $revN = 0 + reverse($N); + +if ( ($revN > 0x7fffffff) ) +{ + say 0; +} +else +{ + say $sign * $revN; +} -- cgit From f982e2fa38562e5a3af7ac3469070a49284e438b Mon Sep 17 00:00:00 2001 From: Mark Anderson Date: Sun, 1 Nov 2020 22:41:57 -0700 Subject: Challenge 85 Solutions (Raku) --- challenge-085/mark-anderson/raku/ch-1.p6 | 21 +++++++++++++++++++++ challenge-085/mark-anderson/raku/ch-2.p6 | 31 +++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 challenge-085/mark-anderson/raku/ch-1.p6 create mode 100644 challenge-085/mark-anderson/raku/ch-2.p6 diff --git a/challenge-085/mark-anderson/raku/ch-1.p6 b/challenge-085/mark-anderson/raku/ch-1.p6 new file mode 100644 index 0000000000..3ab0ac888f --- /dev/null +++ b/challenge-085/mark-anderson/raku/ch-1.p6 @@ -0,0 +1,21 @@ +multi MAIN(*@R where .all ~~ Real) { + say triplet-sum(@R) +} + +multi MAIN { + use Test; + plan 3; + + ok triplet-sum([1.2, 0.4, 0.1, 2.5]) == 1, "Example 1"; + ok triplet-sum([0.2, 1.5, 0.9, 1.1]) == 0, "Example 2"; + ok triplet-sum([0.5, 1.1, 0.3, 0.7]) == 1, "Example 3"; +} + +sub triplet-sum(@R) { + @R.grep(0 < * < 2) + .combinations(3) + .map(*.sum) + .first(1 < * < 2) + .Bool + .UInt +} diff --git a/challenge-085/mark-anderson/raku/ch-2.p6 b/challenge-085/mark-anderson/raku/ch-2.p6 new file mode 100644 index 0000000000..a996c544f5 --- /dev/null +++ b/challenge-085/mark-anderson/raku/ch-2.p6 @@ -0,0 +1,31 @@ +multi MAIN(UInt $N where * > 0) { + say uint-log($N) +} + +multi MAIN { + use Test; + plan 9; + + my @pairs = 1 => 1, + 2 => 0, + 8 => 1, + 15 => 0, + 125 => 1, + 126 => 0, + 1024*8 => 1, + 1024*8+1 => 0, + 2**33 => 1; + + for @pairs -> $pair { + ok uint-log($pair.key) == $pair.value, ($pair).fmt("%10d --> %d") + } +} + +sub uint-log(UInt $N) { + return 1 if $N == 1; + + (2..$N.sqrt.floor).map({ $N.log: $_ }) + .first({ .narrow ~~ UInt }) + .Bool + .UInt; +} -- cgit From b8219fabfe59e7d169fb6942621c5d6a82eb0ee8 Mon Sep 17 00:00:00 2001 From: Mark Anderson Date: Sun, 1 Nov 2020 22:59:29 -0700 Subject: Challenge 85 Solutions (Raku) --- challenge-085/mark-anderson/raku/ch-2.p6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenge-085/mark-anderson/raku/ch-2.p6 b/challenge-085/mark-anderson/raku/ch-2.p6 index a996c544f5..e00f687a3f 100644 --- a/challenge-085/mark-anderson/raku/ch-2.p6 +++ b/challenge-085/mark-anderson/raku/ch-2.p6 @@ -17,7 +17,7 @@ multi MAIN { 2**33 => 1; for @pairs -> $pair { - ok uint-log($pair.key) == $pair.value, ($pair).fmt("%10d --> %d") + ok uint-log($pair.key) == $pair.value, $pair.fmt("%10d --> %d") } } -- cgit From b104d292b5090cca2b59e3acdb51136938e2658f Mon Sep 17 00:00:00 2001 From: chirvasitua Date: Mon, 2 Nov 2020 01:06:08 -0500 Subject: initial commit challenge 085 --- challenge-085/stuart-little/raku/ch-1.p6 | 10 ++++++++++ challenge-085/stuart-little/raku/ch-2.p6 | 10 ++++++++++ 2 files changed, 20 insertions(+) create mode 100755 challenge-085/stuart-little/raku/ch-1.p6 create mode 100755 challenge-085/stuart-little/raku/ch-2.p6 diff --git a/challenge-085/stuart-little/raku/ch-1.p6 b/challenge-085/stuart-little/raku/ch-1.p6 new file mode 100755 index 0000000000..0d65361d8e --- /dev/null +++ b/challenge-085/stuart-little/raku/ch-1.p6 @@ -0,0 +1,10 @@ +#!/usr/bin/env perl6 +use v6; + +sub tripl(@a) { + @a.combinations(3).grep(1 < *.sum < 2).[0]; +} + +say (my $res=tripl(@*ARGS.map(*.Real))) ?? ("1: $res") !! 0; + +# run as