diff --git a/BFS/day100/part1.py b/BFS/day100/part1.py new file mode 100644 index 0000000..2c51d8b --- /dev/null +++ b/BFS/day100/part1.py @@ -0,0 +1,45 @@ +from collections import deque + +def print_board(s,n): + for i in s: + l = "" + for j in range(i-1): + l += "." + l += "♛" + for j in range(n-i): + l += "." + print(l) + +def safe(s): + l = len(s) + for i in range(l-1): + qi = s[i] + for j in range(1,l-i): + qj = s[i+j] + if (qj == qi) or (qj == qi + j) or (qj == qi - j): + return False + return True + +def search(s, n): + rs = [] + for i in range(1,n+1): + if safe(s + tuple([i])): + rs.append(s + tuple([i])) + return rs + +def solution(input): + n = int(input) + count = 0 + start = () + queue = deque([start]) + last = "" + while len(queue) != 0: + current = queue.popleft() + for d in search(current, n): + if len(d) == n: + count += 1 + last = d + else: + queue.append(d) + print_board(last, n) + return count diff --git a/BFS/day100/part2.py b/BFS/day100/part2.py new file mode 100644 index 0000000..c39e135 --- /dev/null +++ b/BFS/day100/part2.py @@ -0,0 +1,25 @@ +def safe(s): + l = len(s) + for i in range(l-1): + qi = s[i] + for j in range(1,l-i): + qj = s[i+j] + if (qj == qi) or (qj == qi + j) or (qj == qi - j): + return False + return True + +def search(s, n): + rs = 0 + for i in range(1,n+1): + next = (s + tuple([i])) + if safe(next): + if len(next) == n: + rs += 1 + else: + rs += search(next, n) + return rs + +def solution(input): + n = int(input) + count = search(tuple(), n) + return count diff --git a/BFS/day100/part3.py b/BFS/day100/part3.py new file mode 100644 index 0000000..112b7a6 --- /dev/null +++ b/BFS/day100/part3.py @@ -0,0 +1,35 @@ +def safe(s): + l = len(s) + for i in range(l-1): + qi = s[i] + for j in range(1,l-i): + qj = s[i+j] + if (qj == qi) or (qj == qi + j) or (qj == qi - j): + return False + return True + +def rollback(board): + board.pop(-1) + if len(board) == 0: return + board[-1] += 1 + +def solution(input): + n = int(input) + c = 0 + board = [1] + i = 0 + while len(board) != 0: + if board[-1] > n: + rollback(board) + elif safe(board): + if len(board) == n: + rollback(board) + c += 1 + else: + board += [1] + else: + if board[-1] >= n: + rollback(board) + else: + board[-1] += 1 + return c \ No newline at end of file diff --git a/BFS/day100/sample.txt b/BFS/day100/sample.txt new file mode 100644 index 0000000..301160a --- /dev/null +++ b/BFS/day100/sample.txt @@ -0,0 +1 @@ +8 \ No newline at end of file
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: