🧠
MindDB
  • MindDB
  • About Me
  • Bhaumik Mistry
  • Projects
  • Arsenal
    • Games 2019 2020
  • Count-It
    • 2020 Books
    • 2020 Games
    • 2020 Movies
    • 2020 TV Series
    • 2021 All Information
  • Drawingbook
    • Instagram Drawing Book
    • Pixel art book
    • A to P sketches
      • A
      • B
      • C
      • D
      • E
      • F
      • G
      • H
      • I
      • J
      • K
      • L
      • M
      • N
      • P
  • General Knowledge
    • Travel
    • Memory
    • Anger and Hunger
  • Mac
    • OS X version from command line
    • System setup
  • Physics
    • Aerodynamics
    • James Glashier
  • Space
    • Kepler space telescope
    • K2-18b
    • Parsec
  • Software
    • Advent of Code
    • Android
      • Icons
      • Snippets
    • C++
      • Code
        • If-else Vs Ternary
        • Best Fitting Plane
        • To Do
    • Chrome Extension
    • Git
    • iphone
    • PaaS
      • Heroku
      • Docker
    • People
      • Paul Graham
      • Ben Kuhn
    • Python
      • Pytest
      • UUID
  • Sports
    • Football(soccer)
      • EPL
    • Basketball
  • Stocks
    • TARP
Powered by GitBook
On this page

Was this helpful?

  1. Software

Advent of Code

Advent of Code at https://adventofcode.com/

def open_file(file_path):
    with open(file_path, 'r') as f:
        entries = [entry.split('\n')[0] for entry in f.readlines()]
        return entries


def program_2(data):
    number = int(program_1(25, data))
    start = 0
    sum = 0
    index = 0
    l = 0
    result = []
    while True:
        if sum < number:
            sum += int(data[index])
            index += 1
            l += 1
            print(number, start, l, sum)
        if sum > number:
            sum -= int(data[start])
            start += 1
            l -= 1
            print(number, start, l, sum)
        if sum == number:
            for x in range(start, start+l):
                result.append(int(data[x]))
            return sorted(result)[0] + sorted(result)[-1]


def program_1(index,data):
    start = 0
    end = index
    check = index

    while True:

        if check >= len(data):
            print("error")

        list = []
        for x in range(start, end):
            for y in range(start, end):
                list.append(int(data[x])+int(data[y]))

        # print(start, end, check, data[check])
        if int(data[check]) in list:
            start += 1
            end += 1
            check += 1
        else:
            return data[check]


data = open_file("input.txt")
print(program_2(data))
def open_file(file_path):
    with open(file_path, 'r') as f:
        entries = [entry.split('\n')[0] for entry in f.readlines()]
        return entries


def program_2(data):
    visited_list = program_1(data)
    if len(visited_list) is 1:
        return visited_list[0]
    index = 0
    old_data = copy.deepcopy(data)
    while True:
        if index >= len(data) or index < 0:
            return -1
        print(index)
        c, n = data[index]
        if c == "nop":
            print("change ", data[index], ("jmp", n))
            data = copy.deepcopy(old_data)
            data[index] = ("jmp", n)
        elif c == "jmp":
            data = copy.deepcopy(old_data)
            print("change ", data[index], ("nop", n))
            data[index] = ("nop", n)
        else:
            index += 1
            continue
        return_value = program_1(data)
        if len(return_value) is 1:
            print(len(return_value))
            return return_value
        index += 1


def program_1(data):
    index = 0
    acc = 0
    visited = []
    while True:
        if index in visited:
            return visited
        if index < 0 or index >= len(data):
            print("Acc found at ", acc)
            return [acc]
        c, n = data[index]
        if c == "nop":
            visited.append(index)
            index += 1
            continue
        elif c == "acc":
            visited.append(index)
            acc += int(n)
            index += 1
            continue
        elif c == "jmp":
            visited.append(index)
            index += int(n)
            continue
        index += 1


