Roderic Day 4 роки тому
джерело
коміт
de9d619f1e
2 змінених файлів з 40 додано та 0 видалено
  1. +12
    -0
      y2016/p06.py
  2. +28
    -0
      y2016/p07.py

+ 12
- 0
y2016/p06.py Переглянути файл

@@ -0,0 +1,12 @@
import sys
from collections import Counter


grid = sys.stdin.read().splitlines()
transpose = list(zip(*grid))

ans1 = ''.join(Counter(line).most_common()[0][0] for line in transpose)
print(ans1)

ans2 = ''.join(Counter(line).most_common()[-1][0] for line in transpose)
print(ans2)

+ 28
- 0
y2016/p07.py Переглянути файл

@@ -0,0 +1,28 @@
import re
import sys


def is_tls(line):
rx = re.compile(r'(\w)(\w)\2\1')
parts = re.split(r'\[(.+?)\]', line)
good = [m for p in parts[::2] for m in rx.findall(p) if m[0] != m[1]]
bad = [m for p in parts[1::2] for m in rx.findall(p) if m[0] != m[1]]
return bool(good and not bad)


def is_ssl(line):
rx = re.compile(r'(?=(\w)(\w)\1)')
parts = re.split(r'\[(.+?)\]', line)
good = {m for p in parts[::2] for m in rx.findall(p) if m[0] != m[1]}
bad = {m[::-1] for p in parts[1::2] for m in rx.findall(p) if m[0] != m[1]}
return bool(good & bad)


ans1 = 0
ans2 = 0
text = sys.stdin.read()
for line in text.strip().splitlines():
ans1 += is_tls(line)
ans2 += is_ssl(line)
print(ans1)
print(ans2)

Завантаження…
Відмінити
Зберегти