Skip to content

Instantly share code, notes, and snippets.

@pomo-mondreganto
Last active February 19, 2020 21:02
Show Gist options
  • Save pomo-mondreganto/0f9d84ec7c3c1d4094b5a78d35a18ece to your computer and use it in GitHub Desktop.
Save pomo-mondreganto/0f9d84ec7c3c1d4094b5a78d35a18ece to your computer and use it in GitHub Desktop.
Matan BHW digit generator
#!/usr/bin/env python3
import lzma
import base64
import urllib.request
pi = lzma.decompress(base64.b64decode(b'/Td6WFoAAATm1rRGAgAhARYAAAB0L+Wj4E4gInhdABmMQtymKEbcBkAeJndQO9IkCbaE1Yh3QvtC83uVzG0DEO2f9PVOiNCQuES+3nu/11KgoSzoxHkIBOa4KGJDzUY1AfPVevwyx6ZjytfsuUxKINzM2oqx/TnkvS5waFcrOU3TVDcR+qeykOF5LN9yb7KLuWVMKW/9xEhtR77BHpUPfCTKz9O+dS9XkdWSmIKXvWYL7EoxWaM4J3mXGi4civuOV/d9G+/lMpPc20soGcm7A3/SgUT+cdtSkQNchxRR1Y8lNPa2gz18+REV5dk0v84YNIj6VZre7GKgJFXxFckc3+p4u5td23l+I5hKT0jxRLSECki3wF6l58aElpZmt3YELyq1dJplpxAFPcElXN7eyNQVbBYH9NzGYfcQDEET40DpxFWGZB2mEHzJsdffQ0YEjiWzym9Vg8ApaDtZVE7phSbBFCwCFH0BrTzGaA9hP8qXCq7H/WabjzeEjgSE7M0iqIQXsrcM58l6S4ByEEAolUqHQYbt0G9iV5P8G9zXDZnQyarSCYXdT3XprS8laqFyz9IMAGnb4A5vqemkBqEBr3mdCMYV1XGgyDYZfVSA+lZSLkbaEltQ9FmB3V4HcuVX210HM2wRCdGE73KUs7PEZpoBb5IG7DXGmDiKAJZk3cc+B6RhNlA2q0V3ZHw43XtTotGTxnAAaWuXV8ct/PBYuS/J1NdKPlnTxiZn97mryzH/66sq42otHsPazcQLSoLY6Ycwx86N5Vfy72T/w4niFUJ/0pxd4nUF7hki2a6aY2ftSV9Ai8BsjkNMbovvrbHSwACRl+2MMIZnoHn1pZamWdlKD4WxTMRD23MgFl2oLpVKpvfZxCl8TBaqLs6F4C0naX1Lj/k8HEIo14SiZ8OVtqy4bfSdQ039er+ITdaeIymlmW6iVrtio6D6HZBgQ+Wf/cu1nu8qIMVy9lDIEehfUgEZeOBrwFt6nf0s7jlBFENtNIvqDVGMRu2rzg3HSUAE2m+0mN8Ztdh0vvAWAONHow0SL0N2E0mFRv3SElezkQoBzApIab4jM3HEVmLbM46qXz+4+9IngOx+PoOqaatdqqse5ax7YvCh7sisw7oIODoe285jEKOIIz/1GvACpBRmREOyUzAmmpfCm1q9SbOOZrCDfjTJlEoX5LO985UdaIDlYJtywtdUPesdhVwXjgWRqEtzzcZbkotW1VPfSE4nuwktaouH3MU9bDeiRo3M8+gIArcOJltcZli+wGhvpZ/25lNSPhOg5CI4Ed6fhbUnFtLJi3gm0LduXMzpHSsXPzEkeS2jzkdfbTByJiKMA9XNISyW9Qw3Con2uBh0jGW6PeM2FE8VlZPe5ESr7WLvkXE06WcgTkZMTeOPh06WDT5TPdAKqHM62XS8JhzX2aOORfXHN1ks5MsA2kh/cH7kQURoNMOe3d8FJuaG+89kt15Pgya1/uzofmnA3B57vIvP0JF3v3Vi5nRP+LyK8gGRFcPfU3nKx054kty6NnZ1vIxGvaoFMYWAdfTpLCPhh43j8Mz+kY1tfpNvTLMBy+VzZhQy5ZTOvz0nN+caMTN2UxtTqhN0Aa93wzLvN4aEghNK/GmYrST2deJOOjobWgo5uHTz2nRgnywu3u00GFQXXfdDJl2Wlm0/1M/TG0CIcrh9kEabt3o+iWoJzxXMs17PIPs6JVVKcYSQAiqjrbnvKOcqv1BbIOL+yYejvikcnKI0ZVOgPyHpfhx7Ev5turKdGSLQvPHX1tZjYF9SWFsgsVLmYnEQ1h7/IVBhR3msLou/pfl4+OzsKU7rguTNY2UO/KgZmiIwXk4cPh2EjCdA6Ols501jft23SUhOGOiSwNnl2ltrXY8cgEBkWD+Ad24ilZdj6yO0pVDqKBDCtKTElk8D6Zp1zHB3K4y+NxBe5fVJC6sjIfjktifISYXe9wEI5WUnE7LAy1os1AqP1UXZwRFbbkssnZKq0AwRcP5IiI1/weuFgrJ8E78s4mqSlgCQQ4QaxkeFBH44EWs8p6h0hdhFawvuqFv+gZofQqKTYBfBYbf8paIMm0CDORIVKP6+KQAW0ArooF19HgR6zhX57xNO6/ibJS90/QGfgUkSRn28iUoGItpkHd5/PkliskCceOOA3UMbQ9Wn3CBug1RGSBMS4X62ZigigcCtDMvdf2ycyKHEQFuuKwUWXFiBDwWK8L5uUZAW8I2sGXJasFkStWuvP5R+/gwaosPQaonLt9oYAhTsN0HgZrkOafFAd/hd+pOFT8QqlLFXAGCfNr6D5yLJTVFWpTCQoQz7Umh0DOdu3mLbL7cW0/d5ncBjBcTYpoX6V21S5K91fe5GjjFNjhFv0iL2ltadSutQVObHZDpX+4GqtAUz/SRM+SULksxeZ7RPQZsnNoK6Sg4ZezggUi7KhfLdvGuvRRCg+OnYuQVTQjr3qssy1nte161n8y15dMy9mrqMpUHQg019Y06Ieb4BRAOTfh4hmAbuURYKLsQ8wv77tr0nyy12sWIN8OSM1kZYSR0oskWpPPNGMxGI7CX4KvK+iIHEUhk9Pq7jYcyCeeSpVdIaTpos6GITCT4FQxqAkibdVa+QOuLLRbdGGEvP8WCyZ94nLfRQf1eJZGs8POLRJ6rNJC/AgB06oevsA9DFXhhwTpkDWz6oYkr7g6KbSgpvqYtv2PYQEaYvTQ1txuERDrkjHuo9UUedXdw2axgAUwMqWyQZ24Xx2Z4Q8UL9lXs7O3qN/dSv+Fw5JEz9DyfGt6vRYCsdXhWIzeCJSF7bu9EN7MhZi5t1NIlzjru43druZqbH7tlsCseh9QkuzAndCPTLkiO1zNeaifhdJh1Cx9mZE0Sat8gZ5/q7G7zMXsyv8JkaPrwcM5DhXV9XM0bFkAWzXqG5yi4hcfCJVAnxNHSxxB1WI9EBZZ+u0M+rUjAWmxjoemcyyiBvS+wtMyrhvjeBCnY3rFQ2Ew7S595r45e9445kjRIM7uExxJPNiZ0WyiATsTgIayEJffrLV4Lhtqw2oSLbXCMd+mgohNKsjIS1keB5WzLI3SpZz/DbqGyier7x4Lg4rf0XgcN07ANmjhkAntIcL55S7g5TjhoKyoBNbN5bV6UWjLKdE9qY+naQnHBt+80tQadJcuFHlLKOgeJsqeTIhLyTYZtnPqHYHXL7mA1TGsf+iYNoATVMIL8tLSSOE535/+a5AfGW+g593wkesfUFYWL5ExwrWl/qWGrx3w5e1DtkavppiTkn9pAGlH4GySZ8ZvN+ZSLBbgueLa2Q9UtQh+uBQFSTqABcnM59LBhcAXqu0rPDyrHxoZLpt3JKqUldv8uW127iiw62juRnYpG0IqHGEcJmsDb/8lczckn0ENUoC/oc2ETn5SXqRJx08NLysnzAaNrEkhjNVAtBIDkTCIFJcdXJ2j9b6TmVhefRmtLWzJxzCnTUkBk/BF9aXmzFPMxL+72Wbcdziw1pjpA8GUfJeYJH6wZqVP3KhWe4hb0FKgnav09AeBg+1jY+LHI9zCotE/2FnUnwbd2z1+7HaLbPegarsu+mTkjt7cQ3BCtc+4j0h6lQdHOEs6e6K+4fWHvPxEXS3xO8wf2hFskEwok34+pa6VSz3LWH1f3A0FkkbZZQg8elBVmWdtI6dbbCKOd2kMVb1S3a9lKDoF8Gt0B3uVZrQRNmLC/Mr5mf+Pzh3H0kQmFN4+Sn1kAXI3FX3+lI6Gh81rU7sR1KUQ7L7hkfVfc6lrUJTzZxAuq40VoVyOzMVRjj4WGXwdW2R4Tn+FCr0MnMsqYmSDF4OMHpRRmL4ZYaZ31RHR3kw8rteYNfBg7HWeQgjnjlftUyVL3Q1sFRPHWdCHLwgUD3+YRdw4q6CDlMus58N5nzWpyZKLqv3/yVFF9Si0p+Z+A0BBmqx7marLpBX2/yCCE1OELniF8sXrTXyc1omybhJhk6bh+M88qDjaVfKBlUHa/AdWUmTIX4sC+8M07O4UbOzDnVdi6BrzV78VUf6ZtjrtMXxSxknqNztEDT4aGiWyGsZiZeBv7vT8uS5krGkk98Qvm/47IvOLS8yZgsfuyfRtlFlZIzKGtz+/yxWzmw6yCmfIEoEO8uR5xBUdPj5AHlwGODX7j2QI7EDlm6HYrSrhRa4jbMCR7Mn+12KlrUFihlWZ4EzkA0d5ODn+/Z4uZNpB29U+wsMipKD3PiUynw4g2HXg/jUy6RxQfos+oX57rBHfC2c3rx5iLTEx3D+ZgBV4Aoxr9azFBNlvysZuA2rOQj5+IMqyDd8Q/ZhviQ8wDk6QZAxSnEVez1P3SX8BB1uLaO0RVq8QLruiWj30fOfgwC3XdKm9tUKy+u7W/Dh0S/62ahe5eydVv0CZsrfnawd0kshSXv4xq9yZdaGgUEgrQYHAqCHosdhC2/ESCTtKEnBewBWROVZQG7TnwnNs4yz6ejxjB75In2EeukFXKBRgMhdhToDzzseaiK+Go8cFgjrlO9Z8Q7/GRbSRegMlYO90QEX9t5/OlwyP5URCs0nX0g4nzgICh1anQIDkrUXzA2AtYZE1jdODu/RqArn8do/3lY2PEI16GXit0yGXMTjW6clkyCueg09Pj7V6OXta6CKsHL9XugS3UOKtVdnIVDU0ey21TbO92xB47YdVkqjuFPJRHQBA0vkIkWiNaEnsuD5xiT+rPCF0qy4OSLMoXY7aRrkFubs0r4b0ILF4VQ/Vuf708vFTpqaBAerE5gkO7vSLF7bGBC/m3n8fzdzVrmMcUXLBWbFyk0vPzHMEmH6RxawQjkfaClDSLEyhnaSx22A2L9B49gKHX+F2HLOMELNC/GgDKlTiJrfMbqlTeDAsenHZMbTpNrO4DgcjbTzouMYUD4D74q0T9by3ZP5uuJ4eYNy+87hWpRUmQ1TrBKpESqFxSO12VGxA4xiOybbsLq0vgZFBZ+ukDEXIyy4w2f4mdmNIUcnVrgGAU5xHdLK5uMXMjcbAf08+HbkYfbFXBy8RBHvMR2pYQXR+dR6+j4CtFRy2qJe3AYKAGyneuCP588oQTnjtSY/qnPvBGi+i8JXR+neSCI3nptXxvIQ3rN094ujpSFUlN9kFl3gsJyadoVy1+Sm+dazvXSqSCqwDfw4n8VoGdcovcmhOyAsR8nAxqoBWuPq1XCfvGnFEhBgA74O8EeuprToy7WcBILgFl5/u8K1zUjIBnYmv3RLY5uC+qQYGXRlUqPYksGMpY2AEW/UgmyEJPMdkhvTEUqa0ZphhFI2EbIFm45gz8UzGYiwQSPGqhYpGl/Wx1UwOMCkzHl3H4gnDBZmZWGjVRubyqnhdQAWImM840M/x6XxOkVSr+R0sb2P5C8U40fxq+4ZXWQfwM17yC3aaCUFWcVRu1pB6EVprL4/Uh/j6RuC5GRZ+20zCbpunQO0DD/4K2x/hADWQD6JI5vaj1FPCXFcIP6jMlKwnf7DB77va6sh0g1vvDnSqpzp3mgU5U3a+12EJRDZk8nevQ6qAOnD+QBOrAk8I59FXIiFU9NBgnbS2cbWZlR/mm5M01NXCJ1ehcJoJ4/Wv0wCZEAf7OFExCNYaty60izFj92bb7LLJFGnY6z1z9eXN3BddiMg6k22FUP/AtjGLaI0WWiGLrEEbdvB14ucxu18CNfY+tbTtQ49ZPG2mt5niIjD39gyA2Gx2jL9s5T23YH6FxWhkBU59taQLuHOXF5t39nV2asp7R7x5wBsCiOuVCf8qxWSuqLyuph4O86df591RuCsY5KzLwerps8BQFjjYsFK688HD1O9Md3XVx9VvDFCTc6TdQSfoBSkRX/IyzIEd0ds91IC4JzxPC+yIVf53i3qdzd0EhyLpbRgomZJDAopZnLljF4xvKdPu/pM0o2l6e07UosY8nddyc8Tn6MtgaT8E1gywrzIRGcSnJvwZZTlcIZOI10XbISyAfDt+ZDYugNkpR5rISQVJTHl9AYhS5DBhUAhRlBwahGZlK3Ujz406vRC2YeTaoKV1pvTVf7GzhqLeLW7sgBGyhd8iBic96iDTxetdIglSj0wlv9G1syWt7r+zf6LKfMvmHKK0eXwpxew9+fRnetWpv2fwDy4PiNVD5PWD1T7SfI7vJYEpQl3XRsIUp3QXLJmoBkAvx2M1lASwAOYL7dBmJRTZcs51S4JnQYibqE+dMfkn0VAEz3Sz5dEdLZSWazd+fHXAc9URM5vxC805SHYLEVzruaS31p+ETXc4iXHthaXIysToyEjJWC+QnakBHm/lv4544QVx8Es937/zuI5DmORn1W5++S0792RZCVtRHOD4pKA1HJAVHGJtgY+pyAUWFboSJ0hHBXidP/IiVtnofwQmo92ziTwgeG6eSFWkQQlll2D0ltWBC1nxFpyg8aiMLQCy1fZ8iOfkKdWShtm+lr84nOAZNWMX9JD9pDSOzEqoCqJLJudpVIyPqz2nXQn9YzH/K5L8m101V38JOt3cdfpH0FNc440wC9aTXpHW/sUXP7AoTnzEmmB33xcZ8ilOhyrv4kfl+bQAsNRRliQpF4lnwgzaszBDB9gg0yqVtiCPhcM9lDxV56TjlUdMGwKIvnPAUvyHETVnFfbMKhsTPmyQ+im6s1GcjbkLp3NKyP00Zvid4rMuz652o9haviNtJvbVfltd5AjfosoD7/RnYzI1Rz/PW3cFzxl/rCem/D68Zm4rhx9ZB/jyevczeMNueX3F+9yhcG7SGcx9t5ZK/T7gxZ8wVJ4pxTn9LAy1/XAs8qLCJN4P0ahgKZGTnFxmVy1UKv40BEeMKja/sBLbft5MPeb0ooukzuZTFIrkx5+XnvAWpQRzJbESUbJAsK3YuZkxRqRGTSYrIY8BgBtcRwXx8dvZasjgkPk3Qh/Qmpfq8YKl4ADSTHRAp42YEjhqQHiCEg0i7bGqLV9smkeL639CDoNi+6h3rHEqOSRFWsk8Xy4VIVPfr/W2THImKoIlolfHybEAcv91cRfcbEiO8of0EBzmqqAK6EryWNihk1mFLJ6Me3rUKmTpujn4Yw72KE+RUJ0sINYhZY3wG4xkiXusX0dk9rnO5G1ytUJiARbHhzubCRNF8eFdA4VjYWc0gSyJd1u4UokZOlTb0OSc94WGZJ1p2VaN0P38I+wonFMwH/qgRzX/JPxzRHETVBMqOId0kcvmWxYm8oNDgsM7Z+OIfaA5nh1AkStzax5ovBKsnqe0vqBgqBSj65lBaVcIJfblSK31vRVisOVMHakPYy1pvMUA7VTDoWcBciRnU43foJNHFuogs3BBNBPh84XiRjkTLhQLe7GRs+eF6Gx/+fUCxnkB4rkwemwZNchuPy1yjHJaIrgTJ0OULzMr+/NwwOhfHfN816/Ag8zU/MkUStRwAW+BvC1oxkbE+4/cQ9Ax23A7+QTRVRERFa/l475HytQSlU/ihw5qKlCS/5LmM0lcguM+rXFP0t8PhQ6M8fqonX6WCoQpS/r8nxG5rB7e+BFTG2MUzsEtcyagHrD/3CT5f8GbLyUSJ5+2xj5HzTAkR7eCT1Rccfja3nbuTElUYKaS2yOG6CRLWSV3AyFO9OYdKmSBIaELxv42N+RCuwbmIpHs1CtX/Cubg1zN4u51KTzlk59AhUoaq3NQZHPmLpuTbRK9ViOC9PfSHD7zheW3el4jiSm9ybMDYuoEP6ipt0B32llvLUvaP9ey8b7WZSNo8cD/NelwEgLwoE1UYq/YENLBtq5THYI0GgBGKsv5HjTaljqPCrO7R4x5Cvla9507xragKYkYphAnEQI6rAaCtNxhLouE2Y1fggreLkNqnBQmblNtQ5w3PXq5Id2YW59KId57tYK8jnLgY3WBBOSI2mBfYTbvwujUlUltFiSl7PVZMrU0CXuH7HktU3ahW+JN55Pzx2SavsHkBZcfepOWMgHetlcngicYMxZudDTHD83Hk8nv8z8VnIR1HwfeU6ariRmpnG9Y0Br2L29Ln66gtZ3KrwGGJ+BXeQiAt+TOWJKzjo/ceuQQUQywLEF3h4LWNWMYghAH4SKOGiXXU/6MN0IrhifszLpUqmAx+6wxtG9xOKt6H0Pr+NZ+63zpkjxvKhR1dTr3ei0RUyKjrDjjFmrap6hXl3fGqggmayFHGFVdWeSgjj1s92P+q8ntad3WyfOHihnljRyTaOMWe5XlJFXqFgz6ZEVONf7ZVcrtivNGG9Zqeq9pcimanspQx5Oc3X8TduhCqkos2tpU6TS0jK9yhax5RrfqueXV0/KHZtsZFkwu9eo3o2bFNECwio6AHakuafajceOwfpBtaDywFPFvJUd/J7mjMjs+2nxJ1o8FY3iH4nqOlkLy1/ByP3zvR08oFbZ7PBQWd2msNF3pn4Xbz9GFROqTxYkoBplJOAM+xnjZpgKYvK3GhYZ6pYf2GCmqEquDTmHW4ppUTuPNB0oXKehK+6DZ4HTteoFyhYn2Ng0sZccBwuJKqZlIRaKWX/u6ZnDdT54FfgpHEIp2frKQ65/N3+sGu4V5f3q/udiFXq1LQb7eqhiloD0jKIq2zZCyIiQMQkkUn3gFdBbzE24KMsd6p+mnhOiNllNMy1lLTGlvAkrvi8AvKRrJ7NABEhK6QMirn9QdO6mQAxGXfBybODTiW3qWhbfYRuljbpjFX60KqWEKsmH1T7bAILIrgMQydYwdD895oMEIMr2xqn7YlxY6WVWvpVpG8X2s/Gi6lCZrHxFYnQBjJd663mRdI0r8GBW43MEoqUmbDPG68m5rN7H6JPFNFOKecFAXUf/1GTT8cyswQ8nPkRQiEG7xTtBPDxX+pvS9SR3WLKG9uUk5D9qYjKtKQ+iYKa+8SmWz51YDHREY7UsOGCDtfanSOJENADbag5ewOdu5QJ27KPwJzwOSko2vVPC8230zzCu0BVdjMBXKHyshEvMUfSyz4SjfegQH4HZvVG3wyzkbNIRvWacRj4kYI9E+OYizKnIOwTLvt3nJr5CAdHMR1NE79T7+p6sKajqqTFSIrNHQysIsws9AhO/8FoFSS4W7B2IR55Ep5jt44EpgxFYydT9TrI/edPsawSbUtymYzNjallYcZ57uxveHfhnguHOYY44j/Tm88bp/79rMmqgCDJxT904T4ivuBTIyfHBhPlNMj8nK81HDnrj6soz8IWi+4TKFxMi/510nPQZvA0bPEomkMteEwUoIyS2crcBiaOKG4fIbRl7dGyAD3Wh1WaV1nbL8WmdfZOeOPRrdYstpJSHhFyQ1hoNJq0KTv+93M6Jd/U3tPVJv3Cs+l4BTSTjFHGKhM95pcCAmxWJAk/eDJoC7l3LfwwQznbVLbZCgF1fnoRiZ5JJzNigm1YJXbNnsxZk8hEWDc+N+DgRxa6oFBT/AVuX7gB0XgD+5aYAExTHBDoyviuzyc0Hu/2y1emyUmqjh9RAAIaCwn9dfL+A4rDySpavTP61Hsdk3/bH4E6wJT020C2dbeYN/4tl2VE+Hese0Bnrw3YVTKT3uh/21ZvZckdLhacpsXo6rN34rfaTHLIk520oPaJwD9UfxixDrtBDtsYovHH0mz9Pe71bHt0RHdrUIeSjFDFGwG3puV8cjgmyioIpQCscTp5X1NLOX4h4MNJ8sMi9qKH635QJ3XSu1TUMKvcbJ6QKx9nKi64/YoUesxpC9DjrUzkYKdmysR41FQo23cYV0Bs4IX8n4ow4z4gUExXKCAmx1anfQEHWiKBL0Ejtn0k/2AwQp7aH95waOKoIvEH/ctgKi02o1eMxNVfa7Qnzyy5dE6te8XLw9AuFFH0tDLNY700B9tpkscUBuzCGOx+wZzOgSW+O/ZpDa70WtHzhEiK+l7x75yIlmdrf8CBkTngpTLo1jQrgQ7QD0Xl8j5Nz7ADOGqYmGt/jMCF9dhvOLyH1QcRi3EkBE8PjWx0Y8LKkYQI3LeDh3nCZV5L9whWQJdFHZPQUDlGbIb1k2tzJ6cRhnRtFgGUpUVhJZqsXy6Jd2VASoCxqsQetvAWFSFMwjvpzbbl8ikNCMIASsWqkwng64GakDz2mPEgDlASqxH6byXjab2curZHyPZRMMWYExi9a/W/rrMH/v6q9Ba5Ex9qhUKDhUOQ0qOJw2Z7dlxkx+hUe3V/2nB8IzFPTrbyhYCYAsD1eAFQI+A9miJHYHE1q2tSf1FlenzSSz/PR6PzKQ8Ug0ipDy1dEecBlDHCVivTVhj3Rts3aO4QYZybG0s8FDNIQzX1WW2Lda7ouua0DsufOP6NQvOHxFng9cxvDluNu7k86iOYGVebdh9dy3SGcfvlabTS7hwJxO6gRq8w+tX+qojM96lOfpN0mzHDMN33qqy69rUO6z1sj23Id+w+964bfOor/6EY98jibIFQegT3qe3kqghq980bO4po6Q1q5VqazjlcdUTM/ZPzAnz8tlbSrrLTzknp8wQVYoIxzCAEa3abjRrYRyoADsVVyr4dH69W+P5DTufo1Sn9PxsgJF19e3uV12QFZD+VLp3a0QxeIK6qS0u3e5f+vAtEYvnDl9Md9YoW2xvjpoGthxFmlE2NGv2LDFj9ICB9Etc5U2iUjJLxS3ztbDRwsqK8X/aU+t2amvmMamJVmMaZIYJfambBsQvyUztGXodMDPBveTUbdaSl2qdl3l+Gne9v/EPkdKG+LMkFSLjw0+sx6H0fYbRjdO7SEdW/xP9dzzaGmCXO2mQVUJsuC7apIkyxlGLl3qFlbEuPVrIu1poWWUm8X39ODHNGMbjKVAMOqsIHUonTx9m9WbsaT/i3jx0LpUrHIcMFgAI7Pe99dEio2gJjmYWU4LMV3dpfSh5L8AzjiZMwsTkvvA0I11sr+ObUYiBU9kVX9rFHu6KwOYsj7e8bL4URZv1bTEhmJOL2g+5DQAMb1HnUlshvB9UCGTkghuzGOH4K4XzrfVzkOcA9SlpbofOK9lnPhN2bHIgP5604JwWDF89TkTQSfj7jVBamI4HikyqIvuWOAvBpMmy/W+wL+ayNq2gAQXWnGD+dIOoZyYeTT+vbQNJrPGxf7/GGztyj22Ql8mrRWtSv0xIN9jE6ftW82s+cy/jB6wBMA5jU2Z62/TVu+sDAS5v82en6BPzfbgjxS5g8yMT2wOvB+NoxuQrY7Dehglsf96gtDkKFpeP1g95oMxFUUiUWXxDBOimfJC85RYJWA/GvEaFHSd+g4L84nTrypd2okZaD8yFXFiebgInOmQCu2JrjotvADsS5TamOPW80UXH7SuXNeFucn7Q1621oXxssIUlV26gl3MV3s2/kr4Q9mpgFmnYretCeqPYPMu0NOdLQ80I1rbUdt1600WRCV+A76+8pMtenvIqXhVGLknH8m+NbdDldivebv53JBuPMsPLwQsbPj9SgpMmLHAY+Rb89aNOoLmyl+pzI86EO8u5VJWYY4rmTKKYarH0CA4cO3TWcu6SYu6JwOcgxvhmUjPr5FkbrBcF+ZHKetE6pMiIg0XWVQYGR6Q1dT0N7IRVbA2tOrIV+cH4Jw/DZtmIZvMpVh/hRyZYtz6/2CUmvUMCmQbVAnHnSEzxgTmVMyYGmIxNn472if9oXzHIu3wv5lLm69nN6MZuhs6puagWYB6fe7Xs/8shn8w+Zgu1KFGLbKhsUoEPaDtjLuAxDLhwpV/IPLSUvMOoVq51ygQg1HgNa3mdPzv8fvHqiWVr7gWAzLsNQb0won550HQVZenKUbGoQ4anA7VUeVj8Tyl8P1nx7OTB/OEl5XFE8tspmVFRTI7gfI6A8de8p0VM6EkfBpqIjTTvYSDs50gyavbl+svSVqRa2Ng2Kb9liMQo94ftSqMc539k4qVSbHnGGuSRi6hIAAr+ccsN4kQ8AAZRFoZwBAARZdM2xxGf7AgAAAAAEWVo=')).decode()
gids = {
183: 0,
185: 1570912127,
186: 1802835986,
187: 1127112375,
188: 847874389,
}
def fetch_table(gid=0):
url = 'https://docs.google.com/spreadsheets/u/1/d/1vQ44u_z_PhuBA8d4cNX-eTAPKG5HiVsQi4lHpoSuUWY/export?format=csv&id=1vQ44u_z_PhuBA8d4cNX-eTAPKG5HiVsQi4lHpoSuUWY&gid=' + str(gid)
with urllib.request.urlopen(url, timeout=2) as response:
csv = response.read().decode('utf-8')
surnames = list(map(lambda x: x.split(',')[1].split(' ')[0], csv.split('\n')[1:]))
if '' in surnames:
surnames = surnames[:surnames.index('')]
return surnames
group = int(input('Enter group number (press enter for 183): ').strip() or '183')
stud = int(input('Enter student number: ').strip() or '16')
ftask = int(input('Enter first task (press enter for 1): ').strip() or '1')
ltask = int(input('Enter last task (press enter for 50): ').strip() or '50') + 1
try:
students = fetch_table(gids[group])
except:
students = map(str, range(1, 35))
def get_digit(task, n_stud=stud):
return pi[(task - 1) * 300 + (group - 183) * 35 + n_stud]
def get_same(task):
stud_range = range(1, len(students) + 1)
return ', '.join(map(lambda x: students[x - 1], filter(lambda other: get_digit(task) == get_digit(task, other) and other != stud, stud_range)))
tasks = range(ftask, ltask)
data = '\n'.join(map(lambda x: 'Task {task}: {digit}, same: {same}'.format(task=x[0], digit=x[1], same=get_same(x[0])), zip(tasks, map(get_digit, tasks))))
print(data)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment