22 "['^', '^', '^', 'v', 'v', 'v', '=']"
27 "output_type": "execute_result"
31 "instructions = list('^^^vvv=')\n",
37 "execution_count": 59,
43 "def build_sequence(instructions, length=100):\n",
44 " non_exits = [i for i in instructions if i != '=']\n",
45 " seq = [random.choice(non_exits)]\n",
46 " last_was_exit = False\n",
47 " for _ in range(length-2):\n",
48 " if last_was_exit:\n",
49 " seq.append(random.choice(non_exits))\n",
50 " last_was_exit = False\n",
52 " i = random.choice(instructions)\n",
53 " last_was_exit = (i == '=')\n",
55 " seq.append(instructions[-1])\n",
56 " return ''.join(seq)"
61 "execution_count": 62,
70 "execution_count": 62,
72 "output_type": "execute_result"
76 "build_sequence(instructions, 10)"
81 "execution_count": 66,
87 "'vvv^v^^^^v^v=^vvv=v^vvv^=v^^v=v^^^^vv^=v^vvv^v^^vv^^vvvvv^^vv^v=^v=v^^^vvv^v^vv=v^vv^^=^vv^^vvvv=^^='"
90 "execution_count": 66,
92 "output_type": "execute_result"
96 "seq = build_sequence(instructions)\n",
102 "execution_count": 15,
108 "def value(instr):\n",
109 " if instr == '^':\n",
111 " elif instr == 'v':\n",
119 "execution_count": 16,
125 "def final(sequence):\n",
126 " return sum(value(i) for i in sequence)"
131 "execution_count": 22,
140 "execution_count": 22,
142 "output_type": "execute_result"
151 "execution_count": 23,
157 "def running(sequence):\n",
161 " for i in sequence:\n",
162 " if value(i) == 0:\n",
163 " exits.append(current)\n",
165 " current += value(i)\n",
166 " currents.append(current)\n",
167 " return currents, exits"
172 "execution_count": 24,
269 " [5, 4, 2, 1, -2, -2, -3, -5, -5, -1, -1])"
272 "execution_count": 24,
274 "output_type": "execute_result"
283 "execution_count": 33,
288 "output_type": "stream",
290 "^vvv^^v^=vv=v^v=^vvvv^=^vv^vvv^=v=v^^v=^^v=v^=v^^vv^^==v^^v^v=vvv^^^^=vvv^^v=v=vv^^^^v^v=vv^v^=^^^^v=v=v^^^vv^vv^v^^vvv^v==^vv=^vv^vv^^vv=^=v=vv^vv^=v^^^^vvvvv=vv^^^v=^=^=vv^v=v^^^^vv=^^^^vv^^v=vv^^v^^v^vv^^==^v^=^^^^v=^v^v^v=vv^=vvv^v=^v^^^^vv^v^v^^v^v^v^^^vv^^v^^v=v^v^v^v^^v^vvvv^=^v=^^vvvv^^vv^vv^v=^v=^vvvvv^vv=vv^=v^=^^^^^=^vvvvv^=^v^=^^^v^^v^=v^^^vv^v^^vv^=^v^^^vvv=^v^^v^v^^vvvvv^vvv=^v=^^vv^^v^^vvvv=v^=v^vvvvvvv=^==^vv=v=vv=^^^^=vv^vvv^^v^vv^^^v^^v=v^^=^^^^vv^v==v^v^^v^^v^=^^^==v^^^vv^==vvvvvvv^=vv^=vv^^=v^^vvv^^^vvv^^vv=v=^^vvv^^^^v=^^vv^v^^=^v=v=^vv^^vvv^^^^vv^=v^^v^^v^v=v^^^^vvv^^=vv^=vv^^v^v^^v=v^^vv^=^v^^^=v^^v=v^vv^=^v^^v=vv^=^v^^^v^=v==v^vvvvv^vvvv^^v=^^vv^^v^^^^^=^v=^v^=^vv^v=^^^vvvv^^vv^^==^==^^^^v=v^vvvv=^v^=^vv^^v^^vvvvv=^v^^==^=^^v==v=vv^vv^^vvv=^vvvv=v=^vv=^v^^vv==vvv^^^=vv^^^vv=v=^vvv^^v^v=v^^v=^=v^vvvvvvvv===^=^vvv^vv^^vvvv^=^v^^^=^^^vvvvv^==v^^v=vvv^v=vv^vv^vv=vvv^vv^=^^^v^vv^vvv=v^vv^v^vvvvvv^^v^^^^vv^v=^=^v=v^^vvv^vv^^=^v^vv^v^=v=v^v^vvv=^^=^vv^vvv==^^v^^vvv^v^=\n",
292 "Highest 1, lowest -49, final -48.\n",
293 "Highest exit 0, lowest exit -49.\n"
298 "seq = build_sequence(instructions, 1000)\n",
300 "print('Final: ', final(seq))\n",
301 "fs, es = running(seq)\n",
302 "print('Highest {}, lowest {}, final {}.'.format(max(fs), min(fs), fs[-1]))\n",
303 "print('Highest exit {}, lowest exit {}.'.format(max(es), min(es)))"
308 "execution_count": 67,
313 "output_type": "stream",
315 "Highest 216, lowest -6, final 209.\n",
316 "Highest exit 215, lowest exit -5.\n"
321 "valid_seq = False\n",
322 "while not valid_seq:\n",
323 " seq = build_sequence(instructions, 10000)\n",
324 " fs, es = running(seq)\n",
325 " if min(fs) > -10 and fs[-1] > 0:\n",
326 " valid_seq = True\n",
328 "open('02-lifts.txt', 'w').write(seq)\n",
329 "print('Highest {}, lowest {}, final {}.'.format(max(fs), min(fs), fs[-1]))\n",
330 "print('Highest exit {}, lowest exit {}.'.format(max(es), min(es)))"
335 "execution_count": 80,
341 "('v^^^^^v=v=', ([-1, 0, 1, 2, 3, 4, 3, 2], [3, 2]))"
344 "execution_count": 80,
346 "output_type": "execute_result"
350 "small_seq = build_sequence(instructions, 10)\n",
351 "small_seq, running(small_seq)"
356 "execution_count": null,
366 "display_name": "Python 3",
367 "language": "python",
375 "file_extension": ".py",
376 "mimetype": "text/x-python",
378 "nbconvert_exporter": "python",
379 "pygments_lexer": "ipython3",