aboutsummaryrefslogtreecommitdiff
path: root/challenge-077/lubos-kolouch/python
diff options
context:
space:
mode:
authorLubos Kolouch <lubos@kolouch.net>2020-09-12 22:34:02 +0200
committerLubos Kolouch <lubos@kolouch.net>2020-09-12 22:34:02 +0200
commit0c5e0b4b413f0d992c4ef842e02a7ff7535c3232 (patch)
treeee99342c571d5f42cca52c0cd21edd38fcc429a0 /challenge-077/lubos-kolouch/python
parentab7a0ad445316b978b4ad6832f0392877ab6100b (diff)
downloadperlweeklychallenge-club-0c5e0b4b413f0d992c4ef842e02a7ff7535c3232.tar.gz
perlweeklychallenge-club-0c5e0b4b413f0d992c4ef842e02a7ff7535c3232.tar.bz2
perlweeklychallenge-club-0c5e0b4b413f0d992c4ef842e02a7ff7535c3232.zip
Challenge 077 Task 2 Perl Python Lubos Kolouch
Diffstat (limited to 'challenge-077/lubos-kolouch/python')
-rw-r--r--challenge-077/lubos-kolouch/python/ch-1.py6
-rw-r--r--challenge-077/lubos-kolouch/python/ch-2.py55
2 files changed, 58 insertions, 3 deletions
diff --git a/challenge-077/lubos-kolouch/python/ch-1.py b/challenge-077/lubos-kolouch/python/ch-1.py
index d181c21487..9bb92ec317 100644
--- a/challenge-077/lubos-kolouch/python/ch-1.py
+++ b/challenge-077/lubos-kolouch/python/ch-1.py
@@ -1,7 +1,7 @@
#!/bin/env python
-""" Perl Weekly challenge 077 Task 1 """
-""" https://perlweeklychallenge.org/blog/perl-weekly-challenge-077/ """
-""" Solution Lubos Kolouch """
+""" Perl Weekly challenge 077 Task 1
+ https://perlweeklychallenge.org/blog/perl-weekly-challenge-077/
+ Solution Lubos Kolouch """
class FibSolver:
diff --git a/challenge-077/lubos-kolouch/python/ch-2.py b/challenge-077/lubos-kolouch/python/ch-2.py
new file mode 100644
index 0000000000..f77995658d
--- /dev/null
+++ b/challenge-077/lubos-kolouch/python/ch-2.py
@@ -0,0 +1,55 @@
+#!/bin/env python
+""" Perl Weekly challenge 077 Task 2
+ https://perlweeklychallenge.org/blog/perl-weekly-challenge-077/
+ Solution Lubos Kolouch """
+
+
+class LoneX:
+ """ Class for solving the challenge """
+
+ def __init__(self, matrix: list):
+ """ init the solution """
+ self.matrix = matrix
+ self.solution_count = 0
+
+ def count_lone(self):
+ """ count the occurences of lone X """
+
+ for line_nr, line in enumerate(self.matrix):
+ for col_nr, char in enumerate(line):
+ if char == "O":
+ continue
+
+ is_lone = True
+ for d_x in [-1, 0, 1]:
+ for d_y in [-1, 0, 1]:
+ if d_x == d_y == 0:
+ continue
+
+ if line_nr + d_x < 0 or line_nr + d_x >= len(self.matrix):
+ continue
+
+ if col_nr + d_y < 0 or col_nr + d_y >= len(self.matrix):
+ continue
+
+ if self.matrix[line_nr + d_x][col_nr + d_y] == 'X':
+ is_lone = False
+ break
+
+ if is_lone:
+ self.solution_count += 1
+
+ def get_count(self):
+ """ just return the solutions count """
+
+ return self.solution_count
+
+
+lonex = LoneX([['O', 'O', 'X'], ['X', 'O', 'O'], ['X', 'O', 'O']])
+lonex.count_lone()
+assert lonex.get_count() == 1
+
+lonex2 = LoneX([['O', 'O', 'X', 'O'], ['X', 'O', 'O', 'O'],
+ ['X', 'O', 'O', 'X'], ['O', 'X', 'O', 'O']])
+lonex2.count_lone()
+assert lonex2.get_count() == 2