data = open_file("input.txt")
data = [((d.split(" ")[0]),(d.split(" ")[1])) for d in data]
print(program_2(data))
def open_file(file_path):
    with open(file_path, 'r') as f:
        entries = [entry.split('\n')[0] for entry in f.readlines()]
        return entries


def program_2(data):
    bags_check = ["shiny gold"]
    count_bag = {}
    count_bag_list = list()
    count = 0
    total = {}
    for bag in bags_check:
        for d in data:
            if bag in d.split("contain ")[0]:
                other_half = d.split("contain ")[1]
                total[bag] = 0
                count_bag[bag] = []
                for pair in other_half.split(", "):
                    bag_name = pair.split(" ", 1)[1]
                    num = int(pair.split(" ", 1)[0]) if (pair.split(" ", 1)[0]).isdigit() else (0 if "no" in pair.split(" ", 1)[0] else 1)
                    count += num
                    total[bag] += num
                    bag_to_add = bag_name.split(" bag")[0]
                    count_bag[bag] += [bag_to_add] * num
                    count_bag_list += [bag_to_add] * num
                    print(bag, d, count, bag_to_add)
                    bags_check.append(bag_to_add)
                    num = 0
    print(bags_check)
    print(total)
    print(count_bag)
    print(count_bag_list)

    def get_bag(bag):
        add = len(count_bag.get(bag, []))
        for b in count_bag.get(bag, []):
            add += get_bag(b)
        return add

    add = get_bag("shiny gold")
    print(add)


def program_1(data):
    bags_check = ["shiny gold"]
    for bag in bags_check:
        for d in data:
            if bag in d.split("contain")[0]:
                bag_to_add = d.split(" bag")[0]
                bags_check.append(bag_to_add)
                print(bag, d, bag_to_add)
    print(len(set(bags_check))-1)


data = open_file("input.txt")
program_2(data)
def open_file(file_path):
    with open(file_path, 'r') as f:
        entries = [entry.split('\n')[0] for entry in f.readlines()]
        return entries


def program_2(string, people):
    correct = 0
    for char in set(string):
        if string.count(char) == people:
            correct += 1
    return correct


def program_1(data):
    string = ""
    people = 0
    result_1 = 0
    result_2 = 0
    for d in data:
        if d is "":
            result_1 += len(set(string))
            temp_2 = program_2(string, people)
            result_2 += temp_2
            people = 0
            string = ""
            continue
        string += d
        people += 1
    result_1 += len(set(string))
    temp_2 = program_2(string, people)
    result_2 += temp_2
    print(result_1)
    print(result_2)

data = open_file("input.txt")
program_1(data)
import math


def open_file(file_path):
    with open(file_path, 'r') as f:
        entries = [entry.split('\n')[0] for entry in f.readlines()]
        return entries


def validate(letter, lower, upper):
    if letter in ['F', 'L']:
        return lower, lower+int(math.ceil((upper-lower)/2))
    else:
        return lower+int(math.floor(1+(upper - lower)/2)), upper


def program_1(data):
    lower = 0
    upper = 127
    for letter in data[:7]:
        lower, upper = validate(letter, lower, upper)
    row = lower
    lower = 0
    upper = 7
    for letter in data[7:]:
        lower, upper = validate(letter, lower, upper)
    column = lower
    return row * 8 + column

data = open_file("input.txt")
seat_id = 0
seat_list = []
for string in data:
    id = program_1(string)
    seat_list.append(id)
    if id > seat_id:
        seat_id = id
print("result_1", seat_id)
seat_list.sort()
x = seat_list[0]
for y in seat_list[1:-1]:
    if x+1 == y:
        x = y
    else:
        print("result", x+1)
        break
def open_file(file_path):
    with open(file_path, 'r') as f:
        entries = [entry.split('\n')[0] for entry in f.readlines()]
        return entries


