From 13a8e7418929b3cdcb260f96d54c07aa4e0e4ad3 Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Mon, 4 Dec 2023 08:02:51 +0100 Subject: [PATCH] Setup Scala --- .envrc | 1 + .gitignore | 10 +- .scalafmt.conf | 2 + flake.lock | 136 +------------ flake.nix | 59 +----- input/day01 | 1 + ocaml/.gitignore | 8 + .ocamlformat => ocaml/.ocamlformat | 0 .rgignore => ocaml/.rgignore | 0 CHANGES.md => ocaml/CHANGES.md | 0 LICENSE => ocaml/LICENSE | 0 {bin => ocaml/bin}/dune | 0 {bin => ocaml/bin}/main.ml | 0 dune-project => ocaml/dune-project | 0 ocaml/flake.lock | 189 ++++++++++++++++++ ocaml/flake.nix | 57 ++++++ {lib => ocaml/lib}/drivers.ml | 0 {lib => ocaml/lib}/drivers.mli | 0 {lib => ocaml/lib}/dune | 0 {lib => ocaml/lib}/fn.ml | 0 {lib => ocaml/lib}/import.ml | 0 {lib => ocaml/lib}/let.ml | 0 {lib => ocaml/lib}/problem.ml | 0 {lib => ocaml/lib}/problem_runner.ml | 0 {lib => ocaml/lib}/problem_runner.mli | 0 {lib => ocaml/lib}/problems/dune | 0 {lib => ocaml/lib}/problems/generator/dune | 0 {lib => ocaml/lib}/problems/generator/gen.ml | 0 .../lib}/problems/problem_2023_01.ml | 0 .../lib}/problems/problem_2023_02.ml | 0 {public => ocaml/public}/logo.webp | Bin tanenbaum.opam => ocaml/tanenbaum.opam | 0 {test => ocaml/test}/dune | 0 {test => ocaml/test}/example_test.ml | 0 project.scala | 2 + src/aoc.scala | 7 + src/day01.scala | 5 + 37 files changed, 290 insertions(+), 187 deletions(-) create mode 100644 .envrc create mode 100644 .scalafmt.conf create mode 100644 input/day01 create mode 100644 ocaml/.gitignore rename .ocamlformat => ocaml/.ocamlformat (100%) rename .rgignore => ocaml/.rgignore (100%) rename CHANGES.md => ocaml/CHANGES.md (100%) rename LICENSE => ocaml/LICENSE (100%) rename {bin => ocaml/bin}/dune (100%) rename {bin => ocaml/bin}/main.ml (100%) rename dune-project => ocaml/dune-project (100%) create mode 100644 ocaml/flake.lock create mode 100644 ocaml/flake.nix rename {lib => ocaml/lib}/drivers.ml (100%) rename {lib => ocaml/lib}/drivers.mli (100%) rename {lib => ocaml/lib}/dune (100%) rename {lib => ocaml/lib}/fn.ml (100%) rename {lib => ocaml/lib}/import.ml (100%) rename {lib => ocaml/lib}/let.ml (100%) rename {lib => ocaml/lib}/problem.ml (100%) rename {lib => ocaml/lib}/problem_runner.ml (100%) rename {lib => ocaml/lib}/problem_runner.mli (100%) rename {lib => ocaml/lib}/problems/dune (100%) rename {lib => ocaml/lib}/problems/generator/dune (100%) rename {lib => ocaml/lib}/problems/generator/gen.ml (100%) rename {lib => ocaml/lib}/problems/problem_2023_01.ml (100%) rename {lib => ocaml/lib}/problems/problem_2023_02.ml (100%) rename {public => ocaml/public}/logo.webp (100%) rename tanenbaum.opam => ocaml/tanenbaum.opam (100%) rename {test => ocaml/test}/dune (100%) rename {test => ocaml/test}/example_test.ml (100%) create mode 100644 project.scala create mode 100644 src/aoc.scala create mode 100644 src/day01.scala diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/.gitignore b/.gitignore index 8bda512..084cc89 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,4 @@ -_build/ -_opam/ -inputs/ -.sl/ -.git/ -.DS_Store -.envrc +.bsp .direnv +.metals +.scala-build diff --git a/.scalafmt.conf b/.scalafmt.conf new file mode 100644 index 0000000..1f37b12 --- /dev/null +++ b/.scalafmt.conf @@ -0,0 +1,2 @@ +version = "3.7.14" +runner.dialect = scala3 \ No newline at end of file diff --git a/flake.lock b/flake.lock index 1906f68..893f1d5 100644 --- a/flake.lock +++ b/flake.lock @@ -1,21 +1,5 @@ { "nodes": { - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-utils": { "inputs": { "systems": "systems" @@ -34,44 +18,13 @@ "type": "github" } }, - "flake-utils_2": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "mirage-opam-overlays": { - "flake": false, - "locked": { - "lastModified": 1661959605, - "narHash": "sha256-CPTuhYML3F4J58flfp3ZbMNhkRkVFKmBEYBZY5tnQwA=", - "owner": "dune-universe", - "repo": "mirage-opam-overlays", - "rev": "05f1c1823d891ce4d8adab91f5db3ac51d86dc0b", - "type": "github" - }, - "original": { - "owner": "dune-universe", - "repo": "mirage-opam-overlays", - "type": "github" - } - }, "nixpkgs": { "locked": { - "lastModified": 1682362401, - "narHash": "sha256-/UMUHtF2CyYNl4b60Z2y4wwTTdIWGKhj9H301EDcT9M=", + "lastModified": 1701253981, + "narHash": "sha256-ztaDIyZ7HrTAfEEUt9AtTDNoCYxUdSd6NrRHaYOIxtk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "884ac294018409e0d1adc0cae185439a44bd6b0b", + "rev": "e92039b55bcd58469325ded85d4f58dd5a4eaf58", "type": "github" }, "original": { @@ -81,91 +34,10 @@ "type": "github" } }, - "opam-nix": { - "inputs": { - "flake-compat": "flake-compat", - "flake-utils": "flake-utils_2", - "mirage-opam-overlays": "mirage-opam-overlays", - "nixpkgs": "nixpkgs", - "opam-overlays": "opam-overlays", - "opam-repository": "opam-repository", - "opam2json": "opam2json" - }, - "locked": { - "lastModified": 1701258858, - "narHash": "sha256-5v5PFrIz2DdR5zRTez+J7prGUOHFHwM5RsmLspOGoms=", - "owner": "tweag", - "repo": "opam-nix", - "rev": "a547ed060d2409c20902bd5f8a2465adca1bdf4f", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "opam-nix", - "type": "github" - } - }, - "opam-overlays": { - "flake": false, - "locked": { - "lastModified": 1654162756, - "narHash": "sha256-RV68fUK+O3zTx61iiHIoS0LvIk0E4voMp+0SwRg6G6c=", - "owner": "dune-universe", - "repo": "opam-overlays", - "rev": "c8f6ef0fc5272f254df4a971a47de7848cc1c8a4", - "type": "github" - }, - "original": { - "owner": "dune-universe", - "repo": "opam-overlays", - "type": "github" - } - }, - "opam-repository": { - "flake": false, - "locked": { - "lastModified": 1695894792, - "narHash": "sha256-7Llico807vq14AkqAaDIWogC50xLxU38nuNEH06YNPE=", - "owner": "ocaml", - "repo": "opam-repository", - "rev": "33fcf32f269ee5af70b31e27442397a0cdaf28b2", - "type": "github" - }, - "original": { - "owner": "ocaml", - "repo": "opam-repository", - "type": "github" - } - }, - "opam2json": { - "inputs": { - "nixpkgs": [ - "opam-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671540003, - "narHash": "sha256-5pXfbUfpVABtKbii6aaI2EdAZTjHJ2QntEf0QD2O5AM=", - "owner": "tweag", - "repo": "opam2json", - "rev": "819d291ea95e271b0e6027679de6abb4d4f7f680", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "opam2json", - "type": "github" - } - }, "root": { "inputs": { "flake-utils": "flake-utils", - "nixpkgs": [ - "opam-nix", - "nixpkgs" - ], - "opam-nix": "opam-nix" + "nixpkgs": "nixpkgs" } }, "systems": { diff --git a/flake.nix b/flake.nix index e9c9905..b843430 100644 --- a/flake.nix +++ b/flake.nix @@ -1,57 +1,20 @@ { inputs = { - opam-nix.url = "github:tweag/opam-nix"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; - nixpkgs.follows = "opam-nix/nixpkgs"; }; - outputs = { self, flake-utils, opam-nix, nixpkgs }@inputs: - flake-utils.lib.eachDefaultSystem (system: + + outputs = { self, nixpkgs, flake-utils, ... }: + flake-utils.lib.eachDefaultSystem ( + system: let pkgs = nixpkgs.legacyPackages.${system}; - on = opam-nix.lib.${system}; - localPackagesQuery = builtins.mapAttrs (_: pkgs.lib.last) - (on.listRepo (on.makeOpamRepo ./.)); - devPackagesQuery = { - # You can add "development" packages here. They will get added to the devShell automatically. - ocaml-lsp-server = "*"; - ocamlformat = "*"; - utop = "*"; - dune-release = "*"; - }; - query = devPackagesQuery // { - ## You can force versions of certain packages here, e.g: - ## - force the ocaml compiler to be taken from opam-repository: - ocaml-base-compiler = "*"; - ## - or force the compiler to be taken from nixpkgs and be a certain version: - # ocaml-system = "4.14.0"; - ## - or force ocamlfind to be a certain version: - # ocamlfind = "1.9.2"; - }; - scope = on.buildDuneProject { } "tanenbaum" ./. query; - overlay = final: prev: - { - # You can add overrides here - }; - scope' = scope.overrideScope' overlay; - # Packages from devPackagesQuery - devPackages = builtins.attrValues - (pkgs.lib.getAttrs (builtins.attrNames devPackagesQuery) scope'); - # Packages in this workspace - packages = - pkgs.lib.getAttrs (builtins.attrNames localPackagesQuery) scope'; - in { - legacyPackages = scope'; - inherit packages; - - ## If you want to have a "default" package which will be built with just `nix build`, do this instead of `inherit packages;`: - # packages = packages // { default = packages.; }; - - devShells.default = pkgs.mkShell { - inputsFrom = builtins.attrValues packages; - buildInputs = devPackages ++ [ - # You can add packages from nixpkgs here - ]; + in + { + devShell = pkgs.mkShell { + buildInputs = [ pkgs.scala-cli ]; }; - }); + } + ); } diff --git a/input/day01 b/input/day01 new file mode 100644 index 0000000..d86bac9 --- /dev/null +++ b/input/day01 @@ -0,0 +1 @@ +OK diff --git a/ocaml/.gitignore b/ocaml/.gitignore new file mode 100644 index 0000000..8bda512 --- /dev/null +++ b/ocaml/.gitignore @@ -0,0 +1,8 @@ +_build/ +_opam/ +inputs/ +.sl/ +.git/ +.DS_Store +.envrc +.direnv diff --git a/.ocamlformat b/ocaml/.ocamlformat similarity index 100% rename from .ocamlformat rename to ocaml/.ocamlformat diff --git a/.rgignore b/ocaml/.rgignore similarity index 100% rename from .rgignore rename to ocaml/.rgignore diff --git a/CHANGES.md b/ocaml/CHANGES.md similarity index 100% rename from CHANGES.md rename to ocaml/CHANGES.md diff --git a/LICENSE b/ocaml/LICENSE similarity index 100% rename from LICENSE rename to ocaml/LICENSE diff --git a/bin/dune b/ocaml/bin/dune similarity index 100% rename from bin/dune rename to ocaml/bin/dune diff --git a/bin/main.ml b/ocaml/bin/main.ml similarity index 100% rename from bin/main.ml rename to ocaml/bin/main.ml diff --git a/dune-project b/ocaml/dune-project similarity index 100% rename from dune-project rename to ocaml/dune-project diff --git a/ocaml/flake.lock b/ocaml/flake.lock new file mode 100644 index 0000000..1906f68 --- /dev/null +++ b/ocaml/flake.lock @@ -0,0 +1,189 @@ +{ + "nodes": { + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "mirage-opam-overlays": { + "flake": false, + "locked": { + "lastModified": 1661959605, + "narHash": "sha256-CPTuhYML3F4J58flfp3ZbMNhkRkVFKmBEYBZY5tnQwA=", + "owner": "dune-universe", + "repo": "mirage-opam-overlays", + "rev": "05f1c1823d891ce4d8adab91f5db3ac51d86dc0b", + "type": "github" + }, + "original": { + "owner": "dune-universe", + "repo": "mirage-opam-overlays", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1682362401, + "narHash": "sha256-/UMUHtF2CyYNl4b60Z2y4wwTTdIWGKhj9H301EDcT9M=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "884ac294018409e0d1adc0cae185439a44bd6b0b", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "opam-nix": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils_2", + "mirage-opam-overlays": "mirage-opam-overlays", + "nixpkgs": "nixpkgs", + "opam-overlays": "opam-overlays", + "opam-repository": "opam-repository", + "opam2json": "opam2json" + }, + "locked": { + "lastModified": 1701258858, + "narHash": "sha256-5v5PFrIz2DdR5zRTez+J7prGUOHFHwM5RsmLspOGoms=", + "owner": "tweag", + "repo": "opam-nix", + "rev": "a547ed060d2409c20902bd5f8a2465adca1bdf4f", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "opam-nix", + "type": "github" + } + }, + "opam-overlays": { + "flake": false, + "locked": { + "lastModified": 1654162756, + "narHash": "sha256-RV68fUK+O3zTx61iiHIoS0LvIk0E4voMp+0SwRg6G6c=", + "owner": "dune-universe", + "repo": "opam-overlays", + "rev": "c8f6ef0fc5272f254df4a971a47de7848cc1c8a4", + "type": "github" + }, + "original": { + "owner": "dune-universe", + "repo": "opam-overlays", + "type": "github" + } + }, + "opam-repository": { + "flake": false, + "locked": { + "lastModified": 1695894792, + "narHash": "sha256-7Llico807vq14AkqAaDIWogC50xLxU38nuNEH06YNPE=", + "owner": "ocaml", + "repo": "opam-repository", + "rev": "33fcf32f269ee5af70b31e27442397a0cdaf28b2", + "type": "github" + }, + "original": { + "owner": "ocaml", + "repo": "opam-repository", + "type": "github" + } + }, + "opam2json": { + "inputs": { + "nixpkgs": [ + "opam-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671540003, + "narHash": "sha256-5pXfbUfpVABtKbii6aaI2EdAZTjHJ2QntEf0QD2O5AM=", + "owner": "tweag", + "repo": "opam2json", + "rev": "819d291ea95e271b0e6027679de6abb4d4f7f680", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "opam2json", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "opam-nix", + "nixpkgs" + ], + "opam-nix": "opam-nix" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/ocaml/flake.nix b/ocaml/flake.nix new file mode 100644 index 0000000..e9c9905 --- /dev/null +++ b/ocaml/flake.nix @@ -0,0 +1,57 @@ +{ + inputs = { + opam-nix.url = "github:tweag/opam-nix"; + flake-utils.url = "github:numtide/flake-utils"; + nixpkgs.follows = "opam-nix/nixpkgs"; + }; + outputs = { self, flake-utils, opam-nix, nixpkgs }@inputs: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + on = opam-nix.lib.${system}; + localPackagesQuery = builtins.mapAttrs (_: pkgs.lib.last) + (on.listRepo (on.makeOpamRepo ./.)); + devPackagesQuery = { + # You can add "development" packages here. They will get added to the devShell automatically. + ocaml-lsp-server = "*"; + ocamlformat = "*"; + utop = "*"; + dune-release = "*"; + }; + query = devPackagesQuery // { + ## You can force versions of certain packages here, e.g: + ## - force the ocaml compiler to be taken from opam-repository: + ocaml-base-compiler = "*"; + ## - or force the compiler to be taken from nixpkgs and be a certain version: + # ocaml-system = "4.14.0"; + ## - or force ocamlfind to be a certain version: + # ocamlfind = "1.9.2"; + }; + scope = on.buildDuneProject { } "tanenbaum" ./. query; + overlay = final: prev: + { + # You can add overrides here + }; + scope' = scope.overrideScope' overlay; + # Packages from devPackagesQuery + devPackages = builtins.attrValues + (pkgs.lib.getAttrs (builtins.attrNames devPackagesQuery) scope'); + # Packages in this workspace + packages = + pkgs.lib.getAttrs (builtins.attrNames localPackagesQuery) scope'; + in { + legacyPackages = scope'; + + inherit packages; + + ## If you want to have a "default" package which will be built with just `nix build`, do this instead of `inherit packages;`: + # packages = packages // { default = packages.; }; + + devShells.default = pkgs.mkShell { + inputsFrom = builtins.attrValues packages; + buildInputs = devPackages ++ [ + # You can add packages from nixpkgs here + ]; + }; + }); +} diff --git a/lib/drivers.ml b/ocaml/lib/drivers.ml similarity index 100% rename from lib/drivers.ml rename to ocaml/lib/drivers.ml diff --git a/lib/drivers.mli b/ocaml/lib/drivers.mli similarity index 100% rename from lib/drivers.mli rename to ocaml/lib/drivers.mli diff --git a/lib/dune b/ocaml/lib/dune similarity index 100% rename from lib/dune rename to ocaml/lib/dune diff --git a/lib/fn.ml b/ocaml/lib/fn.ml similarity index 100% rename from lib/fn.ml rename to ocaml/lib/fn.ml diff --git a/lib/import.ml b/ocaml/lib/import.ml similarity index 100% rename from lib/import.ml rename to ocaml/lib/import.ml diff --git a/lib/let.ml b/ocaml/lib/let.ml similarity index 100% rename from lib/let.ml rename to ocaml/lib/let.ml diff --git a/lib/problem.ml b/ocaml/lib/problem.ml similarity index 100% rename from lib/problem.ml rename to ocaml/lib/problem.ml diff --git a/lib/problem_runner.ml b/ocaml/lib/problem_runner.ml similarity index 100% rename from lib/problem_runner.ml rename to ocaml/lib/problem_runner.ml diff --git a/lib/problem_runner.mli b/ocaml/lib/problem_runner.mli similarity index 100% rename from lib/problem_runner.mli rename to ocaml/lib/problem_runner.mli diff --git a/lib/problems/dune b/ocaml/lib/problems/dune similarity index 100% rename from lib/problems/dune rename to ocaml/lib/problems/dune diff --git a/lib/problems/generator/dune b/ocaml/lib/problems/generator/dune similarity index 100% rename from lib/problems/generator/dune rename to ocaml/lib/problems/generator/dune diff --git a/lib/problems/generator/gen.ml b/ocaml/lib/problems/generator/gen.ml similarity index 100% rename from lib/problems/generator/gen.ml rename to ocaml/lib/problems/generator/gen.ml diff --git a/lib/problems/problem_2023_01.ml b/ocaml/lib/problems/problem_2023_01.ml similarity index 100% rename from lib/problems/problem_2023_01.ml rename to ocaml/lib/problems/problem_2023_01.ml diff --git a/lib/problems/problem_2023_02.ml b/ocaml/lib/problems/problem_2023_02.ml similarity index 100% rename from lib/problems/problem_2023_02.ml rename to ocaml/lib/problems/problem_2023_02.ml diff --git a/public/logo.webp b/ocaml/public/logo.webp similarity index 100% rename from public/logo.webp rename to ocaml/public/logo.webp diff --git a/tanenbaum.opam b/ocaml/tanenbaum.opam similarity index 100% rename from tanenbaum.opam rename to ocaml/tanenbaum.opam diff --git a/test/dune b/ocaml/test/dune similarity index 100% rename from test/dune rename to ocaml/test/dune diff --git a/test/example_test.ml b/ocaml/test/example_test.ml similarity index 100% rename from test/example_test.ml rename to ocaml/test/example_test.ml diff --git a/project.scala b/project.scala new file mode 100644 index 0000000..f1026ea --- /dev/null +++ b/project.scala @@ -0,0 +1,2 @@ +//> using scala 3.3.1 +//> using option -Wunused:all diff --git a/src/aoc.scala b/src/aoc.scala new file mode 100644 index 0000000..760d559 --- /dev/null +++ b/src/aoc.scala @@ -0,0 +1,7 @@ +package aoc + +import scala.io.Source +import scala.util.Using + +def loadInput(dayNumber: String) = + Using.resource(Source.fromFile(s"input/day$dayNumber"))(_.mkString) diff --git a/src/day01.scala b/src/day01.scala new file mode 100644 index 0000000..758a589 --- /dev/null +++ b/src/day01.scala @@ -0,0 +1,5 @@ +package aoc +package day01 + +@main def part1: Unit = + println(loadInput("01"))