+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ ">+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++>++++++++++++++++++++++++\n",
+ "\n",
+ "\n",
+ "read character into cell 9\n",
+ ">>>>>>,\n",
+ "\n",
+ "\n",
+ "\n",
+ "while cell 9 != 0 # have an input\n",
+ "[\n",
+ " set cell 10 to 1\n",
+ " >[-]+\n",
+ "\n",
+ " # clear cells 4 and 0\n",
+ " <<<<<<[-]<<<<[-]>\n",
+ " # copy cell 1 to cell 0 using cell 4\n",
+ " [-<+>>>>+<<<]\n",
+ " >>>[-<<<+>>>]\n",
+ " <<<<\n",
+ " \n",
+ " subtract cell 0 from cell 9 \n",
+ " [->>>>>>>>>-<<<<<<<<<]\n",
+ " >>>>>>>>>\n",
+ " \n",
+ " while cell 9 != 0 # we're not at an exit\n",
+ " [\n",
+ " set cell 10 to 0\n",
+ " >[-]\n",
+ " \n",
+ " copy cell 2 to cell 0 using cell 4\n",
+ " <<<<<<<<[-<<+>>>>+<<]\n",
+ " >>[-<<+>>]\n",
+ " <<<<\n",
+ " \n",
+ " subtract cell 0 from cell 9\n",
+ " [->>>>>>>>>-<<<<<<<<<]\n",
+ " >>>>>\n",
+ "\n",
+ " set cell 5 to 1\n",
+ " [-]+\n",
+ " >>>>\n",
+ "\n",
+ " \n",
+ " while cell 9 != 0 # we're going down\n",
+ " [\n",
+ " clear cell 5\n",
+ " <<<<[-]\n",
+ " copy cell 7 to cell 11 using cell 12\n",
+ " >>[->>>>+>+<<<<<]\n",
+ " >>>>>[-<<<<<+>>>>>]\n",
+ " \n",
+ " cell 12 is zero\n",
+ " \n",
+ " while cell 11 != 0 # above ground\n",
+ " <\n",
+ " [\n",
+ " set cell 12 to 1\n",
+ " >[-]+\n",
+ " \n",
+ " clear cell 11\n",
+ " <[-]\n",
+ " end\n",
+ " ] 11\n",
+ " \n",
+ " while cell 12 != 0\n",
+ " >\n",
+ " [\n",
+ " decrement cell 7\n",
+ " <<<<<-\n",
+ " \n",
+ " set cell 12 to zero\n",
+ " >>>>>[-]\n",
+ " end\n",
+ " ] 12\n",
+ " \n",
+ " <<<<<<\n",
+ " decrement cell 6\n",
+ " -\n",
+ " \n",
+ " have now dealt with the input so clear cell 9\n",
+ " >>>[-]\n",
+ " end\n",
+ " ] 9\n",
+ " \n",
+ " \n",
+ " while cell 5 != 0 # we're going up\n",
+ " <<<<\n",
+ " [\n",
+ " clear cell 5\n",
+ " [-]\n",
+ "\n",
+ "\n",
+ " # set cell 12 to 0\n",
+ " >>>>>>>[-]\n",
+ "\n",
+ " ### if 6 == 0 or 7 != 0\n",
+ " ### set cell 12 to 1\n",
+ "\n",
+ " # copy cell 6 to cell 11 using cell 12\n",
+ " <<<<<<[->>>>>+>+<<<<<<]\n",
+ " >>>>>>[-<<<<<<+>>>>>>]\n",
+ " \n",
+ " set cell 12 to 1\n",
+ " [-]+\n",
+ "\n",
+ " while cell 11 != 0\n",
+ " <\n",
+ " [\n",
+ " clear cell 12\n",
+ " >[-]\n",
+ "\n",
+ " set cell 11 to 0\n",
+ " <[-]\n",
+ " end 11\n",
+ " ] 11\n",
+ "\n",
+ "\n",
+ "\n",
+ " # copy cell 7 to cell 11 using cell 13\n",
+ " <<<<[->>>>+>>+<<<<<<]\n",
+ " >>>>>>[-<<<<<<+>>>>>>]\n",
+ "\n",
+ " # while cell 11 != 0\n",
+ " <<\n",
+ " [\n",
+ " set cell 12 to 1\n",
+ " >[-]+\n",
+ "\n",
+ " set cell 11 to 0\n",
+ " <[-]\n",
+ " \n",
+ " # end 11\n",
+ " ] 11\n",
+ " # add cell 12 to cell 7\n",
+ " >[-<<<<<+>>>>>]\n",
+ "\n",
+ " # increment cell 6\n",
+ " <<<<<<+\n",
+ " <\n",
+ " end\n",
+ " ] 5\n",
+ " \n",
+ " have now dealt with the non exit node\n",
+ " clear cell 9\n",
+ " >>>> \n",
+ " [-]\n",
+ " end\n",
+ " ] 9\n",
+ " \n",
+ " while cell 10 != 0 # at an exit\n",
+ " >\n",
+ " [\n",
+ " copy cell 7 to cell 12 using cell 13 (highest)\n",
+ " <<<[->>>>>+>+<<<<<<]\n",
+ " >>>>>>[-<<<<<<+>>>>>>]\n",
+ " \n",
+ " while cell 12 != 0 (above ground level)\n",
+ " <\n",
+ " [\n",
+ " copy cell 8 to cell 11 using cell 13 (highest)\n",
+ " <<<<[->>>+>>+<<<<<]\n",
+ " >>>>>[-<<<<<+>>>>>]\n",
+ " \n",
+ " cell 13 is zero\n",
+ " \n",
+ " ### subtract 11 from 12 ensuring 12 gte 0\n",
+ " ### add 12 to 8\n",
+ " \n",
+ " while cell 11 != 0\n",
+ " <<\n",
+ " [\n",
+ " copy cell 12 to cell 14 using cell 15\n",
+ " >[->>+>+<<<]\n",
+ " >>>[-<<<+>>>]\n",
+ " \n",
+ " while cell 14 != 0\n",
+ " <\n",
+ " [\n",
+ " set cell 13 to 1\n",
+ " <[-]+\n",
+ " decrement cell 14\n",
+ " >-\n",
+ " end\n",
+ " ] 14\n",
+ " while cell 13 != 0\n",
+ " <\n",
+ " [\n",
+ " decrement cell 12\n",
+ " <-\n",
+ " decrement cell 13\n",
+ " >-\n",
+ " end\n",
+ " ] 13\n",
+ " \n",
+ " decrement cell 11\n",
+ " <<-\n",
+ " end\n",
+ " ] 11\n",
+ " \n",
+ " >[-<<<<+>>>>]\n",
+ " add cell 12 to cell 8\n",
+ " ] 12\n",
+ " <<\n",
+ " clear 10\n",
+ " [-]\n",
+ " ] 10\n",
+ " \n",
+ " \n",
+ " \n",
+ " read character into cell 9\n",
+ " <,\n",
+ "end \n",
+ "] 9\n",
+ "\n",
+ "output cell 8\n",
+ "<.\n",
+ "\n",
+ "\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "program = open('part2.bf').read()\n",
+ "print(program)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},