def validate_field(field, data):
    if field == "byr:":
        if len(data) is 4 and data.isdigit():
            if 1920 <= int(data) <= 2002:
                return True
        return False

    if field == "iyr:":
        if len(data) is 4 and data.isdigit():
            if 2010 <= int(data) <= 2020:
                return True
        return False

    if field == "eyr:":
        if len(data) is 4 and data.isdigit():
            if 2020 <= int(data) <= 2030:
                return True
        return False

    if field == "hgt:":
        if data.endswith("in"):
            if 59 <= int(data[:-2]) <= 76:
                return True
        if data.endswith("cm"):
            if 150 <= int(data[:-2]) <= 193:
                return True
        return False

    if field == "hcl:":
        if data.startswith('#'):
            for s in data[1:]:
                if s is range(0, 10) or s in [c for c in "abcdef"]:
                    continue
                else:
                    break
            return True
        return False

    if field == "ecl:":
        if data in ["amb", "blu", "brn", "gry", "grn", "hzl", "oth"]:
            return True
        return False

    if field == "pid:":
        if len(data) is 9 and data.isdigit():
            return True
    return False


def validate(line):
    rule = [ "byr:", "iyr:", "eyr:", "hgt:", "hcl:", "ecl:", "pid:"]
    line_list = line.split(" ")
    for r in rule:
        if r not in line:
            return False
        matching = [s for s in line_list if r in s]
        data = matching[0][4:]
        if validate_field(r, data):
            continue
        else:
            return False
    return True


def program_1(data,):
    merge_list = []
    string = ""
    valid = 0
    for line in data:
        if not line:
            merge_list.append(string)
            if validate(string):
                valid += 1
            string = ""
        else:
            string += line + " "
    merge_list.append(string)
    if validate(string):
        valid += 1
    print(valid)

data = open_file("input.txt")
program_1(data)
def open_file(file_path):
    with open(file_path, 'r') as f:
        entries = [list(entry.split('\n')[0]) for entry in f.readlines()]
        return entries


def program_1(data, move_right, move_down):
    length = len(data)
    width = len(data[0])
    tree_count = 0
    w = 0
    l = 0
    while l < length:
        w += move_right
        l += move_down
        w = w - width if w >= width else w
        if l >= length:
            break
        if data[l][w] == "#":
            tree_count += 1
    return tree_count


data = open_file("input.txt")
result = 1
for x, y in [(1, 1), (3, 1), (5, 1), (7, 1), (1, 2)]:
    result *= program_1(data, x, y)
print(result)
def open_file(file_path):
    with open(file_path, 'r') as f:
        entries = [entry for entry in f.readlines()]
        return entries


class policy:
    def __init__(self, entry):
        self.entry = entry
        self.min_range = int()
        self.max_range = int()
        self.rule = str()
        self.data = str()
        self.parse()

    def parse(self):
        list_data = self.entry.split()
        range = list_data[0].split("-")
        self.min_range = int(range[0])
        self.max_range = int(range[1])
        self.rule = list_data[1].split(":")[0]
        self.data = list_data[2]


def program_1(data):
    valid_password = 0
    for password in data:
        info = policy(password)
        valid_password = valid_password + (1 if info.min_range <= info.data.count(info.rule) <= info.max_range else 0)
    return valid_password


def program_2(data):
    valid_password = 0
    for password in data:
        info = policy(password)
        if list(info.data)[info.min_range-1] == info.rule and not list(info.data)[info.max_range-1] == info.rule:
            valid_password += 1
        elif not list(info.data)[info.min_range-1] == info.rule and list(info.data)[info.max_range-1] == info.rule:
            valid_password += 1
    return valid_password


data = open_file("input.txt")
print(program_1(data))
print(program_2(data))
def open_file(file_path):
    with open(file_path, 'r') as f:
        entries = [int(entry) for entry in f.readlines()]
        return entries

def program_1(data):
    for num_a in data:
        for num_b in data:
            d_diff = 2020 - num_a
            if d_diff == num_b:
                return num_a * num_b


def program_2(data):
    for num_a in data:
        for num_b in data:
            for num_c in data:
                if num_a + num_b + num_c == 2020:
                    return num_a * num_b * num_c

print(program_1(data))
print(program_2(data))
PreviousSoftwareNextAndroid

Last updated 4 years ago

Was this helpful?