1229 lines
26 KiB
Plaintext
1229 lines
26 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import networkx as nx\n",
|
|
"\n",
|
|
"with open('5/input', 'r') as f:\n",
|
|
" data=f.readlines()\n",
|
|
"\n",
|
|
"read_rules = True\n",
|
|
"sequences =[]\n",
|
|
"#was expecting fancier things\n",
|
|
"rules = nx.DiGraph()\n",
|
|
"\n",
|
|
"for ln,line in enumerate([line.strip() for line in data]):\n",
|
|
" if read_rules:\n",
|
|
" if len(line) == 0:\n",
|
|
" read_rules = False\n",
|
|
" continue\n",
|
|
" left,right = line.split('|')\n",
|
|
" rules.add_edge(left,right)\n",
|
|
" else:\n",
|
|
" sequences.append(line.split(','))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def test_sequence(sequence):\n",
|
|
" for lidx,left in enumerate(sequence):\n",
|
|
" if rules.has_node(left):\n",
|
|
" for right in sequence[lidx:]:\n",
|
|
" if rules.has_node(right):\n",
|
|
" if rules.has_edge(right,left):\n",
|
|
" return False\n",
|
|
" return True"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"5087"
|
|
]
|
|
},
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"sum([int(sequence[len(sequence)//2]) for sequence in sequences if test_sequence(sequence)])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[['91', '76', '94', '81', '45', '78', '21'],\n",
|
|
" ['34',\n",
|
|
" '76',\n",
|
|
" '63',\n",
|
|
" '42',\n",
|
|
" '31',\n",
|
|
" '41',\n",
|
|
" '83',\n",
|
|
" '56',\n",
|
|
" '15',\n",
|
|
" '53',\n",
|
|
" '23',\n",
|
|
" '28',\n",
|
|
" '79',\n",
|
|
" '71',\n",
|
|
" '94',\n",
|
|
" '77',\n",
|
|
" '91',\n",
|
|
" '49',\n",
|
|
" '74'],\n",
|
|
" ['57',\n",
|
|
" '25',\n",
|
|
" '69',\n",
|
|
" '86',\n",
|
|
" '61',\n",
|
|
" '37',\n",
|
|
" '29',\n",
|
|
" '74',\n",
|
|
" '94',\n",
|
|
" '45',\n",
|
|
" '53',\n",
|
|
" '84',\n",
|
|
" '83',\n",
|
|
" '21',\n",
|
|
" '91',\n",
|
|
" '34',\n",
|
|
" '76',\n",
|
|
" '16',\n",
|
|
" '66',\n",
|
|
" '85',\n",
|
|
" '82'],\n",
|
|
" ['91',\n",
|
|
" '57',\n",
|
|
" '98',\n",
|
|
" '86',\n",
|
|
" '21',\n",
|
|
" '85',\n",
|
|
" '78',\n",
|
|
" '54',\n",
|
|
" '34',\n",
|
|
" '82',\n",
|
|
" '76',\n",
|
|
" '29',\n",
|
|
" '45',\n",
|
|
" '84',\n",
|
|
" '99',\n",
|
|
" '46',\n",
|
|
" '61',\n",
|
|
" '16',\n",
|
|
" '66',\n",
|
|
" '25',\n",
|
|
" '89'],\n",
|
|
" ['79',\n",
|
|
" '99',\n",
|
|
" '58',\n",
|
|
" '49',\n",
|
|
" '22',\n",
|
|
" '78',\n",
|
|
" '89',\n",
|
|
" '35',\n",
|
|
" '63',\n",
|
|
" '19',\n",
|
|
" '12',\n",
|
|
" '28',\n",
|
|
" '11',\n",
|
|
" '71',\n",
|
|
" '65',\n",
|
|
" '53',\n",
|
|
" '17'],\n",
|
|
" ['12', '23', '61', '74', '91', '34', '53'],\n",
|
|
" ['76',\n",
|
|
" '53',\n",
|
|
" '17',\n",
|
|
" '49',\n",
|
|
" '79',\n",
|
|
" '63',\n",
|
|
" '56',\n",
|
|
" '15',\n",
|
|
" '28',\n",
|
|
" '91',\n",
|
|
" '58',\n",
|
|
" '34',\n",
|
|
" '22',\n",
|
|
" '74',\n",
|
|
" '77'],\n",
|
|
" ['41',\n",
|
|
" '91',\n",
|
|
" '15',\n",
|
|
" '31',\n",
|
|
" '79',\n",
|
|
" '29',\n",
|
|
" '83',\n",
|
|
" '58',\n",
|
|
" '94',\n",
|
|
" '17',\n",
|
|
" '56',\n",
|
|
" '76',\n",
|
|
" '63'],\n",
|
|
" ['41',\n",
|
|
" '63',\n",
|
|
" '54',\n",
|
|
" '65',\n",
|
|
" '84',\n",
|
|
" '66',\n",
|
|
" '99',\n",
|
|
" '78',\n",
|
|
" '28',\n",
|
|
" '85',\n",
|
|
" '89',\n",
|
|
" '46',\n",
|
|
" '35',\n",
|
|
" '45',\n",
|
|
" '79',\n",
|
|
" '82',\n",
|
|
" '77'],\n",
|
|
" ['23', '35', '58', '98', '49', '12', '11'],\n",
|
|
" ['84', '56', '41', '46', '28', '98', '79'],\n",
|
|
" ['84', '76', '23', '53', '25'],\n",
|
|
" ['16', '77', '75', '41', '12', '11', '42', '58', '89'],\n",
|
|
" ['46', '82', '84', '16', '41', '65', '45', '98', '56', '78', '99'],\n",
|
|
" ['54',\n",
|
|
" '71',\n",
|
|
" '77',\n",
|
|
" '35',\n",
|
|
" '11',\n",
|
|
" '41',\n",
|
|
" '89',\n",
|
|
" '16',\n",
|
|
" '65',\n",
|
|
" '21',\n",
|
|
" '46',\n",
|
|
" '85',\n",
|
|
" '49',\n",
|
|
" '56',\n",
|
|
" '79'],\n",
|
|
" ['15',\n",
|
|
" '35',\n",
|
|
" '79',\n",
|
|
" '78',\n",
|
|
" '41',\n",
|
|
" '89',\n",
|
|
" '28',\n",
|
|
" '49',\n",
|
|
" '77',\n",
|
|
" '56',\n",
|
|
" '71',\n",
|
|
" '17',\n",
|
|
" '19',\n",
|
|
" '75',\n",
|
|
" '98'],\n",
|
|
" ['57',\n",
|
|
" '76',\n",
|
|
" '37',\n",
|
|
" '17',\n",
|
|
" '83',\n",
|
|
" '91',\n",
|
|
" '81',\n",
|
|
" '49',\n",
|
|
" '86',\n",
|
|
" '58',\n",
|
|
" '69',\n",
|
|
" '74',\n",
|
|
" '11',\n",
|
|
" '15',\n",
|
|
" '22',\n",
|
|
" '31',\n",
|
|
" '61',\n",
|
|
" '94',\n",
|
|
" '25'],\n",
|
|
" ['46',\n",
|
|
" '65',\n",
|
|
" '25',\n",
|
|
" '98',\n",
|
|
" '99',\n",
|
|
" '61',\n",
|
|
" '45',\n",
|
|
" '82',\n",
|
|
" '89',\n",
|
|
" '81',\n",
|
|
" '85',\n",
|
|
" '69',\n",
|
|
" '21',\n",
|
|
" '37',\n",
|
|
" '35',\n",
|
|
" '54',\n",
|
|
" '78',\n",
|
|
" '86',\n",
|
|
" '76'],\n",
|
|
" ['89',\n",
|
|
" '12',\n",
|
|
" '83',\n",
|
|
" '74',\n",
|
|
" '11',\n",
|
|
" '77',\n",
|
|
" '28',\n",
|
|
" '15',\n",
|
|
" '71',\n",
|
|
" '63',\n",
|
|
" '35',\n",
|
|
" '19',\n",
|
|
" '79'],\n",
|
|
" ['12', '19', '28', '23', '74', '89', '77'],\n",
|
|
" ['98',\n",
|
|
" '85',\n",
|
|
" '77',\n",
|
|
" '37',\n",
|
|
" '99',\n",
|
|
" '41',\n",
|
|
" '25',\n",
|
|
" '35',\n",
|
|
" '19',\n",
|
|
" '16',\n",
|
|
" '65',\n",
|
|
" '81',\n",
|
|
" '66',\n",
|
|
" '89',\n",
|
|
" '61',\n",
|
|
" '57',\n",
|
|
" '75',\n",
|
|
" '84',\n",
|
|
" '21',\n",
|
|
" '46',\n",
|
|
" '82'],\n",
|
|
" ['11',\n",
|
|
" '49',\n",
|
|
" '91',\n",
|
|
" '94',\n",
|
|
" '76',\n",
|
|
" '15',\n",
|
|
" '23',\n",
|
|
" '31',\n",
|
|
" '34',\n",
|
|
" '71',\n",
|
|
" '28',\n",
|
|
" '79',\n",
|
|
" '42',\n",
|
|
" '17',\n",
|
|
" '63',\n",
|
|
" '69',\n",
|
|
" '22'],\n",
|
|
" ['23', '94', '74', '91', '31', '69', '25', '53', '15', '81', '22'],\n",
|
|
" ['75', '85', '98', '37', '63'],\n",
|
|
" ['78',\n",
|
|
" '54',\n",
|
|
" '37',\n",
|
|
" '82',\n",
|
|
" '41',\n",
|
|
" '16',\n",
|
|
" '46',\n",
|
|
" '71',\n",
|
|
" '99',\n",
|
|
" '66',\n",
|
|
" '75',\n",
|
|
" '56',\n",
|
|
" '21',\n",
|
|
" '84',\n",
|
|
" '65'],\n",
|
|
" ['34', '53', '71', '58', '86', '81', '57'],\n",
|
|
" ['85',\n",
|
|
" '19',\n",
|
|
" '77',\n",
|
|
" '82',\n",
|
|
" '98',\n",
|
|
" '56',\n",
|
|
" '49',\n",
|
|
" '75',\n",
|
|
" '41',\n",
|
|
" '89',\n",
|
|
" '71',\n",
|
|
" '17',\n",
|
|
" '12',\n",
|
|
" '79',\n",
|
|
" '35'],\n",
|
|
" ['23',\n",
|
|
" '22',\n",
|
|
" '37',\n",
|
|
" '76',\n",
|
|
" '15',\n",
|
|
" '31',\n",
|
|
" '86',\n",
|
|
" '94',\n",
|
|
" '82',\n",
|
|
" '61',\n",
|
|
" '74',\n",
|
|
" '58',\n",
|
|
" '57'],\n",
|
|
" ['22', '45', '91', '25', '42', '83', '15', '61', '66'],\n",
|
|
" ['35', '25', '45', '57', '75'],\n",
|
|
" ['81',\n",
|
|
" '75',\n",
|
|
" '77',\n",
|
|
" '46',\n",
|
|
" '25',\n",
|
|
" '37',\n",
|
|
" '84',\n",
|
|
" '85',\n",
|
|
" '89',\n",
|
|
" '16',\n",
|
|
" '78',\n",
|
|
" '19',\n",
|
|
" '66',\n",
|
|
" '69',\n",
|
|
" '98',\n",
|
|
" '35',\n",
|
|
" '21',\n",
|
|
" '82',\n",
|
|
" '61',\n",
|
|
" '57',\n",
|
|
" '65'],\n",
|
|
" ['58',\n",
|
|
" '41',\n",
|
|
" '77',\n",
|
|
" '15',\n",
|
|
" '42',\n",
|
|
" '71',\n",
|
|
" '12',\n",
|
|
" '35',\n",
|
|
" '53',\n",
|
|
" '83',\n",
|
|
" '19',\n",
|
|
" '74',\n",
|
|
" '63',\n",
|
|
" '75',\n",
|
|
" '22',\n",
|
|
" '89',\n",
|
|
" '79'],\n",
|
|
" ['11',\n",
|
|
" '23',\n",
|
|
" '49',\n",
|
|
" '19',\n",
|
|
" '42',\n",
|
|
" '94',\n",
|
|
" '34',\n",
|
|
" '56',\n",
|
|
" '75',\n",
|
|
" '53',\n",
|
|
" '22',\n",
|
|
" '83',\n",
|
|
" '28',\n",
|
|
" '15',\n",
|
|
" '31',\n",
|
|
" '71',\n",
|
|
" '17'],\n",
|
|
" ['35',\n",
|
|
" '53',\n",
|
|
" '17',\n",
|
|
" '22',\n",
|
|
" '77',\n",
|
|
" '12',\n",
|
|
" '75',\n",
|
|
" '83',\n",
|
|
" '11',\n",
|
|
" '41',\n",
|
|
" '71',\n",
|
|
" '23',\n",
|
|
" '56'],\n",
|
|
" ['41',\n",
|
|
" '85',\n",
|
|
" '79',\n",
|
|
" '11',\n",
|
|
" '65',\n",
|
|
" '49',\n",
|
|
" '77',\n",
|
|
" '75',\n",
|
|
" '17',\n",
|
|
" '42',\n",
|
|
" '99',\n",
|
|
" '28',\n",
|
|
" '71',\n",
|
|
" '35',\n",
|
|
" '89',\n",
|
|
" '63',\n",
|
|
" '78',\n",
|
|
" '22',\n",
|
|
" '19'],\n",
|
|
" ['45',\n",
|
|
" '85',\n",
|
|
" '35',\n",
|
|
" '66',\n",
|
|
" '75',\n",
|
|
" '63',\n",
|
|
" '98',\n",
|
|
" '84',\n",
|
|
" '89',\n",
|
|
" '21',\n",
|
|
" '78',\n",
|
|
" '54',\n",
|
|
" '82',\n",
|
|
" '25',\n",
|
|
" '77',\n",
|
|
" '16',\n",
|
|
" '19',\n",
|
|
" '41',\n",
|
|
" '99'],\n",
|
|
" ['53',\n",
|
|
" '74',\n",
|
|
" '25',\n",
|
|
" '83',\n",
|
|
" '23',\n",
|
|
" '54',\n",
|
|
" '29',\n",
|
|
" '81',\n",
|
|
" '86',\n",
|
|
" '82',\n",
|
|
" '22',\n",
|
|
" '57',\n",
|
|
" '61',\n",
|
|
" '94',\n",
|
|
" '76',\n",
|
|
" '91',\n",
|
|
" '69',\n",
|
|
" '34',\n",
|
|
" '31'],\n",
|
|
" ['65', '75', '16', '78', '99', '35', '98'],\n",
|
|
" ['86',\n",
|
|
" '91',\n",
|
|
" '11',\n",
|
|
" '57',\n",
|
|
" '53',\n",
|
|
" '29',\n",
|
|
" '23',\n",
|
|
" '69',\n",
|
|
" '83',\n",
|
|
" '81',\n",
|
|
" '31',\n",
|
|
" '17',\n",
|
|
" '71'],\n",
|
|
" ['71',\n",
|
|
" '17',\n",
|
|
" '42',\n",
|
|
" '63',\n",
|
|
" '41',\n",
|
|
" '74',\n",
|
|
" '58',\n",
|
|
" '22',\n",
|
|
" '53',\n",
|
|
" '56',\n",
|
|
" '28',\n",
|
|
" '83',\n",
|
|
" '79',\n",
|
|
" '91',\n",
|
|
" '34',\n",
|
|
" '15',\n",
|
|
" '19',\n",
|
|
" '23',\n",
|
|
" '94'],\n",
|
|
" ['34',\n",
|
|
" '37',\n",
|
|
" '23',\n",
|
|
" '29',\n",
|
|
" '54',\n",
|
|
" '57',\n",
|
|
" '94',\n",
|
|
" '61',\n",
|
|
" '84',\n",
|
|
" '45',\n",
|
|
" '22',\n",
|
|
" '69',\n",
|
|
" '83'],\n",
|
|
" ['21', '79', '12', '98', '42', '16', '78', '11', '28'],\n",
|
|
" ['28',\n",
|
|
" '49',\n",
|
|
" '86',\n",
|
|
" '58',\n",
|
|
" '81',\n",
|
|
" '69',\n",
|
|
" '53',\n",
|
|
" '74',\n",
|
|
" '17',\n",
|
|
" '57',\n",
|
|
" '12',\n",
|
|
" '91',\n",
|
|
" '11',\n",
|
|
" '23',\n",
|
|
" '25',\n",
|
|
" '22',\n",
|
|
" '42',\n",
|
|
" '76',\n",
|
|
" '83',\n",
|
|
" '29',\n",
|
|
" '31',\n",
|
|
" '94',\n",
|
|
" '34'],\n",
|
|
" ['84',\n",
|
|
" '78',\n",
|
|
" '75',\n",
|
|
" '35',\n",
|
|
" '19',\n",
|
|
" '65',\n",
|
|
" '69',\n",
|
|
" '21',\n",
|
|
" '85',\n",
|
|
" '81',\n",
|
|
" '66',\n",
|
|
" '25',\n",
|
|
" '99',\n",
|
|
" '16',\n",
|
|
" '77',\n",
|
|
" '98',\n",
|
|
" '45'],\n",
|
|
" ['77', '94', '28', '49', '31'],\n",
|
|
" ['11',\n",
|
|
" '58',\n",
|
|
" '74',\n",
|
|
" '83',\n",
|
|
" '41',\n",
|
|
" '34',\n",
|
|
" '19',\n",
|
|
" '75',\n",
|
|
" '42',\n",
|
|
" '49',\n",
|
|
" '12',\n",
|
|
" '23',\n",
|
|
" '15',\n",
|
|
" '71',\n",
|
|
" '94',\n",
|
|
" '53',\n",
|
|
" '22'],\n",
|
|
" ['86',\n",
|
|
" '74',\n",
|
|
" '49',\n",
|
|
" '71',\n",
|
|
" '28',\n",
|
|
" '22',\n",
|
|
" '63',\n",
|
|
" '83',\n",
|
|
" '15',\n",
|
|
" '34',\n",
|
|
" '17',\n",
|
|
" '58',\n",
|
|
" '91',\n",
|
|
" '23',\n",
|
|
" '53',\n",
|
|
" '69',\n",
|
|
" '12',\n",
|
|
" '31',\n",
|
|
" '11',\n",
|
|
" '76',\n",
|
|
" '42'],\n",
|
|
" ['98',\n",
|
|
" '85',\n",
|
|
" '75',\n",
|
|
" '99',\n",
|
|
" '63',\n",
|
|
" '35',\n",
|
|
" '16',\n",
|
|
" '65',\n",
|
|
" '71',\n",
|
|
" '37',\n",
|
|
" '77',\n",
|
|
" '82',\n",
|
|
" '79',\n",
|
|
" '41',\n",
|
|
" '19',\n",
|
|
" '54',\n",
|
|
" '89',\n",
|
|
" '66',\n",
|
|
" '21',\n",
|
|
" '78',\n",
|
|
" '84',\n",
|
|
" '45',\n",
|
|
" '56'],\n",
|
|
" ['29', '45', '85', '91', '94', '78', '81'],\n",
|
|
" ['56', '19', '46', '15', '35', '22', '71'],\n",
|
|
" ['46',\n",
|
|
" '66',\n",
|
|
" '29',\n",
|
|
" '61',\n",
|
|
" '16',\n",
|
|
" '65',\n",
|
|
" '57',\n",
|
|
" '54',\n",
|
|
" '76',\n",
|
|
" '89',\n",
|
|
" '98',\n",
|
|
" '21',\n",
|
|
" '25',\n",
|
|
" '91',\n",
|
|
" '45',\n",
|
|
" '85',\n",
|
|
" '99',\n",
|
|
" '78',\n",
|
|
" '37'],\n",
|
|
" ['76',\n",
|
|
" '31',\n",
|
|
" '94',\n",
|
|
" '84',\n",
|
|
" '15',\n",
|
|
" '61',\n",
|
|
" '83',\n",
|
|
" '57',\n",
|
|
" '58',\n",
|
|
" '91',\n",
|
|
" '25',\n",
|
|
" '34',\n",
|
|
" '37',\n",
|
|
" '53',\n",
|
|
" '66',\n",
|
|
" '81',\n",
|
|
" '22'],\n",
|
|
" ['94',\n",
|
|
" '29',\n",
|
|
" '61',\n",
|
|
" '74',\n",
|
|
" '69',\n",
|
|
" '34',\n",
|
|
" '31',\n",
|
|
" '91',\n",
|
|
" '37',\n",
|
|
" '84',\n",
|
|
" '86',\n",
|
|
" '25',\n",
|
|
" '15',\n",
|
|
" '83',\n",
|
|
" '23',\n",
|
|
" '81',\n",
|
|
" '21'],\n",
|
|
" ['74',\n",
|
|
" '25',\n",
|
|
" '12',\n",
|
|
" '58',\n",
|
|
" '29',\n",
|
|
" '69',\n",
|
|
" '61',\n",
|
|
" '94',\n",
|
|
" '53',\n",
|
|
" '42',\n",
|
|
" '57',\n",
|
|
" '49',\n",
|
|
" '11',\n",
|
|
" '86',\n",
|
|
" '23'],\n",
|
|
" ['41',\n",
|
|
" '84',\n",
|
|
" '85',\n",
|
|
" '78',\n",
|
|
" '45',\n",
|
|
" '21',\n",
|
|
" '99',\n",
|
|
" '35',\n",
|
|
" '75',\n",
|
|
" '57',\n",
|
|
" '54',\n",
|
|
" '77',\n",
|
|
" '66'],\n",
|
|
" ['79', '56', '89', '77', '78'],\n",
|
|
" ['91',\n",
|
|
" '31',\n",
|
|
" '66',\n",
|
|
" '81',\n",
|
|
" '69',\n",
|
|
" '46',\n",
|
|
" '76',\n",
|
|
" '16',\n",
|
|
" '82',\n",
|
|
" '25',\n",
|
|
" '29',\n",
|
|
" '21',\n",
|
|
" '84',\n",
|
|
" '98',\n",
|
|
" '85',\n",
|
|
" '45',\n",
|
|
" '61',\n",
|
|
" '74',\n",
|
|
" '54'],\n",
|
|
" ['77',\n",
|
|
" '78',\n",
|
|
" '17',\n",
|
|
" '28',\n",
|
|
" '54',\n",
|
|
" '35',\n",
|
|
" '16',\n",
|
|
" '82',\n",
|
|
" '99',\n",
|
|
" '65',\n",
|
|
" '41',\n",
|
|
" '89',\n",
|
|
" '71',\n",
|
|
" '12',\n",
|
|
" '63',\n",
|
|
" '98',\n",
|
|
" '19',\n",
|
|
" '46',\n",
|
|
" '66',\n",
|
|
" '56',\n",
|
|
" '79'],\n",
|
|
" ['49', '53', '23', '69', '74'],\n",
|
|
" ['22', '17', '41', '65', '77', '31', '83', '79', '19', '49', '53'],\n",
|
|
" ['77',\n",
|
|
" '15',\n",
|
|
" '23',\n",
|
|
" '17',\n",
|
|
" '12',\n",
|
|
" '22',\n",
|
|
" '42',\n",
|
|
" '65',\n",
|
|
" '79',\n",
|
|
" '71',\n",
|
|
" '75',\n",
|
|
" '11',\n",
|
|
" '89',\n",
|
|
" '49',\n",
|
|
" '41'],\n",
|
|
" ['17', '28', '77', '65', '12', '71', '79', '75', '31'],\n",
|
|
" ['99',\n",
|
|
" '81',\n",
|
|
" '45',\n",
|
|
" '21',\n",
|
|
" '82',\n",
|
|
" '84',\n",
|
|
" '57',\n",
|
|
" '54',\n",
|
|
" '86',\n",
|
|
" '78',\n",
|
|
" '66',\n",
|
|
" '29',\n",
|
|
" '25'],\n",
|
|
" ['22',\n",
|
|
" '69',\n",
|
|
" '83',\n",
|
|
" '31',\n",
|
|
" '71',\n",
|
|
" '76',\n",
|
|
" '17',\n",
|
|
" '79',\n",
|
|
" '94',\n",
|
|
" '86',\n",
|
|
" '34',\n",
|
|
" '42',\n",
|
|
" '63',\n",
|
|
" '53',\n",
|
|
" '12'],\n",
|
|
" ['75',\n",
|
|
" '61',\n",
|
|
" '69',\n",
|
|
" '84',\n",
|
|
" '46',\n",
|
|
" '16',\n",
|
|
" '19',\n",
|
|
" '45',\n",
|
|
" '35',\n",
|
|
" '86',\n",
|
|
" '78',\n",
|
|
" '54',\n",
|
|
" '25',\n",
|
|
" '21',\n",
|
|
" '82',\n",
|
|
" '85',\n",
|
|
" '57'],\n",
|
|
" ['57',\n",
|
|
" '58',\n",
|
|
" '23',\n",
|
|
" '53',\n",
|
|
" '83',\n",
|
|
" '42',\n",
|
|
" '94',\n",
|
|
" '76',\n",
|
|
" '61',\n",
|
|
" '15',\n",
|
|
" '22',\n",
|
|
" '45',\n",
|
|
" '34',\n",
|
|
" '31',\n",
|
|
" '29',\n",
|
|
" '81',\n",
|
|
" '86',\n",
|
|
" '37',\n",
|
|
" '25',\n",
|
|
" '84',\n",
|
|
" '66'],\n",
|
|
" ['99',\n",
|
|
" '81',\n",
|
|
" '57',\n",
|
|
" '69',\n",
|
|
" '82',\n",
|
|
" '45',\n",
|
|
" '89',\n",
|
|
" '85',\n",
|
|
" '46',\n",
|
|
" '61',\n",
|
|
" '86',\n",
|
|
" '21',\n",
|
|
" '78',\n",
|
|
" '16',\n",
|
|
" '37',\n",
|
|
" '76',\n",
|
|
" '66',\n",
|
|
" '34',\n",
|
|
" '29'],\n",
|
|
" ['83',\n",
|
|
" '53',\n",
|
|
" '74',\n",
|
|
" '41',\n",
|
|
" '22',\n",
|
|
" '11',\n",
|
|
" '58',\n",
|
|
" '12',\n",
|
|
" '77',\n",
|
|
" '79',\n",
|
|
" '71',\n",
|
|
" '56',\n",
|
|
" '65',\n",
|
|
" '17',\n",
|
|
" '35',\n",
|
|
" '49',\n",
|
|
" '75',\n",
|
|
" '42',\n",
|
|
" '19',\n",
|
|
" '15',\n",
|
|
" '28',\n",
|
|
" '89',\n",
|
|
" '23'],\n",
|
|
" ['56',\n",
|
|
" '58',\n",
|
|
" '49',\n",
|
|
" '83',\n",
|
|
" '11',\n",
|
|
" '17',\n",
|
|
" '71',\n",
|
|
" '42',\n",
|
|
" '53',\n",
|
|
" '76',\n",
|
|
" '77',\n",
|
|
" '15',\n",
|
|
" '63',\n",
|
|
" '12',\n",
|
|
" '31',\n",
|
|
" '79',\n",
|
|
" '74',\n",
|
|
" '91',\n",
|
|
" '41'],\n",
|
|
" ['69',\n",
|
|
" '23',\n",
|
|
" '34',\n",
|
|
" '29',\n",
|
|
" '66',\n",
|
|
" '82',\n",
|
|
" '16',\n",
|
|
" '25',\n",
|
|
" '31',\n",
|
|
" '21',\n",
|
|
" '57',\n",
|
|
" '91',\n",
|
|
" '81',\n",
|
|
" '54',\n",
|
|
" '74',\n",
|
|
" '86',\n",
|
|
" '94',\n",
|
|
" '84',\n",
|
|
" '61',\n",
|
|
" '45',\n",
|
|
" '83',\n",
|
|
" '53',\n",
|
|
" '37'],\n",
|
|
" ['45',\n",
|
|
" '85',\n",
|
|
" '46',\n",
|
|
" '21',\n",
|
|
" '75',\n",
|
|
" '54',\n",
|
|
" '63',\n",
|
|
" '77',\n",
|
|
" '79',\n",
|
|
" '56',\n",
|
|
" '82',\n",
|
|
" '41',\n",
|
|
" '71'],\n",
|
|
" ['56',\n",
|
|
" '82',\n",
|
|
" '46',\n",
|
|
" '54',\n",
|
|
" '98',\n",
|
|
" '99',\n",
|
|
" '65',\n",
|
|
" '19',\n",
|
|
" '35',\n",
|
|
" '45',\n",
|
|
" '85',\n",
|
|
" '41',\n",
|
|
" '84',\n",
|
|
" '25',\n",
|
|
" '16',\n",
|
|
" '89',\n",
|
|
" '78',\n",
|
|
" '37',\n",
|
|
" '63'],\n",
|
|
" ['19',\n",
|
|
" '71',\n",
|
|
" '42',\n",
|
|
" '46',\n",
|
|
" '12',\n",
|
|
" '85',\n",
|
|
" '63',\n",
|
|
" '89',\n",
|
|
" '56',\n",
|
|
" '49',\n",
|
|
" '79',\n",
|
|
" '41',\n",
|
|
" '99',\n",
|
|
" '11',\n",
|
|
" '77'],\n",
|
|
" ['85',\n",
|
|
" '77',\n",
|
|
" '78',\n",
|
|
" '99',\n",
|
|
" '61',\n",
|
|
" '41',\n",
|
|
" '75',\n",
|
|
" '89',\n",
|
|
" '57',\n",
|
|
" '37',\n",
|
|
" '65',\n",
|
|
" '25',\n",
|
|
" '54'],\n",
|
|
" ['54',\n",
|
|
" '66',\n",
|
|
" '57',\n",
|
|
" '69',\n",
|
|
" '21',\n",
|
|
" '78',\n",
|
|
" '25',\n",
|
|
" '85',\n",
|
|
" '81',\n",
|
|
" '29',\n",
|
|
" '86',\n",
|
|
" '61',\n",
|
|
" '65',\n",
|
|
" '99',\n",
|
|
" '37',\n",
|
|
" '98',\n",
|
|
" '16',\n",
|
|
" '89',\n",
|
|
" '46',\n",
|
|
" '76',\n",
|
|
" '45'],\n",
|
|
" ['99', '66', '57', '89', '41', '65', '16'],\n",
|
|
" ['42',\n",
|
|
" '35',\n",
|
|
" '17',\n",
|
|
" '19',\n",
|
|
" '28',\n",
|
|
" '11',\n",
|
|
" '15',\n",
|
|
" '74',\n",
|
|
" '94',\n",
|
|
" '77',\n",
|
|
" '71',\n",
|
|
" '22',\n",
|
|
" '75',\n",
|
|
" '83',\n",
|
|
" '53'],\n",
|
|
" ['46',\n",
|
|
" '29',\n",
|
|
" '57',\n",
|
|
" '65',\n",
|
|
" '45',\n",
|
|
" '86',\n",
|
|
" '81',\n",
|
|
" '61',\n",
|
|
" '84',\n",
|
|
" '78',\n",
|
|
" '98',\n",
|
|
" '66',\n",
|
|
" '35',\n",
|
|
" '69',\n",
|
|
" '25',\n",
|
|
" '37',\n",
|
|
" '82',\n",
|
|
" '21',\n",
|
|
" '85',\n",
|
|
" '89',\n",
|
|
" '76',\n",
|
|
" '16',\n",
|
|
" '99'],\n",
|
|
" ['58',\n",
|
|
" '56',\n",
|
|
" '31',\n",
|
|
" '22',\n",
|
|
" '75',\n",
|
|
" '15',\n",
|
|
" '77',\n",
|
|
" '34',\n",
|
|
" '11',\n",
|
|
" '79',\n",
|
|
" '19',\n",
|
|
" '17',\n",
|
|
" '49',\n",
|
|
" '23',\n",
|
|
" '71',\n",
|
|
" '28',\n",
|
|
" '63',\n",
|
|
" '12',\n",
|
|
" '53',\n",
|
|
" '74',\n",
|
|
" '83'],\n",
|
|
" ['41', '42', '99', '65', '12'],\n",
|
|
" ['21',\n",
|
|
" '37',\n",
|
|
" '16',\n",
|
|
" '99',\n",
|
|
" '31',\n",
|
|
" '82',\n",
|
|
" '81',\n",
|
|
" '61',\n",
|
|
" '85',\n",
|
|
" '34',\n",
|
|
" '86',\n",
|
|
" '29',\n",
|
|
" '76',\n",
|
|
" '45',\n",
|
|
" '57'],\n",
|
|
" ['22', '28', '75', '74', '63', '41', '65', '56', '89', '15', '79'],\n",
|
|
" ['65',\n",
|
|
" '19',\n",
|
|
" '63',\n",
|
|
" '35',\n",
|
|
" '98',\n",
|
|
" '12',\n",
|
|
" '85',\n",
|
|
" '28',\n",
|
|
" '21',\n",
|
|
" '75',\n",
|
|
" '78',\n",
|
|
" '17',\n",
|
|
" '89',\n",
|
|
" '77',\n",
|
|
" '46',\n",
|
|
" '54',\n",
|
|
" '99',\n",
|
|
" '16',\n",
|
|
" '11'],\n",
|
|
" ['42', '49', '71', '23', '76', '94', '53'],\n",
|
|
" ['49',\n",
|
|
" '63',\n",
|
|
" '76',\n",
|
|
" '53',\n",
|
|
" '15',\n",
|
|
" '28',\n",
|
|
" '42',\n",
|
|
" '83',\n",
|
|
" '58',\n",
|
|
" '71',\n",
|
|
" '29',\n",
|
|
" '11',\n",
|
|
" '34',\n",
|
|
" '22',\n",
|
|
" '94',\n",
|
|
" '74',\n",
|
|
" '69',\n",
|
|
" '31',\n",
|
|
" '79',\n",
|
|
" '23',\n",
|
|
" '12',\n",
|
|
" '86',\n",
|
|
" '17'],\n",
|
|
" ['82',\n",
|
|
" '56',\n",
|
|
" '45',\n",
|
|
" '19',\n",
|
|
" '21',\n",
|
|
" '79',\n",
|
|
" '61',\n",
|
|
" '99',\n",
|
|
" '89',\n",
|
|
" '63',\n",
|
|
" '77',\n",
|
|
" '85',\n",
|
|
" '54'],\n",
|
|
" ['83',\n",
|
|
" '49',\n",
|
|
" '74',\n",
|
|
" '12',\n",
|
|
" '75',\n",
|
|
" '77',\n",
|
|
" '58',\n",
|
|
" '35',\n",
|
|
" '53',\n",
|
|
" '79',\n",
|
|
" '94',\n",
|
|
" '17',\n",
|
|
" '56']]"
|
|
]
|
|
},
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"incorrect_sequences=[sequence for sequence in sequences if not test_sequence(sequence)]\n",
|
|
"incorrect_sequences"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from functools import cmp_to_key\n",
|
|
"\n",
|
|
"def comparator(x, y):\n",
|
|
" # If both elements are in the graph\n",
|
|
" if x in rules.nodes and y in rules.nodes:\n",
|
|
" if rules.has_edge(x, y): # x must come before y\n",
|
|
" return -1\n",
|
|
" elif rules.has_edge(y, x): # y must come before x\n",
|
|
" return 1\n",
|
|
" # If one or both elements are missing, treat them as equal\n",
|
|
" return 0\n",
|
|
"\n",
|
|
"sorted_incorrect = [sorted(sequence, key=cmp_to_key(comparator)) for sequence in incorrect_sequences]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"4971"
|
|
]
|
|
},
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"sum([int(sequence[len(sequence)//2]) for sequence in sorted_incorrect if test_sequence(sequence)])"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|