From f86508d5c9cbe3fdb784856bc9a0c9df840c4ef5 Mon Sep 17 00:00:00 2001 From: Huu Nguyen Date: Fri, 11 Aug 2023 15:45:58 +0700 Subject: [PATCH] Add day 100 --- BFS/day100/part1.py | 45 +++++++++++++++++++++++++++++++++++++++++++ BFS/day100/part2.py | 25 ++++++++++++++++++++++++ BFS/day100/part3.py | 35 +++++++++++++++++++++++++++++++++ BFS/day100/sample.txt | 1 + 4 files changed, 106 insertions(+) create mode 100644 BFS/day100/part1.py create mode 100644 BFS/day100/part2.py create mode 100644 BFS/day100/part3.py create mode 100644 BFS/day100/sample.txt 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 pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

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:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy