{"id":16668493,"url":"https://github.com/ekzhang/aoc23-alpha","last_synced_at":"2025-12-28T07:23:04.166Z","repository":{"id":209967391,"uuid":"725381531","full_name":"ekzhang/aoc23-alpha","owner":"ekzhang","description":"Advent of Code 2023 in 25 interesting language specimens, A-Z","archived":false,"fork":false,"pushed_at":"2023-12-25T21:31:27.000Z","size":212,"stargazers_count":32,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-19T17:12:02.077Z","etag":null,"topics":["advent-of-code","advent-of-code-2023","algorithms","alphabet-soup","competitive-programming","polyglot","programming-languages"],"latest_commit_sha":null,"homepage":"","language":"Jasmin","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ekzhang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-30T02:43:56.000Z","updated_at":"2024-06-23T01:37:14.000Z","dependencies_parsed_at":"2024-11-20T13:36:13.944Z","dependency_job_id":null,"html_url":"https://github.com/ekzhang/aoc23-alpha","commit_stats":null,"previous_names":["ekzhang/aoc23-alpha"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekzhang%2Faoc23-alpha","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekzhang%2Faoc23-alpha/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekzhang%2Faoc23-alpha/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekzhang%2Faoc23-alpha/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ekzhang","download_url":"https://codeload.github.com/ekzhang/aoc23-alpha/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243313974,"owners_count":20271288,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["advent-of-code","advent-of-code-2023","algorithms","alphabet-soup","competitive-programming","polyglot","programming-languages"],"created_at":"2024-10-12T11:25:33.114Z","updated_at":"2025-12-28T07:23:04.118Z","avatar_url":"https://github.com/ekzhang.png","language":"Jasmin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aoc23-alpha\n\n_Advent of Code 2023 solved with 25 languages, in alphabetical order._\n\nLanguages are how we express and develop computational ideas; a dialogue between the programmer \u0026 designer. I know most of the popular ones, so I picked some cool specimens that I'm curious about.\n\nI did a similar thing once before [in 2021](https://github.com/ekzhang/aoc21-alpha), but that challenge had relatively tamer languages. This year will be a little more “out there.”\n\n## Schedule\n\nAs usual, the hardest problems are at the end, so it's a balance between coolness and the practicality of me actually being able to solve the challenges.\n\n1. `A` is for **ARM64 Assembly** — [ARMv8.5-A](https://en.wikipedia.org/wiki/AArch64#ARMv8.5-A)\n2. `B` is for **BQN** — _finally, an APL for your flying saucer_\n3. `C` is for **Carp** — _a statically typed lisp, without GC, for real-time applications_\n4. `D` is for **Dafny** — _a verification-ready programming language_\n5. `E` is for **Erlang** — _practical functional programming for a parallel world_\n6. `F` is for **Flix** — _polymorphic effect system and first-class Datalog constraints_\n7. `G` is for **Gleam** — _a friendly language for building type-safe systems that scale_\n8. `H` is for **Haskell** — [GHC 9.8.1](https://www.haskell.org/ghc/)\n9. `I` is for **Io** — _dynamic prototypes in the same realm as Smalltalk and Self_\n10. `J` is for **Java bytecode** — _write once, run anywhere_\n11. `K` is for **Koka** — _functional language with effects_\n12. `L` is for **Lean** — _interactive theorem prover_\n13. `M` is for **Mojo** — _Python with systems and metaprogramming features_\n14. `N` is for **Nim** — _compiled, garbage-collected systems programming_\n15. `O` is for **OCaml** — [OCaml 5.1.0](https://ocaml.org/releases/5.1.0)\n16. `P` is for **Pony** — _capabilities-secure, high-performance actors_\n17. `Q` is for **Qi** — _lightweight, fast interpreted language written in Chinese_\n18. `R` is for **Raku** — _formerly known as Perl 6_\n19. `S` is for **Swift** — [Swift 5.8.1](https://www.swift.org/blog/swift-5.8-released/)\n20. `T` is for **Tcl** — _a very simple programming language_\n21. `U` is for **Unison** — _purely functional language for distributed systems_\n22. `V` is for **Vale** — _single ownership with constraint references for memory safety_\n23. `W` is for **WebAssembly** — [Wasmtime v15](https://wasmtime.dev/) with Rust\n24. `Y` is for **Yuescript** — _a Moonscript dialect that compiles to Lua_\n25. `Z` is for **Zig** — _general-purpose systems, without garbage collection_\n\nWe're skipping X because the only reasonable language I could find was x86-64 assembly, and I'm definitely not solving day 23 in assembly!\n\n## Development\n\nFirst, create a `.env` file containing your session token from the Advent of Code website, so that the input data can be downloaded. For example:\n\n```\nSESSION=30b5d4e5790f02d4c32c71f59f10d5f2f6adfcf5b4c064c64a689ab02b4beb3e84bf74857e40cc9fe31088972fedeb64\n```\n\nThen, if you have [Python 3](https://python.org/) and [Just](https://github.com/casey/just) installed, as well as the language runtime for a given day's solution, you can load the input data and run the solution with:\n\n```\njust run \u003cday1|day2|...\u003e\n```\n\nEach day's solutions are located in their respective folder `dayN`. The source code reads from standard input, and it is executed using the script `run.sh`.\n\n## Complete Run\n\nIf you have all of the required packages for the 25 languages installed, you can run all of the solutions sequentially with the command:\n\n```\njust run-all\n```\n\n## Runtime Environment\n\nThis is my runtime environment for each language on macOS Ventura v13.2.1, M1 / ARM64 processor, with Rosetta 2 and Xcode CLT. I only used languages that I could install on my own machine; these instructions aren't guaranteed to work on other operating systems or processor architectures.\n\n- **Day 1:** Apple clang version 14.0.3, target arm64-apple-darwin22.3.0\n- **Day 2:** [CBQN 0.4.0](https://github.com/dzaima/CBQN), vendored as submodule and built with Make\n- **Day 3:** [Carp 0.5.5](https://github.com/carp-lang/Carp), binary installation in script\n- **Day 4:** [Dafny 4.3.0](https://github.com/dafny-lang/dafny) via VSCode extension, with dotnet-sdk 8.0.100 installed via Homebrew Cask\n- **Day 5:** Erlang/OTP 26.0.2, installed from Homebrew\n- **Day 6:** [Flix 0.42.0](https://github.com/flix/flix/releases/tag/v0.42.0), included in script, with Java runtime OpenJDK 21.0.1 from Homebrew\n- **Day 7:** [Gleam 0.32.4](https://gleam.run/), installed from Homebrew, with Erlang/OTP 26.0.2\n- **Day 8:** GHC 9.8.1, Cabal 3.10.2.0, installed via GHCup 0.1.20.0; with LLVM 12.0.1\n- **Day 9:** Io Programming Language, v. 20151111 installed via Homebrew for x86-64\n- **Day 10:** Jasmin v2.4, from Homebrew, with OpenJDK 21\n- **Day 11:** [Koka 2.4.2](https://koka-lang.github.io/koka/doc/book.html), installed from the script on the website\n- **Day 12:** Lean 4.3.0, installed with the [elan](https://github.com/leanprover/elan) version manager, via Homebrew\n- **Day 13:** Mojo 0.6.0 (d55c0025), via proprietary installer\n- **Day 14:** Nim 2.0.0, from Homebrew\n- **Day 15:** OCaml 4.12.0, installed via opam 2.1.0, from Homebrew\n- **Day 16:** ponyc-release-0.55.1-arm64-darwin, from ponyup nightly-20230822, with manually patched symlinks for libressl `libcrypto.50.dylib -\u003e libcrypto.52.dylib` and `libssl.53.dylib -\u003e libssl.55.dylib`\n- **Day 17:** [Qi 21b3195](https://github.com/AnonymousAAArdvark/qi/tree/21b3195bb315b4cec0568f2814cc32d940b03657), vendored as submodule and built with Make\n- **Day 18:** Rakudo 2023.11 from Homebrew, implementing Raku 6.d\n- **Day 19:** Apple Swift 5.8.1, targeting arm64-apple-macosx13.0\n- **Day 20:** Tcl 8.6.13 from Homebrew\n- **Day 21:** TBD\n- **Day 22:** TBD\n- **Day 23:** Rust 1.72.1, with Wasmtime 16.0.0\n- **Day 24:** Yuescript 0.21.3, vendored as submodule and built with Make, and Lua 5.4.6\n- **Day 25:** Zig 0.11.0, from release binary (zigup)\n\nNote that while exact version numbers are provided above, the code will likely work with newer versions of these languages as well. Also, assume a global dependency on Python 3.11+, Node v20, and NPM v9.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekzhang%2Faoc23-alpha","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fekzhang%2Faoc23-alpha","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekzhang%2Faoc23-alpha/lists"}