From c9be15672ccf24da270d6c2db7031d8cd5ef98a1 Mon Sep 17 00:00:00 2001 From: allem Date: Mon, 29 Jan 2018 16:14:37 -0500 Subject: [PATCH] Initial commit --- .gitignore | 108 ++++++++++++++++++ haiku_sol.py | 40 +++++++ icpc_test.py | 31 +++++ longlong.py | 54 +++++++++ longlong_sol.py | 61 ++++++++++ palindrome_sol.py | 82 +++++++++++++ printouts/icpc_test.pdf | Bin 0 -> 128245 bytes printouts/solutions.pdf | Bin 0 -> 490626 bytes printouts/stararrangements_golf.pdf | Bin 0 -> 30256 bytes purple_rain_sol.py | 27 +++++ rainbowroads_sol.py | 74 ++++++++++++ secbadge.py | 57 +++++++++ star_arrangements_golf.py | 1 + star_arrangements_sol.py | 7 ++ test/airport/avoidingairports-0000.ans | 1 + test/airport/avoidingairports-0000.in | 9 ++ test/airport/avoidingairports-0001.ans | 1 + test/airport/avoidingairports-0001.in | 6 + test/haiku/a-blueridge.ans | 3 + test/haiku/a-blueridge.in | 1 + test/haiku/b-two-few-syllables.ans | 1 + test/haiku/b-two-few-syllables.in | 1 + test/haiku/d-intlContest.ans | 3 + test/haiku/d-intlContest.in | 1 + test/haiku/e-stressing.ans | 1 + test/haiku/e-stressing.in | 1 + test/purplerain/purplerain-0000.ans | 1 + test/purplerain/purplerain-0000.in | 1 + test/purplerain/purplerain-0001.ans | 1 + test/purplerain/purplerain-0001.in | 1 + test/rainbowroad/rainbowroads-0000.ans | 5 + test/rainbowroad/rainbowroads-0000.in | 8 ++ test/rainbowroad/rainbowroads-0001.ans | 1 + test/rainbowroad/rainbowroads-0001.in | 8 ++ test/rainbowroad/rainbowroads-0002.ans | 6 + test/rainbowroad/rainbowroads-0002.in | 9 ++ test/rainbowroad/rainbowroads-0003.ans | 5 + test/rainbowroad/rainbowroads-0003.in | 10 ++ test/security/securitybadge-0000.ans | 1 + test/security/securitybadge-0000.in | 7 ++ test/security/securitybadge-0001.ans | 1 + test/security/securitybadge-0001.in | 7 ++ test/spinningup/spinningup-0000.ans | 1 + test/spinningup/spinningup-0000.in | 1 + test/spinningup/spinningup-0001.ans | 1 + test/spinningup/spinningup-0001.in | 1 + test/spinningup/spinningup-0002.ans | 1 + test/spinningup/spinningup-0002.in | 1 + test/spinningup/spinningup-0003.ans | 1 + test/spinningup/spinningup-0003.in | 1 + test/spinningup/spinningup-0004.ans | 1 + test/spinningup/spinningup-0004.in | 1 + test/spinningup/spinningup-0005.ans | 1 + test/spinningup/spinningup-0005.in | 1 + .../stararrangements-0000.ans | 2 + .../stararrangements/stararrangements-0000.in | 1 + .../stararrangements-0001.ans | 11 ++ .../stararrangements/stararrangements-0001.in | 1 + .../stararrangements-0002.ans | 6 + .../stararrangements/stararrangements-0002.in | 1 + test/strings/custom_1.ans | 1 + test/strings/custom_1.in | 12 ++ test/strings/longlongstrings-0000.ans | 1 + test/strings/longlongstrings-0000.in | 6 + test/strings/longlongstrings-0001.ans | 1 + test/strings/longlongstrings-0001.in | 6 + test/strings/longlongstrings-0002.ans | 1 + test/strings/longlongstrings-0002.in | 4 + test/strings/longlongstrings-0003.ans | 1 + test/strings/longlongstrings-0003.in | 6 + test/strings/longlongstrings-0004.ans | 1 + test/strings/longlongstrings-0004.in | 6 + 72 files changed, 723 insertions(+) create mode 100644 .gitignore create mode 100644 haiku_sol.py create mode 100644 icpc_test.py create mode 100644 longlong.py create mode 100644 longlong_sol.py create mode 100644 palindrome_sol.py create mode 100644 printouts/icpc_test.pdf create mode 100644 printouts/solutions.pdf create mode 100644 printouts/stararrangements_golf.pdf create mode 100644 purple_rain_sol.py create mode 100644 rainbowroads_sol.py create mode 100644 secbadge.py create mode 100644 star_arrangements_golf.py create mode 100644 star_arrangements_sol.py create mode 100644 test/airport/avoidingairports-0000.ans create mode 100644 test/airport/avoidingairports-0000.in create mode 100644 test/airport/avoidingairports-0001.ans create mode 100644 test/airport/avoidingairports-0001.in create mode 100644 test/haiku/a-blueridge.ans create mode 100644 test/haiku/a-blueridge.in create mode 100644 test/haiku/b-two-few-syllables.ans create mode 100644 test/haiku/b-two-few-syllables.in create mode 100644 test/haiku/d-intlContest.ans create mode 100644 test/haiku/d-intlContest.in create mode 100644 test/haiku/e-stressing.ans create mode 100644 test/haiku/e-stressing.in create mode 100644 test/purplerain/purplerain-0000.ans create mode 100644 test/purplerain/purplerain-0000.in create mode 100644 test/purplerain/purplerain-0001.ans create mode 100644 test/purplerain/purplerain-0001.in create mode 100644 test/rainbowroad/rainbowroads-0000.ans create mode 100644 test/rainbowroad/rainbowroads-0000.in create mode 100644 test/rainbowroad/rainbowroads-0001.ans create mode 100644 test/rainbowroad/rainbowroads-0001.in create mode 100644 test/rainbowroad/rainbowroads-0002.ans create mode 100644 test/rainbowroad/rainbowroads-0002.in create mode 100644 test/rainbowroad/rainbowroads-0003.ans create mode 100644 test/rainbowroad/rainbowroads-0003.in create mode 100644 test/security/securitybadge-0000.ans create mode 100644 test/security/securitybadge-0000.in create mode 100644 test/security/securitybadge-0001.ans create mode 100644 test/security/securitybadge-0001.in create mode 100644 test/spinningup/spinningup-0000.ans create mode 100644 test/spinningup/spinningup-0000.in create mode 100644 test/spinningup/spinningup-0001.ans create mode 100644 test/spinningup/spinningup-0001.in create mode 100644 test/spinningup/spinningup-0002.ans create mode 100644 test/spinningup/spinningup-0002.in create mode 100644 test/spinningup/spinningup-0003.ans create mode 100644 test/spinningup/spinningup-0003.in create mode 100644 test/spinningup/spinningup-0004.ans create mode 100644 test/spinningup/spinningup-0004.in create mode 100644 test/spinningup/spinningup-0005.ans create mode 100644 test/spinningup/spinningup-0005.in create mode 100644 test/stararrangements/stararrangements-0000.ans create mode 100644 test/stararrangements/stararrangements-0000.in create mode 100644 test/stararrangements/stararrangements-0001.ans create mode 100644 test/stararrangements/stararrangements-0001.in create mode 100644 test/stararrangements/stararrangements-0002.ans create mode 100644 test/stararrangements/stararrangements-0002.in create mode 100644 test/strings/custom_1.ans create mode 100644 test/strings/custom_1.in create mode 100644 test/strings/longlongstrings-0000.ans create mode 100644 test/strings/longlongstrings-0000.in create mode 100644 test/strings/longlongstrings-0001.ans create mode 100644 test/strings/longlongstrings-0001.in create mode 100644 test/strings/longlongstrings-0002.ans create mode 100644 test/strings/longlongstrings-0002.in create mode 100644 test/strings/longlongstrings-0003.ans create mode 100644 test/strings/longlongstrings-0003.in create mode 100644 test/strings/longlongstrings-0004.ans create mode 100644 test/strings/longlongstrings-0004.in diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..32f1c9d --- /dev/null +++ b/.gitignore @@ -0,0 +1,108 @@ +# Created by .ignore support plugin (hsz.mobi) +### Python template +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +.static_storage/ +.media/ +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ + +.idea/ \ No newline at end of file diff --git a/haiku_sol.py b/haiku_sol.py new file mode 100644 index 0000000..4ab8046 --- /dev/null +++ b/haiku_sol.py @@ -0,0 +1,40 @@ +import re + +line = input().strip() + +sylcounts = [5, 7, 5] + +words = re.findall('[a-zA-Z]+', line) +originals = line.split() +final = '' + +for word, original in zip(words, originals): + word = word.lower().replace('qu', 'q') + word = re.sub('y[aoeui]', 'b', word) + + if re.match('.*e$', word) and not re.match('.*[^aoeuiy]le$', word): + word = word[:-1] + + if re.match('.*es$', word) and not re.match('.*[^aoeuiy][^aoeuiy]es', word): + word = word[:-2] + + word = re.sub('[aoeuiy]+', 'A', word) + + syllables = word.count('A') or 1 + + sylcounts[0] -= syllables + final += original + ' ' + + if sylcounts[0] == 0: + del sylcounts[0] + final = final[:-1] + '\n' + continue + if sylcounts[0] < 0: + final = line + sylcounts = [] + break + +if sylcounts: + final = line + +print(final.strip()) diff --git a/icpc_test.py b/icpc_test.py new file mode 100644 index 0000000..33ba62f --- /dev/null +++ b/icpc_test.py @@ -0,0 +1,31 @@ +import glob, sys, subprocess + +_, src, test, t = sys.argv + +ig = glob.glob(f'test/{test}/*.in') +og = glob.glob(f'test/{test}/*.ans') + +print(test, len(ig), 'tests') + +for ifn, ofn in zip(ig, og): + with open(ifn) as fi, open(ofn) as fx: + try: + o = subprocess.check_output(['python', src], + stdin=fi, stderr=subprocess.STDOUT, + timeout=float(t)) + except subprocess.CalledProcessError as e: + o = e.output + except subprocess.TimeoutExpired: + o = b'TIMED OUT' + + o = o.decode('utf-8').strip().replace('\r\n', '\n') + x = fx.read().strip().replace('\r\n', '\n') + + if o != x: + print(ifn, 'expected:', x, 'got:', o, '=' * 50, sep='\n') + +# run this with arguments: +#