"cells": [
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 1,
"metadata": {
"collapsed": true
},
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 2,
"metadata": {
"collapsed": false
},
" {'mana': 101}]}]"
]
},
- "execution_count": 7,
+ "execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 153,
+ "execution_count": 3,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 154,
+ "execution_count": 4,
"metadata": {
"collapsed": true
},
},
{
"cell_type": "code",
- "execution_count": 155,
+ "execution_count": 5,
"metadata": {
"collapsed": false
},
" 'spent': 53}"
]
},
- "execution_count": 155,
+ "execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 156,
+ "execution_count": 6,
"metadata": {
"collapsed": false
},
" 'spent': 0}"
]
},
- "execution_count": 156,
+ "execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 157,
+ "execution_count": 7,
"metadata": {
"collapsed": false
},
" 'spent': 286}"
]
},
- "execution_count": 157,
+ "execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 97,
+ "execution_count": 37,
"metadata": {
- "collapsed": true
+ "collapsed": false
},
"outputs": [],
"source": [
" for status in state['ongoing']:\n",
" if s in status[0]:\n",
" add_this_spell = False\n",
+ " if spell['name'] == 'Magic missile' and state['cast'] and state['cast'][-1] == 'Drain':\n",
+ " add_this_spell = False\n",
" if add_this_spell:\n",
" valid_spells += [spell]\n",
" return valid_spells"
},
{
"cell_type": "code",
- "execution_count": 98,
+ "execution_count": 57,
"metadata": {
"collapsed": false
},
" {'mana': 101}]}]"
]
},
- "execution_count": 98,
+ "execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 158,
+ "execution_count": 58,
"metadata": {
"collapsed": false
},
" 'spent': 286}"
]
},
- "execution_count": 158,
+ "execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 159,
+ "execution_count": 59,
"metadata": {
"collapsed": false
},
" {'boss_hp': -2, 'cost': 73, 'name': 'Drain', 'pc_hp': 2}]"
]
},
- "execution_count": 159,
+ "execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 48,
+ "execution_count": 60,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[{'boss_hp': -2, 'cost': 73, 'name': 'Drain', 'pc_hp': 2}]"
+ ]
+ },
+ "execution_count": 60,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "s4 = cast_spell(spells[1], s3)\n",
+ "valid_spells(spells, s4)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 61,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[{'boss_hp': -4, 'cost': 53, 'name': 'Magic missile'},\n",
+ " {'boss_hp': -2, 'cost': 73, 'name': 'Drain', 'pc_hp': 2}]"
+ ]
+ },
+ "execution_count": 61,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "s4 = cast_spell(spells[0], s3)\n",
+ "valid_spells(spells, s4)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
"metadata": {
"collapsed": true
},
},
{
"cell_type": "code",
- "execution_count": 67,
+ "execution_count": 13,
"metadata": {
"collapsed": true
},
},
{
"cell_type": "code",
- "execution_count": 160,
+ "execution_count": 44,
"metadata": {
"collapsed": false
},
" 'spent': 286}"
]
},
- "execution_count": 160,
+ "execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 161,
+ "execution_count": 45,
"metadata": {
"collapsed": false
},
" 'spent': 173}"
]
},
- "execution_count": 161,
+ "execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 162,
+ "execution_count": 46,
"metadata": {
"collapsed": false
},
" 'spent': 226}"
]
},
- "execution_count": 162,
+ "execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 163,
+ "execution_count": 47,
"metadata": {
"collapsed": false
},
" 'spent': 229}"
]
},
- "execution_count": 163,
+ "execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 164,
+ "execution_count": 48,
"metadata": {
"collapsed": false
},
" 'spent': 342}"
]
},
- "execution_count": 164,
+ "execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 165,
+ "execution_count": 49,
"metadata": {
"collapsed": false
},
" 'spent': 415}"
]
},
- "execution_count": 165,
+ "execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 166,
+ "execution_count": 50,
"metadata": {
"collapsed": false
},
" 'spent': 588}"
]
},
- "execution_count": 166,
+ "execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 167,
+ "execution_count": 51,
"metadata": {
"collapsed": false
},
" 'spent': 641}"
]
},
- "execution_count": 167,
+ "execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 90,
+ "execution_count": 22,
"metadata": {
"collapsed": true
},
},
{
"cell_type": "code",
- "execution_count": 125,
+ "execution_count": 23,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 186,
+ "execution_count": 30,
"metadata": {
"collapsed": false
},
" 'spent': 1269}"
]
},
- "execution_count": 186,
+ "execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
"current_state"
]
},
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(1587, 2908)"
+ ]
+ },
+ "execution_count": 31,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(agenda), len(closed)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'armour': 0,\n",
+ " 'boss_damage': 9,\n",
+ " 'boss_hp': 0,\n",
+ " 'cast': ['Poison',\n",
+ " 'Recharge',\n",
+ " 'Shield',\n",
+ " 'Poison',\n",
+ " 'Drain',\n",
+ " 'Recharge',\n",
+ " 'Poison',\n",
+ " 'Magic missile',\n",
+ " 'Magic missile'],\n",
+ " 'mana': 241,\n",
+ " 'ongoing': [[{'boss_hp': -3}, {'boss_hp': -3}]],\n",
+ " 'pc_hp': 1,\n",
+ " 'spent': 1269}"
+ ]
+ },
+ "execution_count": 65,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "agenda = [initial_state]\n",
+ "closed = []\n",
+ "while agenda:\n",
+ " current_state = agenda[0]\n",
+ " new_states = []\n",
+ " # print(current_state)\n",
+ " if victory(current_state):\n",
+ " # return current_state\n",
+ " break\n",
+ " for spell in valid_spells(spells, current_state):\n",
+ " s2 = cast_spell(spell, current_state)\n",
+ " if victory(s2):\n",
+ " new_states += [s2]\n",
+ " else:\n",
+ " s3 = boss_turn(s2)\n",
+ " if victory(s3):\n",
+ " new_states += [s3]\n",
+ " if not finished(s3):\n",
+ " new_states += [apply_ongoing(s3)]\n",
+ " # print(new_states)\n",
+ " states_to_add = [s for s in new_states \n",
+ " if len(s['cast']) <= 50]\n",
+ " agenda = sorted(states_to_add + agenda[1:], key=lambda s: s['spent'])\n",
+ " # agenda = new_states + agenda[1:]\n",
+ "current_state"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 66,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(165616, 0)"
+ ]
+ },
+ "execution_count": 66,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(agenda), len(closed)"
+ ]
+ },
{
"cell_type": "markdown",
"metadata": {},
},
{
"cell_type": "code",
- "execution_count": 182,
+ "execution_count": 25,
"metadata": {
"collapsed": true
},
},
{
"cell_type": "code",
- "execution_count": 185,
+ "execution_count": 32,
"metadata": {
"collapsed": false
},
" 'spent': 1309}"
]
},
- "execution_count": 185,
+ "execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
"current_state"
]
},
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(872, 2354)"
+ ]
+ },
+ "execution_count": 33,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(agenda), len(closed)"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,