From a7b42c12bfbc31f472915d7ce7a39d80fb7a6891 Mon Sep 17 00:00:00 2001 From: didier amyot Date: Mon, 1 Dec 2025 08:03:23 -0500 Subject: [PATCH] feat: impemented first challenge --- .gitignore | 9 +++++++++ clojure/.gitignore | 1 + clojure/deps.edn | 1 + clojure/src/inputs.clj | 3 +++ clojure/src/question_1.clj | 38 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 52 insertions(+) create mode 100644 .gitignore create mode 100644 clojure/.gitignore create mode 100644 clojure/deps.edn create mode 100644 clojure/src/inputs.clj create mode 100644 clojure/src/question_1.clj diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5fecc1e --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +.clj-kondo +.lsp +.cpcache +.nrepl-port +add .idea +advent-of-code-2024.iml +.idea + + diff --git a/clojure/.gitignore b/clojure/.gitignore new file mode 100644 index 0000000..906a2eb --- /dev/null +++ b/clojure/.gitignore @@ -0,0 +1 @@ +clojure.iml \ No newline at end of file diff --git a/clojure/deps.edn b/clojure/deps.edn new file mode 100644 index 0000000..e13453d --- /dev/null +++ b/clojure/deps.edn @@ -0,0 +1 @@ +{:deps {org.clojure/core.logic {:mvn/version "1.1.0"}}} diff --git a/clojure/src/inputs.clj b/clojure/src/inputs.clj new file mode 100644 index 0000000..3b8918c --- /dev/null +++ b/clojure/src/inputs.clj @@ -0,0 +1,3 @@ +(ns inputs) + +(def question-1 "L23\nR14\nL50\nR27\nL33\nR36\nL11\nL32\nR46\nR36\nR2\nL32\nL42\nL11\nL10\nR31\nL36\nR33\nL11\nR38\nL22\nL1\nR33\nL4\nL12\nL29\nL14\nR4\nL13\nR50\nL30\nR20\nR11\nL37\nR49\nR10\nR7\nR20\nL36\nL15\nR24\nL48\nR36\nL49\nL21\nR18\nL13\nR27\nR26\nL43\nR30\nR29\nL94\nR30\nL55\nR90\nR54\nR60\nR86\nR81\nL53\nR23\nL2\nR78\nL27\nL61\nL74\nL96\nR98\nR33\nL88\nL12\nR45\nL45\nL19\nR46\nR38\nR96\nR39\nR41\nL41\nL48\nR60\nR88\nL8\nR90\nR79\nL61\nR21\nR17\nL37\nR99\nR67\nR23\nL73\nR83\nL59\nR42\nR84\nR33\nL84\nR206\nR61\nR133\nL13\nR36\nR61\nL92\nR84\nR961\nL53\nL91\nR28\nL78\nL59\nL97\nR97\nL42\nL47\nR7\nR12\nR24\nR93\nL2\nL48\nL34\nR72\nR38\nL56\nL19\nR283\nR525\nL28\nL597\nL18\nR151\nL4\nL37\nR727\nL89\nL96\nL15\nR83\nR10\nL15\nR122\nL80\nR36\nR71\nL12\nR85\nR41\nL20\nR805\nL26\nR22\nR45\nR25\nR94\nR47\nL333\nR72\nL72\nL78\nR2\nR76\nR76\nL762\nL15\nL99\nR436\nR17\nR24\nR669\nL246\nL70\nL45\nR58\nR57\nR55\nL34\nL62\nR41\nL13\nR58\nL68\nR23\nR31\nR69\nL69\nR797\nL9\nL71\nL21\nR4\nL86\nR385\nR70\nL94\nL47\nL398\nL6\nL61\nL694\nR434\nL34\nL882\nR82\nR64\nR2\nR43\nR91\nR32\nR68\nL291\nR91\nR786\nL327\nR75\nL858\nL41\nR27\nL44\nR89\nR388\nR68\nL63\nR65\nR923\nR47\nR63\nR27\nR27\nR48\nL41\nL59\nL82\nL32\nL8\nL90\nR21\nL9\nL47\nR5\nR42\nR55\nL55\nR827\nL89\nR20\nL80\nR922\nR11\nR42\nR660\nL49\nR36\nL21\nL67\nL28\nR316\nR88\nR14\nL809\nR715\nL375\nR367\nR77\nL77\nL71\nL6\nL823\nL22\nL17\nR87\nR62\nL60\nR50\nR80\nL74\nR94\nR55\nL43\nL12\nL97\nR61\nL25\nR861\nL306\nL94\nL96\nR796\nL5\nL67\nL10\nR36\nR46\nL559\nR52\nR42\nR723\nL58\nR60\nL45\nL14\nL1\nR57\nL54\nR97\nR147\nL18\nL29\nR67\nL667\nL88\nL23\nL89\nL29\nR4\nL75\nR4\nL96\nL8\nL78\nL22\nR406\nR3\nL184\nR75\nR81\nL37\nR52\nR4\nR84\nR306\nR66\nL56\nL53\nL47\nL387\nR87\nR34\nR466\nL606\nL70\nL24\nR72\nR67\nR91\nL49\nL81\nL2\nL29\nR131\nR25\nR134\nR91\nL750\nL90\nR490\nR37\nR63\nL89\nL11\nR353\nL53\nL7\nL723\nL98\nL65\nR70\nL77\nR1\nL58\nR57\nL416\nR15\nR39\nR62\nR68\nL21\nR53\nL80\nR18\nR632\nL70\nR36\nR32\nR532\nL68\nR68\nR151\nL96\nR345\nR18\nR78\nR759\nL84\nR529\nL65\nL735\nL69\nL73\nR80\nL55\nL85\nR2\nR30\nL89\nL180\nR338\nL40\nR15\nL74\nR51\nR649\nL129\nR29\nR21\nL44\nL436\nL86\nL155\nR929\nR32\nL47\nR71\nR95\nL80\nL52\nR86\nR97\nL21\nL10\nL12\nR54\nL93\nL625\nR32\nL86\nL38\nL32\nR455\nL94\nL61\nR404\nR96\nL68\nR846\nR46\nR76\nL121\nL37\nR40\nR18\nR193\nR23\nL95\nR4\nL48\nR402\nR89\nL68\nL823\nR9\nR7\nL7\nL9\nL1\nR72\nR55\nL3\nR748\nR127\nL75\nL70\nL30\nL56\nR73\nL17\nL49\nR59\nL610\nL437\nR37\nL361\nL297\nR98\nR71\nL13\nL98\nL59\nL29\nL97\nR64\nL73\nL5\nL89\nL12\nL80\nR80\nL630\nL48\nR14\nR99\nL119\nL316\nL18\nR18\nR94\nL94\nL77\nL23\nL661\nR911\nR50\nR12\nR12\nR776\nL175\nR1\nR74\nR27\nL52\nL90\nL55\nL30\nR10\nR4\nL7\nR625\nL32\nR37\nL82\nL59\nR84\nR55\nR29\nL13\nL51\nL150\nL58\nR38\nR81\nL11\nL78\nR1\nR14\nR63\nL51\nL6\nR57\nL12\nL65\nL57\nR9\nR621\nR98\nR6\nL27\nR52\nL56\nL18\nL94\nL16\nR559\nL67\nR67\nR1\nL12\nR30\nR424\nL315\nL39\nL89\nL35\nL33\nR49\nR44\nL25\nL76\nL24\nL30\nL70\nR82\nL421\nL22\nR89\nL28\nR88\nR62\nL68\nR18\nL69\nL76\nL76\nL279\nR76\nR24\nR77\nL77\nL933\nL67\nL59\nL398\nL55\nL488\nR52\nR30\nL17\nR35\nR42\nL442\nL29\nL71\nR68\nR841\nR11\nL815\nL5\nL18\nL49\nR58\nR74\nL506\nR31\nR10\nL36\nL89\nL53\nR56\nR325\nR76\nR90\nL90\nL25\nL71\nR17\nR89\nR879\nL14\nR46\nL7\nL611\nR18\nL53\nL78\nR40\nL63\nR954\nR905\nL542\nL95\nR32\nL41\nL90\nR96\nR35\nL10\nL9\nL81\nL15\nL785\nL35\nL66\nL99\nL81\nL970\nR82\nL64\nR278\nR55\nR131\nR75\nR71\nR1\nR22\nR1\nR99\nL11\nR23\nL754\nR97\nR83\nR31\nR868\nR63\nL62\nL37\nL24\nR81\nR15\nL73\nL59\nR59\nL52\nR4\nL87\nR39\nR50\nL11\nR57\nL318\nR887\nL54\nL62\nL85\nL60\nR34\nL20\nR596\nR82\nL673\nL51\nL76\nR476\nR48\nL63\nR39\nL349\nL151\nL762\nR76\nL80\nR866\nL67\nR67\nL784\nL10\nR89\nL91\nR846\nR450\nL94\nL984\nR766\nR92\nL96\nL84\nL88\nL12\nL91\nL44\nR70\nL6\nR27\nL56\nR55\nL40\nL15\nR92\nR36\nL828\nL89\nL611\nR26\nR42\nL68\nR41\nR50\nR9\nR813\nR16\nR8\nL137\nL26\nR26\nR85\nR24\nR16\nL88\nL637\nR87\nR581\nR17\nL70\nL15\nL92\nL808\nR80\nL60\nR86\nL35\nL98\nR64\nL1\nR64\nL4\nL96\nL51\nL82\nL67\nR92\nL45\nL5\nR58\nR547\nR61\nR58\nL458\nL708\nR1\nR78\nL84\nR87\nL82\nR32\nL81\nR82\nR67\nL51\nR21\nL47\nL23\nL76\nR14\nR58\nR83\nR167\nL27\nR81\nR61\nR39\nR59\nR69\nL20\nR69\nL819\nR89\nR53\nR886\nL24\nL50\nL279\nR85\nL36\nR50\nL632\nL1\nR1\nR57\nR46\nL75\nL867\nL17\nL7\nR63\nR908\nR92\nL274\nR90\nL77\nR61\nL68\nR75\nR580\nR370\nR28\nL85\nR55\nL55\nR68\nR47\nR85\nL61\nR61\nL64\nL44\nR28\nR71\nL44\nR937\nL74\nL57\nR2\nR879\nL80\nL54\nR50\nL41\nL78\nL31\nL39\nR70\nL70\nR39\nL270\nL13\nR16\nL33\nL27\nR27\nR32\nR68\nL32\nR1\nR15\nL17\nL333\nR66\nL573\nR169\nR4\nL62\nL95\nL16\nR17\nR95\nR18\nL57\nR47\nL819\nR72\nL13\nR76\nR37\nR90\nL90\nR2\nL33\nR31\nL24\nR43\nR45\nL22\nR22\nR26\nL74\nR64\nR55\nR757\nL948\nR37\nR563\nR49\nR79\nL24\nR73\nL54\nL94\nR27\nR50\nL59\nR54\nR67\nR31\nR57\nL5\nR67\nL62\nL13\nL87\nL854\nL46\nL40\nL24\nL31\nR22\nR80\nR38\nR58\nR85\nL922\nL18\nL74\nL74\nR64\nR72\nR64\nR349\nR563\nL4\nL8\nR24\nL783\nR50\nR9\nL772\nR278\nR85\nR125\nR2\nL83\nL51\nL584\nR321\nR85\nL19\nR81\nL96\nR30\nL61\nL71\nR30\nR796\nL936\nR47\nR58\nR22\nL87\nR68\nR2\nR30\nL92\nR2\nR522\nR468\nR17\nR49\nL55\nR46\nR99\nR65\nR72\nL2\nR9\nL82\nR12\nL74\nR751\nR74\nL2\nL920\nL95\nR30\nR6\nL40\nR13\nR427\nL48\nL40\nL6\nR43\nL49\nL56\nL14\nR70\nL96\nR71\nL53\nR91\nL736\nR502\nR89\nL68\nL61\nL589\nL50\nR8\nL42\nR9\nL40\nR274\nR94\nR898\nL47\nR232\nR93\nR321\nR76\nR24\nR945\nR807\nR6\nL769\nL15\nR43\nL51\nL66\nL66\nR26\nR83\nR513\nR561\nR36\nR59\nR21\nL86\nL47\nR31\nR68\nR48\nR87\nL46\nR77\nR21\nL86\nL89\nR61\nL90\nR85\nR392\nL57\nL282\nR23\nL43\nL97\nL88\nR88\nL45\nR74\nL32\nL85\nL930\nR8\nR56\nR2\nL57\nL45\nL49\nL70\nR709\nR61\nR99\nR801\nL77\nL23\nR730\nL630\nR9\nL9\nL38\nR36\nL71\nR55\nL282\nR60\nR40\nL76\nL92\nL2\nR11\nR51\nL89\nR22\nR18\nL543\nL40\nR498\nL158\nR13\nR70\nL683\nR80\nR87\nL43\nR258\nL6\nL76\nR462\nR67\nL29\nR60\nR840\nL99\nL74\nR6\nR67\nL875\nR84\nR71\nR48\nL31\nR3\nR98\nR35\nR67\nL46\nR447\nL1\nL90\nR28\nR47\nL29\nL869\nR282\nL58\nL67\nL49\nR82\nL267\nL940\nR17\nR48\nL79\nR78\nL48\nL89\nL45\nR29\nL45\nL57\nL92\nR26\nR83\nL596\nR74\nR10\nR580\nR36\nR70\nR94\nR89\nL53\nL31\nL71\nR28\nR87\nL413\nR11\nL11\nL35\nR21\nR14\nL217\nL15\nL68\nR96\nR20\nL16\nR81\nR64\nL45\nL454\nR354\nR504\nL404\nL90\nR90\nL347\nR8\nR39\nL51\nL419\nR92\nR78\nR30\nL34\nR623\nL34\nR15\nL23\nL77\nL22\nL96\nR52\nL2\nL32\nL54\nR99\nL45\nR60\nL901\nR252\nL11\nL3\nR3\nL50\nL50\nR322\nL20\nR98\nL71\nR95\nL157\nL67\nL21\nL96\nL14\nL40\nR8\nL88\nL85\nR36\nR60\nL60\nR2\nR41\nR176\nR81\nL74\nR138\nR384\nL91\nL970\nL87\nL610\nR72\nL472\nR10\nL774\nR33\nL959\nR73\nL79\nR2\nL3\nL93\nR77\nR90\nR133\nR96\nR4\nL51\nR727\nL24\nL4\nR52\nR12\nL503\nR33\nR95\nL76\nR39\nL335\nL990\nL57\nL85\nR823\nL93\nR56\nR89\nR69\nR223\nR33\nR67\nL514\nL5\nL81\nR2\nL1\nR52\nR65\nL18\nL86\nR286\nL63\nL41\nR57\nL67\nL581\nR187\nR53\nR55\nL427\nL816\nL90\nL17\nR967\nR16\nR90\nL49\nR926\nL58\nR92\nL44\nL66\nL556\nR32\nL89\nL21\nR10\nL42\nL894\nL926\nR62\nL72\nL28\nR78\nR622\nR71\nL73\nR41\nR856\nR46\nL46\nL95\nR67\nR33\nR26\nR65\nR9\nL790\nR840\nR50\nR23\nR993\nL16\nL61\nR91\nR92\nR78\nL42\nR42\nR917\nR22\nR25\nR236\nR688\nL82\nR179\nL52\nR286\nL441\nR722\nL32\nL80\nR4\nR186\nR622\nR38\nL438\nR81\nL17\nR36\nL9\nL284\nL44\nR26\nL85\nR96\nL781\nL9\nR590\nL543\nL97\nL60\nR45\nL45\nR21\nL21\nR17\nL17\nR14\nR86\nL32\nR11\nR821\nL64\nR149\nL91\nR6\nL15\nL85\nR72\nR79\nR49\nR61\nL40\nL21\nR93\nL42\nR11\nR62\nL224\nL5\nR28\nR83\nL106\nR57\nL257\nL58\nL42\nL28\nL11\nL61\nR964\nR636\nL41\nR22\nR6\nR72\nL56\nR97\nL52\nR252\nL59\nR59\nR40\nR60\nR93\nR607\nL89\nL16\nR68\nR59\nR74\nL514\nR18\nL32\nL94\nL74\nL167\nL33\nL18\nR72\nR111\nR335\nR71\nL71\nR586\nR314\nR44\nR635\nR21\nL16\nR42\nL93\nR73\nR2\nR49\nL57\nR82\nR95\nR47\nR34\nL372\nL33\nR88\nL41\nL40\nR37\nR1\nL193\nR6\nR872\nL68\nR70\nR61\nR3\nR51\nR87\nR13\nL829\nL71\nR3\nR44\nL7\nR764\nR78\nL82\nL37\nR9\nR66\nL60\nL28\nL40\nL446\nR36\nR135\nL92\nR61\nR23\nR94\nL41\nL99\nR19\nL61\nR91\nL875\nR65\nL20\nR72\nL49\nL23\nR92\nL242\nL75\nL75\nR25\nR75\nR75\nR31\nR83\nR935\nR9\nR67\nL828\nR95\nR11\nL78\nR96\nR15\nR7\nR341\nL21\nR62\nL1\nL646\nR66\nL19\nL85\nR85\nL32\nR18\nL86\nL33\nL767\nR58\nR42\nL18\nL79\nL57\nR62\nR94\nR41\nR457\nR4\nR67\nR293\nL30\nR66\nL6\nR61\nR67\nR95\nR83\nR18\nL18\nR31\nR9\nR619\nL92\nR733\nR57\nR50\nR8\nR12\nR73\nL86\nR86\nL67\nR17\nR50\nR6\nR23\nL29\nR71\nR89\nR59\nL3\nR84\nR39\nR49\nR59\nL111\nR64\nR74\nL74\nR481\nL55\nR74\nR85\nL16\nL369\nR23\nR16\nR82\nR68\nL1\nL88\nL90\nR19\nL66\nL63\nR13\nL17\nR51\nL47\nL29\nL49\nL22\nR25\nL25\nR82\nL82\nR14\nL497\nR94\nL91\nR60\nR439\nL995\nR876\nL54\nL46\nL14\nR98\nL92\nR167\nR49\nL8\nR38\nR93\nL31\nR520\nR46\nR93\nL81\nL75\nL52\nL94\nL3\nL298\nR44\nL53\nL72\nL898\nR95\nR821\nR49\nL999\nL67\nR95\nL810\nR77\nR5\nR11\nR49\nL29\nL31\nR37\nL80\nR14\nR86\nL89\nL23\nL64\nL20\nL28\nL50\nR74\nR26\nR5\nR69\nR72\nL21\nL51\nR99\nR379\nR22\nL616\nL26\nL19\nR63\nR14\nR15\nR69\nR35\nL24\nL11\nL66\nR31\nR73\nL38\nR25\nR27\nL52\nR526\nL84\nL42\nR34\nL34\nR2\nL980\nL704\nR82\nL20\nL780\nL16\nR16\nL84\nL71\nR89\nR19\nL147\nL65\nR59\nR13\nL13\nL61\nR16\nL755\nL98\nL24\nL78\nR14\nL18\nR53\nR851\nR12\nR928\nL751\nL53\nR879\nL102\nL53\nL56\nL47\nL50\nL507\nR46\nR54\nR84\nL884\nL98\nR6\nL60\nL48\nR40\nL58\nL97\nL85\nR85\nL85\nL40\nL70\nR78\nL914\nL54\nR19\nL212\nL49\nL44\nR456\nL83\nR13\nR8\nL66\nL779\nL333\nL43\nR271\nL33\nR12\nL294\nR78\nL680\nR942\nR99\nL82\nL67\nL33\nR97\nR62\nL59\nL74\nL97\nR140\nL90\nL459\nR20\nL40\nR280\nR39\nL116\nL734\nR23\nL21\nL4\nL567\nR52\nL52\nR36\nR57\nL50\nR468\nL40\nL19\nL32\nR80\nR7\nR232\nL685\nR27\nR77\nR34\nR8\nL52\nR97\nL87\nR42\nR20\nL95\nL61\nL30\nR68\nR42\nR80\nL87\nL318\nL61\nL18\nL45\nR25\nL71\nL5\nR47\nR75\nR89\nR74\nL29\nL701\nL19\nR20\nL16\nL17\nR19\nL86\nR44\nL77\nR130\nL78\nL40\nR66\nL45\nL18\nR42\nL24\nL5\nL27\nR631\nL99\nL8\nR72\nL99\nL99\nR34\nL49\nL21\nL30\nR48\nR524\nR28\nR309\nR62\nL71\nR850\nR50\nR376\nL17\nL49\nL10\nL1\nR6\nR77\nL82\nL30\nR183\nR44\nR3\nL403\nL97\nL29\nR29\nL17\nR6\nL61\nR74\nL2\nL388\nR639\nL85\nL66\nR104\nR74\nR22\nL64\nL83\nR332\nL176\nR66\nR30\nL685\nR80\nR47\nL55\nR80\nL358\nL9\nL74\nL772\nR45\nR5\nL77\nL74\nL58\nL30\nL70\nL347\nL66\nR168\nL55\nL59\nL41\nR58\nL58\nR54\nR46\nL13\nR99\nL42\nR602\nR8\nR646\nL15\nR15\nR64\nL79\nR57\nR151\nR7\nR40\nL40\nR829\nL51\nL32\nL59\nL51\nL355\nR19\nR38\nR77\nL15\nL6\nR313\nR93\nL44\nL56\nL55\nL45\nL59\nR13\nR46\nR19\nL89\nL71\nR770\nR23\nL513\nR61\nL4\nL489\nL7\nL74\nR9\nR65\nR905\nL12\nL588\nL5\nR7\nL7\nL12\nL295\nL86\nR93\nL12\nL88\nL14\nL809\nL15\nR88\nR17\nR88\nL40\nL15\nL478\nR78\nL86\nL14\nR52\nR73\nL69\nL630\nR89\nL801\nL814\nR969\nR69\nL83\nR82\nL53\nL49\nR329\nR41\nL81\nL20\nR96\nR16\nL16\nL482\nR21\nR14\nL53\nL885\nR96\nL670\nL53\nR417\nR95\nR23\nL28\nR5\nR72\nR52\nR76\nL389\nL911\nL78\nL322\nR16\nR93\nR594\nL36\nR433\nR76\nR5\nR377\nL80\nR95\nR29\nL78\nL124\nR69\nL22\nR553\nR15\nR85\nR70\nL70\nL779\nL21\nL46\nL536\nL918\nR67\nL33\nL681\nR60\nR57\nL70\nR9\nR91\nL72\nR96\nR11\nL906\nR71\nL51\nR95\nL44\nR473\nR927\nR47\nL27\nL20\nR18\nL18\nR371\nL838\nR41\nL74\nR78\nL73\nR95\nR20\nL14\nL30\nL76\nR36\nR669\nR326\nL52\nL36\nR15\nR26\nR916\nR49\nR43\nL646\nR954\nL85\nL15\nL763\nR58\nL97\nR65\nL53\nR88\nL98\nR89\nR711\nL16\nL474\nR90\nL56\nL82\nR38\nR321\nR79\nR439\nR75\nL12\nL2\nR17\nR83\nL90\nL10\nL44\nR108\nL51\nL9\nR96\nL88\nL46\nL66\nR15\nL75\nL940\nR483\nR96\nR49\nR72\nL28\nR27\nR82\nR19\nL135\nL83\nL82\nL63\nR187\nL79\nR57\nL902\nL81\nL19\nL74\nR74\nR678\nR22\nL4\nL656\nL40\nR6\nL6\nL24\nL76\nL76\nR76\nR73\nL73\nL938\nR38\nL53\nL46\nR99\nL471\nL29\nL47\nL53\nR90\nR10\nL66\nR459\nR54\nR31\nR420\nR7\nL4\nR699\nR703\nR97\nL30\nL7\nR537\nL112\nR12\nL516\nL753\nL6\nL61\nR206\nR47\nL73\nL44\nL50\nR414\nL20\nR71\nL447\nR542\nR28\nL38\nL41\nR91\nR11\nL59\nR49\nR73\nR25\nL58\nL81\nR790\nR55\nR80\nL666\nR618\nR46\nL35\nL24\nR86\nL460\nR38\nL38\nL69\nL66\nR35\nL576\nR759\nL89\nL40\nL28\nR21\nL20\nL44\nR17\nR97\nL54\nR57\nR97\nR249\nR73\nR81\nR83\nR17\nR81\nL81\nR12\nL632\nL59\nR51\nR85\nR40\nR387\nR816\nL48\nR548\nL93\nR88\nL75\nL78\nL42\nR88\nR12\nL532\nL68\nR99\nL38\nR6\nR76\nL43\nL23\nR284\nR77\nL38\nR94\nR6\nL265\nR24\nR36\nL33\nL1\nR199\nR68\nL28\nR55\nR45\nL10\nL94\nR9\nL609\nL13\nL43\nL140\nR57\nR43\nL29\nL171\nL34\nL19\nR78\nL42\nL9\nL74\nL37\nR117\nR46\nL26\nR262\nR61\nR77\nL35\nL65\nL92\nL8\nR88\nL77\nL11\nL65\nL35\nL39\nR39\nL4\nR33\nL83\nL39\nR19\nL32\nL655\nR748\nL196\nR9\nR82\nL131\nR49\nR12\nR88\nR15\nL2\nR41\nL54\nR48\nL18\nR34\nR525\nL89\nR93\nR50\nL43\nL30\nL47\nR677\nR91\nR9\nL5\nL895\nR29\nL29\nR81\nR31\nR88\nL11\nR60\nR51\nL17\nR82\nL65\nR34\nR26\nL9\nL51\nR20\nR37\nL22\nR965\nL14\nL29\nR2\nL3\nL156\nR15\nL15\nR85\nL99\nR36\nR22\nL5\nR14\nL682\nR729\nR12\nR3\nR85\nR125\nL31\nR73\nR78\nR53\nL50\nL48\nR3\nR23\nL51\nR13\nL388\nR33\nR73\nR94\nL95\nR99\nR73\nR862\nL5\nR240\nL70\nR496\nR84\nR66\nR21\nR29\nR39\nL39\nR693\nL35\nR42\nR46\nL47\nR83\nR492\nL91\nR52\nL86\nR87\nL936\nR97\nL49\nR52\nR53\nR55\nL56\nL3\nL49\nR23\nL23\nR64\nL29\nR88\nR20\nR5\nR352\nL69\nL31\nL94\nR78\nL97\nR13\nR91\nR5\nL84\nL851\nR50\nR37\nR621\nR31\nL62\nL92\nR54\nL488\nL570\nR58\nL52\nR27\nR88\nL62\nR52\nL53\nL31\nL55\nR27\nR59\nR927\nL127\nR93\nL36\nR43\nR438\nR62\nR95\nR72\nL63\nR44\nR69\nR672\nR11\nR12\nL31\nL93\nR12\nR91\nL50\nL50\nR209\nR49\nR981\nL30\nR59\nR58\nL3\nL514\nR4\nL804\nR39\nR61\nL72\nR95\nL19\nL57\nL447\nR35\nL35\nR26\nL51\nR64\nL39\nR106\nR44\nL139\nR59\nR88\nR56\nL14\nL32\nL49\nL69\nR50\nR66\nL28\nR43\nR18\nL899\nR379\nL79\nR19\nL19\nR984\nL84\nR508\nR92\nR93\nR85\nL95\nL55\nR33\nR39\nR73\nR37\nR5\nL59\nR586\nR469\nR89\nL79\nL68\nR95\nR22\nL470\nR45\nR86\nL2\nL56\nL73\nL17\nL83\nL30\nL70\nR56\nR344\nL67\nL11\nR95\nL54\nR796\nL59\nL14\nL86\nR14\nR486\nR22\nR34\nR48\nR735\nL39\nL91\nL9\nL24\nL28\nL96\nL918\nL34\nL60\nR33\nR27\nR40\nL40\nL34\nR391\nR26\nL99\nL95\nR11\nL64\nL21\nR10\nL25\nL113\nL87\nL75\nR946\nL95\nL76\nL32\nR6\nR61\nR6\nL91\nL50\nR971\nL71\nR8\nL27\nL60\nR79\nR75\nL675\nL59\nR58\nR62\nR68\nR71\nL758\nL342\nR637\nL37\nL69\nR397\nR32\nR40\nL77\nR48\nR62\nR34\nL67\nR569\nL406\nL34\nL58\nR29\nL39\nL355\nL91\nR27\nR99\nL56\nL58\nL47\nR63\nR57\nR93\nR37\nL61\nL69\nR92\nR8\nR26\nR55\nL33\nR10\nR642\nL13\nR11\nL398\nL86\nR86\nR98\nL62\nR164\nL49\nL358\nR7\nL8\nL392\nR222\nR39\nR39\nL94\nL96\nL11\nL46\nL89\nR71\nR51\nR14\nL79\nR94\nR17\nR68\nL29\nL13\nR17\nL27\nR67\nL75\nR48\nR1\nL12\nL4\nR38\nR201\nL38\nR96\nR30\nL98\nL594\nR92\nL81\nR790\nR90\nR879\nL9\nL58\nR95\nR494\nL85\nL15\nR14\nR86\nR53\nR47\nL17\nR13\nL72\nL24\nL30\nL469\nL1\nL71\nR54\nR17\nL435\nL725\nL40\nR69\nL69\nL84\nR72\nR96\nL60\nL12\nL12\nL37\nL14\nL69\nL388\nL92\nL457\nR551\nR906\nR13\nL69\nL95\nL362\nR13\nR339\nL23\nL316\nL38\nL362\nR46\nR165\nL33\nL78\nL73\nL88\nR932\nR72\nL3\nR92\nR29\nL85\nR25\nL1\nL81\nR81\nR10\nR90\nL69\nL30\nL301\nR48\nR49\nL228\nL59\nL30\nR20\nL47\nR41\nR6\nR45\nL345\nR23\nR75\nR2\nR679\nR21\nL59\nR8\nR19\nR33\nR96\nR3\nL10\nR10\nL5\nR20\nR64\nR41\nR9\nL29\nL49\nR49\nL58\nL6\nL36\nR14\nL245\nL69\nR46\nL46\nR16\nL16\nR58\nL17\nL838\nR97\nL7\nL88\nR95\nR76\nL76\nL5\nL35\nL60\nR765\nL84\nR182\nL82\nR28\nR76\nL3\nL9\nL73\nL94\nL84\nL42\nL78\nR98\nL831\nL69\nL17\nR878\nR77\nL38\nR476\nR49\nL29\nR4\nL13\nR73\nL91\nL269\nL663\nR91\nL30\nL89\nR58\nL71\nL596\nR211\nR76\nR13\nR93\nR913\nL158\nL7\nR59\nR54\nR30\nR7\nL22\nL210\nL5\nR36\nL90\nL412\nL55\nL69\nR36\nL75\nL67\nR483\nL72\nR31\nR56\nR44\nR88\nL78\nR28\nR62\nR395\nR66\nL983\nL22\nR44\nL46\nR73\nL63\nR55\nL19\nL15\nL99\nR64\nR56\nR94\nL5\nR5\nL32\nL968\nL786\nL14\nR38\nR762\nR98\nR84\nL38\nR79\nR74\nR2\nL84\nR35\nR278\nL41\nL781\nL99\nL84\nR67\nL90\nL86\nL914\nL361\nR61\nL77\nL72\nL99\nL52\nR186\nR45\nL10\nR486\nL307\nR79\nR821\nL23\nR23\nR660\nL60\nR77\nR623\nL71\nL53\nL65\nL11\nL11\nL89\nR84\nL383\nR718\nL94\nR41\nL46\nR11\nR84\nR85\nL88\nR88\nR35\nR65\nL14\nL86\nL34\nL303\nL63\nL27\nR78\nL46\nR63\nR24\nL99\nR96\nL89\nR10\nL83\nR15\nR23\nR35\nR51\nR65\nR451\nR26\nL549\nR70\nL766\nL48\nL58\nR58\nR284\nL984\nL83\nL22\nR81\nL476\nL14\nL86\nR27\nR473\nL242\nL850\nR23\nL49\nR45\nR9\nL336\nR88\nR71\nL259\nL96\nL42\nR71\nR67\nR28\nL428\nL526\nL74\nR11\nL111\nL52\nR55\nL78\nR275\nL39\nL61\nR94\nR46\nR110\nR375\nL25\nR88\nR12\nL89\nL35\nR70\nR54\nR33\nR53\nL93\nL93\nR35\nL35\nR36\nR64\nR31\nR78\nR72\nL81\nR14\nR28\nL382\nR931\nR77\nR970\nR6\nR29\nR18\nR9\nL21\nR21\nL5\nL59\nR164\nL15\nL23\nL10\nR20\nR28\nR22\nR973\nL13\nL82\nL91\nL68\nR3\nL840\nR719\nR19\nR58\nR26\nL59\nR97\nL88\nR77\nL287\nR34\nR24\nL34\nL42\nL87\nL1\nL57\nL93\nR65\nL75\nL4\nL596\nL2\nL16\nR18\nR52\nR78\nL30\nL47\nL453\nR10\nL510\nL56\nR77\nL15\nL89\nL17\nR818\nR36\nL40\nR66\nL36\nR456\nL63\nR63\nL21\nR87\nR75\nR59\nL38\nR609\nL437\nL41\nL95\nR963\nL756\nL5\nL142\nL58\nR18\nR82\nR510\nR33\nR45\nL88\nR92\nL692\nL62\nL438\nR25\nL25\nL12\nR12\nL31\nR25\nR806\nL676\nR76\nL4\nL696\nR575\nR72\nR11\nL58\nL82\nR7\nR75\nL2\nR2\nR95\nR5\nL70\nL5\nR44\nL58\nR489\nL57\nL941\nR98\nL138\nR138\nR122\nL40\nL82\nL37\nL33\nR76\nL6\nL36\nR836\nR62\nR938\nL62\nR62\nL58\nL142\nR263\nL63\nR25\nR75\nL18\nR18\nR1\nL1\nL4\nL33\nR37\nR730\nL324\nR356\nR38\nR532\nL29\nL62\nR59\nL657\nL16\nL79\nR51\nL99\nR23\nL423\nR4\nR75\nR54\nL78\nR45\nR762\nL62\nR363\nR237\nR12\nL12\nR25\nR51\nL29\nL16\nL39\nR84\nR29\nR88\nR7\nR802\nL53\nR77\nL74\nR34\nR14\nR78\nR86\nR74\nR6\nL44\nL663\nL7\nL51\nL73\nR78\nL71\nR280\nR34\nL40\nL87\nL36\nL643\nR31\nR25\nR147\nR176\nR12\nR88\nL9\nR96\nR313\nR87\nR13\nR41\nL41\nR26\nR59\nL37\nL837\nR89\nL77\nL73\nL59\nR209\nL437\nR19\nL682\nR12\nL97\nL15\nR67\nL67\nL586\nR86\nL76\nR73\nL197\nR286\nR414\nR264\nL578\nR69\nR45\nL37\nR56\nR975\nL31\nR337\nR61\nR39\nL46\nL50\nL504\nR62\nL96\nL10\nL88\nL316\nL52\nL80\nL59\nL8\nR69\nR78\nL24\nR24\nL56\nR56\nL44\nR99\nR50\nR67\nL222\nR27\nL195\nL69\nR887\nL66\nL706\nR72\nR355\nR17\nR27\nR1\nL37\nL763\nL44\nR94\nL547\nR497\nR83\nL19\nR36\nR335\nR80\nL72\nR3\nL632\nL39\nR86\nR63\nR37\nL61\nL7\nL93\nR76\nR70\nL68\nR23\nR24\nR121\nR54\nR94\nL94\nR959\nR41\nL388\nR25\nL19\nR863\nR159\nR40\nL80\nL821\nR10\nL89\nL474\nL87\nR82\nR75\nL53\nL43\nL19\nL89\nL95\nL97\nR946\nR49\nR5\nL75\nR374\nR1\nR30\nL30\nR15\nL15\nR11\nL811\nL84\nL74\nR41\nL83\nL20\nL80\nR668\nR63\nL28\nR97\nL73\nR73\nR43\nL56\nR51\nR57\nR12\nR6\nR51\nR36\nR63\nL37\nL94\nL32\nR22\nL22\nR46\nL63\nR78\nR79\nR60\nR96\nR633\nL342\nR20\nL48\nR5\nR752\nR84\nL10\nL90\nR87\nR357\nR67\nR47\nL358\nL17\nR9\nL92\nR19\nR59\nL40\nR462\nL88\nL97\nL41\nL972\nR198\nL89\nR73\nR16\nL36\nR36\nR796\nR29\nL425\nR1\nR599\nR23\nR92\nR85\nL68\nR68\nR560\nL34\nL39\nL89\nL29\nR89\nL58\nL31\nL34\nR46\nR63\nR56\nL5\nR77\nL11\nR26\nR73\nL58\nR90\nL995\nL636\nL585\nR39\nL15\nR31\nL53\nR22\nR65\nR246\nR76\nR60\nL41\nR94\nR397\nL97\nR36\nL86\nR35\nR11\nL30\nR52\nL46\nL72\nR80\nL5\nL620\nR53\nR692\nR16\nL82\nL66\nR39\nR955\nR70\nR5\nL5\nL49\nR1\nL12\nR269\nR7\nL948\nL527\nR78\nR49\nL434\nL66\nL58\nL61\nR38\nR81\nR817\nR42\nL15\nR40\nL153\nL157\nR24\nR33\nR18\nR14\nR35\nR66\nR41\nL5\nR20\nL756\nR268\nL91\nL214\nL29\nR792\nL12\nR80\nR29\nR48\nL59\nR547\nR77\nL28\nR831\nL97\nL6\nR10\nR90\nR69\nL69\nR26\nL26\nR78\nR241\nL19\nR65\nR57\nR96\nR90\nR9\nR227\nR36\nL73\nL7\nL76\nL6\nL78\nR60\nL399\nR599\nR631\nL31\nR75\nL125\nL25\nL25\nR26\nL961\nR36\nR99\nR287\nR43\nR70\nR63\nL663\nL59\nL975\nR18\nR16\nL78\nR78\nR14\nL472\nR458\nR86\nL74\nL77\nR265\nL77\nR82\nL5\nR79\nR21\nR31\nR17\nR38\nR579\nL90\nR25\nL346\nL94\nL60\nL72\nL787\nR24\nL596\nR871\nL34\nR730\nR764\nR80\nL732\nL548\nL59\nR17\nR42\nR3\nL87\nR584\nL71\nR71\nL29\nR29\nL71\nR20\nR51\nL1\nR43\nR38\nL396\nL53\nR13\nR907\nL28\nL23\nR17\nR95\nR50\nL50\nR88\nR95\nL33\nR62\nR34\nL58\nL40\nR470\nL930\nL3\nL97\nL20\nL28\nL45\nL87\nR34\nL210\nL244\nR86\nL430\nR44\nL9\nR70\nL61\nR615\nR68\nR21\nR296\nR85\nR78\nL63\nR25\nR61\nR11\nL97\nL79\nL70\nL51\nL34\nL35\nR89\nL20\nR83\nR83\nR34\nL27\nR90\nR52\nR74\nL30\nR611\nL470\nL474\nL26\nR81\nL5\nL76\nR57\nR43\nL51\nR51\nL315\nR91\nL11\nR35\nL12\nR57\nL59\nR210\nL296\nR970\nL87\nR73\nL56\nL37\nR27\nL90\nL24\nR724\nR94\nR903\nL81\nL9\nL83\nR76\nL289\nL44\nL35\nL84\nR48\nR304\nL853\nR68\nR85\nR67\nR62\nR59\nL45\nL24\nL99\nR80\nL50\nL333\nL17\nL20\nL880\nR23\nR53\nL91\nR46\nR150\nL93\nL40\nL126\nL982\nR60\nR87\nL87\nR73\nL73\nL42\nL58\nR23\nR77\nL35\nL276\nR14\nR70\nL73\nL80\nR68\nR205\nL47\nR112\nL58\nL20\nR93\nR67\nL436\nL707\nL28\nR80\nL146\nL66\nL57\nL52\nL84\nR10\nR546\nR76\nL276\nR14\nL49\nR7\nL68\nR96\nR51\nL29\nR78\nR83\nL40\nR17\nL29\nR30\nL2\nR91\nR78\nR22\nL429\nL61\nL64\nR295\nR886\nR81\nR8\nR57\nR77\nL50\nL50\nL143\nR43\nR75\nR92\nR33\nR691\nL498\nL93\nL77\nR77\nL26\nL10\nR1\nR435\nL39\nR39\nL55\nL842\nR75\nR15\nL45\nR3\nR696\nL847\nL96\nL6\nR2\nR85\nL926\nR26\nR15\nL641\nL59\nR97\nR71\nR71\nR69\nL8\nL141\nL559\nR64\nR409\nL96\nR85\nL62\nL644\nL99\nL57\nL567\nR67\nL38\nL95\nL77\nL22\nR32\nL50\nL71\nR895\nL89\nL85\nL28\nR28\nR3\nR73\nR7\nL83\nL50\nL450\nL14\nR35\nR64\nR46\nL656\nR4\nL37\nL41\nR447\nR69\nL17\nL50\nL43\nL86\nR787\nL77\nL31\nR758\nR161\nR863\nR31\nL96\nL17\nL6\nR6\nL50\nR35\nR28\nL9\nR39\nR63\nL99\nR97\nL77\nL927\nL10\nR26\nR84\nL83\nL794\nL38\nL85\nL86\nL14\nR319\nL77\nL9\nL89\nL944\nL49\nR62\nR389\nL16\nL80\nL93\nR87\nR454\nR81\nL78\nL257\nL23\nL77\nR9\nR79\nR28\nL16\nL79\nL53\nR32\nL55\nL488\nL57\nL25\nL30\nR12\nL22\nL35\nR90\nL90\nL145\nR27\nR594\nL76\nR85\nR15\nL85\nL48\nR33\nL94\nL39\nL67\nR52\nR48\nL31\nL41\nL28\nL32\nL722\nL48\nR802\nR77\nR43\nR614\nR70\nL78\nL87\nR61\nR78\nL78\nR52\nL41\nR940\nL635\nL16\nR787\nR24\nR66\nR811\nL428\nL54\nR94\nR37\nL95\nL62\nR86\nL66\nR407\nL2\nL4\nR42\nL243\nR790\nL90\nL9\nR9\nL58\nR77\nR67\nR52\nR62\nL85\nL86\nL78\nL914\nR36\nL80\nR53\nL946\nL26\nR26\nR59\nL90\nL47\nR35\nL29\nR72\nL599\nR99\nL52\nL48\nL726\nL32\nL386\nL79\nL77\nR61\nL49\nL68\nL64\nL56\nR38\nR58\nR79\nR92\nL49\nL42\nR23\nR91\nL814\nR24\nL25\nR19\nL65\nR44\nR67\nR36\nR846\nL146\nR81\nL97\nR16\nL18\nL82\nR10\nL10\nL55\nL18\nR22\nL380\nL627\nR58\nL923\nL77\nR94\nL94\nL7\nR97\nR98\nR12\nR70\nL90\nL80\nR42\nL37\nL5\nR450\nL57\nR562\nL55\nR66\nR73\nR22\nR84\nR55\nL43\nR43\nR80\nL1\nR94\nR37\nR90\nR42\nL42\nR61\nR71\nL50\nR18\nR48\nR77\nL62\nR37\nR49\nR50\nR51\nL42\nR92\nR73\nR27\nL57\nL89\nR57\nR89\nL83\nR93\nR90\nL3\nL97\nL32\nR32\nL3\nL40\nR36\nL89\nR91\nL8\nR13\nL45\nL48\nL11\nL15\nL46\nL17\nL47\nR40\nR89\nR49\nL88\nL12\nR20\nL31\nL50\nR2\nL10\nR13\nR36\nL49\nR39\nL20\nL9\nR41\nR31\nR36\nR48\nR46\nR4\nR45\nL22\nR13\nR34\nR11\nR11\nR39\nL5\nL17\nR41\nR41\nR38\nL42\nR11\nL32\nL31\nR9\nL7\nR43\nL23\nR5\nL15\nR30\nR11\nR31\nR29\nR25\nL33\nR31\nR30\nR30\nL21\nL11") \ No newline at end of file diff --git a/clojure/src/question_1.clj b/clojure/src/question_1.clj new file mode 100644 index 0000000..27e4c22 --- /dev/null +++ b/clojure/src/question_1.clj @@ -0,0 +1,38 @@ +(ns question-1 + (:require [clojure.string :as strings] + [inputs])) + +(def mock-input "L68\nL30\nR48\nL5\nR60\nL55\nL1\nL99\nR14\nL82") + +(defn decode-line [line] + (let [v (Integer/parseInt (subs line 1))] + (if (strings/starts-with? line "L") (* -1 v) v))) + +(defn question-1-a [document] + (let [lines (strings/split-lines document) + deltas (map decode-line lines) + code (reductions #(mod (+ %1 %2) 100) 50 deltas)] + (count (filter zero? code)))) + +(defn nbr-of-zero-pass [{start :start delta :delta}] + (if (neg? delta) + (recur {:start (mod (- 100 start) 100) :delta (abs delta)}) + (let [m (mod delta 100) + q (quot delta 100) + end (+ start m)] + (+ q (if (<= 100 end) 1 0))))) + + +(defn question-2-a [document] + (let [lines (strings/split-lines document) + deltas (map decode-line lines) + code (reductions #(mod (+ %1 %2) 100) 50 deltas) + intervals (map #(hash-map :start %1 :delta %2) code deltas)] + (reduce + (map nbr-of-zero-pass intervals)))) + + + + +(defn -main [& args]) + (println "Solution to question 1-a is: " (question-1-a inputs/question-1)) + (println "Solution to question 2-a is: " (question-2-a inputs/question-1))