diff options
Diffstat (limited to 'challenge-139')
| -rw-r--r-- | challenge-139/sgreen/README.md | 4 | ||||
| -rw-r--r-- | challenge-139/sgreen/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-139/sgreen/perl/ch-1.pl | 22 | ||||
| -rwxr-xr-x | challenge-139/sgreen/perl/ch-2.pl | 47 | ||||
| -rwxr-xr-x | challenge-139/sgreen/python/ch-1.py | 21 | ||||
| -rwxr-xr-x | challenge-139/sgreen/python/ch-2.py | 43 |
6 files changed, 136 insertions, 2 deletions
diff --git a/challenge-139/sgreen/README.md b/challenge-139/sgreen/README.md index 9d6781fb66..1fc7e36add 100644 --- a/challenge-139/sgreen/README.md +++ b/challenge-139/sgreen/README.md @@ -1,3 +1,3 @@ -# The Weekly Challenge 138 +# The Weekly Challenge 139 -Solution by Simon Green. [Blog](https://dev.to/simongreennet/weekly-challenge-138-dh1) +Solution by Simon Green. [Blog](https://dev.to/simongreennet/weekly-challenge-139-2ja1) diff --git a/challenge-139/sgreen/blog.txt b/challenge-139/sgreen/blog.txt new file mode 100644 index 0000000000..180c82b69f --- /dev/null +++ b/challenge-139/sgreen/blog.txt @@ -0,0 +1 @@ +https://dev.to/simongreennet/weekly-challenge-139-2ja1 diff --git a/challenge-139/sgreen/perl/ch-1.pl b/challenge-139/sgreen/perl/ch-1.pl new file mode 100755 index 0000000000..efa4956574 --- /dev/null +++ b/challenge-139/sgreen/perl/ch-1.pl @@ -0,0 +1,22 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; + +sub main { + my @inputs = @_; + my $sorted = 1; + + for my $i ( 1 .. $#inputs ) { + # If the value is less than the previous, the array is not sorted + if ( $inputs[$i] < $inputs[ $i - 1 ] ) { + $sorted = 0; + last; + } + } + + say $sorted; +} + +main(@ARGV); diff --git a/challenge-139/sgreen/perl/ch-2.pl b/challenge-139/sgreen/perl/ch-2.pl new file mode 100755 index 0000000000..d9e9d18e82 --- /dev/null +++ b/challenge-139/sgreen/perl/ch-2.pl @@ -0,0 +1,47 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; + +sub _is_prime { + my $number = shift; + my $sqrt = int( sqrt($number) ); + + for my $i ( 2 .. $sqrt ) { + return 0 if $number % $i == 0; + } + + return 1; +} + +sub _long_division { + my $number = shift; + my $digits = 0; + + my $r = 10 % $number; + my %seen = ( $r => 1 ); + + while ( ++$digits ) { + $r = ( 10 * $r ) % $number; + last if $seen{$r}++; + } + + return $digits; +} + +sub main { + my $count = shift // 5; + my $number = 2; + my @solutions = (); + + while ( ++$number ) { + push @solutions, $number if _is_prime($number) and _long_division($number) == $number - 1; + + last if scalar(@solutions) == $count; + } + + say join ', ', @solutions; +} + +main(@ARGV); diff --git a/challenge-139/sgreen/python/ch-1.py b/challenge-139/sgreen/python/ch-1.py new file mode 100755 index 0000000000..6f27eb1b31 --- /dev/null +++ b/challenge-139/sgreen/python/ch-1.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python + +import sys + + +def main(strings): + # Convert to numbers + nums = [float(x) for x in strings] + sorted = 1 + + for i in range(1, len(nums)): + # If the value is less than the previous, the array is not sorted + if nums[i] < nums[i - 1]: + sorted = 0 + break + + print(f"{sorted}") + + +if __name__ == '__main__': + main(sys.argv[1:]) diff --git a/challenge-139/sgreen/python/ch-2.py b/challenge-139/sgreen/python/ch-2.py new file mode 100755 index 0000000000..a4023acee6 --- /dev/null +++ b/challenge-139/sgreen/python/ch-2.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python + +import math + + +def is_prime(number): + for i in range(2, int(math.sqrt(number)) + 1): + if number % i == 0: + return False + + return True + + +def long_division(number): + digits = 0 + + r = 10 % number + seen = {r: 1} + + while 1: + digits += 1 + r = (10 * r) % number + if r in seen: + return digits + seen[r] = 1 + + +def main(): + number = 2 + solutions = [] + + while 1: + number += 1 + if is_prime(number) and long_division(number) == number - 1: + solutions.append(number) + if len(solutions) == 5: + break + + print(*solutions, sep=', ') + + +if __name__ == '__main__': + main() |
