this repo has no description
at master 7.0 kB view raw
1<!-- vim:set ft=markdown: --> 2 3<!-- livebook:{"persist_outputs":true} --> 4 5# Day 1 6 7```elixir 8Mix.install([ 9 {:kino_aoc, ">= 0.0.0"} 10]) 11``` 12 13## Load input 14 15<!-- livebook:{"attrs":{"assign_to":"puzzle_input","day":"1","session_secret":"ADVENT_OF_CODE_SESSION","year":"2021"},"chunks":null,"kind":"Elixir.KinoAOC.HelperCell","livebook_object":"smart_cell"} --> 16 17```elixir 18{:ok, puzzle_input} = 19 KinoAOC.download_puzzle("2021", "1", System.fetch_env!("LB_ADVENT_OF_CODE_SESSION")) 20``` 21 22<!-- livebook:{"output":true} --> 23 24``` 25{:ok, 26 "173\n178\n179\n187\n196\n199\n200\n201\n210\n209\n210\n211\n221\n223\n235\n236\n237\n238\n242\n249\n247\n246\n256\n257\n258\n257\n258\n265\n293\n303\n304\n317\n322\n330\n336\n337\n340\n339\n350\n351\n352\n353\n349\n353\n342\n339\n341\n342\n348\n349\n350\n355\n362\n392\n388\n393\n404\n402\n401\n402\n405\n410\n411\n424\n425\n432\n434\n433\n435\n441\n420\n439\n461\n463\n464\n468\n469\n473\n485\n494\n493\n489\n490\n491\n497\n490\n491\n493\n519\n520\n553\n554\n560\n565\n574\n586\n599\n600\n601\n604\n578\n574\n578\n597\n598\n597\n607\n606\n608\n616\n613\n615\n618\n617\n619\n626\n638\n639\n650\n682\n686\n693\n696\n709\n715\n745\n747\n750\n751\n753\n760\n763\n764\n772\n776\n779\n791\n794\n795\n800\n799\n808\n814\n825\n826\n831\n830\n837\n853\n854\n863\n872\n873\n881\n885\n895\n896\n897\n895\n905\n909\n912\n916\n921\n919\n927\n929\n935\n936\n937\n948\n947\n948\n922\n926\n932\n931\n938\n958\n975\n977\n982\n985\n986\n987\n988\n1007\n1005\n1007\n1008\n1010\n1013\n1015\n1016\n1019\n1025\n1026\n1027\n1029\n1039\n1047\n1054\n1055\n1063\n1066\n1087\n1095\n1096\n1097\n1093\n1114\n1123\n1131\n1137\n1142\n1140\n1154\n1157\n1158\n1159\n1160\n1170\n1174\n1182\n1184\n1191\n1200\n1211\n1214\n1231\n1241\n1250\n1246\n1260\n1287\n1311\n1313\n1318\n1327\n1325\n1324\n1325\n1326\n1339\n1350\n1355\n1358\n1368\n1380\n1422\n1423\n1442\n1466\n1450\n1451\n1457\n1464\n1474\n1490\n1494\n1507\n1508\n1509\n1511\n1524\n1521\n1528\n1529\n1533\n1538\n1542\n1544\n1543\n1560\n1579\n1585\n1589\n1591\n1598\n1599\n1600\n1610\n1614\n1615\n1629\n1624\n1629\n1632\n1627\n1641\n1638\n1639\n1641\n1644\n1645\n1646\n1647\n1659\n1661\n1658\n1661\n1664\n1665\n1669\n1671\n1673\n1674\n1675\n1672\n1677\n1687\n1688\n1696\n1697\n1711\n1715\n1720\n1721\n1724\n1725\n1726\n1731\n1740\n1737\n1746\n1745\n1758\n1760\n1758\n1771\n1777\n1773\n1777\n1778\n1788\n1794\n1804\n1809\n1814\n1837\n1839\n1838\n1837\n1842\n1851\n1857\n1843\n1844\n1845\n1860\n1863\n1888\n1887\n1888\n1889\n1897\n1895\n1903\n1906\n1907\n1913\n1917\n1916\n1917\n1926\n1927\n1935\n1933\n1934\n1939\n1940\n1942\n1944\n1941\n1946\n1967\n1969\n1975\n1976\n1979\n1981\n1982\n1987\n1981\n1982\n1981\n1982\n1992\n2027\n2028\n2029\n2036\n2037\n2038\n2042\n2044\n2048\n2047\n2054\n2055\n2062\n2065\n2066\n2091\n2103\n2093\n2094\n2089\n2091\n2093\n2098\n2108\n2086\n2087\n2118\n2123\n2127\n2132\n2148\n2149\n2147\n2148\n2149\n2150\n2152\n2151\n2152\n2149\n2156\n2167\n2177\n2179\n2180\n2159\n2167\n2158\n2156\n2174\n2169\n2170\n2180\n2183\n2187\n2191\n2192\n2200\n2202\n2206\n2240\n2251\n2247\n2259\n2273\n2274\n2276\n2255\n2256\n2263\n2265\n2269\n2270\n2272\n2273\n2275\n2276\n2281\n2290\n2292\n2293\n2287\n2291\n2289\n2287\n2290\n2306\n2307\n2310\n2315\n2329\n2337\n2370\n2375\n2373\n2376\n2362\n2397\n2400\n2401\n2419\n2429\n2435\n2438\n2450\n2451\n2481\n2482\n2487\n2491\n2492\n2496\n2501\n2502\n2499\n2501\n2467\n2469\n2468\n2470\n2473\n2480\n2481\n2488\n2500\n2506\n2509\n2512\n2513\n2515\n2516\n2512\n2506\n2511\n2513\n2514\n2519\n2547\n2580\n2584\n2585\n2582\n2599\n2600\n2599\n2600\n2599\n2600\n2613\n2612\n2610\n2612\n2608\n2615\n2622\n2610\n2613\n2608\n2619\n2640\n2620\n2612\n2608\n2609\n2625\n2626\n2634\n2638\n2670\n2674\n2675\n2674\n2678\n2685\n2686\n2678\n2692\n2693\n2716\n2718\n2705\n2709\n2713\n2714\n2715\n2722\n2712\n2714\n2719\n2720\n2740\n2741\n2734\n2738\n2764\n2765\n2768\n2773\n2777\n2810\n2789\n2808\n2807\n2813\n2828\n2841\n2853\n2854\n2842\n2843\n2846\n2848\n2860\n2861\n2862\n2864\n2865\n2866\n2880\n2851\n2853\n2858\n2865\n2866\n2873\n2885\n2886\n2887\n2893\n2914\n2916\n2924\n2925\n2927\n2929\n2949\n2967\n2968\n2976\n2965\n2983\n2985\n2984\n2991\n2993\n3007\n3005\n3012\n3015\n3019\n3025\n3030\n3034\n3043\n3044\n3085\n3094\n3124\n3139\n3146\n3147\n3176\n3196\n3199\n3200\n3246\n3251\n3254\n3286\n3280\n3287\n3289\n3288\n3290\n3294\n3306\n3307\n3309\n3312\n3327\n3325\n3334\n3333\n3335\n3357\n3374\n3380\n3392\n3393\n3406\n3416\n3417\n3431\n3418\n3439\n3452\n3468\n3469\n3474\n3490\n3489\n3490\n3491\n3513\n3512\n3513\n3514\n3515\n3516\n3517\n3513\n3514\n3508\n3520\n3522\n3521\n3520\n3531\n3533\n3545\n3546\n3554\n3558\n3559\n3560\n3565\n3578\n3570\n3573\n3574\n3580\n3592\n3593\n3594\n3595\n3596\n3617\n3625\n3624\n3626\n3629\n3635\n3634\n3640\n3661\n3668\n3671\n3674\n3675\n3679\n3688\n3692\n3698\n3700\n3696\n3697\n3701\n3707\n3697\n3699\n3703\n3702\n3700\n3711\n3714\n3715\n3716\n3722\n3741\n3751\n3752\n3759\n3782\n3785\n3786\n3787\n3799\n3807\n3810\n3809\n3816\n3794\n3796\n3800\n3804\n3810\n3812\n3813\n3821\n3822\n3840\n3851\n3866\n3867\n3875\n3895\n3913\n3905\n3917\n3918\n3913\n3921\n3927\n3931\n3936\n3957\n3956\n3958\n3959\n3980\n3979\n3986\n3997\n3988\n3989\n3990\n3994\n3995\n3999\n3993\n4024\n4022\n4018\n4019\n4031\n4032\n4033\n4043\n4045\n4047\n4048\n4058\n4067\n4077\n4069\n4070\n4080\n4087\n4113\n4118\n4123\n4128\n4132\n4144\n4149\n4152\n4131\n4160\n4175\n4176\n4177\n4176\n4179\n4191\n4196\n4201\n4202\n4205\n4214\n4216\n4217\n4210\n4212\n4216\n4217\n4220\n4219\n4220\n42" <> ...} 27``` 28 29```elixir 30stream = 31 puzzle_input 32 |> String.split() 33 |> Stream.map(&String.to_integer(String.trim(&1))) 34``` 35 36<!-- livebook:{"output":true} --> 37 38``` 39#Stream<[ 40 enum: ["173", "178", "179", "187", "196", "199", "200", "201", "210", "209", "210", "211", "221", 41 "223", "235", "236", "237", "238", "242", "249", "247", "246", "256", "257", "258", "257", "258", 42 "265", "293", "303", "304", "317", "322", "330", "336", "337", "340", "339", "350", "351", "352", 43 "353", "349", "353", "342", "339", "341", "342", "348", ...], 44 funs: [#Function<48.53678557/1 in Stream.map/2>] 45]> 46``` 47 48## Task 1 49 50Compute count of consecutive increases 51 52```elixir 53stream 54|> Stream.chunk_every(2, 1, :discard) 55|> Enum.count(fn [a, b] -> a < b end) 56``` 57 58<!-- livebook:{"output":true} --> 59 60``` 611688 62``` 63 64## Task 2 65 66Compute count of consecutive increases of sums of trigrams. 67 68However we can notice, that if we have list like: 69 70$$ 71[a, b, c, d] 72$$ 73 74Then when we want to compare consecutive trigrams then we compare: 75 76$$ 77a + b + c < b + c + d \\ 78a < d 79$$ 80 81So we can traverse each 4 elements and then just compare first and last one 82instead of summing and then traversing it again. 83 84```elixir 85stream 86|> Stream.chunk_every(4, 1, :discard) 87|> Enum.count(fn [a, _, _, b] -> a < b end) 88``` 89 90<!-- livebook:{"output":true} --> 91 92``` 931728 94``` 95 96<!-- livebook:{"offset":6811,"stamp":{"token":"XCP.FvhtdtxXYvRknZpAwd7ATOS4B7IljsyPdpscD9AizNpEm35rzHOr6FxLlc7D5RuBsoDcHmWO_rDJI7khm9nmL4U_ebmCGJuAd_tnVXrljSHKDRHzwzLMZ_v6kJy6nqkgIA","version":2}} -->