Skip to content

Instantly share code, notes, and snippets.

@krono
Created November 10, 2015 19:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save krono/b4320295125b29c4e804 to your computer and use it in GitHub Desktop.
Save krono/b4320295125b29c4e804 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import itertools\n",
"class G: pass\n",
"class B: pass\n",
"class I: pass\n",
"class F: pass\n",
"\n",
"SPECS = [G, I, B, F]"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"MAX=4"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"all = []\n",
"for i in range(MAX):\n",
" for comb in itertools.combinations_with_replacement(SPECS, i+1):\n",
" all.append((\"\".join(map(lambda x:x.__name__, comb)), comb))\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[('G', (<class __main__.G at 0x108c80a78>,)),\n",
" ('I', (<class __main__.I at 0x108c80b48>,)),\n",
" ('B', (<class __main__.B at 0x108c80ae0>,)),\n",
" ('F', (<class __main__.F at 0x108c80bb0>,)),\n",
" ('GG',\n",
" (<class __main__.G at 0x108c80a78>, <class __main__.G at 0x108c80a78>)),\n",
" ('GI',\n",
" (<class __main__.G at 0x108c80a78>, <class __main__.I at 0x108c80b48>)),\n",
" ('GB',\n",
" (<class __main__.G at 0x108c80a78>, <class __main__.B at 0x108c80ae0>)),\n",
" ('GF',\n",
" (<class __main__.G at 0x108c80a78>, <class __main__.F at 0x108c80bb0>)),\n",
" ('II',\n",
" (<class __main__.I at 0x108c80b48>, <class __main__.I at 0x108c80b48>)),\n",
" ('IB',\n",
" (<class __main__.I at 0x108c80b48>, <class __main__.B at 0x108c80ae0>)),\n",
" ('IF',\n",
" (<class __main__.I at 0x108c80b48>, <class __main__.F at 0x108c80bb0>)),\n",
" ('BB',\n",
" (<class __main__.B at 0x108c80ae0>, <class __main__.B at 0x108c80ae0>)),\n",
" ('BF',\n",
" (<class __main__.B at 0x108c80ae0>, <class __main__.F at 0x108c80bb0>)),\n",
" ('FF',\n",
" (<class __main__.F at 0x108c80bb0>, <class __main__.F at 0x108c80bb0>)),\n",
" ('GGG',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>)),\n",
" ('GGI',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.I at 0x108c80b48>)),\n",
" ('GGB',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.B at 0x108c80ae0>)),\n",
" ('GGF',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('GII',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>)),\n",
" ('GIB',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.B at 0x108c80ae0>)),\n",
" ('GIF',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('GBB',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>)),\n",
" ('GBF',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('GFF',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('III',\n",
" (<class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>)),\n",
" ('IIB',\n",
" (<class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.B at 0x108c80ae0>)),\n",
" ('IIF',\n",
" (<class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('IBB',\n",
" (<class __main__.I at 0x108c80b48>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>)),\n",
" ('IBF',\n",
" (<class __main__.I at 0x108c80b48>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('IFF',\n",
" (<class __main__.I at 0x108c80b48>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('BBB',\n",
" (<class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>)),\n",
" ('BBF',\n",
" (<class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('BFF',\n",
" (<class __main__.B at 0x108c80ae0>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('FFF',\n",
" (<class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('GGGG',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>)),\n",
" ('GGGI',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.I at 0x108c80b48>)),\n",
" ('GGGB',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.B at 0x108c80ae0>)),\n",
" ('GGGF',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('GGII',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>)),\n",
" ('GGIB',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.B at 0x108c80ae0>)),\n",
" ('GGIF',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('GGBB',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>)),\n",
" ('GGBF',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('GGFF',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.G at 0x108c80a78>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('GIII',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>)),\n",
" ('GIIB',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.B at 0x108c80ae0>)),\n",
" ('GIIF',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('GIBB',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>)),\n",
" ('GIBF',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('GIFF',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('GBBB',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>)),\n",
" ('GBBF',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('GBFF',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('GFFF',\n",
" (<class __main__.G at 0x108c80a78>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('IIII',\n",
" (<class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>)),\n",
" ('IIIB',\n",
" (<class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.B at 0x108c80ae0>)),\n",
" ('IIIF',\n",
" (<class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('IIBB',\n",
" (<class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>)),\n",
" ('IIBF',\n",
" (<class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('IIFF',\n",
" (<class __main__.I at 0x108c80b48>,\n",
" <class __main__.I at 0x108c80b48>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('IBBB',\n",
" (<class __main__.I at 0x108c80b48>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>)),\n",
" ('IBBF',\n",
" (<class __main__.I at 0x108c80b48>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('IBFF',\n",
" (<class __main__.I at 0x108c80b48>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('IFFF',\n",
" (<class __main__.I at 0x108c80b48>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('BBBB',\n",
" (<class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>)),\n",
" ('BBBF',\n",
" (<class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('BBFF',\n",
" (<class __main__.B at 0x108c80ae0>,\n",
" <class __main__.B at 0x108c80ae0>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('BFFF',\n",
" (<class __main__.B at 0x108c80ae0>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>)),\n",
" ('FFFF',\n",
" (<class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>,\n",
" <class __main__.F at 0x108c80bb0>))]"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.5"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment