123 lines
3 KiB
Text
123 lines
3 KiB
Text
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "298d175e-fe20-4d97-8d3c-5b77b045a33a",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Part 1"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"id": "aed8a1d4-93f0-4bb8-9810-a20b1113ff1f",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def range_contains_range(range1, range2):\n",
|
|
" return range1.start in range2 and range1.stop in range2"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 29,
|
|
"id": "2385899f-2a65-467e-8abf-2d7fa90aba84",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"532"
|
|
]
|
|
},
|
|
"execution_count": 29,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"with open(\"aoc4_input.txt\", \"r\") as f:\n",
|
|
" fully_contains_count = 0\n",
|
|
" for assignment_pair in f:\n",
|
|
" match list(map(lambda x: list(map(int, x.split(\"-\"))), assignment_pair.strip().split(\",\"))):\n",
|
|
" case [[fa1, fa2], [sa1, sa2]]:\n",
|
|
" r1, r2 = range(fa1, fa2), range(sa1, sa2)\n",
|
|
" c = int(range_contains_range(r1, range(sa1, sa2+1)) or range_contains_range(r2, range(fa1, fa2+1)))\n",
|
|
" fully_contains_count += c\n",
|
|
"\n",
|
|
"fully_contains_count"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5886c69c-229a-45f6-b31e-556b55b1bbec",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Part 2"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 30,
|
|
"id": "c567162f-8ef0-47c1-ba17-84bf667b3496",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def range_overlap_range(range1, range2):\n",
|
|
" return range1.start in range2 or range1.stop in range2"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 31,
|
|
"id": "f3142767-65a1-4bf0-a64d-83ef53711e20",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"854"
|
|
]
|
|
},
|
|
"execution_count": 31,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"with open(\"aoc4_input.txt\", \"r\") as f:\n",
|
|
" overlapping_ranges_count = 0\n",
|
|
" for assignment_pair in f:\n",
|
|
" match list(map(lambda x: list(map(int, x.split(\"-\"))), assignment_pair.strip().split(\",\"))):\n",
|
|
" case [[fa1, fa2], [sa1, sa2]]:\n",
|
|
" r1, r2 = range(fa1, fa2), range(sa1, sa2)\n",
|
|
" c = int(range_overlap_range(r1, range(sa1, sa2+1)) or range_overlap_range(r2, range(fa1, fa2+1)))\n",
|
|
" overlapping_ranges_count += c\n",
|
|
"\n",
|
|
"overlapping_ranges_count"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.10.7"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|