{"id":16890,"date":"2016-01-02T20:34:52","date_gmt":"2016-01-03T01:34:52","guid":{"rendered":"http:\/\/blog.kenperlin.com\/?p=16890"},"modified":"2016-01-02T20:34:52","modified_gmt":"2016-01-03T01:34:52","slug":"procedural-2","status":"publish","type":"post","link":"https:\/\/blog.kenperlin.com\/?p=16890","title":{"rendered":"Procedural"},"content":{"rendered":"<p>After having worked out a numerical expression for 2016 yesterday from the digits 1&#8230;9 just by intuition, and then seeing Paul&#8217;s very cool count-down version, I decided, true to one of my recent posts in these pages, to write a program.<\/p>\n<p>The required code turned out to be surprisingly small.  The below Javascript program computes 1&#8230;9 arithmetic expressions for the years 2000 through 2030, in all cases that use at most a + &#8211; or * between the digits.<\/p>\n<pre>\r\nfor (year = 2000 ; year <= 2030 ; year++)\r\nfor (N = 1 << 16 ; N ; N--) {\r\n   s = '1';\r\n   for (i = 2 ; i <= 9 ; i++)\r\n      s += (n = N >> 2*i-4 & 3) ? (n<2 ? '+' : n<3 ? '-' : '*') + i : i; \r\n   if (year == eval(s))\r\n      console.log(year + ' ' + s);\r\n}\r\n<\/pre>\n<p>A small variation in this program would generate all the \"count-down\" versions.  Interestingly, it turns out that there are just about twice as many count-up solutions as count-down solutions.<\/p>\n<p>Doing this exercise made me realize that what I really want is a programming language that would let me describe such patterns very simply, and then ask questions like: \"Which of those patterns adds to 2016?\"<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After having worked out a numerical expression for 2016 yesterday from the digits 1&#8230;9 just by intuition, and then seeing Paul&#8217;s very cool count-down version, I decided, true to one of my recent posts in these pages, to write a program. The required code turned out to be surprisingly small. The below Javascript program computes &hellip; <a href=\"https:\/\/blog.kenperlin.com\/?p=16890\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Procedural&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts\/16890"}],"collection":[{"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16890"}],"version-history":[{"count":2,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts\/16890\/revisions"}],"predecessor-version":[{"id":16892,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts\/16890\/revisions\/16892"}],"wp:attachment":[{"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16890"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=16890"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=16890"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}