aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-215/sgreen/README.md4
-rw-r--r--challenge-215/sgreen/blog.txt1
-rwxr-xr-xchallenge-215/sgreen/perl/ch-1.pl34
-rwxr-xr-xchallenge-215/sgreen/perl/ch-2.pl32
-rwxr-xr-xchallenge-215/sgreen/python/ch-1.py27
-rwxr-xr-xchallenge-215/sgreen/python/ch-2.py27
6 files changed, 123 insertions, 2 deletions
diff --git a/challenge-215/sgreen/README.md b/challenge-215/sgreen/README.md
index 78dadfd6ee..fe4eee3265 100644
--- a/challenge-215/sgreen/README.md
+++ b/challenge-215/sgreen/README.md
@@ -1,3 +1,3 @@
-# The Weekly Challenge 213
+# The Weekly Challenge 215
-Blog: [Sorting Routes](https://dev.to/simongreennet/sorting-routes-595b)
+Blog: [Weekly Challenge 215](https://dev.to/simongreennet/weekly-challenge-215-k0b)
diff --git a/challenge-215/sgreen/blog.txt b/challenge-215/sgreen/blog.txt
new file mode 100644
index 0000000000..f60644dc60
--- /dev/null
+++ b/challenge-215/sgreen/blog.txt
@@ -0,0 +1 @@
+https://dev.to/simongreennet/weekly-challenge-215-k0b \ No newline at end of file
diff --git a/challenge-215/sgreen/perl/ch-1.pl b/challenge-215/sgreen/perl/ch-1.pl
new file mode 100755
index 0000000000..83e082ace9
--- /dev/null
+++ b/challenge-215/sgreen/perl/ch-1.pl
@@ -0,0 +1,34 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use experimental 'signatures';
+
+use List::Util 'any';
+
+sub main (@words) {
+ my $current_word = shift @words;
+ my $unsorted_words = 0;
+
+ if ( any { $_ lt $current_word } @words ) {
+ # If the first word is not the smallest, the whole list is unsorted
+ say $#words + 2;
+ return;
+ }
+
+ foreach my $word (@words) {
+ if ( $word ge $current_word ) {
+ # The next word is in order
+ $current_word = $word;
+ }
+ else {
+ # The word is less than the current word
+ $unsorted_words++;
+ }
+ }
+
+ say $unsorted_words;
+}
+
+main(@ARGV); \ No newline at end of file
diff --git a/challenge-215/sgreen/perl/ch-2.pl b/challenge-215/sgreen/perl/ch-2.pl
new file mode 100755
index 0000000000..4edeb09b21
--- /dev/null
+++ b/challenge-215/sgreen/perl/ch-2.pl
@@ -0,0 +1,32 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use experimental 'signatures';
+
+sub main (@array) {
+ my $to_place = pop(@array);
+
+ foreach my $i ( 1 .. $#array - 1 ) {
+ # Are the number before the current one, the current one and the
+ # next one all zero?
+ if ( $array[ $i - 1 ] == 0
+ and $array[$i] == 0
+ and $array[ $i + 1 ] == 0 )
+ {
+ # If so, we can put a one here
+ $array[$i] = 1;
+ if ( --$to_place == 0 ) {
+ # We have placed all the ones
+ say 1;
+ return;
+ }
+ }
+ }
+
+ # There is no possible solution
+ say 0;
+}
+
+main(@ARGV); \ No newline at end of file
diff --git a/challenge-215/sgreen/python/ch-1.py b/challenge-215/sgreen/python/ch-1.py
new file mode 100755
index 0000000000..b10b6e1547
--- /dev/null
+++ b/challenge-215/sgreen/python/ch-1.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+
+import sys
+
+
+def main(words):
+ current_word = words.pop(0)
+ unsorted_words = 0
+
+ if any(word < current_word for word in words):
+ # If the first word is not the smallest, the whole list is unsorted
+ print(len(words)+1)
+ return
+
+ for word in words:
+ if word >= current_word:
+ # The next word is in order
+ current_word = word
+ else:
+ # The word is less than the current word
+ unsorted_words += 1
+
+ print(unsorted_words)
+
+
+if __name__ == '__main__':
+ main(sys.argv[1:])
diff --git a/challenge-215/sgreen/python/ch-2.py b/challenge-215/sgreen/python/ch-2.py
new file mode 100755
index 0000000000..9fc8a9a7e9
--- /dev/null
+++ b/challenge-215/sgreen/python/ch-2.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+
+import sys
+
+
+def main(array):
+ to_place = array.pop()
+
+ for i in range(1, len(array)-1):
+ # Are the number before the current one, the current one and the next one all zero?
+ if array[i-1] == 0 and array[i] == 0 and array[i+1] == 0:
+ # If so, we can put a one here
+ array[i] = 1
+ to_place -= 1
+ if to_place == 0:
+ # We have placed all the ones
+ print(1)
+ return
+
+ # There is no possible solution
+ print(0)
+
+
+if __name__ == '__main__':
+ # Turn the strings into integers
+ n = [int(i) for i in sys.argv[1:]]
+ main(n)