<story><title>Peter Norvig&apos;s “pytudes” for Advent of Code 2020</title><url>https://github.com/norvig/pytudes/blob/master/ipynb/Advent-2020.ipynb</url></story><parent_chain><item><author>systemvoltage</author><text>How do you algorithmically code like this? In my software engineering career, I am a plumber at best. Would fail hard at anyone who would ask me to code anything more than fizz buzz under time pressure. That said, I&amp;#x27;ve built some incredible production worthy and robust systems that move mountains as a plumber. I am damn good at that.</text></item></parent_chain><comment><author>donkey-hotei</author><text>Norvig teaches a really cool, and challenging, class on Udacity called the &amp;quot;Design of Computer Programs&amp;quot;[0] in Python where you can learn his thought process on how to write reliable and beautiful software to solve interesting problems.&lt;p&gt;[0] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.udacity.com&amp;#x2F;course&amp;#x2F;design-of-computer-programs--cs212&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.udacity.com&amp;#x2F;course&amp;#x2F;design-of-computer-programs--...&lt;/a&gt;</text></comment>
<story><title>Peter Norvig&apos;s “pytudes” for Advent of Code 2020</title><url>https://github.com/norvig/pytudes/blob/master/ipynb/Advent-2020.ipynb</url></story><parent_chain><item><author>systemvoltage</author><text>How do you algorithmically code like this? In my software engineering career, I am a plumber at best. Would fail hard at anyone who would ask me to code anything more than fizz buzz under time pressure. That said, I&amp;#x27;ve built some incredible production worthy and robust systems that move mountains as a plumber. I am damn good at that.</text></item></parent_chain><comment><author>Jtsummers</author><text>I&amp;#x27;d recommend taking a look at his book &lt;i&gt;Paradigms of AI Programming&lt;/i&gt; [0]. It really shows his thought process in developing solutions to problems. The only other way is practice, and in particular practice with languages that offer functional features. Notice his use of lambdas, assignment of existing functions&amp;#x2F;constructors to more accurate names (Passport instead of dict, day 4), and higher order functions (quantify).&lt;p&gt;Those are things that really help in algorithmic code by increasing accuracy of the names of things to the application (almost creating a domain specific language).&lt;p&gt;[0] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;norvig&amp;#x2F;paip-lisp&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;norvig&amp;#x2F;paip-lisp&lt;/a&gt;</text></comment>