diff options
| -rw-r--r-- | challenge-215/sgreen/README.md | 4 | ||||
| -rw-r--r-- | challenge-215/sgreen/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-215/sgreen/perl/ch-1.pl | 34 | ||||
| -rwxr-xr-x | challenge-215/sgreen/perl/ch-2.pl | 32 | ||||
| -rwxr-xr-x | challenge-215/sgreen/python/ch-1.py | 27 | ||||
| -rwxr-xr-x | challenge-215/sgreen/python/ch-2.py | 27 |
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) |
