"cells": [
{
"cell_type": "code",
- "execution_count": 121,
- "metadata": {},
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": true
+ },
"outputs": [],
"source": [
"#!/usr/bin/python\n",
"\n",
" cells, codeptr, cellptr = [0], 0, 0\n",
" inputptr = 0\n",
+ " output = []\n",
"\n",
" try:\n",
" while codeptr < len(code):\n",
"\n",
" if command == \"[\" and cells[cellptr] == 0: codeptr = bracemap[codeptr]\n",
" if command == \"]\" and cells[cellptr] != 0: codeptr = bracemap[codeptr]\n",
- " if command == \".\": sys.stdout.write(chr(cells[cellptr]))\n",
+ " if command == \".\": output += [cells[cellptr]] # sys.stdout.write(chr(cells[cellptr]))\n",
" if command == \",\": \n",
" if inp is not None:\n",
" if inputptr >= len(inp):\n",
- " raise EOFError\n",
- " cells[cellptr] = ord(inp[inputptr])\n",
- " inputptr += 1\n",
+ " # raise EOFError\n",
+ " cells[cellptr] = 0\n",
+ " else:\n",
+ " cells[cellptr] = ord(inp[inputptr])\n",
+ " inputptr += 1\n",
" else:\n",
" cells[cellptr] = ord(getch.getch())\n",
"\n",
" codeptr += 1\n",
" except EOFError:\n",
" pass\n",
- " return cells, codeptr, cellptr\n",
+ " return cells, codeptr, cellptr, output\n",
"\n",
"\n",
"def cleanup(code):\n",
},
{
"cell_type": "code",
- "execution_count": 128,
+ "execution_count": 3,
"metadata": {},
"outputs": [
{
"(118, 94, 61)"
]
},
- "execution_count": 128,
+ "execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 129,
+ "execution_count": 4,
"metadata": {},
"outputs": [
{
"24"
]
},
- "execution_count": 129,
+ "execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 5,
"metadata": {
"collapsed": true
},
},
{
"cell_type": "code",
- "execution_count": 20,
+ "execution_count": 6,
"metadata": {},
"outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Hello World!\n"
- ]
- },
{
"data": {
"text/plain": [
- "([0, 0, 72, 100, 87, 33, 10], 106, 6)"
+ "([0, 0, 72, 100, 87, 33, 10],\n",
+ " 106,\n",
+ " 6,\n",
+ " [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 10])"
]
},
- "execution_count": 20,
+ "execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": 7,
"metadata": {},
"outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "hello"
- ]
- },
{
"data": {
"text/plain": [
- "([111], 3, 0)"
+ "([0], 5, 0, [104, 101, 108, 108, 111])"
]
},
- "execution_count": 19,
+ "execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "evaluate(',[.,]', input='hello')"
+ "evaluate(',[.,]', inp='hello')"
]
},
{
"cell_type": "code",
- "execution_count": 196,
- "metadata": {},
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": true
+ },
"outputs": [],
"source": [
"program = '>' + '+' * 94 + '>' + '+' * 24\n",
},
{
"cell_type": "code",
- "execution_count": 197,
+ "execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "([94, 94, 24, 0, 3, 0], 255, 5)"
+ "([94, 94, 24, 0, 3, 0], 259, 4, [3])"
]
},
- "execution_count": 197,
+ "execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 198,
+ "execution_count": 10,
"metadata": {},
"outputs": [
{
"'>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++<[-<+>>>+<<]>>[-<<+>>]>>,[<<<<<[->>>>>-<<<<<]>>>>>[<<<[->+<<<+>>]>[-<+>]<<<[->>>>>-<<<<<]>>>>>[<+>[-]]<-->]<+<<<[-<+>>>+<<]>>[-<<+>>]>>,]<.'"
]
},
- "execution_count": 198,
+ "execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 123,
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "with open('part1.clean.bf', 'w') as f:\n",
+ " for i, c in enumerate(''.join(cleanup(program))):\n",
+ " f.write('{:03} {}\\n'.format(i, c))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "([60, 60, 0, 15, 0], 152, 4)"
+ "260"
]
},
- "execution_count": 123,
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "open('part1.clean.bf', 'w').write(''.join(cleanup(program))+'\\n')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "([94, 94, 24, 0, 209, 0], 259, 4, [209])"
+ ]
+ },
+ "execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 124,
+ "execution_count": 13,
"metadata": {
"collapsed": true
},
},
{
"cell_type": "code",
- "execution_count": 125,
+ "execution_count": 14,
"metadata": {
"collapsed": true
},
},
{
"cell_type": "code",
- "execution_count": 126,
+ "execution_count": 15,
"metadata": {},
"outputs": [
{
"209"
]
},
- "execution_count": 126,
+ "execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 193,
+ "execution_count": 16,
"metadata": {
"scrolled": true
},
"name": "stdout",
"output_type": "stream",
"text": [
- "0 ([94, 94, 24, 0, 0, 0], 144, 5) \n",
- "-1 ([94, 94, 24, 0, 255, 0], 255, 5) v\n",
- "-2 ([94, 94, 24, 0, 254, 0], 255, 5) vv\n",
- "-3 ([94, 94, 24, 0, 253, 0], 255, 5) vvv\n",
- "-2 ([94, 94, 24, 0, 254, 0], 255, 5) vvv^\n",
- "-1 ([94, 94, 24, 0, 255, 0], 255, 5) vvv^^\n",
- "-2 ([94, 94, 24, 0, 254, 0], 255, 5) vvv^^v\n",
- "-1 ([94, 94, 24, 0, 255, 0], 255, 5) vvv^^v^\n",
- "-2 ([94, 94, 24, 0, 254, 0], 255, 5) vvv^^v^v\n",
- "-2 ([94, 94, 24, 0, 254, 0], 255, 5) vvv^^v^v=\n",
- "-3 ([94, 94, 24, 0, 253, 0], 255, 5) vvv^^v^v=v\n",
- "-4 ([94, 94, 24, 0, 252, 0], 255, 5) vvv^^v^v=vv\n",
- "-3 ([94, 94, 24, 0, 253, 0], 255, 5) vvv^^v^v=vv^\n",
- "-4 ([94, 94, 24, 0, 252, 0], 255, 5) vvv^^v^v=vv^v\n",
- "-3 ([94, 94, 24, 0, 253, 0], 255, 5) vvv^^v^v=vv^v^\n",
- "-2 ([94, 94, 24, 0, 254, 0], 255, 5) vvv^^v^v=vv^v^^\n",
- "-3 ([94, 94, 24, 0, 253, 0], 255, 5) vvv^^v^v=vv^v^^v\n",
- "-4 ([94, 94, 24, 0, 252, 0], 255, 5) vvv^^v^v=vv^v^^vv\n",
- "-5 ([94, 94, 24, 0, 251, 0], 255, 5) vvv^^v^v=vv^v^^vvv\n",
- "-6 ([94, 94, 24, 0, 250, 0], 255, 5) vvv^^v^v=vv^v^^vvvv\n",
- "-5 ([94, 94, 24, 0, 251, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^\n",
- "-4 ([94, 94, 24, 0, 252, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^\n",
- "-5 ([94, 94, 24, 0, 251, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v\n",
- "-5 ([94, 94, 24, 0, 251, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=\n",
- "-4 ([94, 94, 24, 0, 252, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^\n",
- "-4 ([94, 94, 24, 0, 252, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=\n",
- "-3 ([94, 94, 24, 0, 253, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^\n",
- "-2 ([94, 94, 24, 0, 254, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^\n",
- "-2 ([94, 94, 24, 0, 254, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=\n",
- "-1 ([94, 94, 24, 0, 255, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^\n",
- "0 ([94, 94, 24, 0, 0, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^\n",
- "1 ([94, 94, 24, 0, 1, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^\n",
- "1 ([94, 94, 24, 0, 1, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=\n",
- "2 ([94, 94, 24, 0, 2, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^\n",
- "3 ([94, 94, 24, 0, 3, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^\n",
- "4 ([94, 94, 24, 0, 4, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^\n",
- "3 ([94, 94, 24, 0, 3, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v\n",
- "3 ([94, 94, 24, 0, 3, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=\n",
- "4 ([94, 94, 24, 0, 4, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^\n",
- "5 ([94, 94, 24, 0, 5, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^\n",
- "6 ([94, 94, 24, 0, 6, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^\n",
- "6 ([94, 94, 24, 0, 6, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=\n",
- "7 ([94, 94, 24, 0, 7, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=^\n",
- "8 ([94, 94, 24, 0, 8, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=^^\n",
- "7 ([94, 94, 24, 0, 7, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=^^v\n",
- "8 ([94, 94, 24, 0, 8, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=^^v^\n",
- "9 ([94, 94, 24, 0, 9, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=^^v^^\n",
- "8 ([94, 94, 24, 0, 8, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=^^v^^v\n",
- "9 ([94, 94, 24, 0, 9, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=^^v^^v^\n",
- "8 ([94, 94, 24, 0, 8, 0], 255, 5) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=^^v^^v^v\n"
+ "0 ([94, 94, 24, 0, 0, 0], 259, 4, [0]) \n",
+ "-1 ([94, 94, 24, 0, 255, 0], 259, 4, [255]) v\n",
+ "-2 ([94, 94, 24, 0, 254, 0], 259, 4, [254]) vv\n",
+ "-3 ([94, 94, 24, 0, 253, 0], 259, 4, [253]) vvv\n",
+ "-2 ([94, 94, 24, 0, 254, 0], 259, 4, [254]) vvv^\n",
+ "-1 ([94, 94, 24, 0, 255, 0], 259, 4, [255]) vvv^^\n",
+ "-2 ([94, 94, 24, 0, 254, 0], 259, 4, [254]) vvv^^v\n",
+ "-1 ([94, 94, 24, 0, 255, 0], 259, 4, [255]) vvv^^v^\n",
+ "-2 ([94, 94, 24, 0, 254, 0], 259, 4, [254]) vvv^^v^v\n",
+ "-2 ([94, 94, 24, 0, 254, 0], 259, 4, [254]) vvv^^v^v=\n",
+ "-3 ([94, 94, 24, 0, 253, 0], 259, 4, [253]) vvv^^v^v=v\n",
+ "-4 ([94, 94, 24, 0, 252, 0], 259, 4, [252]) vvv^^v^v=vv\n",
+ "-3 ([94, 94, 24, 0, 253, 0], 259, 4, [253]) vvv^^v^v=vv^\n",
+ "-4 ([94, 94, 24, 0, 252, 0], 259, 4, [252]) vvv^^v^v=vv^v\n",
+ "-3 ([94, 94, 24, 0, 253, 0], 259, 4, [253]) vvv^^v^v=vv^v^\n",
+ "-2 ([94, 94, 24, 0, 254, 0], 259, 4, [254]) vvv^^v^v=vv^v^^\n",
+ "-3 ([94, 94, 24, 0, 253, 0], 259, 4, [253]) vvv^^v^v=vv^v^^v\n",
+ "-4 ([94, 94, 24, 0, 252, 0], 259, 4, [252]) vvv^^v^v=vv^v^^vv\n",
+ "-5 ([94, 94, 24, 0, 251, 0], 259, 4, [251]) vvv^^v^v=vv^v^^vvv\n",
+ "-6 ([94, 94, 24, 0, 250, 0], 259, 4, [250]) vvv^^v^v=vv^v^^vvvv\n",
+ "-5 ([94, 94, 24, 0, 251, 0], 259, 4, [251]) vvv^^v^v=vv^v^^vvvv^\n",
+ "-4 ([94, 94, 24, 0, 252, 0], 259, 4, [252]) vvv^^v^v=vv^v^^vvvv^^\n",
+ "-5 ([94, 94, 24, 0, 251, 0], 259, 4, [251]) vvv^^v^v=vv^v^^vvvv^^v\n",
+ "-5 ([94, 94, 24, 0, 251, 0], 259, 4, [251]) vvv^^v^v=vv^v^^vvvv^^v=\n",
+ "-4 ([94, 94, 24, 0, 252, 0], 259, 4, [252]) vvv^^v^v=vv^v^^vvvv^^v=^\n",
+ "-4 ([94, 94, 24, 0, 252, 0], 259, 4, [252]) vvv^^v^v=vv^v^^vvvv^^v=^=\n",
+ "-3 ([94, 94, 24, 0, 253, 0], 259, 4, [253]) vvv^^v^v=vv^v^^vvvv^^v=^=^\n",
+ "-2 ([94, 94, 24, 0, 254, 0], 259, 4, [254]) vvv^^v^v=vv^v^^vvvv^^v=^=^^\n",
+ "-2 ([94, 94, 24, 0, 254, 0], 259, 4, [254]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=\n",
+ "-1 ([94, 94, 24, 0, 255, 0], 259, 4, [255]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^\n",
+ "0 ([94, 94, 24, 0, 0, 0], 259, 4, [0]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^\n",
+ "1 ([94, 94, 24, 0, 1, 0], 259, 4, [1]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^\n",
+ "1 ([94, 94, 24, 0, 1, 0], 259, 4, [1]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=\n",
+ "2 ([94, 94, 24, 0, 2, 0], 259, 4, [2]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^\n",
+ "3 ([94, 94, 24, 0, 3, 0], 259, 4, [3]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^\n",
+ "4 ([94, 94, 24, 0, 4, 0], 259, 4, [4]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^\n",
+ "3 ([94, 94, 24, 0, 3, 0], 259, 4, [3]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v\n",
+ "3 ([94, 94, 24, 0, 3, 0], 259, 4, [3]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=\n",
+ "4 ([94, 94, 24, 0, 4, 0], 259, 4, [4]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^\n",
+ "5 ([94, 94, 24, 0, 5, 0], 259, 4, [5]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^\n",
+ "6 ([94, 94, 24, 0, 6, 0], 259, 4, [6]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^\n",
+ "6 ([94, 94, 24, 0, 6, 0], 259, 4, [6]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=\n",
+ "7 ([94, 94, 24, 0, 7, 0], 259, 4, [7]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=^\n",
+ "8 ([94, 94, 24, 0, 8, 0], 259, 4, [8]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=^^\n",
+ "7 ([94, 94, 24, 0, 7, 0], 259, 4, [7]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=^^v\n",
+ "8 ([94, 94, 24, 0, 8, 0], 259, 4, [8]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=^^v^\n",
+ "9 ([94, 94, 24, 0, 9, 0], 259, 4, [9]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=^^v^^\n",
+ "8 ([94, 94, 24, 0, 8, 0], 259, 4, [8]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=^^v^^v\n",
+ "9 ([94, 94, 24, 0, 9, 0], 259, 4, [9]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=^^v^^v^\n",
+ "8 ([94, 94, 24, 0, 8, 0], 259, 4, [8]) vvv^^v^v=vv^v^^vvvv^^v=^=^^=^^^=^^^v=^^^=^^v^^v^v\n"
]
}
],
},
{
"cell_type": "code",
- "execution_count": 194,
+ "execution_count": 17,
"metadata": {
"scrolled": true
},
{
"data": {
"text/plain": [
- "(209, ([94, 94, 24, 0, 209, 0], 255, 5))"
+ "(209, ([94, 94, 24, 0, 209, 0], 259, 4, [209]))"
]
},
- "execution_count": 194,
+ "execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 199,
+ "execution_count": 21,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
- "! bf -n part1.bf < 02-lifts.txt > part1.bf.out"
+ "! bf -n part1.clean.bf < 02-lifts.txt > part1.bf.out"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[209]"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "[int(b) for b in open('part1.bf.out', 'rb').read()]"
]
},
{