Fast Parse
AdventOfCode
Fast Parse | AdventOfCode | |
---|---|---|
4 | 18 | |
1,076 | 58 | |
0.2% | - | |
4.6 | 7.5 | |
21 days ago | 17 days ago | |
Scala | Python | |
MIT License | Creative Commons Zero v1.0 Universal |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Fast Parse
-
How do I remove the forward reference error in my parser? (20 lines)
Perhaps use Li Haoyi's fastparse instead? https://github.com/com-lihaoyi/fastparse
-
Parse slightly dirty, poorly escaped XML
You might want to adapt Li Haoyi’s XML parser for fastparse.
-
-🎄- 2021 Day 18 Solutions -🎄-
Mostly a mess of pattern matching. I really need to make some generic tree utilities. Haven't been able to find a decent parser combinator that works in Scala 3 (I usually use fastparse which depends heavily on Scala 2 macros, and scala-parser-combinators works in Scala 3, but I've had a lot of trouble getting it to not be too greedy), so I used the state monad from cats to parse at the bottom of the file, which I think turned out fairly nice.
-
Parser generators vs. handwritten parsers: surveying major languages in 2021
Agreed! I would say that parser combinators are the sweet spot and the right choice in most cases.
Scala has them as well, e.g.: https://com-lihaoyi.github.io/fastparse/
And the good thing is, you don't have to learn a completely new language/syntax, you can use the host language's syntax and you have full IDE support as well.
AdventOfCode
-
[2016 Day 14 (Part 2)][Python] Is there a trick to speed this up?
Here's an example implementation in Rust, using rayon's parallel iterators to automatically distribute the computation of a range of hashes over all available cores. It solves both parts together in around 3 seconds on my M2 MacBook Pro. Single-threaded, it takes around 25s in Rust and 35s in Python.
-
Need help finding good python solutions
Here are mine: https://github.com/benediktwerner/AdventOfCode
- [2022 All Days]
-
Running time goals (more of a survey question)
I love doing optimizations like this but I don't really have enough time anymore to really do it. In 2020 I spent a fair amount of time writing super optimized solutions for the first 10 or so days (repo solving all those days together in 150us i.e. <1ms) but even back then, I eventually stopped since I had other things to do and it took more and more time as the days went on.
- [2022 Day 8] Anyone have a solution that doesnt have a separate function for every direction?
-
-🎄- 2022 Day 5 Solutions -🎄-
Python 3 116/125
-
-🎄- 2021 Day 24 Solutions -🎄-
Wow, my final solution looks almost exactly the same. Though I calculated my initial answers by hand.
-
[2021 Day 18] When you check the leaderboard first and see most people taking 30+ minutes
That's certainly not necessary though and really not what makes most of the speed, especially for problems like today's. I don't really look at other leaderboard competitor's solutions much but at least my solutions (ranked ~20 today) are almost always completely vanilla Python (the only exception is networkx for the occasional graph problem but even that isn't really that much of a speedup if you know the common graph algorithms) and always self-contained.
-
-🎄- 2021 Day 18 Solutions -🎄-
Interesting approach. I guess mine could be considered a bit nicer, doing it recursively and returning the number to add to the left or right.
-
[2021 Day 15 (Part B)] [Golang] Pretty Organic, If You Ask Me.
My priority Q/heap Dijkstra in Python runs just fine. I don't remember and can't check rn if it was instant or took a second but it definitely wasn't longer than that.
What are some alternatives?
Parboiled2 - A macro-based PEG parser generator for Scala 2.10+
advent-of-code-2020 - :christmas_tree: My Advent of Code solutions in Rust. http://adventofcode.com/2020
Scala Parser Combinators - simple combinator-based parsing for Scala. formerly part of the Scala standard library, now a separate community-maintained module
advent_of_code_2021_v2
atto - friendly little parsers
advent-of-code
Scopt - command line options parsing for Scala
adventofcode - Advent of Code challenge solutions
Kaitai Struct - Kaitai Struct: declarative language to generate binary data parsers in C++ / C# / Go / Java / JavaScript / Lua / Nim / Perl / PHP / Python / Ruby
AOC2021-in-Fortran - Advent of Code 2021 solutions in Fortran
decline - A composable command-line parser for Scala.
adventofcode - :christmas_tree: Advent of Code (2015-2023) in C#