<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Alexander Sieradzki</title>
<link>https://alexander.sieradzki.dev/blog.html</link>
<atom:link href="https://alexander.sieradzki.dev/blog.xml" rel="self" type="application/rss+xml"/>
<description>Site with blog posts listed with sorting and filtering options</description>
<generator>quarto-1.3.450</generator>
<lastBuildDate>Sat, 10 May 2025 00:00:00 GMT</lastBuildDate>
<item>
  <title>Lights Out solver or story about how to solve N^2 equations in O(N^3) time</title>
  <dc:creator>Alexander Sieradzki</dc:creator>
  <link>https://alexander.sieradzki.dev/posts/Lights_out_blogpost/index.html</link>
  <description><![CDATA[ 



<p>Did you ever need to wake up at 5 am to go to the morning lecture where you are fighting for your life to stay awake and learn anything? Well, I know I did and it was a time when I kept myself focused by playing some logic games in the background. You know logic games like <a href="https://en.wikipedia.org/wiki/Minesweeper_(video_game)">Minesweeper</a>, simple games that once you learn you can solve absentmindedly. One game I kept thinking about over and over is <a href="https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/flip.html">Flip</a>(which is an implementation of “Lights Out”). Computers solve this game by just solving a system of linear equations, but I wanted to find a method that 5 am me could absentmindedly use. Well, I didn’t find it but I found a way to solve that specific system of equations with much fewer operations. And that different way of solving it is the topic of this blog post.</p>
<section id="what-is-lights-out" class="level2">
<h2 class="anchored" data-anchor-id="what-is-lights-out">What is lights out?</h2>
<p>Lights Out is a very simple puzzle game consisting of a <img src="https://latex.codecogs.com/png.latex?M%7B%5Ctimes%7DN"> grid of lights that are either toggled on or off. We can click a light to make it and adjacent lights (not counting diagonal neighbors) change their state, so either from on to off or from off to on. Our goal is to switch all lights off.</p>
<p>Below are a few examples to get basic intuition:</p>
<div id="4" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<img width="672" height="480" style="object-fit: contain; height: auto;" src="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAqAAAAHgCAYAAAB6jN80AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAIABJREFUeAHswQt8zwXD/X97vPzmsnGznVyDG2iqiQOd2hUg5LjGU5k7NQ3coXdeVCXWTOzCEWIixNSWHm0MiZa2xqlQe2ZuY0O/H9/z+P+7HHvduPDpf6pHk/n4bz/4eIiIiIiEUMREREREQsZCAiIiIiYiEDERERERELGYiIiIiIWMhARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxkICIiIiJiIQMREREREQsZiIiIiIhYyEBERERExEIGIiIiIiIWMhARERERsZCBiIiIiIiFDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkIGIiIiIiIUMREREREQsZCAiIiIiYiEDERERERELGYiIiIiIWMhARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxkICIiIiJiIQMREREREQsZiIiIiIhYyEBERERExEIGIiIiIiIWMhARERERsZCBiIiIiIiFDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkIGIiIiIiIUMREREREQsZCAiIiIiYiEDERERERELGYiIiIiIWMhARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxkICIiIiJiIQMREREREQsZiIiIiIhYyEBERERExEIGIiIiIiIWMhARERERsZCBiIiIiIiFDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkIGIiIiIiIUM5E+Vn5/P4cOHuZGXlxfVq1fH1dWVP0tRUREHDhzA3d2d0NBQrJCTk0NaWhplypShSpUq7Nixg/379xMeHk5oaCi/5tq1a+zfvx83NzfCwsIoLTIzM/nxxx8pX748FStW5GZWrVpFZmYmkZGRBAYG8mdYtWoVmZmZREZGEhgYiNzdLly4QGpqKq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xKu/z8fKpWrcrtMBARERERsZCBiIiIiIiFDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkIGIiIiIiIUMREREREQsZCAiIiIiYiEDERERERELGYiIiIiIWMhARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxkICIiIiJiIQMREREREQsZiIiIiIhYyOAPtHr1atq2bYu3tzciIvJ/rV69mrZt2+Lt7Y2IyN3M4A/y008/0b17d9LS0vD29kZERP7XTz/9RPfu3UlLS8Pb2xsRkbuZwW1KSUlh+vTprF27lvz8fERE5H+lpKQwffp01q5dS35+PiIiAga3yTAMatasSd++fZk4cSIiIvK/DMOgZs2a9O3bl4kTJyIiImBwm6pVq8awYcNIT09n4sSJiIjI/6pWrRrDhg0jPT2diRMnIiIiYGAhh8PB+PHjKSk8PBwREQGHw8H48eMpKTw8HBGR0sbAQg6HA4fDQUkOh4P4+HhERO52DocDh8NBSQ6Hg/j4eEREShMDERERERELGYiIiIiIWMhARERERMRCBn8Qf39/xo0bh6+vLyIi8n/5+/szbtw4fH19ERG52xn8Qfz9/XE4HIiIyP/L398fh8OBiIiAgYiIiIiIhQxERERERCxkICIiIiJiIQMREREREQsZiIiIiIhYyEBERERExEIGIiIiIiIWMhARERERsZCBiIiIiIiFDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkIGIiIiIiIUMREREREQsZCAiIiIiYiEDERERERELGYiIiIilyp8+TcX583EPCqI0q5iVRXmbDZEbGYiIiIilKpw5Q4VPP6W0qwBUaNcOkRsZ3AG8vb2JiIigtDMMgxo1ahAcHExp5urqiik5OZmjR49Sml25cgXTF198gaurK6XZ+fPnMQyDiIgISrv9+/dzJ/H29iYiIoLSzjAMatSoQXBwMKWZq6srnDnD3eSLL77A1dWV0uz8+fMYhkFERASl3f79+7ldBiIiImKJf61ciV9uLneTZz/9FD79lKv+/qz8178QMRncAa5cucLq1asp7QYPHsyJEyfYtm0bpVlAQAA9e/akYcOG1KpVi9IsJSWFhIQEWrduTUBAAKXZtm3b2LVrF6tXr6a0y8/P5/nnn+dOceXKFVavXk1pN3jwYE6cOMG2bdsorf5x9Sp+3J08PDzo1KkTpdW2bdvYtWsXq1evprTLz8/n+eef53YYiIiIyF9mhqsrl202SpN7gEEFBYjcioGIiIj8ZWLc3Tljs1GalHc6GVRQgMitGIiIiIiIWMhARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxkICIiIiJiIQMREREREQsZiIiIiIhYyEBERERExEIGIiIiIiIWMhARERERsZCBiIiIiIiFDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkMEfIDs7m8TERC5dukTDhg2pWbMmIiLyP7Kzs0lMTOTSpUs0bNiQmjVrIiJyNzO4TcnJybRt25aQkBCCgoLo06cPo0ePZsKECYiI3O2Sk5Np27YtISEhBAUF0adPH0aPHs2ECRMQEblbGdymkSNH0r59exYuXIgpKSmJpk2bEhERQVhYGCIid7ORI0fSvn17Fi5ciCkpKYmmTZsSERFBWFgYIiJ3I4PbcP36dfbu3cuECRMo1qRJEwIDAzl06BBhYWGIiNytrl+/zt69e5kwYQLFmjRpQmBgIIcOHSIsLAwRkbuRwW2w2+1cunQJwzAolpSUxLlz5wgLC0NE5G5mt9u5dOkShmFQLCkpiXPnzhEWFoaIyN3K4DYZhoHJ6XQSFxfHgAEDGDFiBGFhYdzI4XAwfvx4SgoPD0dEpLQyDAOT0+kkLi6OAQMGMGLECMLCwriRw+Fg/PjxlBQeHo6ISGlj8AdISUmhZ8+enDp1innz5tGlSxduxuFw4HA4KMnhcBAfH4+ISGmVkpJCz549OXXqFPPmzaNLly7cjMPhwOFwUJLD4SA+Ph4RkdLE4Dbt2rWL1q1bM3z4cF5/XU8PDwQEZH/sWvXLlq3bs3w4cN5/fXX8fDwQETkbmdwG5xOJz179mT06NGMHTsWERH5X06nk549ezJ69GjGjh2LiIj8D4PbkJqaSkpKCl9++SW7d++mpNdff53GjRsjInK3Sk1NJSUlhS+/JLdu3dT0uuvv07jxo0REbkbGdwGNzc3xo0bx80EBAQgInI3c3NzY9y4cdxMQEAAIiJ3K4PbEBISgsPhQERE/l8hISE4HA5EROT/MhARERERsZCBiIiIiIiFDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkIGIiIiIiIUMREREREQsZCAiIiIiYiEDERERERELGYiIiIiIWMhARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxkICIiIiJiIQMREZE7wD2XLxN54gSN8vMprXy4i12+jPu771Ja1UhP50hwMPLbGIiIiNwBfC9fpuuJE0jpZLt8Gbd336W0qgH49uyJ/DYGdwBvb28iIiIo7QzDoEaNGgQHB1Oaubq6YkpOTubo0aOUZleuXMH0xRdf4OrqSml2/vx5DMMgIiKC0m7/v3cSby9vYmIiKC0c3Fx4W70zDPPkOPlRWnin5sLK1dyt3FxcSEiIoLSbv/+/dwugzuAh4cHTZs2pbT78ccfqVSpEqGhoZRmhYWFnD59mpSUFK5cuUJp5u3tTVBQEHv37qWwsJDSLCAgAD8/P5o2bUppl52dzZ3Ew8ODpk2bUlq1nDaNygcPcjfZV78+u15+GW9vb8IonRa3acOVK1d4YtEi6n37LXeDfvPn0w/46aGH+GrYMEqr7OxsbpfBHcDLy4tOnTpR2s2YMYPq1asTHh5OaXb+/HkWLVrEN998Q0pKCqVZrVq1eOaZZ/j88885f/48pVl4eDhPPPEEnTp1orQ7ceIEdxIvLy86depEaeW5ciUcPMjdpmHDhtSqVYvSLCUlBRYt4m5Tvnx5OnXqRGl14sQJbpeBiIjIHWa1YZBqt1MaeXp6Uq5GDapxdzheowYPPPkknp6elEb21FSM1auR38dARETkDvOxqysbDYPSKMDPj541a1KNu8OJmjVp/PLL2AMCKI2MjRsxVq9Gfh8DERERERELGYiIiIiIWMhARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxkICIiIiJiIQMREREREQsZiIiIiIhYyEBERERExEIGIiIiIiIWMhARERERsZCBiIiIiIiFDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYy+AOcOnWKHTt2cP36dRo3bsx9992HiIj8j1OnTrFjxw6uX79O48aNue+++xARuZsZ3Kb169cTGRlJgwYNyM7O5vjx4yxZsoQuXbogInK3W79+PZGRkTRo0IDs7GyOHz/OkiVL6NKlCyIidyuD2zRy5EgcDgejRo3CNGLECF577TW6dOmCiMjdbuTIkTgcDkaNGoVpxIgRvPbaa3Tp0gURkbuVwW3Iz88nODiY9u3bU6xNmzbMnz8fp9OJzWZDRORulZ+fT3BwMO3bt6dYmzZtmD9/Pk6nE5vNhojI3cjgNri7u7Nr1y5MP/30E6mpqUyZMoWoqChsNhsiInczd3d3du3ahemnn34iNTWVKVOmEBUVhc1mQ0TkbmXwB5k0aRJLlizBy8uLmJgYbsbhcDB+/HhKCg8Px8/PDxGR0mzSpEksWbIELy8vYmJiuBmHw8H48eMpKTw8HD8/P0REShODP8jMmTOJiYlh1qxZ1KtXj8zMTLy9vSnJ4XDgcDgoyeFwsH/fkRESrOZM2cSExPDrFmzqFevHpmZmXh7e1OSw+HA4XBQksPhYP/+/YiIlCYGtyE9PZ2VK1cyZswYTDabjYEDBzJ8+HC++eYbWrRogYjI3So9PZ2VK1cyZswYTDabjYEDBzJ8+HC++eYbWrRogYjI3cjgNhiGwWuvvcZzzz1H7dq1MaWlpVFYWEj58uUREbmbGYbBa6+9xnPPPUft2rUxpaWlUVhYSPny5RERuVsZ3IZKlSrRuXNn2rVrx4ABA3A6ncyZM4cXXniB2rVrIyJyN6tUqRKdO3emXbt2DBgwAKfTyZw5c3jhhReoXbs2IiJ3K4Pb9OGHHzJ37lx27tyJYRi8/vr/1x78x2RBL3wf/yBf0MN1JVyFopC0kgSJ8gpPxbPCS00zQTOH57mds2Euaos585/KH+nFHy7RP2xSKwY165h6O9jy1/rhbhOHtdwRxfyB+CO8JChH0g3B+Dmf8Zyxw3nue+c+z/B80+/1fr1Wa9myZQIASH/+859VWlqqb775RsYYrV69WsuWLRMAhDOjYYqOjtaKFSu0YsUKAQD+XnR0tFasWKEVK1YIAPBXRgAAAIBFRgAAAIBFRgAAAIBFRgAAAIBFRgAAAIBFRgAAAIBFRgAAAIBFRgAAAIBFRgAAAIBFRgAAAIBFRgAAAIBFRgAAAIBFRgAAAIBFRgAAAIBFRgAAAIBFRgAAAIBFRgAAAIBFRgAAAIBFRgAAAIBFRgAAAIBFRgAA3Gb+1Nsrf3+/XPSH/xPJVy4IOXkKBxMunBBsVu3auQf/iAXjbh4Ufj/ZwQAwG1mUV+fnNXTo5r6evUrPKTW1yt21y4BQxndBjo7O1VZWSnX9fX16eLFi2ppaZHLent7NeCJJ55QRkaGXObxeDTg2WefVW9vr1zm8/nU19enyspKue7cuXPy+/26XXR2dqqyslKuerq5WRMUfo4fP66zZ8/KZR0dHfpfCj/Nzc36j8pKuercuXPy+/0aDqPbQFdXl44ePSrXTZgwQY2Njfr+++/lsqioKCUmJiqc/PGPf1RUVJRc1traql9/VVHjx6V665evSq/36/bRVdXl44ePSpXHc3MlDIz9YQxeqWsTOEg88QJZZ44oQF7tm5VZ1ycXBLz66/636tWKdyUFhTou74+/V9Hj8pVV69eld/v13AY3QY6OjpUUVEh161YsUL19fWqqqqSy3w+n5YvX67vvvtOdXV1cllaWppyc3M1Z84c+Xw+uayqqkrffvutKioq5Lru7m4tWLBAt4uOjg5VVFTIdX/8058UjnJycnRz/Hi5JKK5WVq1SuGmv79fFRUVcl13d7cWLFig4TACAOA20Ob1atekSWpoaJCrVvT2ynvzpsLRTa9XvStWyFUNDQ1q83qFf44RAAC3gXavVzsnTVJVc7Nc9WJvr7wKU16vulevlqvqq6rU/u23wj/HCAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDI6Bbq6+tTeXm5li9frujoaAEA/qavr0/l5eVavny5oqOjBQDhyugWWr9+vd5++20tXrxY0dHRAgD8zfr16/X2229r8eLFio6OFgCEK6Nb5MiRIyopKREA4L86cuSISkpKBACQjG6BGzduKD8/X8XFxSosLBQA4G9u3Lih/Px8FRcXq7CwUAAQ7oxugZdeekkvvPCCpk2bJgDA33vppZf0wgsvaNq0aQIASEbDVFpaqh9/FF79uxRXV2d/pFgMKiioiINFQgEBACuKi0t1Y8/qg9e/aorq5O/0gwGFRRUZGGCgQCAgDXGA1DfX29NmzYoGPHjskYo/9JMBhUMBjUUMFgUPv27RMAuKa+vl4bNmzQsWPHZIzR/yQYDCoYDGqoYDCoffv2CQBcYjQMx48f1/Xr15Wamqqh4uPj9cYbb2jjxo0CgHB1/PhxXb9+XampqRoqPj5eb7zxhjZu3CgACEdGw7Bw4UJduXJFg+rr6zVnzhzV1NRowoQJAoBwtnDhQl25ckWD6uvrNWfOHNXU1GjChAkCgHBlNAwej0cej0eDfvvtNw1ITk5WXFycACCceTweeTweDfrtt980IDk5WXFxcQKAcGV0C40dO1YbNmzQqFGjBAD4e2PHjtWGDRs0atQoAUA4M7qFxo4dq2AwKADAfzV27FgFg0EBQLgzAgAAACwyAgAAACwyAgAAACwyAgAAACwyAgAAACwyAgAAACwyAgAAACwyAgAAACwyAgAAACwyAgAAACwyAgAAACwyAgAAACwyAgAAACwyAgAAACwyAgAAACwyAgAAACwyAgAAACwyAgAAACwyAgAAACwyAgAAACwyAgAAv5vokhLprrvkkojffhPwjxgBAIDfTfS77woIN0a3AY/Ho0WLFsl1xhhNmjRJY8aMkcuioqI04IknnlBGRoZc5vF4NODLL79UVFSUXNba2ipjjBYtWiTXnTx5UrcTj8ejRYsWyXXGGE2aNEljxoyRq/7w7/8udXYqHHV1damyslKuam1tlTFGixYtkutOnjyp4TK6DYwaNUrTpk2T60KhkOCmv/zlL+rt7ZXLfD6fvF6vYN+oUaM0bdo0uS4UCsl1q/7t3xQVFaX5zc2at3+/wsGB+fO1f/x49fb2SkePylU+n09er1f45xjdBmJiYpSXlyfXlZSUqL6+XlVVVXKZz+fT8uXL9d1336murk4uS0tLU25urr744gu1trbKZYFAQI888ogqKirkuu7ubi1YsEC3i5iYGOXl5cl1JSUlqq+vV1VVlVzm8/k0f8oUhZMvvvhCra2tclkgENAjjzyiiooKua67u1sLFizQcBgBAACrmsaPV1liolpaWuSy+Ph43Rw/XqqtFTCUEQAAsKo5MVEHk5JU194ul6UlJSk3MVHA/8sIAAAAsMgIAAAAsMgIAAAAsMgIAAAAsMgIAAAAsMgIAAAAsMgIAAAAsMgIAAAAsMgIAAAAsMgIAAAAsMgIAAAAsMgIAAAAsMgIAAAAsMgIAAAAsMgIAAAAsMgIAAAAsMgIAAAAsMgIAAAAsMgIAAAAsMgIAAAAsMhomNrb23X27FkNFR0drczMTAFAuGtvb9fZs2c1VHR0tDIzMwUA4cpomA4dOqS8vDwNlZCQoJ9++kkAEO4OHTqkvLw8DZWQkKCffvpJABCujIbp4sWLmjdvnvbv3y8AwN+7ePGi5s2bp/379wsA8FdGw3T58mWlpqZqwM2bNxURESEAwF9dvnxZqampGnDz5k1FREQIAMKd0TBdvHhRXV1dSkhIUFtbm7KysrRt2zY9/PDDAoBwd/HiRXV1dSkhIUFtbW3KysrStm3b9PDDDwsAwpXRMDU0NGjKlCn68MMPZYzRunXrlJOTo/Pnz8vr9WqoYDCooqIiDRUIBBQbGysAcFFDQ4OmTJmiDz/8UMYYrVu3Tjk5OTp/ry8Xq+GCgaDKioq0lCBQECxsbECAJcYDdMPP/ygobZv3674+GJ3cswAAA5nSURBVHhVVVUpNzdXQwWDQQWDQQ0VDAZ18uRJAYCLfvjhBw21fft2xcfHq6qqSrm5uRoqGAwqGAxqqGAwqJMnTwoAXGI0DP39/erq6pLH49GgmJgYJSQk6MaNGwKAcNbf36+uri55PB4NiomJUUJCgm7cuCEACFdGw9DS0qKkpCQdPHhQc+bM0YBQKKTGxkY9+uijAoBw1tLSoqSkJB08eFBz5szRgFAopMbGRj366KMCgHBlNAwJCQkqKChQfn6+li1bpnvuuUcffPCBli1bpoyMDAFAOEtISFBBQYHy8/O1bNky3XPPPfrggw+0bNkyZWRkCADCldEwlZSUKDMzU4cPH1ZTU5OCwaCWLl0qAIBUUlKizMxMHT58WE1NTQoGg1q6dKkAIJwZDZMxRgUFBSooKBAA4O8ZY1RQUKCCggIBAP7KCAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDICAAAALDI6HcWCoV06dIlbd26Va775ptvFAqF1NPTI5e1tbWpurpazc3N6unpkcuam5tVXV2ttrY29fT0yGWXL19WR0eHenp65Lr+/n6FQiHdDkKhkC5duqStW7fKdd98841CoZB6enrksra2NlVXV6u5uVk9PT1yWXNzs6qrq9XW1qaenh657PLly+ro6FB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">
</div>
</div>
<p>We can see that lights (2,3), (3,2), (3,3), (3,4), and (4,3) changed states.</p>
<div id="6" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<img width="672" height="480" style="object-fit: contain; height: auto;" src="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAqAAAAHgCAYAAAB6jN80AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAIABJREFUeAHswQlclQWi/8P8Bz2QUCwKZdQcRdrUrRyQc07ajOWmTWuSZoL5t6UWVQHq6lxS8IlSnAJSc09IzWvCqImmppbKFS4pOnoAXfgKOf/f173xety/dlqPdnx+34brv8fIiIiIiIWMRARERERsZCBiIiIiIiFDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkIGIiIiIiIUMREREREQsZCAiIiIiYiEDERERERELGYiIiIiIWMhARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxkICIiIiJiIQMREREREQsZiIiIiIhYyEBERERExEIGIiIiIiIWMhARERERsZCBiIiIiIiFDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkIGIiIiIiIUMREREREQsZCAiIiIiYiEDERERERELGYiIiIiIWMhARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxkICIiIiJiIQMREREREQsZiIiIiIhYyEBERERExEIGIiIiIiIWMhARERERsZCBiIiIiIiFDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkIGIiIiIiIUMREREREQsZCAiIiIiYiEDERERERELGYiIiIiIWMhARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxkICIiIiJiIQMREREREQsZiIiIiIhYyEBERERExEIGIiIiIiIWMpDfVElJCXv37uVa/v7+1KlTB5vNxm/lypUr7N69Gx8fH6KiorBCUVER+fn5VK5cmZo1a7J582Z27dpFTEwMUVFR/JirV6+ya9cuvL29adKkCe7i1KlTHDlyhNtvv52qVatyPYsWLeLUqVP06tWL0NBQfguLFi3i1KlT9OrVi9DQUESOH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dbkdERP5fwcHB2O12REQEDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkIGIiIiIiIUMREREREQsZCAiIiIiYiEDERERERELGYiIiIiIWMhARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxkICIiIiJiIQMREREREQsZiIiIiIhYyEBEROQmEHj+PHXT0/HZsgW3deECIgIGIiIiN4HAc+eo+8EHiIj7M7gJBAQE0L17d9ydYRjUrVuX8PBw3JnNZsOUk5PD/v37cWcXL17EtGbNGmw2G+6ssLAQwzDo3r077m7Xrl3cjA4cOMDuJUtwV1evXuVWlJGRwaXgYNzRxYsXMa1ZswabzYY7KywsxDAMunfvjrvbtWsXN8pARETkd/TA1KlU/+ILbiU7mzZl65NPEhAQgMityOAmcPHiRRYvXoy7Gz58OIcOHSIzMxN3FhISQv/+/WnevDn169fHneXm5pKRkUHHjh0JCQnBnWVmZrJ161YWL16MuyspKeHhhx/mZtOwYUNqP/oo7sZv4UL44gtuNc2bN6d+/fq4s9zcXDIyMujYsSMhISG4s8zMTLZu3crixYtxdyUlJTz88MPcCAMREZGbzGLDIM/TE3fk5+fHbXXrEonIrctARETkJvOhzcYnhoE7CqlUif716hGJyK3LQERERETEQgYiIiIiIhYyEBERERGxkIGIiIiIiIUMREREREQsZCAiIiIiYiEDERERERELGYiIiIiIWMhARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxkICIiIiJiIQMREREREQsZiIiIiIhYyEBERERExEIGIiIiIiIWMhARERERsZCBiIiIiIiFDH4FDoeDrKwszp8/T/PmzalXrx4iIvI/HA4HWVlZnD9/nubNm1OvXj1ERG5lBjcoJyeHzp07ExERQVhYGAMHDuS5555j/PjxiIjc6nJycujcuTMRERGEhYUxcOBAnnvuOcaPH4+IyK3K4AY988wzdO3alZSUFEzZ2dm0adOG7t2706RJE0REbmXPPPMMXbt2JSUlBVN2djZt2rShe/fuNGnSBBGRW5HBDSgrK2PHjh2MHz+ecq1atSI0NJQ9e/bQpEkTRERuVWVlZezYsYPx48dTrlWrVoSGhrJnzx6aNGmCiMityOAGeHp6cv78eQzDoFx2djZnzpyhSZMmiIjcyjw9PTl/jyGYVAuOzubM2fO0KRJE0REblUGN8gwDEwul4v09HTi4uIYM2YMTZo04Vp2u52EhAQqiomJQUTEXRmGgcnlcpGenk5cXBxjxoyhSZMmXMtut5OQkEBFMTExtEVExL0Y/Apyc3Pp378/x44d491336VHjx5cj91ux263U5HdbmflypWIiLir3Nxc+vfvz7Fjx3j33Xfp0aMH12O327Hb7VRkt9shMxMREXdicIO2bt1Kx44dGT16NOPGjcPX1xcREfkfW7dupWPHjowePZpx48bh6+uLiMitzuAGuFwu+vfvz3PPPUd8fDwiIvK/XC4X/fv357nnniM+Ph4REfkfBjcgLy+P3NxcPv30Uz777DMqGjduHC1btkRE5FaVl5dHbm4un376KZ999hkVjRs3jpYtWyIicisyuAHe3t688sorXE9ISAgiIrcyb29vXnnlFa4nJCQEEZFblcENiIiIwG63IyIi/6+IiAjsdjsiIvJ/GYiIiIiIWMhARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxkICIiIiJiIQMREREREQsZiIiIiIhYyEBERERExEIGIiIiIiIWMhARERERsZCBiIiIiIiFDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkIGIiPwheG3ahA/uxzM/HxG5tRiIiMgfgld2Nl7Z2YiI/NEZ3AQCAgLo3r077s4wDOrWrUt4eDjuzGazYcrJyWH/v24s4sXL2Jas2YNNpsNd1ZYWIhhGHTv3h13t2vXLuT31bJlSwKqV8cd2Ww2TDk5Oezfvx93dvHiRUxr1qzBZrPhzgoLCzEMg+7du+Pudu3axY0yuAn4+vrSpk0b3N2RI0eoVq0aUVFRuDOn08nx48fJzc3l4sWLuLOAgADCwsLYsWMHTqcTdxYSEkKlSpVo06YN7s7hcCDWO3H77Sx49llCQkIIAtrgnpxOJ8ePHyc3N5eLFy/izgICAggLC2PHjh04nU7cWUhICJUqVaJNmza4O4fDwY0yuAn4+/vz6KOP4u6SkpKoU6cOMTExuLPCwkJmz57Ntm3byM3NxZ3Vr1+fv/3tb6xevZrCwkLcWUxMDPfddx+PPvoo7u7QoUOI9Tw8PKhTpw4xMTG4s8LCQmbPns22bdvIzc3FndWvX5+/e1vrF69msLCQtxZTEwM9913H48++iju7tChQ9woAxERual9V68epd264e52ffklInJrMBARkZvaiXr1KBk3Dne3KymJJojIrcBARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxkICIiIiJiIQMREREREQsZiIiIiIhYyEBERERExEIGIiIiIiIWMhARERERsZCBiIiIiIiFDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkIGIiIiIiIUMfgXHjh1j8+bNlJWV0bJlS2rUqIGIiPyPY8eOsXnzZsrKymjZsiU1atRARORWZnCDVqxYQa9evYiOjsbhcHDw4EHmzp1Ljx49EBG51a1YsYJevXoRHR2Nw+Hg4MGDzJ07lx49eiAicqsyuEHPPPMMdrudZ599FtOYMWN4/vnn6dGjByIit7pnnnkGu93Os88+i2nMmDE8/zz9OjRAxGRW5XBDSgpKSE8PJyuXbtSrlOnTrz33nu4XC48PDwQEblVlZSUEB4eTteuXSnXqVMn3nvvPVwuFx4eHoiI3IoMboCPjw9bt27FdPToUfLy8pg4cSJ9+/bFw8MDEZFbmY+PD1u3bsV09OhR8vLymDhxIn379sXDwwMRkVuVwa/kzTffZO7cufj7+zNt2jSux263k5CQQEUxMTFUqlQJERF39uabbzJ37lz8/f2ZNm0a12O320lISKCimJgYKlWqhIiIOzH4lUyfPp1p06YxY8YM7rnnHk6dOkVAQAAV2e127HY7Fdntdnbt2oWIiDubPn0606ZNY8aMGdxzzz2cOnWKgIAAKrLb7djtdiqy2+3s2rULERF3YnADCgoKWLhwIWPHjsXk4eHB0KFDGT16NNu2baN9+/aIiNyqCgoKWLhwIWPHjsXk4eHB0KFDGT16NNu2baN9+/aIiNyKDG6AYRg8/zzPPTQQzRo0ABTfn4+TqeT22+/HRGRW5lhGDz/PM89NBDNGjQAFN+fj5Op5Pbb78dEZFblcENqFatGo8/jhdunQhLi4Ol8vFO++8w2OPPUaDBg0QEbmVVatWjccff5wuXboQFxeHy+XinXfe4bHHHqNBgwaIiNyqDG7Q++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">
</div>
</div>
<p>We can see that only lights (1,1), (1,2), and (2,1) changed states as in the corner we don’t have lights (0,1) nor (1,0).</p>
<div id="8" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<img width="672" height="480" style="object-fit: contain; height: auto;" src="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAqAAAAHgCAYAAAB6jN80AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAIABJREFUeAHswQlYlwWi9+/PDx52QkDQcilU3FLJ0bQpF1w4KU6eTCkTxchdx73M7FiirUetdLTcENSQzDCXFJc0FNEcyH0ZFBdcTq4gpiCrv/ud6L6/DyWlnWk4Pf+zbs/z9ERERERCxiICIiIiJiIQMREREREQsZiIiIiIhYyEBERERExEIGIiIiIiIWMhARERERsZCBiIiIiIiFDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkIGIiIiIiIUMREREREQsZCAiIiIiYiEDERERERELGYiIiIiIWMhARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxkICIiIiJiIQMREREREQsZiIiIiIhYyEBERERExEIGIiIiIiIWMhARERERsZCBiIiIiIiFDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkIGIiIiIiIUMREREREQsZCAiIiIiYiEDERERERELGYiIiIiIWMhARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxkICIiIiJiIQMREREREQsZiIiIiIhYyEBERERExEIGIiIiIiIWMhARERERsZCBiIiIiIiFDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkIGIiIiIiIUMREREREQsZCAiIiIiYiEDERERERELGYiIiIiIWMhARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxkIH+ogoICDh48SHnu7u7UrVsXJycn/ijFxcXs27cPFxcXmjRpghVycnI4fvw4lStXplatWuzYsYO9e/cSHBxMkyZN+CUlJSXs3bsXZ2dngoKCqCguXbrEmTNneOihh6hevTq3s3z5ci5dukR4eDi+vr78EZYvX86lS5cIDw/H19cXqfiuXb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cj24A77u4UNGEFhcTVlyM/DoGIiIiIiIWMhARERERsZCBiIiIiIiFDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkIGIiIiIiIUMREREREQsZCAiIiIiYiEDERERERELGYiIiIiIWMhARERERMRCBiIiIiIiFjIQEREREbGQgYiIiIiIhQxERERERCxk8DvIzs4mOTmZ69ev07JlS+rXr4+IiPwf2dnZJCcnc/36dVq2bEn9+vUREbmfGdyl1NRUQkNDCQgIwM/Pj4EDB/Laa68xZcoURETud6mpqYSGhhIQEICfnx8DBw7ktddeY8qUKYiI3K8M7tIrr7xCt27dWLhwIaaUlBTatm1LWFgYQUFBiIjcz1555RW6devGwoULMaWkpNC2bVvCwsIICgpCROR+ZHAXbt26xffff8+UKVMo1bp1a3x9fTlw4ABBQUGIiNyvbt26xffff8+UKVMo1bp1a3x9fTlw4ABBQUGIiNyPDO6Cg4MD169fxzAMSqWkpJCVlUVQUBAiIvczBwcHrl+/jmEYlEpJSSErK4ugoCBERO5XBnfJMAxMdrud+Ph4hg4dytixYwkKCqK8qKgoJk+eTFnBwcGIiFRUhmFgstvtxMfHM3ToUMaOHUtQUBDlRUVFMXnyZMoKDg5GRKSiMfgdpKen069fP86dO8f8+fN58cUXuZ2oqCiioqIoKyoqijVr1iAiUlGlp6fTr18/zp07x/z583nxxRe5naioKKKioigrKiqKNWvWICJSkRjcpe+++45OnToxZswYJkyYgKurKyIi8n989913dOrUiTFjxjBhwgRcXV0REbnfGdwFu91Ov379eO2115g4cSIiIvK/7HY7/fr147XXXmPixImIiMj/YXAXMjIySE9P55tvvmHXrl2UNWHCBFq1aoWIyP0qIyOD9PR0vvnmG3bt2kVZEyZMoFWrVoiI3I8M7oKzszOTJk3idnx8fBARuZ85OzszadIkbsfHxwcRkfuVwV0ICAggKioKERH5fwUEBBAVFYWIiPzfDERERERELGQgIiIiImIhAxERERERCxmIiIiIiFjIQERERETEQgYiIiIiIhYyEBERERGxkIGIiIiIiIUMREREREQsZCAiIiIiYiEDERERERELGYiIiIiIWMhARERERMRCBiIiIiI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">
</div>
</div>
<p>Light (3,3) didn’t change its state as it was affected by both clicks (3,2) and (3,4), making it change state twice, which is equivalent to not changing its state.</p>
<p>If you want to play a bit with that puzzle game yourself I recommend playing it on <a href="https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/flip.html">Simon Tatham’s Portable Puzzle Collection</a>.</p>
<p>We already can get some basic intuitions on how solutions for this game might be structured from the below properties:</p>
<ol type="1">
<li>Clicking on the same light twice is the same as not clicking on it.</li>
<li>The order of clicking on lights has no difference in the result as they affect lights independently.</li>
</ol>
<p>Therefore, it is easy to reason that our solution will be in the form of a <img src="https://latex.codecogs.com/png.latex?M%7B%5Ctimes%7DN"> boolean matrix that represents if we should click on a specific light. With <img src="https://latex.codecogs.com/png.latex?M%7B%5Ctimes%7DN"> it would give <img src="https://latex.codecogs.com/png.latex?2%5E%7BMN%7D"> possible combinations of clicks to try, but as I already spoiled in the introduction, we can use linear algebra to find the correct combination.</p>
</section>
<section id="basic-solving-via-gaussjordan-elimination" class="level2">
<h2 class="anchored" data-anchor-id="basic-solving-via-gaussjordan-elimination">Basic solving via Gauss–Jordan elimination</h2>
<p>Turns out the effects clicks have on tiles can be shown as a matrix multiplication in modulo 2. Let’s show it on <img src="https://latex.codecogs.com/png.latex?3%7B%5Ctimes%7D3"> grid.</p>
<div id="10" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<img width="672" height="480" style="object-fit: contain; height: auto;" src="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAqAAAAHgCAYAAAB6jN80AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAIABJREFUeAHtwXucD3Si8PHP8DXMjHWfJlI7QkRkU6eLwpE6bG3bMolSuduKpEhtvWqyFScU5WjdJSvXtVmx6WJyaWdVWFRutciuHTEuuU1inuf3x7yeeXlpd1W+e56dz/sdCv8vJEmSpEgCkiRJUkQBSZIkKaKAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUlR7N69m61bt3KyatWq8cMf/pCkpCTOlL179/Lpp59SrVo1MjMz+f/Bvn372LJlC1WrVqVWrVqcSUeOHOGjjz6ifPny1K9fn1P5/PPPycvLIzMzk2rVqnE6jh8/zurVq0lOTqZx48YcO3aMsWPHkpKSQvfu3flnfP755+Tl5ZGZmUm1atX4d3DkyBE++ugjypcvT/369TmVrVu3smDBAurUqUObNm04E1asWMHq1atp0aIFjRo1QtKZF5AUxW9/+1t69uzJqTRu3JjXX3+dmjVrcia8/fbb3HLLLdx1111MmTKF/x/k5OTws5/9jNtvv51p06ZxJm3cuJHLLruMyy+/nNzcXE5lxIgRjBo1ivHjx9OjRw9Ox5dffslll13GOeecw44dOygoKKBv375UrVqV7t27888YMWIEo0aNYvz48fTo0YNTmTp1Kvn5+fTo0YPy5cvzv93GjRu57LLLuPzyy8nNzeVU1q9fT9++fWnfvj1t2rThuzp8+DDjxo2jUqVKdOnShYR58+YxYsQIXnzxRRo1aoSkMy8gKarMzEzat29PwtGjR5k3bx5r164lOzubCRMmoH9/ycnJDBo0iLS0NL5PzzzzDBs3biQrK4vy5cvz76BOnToMGjSIRo0a8X04cOAA/fv3p3bt2nTp0oWEVq1aEUKgadOmSIojICmqevXqMXz4cIpccskldO/enY8/pgi8+fPZ9GiRezbt4/MzEy6d+9OnTp1SBg8eDD5+fkMHDiQSZMmsWnTJi6/HJ+/vOfE0Ig4fjx44wfP57c3FwaNGhAzZo1Odnu3bsZN24cn3zyCenp6bRt25brrruOhL/97W8MHTqUzMxMmjZtyiuvvEKVKlW49957OXLkCGPHjiU/P5/27dtz4403cipff/0106ZNY9myZZw4cYJLLrmEbt26kZaWRpG1a9cyY8YMtm/fTq1atbj99tupX78+J9u2bRvPP/88GRkZPPLIIyTs2rWLZ555hgoVKjB48GASVq1axYwZM8jLy+NHP/oRvXv3JiUlhYSjR48yefJkVq5cyfHjx2nUqBE9e/akUqVKFJeTk8Orr75KlSpV6Nq1KxdccAHfZNWqVcyYMYO8vDx+9KMf0bt3b1JSUvhHjh8/ztGjRylXrhxFvvzyS1588UU+/fRTfvazn3HixAneeecdunfvTqNGjShu8uTJ5OTkcP7559O/f38qVKjAnDlz2LdvHwnTpk2je/fupKen8/bbbzNv3jz27t1L3bp16dGjBzVr1uSbLF++nHnz5rFr1y4aN27M3XffTfny5Sny+uuvs3jxYvbt20fDhg3p1asXlSpVImH58uXMmTOH1q1bk5+fzzvvvMOFF15I/79Wbp0KbNmzaJMmTLcc889NGzYkOJycnJ49dVXqVKlCl27duWCCy4g4dixYxw9epTCwkISpk+fzsqVK+nSpQsrV65kxYoVnHvuuTzwwANUqVKFhLy8PMaOHcvGjRtJTU2lefPmdOrUiRMnTjB16lQSDhw4wMSJE+nevTsFBQUcPXqUpKQkiuzevZtx48bxySefkJ6eTtu2bbnuuutIyM/PZ/DgwVSvXp2f/OQnTJo0ifz8fNq1a8eNN96IpH8sIOlfateuXSRcdtllJIwYMYIBAwaQkJKSwpEjR/jVr37F+vXrOeecc5g0aRLbtm1j4cKFbN68mYRp06bxt7/9jaeeeoqEDh068Jvf/IaEpKQkMjIyKG7z5s1cddVV7N69m5SUFI4cOcLzzz/Po48+ylNPPcXu3bsZNWoUFStW5PDhwxw7doyEWbNmsX/fvLz80mYMmUKy5cvp1mzZpysR48evPzyy6SmppKUlMSUKVN45ZVXWLFiBWXKlGHWrFl07tyZY8eOkZqayuHDhxk2bBhz587lhhtuoLgaNWowbdo09u7dS48ePUhPT+f3v/89o0aN4s477yRh/vz5ZGVl8fXXX1O1alWmTp3KpEmTyM3NJTU1lVtuuYUFCxZQunRpSpcuzSuvvMLs2bNZuXIlRTZt2sT111/P8ePHOXHiBGPHjmXZsmU0bNiQk82fP5+srCy+/vprqlatytSpU5k0aRK5ubmkpqby9xQUFDBq1CjOOeccsrOzOXr0KFdddRXr16+nVKlSTJkyhQsvvJCPPvqIli1b0qhRI4o8++yzbN68mSKrV6/mt7/9Lb/61a/YvXs3Cc899xxt27bl9ddfp2vXrpQuXZoKFSowffp0XnjhBT788ENq1arFycaPH0/v3r0pLCykbNmyTJs2jZdffpn333+flJQU+vXrxwsvvEBSUhJly5bl6NGjPP/886xcuZJzzz2XNWvWMGrUKH7961+ze/duisycOZM/elPnDhxgoSZM2fy2WefUWTTpk1cf/31HD9+nBMnTjB27FiWLVtGw4YN+fTTTxk1ahS33347nTt3ZvHixbz88sssXLiQzZs3UyQnJ4fly5ezb98+LrvsMj7/HPKlStHQUEBEyZMYN26dTz22GMMHz6chPz8fJ555hm6d+/Ou+++y6hRo7jooou44oor2Lx5M1dddRW7d+8mJSWFI0eO8Pzzz/Poo4/y1FNPceDAAUaNGkXVqlV59tlnyc/PJ2Hy5Mm8+eabtG7dGkl/X0BSVH/4wx+49NJLSTh69CiffPIJzZo146GHHiJh5syZVK5cmZycHBo1asStt97K7NmzWbp0KZ06daLItddey/Lly5k6dSoDBw5k/vz5PPXUU7zzzjv85je/4bzzzmPZsmWEELjmmmso7uGHH2b37t3069eP5557jk8++YRmzZoxdOhQunbtSpH9+/fzxhtvUK9ePRo3bsyf/xnevXqxdNPP03fvn2ZMWMGb7/9Ns2aNaO4r776iunTp1OuXDl27txJamoqWVlZrFmzho8/piGDRty3333cezYMebOnUu7du349a9/TefOnenTpw833HADxZUpU4b27dszbtw4Fi5cyF133cUbb7xBQseOHUno378/x44d449/CNNmzalZ8+eTJ48mTFjxnDnnXeyfPlyGjZsSG5uLmXKlKF27dq8/777Ny5kyJ79+7lpZdeolu3bjz66KMMHz6cJ554gjlz5nCy/v37c+zYMf74xz/StGlTevbsyeTJkxkzZgwDBgzgdIwfP57169fTokULFixYwLp162jRogWnkpaWxubNm/n0009p06YNixYt4uuvv+att96ifv36bNy4kVWrVlGzZk3uu+8+EhYtWsR1113HU089xYQJE1i8eDG9e/emuKNHjzJo0CBKlSrFhx9+SL169cjKyuL1119n7ty5NG7cmBdffJHKlSuzcuVKatWqxb333svYsWN5/PHHmTx5MkXS0tJ47733+Pjjj7n55ptZvXo1EyZM4MYbb+Tqq69my5YtrFmzhgoVKpCwd+9eXnrpJbp168ajjz7K8OHDeeKJJ5gzZw7fJD09nUWLFrFr1y6aNWvGihUryM/PJycnhwMHDnDnnXcyceJENmzYQKNGjXjttdd49tlnWbt2LdWrVyczM5MtW7ZwKg8/DC7d++mX79+PPfcc3zyySc0a9aMoUOH0rVrV0qXLk3Cnj17mDhxIjfddBP33HMPs2fPZv78+bRu3RpJf19AUlSHDh1iw4YNJBw5coQTJ06QlpZGxYoVSVi5ciWbN29m6dKlTJo0iXfffZeEQ4cOUdzDDz/MWWedRefOnRk4cCD5+fkkLFu2jIR27dpx3nnnkdC+fXuGDRtGkRUrVpBw7733UqpUKRo2bEhWVhYTJ05k5cqVNGrUiIQGDRpw/fXXk1C3bl0+/PBDevToQbVq1WjWrBkzZszg8OHDnCw5OZlq1aqxc+dOLrroIm688UZ69uzJ9ddfT5kyZdiwYQN5eXmcc845tGvXjoTbb7+dJ554gk8/ZSdO3dysttuu41x48axYMEC7rzzTt566y2qVq3KddddR15eHp999hk/+MEPmD59OtOnTyc/P5+EnJwcBgwYwJ49e1i5ciWTJk1izZo15OXlkXDo0CGKlC9fnm7dupGcnEyfPn0YPnw4S5Ys4WR5eXl89tln/OAHP2D69OlMnz6d/Px8EnJychgwYACnY9myZSR06dKF8uXLc+WVV3L11VezZMkSTtalSxfq1KlDnTp1SE9P54svvuDgwYNUqlSJk9WoUYOErKws2rZty49/GNWr15N5cqVOdmWLVvYu3cvF110ERdffDEJ48aN4+OPP+b8889n8eLFFBYW0rZtW+rUqUPCY489xtixY3nvvfco7oYbbqBu3bpUr16dhB/84Ad07dqVUqVKcfHFF7NlyxYOHz5MhQoVSChfvjzdunUjOTmZPn36MHz4cJYsWcLf06tXL2rXrk3t2rW54IIL2LhxI/n5+bRr1462bdvy7rvvMmzYMJYuXUrCoUOH+GetWLGChHvvvZdSpUrRsGFDsrKymDhxIitXruTKK68kITMzk27dupHQrl07Zs+eTX5+PpL+sYCkqFq3bs3vf/97Evbs2UOrVq1YvHgxc+fO5a677mLgwIEMHz6cSpUqcc0115CZmcmuXbs4WVpaGgkhBIrbu3cvCeeeey5FMjMzKe7AgQOUKVOGOnXqUCQ5OZmE/Px8iqSkpHCylJQU/hkLFixgyJAhLFy4kJdeeomXXnqJBg0a8MYbb7B/34SLrzwQopLTk4mIT8/n5M1b96cmjVrsnjxYt5/3127dpF7969CSGQn59PkTVr1lCkRYsWZGRk8NVXX9GqVStWrFjBeeedx9VXX81ZZ53FX/6V4qrVasWycnJJGRkZFCmTBn27dvH8ePHKS4/P58ia9asoUiLFi3IyMjgdO3evZuEzMxMitSuXZslS5ZwsrS0NIokJyfz94wcOZJq1aoxa9YsZs6cycyZM6lSpQozZ86kdevWFLd3714SzjvvPIrUqFGDGjVqkLB/34SGjRoQJHk5GQS8vPzKS4lJYXikpOTKVWqFN+kVq1aJCcnk5CRkUGZMmXYt28fx48f55ukpaVRJIRAkc2bN9OyZUv++te/0qRJE5o2bcrpOnDgAGXKlKFOnToUSU5OJiE/P58iaWlpFAkhIOmfF5D0L1O1alWuvPJK1q5dy44dOzh06BAjRoygQoUK/OUvfyE1NZXmzZtzOurWrUvCW2+9xQMPPEDCW2+9RXF169Zl7dq15ObmcuWVV5KwaNEiEurVq8d3tW3bNlatWkXv3r2ZOnUqixcv5qmnnuKDDz5g1qxZdOnShYRVq1Zx8OBBypcvz7Zt2/jkk08oXbo0derUYfPmzRSXlJTErbfeyogRI3j88cdJ6NixIwmZmZkkJSVRsWJFlixZQlJSEgUFBezcuZOUlBTefvttVqxYQevWrVm8eDFHjhyhatWqnGzTpk3k5eWRkZHBu+++y7Fjx6hTpw6lS5emuMzMTJKSkqhYsSJLliwhKSmJgoICdu7cSUpKCqerVq1aLFmyhCVLltCyZUsKCwtZvHgx38VXX33F7373Oy6/HJGjhxJbm4uo0ePZsaMGbzwwgu0bt2a4mrVqkXCunXrOH78OKVLl2b+/PnMnz+fDh06cMEFF5CwdOlSHn30URIWLlxIQr169fguNm3aRF5eHhkZGbz77rscO3aMOnXqULp0aU7XhAkT+Otf/8ovf/lLHnvsMd555x0mTpzI6ahbty5r164lNzeXK6+8koRFixaRUK9ePSR9dwFJ/1JJSUkkHDx4kBACIQQOHDjAww8/zPbt21m+fDmno1OnTvziF79g0aJFdOrUiRAC8+bNo7g+ffrQq1cv2rVrR/fu3Vm1ahVbt26lcePGtGzZkg0bNvBdHD9+nJ/OeEEBgwYAAVKlTg4MGDJGRkZFClShVuu+02pk+fTsuWLbnhhhuYO3cuCb169aJs2bKcSqdOnRgxYgRvvPEGNWrUoHnz5iSkpKTQsWNHXn31Vdq3b8+1117LzJkzWbZsGc899xwXX3wxCatWreIXv/gFb775JkePHuVkBQUFtGzZkjZt2jBz5kwSevXqxclSUlLo2LEjr776Ku3bt+faa69l5syZLFu2jOeee47+/ftzOu644w4mTZrEs88+S35+PuvXr2f79u2cripVqpAwfvx4+vXrxzPPPMOf/xn3nrrLS6++GL27t1LQkZGBierWbMm119/PYsXL6ZNmzY0adKEiRMncvDgQfr160fdunU5/zzWbx4Me3ataN+/fqMHTuWhPvuu4/voqCggJYtW9KmTRtmzpxJQq9evfg2ypYtS8KsWbPYv38/M2bMoLjy5ctTpkwZ/vKXvzBt2jQ6d+7Myfr06UOvXr1o164d3bt3Z9WqVWzdupXGjRvTsmVLduzYgaTvJiDpX6p27dokzJo1iyFDhjBkyBAeeeQRRo8eTYsWLRg0aBBDhw5l+fLl9OjRg3+kSpUq/O53v+OOO+5gxowZVK1ale7duzNx4kSK9OjRg3379jFkyBCefvppQgi0adOGl156iRAC39X555/PK6+8wiOPPMLTTz9NQrly5ejXrx+dOnUiYcyYMZQtW5bp06fz4YcfkpqaSt++fRk6dCjfpGnTplxwwQVs2rSJDh06UKpUKYqMHj2ar7/+mnnz5jFv3jwqVqxIdnY2999/P4WFhWRlZTFnzhxGjBhBt27dqFGjBr/73e9Yvnw5TZo0IaFBgwace+65jBw5kuTkZPr27cv999/PqYwePZqvv/6aefPmMW/ePCpWrEh2djb3338/p6tly5aMGDGCxx9/nNGjR9O4cWN++tOf8tprr3E6+vTpw5/GcGDx7MT37yE+bOncvdd9/Nyy+/TEJSUhJt27blmWee4VSmTJlCz549+f3vf89bb71FjRo1GDduHI0aNSJh4cKF9OrVi9dee4158+Zx1llnMWbMGDp06MB30aBBA84991xGjhxJcnIyffv25f777+fbuPvuu/nNb37DunXr2L59O08/TSDBw8mLy+PLVu2UKdOHfr27cu4ceP4+c9/TufOnTlZjx492LdvH0OGDOHpp58mhECbNm146aWXCCEg6bsLSIqiR48e9OjRg5MNGDCAAQMGUOTBBx/k7rvvpqCggMqVK5MwZMgQimzdupXiqlWrRmFhIcU1b96cbdu28cUXX1CtWjWSkpKYMGECRZKSkhg4cCADBw4kLy+PypUrk5ycTJGLLrqIwsJCivvggw8ork+fPvTp04dv0qlTJzp16sTevXs5fPgwZ599NqVLl6ZIxYoVmTRpEuPHj2fXrl1kZGRQqlQpitx8880UFhZyso0bN3IqVapUYdasWXz11Vfs3r2bs88+m1KlSpGQlJTE7Nmz2bNnD6mpqaSkpHCywsJCiuzbt4+UlBTKli1LkZEjRzJy5EiKVKlShVmzZvHVV1+xe/duzj77bEqVKsWpVKpUicLCQopUqlSJwsJCihw8eJA777yTXr16ceTIEdLT07n11ltJqFixIgkjR45k5MiRFLdjxw6Ku+2227jttts4cuQIKSkpJOTm5nL48GH27NlDeno65cqV45tUr16dBQsWUFBQwL59+8jIyKC4evXq8e6773L06FEOHDjAWWedRXF9+vShT58+FClfvjyFhYUUN2fOHIorLCykyL59+0hJSaFs2bIUufnmmyksLKTIlClTmDJlCsWtX7+e4tatW0deXh5nnXUWpUqV4t5776W4ESNG8N/d+cOHGChJEjRzJy5EiKJCUlMXDgQAYOHEheXh6VK1cmOTmZIpmZmRQWFlJcVlYWhYWFSPrnBCT9r5OamkpqairfVXp6Ov9IRkYGZ1LlypWpXLky36R06dJUr16d70tycjI1atTgVKpWrco/o1KlSvyzkpOTqVGjBt/FuHHjePDBB/nRj37EM888w/r16/ntb39Leno6TZs25XSlpKRQXGpqKqmpqfyzypYtS0ZGBt+kXLlylCtXju9bpUqV+D4kJSVx9tln8/eEEPhnZGRkIOn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">
</div>
</div>
<p>Our variables will be also in <img src="https://latex.codecogs.com/png.latex?3%7B%5Ctimes%7D3"> matrix of boolean variables showing if we should click on them or not</p>
<p><img src="https://latex.codecogs.com/png.latex?%5Cbegin%7Bequation%7D%0A%5Cleft%5B%0A%5Cbegin%7Barray%7D%7Bccc%7D%0A%5Cmathtt%7Bx%7B%7B_1%7D%7D%CB%8F%7B_1%7D%7D%20&amp;%20%5Cmathtt%7Bx%7B%7B_1%7D%7D%CB%8F%7B_2%7D%7D%20&amp;%20%5Cmathtt%7Bx%7B%7B_1%7D%7D%CB%8F%7B_3%7D%7D%20%5C%5C%0A%5Cmathtt%7Bx%7B%7B_2%7D%7D%CB%8F%7B_1%7D%7D%20&amp;%20%5Cmathtt%7Bx%7B%7B_2%7D%7D%CB%8F%7B_2%7D%7D%20&amp;%20%5Cmathtt%7Bx%7B%7B_2%7D%7D%CB%8F%7B_3%7D%7D%20%5C%5C%0A%5Cmathtt%7Bx%7B%7B_3%7D%7D%CB%8F%7B_1%7D%7D%20&amp;%20%5Cmathtt%7Bx%7B%7B_3%7D%7D%CB%8F%7B_2%7D%7D%20&amp;%20%5Cmathtt%7Bx%7B%7B_3%7D%7D%CB%8F%7B_3%7D%7D%20%5C%5C%0A%5Cend%7Barray%7D%0A%5Cright%5D%0A%5Cend%7Bequation%7D"></p>
<p>or in flattened form they would be:</p>
<p><img src="https://latex.codecogs.com/png.latex?x%20=%20%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bc%7D%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_1%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_1%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_1%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_2%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_2%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_2%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_3%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_3%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_3%7D%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D"></p>
<p>We can represent states of lights also in matrix form</p>
<p><img src="https://latex.codecogs.com/png.latex?%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bccc%7D%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_1%7D%20&amp;%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_2%7D%20&amp;%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_3%7D%20%5C%5C%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_1%7D%20&amp;%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_2%7D%20&amp;%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_3%7D%20%5C%5C%20%5Cmathtt%7Bb_%7B3%7D%CB%8F_1%7D%20&amp;%20%5Cmathtt%7Bb_%7B3%7D%CB%8F_2%7D%20&amp;%20%5Cmathtt%7Bb_%7B3%7D%CB%8F_3%7D%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D%20=%20%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bccc%7D%201%20&amp;%200%20&amp;%201%20%5C%5C%200%20&amp;%200%20&amp;%201%20%5C%5C%201%20&amp;%201%20&amp;%200%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D"></p>
<p>or again in flattened form</p>
<p><img src="https://latex.codecogs.com/png.latex?b%20=%20%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bc%7D%201%20%5C%5C%200%20%5C%5C%201%20%5C%5C%200%20%5C%5C%200%20%5C%5C%201%20%5C%5C%201%20%5C%5C%201%20%5C%5C%200%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D"></p>
<p>The effect that clicks have on lights can be represented by the below matrix</p>
<p><img src="https://latex.codecogs.com/png.latex?M%20=%20%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bccccccccc%7D%201%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%201%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%201%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%201%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%201%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%201%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D"></p>
<p>We know that our solution needs to satisfy below system of equations in modulo 2.</p>
<p><img src="https://latex.codecogs.com/png.latex?Mx%20=%20b"></p>
<p>In this example it would be:</p>
<p><img src="https://latex.codecogs.com/png.latex?%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bccccccccc%7D%201%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%201%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%201%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%201%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%201%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%201%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D%20%5Ccdot%20%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bc%7D%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_1%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_1%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_1%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_2%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_2%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_2%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_3%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_3%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_3%7D%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D%20=%20%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bc%7D%201%20%5C%5C%200%20%5C%5C%201%20%5C%5C%200%20%5C%5C%200%20%5C%5C%201%20%5C%5C%201%20%5C%5C%201%20%5C%5C%200%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D"></p>
<p><img src="https://latex.codecogs.com/png.latex?%5Cbegin%7Balign%7D%0A%5Cmathtt%7Bx_%7B1%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_1%7D%20&amp;=%201%20%5C%5C%0A%5Cmathtt%7Bx_%7B1%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_1%7D%20&amp;=%200%20%5C%5C%0A%5Cmathtt%7Bx_%7B2%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_2%7D%20&amp;=%201%20%5C%5C%0A%5Cmathtt%7Bx_%7B1%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_2%7D%20&amp;=%200%20%5C%5C%0A%5Cmathtt%7Bx_%7B1%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_2%7D%20&amp;=%200%20%5C%5C%0A%5Cmathtt%7Bx_%7B2%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_3%7D%20&amp;=%201%20%5C%5C%0A%5Cmathtt%7Bx_%7B1%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_3%7D%20&amp;=%201%20%5C%5C%0A%5Cmathtt%7Bx_%7B1%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_3%7D%20&amp;=%201%20%5C%5C%0A%5Cmathtt%7Bx_%7B2%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_3%7D%20&amp;=%200%0A%5Cend%7Balign%7D"></p>
<p>So now solving our game has been simplified to solving a system of linear equations in modulo 2.</p>
<p>For systems in modulo 2 we can use <a href="https://en.wikipedia.org/wiki/Gaussian_elimination">Gauss-Jordan elimination</a> as it uses just elementary row operations.</p>
<p>Here is an example implementation in <a href="https://julialang.org/">Julia</a></p>
<div id="28" class="cell" data-execution_count="1">
<div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb1-1"><span class="kw" style="color: #003B4F;
background-color: null;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">gauss_jordan!</span>(M,b)</span>
<span id="cb1-2">    pivot<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span></span>
<span id="cb1-3">    <span class="cf" style="color: #003B4F;
background-color: null;
font-style: inherit;">for</span> col <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">∈</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">axes</span>(M,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb1-4">        next_pivot<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">findfirst</span>(M[pivot<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">size</span>(M)[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>]),col]) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># look for pivot row</span></span>
<span id="cb1-5">        <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">isnothing</span>(next_pivot) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;&amp;</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-style: inherit;">continue</span> <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># if there is no pivot row continue</span></span>
<span id="cb1-6">        next_pivot<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+=</span>pivot<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># get index of pivot row as julia arrays start at 1</span></span>
<span id="cb1-7"></span>
<span id="cb1-8">        <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># swap pivot</span></span>
<span id="cb1-9">        M[pivot, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>], M[next_pivot, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> M[next_pivot, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>], M[pivot, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>]</span>
<span id="cb1-10">        b[pivot], b[next_pivot] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> b[next_pivot], b[pivot]</span>
<span id="cb1-11"></span>
<span id="cb1-12">        <span class="cf" style="color: #003B4F;
background-color: null;
font-style: inherit;">for</span> row <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">∈</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">axes</span>(M,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span>
<span id="cb1-13">            <span class="cf" style="color: #003B4F;
background-color: null;
font-style: inherit;">if</span> row <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">≠</span> pivot <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;&amp;</span> M[row,col] </span>
<span id="cb1-14">                <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># xor all rows that are not pivot and that have 1 in pivot column </span></span>
<span id="cb1-15">                M[row,<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.⊻=</span> M[pivot, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>]</span>
<span id="cb1-16">                b[row,<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.⊻=</span> b[pivot, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>]</span>
<span id="cb1-17">            <span class="cf" style="color: #003B4F;
background-color: null;
font-style: inherit;">end</span></span>
<span id="cb1-18">        <span class="cf" style="color: #003B4F;
background-color: null;
font-style: inherit;">end</span></span>
<span id="cb1-19">        pivot<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span></span>
<span id="cb1-20">    <span class="cf" style="color: #003B4F;
background-color: null;
font-style: inherit;">end</span></span>
<span id="cb1-21">    <span class="cf" style="color: #003B4F;
background-color: null;
font-style: inherit;">return</span> (M, b)</span>
<span id="cb1-22"><span class="kw" style="color: #003B4F;
background-color: null;
font-style: inherit;">end</span></span></code></pre></div>
</div>
<p>It is a simple implementation of Gauss-Jordan elimination in modulo 2. It is simpler than its counterpart for normal linear systems as instead of addition and subtraction we use xoring which in Julia is ⊻ operator. We also don’t need to worry about multiplication as values in the matrix are boolean.</p>
<p>It is also worth noting that this simple implementation has a time complexity of <img src="https://latex.codecogs.com/png.latex?O(N%5E3)"> where N is the dimension of our <img src="https://latex.codecogs.com/png.latex?N%7B%5Ctimes%7DN"> Matrix.</p>
<p>Let’s see how well it solves a random <img src="https://latex.codecogs.com/png.latex?3%5Ctimes3"> grid. Also because values in the M matrix and b vector are boolean I can showcase equations as plots. Below is our system of equations after Gauss-Jordan elimination:</p>
<div id="30" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<img width="672" height="480" style="object-fit: contain; height: auto;" src="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/data:image/png;base64, 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Hhas2fPnixatChPP/10WtPX15eHHnoozz33XE6fPp3WjI6O5vd+7/dCPZcvX85TTz2V1oyOjmbnzp2ppQQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKiohBvW1dWVTqeT1syYMSNTZs6cmU6nk9Z0dXXl+vXrGR0dTWvGx8czZebMmbl+/Xpa09XVlVJKOp1OWlNKSVdXVzqdTlozc+bMTCmlpNPppDXd3d3p6upKp9NJa2bOnJkpM2bMSKfTSWsmJiZCXV1dXel0OmnNxMREairhhs2dOzePPfZYWvXAAw+kVadOncqpU6fSqm9/+9tp1aZNm7Jp06a06rHHHkur7r777tx9991p1WOPPZZW7dmzJy06ePBgqGvu3Ll57LHH0pqDBw+mphJu2NWrV/Pcc8+lNQsXLsyGDRty9OjRXL58Oa3ZunVrLl68mNdffz2tufXWW7N69ers2LEj06dPT2uef/75vPPOO3n77bfTmttuuy3Lli3L888/n9bMmDEjO3bsyK9/eu8/77ac3atWszb968vPTSS2lNb29vtmzZkhMnTuTjjz9Oa86ePZsdO3aEejqdTr75zW+mNWfPnk1NJdywsbGxvPHGG2nNypUrs2HDhrz11lsZHBxMazZv3pwLFy7k5MmTaU13d3dWr16dNWvWZNasWWnNiy++mMHBwZw8eTKtmTt3bm699dacPHkyrenp6cmOHTty/vz5nDx5Mq1ZunRpZs2alZMnT6Y1fX192bJlS86cOZPTp0+nNaOjo6GuGTNmZP369WlNf39/JicnU0sJAABUVAIAABWVAABARSUAAFBRCQAAVFQCAAAVlQAAQEUlAABQUQkAAFRUAgAAFZUAAEBFJQAAUFEJAABUVAIAABWVAABARSUAAFBRCQAAVFQCAAAVlQAAQEUlAABQUQkAAFRUAgAAFZUAAEBFJQAAUFEJAABUVAI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">
</div>
</div>
<p>Nice we got an identity matrix which means there is a singular solution. Let’s see how it deals with a random <img src="https://latex.codecogs.com/png.latex?5%5Ctimes5"> grid.</p>
<div id="32" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<img width="672" height="480" style="object-fit: contain; height: auto;" src="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/data:image/png;base64, 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vv27UxNTXHu3Dms+vr6WFxc5PTp01h1d3cTDoc5deoUVh0dHaxfv57t27djNTo6yuXLl3n/fexWrduHa2trbz33nssLy9j0dDQwIYNGxgeHiabzWJRV1fHxo0b+fjjj5mZmcGiqqqK3t5ePvvsM27duoVFWVkZjz32GGfPnuXbb7/FIhwOs3PnTkZGRrh69SpWTzzxBF9/TVfffUVVo8/jjNzc20t7djdfLkSb766ivS6TRWV69eZceOHciDYX5+nnfeeQerq1evsnXrVu4lB7nvLCwscP78eawaGxsJhUKk02msamtricfjpNNprCoqKli3bh3pdBqrUChEMpnk3LlzZLNZLBYWFujs7GRkZISpqSksGhsb2bx5M1999RXj4+NY1NXVsWXLFq5cucKlS5ewiEajpFIprl+/ztmzZ7FwHIf+/n6+/fZb0uk0Vjt27ODmzZuk02ms+vr6mJqaIp1OY9XZ2cn8/DzpdBqrlpYWSktLSafTWNXX1xOJROjq6sJqamqKS5cukU6nsXJdl9bWVr744guWlpawKBQKbNiwgS+/JLZ2VksWlpa2LhxI6Ojo0xOTmLR0NBAb28vly9fZmxsDIvq6moee+wxrl69yoULF7BwXZedO3cyPj5OOp3Gqr+/n4mJCdLpNFbbtm2jpqaGrq4urD7/HMymQzpdBqrXC6HPDgWFhY4f/48VrlcjnvNQURERESkiBxERERERIrIQURERESkiBxERERERIrIQURERESkiBxERERERIrIQURERESkiBxERERERIrIQURERESkiBxERERERIrIQURERESkiBxERERERIrIQURERESkiBxERERERIrIQe47lZWVDA0NYRWJRAgEAgwNDWHlOA6hUIihoSGsHMchEAgwNDSEVSgUwnPo0CEKhQIWoVAIz4svvkihUMAiFArhOXDgAMvLy1gEg0E8+/btI5/PYxEIBPDs2rWLxx9/HD8effRRent7sQqHw2zatImHH34Yq5KSEtrb22lubsYqEongGRoawioSieAZGhrCKhwOMzMzw6uvvorV0tIS4XCYoaEhrBzHwfPf/t/xyoUCuH58Y9/TKFQwCIUCuH54Q9/yPLyMhbBYBDPc889Rz6fxyIQCODZu3cv/f39WAQCATypVIpt27ZhFQgE6O3tpbu7G6uSkhK++OILLly4gNXCwgItLS0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n0qVLWESjUX7605/y/vvvc/bsWSwcx+HnP/85J06c4NSpU1j97Gc/I51O88EHH2B16NAhrl+/zttvv43Viy++yPz8PG+++SZWBw4coLS0lNdffx2rp556itWrV/Paa69htWPHDrq6unj11Vex6uvrI5VK8S/8i8sLS1h0dnZyd69e/nlL3/J7OwsFi0tLTz33HM8/zz1NXVYXHjxg3+4z/+g7feeouxsTEsqqur+clPfsKf/vQnLly4gIXrugwNDTE8PMzp06ex+sUvfsEnn3zC8ePHsXr55Ze5ePEi7733HlY/vGPuX37Nv/v/0/rHK5HP39/ciDIRqNMjQ0hNXMzAyFQoF7yUFEREREpIgcRERERESKyEFEREREpIgcRERERESKyEFEREREpIgcRERERESKyEFEREREpIgcRERERESKyEFEREREpIgcRERERESKyEFEREREpIgcRERERESKyEFEREREpIgcRERERESKyEHuOyUlJfT19WEVj8cpKyujr68Pq0QiQTgcpq+vD6uGhgYCgQB9fX1Y1dfX49m8eTNLS0tY1NbW4unq6mJ+fh6L6upqPA899BANDQ1YVFRU4GltbSUej2NRUlKCp6mpidLSUiyCwSCe1atX40cwGGTlypX09fVhVVJSwooVK+jr68OqvLycSCRCX18fVrFYjHA4TF9fH1YrVqygpKSEvr4+rFauXEkwGKSvrw+r1atX4+np6WF5eRmLlStX4tm0aRO5XA6LmpoaPOfPn2dsbAyLmZkZPO3t7SQSCSxKS0vxNDc3U1lZiYXjOHgaGxsJh8NYBQIBGhoa6OvrwyocDpNIJOjr68OqrKwMT19fH1aXL19GHhy5XI5PPvkEq/Hxcerr67mXHOS+47ouqVQKv1KpFH6lUin8SqVS+PXoo4/iV09PD35t3LgRvzZs2IBfra2ttLa24kdTUxNNTU34sXr1alavXo0fruuSSCTwK5VK4VcqlcKvVCqFX6lUCr8ee+wx/Orr68Ovzz77DL8efvhh/Gpvb6e9vR0/mpubaW5uxo+1a9eydu1a/Fi1ahWrVq3Cj7KyMlKpFFb5fB55cORyOYaHh7G6evUq9fX13EsOct/JZDL83d/9HVbPPPMM8XicX/7yl1j19/fT2trKP/zP2O1bds2tmzZwj/8wz9g1d3dze7du3n11VfJZrNYtLe3s3/fv71X/+VqakpLBobGzl48CD/8R/wfj4OBZ1dXW89NJLvPXWW1y6dAmLaDTKT3/6U/70pz9x9uxZLBzH4ec/znDw8OcOnUKq5/97Gek02k++OADrA4dOsT169d5++23sXrxxReZn5/nzTffxOrAgQOUlpby+uuvY/XUU0+xevVqXnvtNax27NhBV1cX/RP/4RVX18fqVSKf/zHf2RpaQmLzs5O9u7dy/4H/+D2dlZLFpaWnjuuef493/dyYnJ7FoaGjgRz/6EQcPHmTt2rVYTE1N8W/9m/87ne/48KFC1i4rsvQ0BB/vOfOX36NFa/+MUv+Pjjjzl+/DhWL7/8Mtu2baO/vx+rX/3qV8TjcQYGBrDK5XLIgyOTyfB3f/d3WOVyObZu3cq95CAiIiIiUkQOIiIiIiJF5CAiIiIiUkQOIiIiIiJF5CAiIiIiUkQOIiIiIiJF5CAiIiIiUkQOIiIiIiJF5CAiIiIiUkQOIiIiIiJF5CAiIiIiUkQOIiIiIiJF5CAiIiIiUkQOIiIiIiJF5CD3nXA4TDKZxCoajVJSUkIymcSqqqoKx3FIJpNY1dTUEAgESCaTWCUSCTwtLS0sLi5iUV9fj6epqYm6ujosamtr8axdu5aKigosYrEYnoaGBkKhEBau6+JZuXIlCwsLWASDQTy1tbUkk0msgsEg1dXVJJNJrMLhMJWVlSSTSaxc1yUYDJJMJrEqLy8nEomQTCaxqqysJBwOk0wmsaquriYYDJJMJrGqra3F09rayvLyMhYrV67Es379erLZLBYrV67Es27dOqqrq7GIx+N4rl+/TjabxeLu3bt46uvrKRQKWITDYTyJRIJkMolVIBCgpqaGZDKJleM4TE9PMzo6ilUul2N2dpbR0VGsbt26xapVq5AHQzgcJplMYnXjxg3uNQe575SVlbFz5078GhgYwK+BgQH8GhgYwK8nn3wSv3bt2oVf27Ztw6+enh786urqoqurCz/a29tpb2/Hj+bmZpqbm/GjrKyMNWvW4NfAwAB+DQwM4NfAwAB+DQwM4Ne+ffvw64knnsCvVCqFXydPnsSv7u5uuru78aOjo4OOjg78aGtro62tDT/GxsYYGxvDj9nZWY4cOYLV6Ogoq1atQh4MZWVl7Ny5E6ujR49yrznIfWd2dpbXXnsNq/7+fqqqqnjjjTeweuyxx1i3bh2vv/46Vo888ggbN27kX/1X7Hq6Ojg0Ucf5d/d/J5XJYNDc3s2vXLv73/7fZDIZLBoaGnj66ac5cuQI3377LRYrVqzge9/7Hu+88w5jY2NYlJeX88ILLzA8PMzIyAgWoVCIv/3bv+WTTz7hzJkzWP3N3/wNIyMjfPzxx1j98Ic/5JtvvuHDDz/E6rnnniObzfLHP/4RqyeffBLXdXnrrbewevzxx1m1ahX/+Z/idWWLVtIJpP86le/wmrjxo309vbyb/2b+TzeSySySSpVIpf/rX3L17F4vGxkb27NnDb37zG7777jssVq5cycDAAH/4wx8YHx/HIhaL8Vd/9Vfs3LmT5uZmLHK5HIcPH+bEiROcO3cOq5/85CecOXOGv/zlL1i9+OKLXLlyhY8++girH/zgB2zevJndu3djlclkkAfH7Owsr732GlYzMzNs3bqVe8lB7jvLy8tkMhmsFhcXyefzZDIZrHK5HMvLy2QyGayy2SyeTCaD1fz8PJ6ZmRmy2SwWc3NzeGZnZ8lkMlhUVVXhuXPnDplMBouSkhI8c3NzZDIZLJaXl/HMz8+TyWSwcBwHTzabJZPJ4EculyOTyWC1vLzM4uIimUwGq3w+z9LSEplMBqulpSXy+TyZTAarxcVFlpeXyWQyWOVyOTyZTAarbDaLZ2ZmhqWlJSzm5+fxzM7OMjs7i8Xc3Bye2dlZMpkMFhUVFXju3r1LJpPBIhgM4ikrKyMWi2GRzWbxzM/Pk8lk8CObzZLJZLBaXl4ml8uRyWSwyufzhMNhYrEYVq7rIg+O5eVlMpkMVrlcjnvNQURERESkiBxERERERIrIQURERESkiBxERERERIrIQURERESkiBxERERERIrIQURERESkiBxERERERIrIQURERESkiBxERERERIrIQURERESkiBxERERERIrIQURERESkiBzkvhMKhUgkEli5rovjOCQSCazKysoIBoMkEgmsKioq8CQSCayi0Sie2tpaFhYWsIjFYnhWrFhBJBLBorq6Gk88HmdpaQmLeDyOp6qqikQigUVZWRmeyspKEokEFqFQCE9FRQWJRAKrQCBAWVkZiUQCq1AohOu6JBIJrMLhMPl8nkQigVUkEiEcDpNIJLByXZdQKEQikcCqrKyMQCBAIpHAqqKiAk9dXR35fB6LyspKPCtWrKCsrAyLqqoqPDU1NQQCASzi8Tie6upqstksFpWVlXgymQyTk5NY5HI5PNFolEQigR8VFRUkEgmsgsEgZWVlJBIJrBzHIZvNMjk5idXdu3eJRCLIgyEUCpFIJLC6ffs295qD3HcqKioYGBjAr8HBQfwaHBzEr8HBQfx6/vnn8evZZ5/Fr7179+LXjh078Gvr1q1s3boVP7q7u+nu7saPDRs2sGHDBvyoqKigubkZvwYHB/FrcHAQvwYHB/FrcHAQv1544QX8OnDgAH7t27cPv/r7+/Hro48+4qOPPsKP3t5eent78aOzs5POzk78aGtro62tDT+uXr3K4cOHsUqn0+zYsQN5MFRUVDAwMIDV0aNHudcc5L5z9+5d/s/+T9Ybd26lcrKSv70pz9h1d3dTUNDA0eOHMGqo6OD9vZ23njjDaxaWlrYtGkTv/3tb1lYWMBizZo1bNmyhbfffps7d+5gkUgkSKVSHD16lO+++w6L6upq+vv7OX78ODdu3MCitLSU/fv3l6EXkwAAEYxJREFU85e/IWvv/4ai1AoxPe/33Onj3LyMgIVs899xxff/016XQaq6effpqbN2/y6aefYrV7924WFhY4duwYVtu3bycSifDnP/8Zq56eHmpra/nDH/6AVVdXF01NTbz11ltYJZNJOjs7+b/9/+Sz+exaGpq4pFHHuF3v/sd8/PzWNTX17Nt2zbee+89pqamsFixYgU7d+5keHiYiYkJLCoqKnjqqaf4+OOPuXbtGhaRSIRnn32WjRs30tLSgtUbb7zBl19+yblz57AaGBhgw4YNdHd3Y/XOO+9w/vx5Tp48idXk5CQ7duxAHgxlZWX84Ac/wGpiYoJ7zUHuO0tLS4yNjWHV1dWF67qMjY1h1dLSQj6fZ2xsDKuGhgYKhQJjY2NYxeNxPNeuXSObzWJRWlqK58aNG0xNTeHHt99+y/j4OBbz8/N4bt68ydjYGBbRaBTPrVu3GBsbw8JxHDzT09OMjY1hVSgUmJmZYWxsDKulpSXu3r3L2NgYVgsLC8zPzzM2NobVI488gmdsbAyrhx56iOrqasbGxrBat24dhUKBsbExrBKJBJ6rV6+ytLSERWVlJZ7x8XFmZ2exCIfDeG7cuMHk5CQWS0tLeCYmJhgbG8Oiuroaz3fffcfY2BgWruviicfjNDY2YhUIBJienmZsbAyrfD5PNBqlsbERq0gkwtzcHGNjY1jlcjnkweE4Do2NjVhVVVVRKBS4lxxERERERIrIQURERESkiBxERERERIrIQURERESkiBxERERERIrIQURERESkiBxERERERIrIQURERESkiBxERERERIrIQURERESkiBxERERERIrIQURERESkiBxERERERIrIQe47wWCQWCyGVTgcJhQKEYvFsCopKSEYDBKLxbByXRdPLBbDqrS0FE9lZSUlJSVYlJWV4YlGoywvL2NRXl6Op6KiglgshkU0GsVTVlZGLBbDory8HE9paSmxWAyLUCiEx3VdYrEYfpSUlBCLxbAKBoOEw2FisRhWoVAIx3GIxWJYOY5DKBQiFothFQ6HCQaDxGIxrEpKSvDEYjGsXNfFU1lZST6fx6K0tBRPNBolGAxiUVZWhicajZLL5bCoqKjAU15eTiwWwyIajeIpKysjFothUVJSgmd+fp5MJoMfrusSi8WwCgaD5HI5MpkMVvl8nnA4TCwWw2pmZgZ5cCwvL5PJZLDKZrOUlJRwLznIfScajfLMM8/g16FDh/Dr0KFD+HXo0CH8eumll/Drr/7qr/BrYGAAv/bs2YNfqVSKVCqFH729vfT29uJHZ2cnnZ2d+BGNRmlra8OvQ4cO4dehQ4fw69ChQ/h16NAh/Prbv/1b/HrhhRfw63vf+x5+Pf300/i1a9cudu3ahR8nT57k5MmT+NHd3U13dzd+XLhwgQsXLuBHU1MThw4dwuro0aPIg+POnTv8z/5P7E6ffo0W7du5V5ykPvO/Pw877zzDlZdXV2Ul5dz4sQJrNrb26mrq+PDDz/Eqrm5maamJt59912s1q5dSzKZ5OjRoywuLmKxcuVKOjs7+eijj5ibm8OipqaGzZs388knnzA9PY1FZWUlW7Zs4cyZM0xOTmLhui6pVIrz588zPj6ORTAYpL+/n4sXL3LlyhWsdu3axfj4OKOjo1ht376dqakpzp07h1VfXx+Li4ucPn0aq+7ubsLhMKdOncKqo6OD6upqjh07hlVbWxsNDQ28/77WK1bt47W1lbee+89lpeXsWhoaGDDhg0MDw+TzWaxqKurY+PGjXz88cfMzMxgUVVVRW9vL5999hm3bt3CoqysjMcee4yzZ8/y7bffYhEOh9m5cycjIyNcvXoVqyeeeIL169fT3NyM1YcffkhdXR3t7e1YnTx5kvLycjo7O7G6evUq8uBwXZcnnngCq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">
</div>
</div>
<p>We see that we didn’t get the identity matrix and that <a href="https://en.wikipedia.org/wiki/Rank_(linear_algebra)#Rank_from_row_echelon_forms">rank</a> of our matrix is only 23. Usually, it would mean that we have infinitely many solutions but because we are in modulo 2 and our variables can only have 2 values (true, false) it means we have 4 solutions that depend on values for the last 2 variables. In this blog post, we will not tackle the problem of finding a solution with the least amount of clicks and just focus on finding any solution.</p>
<p>Now having Gauss-Jordan elimination we can write our solver:</p>
<div id="34" class="cell" data-execution_count="1">
<div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb2-1"><span class="kw" style="color: #003B4F;
background-color: null;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">naive_solver!</span>(lights)</span>
<span id="cb2-2">    dims<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">size</span>(lights)</span>
<span id="cb2-3">    M<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">create_M_matrix</span>(dims)</span>
<span id="cb2-4">    b<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">vec</span>(lights) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># flatten b vector</span></span>
<span id="cb2-5">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">gauss_jordan!</span>(M,b)</span>
<span id="cb2-6">    <span class="cf" style="color: #003B4F;
background-color: null;
font-style: inherit;">return</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">reshape</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">find_solution</span>(M,b),dims) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># reshape flattened solution into the proper dimensions</span></span>
<span id="cb2-7"><span class="kw" style="color: #003B4F;
background-color: null;
font-style: inherit;">end</span></span></code></pre></div>
</div>
<p>Code is extremely simple as we are basically just creating our M matrix, flatting our lights and just applying Gauss-Jordan elimination and finding a solution. It is worth noting that my “find_solution” function if there are many solutions, chooses one where free variables are 0.</p>
<p>This solver has a time complexity of <img src="https://latex.codecogs.com/png.latex?O((NM)%5E3)"> as the most expensive part of this solver is Gauss-Jordan elimination that works on <img src="https://latex.codecogs.com/png.latex?NM%7B%5Ctimes%7DNM"> matrix.</p>
<p>If you would look for YouTube videos or other blog posts about Lights Out this Gauss-Jordan elimination would be an algorithm used in a solver.</p>
<p>But we can do better turns out we can “cheat” this specific system of equations to solve it much faster and it starts with a method called “Lights Chasing”.</p>
</section>
<section id="lights-chasing" class="level2">
<h2 class="anchored" data-anchor-id="lights-chasing">Lights Chasing</h2>
<p>Lights Chasing is a strategy of clearing lights row by row. It starts by clicking under all turned-on lights in row 1. This makes the entire first row dark. Then it clicks under all turned-on lights in row 2 and this operation repeats until only turned-on lights left are on the bottom row.</p>
<p>Let’s show an example.</p>
<div id="36" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<img width="672" height="480" style="object-fit: contain; height: auto;" src="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAqAAAAHgCAYAAAB6jN80AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAIABJREFUeAHtwXv8EPKhP/7XJ2+fPsql5M7mNpeMdNwezoZoNhpzKUzMLZGaO9N8F/vEyIPT5m5ZLo3TUBizdhZnj0rSmiNjnMbneJDbCi1RK1af3+/zR4/v59HD2cZ4n7Pv5/l8ltb/XwAAoJISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgE6FB++9vf5oMPPsiH2XTTTbPxxhvnf5uFCxempaUlPXr0yJZbbpmP66WXXsry5cuz9dZb55Py9NNP5/3330/Pnj3TtWvXrOqxxx7L7Nmz06dPn+y00075a5YvX57Zs2ensbExvXr1yqdt/vz5eeqpp7J06dLsuOOO2WqrrbLS8uXLM3v27DQ2NqZXr175pH3wwQcZM2ZM1lhjjZx88skBOo4SoEM54IADMm/evHyYSy+9NCNGjMj/NlOmTMnhhx+eY489NnfeeWc+jn333TdTp07NzjvvnKeeeiqflK9+9at57bXX8vjjj2fPPffMqu6/6MHj061113XXbaaaf8Ne+++2523333bLrppnn11VfzYZ5/vlMmjQpO+64Y/bff/98HEuWLMm5556bMWPGpL3+/fvn1ltvzTrrrJN33303u+++ezbddNO8+uqr+aQtW7YsZ5xxRnr06JGTTz45QMdRAnRI3/jGN7LhhhumvX/+53/O/4ueffbZTJ06NVtvvXWuu+661NS3b9+UUrLrrrvmk/Lkk0/mnHPOycknn5z9998/H8cpp5yS8ePHp0ePHjnhhBPSqVOnTJw4Mffdd1+WL1+en/70p/m0NTY2Zvjw4enatWuAjqUE6JDOOuus7LbbblnVs88+mx/96EcppeSyyy5L586dc+WVV+b111/PgQcemAMPPDDz5s3LmDFj8vvf/z5dunTJPvvsk4EDB6aUkunTp2fixInZf/9s2DBgvzqV79Kz549c84552TatGm55557svrqq2fYsGH5/Oc/nzbDhw/PsmXLcu655+bGG2/MwoULc+ihh6Zfv37578ybNy9jxozJCy+8kK233jonnXRSNt9886zqpZdeyi233JI2nTt3zty5c7PSz3/+80yePDkLFy7M5z/+Zx66qnp1q1b2owfPz6zZs3KSSedlDlz5mT+/Pk544wz8lEtW7YsS5cuTUNDQ1Z6/vnnM3bs2CxZsiRDhgzJww8/nLlz52bUqFFpr6WlJTfffHPeeuutHHvssfnSl76Ul156KY888kjazJkzJ7/4xS/Sr1+/PnPf86dd96ZRx99NCtWrMguu+ySQYMGpWvXrlnV7Nmz85Of/CSNjY2ZMWNGtt1227QZPnx4ttpqqzz44IP5wx/+kKampqzU0tKSm2++OW+99VaOPfbYfOlLX8pKDz74YH7xi19k4cKF2WKLLXLyySfnc5/7XNr8+c9/zp133plHH300K1asyC677JJBgwala9euWb58eZYuXZqmpqa0WbBgQS655JJsvPHG+drXvpZbb701CxYsSP/+/XPwwQdnpeeffz5jx47NkiVLMmTIkDz88MOZO3duRo0alTXWWCPA/34lQIf06quvplu3bmlvyy23TM+ePTNz5sz8+te/zqabbprdd989w4cPzwYbbJCLLrooCxcuzO67755XXnklTU1NWbZsWcaOHZtnnnkmV155ZZ566qlcc801+dd/de89dZbWenuu+/Ob3/726xYsSJt7r777rz44otZe+21c8MNN2Tx4sWZNGlS/uu/isrVqzImDFjctNNN+W0007Lql5++eXssccemT9/fjbYYIPMnz8/1157baZMmZJevXqlvTlz5uT2229Pm5aWllx99dU59thjc9ZZZ+Xaa69NQ0NDOnfunKVLl+YHP/hBZs2alc985jOZPHlyxo0bl5dffjk/elPM2DAgJxxxhn5qKZOnZprrrkmO+64Y/bcc888++yz2WuvvbJw4cJ06tQpd911Vzp37pzXX389zc3NWWnRokXZa6+9Mm/evLQZN25cZs2alTfffDMTJ05MmyeffDLjx49Pv379Mnjw4IwbNy5dunRJQ0NDbr/99txxxx157LHHsvrqq6e9qVOnprW1NYcffni23XbbrLTeeutl2rRpWbhwYZqamrLSokWLstdee2XevHlpM27cuMyaNSu77rprRo8enfPPPz9t1lhjjfzpT3/KD3/4w/zud7/LpptumsGDB2fcuHHp0qVLGhoacvvtt+eOO+7IY489lmXLluWaa67Jpptumubm5ixatCjXXHNNevTokSuvvDILFixIm9tuuy0PP/xw9t9/zz77LPZa6+9snDhwnTq1Cl33XVXOnfunNdffz3Nzc1ZY401AvzvVwJ0SIcffnhW9cYbb2SjjTbKbbfdln/6p3/KZZddlq233jptrr/++vTo0SP33XdfFi1alOOPPz633HJL5syZk5122ikPPPBArrzyyqzUtWvXzJgxI88991wOO+ywzJ49O2PHjs3BBx+cvfbaKy0tLXnqqaeyzz77ZKW99torzzzzTB555JF87Wtfy4gRI3LiiSdmVZdccknmz5+fK6+8Mt/61rdy2223ZdCgQfk/+f/5KGHHkp7Bx54YO67777st99+2W+/fJv/Zvefrpp3Pdddele/fumTVrVrbccst885vfzJgxY3LxxRfntttuy0ozZ87MVVddlb59++aTcPHFF2fhwoW54IILcumll+aGG27Iueeem1W9++67ueyyyzJw4MAce+yxmTx5ciZNmpSLLrooP/zhDzNw4MAcc8wxGTt2bN5/2MHz8+TU1NeeONN9KlS5ccccQReeqpp/Lcc89l5513TnstLS1ps91222VVvXv3zkoLFy5Mm3fffTeXXXZZBg4cmGOPPTaTJ0/OpEmTsuuuu+buu+9O9+7dM2XKlOy00075+te/ngkTJmTatGkZMGBAxo8fn6amprzxxhvp0qVLjjjiiDz11FN57rnnsvnmm+fDvP3227nllltyyCGHZNiwYZkwYUIefPDB7L/rn44ouzcOHCXHDBBbn00ktzww035Nxzzw3wj6UE6JAOPfTQrLfeemmvS5cuadOzZ89cdNFFGTFiRN5+++30798/Rx55ZNr0798/fr1y9SpU3PVVVdl2rRpabN48eK0d9BBB2WbbbbJxhtvnDZrrbVWTjrppHTq1Ck777xzWlpasmTJkrR32mmnpXPnzjnooIOyxx575Ne/nVeeOGFrGrGjBlp85/+Z85++yz88EHH6TN1KlT87eYMWNGWltb069fv3zuc59LmxEjRmTMmDGZMWNG2hs2bFjOP/8fFIeffTRtBk6dGgaGxszdOjQjBgxIkuWLEl76667bk4/fQ0NDTk0EMPzeTJk/P222/nwzQ2Nma99dbLG2+8kR133DEHH3xwTjnllHzlK1/J6quvnlU1NjamzfLly/O3WHfddXP66aenoaEhhx56aCZPnpy33347bWbNmpUXXngh06ZNy6233pqpU6emzeLFi9PY2Jj11lsvb7zxRnbcccccfPDBOeWUU/KVr3wlq6++ehYuXJgPs8UWW2TQoEFp079/0yYMCELFixIm0cffTRthg4dmsbGxgwdOjQjRozIkiVLAvzjKAE6pBEjRmS33XbLf2efffbJSnvvvXdWeuGFF7Lvvvvm9ddfT+/evbPrrrvmw6yxxhppr7GxMZ06dcpfstlmm2Wlzp07p82iRYuyqgULFqRNS0tLOnXqlDZ9+vRJm3fffTdrrbVW/pJ33nknbXbYYYes1NjYmDYLFixIez179swnpbW1NQsWLMjqq6+eTTbZJG2ampqyySabpKWlJe2tscYaaWhoSJvGxsb8NQ899FBGjRqVSZMm5aabbspNN92UHXbYIb/85S+z2Wabpb1tttkmbX73u99lVePGjcsrr7ySgQMHpkePHmmzxhprpKGhIW0aGxvT3re+9a38y7/8S7p165a99947W2yxRebPn5+VHnrooYwaNSqTJk3KTTfdlJtuuik77LBDfvnLX2bNNdfMh+natWtWKqVkpdbW1ixYsCCrr756Ntlkk7RpamrKJptskpaWlgD/OEoAVrF06dKceuqpaWhoyFprrZWLLroohx9+eDbffPOMHTs2r7/+ei699NKMGDEiv/rVr3LLLbfkk/DII4/k+OOPz6JFi/L444+noaEh2223Xd588820t9VWW2X+/Pm55ZZbss0226TNyy+/nDZrrbVW/pptt902baZNm5bvfOc7aTNp0qS02W677fJpaWhoyOabb54XX3wxjz32WPbbb7+8+OKLaWlpyd/j5ZdfzpNPPpkhQ4bkxz/+cSZPnpzvfe97eeKJJ3LPPffk3HPPTXsHHnhgGhsb89BDD2XGjBn5whe+kDZz587N6aefnvfeey+DBg3KX7N48eKMHj06a6+9dl577bV06dIl++yzT1Z6+eWX8+STT2bIkCH58Y9/nMmTJ+d73/tennjiidxzzz0ZNGhQPoqGhoZsvvnmefHFF/PYY49lv/32y4svvpiWlpYA/1hKgA5pyJAhWWuttdLerrvumtGjR+e73/1u5syZk2OPPTZ77LFHzjrrrJx88sl55JFH0rlz57S555578s477+Suu+7KJ+Wcc87Jk08+mUcffTQffPBBjjzyyKy33npZ1UknnZSZM2fm6KOPzvHHH5/Zs2dn3LhxOeSQQ/LAAw/kr+nXr1+22mqrTJ48Of3798/222+fMWPGpM2ZZ56Zj2PYsGFZe+21096ECROyquOOOy4jR47MiSeemAEDBuTnP/95Pqp11103bWbOnJmpU6fmM5/5TE477bSUUnL++edn7bXXznvvvZc2G264YVa15ZZb5rzzzsuoUaPSt2/ffPnLX86yZcsybdq0LFu2LMcff3w22WSTLFy4MH9JKSWllCxatCjf/va3M3fu3EyfPj0rLV++PKeddlpKKTn/POz9tpr57333kubDTfcMB/Hcccdl5EjR+bEE0/MgAED8vOf/zzAP54SoEN68skns6pSSmbNmpXRo0enqakpl19+eTbaaKNce+21+fd/fcfPPNGTp0aO67774888wzmTt3bi677LJccsklmTdvXlpaWvL3OP3003P55ZdnxYoV6devX2666aZ8mMGDB+e1117L6NGjc/bZZ6eUkmOOOSY33nhj/hZNTU2ZNGlSTj311DzwwAO5/77s8EGG+TGG2/MUUcdlY9j9uzZWdWyZcuyquHDh+fFF1/M+PHjc/XVV6d/7p1KlT5syZk7/Vfvvtlz59+mT69Om56qqr8tBDD+WOO+7IhRdemMsuuyxtmpqactZZZ2XgwIH5MJdffnk222yzXH755XnooYfSZu211855552Xiy66KH+Lzp07Z9SoUbnwwgtz/fXXp0+fPhk+fHiuuOKKTJ8+PYMHD84dd9yRCy+8MJdddlnaNDU15ayzzsrAgQOzaNGifFTDhw/Piy++mPHjx+fqq69O/7906lTp8yZMyfAP44SoEP5wx/+kL/mz3/+c9praWlJe88880zmzZuXDTbYIJ06dco3v/nNrHT66afn9NNPz0prrrlmWltb097EiRPzYS666KJceOGFef/997P22mtnpcMOOyytra1ZqVOnThk5cmSam5vzxhtvpEePHuncuXP+O/vuu29aW1vT3nbbbZepU6dm6dKlWbRoUTbYYIO0d/vtt+f222/PX/Pqq6/mL7n66qtz9dVXZ6WlS5fm+9/fm644YasWLEia665Zj772c+mlJIuXbqksbExra2taW/w4MEZPHhwVlp99dUzZcqULFu2LKWUtBk4cGAGDhyYP/7xj1myZEk22mijrLbaavlLhg0blmHDhuWtt97K+++/n4033jgNDQ1ZqVu3bmltbU17gwcPzuDBg7PSeeedl6FDh2bZsmXp3r172owaNSorDRw4MAMHDswf/jHLFmyJBtttFFWW221tOnWrVtaW1uz0hZbbJHW1ta0d8QRR6S1tTUrLV26NN/vdzww03ZMWKFVlzzTXz2c9+NqWUdOnSJcA/hhKAj6ihoSEbbbRRPg1NTU1pamrK36KhoSGbbLJJ/h5NTU1pampKLSeccEJ+9rOf5ZhjjskJJ5yQe++9N6+/noOOOCANDY25qPo3LlzVtW9e/d07949H8V6662Xv0eXLl3SpUuX/CXdu3dP9+7d8/c64YQT8rOf/SzHHHNMTjjhhNx77715/fXXc8ABB6SxsTHAP4YSAKoZO3ZszjzzzDz44IMZP358unXrluOOOy6jR48Of93YsWNz5pln5sEHH8z48ePTrVu3HHfccRk9enSAfxwlAP/DXnvttbS2tqaUkv/XbbDBBrnrrrvSZunSpWlqagp/uw022CB33XVX2ixdujRNTU0B/vGUAPwPW2edddIRNTU1hY+vqakpwD+mEgAAqKgEPqIbb7wxzzzzTLbYYosAwN/jpZdeyk477ZRhw4aFjqMEPqKZM2fm0UcfzQ477BBob/HixVm2bFkWL14caK9r167p3LlzunbtGmjvhRdeyOLFizNs2LDQcZTAR7TVVlvlnXfeyZ133hlob8KECZkxY0buueeeQHtHHXVUvvCFL+TII48MtDdq1Kg0NjaGjqUEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKiEDm3ixInp169funbtGgCAGkrosF555ZV84xvfSEtLS7p27RoAgBpK6HDmzJmTa665Jvfff3+WLVsWAICaSuhwSinZbrvtcuqpp+bSSy8NAEBNJXQ4n/vc53L22WfnpZdeyqWXXhoAgJpK4C9obm7OyJEj016fPn2yzjrrBADg4yiBv6C5uTnNzc1pr7m5ObNnzw4AwMdRAgAAFZUAAEBFJQAAUFEJHVa3bt3y3e9+N2uvvXYAAGopocPq1q1bmpubAwBQUwkAAFRUAgAAFZUAAEBFJQAAUFEJAABUVAIAABWVAABARSUAAFBRCQAAVFQCAAAVlQAAQEUlAABQUQkAAFRUAgAAFZUAAEBFJQAAUFEJAABUVAIAABWVAABARSUAAFBRCQAAVFQCAAAVlQAAQEUlAABQUQkAAFRUAgAAFZUAAEBFJQAAUFEJAABUVAIAABWVAABARSUAAFBRCQAAVFQCAAAVlQAAQEUlAABQUQkAAFRUAgAAFZUAAEBFJQAAUFEJAABUVAIAABWVAABARSUAAFBRCQAAVFQCAAAVlQAAQEUlAABQUQkAAFRUAgAAFZUAAEBFJQAAUFEJAABUVAIAABWVAABARSUAAFBRCQAAVFQCAAAVlQAAQEUlAABQUQl8DEuWLMm9994baO/NN9/M+uuvnyOOOCLQ3vrrr58333wz9957b6C95557Lr179w4dSwl8DEuXLs20adMC7W244YYBgL+mBD6GxYsXZ+LEiYH2jjrqqLSZOHFioL2jjjoq22yzTQYMGBBo7/nnnw8dTwkAAFRUAgAAFZUAAEBFJQAAUFEJAABUVAIAABWVAABARSUAAFBRCQAAVFQCAAAVlQAAQEUlAABQUQkAAFRUAgAAFZUAAEBFJQAAUFEJAABUVAIAABWVAABARSUAAFBRCQAAVFQCAAAVlQAAQEUlAABQUQkAAFRUAgAAFZUAAEBFJQAAUFEJAABUVAIAABWVAABARSUAAFBRCQAAVFQCAAAVlQAAQEUlAABQUQkAAFRUAgAAFZUAAEBFJQAAUFEJAABUVAIAABWVAABARSUAAFBRCQAAVFQCAAAVlQAAQEUlAABQUQkAAFRUAgAAFZUAAEBFJQAAUFEJAABUVAIAABWVAABARSUAAFBRCQAAVFQCAAAVlQAAQEUlAABQUQkd0oIFCzJt2rS8++672WOPPbLddtsFAKCGEjqcWbNmpV+/ftliiy2y3nrr5ZRTTskFF1yQSy65JAAAn7YSOpzzzjsvhx12WG655Za0mT59evbZZ58cccQR6dWrVwAAPk0ldCgrVqzIE088kUsuuSQr7bXXXll33XXz9NNPp1evXgEA+DSV0KF06tQp7777bkopWWn69Ol5++2306tXrwAAfNpK6HBKKWnT2tqa8ePHZ+jQoTn33HPTq1evrKq5uTkjR45Me3369AkAwMdVQoc0Z86cDBo0KK+++mpuvvnmHH300fkwzc3NaW5uTnvNzc158MEHAwDwcZTQ4Tz++OM54IADcs455+TCCy9MU1NTAABqKaFDaW1tzaBBg3LBBRdkxIgRAQCorYQO5YUXXsicOXPy8MMPZ+bMmWnvwgsvzBe/+MUAAHyaSuhQGhsb893vfjcfpnv37gEA+LSV0KFsscUWaW5uDgDA/5QSAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKIS+Bi6du2aI444ItDe+uuvnzZHHHFEoL31118/b775Zu69995Ae88991x69+4dOpYS+Biampqyzz77BNqbN29e2my33XaB9ubNm5eFCxfm97/faC9l19+Ob179w4dSwl8DF26dMmAAQMC7U2YMCFtBgwYEGhvwoQJeeGFFzJx4sRAe8uWLcuhhx4aOpYSAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISOqRXX301jz32WFasWJEvfvGL+exnPxsAgBpK6HAeeOCBHHPMMdl9992zYMGC/P73v8+4ceNy9NFHBwDg01ZCh3Peeeelubk53/rWt9Lm3HPPzbe/e0cffTRAQD4tJXQoSxbtizrr79+DjvssKx04IEH5kc/+lFaW1vT0NAQAIBPUwkdSufOnfP444+nzSuvvJIXXnghV111VY477rg0NDQEAODTVkKHdcUVV2TcuHHp0qVLrr/++nyY5ubmjBw5Mu316dMn66yzTgAAPo4SOqwbbrgh119/fW688cbssssumT9/frp27Zr2mpub09zcnPaam5sze/bsAAB8HCV0KC+99FLuvvvuDB8+PG0aGhoybNiwnHPOOfn1r3+dvn37BgDg01RCh1JKybe/e0ccsgh6dmzZ9q0tLTkgw8+yMYbbxwAgE9bCR3KZpttlqOOOipf+9rXMnTo0LS2tuaHP/xhjjzyyPTs2TMAAJ+2EjqcO+64I2PGjMmMGTNSSsmFF16YE088MQAANZTQ4TQ2NuaMM87IGWecEQCA2koAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikrgI5o7d25aWlrygx/8INDeM888kzavvvpqoL1nnnkmL7/8ct5/1Ae8uXL8/cuXNDx1ICH9H222+fJUuWZMmSJSGZOXNm9txzz5BsvfXWabNkyZKQzJw5M3vuuWdItt5662y99dbp27dvSGbOnJk999wzJC+99FK233770LGUwEd0wQUXhP+roaEhU6ZMCayqoaEhU6ZMCayqoaEhU6ZMCXRUJQAAUFEJAABUVAIAABWVAH+X4cOHBz7M8OHDAx9m+PDhgY6sBPi7XHHFFYEPc8UVVwQ+zBVXXBHoyEoAAKCiEgAAqKgEAACfYpEEAAADLUlEQVQqKgEAgIpKgL/Lrbfemm222SZ77713oM2LL76YsWPH5rXXXst2222XIUOGpEePHoEnnngiP/nJT/L2229n5513zpAhQ9KlS5dAR1MCfGxz587Nd77znVx11VXZe++9A88/3x69+6dQw45JLvttlsmTZqU6667Lk899VQ23HDD0HFNmTIlBx54YAYPHpzNN988119/fSZMmJDp06enU6dOgY6kBPjIFi1alC996Uv57W9/mw8++CCw0g9+8IPsvffeueuuu9LmnHPOSe/evXPjjTdm5MiRoeO69tprc9JJJ+X6669Pm0MOOSS77bZbfve736VXr16BjqQE+Mi6du2aH/3oR2nz1a9+NbBSKSXHHHNMVlpttdWy+eab54033ggd23777ZfddtstK2277bZpaGhIY2NjoKMpAT6y1VZbLb17906bxsbGwErXXXdd2vvNb36TX/3qV7njjjtCx3bGGWekzbPPPpsHH3wwDzzwQE488cRsv/32gY6mBIBP3LJly3LNNdfkkksuyTe/+c0MGDAg0GbevHl54oknMnfu3PTp0yfvv/9+GhsbAx1JCQCfqN/85jc57rjjsuaaa+ahhx7KvvvuG1ipb9++6du3b95555307Nkzu+yyS77+9a8HOpISAD4xs2fPzpe/OWMHDkyZ555ZhoaGgIrVqzIQQcdlKuuuio77rhj2qyzzjr5/Oc/n6effjpf/rXAx1JCQCfmIsvvjhHHnlkzjrrrMBKnTp1yttvv50f/jHufLKK9Nm3rx5+Y/+I+ccsopgY6mBIBPzPTp0/OnP/0pP/nJT9LekCFDMnr06NBxXXXVVTnooIMyY8aMbLzxxpkyZUr69u2bI488MtDRlAB/l7vuuitbbrlloM3999+fD7PpppuGjq1Pnz55/vnn8/DDD+e9997L2WefnS9+8YuBjqgE+LvsueeegZX23XffwH9nk002yQknnBDo6EoAAKCiEgAAqKgEAAAqKgEAgIpKAACgohIAAKioBAAAKioBAICKSgAAoKISAACoqAQAACoqAQCAikoAAKCiEgAAqKgEAAAqKgEAgIr+P+Jc1zP8hDcKAAAAAElFTkSuQmCC">
</div>
</div>
<p>In the first row, we have lights (1,1) and (1,3) turned up so we click on (2,1) and (2,3)</p>
<div id="38" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<img width="672" height="480" style="object-fit: contain; height: auto;" src="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/data:image/png;base64, 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TlyJIMHDyY2Npb/BQbypxoxYgR33HEH1e3bt4/3338fwzCYPHkyHh4evPbaaxw7dowuXbrQpUsXTpw4QVJSEgcOHMDb25u7776bfv36YRgGu3btYtWqVcTGxlJUVMS2bdto1KgRI0eOZMeOHaxcuRJ3d3fi4+Np0qQJpvHjx1NRUcGoUaN49913KS4u5uGHH6Zr1678khMnTpCUlEReXh4RERE88cQT1K9fn+oOHTrE/PnzMXl4eHDkyBEcPvroIzZv3kxxcTFNmjThySefpHbt2piSk5PJysriiSeeIDc3l5MnT/LMM8/wW1VUVFBeXo7FYsHhu+++Y968eZSWlvLUU0+xZcsWjhw5wtSpU3GWn5/P3LlzKSwspH/nTu3JlDhw6xdetWTLm5uWzatImuXbty4cIFli5dys6dO7HZbLRs2ZJBgwbh4+NDdTk5OXz44YdYrVYyMjKIjIzENH78eBo2bMj69espKCjA09MTh/z8fObOnUthYSH9+/enc+fOOKxfv55NmzZRXFxMgwYNGDx4MDfffDOmCxcusHTpUnbu3InNZqNly5YMGjQIHx8fLl68SHl5OZ6enpiKioqYNGkSN9xwAw8++CALFiygqKiInj170r17dxy+++475s2bR2lpKU899RRbtmzhyJEjTJ06FS8vL+Tvpby8nNWrV+Pl5UVERATffPMNO3fu5O6778a0atUqvvrqK0zl5eUUFhaSmpqKqaSkhPnz5zN48GBM2dnZLF++nBMnTnD77bfz1FNP4eXlhWnSpEkUFRWRkJDABx98QOPGjenSpQvO3n/ffbt20d8fDyRkZGYEhMTKS4uZurUqXh5eXHmzBnmzp3L3r178fPzo3PnzvTq1QuLxcLFixcpLy/H09MTU1ZWFsnJyURHR+Pr68vq1atxd3dn2LBhNGnSBIdPPvmElJQUgoKCiI+PZ9q0aYSFhTF27Fh+j7KyMsrLy6lRowYOn3zyCSkpKQQFBREfH8+0adMICwtj7NixOPv0009ZsWIFVquVZ599lptvvpmMjAz279+Padu2bTRr1owWLVpw5swZ5s6dy969e/Hz86Nz58706tULi8VCdTk5OXz44YdYrVYyMjKIjIzENH78eBo2bMj69espKCjA2aeffsqKFSuwWq08++yz3HzzzZjKy8tZuHAhWVlZXLx4kWbNmjF06FBq166N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93dKbRYkD9O9MWLdLh4kWvB4CrExcXx4IMPcuDAAaKiopg7dy5Wq5Vu3bphSktLY9++fcTHxxMcHExKSgqnT59mxowZ+Pn5MXXqVDw9PbnrrrsQEbnexMXF8eCDD3LgwAGioqKYO3cuVquVbt26YUpLS2Pfvn3Ex8cTHBxMSkoKp0+fZsaMGfj5+TF16lQ8PT256667+K121qjBVA8P5I/TyGZjSFUV8tcwz2rlWzc35A9UUUGHixe5FgyuQseOHRk/fjy33347ISEhnDt3jrVr12K1WjFt2LCBRYsWER8fj5ubGytWrKBv374EBQVhtVoJCQlh9erV+Pn5ISJyvenYsSPjx4/n9ttvJyQkhHPnzrF27VqsViumDRs2sGjRIuLj43Fzc2PFihX07duXoKAgrFYrISEhrF69Gj8/P0REricGVykhIYGRI0dy9OhRIiMjcXNzw+GNN97gjTfewKFt27bk5+fz/fff4+7uTnh4OBaLBRGR61VCQgIjR47k6NGjREZG4ubmhsMbb7zBG2+8gUPbtm3Jz8/n+++/x93dnfDwcCwWCyIi1xuDa8DHx4dbb72VX8MwDKKiohAR+V/h4+PDrbfeyq9hGAZRUVGIiFzPDEREREREXMhARERERMSFDEREREREXMhARERERMSFDEREREREXMhARERERMSFDEREREREXMhARERERMSFDEREREREXMhARERERMSFDEREREREXMhARERERMSFDEREREREXMhARERERMSFDEREREREXMhARERERMSFDEREREREXMhARERERMSFDEREREREXMhARERERMSFDEREREREXMhARERERMSFDEREREREXMhARERERMSFDEREREREXMhARERERMSFDEREREREXMhARERERMSFDEREREREXMhARERERMSFDEREREREXMhARERERMSFDEREREREXMhARERERMSFDEREREREXMjgGlmwYAG33HIL0dHRXM5XX33Fhx9+yPnz53nooYe49957ERG53i1YsIBbbrmF6OhoLuerr77iww8/5Pz58zz00EPce++9iIhcbwyugSNHjvDCCy/w+uuvEx0dzS/Jysqic+fO9O3bl4CAAB555BGSkpIYMGAAIiLXqyNHjvDCCy/w+uuvEx0dzS/Jysqic+fO9O3bl4CAAB555BGSkpIYMGAAIiLXE4OrUFJSQufOnfnqq6+oqqriSqZOnUrfvn2ZN28eprCwMCZOnMiAAQMQEbnelJSU0LlzZ7766iuqqqq4kqlTp9K3b1/mzZuHKSwsjIkTJzJgwABERK4nBlfBx8eH999/H1O3bt24HLvdzqZNm1izZg0OvXv3ZsSIERw4cICoqChERK4nPj4+vP/++5i6devG5djtdjZt2sSaNWtw6N27NyNGjODAgQNERUUhInK9MLgKNWrU4LbbbsNktVq5nKKiIioqKqhXrx4OoaGhGIbB8ePHiYqKwtm+ffvYv38/zgoLCxER+buoUaMGt912Gyar1crlFBUVUVFRQb169XAIDQ3FMAyOHz9OVFQUzvbt28f+/ftxVlhYSBgiIn99Bi5SUlKCycfHB2c+Pj6cOXOG6vbv309KSgrOqqqqEBG5HpWUlGDy8fHBmY+PD2fOnKG6/fv3k5KSgrOqqirCEBH56zNwkYCAAEwlJSU42Gw2zp49S2BgINX16dOHPn364Oz5559n/79iIhcbwICAjCVlJTgYLPZOHv2LIGBgVTXp08f+vTpg7Pnn38eEZG/AwMXqVmzJrVr1yYvL4/mzZtj+uGHH7DZbNSrVw8Rkf9lNWvWpHbt2uTl5dG8eXNMP/zwAzabjXr16iEicj0x+AP9+OOPnD59mhYtWmDq06cPS5YsoVevXpiWLFlCmzZtqF+/PiIi/2t+/PFHTp8+TYsWLTD16dOHJUuW0KtXL0xLliyhTZs21K9fHxGR64nBH2jGjBksWrSIwsJCTC+88AL33HMP9913H7Vr12br1q1s2LABEZH/RTNmzGDRokUUFhZieuGFF7jnnnu47777qF27Nlu3bmXDhg2IiFxvDK6R5cuXEx4ejrNhw4bRo0cPHOrXr8+XX37Jli1bKC0tZfr06dx0002IiFzvli9fTnh4OM6GDRtGjx49cKhfvz5ffvklW7ZsobS0lOnTp3PTTTchInK9MbhG2rVrR3URERFERETgzN/fn3/84x+IiPwvadeuHdVFREQQERGBM39/f/7xj38gInI9MxARERERcSEDEREREREXMhARERERcSEDEREREREXMhARERERcSEDEREREREXMhARERERcSEDEREREREXMhARERERcSEDEREREREXMhARERERcSEDEREREREXMhARERERcSEDEREREREXMhARERERcSEDEREREREXMhARERERcSEDEREREREXMhARERERcSEDEREREREXMhARERERcSEDEREREREXMhARERERcSEDEREREREXMhARERERcSEDEREREREXMhARERERcSEDEREREREXMhARERERcSEDEREREREXMhARERERcSEDEREREREXMhARERERcSEDEREREREXMhARERERcSGDa+Szzz4jICCAyMhIfsnZs2fZt28fzqxWKy1btkRE5Hr22WefERAQQGRkJL/k7Nmz7Nu3D2dWq5WWLVsiInI9MbgGLly4wLBhwxgzZgyRkZH8ki1bttCrVy+chYSEUFBQgIjI9erChQsMGzaMMWPGEBkZyS/ZsmULvXr1wllISAgFBQWIiFxPDK5CWVkZL730Eh9/DHffPMNV5KXl0f37t3ZsGEDIiLXu7KyMl566SU+/vhjvvnmG64kLy+P7t27s2HDBuTvyQ944MIF5I/la7cjf28GV8FisRAWFsbgwYOZNGkSV/L9998TFRWFyW63Y7FYEBG5XlksFsLCwhg8eDCTJk3iSr7/nuioqIw2e12LBYL8vcSZrPxYVkZInJ5BlfB09OT5557DtOMGTO4kry8PMrLywkJCaGkpIR27doxa9YsmjVrRnXHjh3j+PHjODt37hyVlZV8/fXXiOscO3YMU+PGjamsrERcw2q1Yjp27Bhubm6I65w4cYLg4GCulqenJ8899xymGTNmcCV5eXmUl5cTEhJCSUkJ7dq1Y9asWTRr1ozqjh07xvHjx3F27tw5PPj/CwkJoXm9esgfJ7y0FHJykL+GyMhI3L29kT9OyJEjcPQo14KBCx06dIgWLVowf/58DMMgISGBbt268e233+Lr64uzjRs3MnfuXJwFBQVRXl7O1q1bEdeLiYlBXC83N5fc3FzEdQ4ePEhwcDCudujQIVq0aMH8+fMxDIOEhAS6devGt99+i6+vL842btzI3LlzcRYUFIR7zZr8P+zBC1TVBaL378+GH2wUULkb6obwAgEKWioqRISioWI5Kr2K2eTlKNrJshlTRwenMnNwSKfGHDgeK+2m1ul4G8MyEztqqamZJZDlKDgoIogSKvCu/V+L9d8vC505Q/0Q5vs8Z9q1o1N4OEMGDEB+Pr4XLnDm/Hns7iguxrmmBjFXjbMzxXfcgV3MoEF08/VFfj6d/ud/OFNXR0VFBVaaxsBEp06dwtHatWvx9fVl9+7dDB8+HEfTpk1j2rRpOJo3bx4ffvghr7zyCmKenj17cu+997JmzRqqqqoQc7Rp04bHHnuMe++9l549eyLmuXLlCs3h1KlTOFq7di2+vr7s3r2b4cOH42jatGlMmzYNR/PmzcP6l7/QuaIC7/zf7h75kzk5+P8zTd4vfwy0nyca2rofOYMdm+vX8+3hoH8fNpeucLQq1dpB1TTNAYmqamp4ccff8Td3Z16bdu2JSAggIsXL/KPqqur48cff0TMc+PGDeyqq6v58ccfEXM4OTlhZxgGVqsVMY9hGNTV1WGmmpoafvzxR9zd3anXtm1bAgICuHjxIv9bhmFgtVqRn4+TqysN1QHXkJ+bK2Dh/3Xt2jV+vHED+fncuHGDn4qBSS5cuECnTp3YunUrQ4cOxe706dOcOXOG3r17IyLyr+zChQt06tSJrVu3MnToUOxOnz7NmTNn6N27N9IyfOvkRD93d+TndeDKFcJqa5GWy+BntGDBAtavX8/3339PQEAAU6dOZdKkSTz66KP4+Pjw6quv8uijjxIZGYmIyL+aBQsWsH79er7/nsCAgKYOnUqkyZN4tFHH8XHx4dXX32VRx99lMjISEREWhODn8js2bPp1asXjuLj42nfvj31/vjHP9KnTx8+/vhjioqKyMjIIC0tDRGR1m727Nn06tULR/Hx8bRv3556f/zjH+nTpw8ff/wxRUVFZGRkkJaWhohIa2PwE5k9ezYNJSUlkZSURD3DMJg6dSpTp05FRORfyezZs2koKSmJpKQk6hmGwdSpU5k6dSoiIq2ZgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIigya6fv06u3bt4uzZs4SGhjJw4EBupbKykry8PK5cucK9996Ln58fIiKt1fXr19m1axdnz54lNDSUgQMHciuVlZXk5eVx5coV7r33Xvz8/BARaW0MmqC8vJzY2FgqKyuJiIhg37599OnThy1btuDq6kpDRUVFJCYmUldXR/v27Zk2bRo7duzgnnvuQUSktSkvLyc2NpbKykoiIiLYt28fffr0YcuWLbi6utJQUVERiYmJ1NXV0b59e6ZNm8aOHTu45557EBFpTQyaIDMzk9raWk6cOIGbmxvnz58nKiqK1atX8/jjj9PQc889R8eOHdm5cyfOzs48/vjjzJ49m7y8PEREWpvMzExqa2s5ceIEbm5unD9/nqioKFavXs3jjz9OQ8899xwdO3Zk586dODs78/jjjzN79mzy8vIQEWlNDJpg/79jBkzBjc3N+z8/PwYOHAgR44coTHvvPMOr7zyCs7Oztilp6cTHh7O2bNn6dSpEyIircn+/fsZM2YMbm5u2Pn5+TFw4ECOHDlCY9555x1eeeUVnJ2dsUtPTyc8PJyzZ8/SqVMnRERaC4Mm2L59O05OTtS7ePEin376KQsXLqShy5cvc/HiRcLCwqgXGhqKxWLhhx9+oFOnToiItCbbt2/HycmJehcvXuTTTz9l4cKFNHT58mUuXrxIWFgY9UJDQ7FYLPzwww906tQJEZHWwqAJnJ2dqbd/34mTZpEjx49mDJlCg1duHABuw4dOlDPyckJT09PSkpKaCgjI4PFixfjKDY2FhGRlsLZ2Zl6+/fvZ9KkSfTo0YMpU6bQ0IULF7Dr0KED9ZycnPD09KSkpISGMjIyWLx4MY5iY2NJRETk9mfQRJcuXWL27Nls2rSJp59+mnnz5uHq6kpDnp6e2F29ehVHV69excPDg4YyMjLIyMjA0bx589ixYwciIi3FpUuXmD17Nps2beLpp59m3rx5uLq60pCnpyd2V69exdHVq1fx8PCgoYyMDDIyMnA0b948yMtDROR2Z9AE58+fJzY2lsjISE6ePMkdd9zBzfj4+ODq6kpRURHh4eHYnT9/nhs3bhAYGIiISGtz/vx5YmNjiYyM5OTJk9xxxx3cjI+PD66urhQVFREeHo7d+fPnuXHjBoGBgYiItCYGTfCb3/wGm83Gxo0bsVgs3IrFYiEpKYmtW7cyePBg7LZt20ZQUBBhYWGIiLQ2v/nNb7DZbGzcuBGLxcKtWCwWkpKS2Lp1K4MHD8Zu27ZtBAUFERYWhohIa2LQBJs3b8bb25uRI0fiaMSIEUyfPp0FCxawfv16vv/+e+zmzp3LAw88gJ+fHx06dGDRokUsXboUJycnRERam82bN+Pt7c3IkSNxNGLECKZPn86CBQtYv34933/PXZz587lgQcewM/Pjw4dOrBo0SKWLl2Kk5MTIiKtiUETTJ8+ndraWhqy2WzYxcfH0759e+rFxsaSm5vL66+/zsmTJ/mP/gPRo0ahYhIazR9+nRqa2tpyGazYRcfH0/79u2pFxsbS25uLq+/jonT57kP/7jPxg1ahQiIq2NQRMsWrSIW0lKSiIpKQlHMTExxMTEICLS2i1atIhbSUpKIikpCUcxMTHExMQgItKaGYiIiIiImMhARERERPzPib4AACAASURBVMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMvgJVFVVce7cObp06YJhGIiIyP+vqqqKc+fO0aVLFwzDQETkX51BE9TU1DBz5kyys7Np27YtNTU1/OY3v2H+/Pk0ZseOHYwaNQpHHTt25Pvvv0dEpLWpqalh5syZZGdn07ZtW2pqavjNb37D/PnzacyOHTsYNWoUjjp27Mj333+PiEhrYtAE2dnZbNy4kePHjxMWFsauXbtITk7mrrvu4qGHHqKhb7/9ll69erFs2TLqubq6IiLSGmVnZ7Nx40aOHz9OWFgYu3btIjk5mbvuuouHHnqIhr799lt69erFsmXLqOfq6oqISGtj0AR/+ctfeOSRRwgLC8MuISGB5ORkduzYwUMPPURDhYWF3HPPPdx3332IiLR2f/nLX3jkkUcICwvDLiEhgeTkZHbs2MFDDz1EQ4WFhdxzzz3cd999SMsUWlvL+cuXkZ+XK9LSGTTBggULCAgIoF5dXR3Hjx9n7NixNCY/P58OHTqQmppKeXk5AwYM4Omnn8bd3Z1/lMViwc3NDTGPYRjYWa1WamtrEXNYrVbsbty4QXV1NWKeGzdu4OzsTFMtWLCAgIAA6tXV1XH8+HHGjh1LY/Lz8+nQoQOpqamUl5czYMAAnn76adzd3fnfunHjBtXV1cjPx/naNdz5f1kAK9IcXF1dcTMM5Odj1NTAtWv8FAyaoG/fvtS7fPkyU6ZMoby8nBkzZtCYgoICampqmDNnDoZhkJWVxYcffsiePXtwcnLC0Z/Gf+/Oc/48jPz4927doxc+ZMxHyPPfYYYr5PP/2UTz/9FDHP559/TkxMDE3Vt29f6l2+fJkpU6ZQXl7OjBkzaExBQQE1NTXMmTMHwzDIysriww8/ZM+ePTg5OeHoz3/+M3/+859x5Ofnx13t2nGmXTuOHz3KvldeQX4+vhcuMKpzZ+zuKC7GuaYGMVeNszPFd9yB3cMPPsgFX1/k59Prf/6HM8ePU1FRgZWmMfgJrF27lrlz5xIeHk5eXh6BgYE05vXXX6dHjx54e3tjN2zYMEJCQtizZw/x8fE4GjFiBHfffTeO1q5dS0FBAYMHD0bMc+bMGb755hvi4+NxcXFBzHH9+nV2797NN998w1/+lfEPKdPnyYmJoafytq1a5k7dy7h4eHk5eURGBhIY15/XV69OiBt7c3dsOGDSMkJIQ9e/YQHx+PoxEjRnD33XfjaO3atbT7y1/oXFHBhxYLuZWVyM/nzqtXmXnmDNJ8nGtq6HzmDHYD+/fn6p13Ij8f2+nTdN6xg3ZANU1j0AQ1NTWMHz+eAwcOkJ2dTUpKCrcSExODI5vNRpcuXTh16hTx8fE4CgwMJDAwEEcbN27E1dWVXr16Ieapra3lm2++ITw8nDZt2iDmqKqqYvfu3RQVFXH06FHEPNXV1fwUampqGD9+PAcOHCA7O5uUlBRuJSYmBkc2m40uXbpw6tQp4uPjcRQYGEhgYCCONm7cSL2/e1vHL10Cfn5XK+tRW4fPXr0oPauu5CfjzUggJ+KQRMsW7aMI0eO8OWXX9K+fXtupaioiFGjRvHGG28QFhaG3ZUrVygpKaFr166IiLQ2y5Yt48iRI3z55Ze0b9+eWykqKmLUqFG88cYbhIWFYXflyhVKSkro2rUr0jLUdupEdWYm8vNy+9WvsJw5g7RcBk2wdu1aQkJCyM7OxlHv3r1JTExkzZo1fPTRR6xfv57AwEDatm3Lo48+SkZGBj4+Pjz/PP07NmTQYMGISLS2qxdu5aQkBCys7Nx1Lt3bxITE1mzZg0fffQR69evJzAwkLZt2/Loo4+SkZGBj48Pzz/PD179mTQoEFIC+HpyY3hw5GfV93ixViQlsygCWw2G1VVVWzZsgVHLi4uJCYmUl1dTWVlJfXeffddnnrqKX75y1/i4uLCkCFDyMnJwcnJCRGR1sZms1FVVcWWLVtw5OLiQmJiItXV1VRWVlLv3Xff5amnnuKXv/wlLi4uDBkyhJycHJycnBARaU0MmiA3N5dbmTFjBjNmzKBeQEAA69evR0TkX0Fubi63MmPGDGbMmEG9gIAA1q9fj4hIa2cgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBk1QW1vLihUrWLduHaWlpURFRfH8888TGRnJzeTk5JCTk8OVK1d48MEHWbx4MU5OToiItDa1tbWsWLGCdevWUVpaSlRUFM8/zyRkZHcTE5ODjk5OVy5coUHH3yQxYsX4+TkhIhIa2LQBGvWrGHJkiWsWrUKHx8fsrKyGDZsGCdPnqRt27Y09PbbbzN79mxeffVVfHx8mDFjBtevX2fp0qWIiLQ2a9asYcmSJaxatQofHx+ysrIYNmwYJ0+epG3btjT09ttvM3v2bF599VV8fHyYMWMG169fZ+nSpYiItCYGTbBhwwamT5/OmDFjsOvevTs2m41jx47Rv39/GlqxYgVPP/00aWlp2GVlZTFlyhQWL16M1WpFRKQ12bBhA9OnT2fMmDHYde/eHZvNxrFjx+jfvz8NrVixgqeffpq0tDTssrKymDJlCosXL8ZqtSIi0loYNMGiRYuw2WzUq66uxi44OJiGampqOHDgAMuWLaNeYmIiFy9e5JtvviEqKgoRkdZk0aJF2Gw26lVXV2MXHBxMQzU1NRw4cIBly5ZRLzExkYsXL/LNN98QFRWFiEhrYdAEgwYNwi43N5fMzEz2799PTk4OAQEBNFRSUkJtbS3+/v7Ua9euHW5ubvztb3+joQ0bNrBhwwYcXb9+HRGRlmLQoEHY5ebmkpmZyf79+8nJySEgIICGSkpKqK2txd/fn3rt2rXDzc2Nv/3tbzS0YcMGNmzYgKPr168ThYjI7c/gJ9ClSxdGjBiBYRjk5OQwYsQI/P39cXTt2jXsXFxccGQYBlVVVTQUHh7O2LFjcfThhx9SUlKCiEhL0qVLF0aMGIFhGOTk5DBixAj8/f1xdO3aNexcXFxwZBgGVVVVNBQeHs7YsWNx9OGHHyIi0hIY/ATCwsIICwtj1qxZRERE8N577zF9+nQcBQQEYFdWVka9GzduUFlZSceOHWkoIiKCiIgIHB06dIiSkhJERFqSsLAwwsLCmDVrFhEREbz33ntMnz4dRwEBAdiVlZVR78aNG1RWVtKxY0caioiIICIiAkeHDh1CRKQlMPgn1dbW4u3tzfvvv09CQgJ2FosFf39/iouLacjNzY3g4GAOHz7M3Xffjd3hw4cxDIOuXbsiItKa1NbW4u3tzfvvv09CQgJ2FosFf39/iouLacjNzY3g4GAOHz7M3Xffjd3hw4cxDIOuXbsiItKaGPyTnJyciI+PJzMzk379+uHu7s5HH33EZ599xnPPPYfd7t27OX78OOnp6dhNmjSJl19+mfHjx9OmTRsyMzMZMWIEvr6+iIi0Jk5OTsTHx5OZmUm/fv1wd3fno48+4rPPPuO5557Dbvfu3Rw/fpz09HTsJk2axMsvv8z48eNp06YNmZmZjBgxAl9fX0REWhODJli5ciWjR4/Gx8cHT09PqqqqWL58ObGxsdht3ryZtWvXkp6ejt0zzzzDl19+SWBgIFarlU6dOrF161ZERFqjlStXMnr0aHx8fPD09KSqqorly5cTGxuL3ebNm1m7di3p6enYPfPMM3z55ZcEBgZitVrp1KkTW7duRUSktTFogqCgIL744gtOnz5NZWUl3bp1w2q1Ui8zM5PMzEzqubm58V/9V+UlJRw9epVgoODERFprYKCgvjiiy84ffo0lZWVdOvWDavVSr3MzEwyMzOp5+bmxn/9139RUlLC1atXCQ4ORkSkNTJoIovFQlBQEP8b/v7+iIj8K7BYLAQFBfG/4e/vj4hIa2YgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMigCWpra1mxYgXr1q2jtLSUqKgonn/+eSIjI2nMoUOHmD9/Po68vb158803ERFpbWpra1mxYgXr1q2jtLSUqKgonn/+eSIjI2nMoUOHmD9/Po68vb158803ERFpTQyaYM2aNSxZsoRVq1bh4+NDVlYWw4YN4+TJk7Rt25aGDh06xLfffsukSZOo5+HhgYhIa7RmzRqWLFnCqlWr8PHxISsri2HDhnHy5Enatm1LQ4cOHeLbb79l0qRJ1PPw8EBEpLUxaIINGzYwffp0xowZg1337t2x2WwcO3aM/v3701BBQQHx8fFkZGQgItLabdiwgenTpzNmzBjsunfvjs1m49ixY/Tv35+GCgoKiI+PJyMjg6aKq6mB6mrk5+NbV4fcPlyzs6nz80N+Ps579vBTMWiCRYsWYbPZqFddXY1dcHAwjcnPz6dbt26sWrWK8vJyBgwYQHx8PCIirdGiRYuw2WzUq66uxi44OJjG5Ofn061bN1atWkV5eTkDBgwgPj6ef0ZsTQ2xNTWI/KtwyclBWg6DJhg0aBB2ubm5ZGZmsn/fnJycggICKAxBQUFbNu2jZEjR2IYBosXL2batGmsWLGChvLy8ti7dy+ODh06xJkzZ8jKykLMU1RURGFhITdu3MDFxQUxx/Xr19m3bx9/etfuXbtGmKempoazpw5Q1MNGjQIu9zcXDIzM9m/fz85OTkEBATQmIKCArZt28bIkSMxDIPFixczbdo0VqxYQUN5eXns3bsXR4cOHaIWeBFpLnWlpVzLyk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">
</div>
</div>
<p>Now on the second row, only (2,1) light is on so we need to click on (3,1)</p>
<div id="40" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<img width="672" height="480" style="object-fit: contain; height: auto;" src="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/data:image/png;base64, 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6OhoRo4ciVarxcfHh5SUFPz9/XkcunTpwvr164mOjmbkyJFotVp8fHxISUnB398fcX9dunRh/fr1REdHM3LkSLRaLT4+PqSkpODv74/4fVN4BOfOneOll15i6tSpfPjhh8ybN4+BAweSl5fHvRQUFFBcXExISAhm9vb2iN9et27dOHToECaTibq6OnQ6HY9bt27dOHToECaTibq6OnQ6HeLBdevWjUOHDmEymairq0On0yH+t507d46XXnqJqVOn8uGHHzJv3jwGDhxIXl4e91JQUEBxcTEhISGY2dvbI36dUaNGMWrUKG7fvo1Go8HKyorHbdSoUYwaNYrbt2+j0WiwsrJCPLhRo0YxatQobt++jUajwcrKCvHHoPAIEhIS8PPzY86cOag6duxI8+bN+eKLL3juuee429mzZwkICCAqKgrxf0Oj0aDT6fgtaTQadDod4tfRaDTodDrE/76EhAT8/PyYM2cOqo4dO9K8eXO++OILnnvuOe529uxZAgICiIqKQjw+iqLwW1MUBfHrKYqC+GNReARHjhwhMDAQMxcXF55++mkMBgPPPfccdyspKaFt27bEx8dz48YNnn/+eQICAhBCiN+jI0eOEBgYiJmLiwtPP/00BoOB5557jruVlJTQtm1b4uPjuXHjBs8/zwBAQEIIcTvjcIjuHLlCq6urjTk6upKaWkp93L27Fl27drF4MGDURSF2bNnM378eOLi4rjb4cOHMRgMNHT16lUqKip44oknEEKI38qlS5fo0qUL4eHhPIorV67g6upKQ66urpSWlnIvZ8+eZdeuXQwePBhFUZg9ezbjx48nLi6Oux0+fBiDwUBDV69epaKigieeeAIhhPitXLp0iS5duhAeHs6vpfAIamtrsba2piFra2uqqqq4l5CQEPz9/enRoweqQ4cOERAQQFhYGJ06daKh6upqysvLaaiwsJCSkhKcnJwQlqPT6bC1teXHH3+kvr4eYRlarZYmTZpQVVVFbW0twnJKS0v56aefCA8P51HU1tZibW1NQ9bW1lRVVXEvISEh+Pv706NHD1SHDh0iICCAsLAwOnXqREPV1dWUl5fTUGFhISUlJTg5OSEsR6fTYWtry48/kh9fT3CMrRaLU2aNKGqqora2lqE5ZSWlvLTTz8RHh7Or6XwCNzc3CgvL6eh8vJymjdvzr1MmTKFhnr16oW7uz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gNGfOHPr378+gQYNo1aoVO3bsYNOmTYiI/DdatmwZq1ev5sKFCzjNmTOH/v37M2jQIFq1asWOHTvYtGkTIiJNjcGv5IMPPuCWW27B1ZQpUxg2bBg1QkJC+P7778nKyuLKlSssWbKEDh06ICLS1H3wwQfccsstuJoyZQrDhg2jRkhICN9/z1ZWVlcuXKFJUuW0KFDB0REmhqDX0lUVBS1de7cmc6dO+OqdevWjBo1ChGR/yZRUVHU1rlzZzp37oyr1q1bM2rUKEREmjIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGv5Kvv/4aq9VK165duZ7i4mIOHTqEK09PT3r37o2ISFP29ddfY7Va6dq1K9dTXFzMoUOHcOXp6Unv3r0REWlKDH4FlZWVTJkyhZkzZ9K1a1euJysri0ceeQRXQUFBnDt3DhGRpqqyspIpU6Ywc+ZMunbtyvVkZWXxyCOP4CooKIhz584hItKUGNRDWVkZ8+bN4+OPP+bgwYP8ktzcXBISEti0aRMiIk1dWVkZ8+bN4+OPP+bgwYP8ktzcXBISEti0aRP/Kb+rV7nN4UDMc8uVK3iVlyMi/zqDerBYLLRr147x48fz/PPP80vy8vIIDQ3Fqbq6GovFgohIU2WxWGjXrh3jx4/n+eef55fk5eURGhqKU3V1NRaLhX9X/yNHSEFM9d13ZN5yCyLyrzOoB29vb6ZPn47TsmXL+CW5ublcvXqVoKAg7HY7UVFRrFixgm7dulHb2bNnKSgowFVJSQmenp50794dMU9wcDBO4eHhXLt2DTGHp6cnTsHBwVRVVSHmyc/P59fg7e3N9OnTcVq2bBm/JDc3l6tXrxIUFITdbicqKooVK1bQrVs3ajt79iwFBQW4KikpwQtpKOHh4Vy7dg0xh6enJ07BwcFUVVUh5snPz6e+DEx08uRJevTowVtvvYVhGDz33HPEx8dz5MgRfH19cbV582befPNNXAUEBNCsWTPuvfdexHyxsbGI+cLCwggLC0PM88UXX9AQTp48SY8ePXjrrbcwDIPnnnuO+Ph4jhw5gq+vL642b97Mm2++iauAgACsSEO4++uviWjRAnvLlmy/37EPGFhYYSFhSHm+eKLL6gvAxOdOHECV6tXr6ZNmzbs3LmThx56CFeTJk1i0qRJuJo1axaHDh1i6tSpiHl+/PFHvvzySzIyMigrK0PM0axZMx5/HG+/PJLfvzxR8Q8paWlREVFYbYTJ07gavXq1bRp04adO3fy0EMP4WrSpElMmjQJV7NmzYKPP0bM1/70afVbkfIAACAASURBVJyOurvz2vHjyG+vWbNmPP7443z55Zf8+OOPiHlKS0uJioqiPgxMUlVVxdWrV/Hx8aFG8+bNCQoKorCwkH+VxWLBy8sLMY9hGDiVl5dz9epVxBxubm44VVZWcvXqVcQ8lZWVmK2qqoqrV6/i4+NDjebNmxMUFERhYSH/rgsWCxcsFuS34wXc4nDgqrq6mqtXryK/PTc3N5wqKyu5evUqYp7Kykrqy8AkFy5coF27dmzZsoX7778fp/z8fE6fPk2vXr0QEflvduHCBdq1a8eWLVu4/77ccrPz+f06dP06tWLf1eahwcLvbyQ385tDgd7SksRkX+fwW9ozpw5rFmzhpMnTxIUFMTEiRMZN24cjz32GFarlTfeeIPHHnuMyMhIRET+28yZM4c1a9Zw8uRJgoKCmDhxIuPGjeOxxx7DarXyxhtv8NhjjxEZGYmISFNi8CuZPn063bt3x1VsbCwtW7akxl/+ld69+7NZ599xtmzZ0lJSSEpKQkRkaZu+vTpdO/eHVexsbG0bNmSGn/961/p3bs3n332GWfPniUlJYWkpCRERJoag1/J9OnTqW3QoEEMGjSIGoZhMHHiRCZOnIiIyH+T6dOnU9ugQYMYNGgQNQzDYOLEiUycOBERkabMQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRQT1VVFTw+eefc+bMGUJDQ+nbty83UlJSQnZ2NqWlpdxzzz0EBAQgItJUVVRU8Pnnn3PmzBlCQ0Pp27cvN1JSUkJ2djalpaXcc889BAQEICLS1BjUw+XLl4mOjqakpISIiAi++eYbevfuzebNm/H09KS2s2fPEhcXR3V1NS1btmTSpEls376dO+64AxGRpuby5ctER0dTUlJCREQE33zzDb1792bz5s14enpS29mzZ4mLi6O6upqWLVsyadIktm/fzh133IGISFNiUA+pqak4HA6OHDmCt7c3P/8Mz169GDVqlU88cQT1Pbiiy/Stm1bduzYgbu7O0888QTTp08nOzsbEZGmJjU1FYfDwZEjR/D29ubnn3+mR48erFq1iieeeILaXnzxRdq2bcuOHTtwd3fniSeeYPr06WRnZyMi0pQY1MOePXsYMWIE3t7eOAUEBNC3b19ycnKoy4cffshrr72Gu7s7TsnJyYSHh3PmzBnatWuHiEhTsmfPHkaMGIG3tzdOAQEB9O3bl5ycHOry4Ycf8tprr+Hu7o5TcnIy4eHhnDlzhnbt2iEi0lQY1MO2bdtwc3OjRmFhIV9++SVz586ltuLiYgoLCwkLC6NGaGgoFouFU6dO0a5dO0REmpJt27bh5uZGjcLCQr788kvmzp1LbcXFxRQWFhIWFkaN0NBQLBYLp06dol27doiINBUG9eDu7k6NPXv2MG7cOLp27cqECROo7cKFCzi1atWKGm5ubvj5+XH+/HlqS0lJYf78+biKjo7G398fEZHGwN3dnRp79uxh3LhxdO3alQkTJlDbhQsXcGrVqhU13Nzc8PPz4/z589SWkpLC/PnzcRUdHU0cIiI3P4N6unTpEtOnT2f9+vXMnDmTWbNm4enpSW1+fn44XblyBVdXrlzB19eX2lJSUkhJScHVrFmzOHz4MCIijcWlS5eYPn0669evZ+bMmcyaNQtPT09q8/Pzw+nKlSu4unLlCr6+vtSWkpJCSkoKrmbNmgXZ2YiI3OwM6uHnn38mOjqayMhIjh07xu9+9zuux2q14unpydmzZwkPD8fp559/prKykuDgYEREmpqff/6Z6OhoIiMjOXbsGL/73e+4HqvViqenJ2fPniU8PBynn3/+mcrKSoKDgxERaUoM6uG5557DZrOxbt06LBYLN2KxWBg0aBBbtmxhwIABOG3dupWQkBDCwsIQEWlqnnvuOWw2G+vWrcNisXAjFouFQYMGsWXLFgYMGIDT1q1bCQkJISwsDBGRpsSgHjZt2oS/vz8PP/wwrhISEpg8eTJz5sxhzZo1nDx5EqdnnnmGBx98kICAAFq1asW8efNYtGgRbm5uiIg0NZs2bcLf35+HH34YVwkJCUyePJk5c+awZs0aTp48idMzzzzDgw8+SEBAAK1atWLevHksWrQINzc3RESaEoN6mDx5Mg6Hg9psNhtOsbGxtGzZkhrR0dFkZWXxzjvvcOzYMd566y2GDBmCiEhTNHnyZBwOB7XZbDacYmNjadmyJTWio6PJysrinXfe4dixY7z11lsMGTIEEZGmxqAe5s2bx40MGjSIQYMG4SoqKoqoqChERJq6efPmcSODBg1i0KBBuIqKiiIqKgoRkabMQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRwa+grKyMc+fO0aFDBwzDQERE/n9lZWWcO3eODh06YBgGIiL/7QzqoaqqiqlTp5KWlkbz5s2pqqriueeeY/bs2dRl+/btDBkyBFdt27bl5MmTiIg0NVVVVUydOpW0tDSaN29OVVUVzz33HLNnz6Yu27dvZ8iQIbhq27YtJ0+eRESkKTGoh7S0NNatW8ehQ4cICwvj888/Jz4+nttuu41hw4ZR29GjR+nevTuLFy+mhqenJyIiTVFaWhrr1q3j0KFDhIWF8fnnnxMfH89tt93GsGHDqO3o0aN0796dxYsXU8PT0xMRkabGoB4+/vhjxo4dS1hYGE79+/cnPj6e7du3M2zYMGrLy8vjjjvu4N5770VEpKn7+OOPGTt2LGFhYTj179+f+Ph4tm/fzrBhw6gtLy+PO+64g3vvvRdpnG5xONhbWor89tzKyijcvp3PPDyQxsegHubMmUNQUBA1qqurOXToECNHjqQuubm5tGrVisTERC5fvszdd9/NzJkz8fHx4V9VXV1NeXk5Yp7KykqcvLy8cDgciDm8vLxwMgwDb29vxDxVVVX8GubMmUNQUBA1qqurOXToECNHjqQuubm5tGrVisTERC5fvszdd9/NzJkz8fHx4d9lGAbe3t7Ib8ezshJKS3HlBYQ5HIgJHA4OX76M0bYt3t7eiHmqqqqoL4N6uPPOO6lRXFzMhAkTuHz5MlOmTKEux48fp6qqihkzZmAYBkuXLuWTTz5h165duLm54erNN9/kzTffxFVAQABXr17ltddeQ8z3+OOPI+a75557uOeeexDzfPHFF/wa7rzzTmoUFxczYcIELl++zJQpU6jL8ePHqaqqYsaMGRiGwdKlS/nkk0/YtWsXbm5uuHrzzTd58803cRUQEMBtLVpwukULukdEMPXuu5HfTgu7ncMff4xT+9OnaWG3I+ZqYbczOSIC7r2XvFtvpdzLC/ntffHFF9SXwa9g9erVPPPMM4SHh5OdnU1wcDB1eeedd+jatSv+/v44PfDAA3Tq1Ildu3YRGxuLq4SEBG6/XZcrV69mm+/ZasrCzEPB06dCAsLIzY2Fg8PDwQc1RUVLBz507CwsJo3749Yp78/Hx+TatXr+aZZ54hPDyc7OxsgoODqcs777xD165d8ff3x+mBBx6gU6dO7Nq1i9jYWFwlJCRw++2342r16tW0+Phj2tvtVA8ahO+AAchvq2j4cE6fPg3PP0/44cOIudqfPs3IzEyc9r/7LlduuQX57eXn51NfBvVQVVXF6NGj2bt3L2lpaQwePJgbiYqKwpXNZqNDhw6cOHGC2NhYXAUHBxMcHIyrdevWce3aNQ4fPoyYx93dnbCwMMLDw2nWrBlijrKyMnbu3ElwcDDdu3dHzBMUFER1dTX1VVVVxejRo9m7dy9paWkMHjyYG4mKisKVzWajQ4cOnDhxgtjYWFwFBwcTHByMq3Xr1lEjKCiIVt27I789h8OBNLyuXbviuO025LcXFBREdXU19WFQD4sXLyYnJ4cffviBli1bciNnz55lyJAhvPvuu4SFheFUWlrK+fPn6dy5MyIiTc3ixYvJycnhhx9+oGXLltzI2bNnGTJkCO+++y5hYWE4lZaWcv78eTp37ozc3LY/8ABT/vlPrl69ivz2Pigr4xaHA2m8DOph9erVdOrUibS0NFz16tWLuLg4MjIy+PTTT1mzZg3BwcE0b96cxx57jJSUFKxWKy+99BLdunWjX79+iIg0NatXr6ZTp06kpaXhqlevXsTFxZGRkcGnn37KmjVrCA4Opnnz5jz22GOkpKRgtVp56aWX6NatG/369UNubvYWLThqGFxxc0N+e+VIY2dQDzabjbKyMjZv3owrDw8P4uLiKC8vp6SkhBofffQRTz/9NH/4wx/w8PBg4MCBpKen4+bmhohIU2Oz2SgrK2Pz5s248vDwIC4ujvLyckpKSqjx0Ucf8fTTT/OHP/wBDw8PBg4cSHp6Om5uboiINCUG9ZCVlcWNTJkyhSlTplAjKCiINWvWICLy3yArK4sbmTJlClOmTKFGUFAQa9asQUSkqTMQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIig3pwOBwsX76c9957j4sXL9KjRw9eeuklIiMjuZ709HTS09MpLS1l6NChzJ8/Hzc3N0REmhqHw8Hy5ct57733uHjxIj169OCll14iMjKS60lPTyc9PZ3S0lKGDh3K/PnzcXNzQ0SkKTGoh4yMDBYsWMDKlSuxWq0sXbqUBx54gGPHjtG8eXNq++CDD5g+fTpvvPEGVquVKVOmUFFRwaJFixARaWoyMjJYsGABK1euxGq1snTpUh544AGOHTtG8+bNqe2DDz5g+vTpvPHGG1itVqZMmUJFRQWLFi1CRKQpMaiHzMxMJk+ezIgRI3Dq0qULNpuNH3/8kT59+lDb8uXLmTlzJklJSTgtXbqUCRMmMH/+fLy8vBARaUoyMzOZPHkyI0aMwKlLly7YbDZ+/PFH+vTpQ23Lly9n5syZJCUl4bR06VImTJjA/Pnz8fLyQkSkqTCoh3nz5mGz2ahRXl6OU8eOHamtqqqKvXv3snjxYmrExcVRWFjIP/7xD3r06IGISFMyb948bDYbNcrLy3Hq2LEjtVVVVbF3714WL15Mjbi4OAoLC/nHP/5Bjx49EBFpKgzqoV+/fjhlZWWRmprKnj17SE9PJygoiNrOnz+Pw+EgMDCQGi1atMDb25t/vOf1JaZmUlmZiauKioqEBFpLPr164dTVlYWqamp7Nmzh/T0dIKCgqjt/PnzOBwOAgMDqdGiRQu8vb355z/SW2ZmZlkZmbiqqKigh6IiNz8DH4FHTp0ICEhAcMwSE9PJyEhgcDAQFxdu3YNJw8PD1wZhkFZWRm1hYeHM3LkSFx98sknnDp1ChGRxqRDhw4kJCRgGAbp6ekkJCQQGBiIq2vXruHk4eGBK8MwKCsro7bw8HBGjhyJq08++QQRkcbA4FcQFhZGWFgY06ZNIyIigg0bNjB58mRcBQUF4VRUVESNyspKSkpKaNu2LbVFREQQERGBq3379iEi0tiEhYURFhbGtGnTiIiIYMOGDUyePBlXQUFBOBUVFVGjsrKSkpIS2rZtS20RERFERETgat++fYiINAYG/yGHw4G/vz8bN26kf/+OFksFgIDAykoKKA2b29vOnbsyP79+7n99ttx2r9/P4Zh0LlzZ0REmhKHw4G/vz8bN26kf/+OFksFgIDAykoKKA2b29vOnbsyP79+7n99ttx2r9/P4Zh0LlzZ0REmhKD/5CbmxuxsbGkpqZy11134ePjw6effspXX33Fiy++iNPOnTs5dOgQycnJOI0bN45XX32V0aNH06xZM1JTU0lISKBNmzaIiDQlbm5uxMbGkpqayl133YWPjw+ffvopX331FS+++CJOO3fu5NChQyQnJ+M0btw4Xn31VUaPHk2zZs1ITU0lISGBNm3aICLSlBjUw4oVKxg+fDhWqxU/Pz/KyspYsmQJ0dHROG3atInVq1eTnJyM07PPPssPP/xAcHAwXl5etGvXji1btiAi0hStWLGC4cOHY7Va8fPzo6ysjCVLlhAdHY3Tpk2bWL16NcnJyTg9++yz/PDDDwQHB+Pl5UW7du3YsmULIiJNjUE9hISE8N1335Gfn09JSQm33norXl5e1EhNTSU1NZUa3t7e/O1vf+P8+fNcuXKFjh07IiLSVIWEhPDdd9+Rn59PSUkJt956K15eXtRITU0lNTWVGt7e3vztb3/j/PnzXLlyhY4dOyIi0hQZ1JPFYiEkJIR/R2BgICIi/w0sFgshISH8OwIDAxERacoMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZ1IPD4WD58uW89957XLx4kR49evDSSy8RGRlJXfbt28fs2bNx5e/vz/vvv4+ISFPjcDhYvnw57733HhcvXqRHjx689NJLREZGUpd9+/Yxe/ZsXPn7+/P+++8jItKUGNRDRkYGCxYsYOXKlVitVpYuXcoDDzzAsWPHaN68ObXt27ePo0ePMm7cOGr4+voiItIUZWRksGDBAlauXInVamXp0qU88MADHDt2jObNm1Pbvn37OHr0KOPGjaOGr68vIiJNjUE9ZGZmMnnyZEaMGIFTly5dsNls/Pjjj/Tp04fajh8/TmxsLCkpKYiINHWZmZlMnjyZESNG4NSlSxdsNhs/vgjffr0obbjx48TGxtLSkoK9eW+axdeiBlCzp0j6uxZfEpKqKioQH57baqrkcbNoB7mzZuHzWajRnl5OU4dO3akLrm5udx6662sXLmSy5cvc/fddxMbG4uISFM0b948bDYbNcrLy3Hq2LEjdcnNzeXWW29l5cqVXL58mbvvvpvY2Fj+E+7Z2bhnZyO/PRvg1r4995eWIiL/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">
</div>
</div>
<p>Now we are left with lights where only the bottom row has lights on</p>
<div id="42" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<img width="672" height="480" style="object-fit: contain; height: auto;" src="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/data:image/png;base64, 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">
</div>
</div>
<p>Now after Lights Chasing way to solve it is to use a lookup table for the bottom rows of lights that shows what lights to click on the top row. After those clicks from the lookup table, we should apply the Lights Chasing algorithm again and our grid should be solved. For this specific bottom row we need to click on lights (1,1) and (1,3).</p>
<div id="44" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<img width="672" height="480" style="object-fit: contain; height: auto;" src="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/data:image/png;base64, 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h/fff5+77rqLsLAwRET+25w8eZJz587Ro0cPHEaOHMn777/PI488gsP777/PXXfdRVhYGCIizYnB72jp0qWsWrWKs2fP4jB79mz69+/PoEGDaN26Ndu3b2fjxo2IiPw3Wrp0KatWreLs2bM4zJ49m/79+zNo0CBat27N9u3b2bhxIyIizY3BDfLRRx9xyy234GzKlCkMGzaMWmFhYfzwww9kZ2dz6dIlFi9eTPv27RERae4++ugjbrnlFpxNmTKFYcOGUSssLIwffviB7OxsLl26xOLFi2nfvj0iIs2NwQ0SHR1NXZ06daJTp044a9OmDaNGjUJE5L9JdHQ0dXXq1IlOnTrhrE2bNowaNQoRkebMQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRwQ3yzTff4O/vT5cuXbiWsrIyDh48iDN3d3d69+6NiEhz9s033+Dv70+XLl24lrKyMg4ePIgzd3d3evfujYhIc2JwA1y9epUpU6YwY8YMunTpwrVkZ2fzyCOP4Cw4OJjTp08jItJcXb16lSlTpjBjxgy6dOnCtWRnZ/PII4/gLDg4mNOnTyMi0pwYNEBFRQVz587l008/5cCBA/yWvLw8EhMT2bhxIyIizV1FRQVz587l008/5cCBA/yWvLw8EhMT2bhxI9I0+QIPXb2K/L58kabOoAEsFguhoaGMHz+eF198kd+Sn59PeHg4DjU1NVgsFkREmiuLxUJoaCjjx4/nxRdf5Lfk5+cTHh6OQ01NDRaLBWlaQu121lRUICLXZ9AAnp6eTJ8+HYelS5fyW/Ly8rh8+TLBwcHYbDaio6NZvnw53bp1o67CwkKKiopwdvHiRdzd3enevTtinpCQEBwiIyO5cuUKYg53d3ccQkJCqK6uRsxTUFDAjeDp6cn06dNxWLp0Kb8lLy+Py5cvExwcjM1mIzo6muXLl9OtWzfqKiwspKioCGcXL17Eg/Xv/71Lwr270d+P17Hj9MLuVkcPXqUS1VVyO/H+q9/0Z4bw8BEJ06coEePHrzzzjsYhsELL7xAQkIChw8fxsfHB2ebNm3i7bffxllgYCAtWrTg3nvvRcwXFxeHmC8iIoKIiAjEPF9++SWN4cSJE/To0YN33nkHwzB44YUXSEhI4PDhw/j4+OBs06ZNvP322zgLDAzErWVLTrZsyaFTp/h2+3bk9xNw9iyB7drh8IeiIlyrqxFzVbu6UvSHP+Dw9e7dnM3PR34/0adOYWnXDpvNhgcNY2Ci48eP42zVqlUEBATw1Vdf8dBDD+Fs0qRJTJo0CWczZ9I1HxcAACAASURBVM7ks88+44033kDM061bN+655x4yMzOpqKhAzNGiRQsef/xx/vnPf/LTTz8h5ikvLyc6OhqzHT9+HGerVq0iICCAr776ioceeghnkyZNYtKkSTibOXMmHp9+SjubDb/83+4fepU5Pfj+vPPtHn9daTxuFZX0+7kSRxGJyVRHRGB/H68ysvx2raNlkAlDWNgkurqai5fvoy3tze1vLy8CA4OpqSkhH9XTU0Nly9fRsxz9epVHCorK7l8+TJiDhcXFxyuXr3K5cuXEfNcvXoVs1VXV3P58mW8vb2p5eXlRXBwMCUlJfxvGYaBh4cH8vtxcXenrhrgCvJ7cwcs/P+5u7tj9/BAfj+GYXCjGJjk7NmzhIaGsnnzZu6/34cCgoKOHnyJL169UJE5L/Z2bNnCQ0NZfPmzdx/04FBQUcPLkSXr16oU0DUdcXLjL2xv5fe0pLyfCbkeaLoPf0ezZs1m9ejUnTpwgODiYiRMnMm7cOB577DH8/f156623eOyxx+jatSsiIv9tZs+ezerVqzlx4gTBwcFMnDiRcePG8dhjj+Hv789bb73FY489RteuXRERaU4MbpDp06fTvXt3nMXFxdGqVStq/e1vf6N379588cUXFBYWkpqaSnJyMiIizd306dPp3r07zuLi4mjVqhW1/va3v9G7d2+++OILCgsLSU1NJTk5GRGR5sbgBpk+fTp1DRo0iEGDBlHLMAwmTpzIxIkTERH5bzJ9+nTqGjRoEIMGDaKWYRhMnDiRiRMnIiLSnBmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjJooKqqKnbs2MGpU6cIDw+nb9++XM/FixfJycmhvLyce+65h8DAQEREmquqqip27NjBqVOnCA8Pp2/fvlzPxYsXycnJoby8nHvuuYfAwEBERJobgwa4cOECMTExXLx4kaioKL799lt69+7Npk2bcHd3p67CwkLi4+OpqamhVatWTJo0iW3btnHHHXcgItLcXLhwgZiYGC5evEhUVBTffvstvXv3ZtOmTbi7u1NXYWEh8fHx1NTU0KpVKyZNmsS2bdu44447EBFpTgwaIC0tDbvdzuHDh/H09OTMmTP06NGDlStX8sQTT1DXyy+/TNu2bdm+fTuurq488cQTTJ8+nZycHEREmpu0tDTsdjuHDx/G09OTM2fO0KNHD1auXMkTTzxBXS+/DJt27Zl+/btuLq68sQTTzB9+nRycnIQEWlODBpg9+7djBgxAk9PTxwCAwPp27cvubm51Ofjjz/mjTfewNXVFYeUlBQiIyM5deoUoaGhiIg0J7t372bEiBF4enriEBgYSN++fcnNzaU+H3/8MW+88Qaurq44pKSkEBkZyalTpwgNDUVEpLkwaICtW7fi4uJCrZKSEv75z38yZ84c6iorK6OkpISIiAhqhYeHY7FY+PXXXwkNDUVEpDnZunUrLi4u1CopKeGf/wnc+bMoa6ysjJKSkqIiIigVnh4OBaLhV9/ZXQ0FBERJoLgwZwdXWl1u7duxk3bhxdunRhwoQJ1HX27FkcWrduTS0XFxd8fX0pLi6mrtTUVObNm4ezmJgYRESaCldXV2rt3r2bcePG0aVLFyZMmEBdZ8+exaF169bUcnFxwdfXl+LiYupKTU1l3rx5OIuJiSEeEZGbn0EDnT9/nunTp7Nu3TpmzJjBzJkzcXd3py5fX18cLl26hLNLly7h4+NDXampqaSmpuJs5syZbNu2DRGRpuL8+fNMnz6ddevWMWPGDGbOnIm7uzt1+fr64nDp0iWcXbp0CR8fH+pKTU0lNTUVZzNnzoScHEREbnYGDXDmzBliYmLo2rUrR48e5Q9/+APX4u/vj7u7O4WFhURGRuJw5swZrl69SkhICCIizc2ZM2eIiYmha9euHD16lD/84Q9ci7+/P+7u7hQWFhIZGYnDmTNnuHr1KiEhIYiINCcGDfDCCy9gtVpZu3YtFouF67FYLAwaNIjNmzczYMAAHLZs2UJYWBgRERGIiDQ3L7zwAlarlbVr12KxWLgei8XCoEGD2Lx5MwMGDMBhy5YthIWFERERgYhIc2LQABs3bsTPz4+HH34YZ4mJiUyePJnZs2ezevVqTpw4gcNzzz3Hgw8+SGBgIK1bt2bu3LksXLgQFxcXRESam40bN+Ln58fDDz+Ms8TERCZPnszs2bNZvXo1J06cwOG5557jwQcfJDAwkNatWzN37lwWLlyIi4sLIiLNiUEDTJ48GbvdTl1WqxWHuLg4WrVqRa2YmBiys7N57733OHr0KO+88w5DhgxBRKQ5mjx5Mna7nbqsVisOcXFxtGrViloxMTFkZ2fz3nvvcfToUd555x2GDBmCiEhzY9AAc+fO5XoGDRrEoEGDcBYdHU10dDQiIs3d3LlzuZ5BgwYxaNAgnEVHRxMdHY2ISHNmICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjI4AaoqKjg9OnTtG/fHsMwEBGR/09FRQWnT5+mffv2GIaBiMh/O4MGqK6uZurUqaSnp+Pl5UV1dTUvvPACs2bNoj7btm1jyJAhOGvbti0nTpxARKS5qa6uZurUqaSnp+Pl5UV1dTUvvPACs2bNoj7btm1jyJAhOGvbti0nTpxARKQ5MWiA9PR01q5dy8GDB4mIiGDHjh0kJCRw2223MWzYMOo6cuQI3bt3Z9GiRdRyd3dHRKQ5Sk9PZ+3atRw8eJCIiAh27NhBQkICt912G8OGDaOuI0eO0L17dxYtWkQtd3d3RESaG4MG+PTTTxk7diwRERE49O/fn4SEBLZt28awYcOoKz8/nzvuuIN7770XEZHm7tNPP2Xs2LFERETg0L9/fxISEti2bRvDhg2jrvz8fO644w7uvfdeGsotPR1jwwbkd1RZidw8Wvzxj+Dhgfx+LGfPcqMYNMDs2bMJDg6mVk1NDQcPHmTkyJHUJy8vj9atW5OUlMSFCxe4++67mTFjBt7e3vy7LBYLnp6eiHkMw8DBw8MDu92OmMPDwwMHwzDw9PREzFNdXc2NMHv2bIKDg6lVU1PDwYMHGTlyJPXJy8ujdevWJCUlceHCBe6++25mzJiBt7c3/1uWs2exnD2LmMtiseDp6Yn8viyXLlGXy/HjSNNh0AB33nkntcrKypgwYQIXLlxgypQp1OfYsWNUV1fzzDPPYBgGS5Ys4bPPPmPnzp24uLjg7O233+btt9/GWWBgIC1btmTq1KmI+R5/HHEfPfccw/33HMPYp4vv/ySG+HOO++kVllZGRMmTODChQtMmTKF+hw7dozq6mqeeeYZDMNgyZIlfPbZZ+zcuRMXFxecvf3227z99ts4CwwMpA/SGE62a4etZUtsrVox9f77kd9X6bZtHLpwgZY2G+1OnkSaHoMbYNWqVTz33HNERkaSk5NDSEgI9Xnvvffo0qULfn5+ODzwwAN07NiRnTt3EhcXh7PExERuv/12nK1atYpjx44xYMAAxDwnT57k559/5quvvuLKlSuIOdzd3YmLiyMiIoJ27doh5ikoKOBGWrVqFc899xyRkZHk5OQQEhJCfd577z26dOmCn58fDg888AAdO3Zk586dxMXF4SwxMZHbb78dZ6tWrUIaxzd3382Ks2e5cuUKZGcjv69sFxfcg4OZEhXFyKwspOkxaIDq6mpGjx7Nnj17SE9PZ/DgwVxPdHQ0zqxWK+3bt+f48ePExcXhLCQkhJCQEJytXbsWd3d3unfvjpjHbrfz888/c+jQIS5duoSYw8vLi7i4OEJCQujevTtinuDgYGpqamio6upqRo8ezZ49e0hPT2fw4MFcT3R0NM6sVivt27fn+PHjxMXF4SwkJISQkBCcrV27Fmk8hw4d4tKlS4g5vLy84J57kKbJoAEWLVpEbm4uP/74I61ateJ6CgsLGTJkCO+/z4RERE4lJeXU1xcTKdOnRARaW4WLVpEbm4uP/74I61ateJ6CgsLGTJkCO+/z4RERE4lJeXU1xcTKdOnfh3/dy/P+ULFyLm+fnnn8n/+Wf45z8Rc+Xfeis/vPsuERERiHmq0tNpKIMGWLVqFR07diQ9PR1nvXr1Ij4+nszMTD7/HNWr15NSEgIXl5ePPbYY6SmpuLv788rr7xCt27d6NevHyIizc2qVavo2LEj6enpOOvVqxfx8fFkZmby+eefs3r1akJCQvDy8uKxxx4jNTUVf39/XnnlFbp160a/fv34d1X4+mK/7TbEPJcqK6k8fhwxX6WHB5duuQX7bbch5qkJDISaGhrCoAGsVisVFRVs2rQJZ25ubsTHx1NZWcnFixep9cknn/D000/zpz/9CTc3NwYOHEhGRgYuLi6IiDQ3VquViooKNm3ahDM3Nzfi4+OprKzk4sWL1Prkk094+umn+dOf/oSbmxsDBw4kIyMDFxcXRESaE4MGyM7O5nqmTJnClClTqBUcHMzq1asREflvkJ2dzfVMmTKFKVOmUCs4OJjVq1cjItLcGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZFBA9jtdpYtW8YHH3zAuXPn6NGjB6+88gpdu3blWjIyMsjIyKC8vJyhQ4cyb948XFxcEBFpbux2O8uWLeODDz7g3Llz9OjRg1deeYWuXbtyLRkZGWRkZFBeXs7QoUOZN28eLi4uiIg0JwYNkJmZyfz581mxYgX+/v4sWbKEBx54gKNHj+Ll5UVdH330EdOnT+ett97C39+fKVOmUFVVxcKFCxERaW4yMzOZP38+K1aswN/fnyVLlvDAAw9w9OhRvLy8qOujjz5i+vTpvPXWW/j7+zNlyhSqqqpYuHAhIiLNiUEDZGVlMXnyZEaMGIFD586dsVqt/PTTT/Tp04e6li1bxowZM0hOTsZhyZIlTJgwgXnz5uHh4YGISHOSlZXF5MmTGTFiBA6dO3fGarXy008/0adPH+patmwZM2bMIDk5GYclS5YwYcIE5s2bh4eHByIizYVBA8ydOxer1UqtyspKHDp06EBd1dXV7Nmzh0WLFlErPj6ekpISfv75Z3r06IGISHMyd+5crFYrtSorK3Ho0KEDdVVXV7Nnzx4WLVpErfj4eEpKSvj555/p0aMHIiLNhUED9OvXD4fs7GzS0tLYvXs3GRkZBAcHU1dxcTF2u52goCBqtWzZEk9PT/71r39RV1ZWFllZWTirqqpCRKSp6NevHw7Z2dmkpaWxe/duMjIyCA4Opq7i4mLsdjtBQUHUatmyJZ6envzrX/+irqysLLKysnBWVVWFiEhTYHADtG/fnsTERAzDICMjg8TERIKCgnB25coVHNzc3HBmGAYVFRXUFRkZyciRI3H22WefUVxcjIhIU9K+fXsSExMxDIOMjAwSExMJCgrC2ZUrV3Bwc3PDmWEYVFRUUFdkZCQjR47E2WeffUZxcTEiIjc7gxsgIiKCiIgIpk2bRlRUFOvXr2fy5Mk4Cw4OxqG0tJRaV69e5eLFi7Rt25a6oqKiiIqKwtnevXspLi5GRKQpiYiIICIigmnTphEVFcX69euZPHkyzoKDg3EoLS2l1tWrV7l48SJt27alrqioKKKionC2d+9eiouLERG52Rn8h+x2O35+fmzYsIH+/fvjYLFYCAoKoqioiLo8PT3p0KED+/bt4/bbb8dh3759GIZBp06dEBFpTux2O35+fmzYsIH+/fvjYLFYCAoKoqioiLo8PT3p0KED+/bt4/bbb8dh3759GIZBp06dEBFpTgz+Qy4uLsTFxZGWlsZdd92Ft7c3n3/+OV9/TUvv/wyDl999RUHDx4kJSUFh3HjxvH6668zevRoWrRoQVpaGomJiQQEBCAi0py4uLgQFxdHWload911F97e3nz++ed8/fXXvPzyyzh89dVXHDx4kJSUFBzGjRvH66+/zujRo2nRogVpaWkkJiYSEBCAiEhzYtAAy5cvZ/jw4fj7++Pr60tFRQWLFy8mJiYGh40bN7Jq1SpSUlJweP755/nxxx8JCQnBw8OD0NBQNm/ejIhIc7R8+XKGDx+Ov78/vr6+VFRUsHjxYmJiYnDYuHEjq1atIiUlBYfnn3+eH3/8kZCQEDw8PAgNDWXz5s2IiDQ3Bg0QFhbG999/T0FBARcvXuTWW2/Fw8ODWmlpaaSlpVHL09OTv/97xQXF3Pp0iU6dOiAiEhzFRYWxvfff09BQQEXL17k1ltvxcPDg1ppaWmkpaVRy9PTk7/e8UFxdz6dIlOnTogIhIc2TQQBaLhbCwMP43goKCEBH5b2CxWAgLC+N/IygoCBGR5sxARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZFBA9jtdpYtW8YHH3zAuXPn6NGjB6+88gpdu3alPnv37mXWrFk48/Pz48MPP0REpLmx2+0sW7aMDz74gHPnztGjRw9eeeUVunbtSn327t3LrFmzcObn58eHH36IiEhzYtAAmZmZzJ8/nxUrVuDv78+SJUt44IEHOHr0KF5eXtS1d+9ejhw5wrhx46jl4+ODiEhzlJmZyfz581mxYgX+/v4sWbKEBx54gKNHj+Ll5UVde/fu5ciRI4wbN45aPj4+iIg0NwYNkJWVxeTJkxkxYgQOnTt3xmq18tNPP9GnTx/qOnbsGHFxcaSmpiIi0txlZWUxefJkRowYgUPnzp2xWq389NNP9OnTh7qOHTtGXFwcqampiIg0ZwYNMHfuXKxWK7UqKytx6NChA/XJy8vj1ltvZcWKFVy4cIG7776buLg4RESao7lz52K1WqlVWVmJ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cDiY1tDQQGxsLNNOnz5NaWkpz58/Z+/evRQVFREdHc1cOHnyJMXFxTx58gTLsrh8+TJr1qxhWkNDA7GxsUxrbGykpqaGoaEhUlJSCAQCJCUl8T0W80xiYiKVlZV8S15eHrMVFBRQUFDAfOL1epktIyODjIwMZnK5XLhcLuYTr9fLbMnJyfj9fmbKzMwkMzOTubZhwwa+Jzk5Gb/fz0wxMTGUlJQw11wuFy6Xi+/x+/3MlJyczL59+5gvAoEAgUCAb8nLy2M2j8eDx+NhPnC73bjdbr4lLy+P2QoKCigoKGCuJSYmUllZybfk5eUxW0FBAQUFBcwnXq+X2TIyMsjIyGAml8uFy+ViPvF6vcyWnJyM3+9npszMTDIzM5lrGzZs4HuSk5Px+/3MFBMTQ0lJCXPN5XLhcrn4Hr/fz0zJycns27eP+SIQCBAIBPiWvLw8ZvN4PHg8HuYDt9uN2+3mW/Ly8pitoKCAgoIC/r8sREREREQMshARERERMchCRERERMQgCxERERERgyxERERERAyyEBERERExyEJERERExCALERERERGDLEREREREDLIQERERETHIQkRERETEIAsREREREYMsREREREQMshARERERMchCRERERMQgCxERERERgyxERERERAyyEBERERExyEJERERExCALERERERGDLEREREREDLIQERERETHIQkRERETEIAsREREREYMsREREREQMshARERERMchCRERERMQgCxERERERgyxERERERAyyEBERERExyEJERERExCALERERERGDLEREREREDLIQERERETHIQkRERETEIAsREREREYMsREREREQMshARERERMchCRERERMQgCxERERERgyxERERERAyyEBERERExyEJERERExCALERERERGDLEREREREDLIQERERETHIQkRERETEIAsREREREYMsREREREQMshARERERMchCRERERMQgCxERERERgyxERERERAyyEBERERExyEJERERExCALERERERGDLEREREREDLIQERERETHIQkRERETEIAsREREREYMsREREREQMshARERERMchCRERERMQgCxERERERgyxERERERAyyEBERERExyEJERERExCALERERERGDLEREREREDLIQERERETHIQkRERETEIAsREREREYMsREREREQMshARERERMchCRERERMQgCxERERERgyxERERERAz6P8F+hRLdlTtvAAAAAElFTkSuQmCC">
</div>
</div>
<p>Now we need to do the Lights Chasing algorithm again</p>
<div id="46" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<img width="672" height="480" style="object-fit: contain; height: auto;" src="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/data:image/png;base64, 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Z5jZz3DIsp8RKK01zKZE0/gqGIgoosl2ec89zOM99OGjzG/KLMJ/Xy4uioiLqOnLkCGvXrsVZZWUl7RARufEZmMTPzw+H4uJiatntdkpKSvD396eu4cOHM3z4cJzNnDmTI0eOICLS3Pj5+eFQXFxMLbvdTklJCf7+/tQ1fPhwhg8fjrOZM2ciItIUGJikZcuWtG7dmuzsbLp164bDiRMnsNvt2Gw2RET+m7Vs2ZLWrVuTnZ1Nt27dcDhx4gR2ux2bzYaISHNicB2dOnWKwsJCunfvjsPw4cNZvXo1Dz/8MA6rV6+md+/ehISEICLy3+bUqVMUFhbSvXt3HIYPH87q1at5+OGHcVi9ejW9e/cmJCQEEZHmxOA6WrJkCatWreLcuXM4zJ49m/79+zNw4EBat27Njh072LRpEyIi/42WLFnCqlWrOHfuHA6zZ8+mf/+DBw4kNatW7Njxw42bdqEiEhzY/A7+eCDD7j55ptxNnnyZIYMGUKtkJAQvvvuOzIzM7l8+TKLFi2iQ4cOiIg0dx988AE333wzziZPnsyQIUOoFRISwnfffUdmZiaXL19m0aJFdOjQARGR5sbgdxIdHU1dnTp1olOnTjhr06YNI0aMQETkv0l0dDR1derUiU6dOuGsTZs2jBgxAhGR5sxARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZHB7+Srr77Cz8+PLl26cDUlJSUcPnwYZ+7u7vTq1QsRkebsq6++ws/Pjy5dunA1JSUlHD58GGfu7u706tULEZHmxOB3UFVVxeTJk5kxYwZdunThajIzM3n44YdxFhQUxJkzZxARaa6qqqqYPHkyM2bMoEuXLlxNZmYmDz/8MM6CgoI4c+YMIiLNiUEDlJWVMXfuXD7++GMOHTrEb8nOziYxMZFNmzYhItLclZWVMXfuXD7++GMOHTrEb8nOziYxMZFNmzYhTZMP8EBVFXJ9edfUIE2bQQNYLBbatWvHuHHjeO655/gtOTk5hIWF4VBTU4PFYkFEpLmyWCy0a9eOcePG8dxzz/FbcnJyCAsLw6GmpgaLxYI0Le3sdt4vK0NErs2gATw8PJg2bRoOS5Ys4bdkZ2dz5coVgoKCKC4uJjo6mmXLltG1a1fqysvLIz8/H2elpaVUVFRw8OBBxDx5eXk4REREUFFRgZjD3d0dh7y8PFxcXBDz/PrrrwQGBtJQHh4eTJs2DYclS5bwW7Kzs7ly5QpBQUEUFxcTHR3NsmXL6Nq1K3Xl5eWRn5+Ps9LSUqz8v4KCguhmsyHXz82XL8P+/ciNoUuXLrh5eiLXT1BuLvzf/8vvwcBEJ0+epHv37rz11lsYhsGzzz5LQkICR48exdvbG2ebN2/mzTffxFlAQABXrlxhx44diPni4uIQ8/3444/8+OOPiHl+/vlnAgMDMdvJkyfp3r07b731FoZh8Oyzz5KQkMDRo0fx9vbG2ebNm3nzzTdxFhAQgFvLlpxq2ZJ2ERHcc+edyPXjf+4cp86exeGm/Hxcq6sRc1W7upJ/0004RPfrxy3+/sj10+6rrzhVU0NxcTFWGsbARCdOnMDZqlWr8Pf35/PPP+eBBx7A2cSJE5k4cSLOZs6cyeHDh5kyZQpinh9++IEvvviClStXUlZWhpijRYsWPPbYY/zhD3+ga9euiHkuXbpEYzhx4gTOVq1ahb+/P59/jkPPPAAziZOnMjEiRNxNnPmTKwff0z74mLeP3+e1/btQ66fsKoqphQVIY3Htbqa9qdO4fDBmjX8ZBjI9eN56RL3Xr5MS6CchjEwSXV1NVeuXMHLy4tanp6eBAUFcf78ef5dFosFq9WKmMcwDBzKy8u5cuUKYg4XFxccDMPAarUi5jEMg5qaGsxUXV3NlStX8PLyopanpydBQUGcP3+e/62qqiquXLmCXD8Vdjt11QAVyPXmDlj4/6uoqOBKVRVy/VRVVfF7MTDJuXPnaNeuHVu2bOHee+/FITc3l1OnTtGzZ09ERP6bnTt3jnbt2rFlyxbuvfdeHHJzczl16hQ9e/ZEmoafXFzo7eWFXF97L10i3G5Hmi6D62j27NmsWbOGkydPEhQUxIQJExgzZgxjx47Fz8+PN954g7FjxxIVFYWIyH+b2bNns2bNGk6ePElQUBATJkxgzJgxjB07Fj8/P9544w3Gjh1LVFQUIiLNicHvZNq0aXTr1g1ncXFxtGrVilp/vf6dWrF5999hl5eXmkpqaSnJyMiEhzN23aNLp164azuLg4WrVqRa2/3v9OrVi88++4y8vDxSU1NJTk5GRKS5MfidTJs2jboGDhzIwIEDqWUYBhMmTGDChAmIiPw3mTZtGnUNHDiQgQMHUsswDCZMmMCECRMQEWnODERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQEW2G4pgAACAASURBVBERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGTRQZWUlO3fu5PTp04SFhdG3b1+upbS0lKysLC5dusQf/vAHAgICEBFpriorK9m5cyenT58mLCyMvn37ci2lpaVkZWVx6dIl/vCHPxAQEICISHNj0AAXL14kJiaG0tJSIiMj+frrr+nVqxebN2/G3d2duvLy8oiPj6empoZWrVoxceJEtm/fzu23346ISHNz8eJFYmJiKC0tJTIykq+/ppevXqxefNm3N3dqSsvL4/4+Hhqampo1aoVEydOZPv27dx+++2IiDQnBg2QlpaG3W7n6NGjeHh4cPbsWbp3786KFSt4/PHHqeuFF16gbdu27NixA1dXVx5/HGmTZtGVlYWIiLNTVpaGna7naNHj+Lh4cHZs2fp3r07K1as4PHHH6euF154gbZt27Jjxw5cXV15/PHHmTZtGllZWYiINCcGDbBnzx6GDRuGh4cHDgEBAfTt25cDBw5Qnw8/JDXXnsNV1dXHFJSUoiIiOD06dO0a9cOEZHmZM+ePQwbNgwPDw8cAgIC6Nu3LwcOHKA+H374Ia+99hqurq44pKSkEBERwenTp2nXrh0i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CgrCoaioiFpVVVWUlpbStm1b6oqMjCQyMhJn+/btQ0SkKTD4D9ntdnx9fdm4cSP9+/fHwWKxEBgYSH5+PnV5eHjQsWNH9u/fz2233YbD/v37MQyDTp06ISLSnNjtdnx9fdm4cSP9+/fHwWKxEBgYSH5+PnV5eHjQsWNH9u/fz2233YbD/v37MQyDTp06ISLSnBj8h1xcXIiLiyMtLY3evXvj5eXFp59+ypdffskLL7yAw+eff87hw4dJSUnBYcyYMbz66quMHDmSFi1akJaWRmJiIv7+/oiINCcuLi7ExcWRlpZG79698fLy4tNPP+XLL7/khRdewOHzzz/n8OHDpKSk4DBmzBheffVVRo4cSYsWLUhLSyMxMRF/f39ERJoTgwZYtmwZQ4cOxc/PDx8fH8rKyli0aBExMTE4bNq0iVWrVpGSkoLDM888w/fff09wcDBWq5V27dqxZcsWRESao2XLljF06FD8/Pzw8fGhrKyMRYsWERMTg8OmTZtYtWoVKSkpODzzzDN8/33BAcHY7VaadeuHVu2bEFEpLkxaICQkBC+/fZbcnNzKS0t5ZZbbsFqtVIrLS2NtLQ0anl4ePCPf/yDgoICLl++TMeOHRERaa5CQkL49ttvyc3NpbS0lFtuuQWr1UqttLQ00tLSqOXh4cE/vEPCgoKuHz5Mh07dkREpDkyaCCLxUJISAj/G4GBgYiI/DewWCyEhITwvxEYGIiISHNmICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIQERERETERAYiIiIiIiYyEBERERExkYGIiIiIiIkMRERERERMZCAiIiIiYiIDERERERETGYiIiIiImMhARERERMREBiIiIiIiJjIQERERETGRgYiIiIiIiQxERERERExkICIiIiJiIgMRERERERMZiIiIiIiYyEBERERExEQGIiIiIiImMhARERERMZGBiIiIiIiJDERERERETGQgIiIiImIiAxERERERExmIiIiIiJjIoAHsdjtLly7l3XffpbCwkO7du/Piiy8SFRVFffbt28esWbNw5uvry3vvvYeISHNjt9tZunQp7777LoWFhXTv3p0XX3yRqKgo6rNv3z5mzZqFM19fX9577z1ERJ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">
</div>
</div>
<p>As we can see we solved <img src="https://latex.codecogs.com/png.latex?3%7B%5Ctimes%7D3"> puzzle by using the Lights Chasing algorithm twice and by knowing specific lights to turn on in the top row. It is also worth noting that the Lights Chasing algorithm has time complexity <img src="https://latex.codecogs.com/png.latex?O(NM)"> as you need to linearly go row by row and apply clicks.</p>
<p>At first, it doesn’t seem to help us much as we would need a lookup table, and constructing it on the fly seems too computationally expensive. After all on the top row, we have <img src="https://latex.codecogs.com/png.latex?2%5EM"> combinations that we would need to try, each time doing the Lights Chasing algorithm. But luckily for us Lights Chasing has useful mathematical properties that we can exploit to create a lookup table efficiently by solving part of our system of equations.</p>
</section>
<section id="mathematical-properties-of-lights-chasing" class="level2">
<h2 class="anchored" data-anchor-id="mathematical-properties-of-lights-chasing">Mathematical properties of Lights Chasing</h2>
<p>Lights Chasing algorithm can also be expressed as matrix multiplication. Here I will show it for <img src="https://latex.codecogs.com/png.latex?3%5Ctimes3"> grid.</p>
<p>To clear the first row we need to click on all lights below the lights that are turned on on the first row. Therefore first we shift all lights in the first row to the row below which can be described by the matrix below:</p>
<p><img src="https://latex.codecogs.com/png.latex?S_%7B1%7D%20=%20%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bccccccccc%7D%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D"></p>
<p>Then we need to multiply the shift matrix by M matrix to make elements in the first row “click” lights below it:</p>
<p><img src="https://latex.codecogs.com/png.latex?MS_%7B1%7D%20=%20%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bccccccccc%7D%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D"></p>
<p>Now we need to add an identity matrix to keep all the light’s states to get the matrix for clearing the first row:</p>
<p><img src="https://latex.codecogs.com/png.latex?C_%7B1%7D%20=%20I%20+%20MS_%7B1%7D%20=%20%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bccccccccc%7D%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%201%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D"></p>
<p>And we got <img src="https://latex.codecogs.com/png.latex?C_1"> matrix that does the first row part of Lights Chasing. We can create a similar matrix <img src="https://latex.codecogs.com/png.latex?C_2"> for the second row. Now to get the matrix for the full algorithm we need to multiply our <img src="https://latex.codecogs.com/png.latex?C_1"> by <img src="https://latex.codecogs.com/png.latex?C_2"> to get the full algorithm for <img src="https://latex.codecogs.com/png.latex?3%5Ctimes3"> grid.</p>
<p><img src="https://latex.codecogs.com/png.latex?C%20=%20C_%7B2%7D%20%5Ccdot%20C_%7B1%7D%20=%20%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bccccccccc%7D%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%201%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%201%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D"></p>
<p>Multiplication by this matrix is equivalent to the Lights Chasing algorithm. We can also find by matrix multiplication what clicks will our Lights Chasing algorithm do:</p>
<p><img src="https://latex.codecogs.com/png.latex?S%20=%20S_%7B2%7D%20%5Ccdot%20C_%7B1%7D%20+%20S_%7B1%7D%20=%20%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bccccccccc%7D%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%200%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D"></p>
<p>With relation between <img src="https://latex.codecogs.com/png.latex?C"> and <img src="https://latex.codecogs.com/png.latex?S"> matrixes being:</p>
<p><img src="https://latex.codecogs.com/png.latex?C%20=%20I%20+%20MS"></p>
<!--
$C=I+MS=I+MS_1+MS_2+MS_2*MS_1$
$M*x_b=b => x_b=Sb$
-->
<p>This construction of Lights Chasing matrix can be done for grids of any size.</p>
<p>Because Lights Chasing can be described by matrix multiplication then it is <strong>distributive with respect to matrix addition</strong>. This property is enough to create a fast algorithm for generating a lookup table for our fast solver but before that why does using a lookup table even work? To find out let’s see how our system of equations changes when we apply Lights Chasing.</p>
<p><img src="https://latex.codecogs.com/png.latex?CMx%20=%20Cb"></p>
<p><img src="https://latex.codecogs.com/png.latex?%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bccccccccc%7D%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D%20%5Ccdot%20%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bc%7D%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_1%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_1%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_1%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_2%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_2%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_2%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_3%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_3%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_3%7D%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D%20=%20%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bccccccccc%7D%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%201%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%201%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%201%20&amp;%200%20&amp;%200%20&amp;%200%20&amp;%201%20&amp;%200%20&amp;%201%20&amp;%201%20&amp;%201%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D%20%5Ccdot%20%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bc%7D%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_1%7D%20%5C%5C%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_1%7D%20%5C%5C%20%5Cmathtt%7Bb_%7B3%7D%CB%8F_1%7D%20%5C%5C%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_2%7D%20%5C%5C%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_2%7D%20%5C%5C%20%5Cmathtt%7Bb_%7B3%7D%CB%8F_2%7D%20%5C%5C%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_3%7D%20%5C%5C%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_3%7D%20%5C%5C%20%5Cmathtt%7Bb_%7B3%7D%CB%8F_3%7D%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D"></p>
<p><img src="https://latex.codecogs.com/png.latex?%5Cbegin%7Balign%7D%0A0%20&amp;=%200%20%5C%5C%0A0%20&amp;=%200%20%5C%5C%0A%5Cmathtt%7Bx_%7B1%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_3%7D%20&amp;=%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bb_%7B3%7D%CB%8F_1%7D%20%5C%5C%0A0%20&amp;=%200%20%5C%5C%0A0%20&amp;=%200%20%5C%5C%0A%5Cmathtt%7Bx_%7B1%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_3%7D%20&amp;=%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bb_%7B3%7D%CB%8F_2%7D%20%5C%5C%0A0%20&amp;=%200%20%5C%5C%0A0%20&amp;=%200%20%5C%5C%0A%5Cmathtt%7Bx_%7B1%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_2%7D%20&amp;=%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bb_%7B3%7D%CB%8F_3%7D%0A%5Cend%7Balign%7D"></p>
<p>or more simply:</p>
<p><img src="https://latex.codecogs.com/png.latex?%5Cbegin%7Balign%7D%0A%5Cmathtt%7Bx_%7B1%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_3%7D%20&amp;=%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bb_%7B3%7D%CB%8F_1%7D%20%5C%5C%0A%5Cmathtt%7Bx_%7B1%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_3%7D%20&amp;=%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bb_%7B3%7D%CB%8F_2%7D%20%5C%5C%0A%5Cmathtt%7Bx_%7B1%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_2%7D%20&amp;=%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bb_%7B3%7D%CB%8F_3%7D%0A%5Cend%7Balign%7D"></p>
<p>And we got interesting results. Turns out that after Lights Chasing algorithm we only are left with 3 equations that correspond to lights on the bottom row. We also see that those equations only use variables corresponding to lights on the top row. This isn’t an isolated property of <img src="https://latex.codecogs.com/png.latex?3%7B%5Ctimes%7D3"> grid you can find the same simplification emerging for grids of any size. To prove it we require just 1 lemma which I will show below with a small intuitive explanation. Showing full formal proof would be out of the scope of this specific blog post but with the intuition below creating such proof shouldn’t be a problem.</p>
<div id="lem-" class="theorem lemma">
<p><span class="theorem-title"><strong>Lemma 1 </strong></span>If there exists a solution to Lights Out game that has no clicks in the top row then the Lights Chasing algorithm solves Lights Out game.</p>
</div>
<p>If we wanted to write this lemma in vector form for our <img src="https://latex.codecogs.com/png.latex?3%5Ctimes3"> grid we would have</p>
<p>if <img src="https://latex.codecogs.com/png.latex?x%20=%20%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bc%7D%200%20%5C%5C%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_1%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_1%7D%20%5C%5C%200%20%5C%5C%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_2%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_2%7D%20%5C%5C%200%20%5C%5C%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_3%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_3%7D%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D"> and <img src="https://latex.codecogs.com/png.latex?Mx%20=%20b"> then <img src="https://latex.codecogs.com/png.latex?x%20=%20Sb"></p>
<p>To see why this lemma works let’s analyze the below example.</p>
<div id="70" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<img width="672" height="480" style="object-fit: contain; height: auto;" src="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/data:image/png;base64, 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+v+vp67rnnHh566CFGjhxJGj399NNUVlYyY8YMSkpKWLBgAc8++yyrV6+mU6dOpElFRQX79u1jypQp/P73v2fkyJGsXLmScePGkVYNDQ1MmTKFU045hbSaN28emUyG4uJijhs0aBBDhgzhZBDIIwcOHOArX/kKb7/9Ns3NzaTZAw88wL333sucOXNoM23aNL7whS9QU1PD5ZdfTlps3ryZV199ld27d9O3b1/ajB8/nqVLlzJu3DjSqrKykk6dOpFWLS0t7Nixg7fffptBgwY7YSNlAAAIPklEQVShOA4cOMBXvvIV3n77bZqbm0mzBx54gHvvvZc5c+bQZtq0aXzhC1+gpqaGyy+/nLTYvHkzr776Krt376Zv3760GT9+PEuXLmXcuHGkVWVlJZ06dSKtWlpa2LFjB2+/TaDBg3iZBTII5lMhiVLltBm3LhxpNXRo0fp06cPFRUVHNenTx8ymQx/vOfSZPCwkKqqqro27cvx5WWlrJr1y7SaunSpezcuZNbb72VZcuWkUYfffQRra2t9O7dm9raWvr27UtJSQn698pkMixZsoQ248aNI62OHj1Knz59qKio4Lg+ffqQyWT485/TJoUFhZSVVVF3759Oa60tJRdu3aRVkuXLmXnzp3ceuutLFu2jDT66KOPaG1tpXfv3tTW1tK3b19KSko4mQTySOfOnRkyZAhtioqKSKvOnTuzZs0a2vvxj3/M4cOHyeVypMnAgQP57ne/S5slS5bwzjvv8MILL/DMM8+QRnV1dcydO5fXX3+dX/616TV9u3b6dy5M4MGDaJnz57s3LmTkSNHUl1dTXFxMfr36Ny5M0OGDKFNUVERadW5c2fWrFlDez/+8Y85fPgwuVyONBk4cCDf/e53abNkyRLeeecdXnjhBZ555hnSqK6ujrlz5/L666/z61/mrTavn07nTt3ZtCgQfTs2ZOdO3cycuRIqqurKS4u5mQQUKrt2bOHuXPnsnz5cp5++mn69etHWr311lts3ryZwsJC0ujIkSNMmTKFBQsWcM4555BmLS0tjB07loULF9K/f392797NZZddxr333svChQuRPi179uxh7ty5LF++nKeffpp+/fqRVm+99RabN2+msLCQNDpy5AhTpkxhwYIFnHPOOaRZS0sLY8eOZeHChfTv35/du3dz2WWXce+997Jw4UJOBgGl1k9/+lNuueUWrrzySrZs2cLZZ59Nmj3yyCO0efDBB5k2bRrvv/8+abJgwQIKCgo455xzqK2t5cMPP6SxsZHa2lrKy8spLi4mLSoqKqioqOC4008/nZkzZ7J48WKkT8tPf/pTbrnlFq688kq2bNnC2WefTZo98sgjtHnwwQeZNm0a77/PmmyYMECCgoKOOecc6itreXDDz+ksbGR2tpaysvLKS4uJi0qKiqoqKjguNNPP52ZM2eyePFiThYBpdKSJUu45557WLFiBVdccQVp9fOf/5y3336bBx98kOMuueQS7rrrLpqamujSpQtp0djYyMcff8zUqVNpc/DgQQ4ePMjUqVN56qmnyOVypMWGDRvo3r07gwYN4rju3bvTuXNnpE/DkiVLuOeee1ixYgVXXHEFafXzn/+ct99+mwcffJDjLrnkEu666y6ampro0qULadHY2MjHH3/M1KlTaXPw4EEOHjzI1KlTeeqpp8jlcqTFhg0b6N69O4MGDeK47t2707lzZ04WAaVOU1MTd999Nz/84Q+54oorSLNsNsvixYuZPXs2p512Gm1efPFFysrK6NKlC2kyf/585s+fz3EPP/wwS5cu5a233iJtXnnlFZYsWUJdXR3dunWjpaWFZ555hssvvxypo5qamrj77rv54Q9/yBVXXEGaZbNZFi9ezOzZsznttNNo8+KLL1JWVkaXLl1Ik/nz5zN/nyOe/jhh1m6dClvvfUWafPKK6+wZMkS6urq6NatGy0tLTzzzDNcfvnlnCwCSp26ujr27dvHTTfdxLe+9S3ae/rpp5kwYQJpMXbsWHK5HBdccAG5XI7du3fz3nvvsXLlSnTyuuWWW3juuefo378/I0eO5N133+Vzn/scVVVVSB1VV1fHvn37uOmmm/jWt75Fe08/TQTJkwgLcaOHUsul+OCCy4gl8uxe/du3nvvPVauXIlOXrfccgvPPfcc/fv3Z+TIkbz77rt87nOfo6qqipNFIE89++yznHXWWaRR/79ee211/hXvvjFL5ImBQUFrFq1itWrV1NXV0evXr246qqr6NWrF2l33XXXMWLECNKoR48ebNy4kRdeeIGdO3dSWVnJV7/6VUIIKI5nn32Ws846izTq378/r732Gv/KF7/4RdKkoKCAVatWsXr1aurq6ujVqxdXXXUVvXr1Iu2uu+46RowYQRr16NGDjRs38sILL7Bz504qKyv56le/SgiBk0UgT40YMYK0ymazXHbZZeSTq666iquuuop80q9fP/r160daFRYWct1116HPxogRI0irbDbLZZddRj656qqruOqqq8gn/fr1o1+/fqRVYWEh1113HSergCRJkhRRQJIkSYooIEmSJEUUkCRJkiIKSJIkSREFJEmSpIgCkiRJUkQBSZIkKaKAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmigCRJkhRRQJIkSYooIEmSJEUUkCRJkiIKSJIkSREFJEmSpIgCkiRJUkQBSZIkKaKAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmigCRJkhRRQJIkSYooIEmSJEUUkCRJkiIKSJIkSREFJEmSpIgCkiRJUkQBSZIkKaKAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJE/x/ppldCDNRQOAAAAABJRU5ErkJggg==">
</div>
</div>
<p>The left plot shows what clicks solve the puzzle on the right plot. We see that like in our lemma assumption, there are no clicks on the top row. We also see that in the top row lights (1,2) and (1,4) are on. And because there are no clicks in the top row the only way that lights (1,2) and (1,4) are on is if the lights below them got clicked. So now let’s apply Lights Chasing on the top row and click on (2,2) and (2,4)</p>
<div id="72" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<img width="672" height="480" style="object-fit: contain; height: auto;" src="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/data:image/png;base64, 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">
</div>
</div>
<p>Now both rows 1 and 2 have no clicks. And we can see that lights (2,1) and (2,5) are on. And with the same logic as before the only way that lights (2,1) and (2,5) are on is if lights below got clicked. So let’s do another row of Lights Chasing.</p>
<div id="74" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<img width="672" height="480" style="object-fit: contain; height: auto;" src="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAqAAAAHgCAYAAAB6jN80AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAIABJREFUeAHtwQ1s1vWh6PFv4dfK4WHYx1FBcQy10sJqdXgEEsVHnY6XimDsFkIwaLe6CGsUzVSUyb8az0CTvYA6GejBzaEzXTbwZWwsSk0dQjZQ1PkIzDFgbDCkO2A5lAK9t1nIunOWe29uPT/h/3w/n9D5vyFJkiRFEpAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmigCRJkhRRQJIkSYooIEmSJEUUkCRJkiIKSJIkSREFJEmSpIgCkiRJUkQBSZIkKaKAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmigCRJkhRRQJIkSYooIEmSJEUUkCRJkiIKSJIkSREFJEmSpIgCkiRJUkQBSZIkKaKAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmigCRJkhRRQJIkSYooIEmSJEUUkCRJkiIKSJIkSREFJEmSpIgCkiRJUkQBSZIkKaKAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSam0Z88etm/fzhlnnMHgwYORThQBSZKUSsuXL2f27NncddddzJ8/H+lEEZAkSZIiCkgnsRUrVvDKK69w9tlnc+utt9LW1sbXv/51jh07xle/+lXKy8uRJMGyZctYs2YNw4cP55ZbbqF/5IH5eAdBK7+OKLmTFjBvv37+fSSy/lZz/7Gd/61rf43Oc+R3l5OZIkWLZsGbt376ZXr14cO3aM5cuXs27dOvr06YP0cQhIJ7EzzzyTb37zm3zpS1/i1ltv5a233iKTybBkyRIkSX/zH/xH/zmN7+hvLycSZMm8eqrr7J06VK++tWvIn0cAtJJrq6ujmeffZbVq1fTZeHChZx99tlIkv7msssuY+TIkXS56aabePXVV3nllVf46le/ivRxCEgpMHbsWFavXk2XSy+9FEnS31VUVHDcpz71Kbp88MEHSB+XgHSSy+fz/Nu/RulpaX89a9/5Utf+hLr168nhIAkCVpaWujs7KSoqIhf/vKXdDnvvPOQPi4B6SR27Ngx6urqOHToEIsWLeKll17iJz/5CfPnz2fu3LlIkmDjxo18/vOfp7y8nCeffJKioiLq6+uRPi4B6ST2rW99i7Vr11JVVcVNN93E2LFjef7553nggQeYMmUKVVVVSFKhu/baa3n33Xf55S9/SWlpKd/85jcZNWoU0sclIJ3E7rjjDu644w6Oq6iooKOjA0kS3Hbbbdx2220c95e/IUBAwZQVFSE9HEKSJKkglBWVoZ0IghIkiRJEQUkSZKkiAKSJElSRAFJkiQposDH7LHHHuOtt95i6NChSNKJYNu2bZx/vnMnDmTj9tjjz3GW2+9xdChQ5GkE8G2bds4/zzmTlzJv+/Ah+z119/nVdeeYVsNkva9e/fn8OHD3Po0CHSrHfv3vTr14+DBw/S0dFBmhUXF9O3b18+/PBDjh49Spr16dOHkpIS9u/fT9rt3r2btrY2Zs6cycft9ddf55VXXiGbzZJ2/fv35/Dhwxw6dIg06927N/369ePgwYN0dHSQZsXFxfTt25cPP/yQo0ePkmZ9+vShpKSE/fv3k3a7d++mra2NmTNn8v8r8DE755xzePvtt9m6dStp19DQwKZNm2hubibNstksU6ZM4cUXX2TLli2kWWVlJVdddRVPPvkkra2tpFkul6O6uppFixaRdu3t7ZxzzjmcCM455xzefvtttm7dSto1NDSwadMmmpubSbNsNsuUKVN48cUX2bJlC2lWWVnJVVddxZNPPklraytplsvlqK6uZtGiRaRde3s755xzDj0RkCRJkiIKSJIkSREFJEmSpIgCkiRJUkQBSZIkKaKAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmigCRJkhRR4CPU1NTEhAkTyGQySJL+UVNTExMmTCCTySBJhSzwEdmxYwfTp09n69atZDIZJEl/t2PHDqZPn87WrVvJZDJIUiEL9FA+n+c73/kOP/nJT2hvb0eS9Hf5fJ7vfOc7/OQnP6G9vR1JEgR6KIRARUUFN998Mw888ACSpL8LIVBRUcHNN9/MAw88gCQJAj1UXl7ObbfdxrZt23jggQeQJP1deXk5t912G9u2beOBBx5AkgSBiJIkobGxke5yuRySJEiShMbGRrrL5XJIUtoEIkqShCRJ6C5JElauXIkkFbokSUiShO6SJGHlypVIUpoEJEmSpIgCkiRJUkQBSZIkKaLAR6S0tJR58+bRv39/JEn/qLS0lHnz5tG/f38kqdAFPiKlpaUkSYIk6b8rLS0lSRIkSRCQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmigCRJkhRRQJIkSYooIEmSJEUUkCRJkiIKSJIkSREFJEmSpIgCkiRJUkQBSZIkKaKAJEmSFFHgBJDJZKitrSXtQggMGzaMsrIy0qy4uJguo0ePpqqqijTLZDJ0GT9+PB0dHaRZNpslhEBtbS1pt3HjRk4kmUyG2tpa0i6EwLBhwygrKyPNiouL6TJ69GiqqqpIs0wmQ5fx48fT0dFBmmWzWUII1NbWknYbN26kpwKSJElSRIETQFtbG01NTaRdQ0MDmzdvprm5mTTLZrPU1dWxbt068vk8aVZZWUlNTQ2rVq2itbWVNMvlclRXV9PU1ETatbe3M3nyZE4UbW1tNDU1kXYNDQ1s3ryZ5uZm0iybzVJXV8e6devI5/OkWWVlJTU1NaxatYrW1lbSLJfLUV1dTVNTE2nX3t7O5MmT6YmAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmigCRJkhRRQJIkSYooIEmSJEUUkCRJkiIKSJIkSREFJEmSpIgCH4F9+/bx6quvcuDAAUaNGkVFRQWSpL/Zt28fr776KgcOHGDUqFFUVFQgSYUs0EPr169nwoQJDB06lAEDBlBfX8+dd97J/fffjyQVuvXr1zNhwgSGDh3KgAEDqK+v58477+T+++9HkgpVoIfuuOMOpkyZwhNPPEGXlpYWLrvsMmpra6murkaSCtkdd9zBlClTeOKJJ+jS0tLCZZddRm1tLdXV1UhSIQr0wLFjx/j1r3/N/fffz3GXXnopp512Gps2baK6uhpJKlTHjh3j17/+Nffffz/HXXrppZx22mls2rSJ6upqJKkQBXqgV69eHDhwgBACx7W0tPDBBx9QXV2NJBWyXr16ceDAAUIIHNfS0sIHH3xAdXU1klSoAj0UQqBLZ2cny5cv55ZbbuH222+nurqa/ypJEhobG+kul8shSWkVQqBLZ2cny5cv55ZbbuH222+nurqa/ypJEhobG+kul8shSWkT+Ajk83nq6urYuXMn3/ve95g6dSr/TJIkJElCd0mSsHLlSiQprfL5PHV1dezcuZPvfe97TJ06lX8mSRKSJKG7JElYuXIlkpQmgR5au3Yt48aNY/bs2cyZM4c+ffogSfqbtWvXMm7cOGbPns2cOXPo06cPklToAj3Q2dlJXV0dd955J3PnzkWS9HednZ3U1dVx5513MnfuXCRJfxPogS1btpDP51m9ejWvv/463c2ZM4dLLrkESSpUW7ZsIZ/Ps3r1al5/XW6mzNnDpdccgmSVIgCPVBSUsK8efP4Z7LZLJJUyEpKSpg3bx7/TDabRZIKVaAHhg4dSpIkSJL+u6FDh5IkCZKkfxSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmigCRJkhRRQJIkSYooIEmSJEUUkCRJkiIKSJIkSREFJEmSpIgCkiRJUkQBSZIkKaKAJEmSFFHgBJDJZKitrSXtQggMGzaMsrIy0qy4uJguo0ePpqqqijTLZDJ0GT9+PB0dHaRZNpslhEBtbS1pt3HjRk4kmUyG2tpa0i6EwLBhwygrKyPNiouL6TJ69GiqqqpIs0wmQ5fx48fT0dFBmmWzWUII1NbWknYbN26kpwKSJElSRIETQFtbG01NTaRdQ0MDmzdvprm5mTTLZrPU1dWxbt068vk8aVZZWUlNTQ2rVq2itbWVNMvlclRXV9PU1ETatbe3M3nyZE4UbW1tNDU1kXYNDQ1s3ryZ5uZm0iybzVJXV8e6devI5/OkWWVlJTU1NaxatYrW1lbSLJfLUV1dTVNTE2nX3t7O5MmT6YmAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmigCRJkhRRQJIkSYooIEmSJEUUkCRJkiIKSJIkSREFJEmSpIgCH4GdO3fy2muvcezYMS655BKGDBmCJOlvdu7cyWuvvcaxY8e45JJLGDJkCJJUyAI9tGLFCqZNm8bFF1/Mvn37eO+993jqqaeYOnUqklToVqxYwbRp07j44ovZt28f7733Hk899RRTp05FkgpVoIfuuOMOkiTha1/7Gl1uv/127r77bqZOnYokFbo77riDJEn42te+Rpfbb7+du+++m6lTpyJJhSrQA+3t7ZSVlTFlyhSOGz9+PEuWLKGzs5OioiIkqVC1t7dTVlbGlClTOG78+PEsWbKEzs5OioqKkKRCFOiBU045hbVr19Jlx44dbNmyhYcffpgbbriBoqIiJKmQnXLKKaxdu5YuO3bsYMuWLTz88MPccMMNFBUVIUmFKvARmT9/Pk899RR9+/blkUce4Z9JkoTGxka6y+VySFLazZ8/n6eeeoq+ffvyyCOP8M8kSUJjYyPd5XI5JCltAh+RRx99lEceeYTHHnuMkSNHsmfPHjKZDN0lSUKSJHSXJAkrV65EktLs0Ucf5ZFHHuGxxx5j5MiR7Nmzh0wmQ3dJkpAkCd0lScLKlSuRpDQJ9MC2bdv40Y9+xF133UWXoqIiZs6cyezZs1m3bh1XXnklklSotm3bxo9+9CPuuusuuhQVFTFz5kxmz57NunXruPLKK5GkQhTogRACd999N9deey3Dhw+ny9atW+no6OCMM85AkgpZCIG7776ba6+9luHDh9Nl69atdHR0cMYZZyBJhSrQA2eddRZf/OIXmTRpErfccgudnZ08/vjjfOELX2D48OFIUiE766yz+OIXv8ikSZO45ZZb6Ozs5PHHH+cLX/gCw4cPR5IKVaCHfvCDH7B48WJ+9atfEUJgzpw53HjjjUiS4Ac/+AGLFy/mV7/6FSEE5syZw4033ogkFbJAD5WUlNDQ0EBDQwOSpH9UUlJCQ0MDDQ0NSJL+JiBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmigCRJkhRRQJIkSYooIEmSJEUUkCRJkiIKSJIkSREFJEmSpIgCkiRJUkQBSZIkKaKAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQposAJIJPJUFtbS9qFEBg2bBhlZWWkWXFxMV1Gjx5NVVUVaZbJZOgyfvx4Ojo6SLNsNksIgdraWtJu48aNnEgymQy1tbWkXQiBYcOGUVZWRpoVFxfTZfTo0VRVVZFmmUyGLuPHj6ejo4M0y2azhBCora0l7TZu3EhPBSRJUnSVlZVkMhnSrK2tjb179yL9V4ETQFtbG01NTaRdQ0MDmzdvprm5mTTLZrPU1dWxbt068vk8aVZZWUlNTQ2rVq2itbWVNMvlclRXV9PU1ETatbe3M3nyZE4UbW1tNDU1kXYNDQ1s3ryZ5uZm0iybzVJXV8eoUaOorKwkzfL5PC+99BKrVq2itbWVNMvlclRXV9PU1ETatbe3M3nyZHoiIEmSJEUUkCRJkiIKSJIkSREFJEmSpIgCkiRJUkQBSZIkKaKAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmiwEfoyJEjLF26lLq6OkpKSpAk/d2RI0dYunQpdXV1lJSUIEmFKvARuu+++/jGN77B1KlTKSkpQZL0d/fddx/f+MY3mDp1KiUlJUhSoQp8RNasWcOiRYuQJP13a9asYdGiRUiSIPAR2LdvHzNmzGDBggXMmjULSdLf7du3jxkzZrBgwQJmzZqFJBW6wEfgy1/+MjfccAOXXXYZkqR/9OUvf5kbbriByy67DEkSBHpo8eLF/PGPf+S5554jn8/zf5IkCY2NjXSXy+WQpLRavHgxf/zjH3nuuefI5/P8nyRJQmNjI93lcjkkKW0CPbB582bmzZvHa6+9RgiB/5skSUiShO6SJGHlypVIUtps3ryZefPm8dprrxFC4P8mSRKSJKG7JElYuXIlkpQmgR5Yv349e/bsoaKigu4GDBjAXXfdxYMPPogkFar169ezZ88eKioq6G7AgAHcddddPPjgg0hSIQr0wHXXXcf777/PcZs3b2bcuHFs2LCBT33qU0hSIbvuuut4/33OW7z5s2MGzeODRs28KlPfQpJKlSBHshkMmQyGY778MMP6TJkyBBKS0uRpEKWyWTIZDIc9+GHH9JlyJAhlJaWIkmFKvAROv3005k3bx59+vRBkvSPTj/9dObNm0efPn2QpEIW+AidfvrpJEmCJOm/O/3000mSBEkqdAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmigCRJkhRRQJIkSYooIEmSJEUUkCRJkiIKSJIkSREFJEmSpIgCkiRJUkQBSZIkKaKAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQVOAJlMhtraWtIuhMCwYcMoKysjzYqLi+kyevRoqqqqSLNMJkOX8ePH09HRQZpls1lCCNTW1pJ2Gzdu5ESSyWSora0l7UIIDBs2jLKyMtKsuLiYLuvXr+edd94hzdra2ugyfvx4Ojo6SLNsNksIgdraWtJu48aN9FRA+h9SWVlJJpMhzdra2ti7dy+SPhpnnXUW559/PmnW0dHBrl27KCT/+q/SnFxMWnW2trKX/6V/T/JnACaGtro6mpibRraGhg8+bNNDc3k2bZbJa6ujpGjRpFZWUlaZbP53nppZdYtWoVra2tpFkul6O6upqmpibSrr29ncmTJ3OiaGtro6mpibRraGjgvPPOI5fLkWatra38+7/O6NGjaKyspI0y+fzvPTSS4wbN45sNkuaNTc3s3btWpqamki79vZ2Jk+eTE8EJEmSpIgCkiRJUkQBSZIkKaKAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmigCRJkhRRQJIkSYooIEmSJEUU6KEDBw7wzjvv0F1JSQkjR45EkgrdgQMHeOedd+iupKSEkSNHIkmFKtBDq1ev5vrrr6e7gQMH8uc/xlJKnSrV6/m+uuvp7uBAwfy5z/GUkqVIEe2rJlC9dccw3PP/88kqR/tGXLFq655hqef/55JEl/E+ih3/3ud1RUVNCls7OToqIiJEl/87vf/Y6Kigq6dHZ2UlRUhCQVukAPbdmyhUOHDjFw4ED279/PmDFjWLhwIeeffz6SVOi2bNnCoUOHGDhwIPv372fMmDEsXLiQ888/H0kqVIEe2rZtGxdccAFPPPEEIQTmzp3LxIkTeffdd+nXrx/dJUlCY2Mj3eVyOSQprbZt28YFF1zAE088QQiBuXPnMnHiRN5991369etHd0mS0NjYSHe5XA5JSptAD/3+97+nu2XLljFgwACam5upqamhuyRJSJKE7pIkYeXKlUhSGv3+97+nu2XLljFgwACam5upqamhuyRJSJKE7pIkYeXKlUhSmgR64OjRoxw6dIhMJsNxffv2ZeDAgezbtw9JKmRHjx7l0KFDZDIZjuvbty8DBw5k3759SFKhCvTA3r17GTx4MC+++CLjxo2jy/bt29m5cyef/exnkaRCtnfvXgYPHsyLL77IuHHj6LJ9+3Z27tzJZz/7WSSpUAV6YODAgdTX1zNjxgxuvPFGPvnJT/L4449z4403UlVVhSQVsoEDB1JfX8+MGTO48cYb+eQnP8njjz/OjTfeSFVVFZJUqAI9tGjRIkaOHMnLL7/Mrl27SJKE6dOnI0mCRYsWMXLkSF5++WV27dpFkiRMnz4dSSpkgR4KIVBfX099fT2SpH8UQqC+vp76+nokSX8TkCRJkiIKSJIkSREFJEmSpIgCkiRJUkQBSZIkKaKAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmigCRJkhRR4GO2fft2du/ezeHDh0m7tWvX8uc/5nDhw+TZvv376elpYW9e/dSVlZGmv3lL38hn8+zf/9+Dh8+TJr97ne/o62tjcOHD5N2R48eZfv27ZwItm/fzu7duzl8+DBpt3btWv74xz+yYcMG0uw/M/+fWvf83evXspKysjzf7yl7+Qz+c5dOgQ/Iv/0Kavf/++2zfvp3Dhw+TdkePHmX79u30ROBjVllZycGDBxk6dCixHD58mLfffpuRI0eSdq2trezZs4eKigo+DgcPHiSWnTt30uWss84ilkwmw0UXXcRFF11ETO+99x6nn3462WyW2EaNGkVMGzZsoKqqipKSEmLZtm0blZWVnAgqKys5ePAgQ4cOJZbDhw/z9ttvM3LkSD4OBw8eJJbW1lb27NlDRUUFMV100UV0OXjwILHs3LmTLmeddRaxZDIZLrroIjo7Ozl48CCxvPfee5x++ulks1liGTRoEIMGDWLUqFHEtGHDBqqqqigpKSGWbdu2UVlZSU8EPmZ33nknse3atYuLL76YX/ziF6Td888/z5IlS5g/fz5plyQJXZIkIe2uvfZarrnmGiZNmkTaDR48mGXLlnHmmWdSiO68805i27VrFxdffDG/+MUvSLvnn3+eJUuWMH/+fNIuSRK6JElC2l177bVcc801TJo0ibQbPHgwy5Yt48wzz+RkEpAkSZIiCkiSJEkRBSRJkqSIAgWoX79+zJo1i0JQXl7O9ddfTyG49NJLKRTXX3895eXlFIJZs2bRr18/FE+/fv2YNWsWhaC8vJzrr7+eQnDppZdSKK6/nrKy8spBLNmzaJfv36cbAIFqH/txzzz0UguHDhzN8+HAKwVVXXUWhmDFjBoXinnvuQXH179+fe+65h0IwfPhwhg8fTiG46qqrKBQzZsygUNxzzz2cjAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKFCgnnzySc477zzGjh1LWq1Zs4af/vSnHDhwgDFjxnDTTTcRQiBt2tvbWbx4MRs3buTUU09l6tSpjBkzhrRraWlhxYoVPPzww6TR8uXL2b59O92NHz+eCy+8EP3Pe/LJJznvvPMYO3YsabVmzRp++tOfcuDAAcaMGcNNN91ECIG0aW9vZ/HixWzcuJFTTz2VqVOnMmbMGNKupaWFFStW8PDDD5NGy5cvZ/v27XQ3fvx4LrzwQk4GgQK0fft27r33Xh5++GHGjh1LGj399NPU19czc+ZMysvLWbBgAc8++yyrV6+mV69epElNTQ179+5l2rRp/OY3v2Hs2LGsWLGCiRMnklatra1MmzaN0047jbSaN28emUyG0tJSjhsxYgQXXngh+p+1fft27r33Xh5++GHGjh1LGj399NPU19czc+ZMysvLWbBgAc8++yyrV6+mV69epElNTQ179+5l2rRp/OY3v2Hs2LGsWLGCiRMnklatra1MmzaN0047jbSaN28emUyG0tJSjhsxYgQXXnghJ4NAAdm/fz+f+9znePPNN+no6CDNHnzwQe677z7mzJlDlxkzZvDpT3+a5uZmrrjiCtJi06ZNvPzyy+zatYtBgwbRZdKkSSxdupSJEyeSVvX19fTq1Yu0OnLkCNu2bePNN99kxIgRKI79+/fzuc99jjfffJOOjg7S7MEHH+S+++5jzpw5dJkxYwaf/vSnaW5u5oorriAtNm3axMsvv8yuXbsYNGgQXSZNmsTSpUuZOHEiaVVfX0+vXr1IqyNHjrBt2zbefPNNRowYwckoUEAymQxLliyhy8SJE0mro0ePMnDgQGpqajhu4MCBZDIZ/vSnP5EmxcXFNDY2MmjQII6rqKhg586dpNXSpUvZsWMHt912G8uWLSON/vCHP9DZ2UlZWRktLS0MGjSI8vJy9D8rk8mwZMkSukycOJG0Onr0KAMHDqSmpobjBg4cSCaT4U9/+hNpUlxcTGNjI4MGDeK4iooAj/L1AAAHSUlEQVQKdu7cSVotXbqUHTt2cNttt7Fs2TLS6A9/+AOdnZ2UlZXR0tLCoEGDKC8v52QSKCC9e/fmwgsvpEtJSQlp1bt3b9asWUN33/3udzl06BC5XI40GT58OF/+tfpsmTJEt5++21eeOEFnnnmGdIon88zd+5cXnvtNX72s5+RVlu3bqV3796MGDGCU089lR07djB27FiampooLS1F/zN69+7NhRdeSJeSkhLSqnfv3qxZs4buvvvd73Lo0CFyuRxpMnz4cL7+9a/TZcmSJbz99tu88MILPPPMM6RRPp9n7ty5vPbaa/zsZz8jrbZu3Urv3r0ZMWIEp556Kjt27GDs2LE0NTVRWlrKySCgVNu9ezdz585l+fLlPP300wwePJi0euONN9i0aRPFxcWk0eHDh5k2bRoLFizg3HPPJc2OHDnChAkTWLhwIUOGDGHXrl1cfvnl3HfffSxcuBDpo7J7927mzp3L8uXLefrppxk8eDBp9cYbb7Bp0yaKi4tJo8OHDzNt2jQWLFjAueeeS5odOXKECRMmsHDhQoYMGcKuXbu4/PLLue+++1i4cCEng4BS6/vf/z633norV111FW+99RbnnHMOafboo4/S5aGHHmLGjBm8++67pMmCBQsoKiri3HPPpaWlhffff5+2tjZaWlqoqqqitLSUtKipqaGmpobjzjzzTGbNmsXixYuRPirf/73ufXWW7nqqqt46623OOecc0izRx99lC4PPfQQM2bM4N133yVNFixYQFFREeeeey4tLS28/77tLW10dLSQlVVFaWlpaRFTU0NNTU1HHfmmWcya9YsFi9ezMkioFRasmQJ9957Lz/+8Y+58sorSasf/vCHvPnmmzz00EMcd8kll3D33XfT3t7OKaecQlq0tbXxwQcfMH36dLocOHCAAwcOMH36dJ566ilyuRxpsX79evr168eIESM4rl+/fvTu3Rvpo7BkyRLuvfdefvzjH3PllVeSVj/84Q958803eeihhzjukksu4e6776a9vZ1TTjmFtGhra+ODDz5g+vTpdDlw4AAHDhxg+vTpPPXUU+RyOdJi/fr19OvXjxEjRnBcv3796N27NyeLgFKnvb2de+65h29/+9tceeWVpFk2m2Xx4sXMnj2bM844gy4vvvgilZWVnHLKKaTJ/PnzmT9/Psc98sgjLF26lDfeeIO0+fnPf86SJUvI5/P07duXI0eO8Mwzz3DFFVcg9VR7ezv33HMP3/72t7nyyitJs2w2y+LFi5k9ezZnnHEGXV588UUqKys55ZRTSJP58+czf/58jnvkkUdYunQpb7zxBmnz85/nCVLlpDP5+nbty9HjhzhmWee4YorruBkEVDq5PN59u7dy80338xXvvIVunv66aeZMmUKaTFhwgRyuRwXXHABuVyOXbt28dvf/pYVK1agk9ett97Kc889x5AhQxg7dizvvPMOn/jEJ2hsbETqqXw+z969e7n55pv5yle+QndPP/00U6ZMIS0mTJhALpfjggsuIJfLsWvXLn7729+yYsUKdPK69dZbee655xgyZAhjx47lnXfe4ROf+ASNjY2cLAIF6tlnn+Xss88mjYYMGcIrr7zCP/OZz3yGNCkqKmLlypWsXr2afD7PgAEDuPrqqxkwYABpd9111zFmzBjSqH/mzYsIEXXniBHTt2UF9fz+c/3lCCCiOZ599lrPPPps0GjJkCK+88gr/zGc+8xnSpKioiJUrV7J69Wry+TwDBgzg6quvZsCAAaTdddddx5gxY0ij/v37s2HDBl544QV27NhBfX09n/85wkhcLIIFKgxY8aQVtlslssvv5xCcvXVV3P11VdTSAYPHszgwYNJq+LiYq677jr08RgzZgxplc1mufzyyykkV199NVdffTWFZPDgwQwePJi0Ki4u5rrrruNkFZAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmigCRJkhRRQJIkSYooIEmSJEUUkCRJkiIKSJIkSREFJEmSpIgCkiRJUkQBSZIkKaKAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmigCRJkhRRQJIkSYooIEmSJEUUkCRJkiIKSJIkSREFJEmSpIgCkiRJUkQBSZIkKaKAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmKKCBJkiRFFJAkSZIiCkiSJEkRBSRJkqSIApIkSVJEAUmSJCmigCRJkhRRQJIkSYooIEmSJEUUkCRJkiIKSJIkSREFJEmSpIgCkiRJUkQBSZIkKaKAJEmSFFFAkiRJiiggSZIkRRSQJEmSIgpIkiRJEQUkSZKkiAKSJElSRAFJkiQpooAkSZIUUUCSJEmK6H8Bt2PiRaG0sVEAAAAASUVORK5CYII=">
</div>
</div>
<p>The same reasoning as before still applies. Rows 1,2,3 and 4 have no clicks and the only way light (4,3) is on is if light (5,3) is clicked.</p>
<div id="76" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<img width="672" height="480" style="object-fit: contain; height: auto;" src="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/data:image/png;base64, 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">
</div>
</div>
<p>And like that, we solved this particular puzzle by using Lights Chasing. I hope it is easy to see how this reasoning can be extended to grids of any size.</p>
<!--

If we wanted to write this lemma in vector form for our $3\times3$ grid we would have


```utpqubu
#| output: asis

x=vec(Symbolics.variables(:x, 1:3, 1:3))
xb=vec(Symbolics.variables(:x, 1:3, 1:3))
xb[[1,4,7]].=0
xt=vec(Symbolics.variables(:x, 1:3, 1:3))
xt[[2,3,5,6,8,9]].=0

print("if $(@latexify x=$(xb))  and  $(@latexify Mx=b) then  $(@latexify x=Sb)")
```


Obviously, for $3\times3$ we can just do matrix multiplication and see that it is right


```utpqubu
#| output: asis

print(@latexify x=$(xb))
```

```utpqubu
#| output: asis

println(@latexify x=Sb)
println()
println(@latexify b=Mx )
println()
println(@latexify x=SMx)
```

```utpqubu
#| output: asis

S=(create_shift_matrix(2,(3,3))*create_chasing_lights_matrix(1,(3,3))+create_shift_matrix(1,(3,3)))

M=create_M_matrix((3,3))

x=vec(Symbolics.variables(:x, 1:3, 1:3))
b=vec(Symbolics.variables(:b, 1:3, 1:3))

print(@latexify $(xb) = $(S) * $(Array{Int}(M)) * $(xb))
```

```utpqubu
#| output: asis

S=(create_shift_matrix(2,(3,3))*create_chasing_lights_matrix(1,(3,3))+create_shift_matrix(1,(3,3)))

M=create_M_matrix((3,3))

x=vec(Symbolics.variables(:x, 1:3, 1:3))
b=vec(Symbolics.variables(:b, 1:3, 1:3))

print(latexify((((S*M).%2)*xb) .~ (xb)))
```


To understand why this is the case we will look at our system of equations as we apply Lights Chasing row by row

Let's assume that there exists a solution that has no clicks on the top row then our system of equations would look like this:


```utpqubu
#| output: asis

xs=vec(Symbolics.variables(:x, 1:3, 1:3))
xs[[1,4,7]].=0

print(@latexify x=$(xs))
```

```utpqubu
#| output: asis

print(@latexify $(Array{Int}(create_solvable_matrix((3,3))))*$(xs)=$((vec(Symbolics.variables(:b, 1:3, 1:3)))))
```

```utpqubu
#| output: asis

print(latexify((create_solvable_matrix((3,3))*vec(xs)) .~ (vec(Symbolics.variables(:b, 1:3, 1:3)))))

```


Values for variables for second row lights ($x_{2,1}$, $x_{2,2}$, $x_{2,3}$) are equal to states of lights directly above them($b_{1,1}$, $b_{1,2}$, $b_{1,3}$). With that Lights Chasing algorithm for the first row would "solve" the second row and get us into a board state where there are no clicks on the second row.



```utpqubu
#| output: asis

xs=vec(Symbolics.variables(:x, 1:3, 1:3))
xs[[1,4,7]].=0
xs[[2,5,8]].=0
b=vec(Symbolics.variables(:b, 1:3, 1:3))
b_2=vec(Symbolics.variables(:"b2", 1:3, 1:3))

print(@latexify x2=$(xs)=x+S_1*b)
```

```utpqubu
#| output: asis

print(@latexify b2=$(b_2)=b+MS_1*b)
```

```utpqubu
#| output: asis

println(@latexify Mx=b)
println() 
println(@latexify Mx+MS_1*b=b+MS_1*b)
println() 
println(@latexify M(x+S_1*b)= b2)
println() 
println(@latexify Mx2=b2)
```

```utpqubu
#| output: asis

print(@latexify $(Array{Int}(create_solvable_matrix((3,3))))*$(xs)=$((b_2)))
```

```utpqubu
#| output: asis

print(latexify((create_solvable_matrix((3,3))*vec(xs)) .~ (b_2)))

```


Similarly like before, values for variables for third row lights ($x_{3,1}$, $x_{3,2}$, $x_{3,3}$) are equal to states of lights directly above them($b_{2,1}$, $b_{2,2}$, $b_{2,3}$). With that Lights Chasing algorithm for the second row would "solve" the third row and get us into the solved board state.

It is easy to imagine how this reasoning can be generalized to grids of any size and with this lemma we can find different ways to solve our game equation.

We can solve first for the top row using the below equations.
-->
<p>With an understanding of this lemma, we can rewrite our system of equations by decomposing x vector into clicks on the top row and clicks everywhere else.</p>
<p>Let</p>
<p><img src="https://latex.codecogs.com/png.latex?x_%7Bt%7D%20=%20%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bc%7D%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_1%7D%20%5C%5C%200%20%5C%5C%200%20%5C%5C%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_2%7D%20%5C%5C%200%20%5C%5C%200%20%5C%5C%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_3%7D%20%5C%5C%200%20%5C%5C%200%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D">, <img src="https://latex.codecogs.com/png.latex?x_%7Bb%7D%20=%20%5Cleft%5B%20%5Cbegin%7Barray%7D%7Bc%7D%200%20%5C%5C%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_1%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_1%7D%20%5C%5C%200%20%5C%5C%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_2%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_2%7D%20%5C%5C%200%20%5C%5C%20%5Cmathtt%7Bx_%7B2%7D%CB%8F_3%7D%20%5C%5C%20%5Cmathtt%7Bx_%7B3%7D%CB%8F_3%7D%20%5C%5C%20%5Cend%7Barray%7D%20%5Cright%5D"></p>
<p><img src="https://latex.codecogs.com/png.latex?x%20=%20x_%7Bt%7D%20+%20x_%7Bb%7D"></p>
<p>Let’s plug this decomposition into the original equations and apply Lights Chasing to it:</p>
<p><img src="https://latex.codecogs.com/png.latex?CMx%20=%20Cb"></p>
<p><img src="https://latex.codecogs.com/png.latex?%5Cmathrm%7BCM%7D%5Cleft(%20x_%7Bt%7D%20+%20x_%7Bb%7D%20%5Cright)%20=%20Cb"></p>
<p><img src="https://latex.codecogs.com/png.latex?CMx_%7Bt%7D%20+%20CMx_%7Bb%7D%20=%20Cb"></p>
<p>We know from our lemma that if there are no clicks in top row then Lights Chasing solves. Therefore <img src="https://latex.codecogs.com/png.latex?CMx_b=0"></p>
<p><img src="https://latex.codecogs.com/png.latex?CMx_%7Bt%7D%20=%20Cb"></p>
<p>Therefore we can solve for <img src="https://latex.codecogs.com/png.latex?x_t"></p>
<p><img src="https://latex.codecogs.com/png.latex?%5Cbegin%7Balign%7D%0A%5Cmathtt%7Bx_%7B1%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_3%7D%20&amp;=%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bb_%7B3%7D%CB%8F_1%7D%20%5C%5C%0A%5Cmathtt%7Bx_%7B1%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_3%7D%20&amp;=%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bb_%7B3%7D%CB%8F_2%7D%20%5C%5C%0A%5Cmathtt%7Bx_%7B1%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bx_%7B1%7D%CB%8F_2%7D%20&amp;=%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_1%7D%20+%20%5Cmathtt%7Bb_%7B1%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_2%7D%20+%20%5Cmathtt%7Bb_%7B2%7D%CB%8F_3%7D%20+%20%5Cmathtt%7Bb_%7B3%7D%CB%8F_3%7D%0A%5Cend%7Balign%7D"></p>
<p>After solving for <img src="https://latex.codecogs.com/png.latex?x_t">. We can apply those clicks to our grid. We can do that by adding <img src="https://latex.codecogs.com/png.latex?Mx_t"> to both sides of our equation,</p>
<p><img src="https://latex.codecogs.com/png.latex?Mx%20=%20b"></p>
<p><img src="https://latex.codecogs.com/png.latex?Mx%20+%20M%20%5Ccdot%20x_%7Bt%7D%20=%20b%20+%20M%20%5Ccdot%20x_%7Bt%7D"></p>
<p><img src="https://latex.codecogs.com/png.latex?M%5Cleft(%20x%20+%20x_%7Bt%7D%20%5Cright)%20=%20b%20+%20M%20%5Ccdot%20x_%7Bt%7D"></p>
<p>because of modulo 2 we know that: <img src="https://latex.codecogs.com/png.latex?x+x_t=x_b"></p>
<p><img src="https://latex.codecogs.com/png.latex?Mx_%7Bb%7D%20=%20b%20+%20M%20%5Ccdot%20x_%7Bt%7D"></p>
<p>Notice it is the original game equation without clicks in the top row in the solution. That means we can apply our lemma to it, getting the value of <img src="https://latex.codecogs.com/png.latex?x_b"> without solving any additional equations:</p>
<p><img src="https://latex.codecogs.com/png.latex?x_%7Bb%7D%20=%20S%5Cleft(%20b%20+%20Mx_%7Bt%7D%20%5Cright)"></p>
<p>So from our system of <img src="https://latex.codecogs.com/png.latex?N%7B%5Ctimes%7DM"> equations we get system with <img src="https://latex.codecogs.com/png.latex?M"> equations:</p>
<p><img src="https://latex.codecogs.com/png.latex?CMx_%7Bt%7D%20=%20Cb"></p>
<p><img src="https://latex.codecogs.com/png.latex?x_%7Bb%7D%20=%20S%5Cleft(%20b%20+%20Mx_%7Bt%7D%20%5Cright)"></p>
<p>And because our <img src="https://latex.codecogs.com/png.latex?x_t"> has only <img src="https://latex.codecogs.com/png.latex?M"> non-zero variables our system of equations got reduced from solving for <img src="https://latex.codecogs.com/png.latex?NM"> variables to solving for only <img src="https://latex.codecogs.com/png.latex?M"> variables. Normally it wouldn’t really be faster than the Gauss-Jordan solver because of all the required matrix multiplications and operations needed to create <img src="https://latex.codecogs.com/png.latex?C"> and <img src="https://latex.codecogs.com/png.latex?S"> matrixes but we can do those operations more efficiently and mostly skip those costly operations.</p>
</section>
<section id="new-and-improved-solver" class="level2">
<h2 class="anchored" data-anchor-id="new-and-improved-solver">New and improved solver</h2>
<p>The algorithm for our solver is a bit more complicated than simple Gauss-Jordan elimination:</p>
<ol type="1">
<li>For each top light that can be clicked, find out what lights are left at the bottom row after Lights Chasing algorithm.</li>
<li>Use Lights Chasing on our puzzle.</li>
<li>Solve a new system of equations using Gauss-Jordan where we find what buttons should be pressed on the top row to clear the bottom row after Lights Chasing.</li>
<li>Apply clicks from step 3 and use Lights Chasing again.</li>
<li>Xor all of our clicks we have done in steps 2 and 4 to delete redundant clicks( like clicking the same light twice).</li>
</ol>
<div id="92" class="cell" data-execution_count="1">
<div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb3-1"><span class="kw" style="color: #003B4F;
background-color: null;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">lights_chasing_solver!</span>(lights)</span>
<span id="cb3-2">    dims<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">size</span>(lights)</span>
<span id="cb3-3">    equations<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">Matrix</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">{Bool}</span>(<span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">undef</span>, dims[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>], dims[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>])</span>
<span id="cb3-4"></span>
<span id="cb3-5">    <span class="cf" style="color: #003B4F;
background-color: null;
font-style: inherit;">for</span> col <span class="kw" style="color: #003B4F;
background-color: null;
font-style: inherit;">in</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">axes</span>(lights,<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb3-6">        equation_lights<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">zeros</span>(<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">Bool</span>, dims) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># create empty grid </span></span>
<span id="cb3-7">        <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">single_click!</span>(equation_lights,(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,col)) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># click on top row</span></span>
<span id="cb3-8">        <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">chase_lights!</span>(equation_lights)</span>
<span id="cb3-9">        equations[<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>,col]<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>equation_lights[<span class="kw" style="color: #003B4F;
background-color: null;
font-style: inherit;">end</span>,<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>] <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># add bottom row lights to our matrix</span></span>
<span id="cb3-10">    <span class="cf" style="color: #003B4F;
background-color: null;
font-style: inherit;">end</span></span>
<span id="cb3-11"></span>
<span id="cb3-12">    clicks<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">chase_lights!</span>(lights) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># do Lights Chasing in place</span></span>
<span id="cb3-13">    bottom_row_lights<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">deepcopy</span>(lights[<span class="kw" style="color: #003B4F;
background-color: null;
font-style: inherit;">end</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>])</span>
<span id="cb3-14">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">gauss_jordan!</span>(equations, bottom_row_lights)</span>
<span id="cb3-15">    top_row_clicks<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">find_solution</span>(equations, bottom_row_lights)</span>
<span id="cb3-16"></span>
<span id="cb3-17">    clicks[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span>]<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.⊻=</span>top_row_clicks <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># save top row clicks</span></span>
<span id="cb3-18"></span>
<span id="cb3-19">    <span class="cf" style="color: #003B4F;
background-color: null;
font-style: inherit;">for</span> (index,click) <span class="kw" style="color: #003B4F;
background-color: null;
font-style: inherit;">in</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">enumerate</span>(top_row_clicks)</span>
<span id="cb3-20">      click <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;&amp;</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">single_click!</span>(lights, (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,index)) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># apply top row clicks</span></span>
<span id="cb3-21">    <span class="cf" style="color: #003B4F;
background-color: null;
font-style: inherit;">end</span></span>
<span id="cb3-22">    clicks <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.⊻=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">chase_lights!</span>(lights) </span>
<span id="cb3-23">    <span class="cf" style="color: #003B4F;
background-color: null;
font-style: inherit;">return</span> clicks</span>
<span id="cb3-24"><span class="kw" style="color: #003B4F;
background-color: null;
font-style: inherit;">end</span></span></code></pre></div>
</div>
<p>So what is the time complexity of this algorithm? Well first I will reiterate that this algorithm can be used both row by row and column by column here it is implemented row by row for simplicity’s sake. We create equations that require us to use <img src="https://latex.codecogs.com/png.latex?min(N,M)"> times Light Chasing giving a complexity of <img src="https://latex.codecogs.com/png.latex?O(min(N,M)NM)"> after we do Light Chasing and we solve system of equations that have <img src="https://latex.codecogs.com/png.latex?min(N,M)"> variables giving as complexity of <img src="https://latex.codecogs.com/png.latex?O(min(N,M)%5E3)"> after that we apply <img src="https://latex.codecogs.com/png.latex?min(N,M)"> clicks and do Lights Chasing algorithm again. For most grids, the time complexity of our new solver is <img src="https://latex.codecogs.com/png.latex?O(min(N,M)%5E3)">.</p>
</section>
<section id="but-is-it-really-faster" class="level2">
<h2 class="anchored" data-anchor-id="but-is-it-really-faster">But is it really faster?</h2>
<p>Theoretical time complexities are all well and good but is our new solver faster? Well, to test it let’s measure the time it takes for our solver to solve random <img src="https://latex.codecogs.com/png.latex?N%7B%5Ctimes%7DN"> grids. We will plot times for both algorithms on log-scaled plots.</p>
<div id="98" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<img width="672" height="480" style="object-fit: contain; height: auto;" src="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAqAAAAHgCAYAAAB6jN80AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAIABJREFUeAHswQdA1YXi9/3OefLOGwBRRzgwJ07V2qhmdfSe3NramlDTc26dW9Z2jXbQ62stFyl5izzmqvScl3zOlNzoYgLF6iAjAMcznie8/9eS7XnzYMEOTzehnu/wsRERERkWJiICIiIiJSjAxERERERIqRgYiIiIhIMTIQERERESlGBiIiIiIixchARERERKQYGYiIiIiIFCMDEREREZFiZCAiIiIiUowMRERERESKkYGIiIiISDEyEBEREREpRgYiIiIiIsXIQERERESkGBmIiIiIiBQjAxERERGRYmQgIiIiIlKMDESk1Dhw4AA5OTnks1gsREVFERYWRnFxOp3s2bMHb29vGjVqxM20d+9eHA4HzZs3x2QyISIipYOBiJQa3bt3JyEhgau1a9eOefPmUb16dYpaRkYGLVq0oHLlypw5c4abKTY2litXrpCdnY2vry8iIlI6GIhIqdO/f38qV65Mbm4u33/PVu2bGHw4MFs3rwZERGRks5AREqdUaNG0a5dOzxOnz5NdHQ0u3btwu12YzKZyMvLY8aMGezatYuwsDB69uzJHXfcgceOHTtYuHAh7du3JyAggGXLluHl5cWIESNo0KAB+bZs2cI/lPkpOTadSoESNGjCAgIICCjh07xowZM7h06RIDBw7k7rvvxmPLli0sXbqUTp06kZKSwvr166lXrx5PP/00mzdv5osvvsDLy4uRI0fSoEEDPJKSkpg+fTpHjhzBz8+PO++8kwceeADDMEhJSeGVV14hMjKSAQMGMHXqVEaNGsXVpk+fzuHDh+natSv33HMPIiJSMhmISKlz9uxZjh07Rm5uLgsXLsSjS5cumEwmnE4nsbGxbN26ldDQUK5cucL777/PrFmzGDJkCIcOHWLKlCmsWrWKEydO4HK58FiwYAHx8fGEh4czc+ZMhg8fjtvtxsfHh/nz5zN37lx27txJvvT0dNq1a0dSUhIec+fOZceOHTRv3py9e/cyZcoUFixYwKVLl8i3ZMkS9u3bh8vlwmPJk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RCoDAyl9bhcZa+8kf/+HBLR6Af/m4xARERGpLAyklLnJXH8v+fs/IKDl8/g3fwoRERGRysRASpGbzPVjyNvzFgEtJ+LfYjwiIiIilY2BlBi3PRv7yR/wKDy2BHvaVvJ2z8Q/7ln8WzyDiIiISGVkICXClZ/CmcXtcOYexSPzp9F4VIl9lIC4CYiIiIhUVgZSIrJ/fRpn7lHO5RXeDhEREZHKzEBKhD1jB+djT9+Oz1WDEBEREamsDKREWHyjsPO/LH41EBEREanMDKRE+Ld4isKj3+B22ShiCaiHb92hiIiIiFRmBlIirGGtCeu/nswN92E/vQG/hvcQ0OoFTNYARERERCozAykx1rBW+NS/E/vpDfi3GI/ZJwIRERGRys5ARERERKQUGYiIiIiIlCIDEREREZFSZCAiIiIiUooMRERERERKkYGIiIiISCkyEBEREREpRQYiIiIiIqXIQERERESkFBmIiIiIiJQiAxERERGRUmQgIiIiIlKKDKREGcHNoM59mK2BiIiIiAgYSIkywtrgblAbk1cQIiIiIgIGIiIiIiKlyEBEREREpBQZiIiIiIiUIgMRERERkVJkICIiIiJSigxEREREREqRgYiIiIhIKTIQERERESlFBiIiIiIipchARERERKQUGYiIiIiIlCIDEREREZFSZCAiIiIiUooMRERERERKkYGIiIiISCkykPM6fPgwR44cYfLkyVwKl8tFTk4OgYGBSPHl5ubi5eWF1WpFisfpdJKXl0dAQABSfLm5uXh5eWG1WpHicTgcFBQU4O/vT2Wwbt06atWqhYj8zkDOq3HjxuTl5ZGens6lKCws5LfffiMuLg4pvr179xIaGkpYWBhSPHl5eezfv59mzZohxZeUlES1atUIDg5Giic7O5sjR47QpEkTKoOwsDAaN26MiPzOQM7r8ccf53LYv38/vXv3ZtmyZUjxDRkyhB49ejB48GCkeBITE7njjjv45ptvkOLr378/CQkJ9OvXDymetWvXMm7cOCZNmoSIVE4GIiIiIiKlyEBEREREpBQZiIiIiIiUIgMpUcHBwYwaNQq5NAkJCcTExCDFV7VqVW6/Xbk0gwcOJB69eohxVezZk1uvfVWRKTyMpASFRYWxmOPPYZcmqFDhyKXJioqigcffBC5NHfccQdyaa666ipGjx6NiFReBiIiIiIipchARERER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">
</div>
</div>
<p>We can see that our Lights Chasing solver already for <img src="https://latex.codecogs.com/png.latex?N%5Capprox10"> is faster than the naive solver. We can also clearly see differences in slope. But does time complexity match our theoretical ones? For that, we need to calculate the slope of those points on a log-scaled plot.</p>
<p>For Lights Chasing solver:</p>
<div id="100" class="cell" data-execution_count="1">
<div class="cell-output cell-output-stdout">
<pre><code>───────────────────────────────────────────────────────────────────────
               Coef.  Std. Error      t  Pr(&gt;|t|)  Lower 95%  Upper 95%
───────────────────────────────────────────────────────────────────────
(Intercept)  9.88391   0.195427   50.58    &lt;1e-10    9.43325   10.3346
log2(N)      2.72422   0.0435225  62.59    &lt;1e-11    2.62385    2.82458
───────────────────────────────────────────────────────────────────────</code></pre>
</div>
</div>
<p>For basic solver:</p>
<div id="102" class="cell" data-execution_count="1">
<div class="cell-output cell-output-stdout">
<pre><code>───────────────────────────────────────────────────────────────────────
               Coef.  Std. Error      t  Pr(&gt;|t|)  Lower 95%  Upper 95%
───────────────────────────────────────────────────────────────────────
(Intercept)  2.31128     1.49913   1.54    0.1838   -1.54235    6.1649
log2(N)      5.39454     0.41104  13.12    &lt;1e-04    4.33793    6.45115
───────────────────────────────────────────────────────────────────────</code></pre>
</div>
</div>
<p>We need to look at the coefficient for the log2(N) variable to find the exponent of our N in time complexity. We expect the slope for the naive solver to be 6 and the slope for our Lights Chasing solver to be 3. We can see that the coefficients are statistically different from each other but they are not exactly equal to our theoretical ones. Those theoretical time complexities are of course theoretical and are important for <img src="https://latex.codecogs.com/png.latex?N%5Cto%5Cinfty"> but for small <img src="https://latex.codecogs.com/png.latex?N"> they can be inaccurate because of constant factors.</p>
<p>So we did it. We solved Lights Out more efficiently. At the same time, we solved the linear system of equations in modulo 2 by solving fever number of equations. And turns out this toy example of reducing the number of equations to solve can be generalized</p>
</section>
<section id="generalization" class="level2">
<h2 class="anchored" data-anchor-id="generalization">Generalization</h2>
<p>When I discovered this method I wondered if it could be expanded for more systems of equations in modulo 2. Maybe other version of Lights Out where lights have more than 2 states? Well, I didn’t need to wonder as it was already done in publication <a href="https://arxiv.org/abs/2208.09731">Solving systems of linear equations through zero forcing set and application to lights out</a>. It not only generalizes this method for modulo 2 systems but for any field. It says in the paper that they were motivated by the work of <a href="https://zhuanlan.zhihu.com/p/53646257">Wang</a> who found an algorithm for solving Lights Out for square grids in <img src="https://latex.codecogs.com/png.latex?O(N%5E3)"> time. After reading google translate of Wang’s work is clear he had the same type of algorithm as presented here.</p>


</section>

 ]]></description>
  <category>julia</category>
  <category>math</category>
  <category>code</category>
  <guid>https://alexander.sieradzki.dev/posts/Lights_out_blogpost/index.html</guid>
  <pubDate>Sat, 10 May 2025 00:00:00 GMT</pubDate>
  <media:content url="https://alexander.sieradzki.dev/posts/Lights_out_blogpost/image.png" medium="image" type="image/png" height="170" width="144"/>
</item>
</channel>
</rss>
