aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-139/sgreen/README.md4
-rw-r--r--challenge-139/sgreen/blog.txt1
-rwxr-xr-xchallenge-139/sgreen/perl/ch-1.pl22
-rwxr-xr-xchallenge-139/sgreen/perl/ch-2.pl47
-rwxr-xr-xchallenge-139/sgreen/python/ch-1.py21
-rwxr-xr-xchallenge-139/sgreen/python/ch-2.py43
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()