-
I think a more consistent approach would he to not count lines, but filesizes after the code has been minimized with a specific minimizer. I could write everything in one line in many languages, so lines isn't very clever.
-
The code has to be compiled and run on a specific architecture and with specific test input (we don't know if the AoC-example-data is always the same in size or resulting computanional complexity.
-
The final metric could be: [minified filesize] * [code execution time] * [problem solving time].
Advent Of Code
An unofficial home for the advent of code community on programming.dev!
Advent of Code is an annual Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like.
AoC 2024
Solution Threads
M | T | W | T | F | S | S |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 18 | 20 | 21 | 22 |
23 | 24 | 25 |
Rules/Guidelines
- Follow the programming.dev instance rules
- Keep all content related to advent of code in some way
- If what youre posting relates to a day, put in brackets the year and then day number in front of the post title (e.g. [2024 Day 10])
- When an event is running, keep solutions in the solution megathread to avoid the community getting spammed with posts
Relevant Communities
Relevant Links
Credits
Icon base by Lorc under CC BY 3.0 with modifications to add a gradient
console.log('Hello World')
Lines of code can be arbitrarily reduced, and seconds to solve depends to a large extent on how good my hardware is. So both metrics are useless, and multiplying them makes a useless-squared metric.
I love it!
Here are my stats for the solutions so far (with no optimisation beyond the initial solution):
+-----+-----------+-------+---------------+
| Day | Time (s) | Lines | line-seconds |
+-----+-----------+-------+---------------+
| 1 | 0.003 | 35 | 0.098 |
| 2 | 0.001 | 47 | 0.042 |
| 3 | 0.006 | 60 | 0.348 |
| 4 | 0.003 | 41 | 0.115 |
| 5 | 0.077 | 74 | 5.708 |
| 6 | 0.000 | 45 | 0.001 |
| 7 | 0.005 | 87 | 0.395 |
| 8 | 10.175 | 60 | 610.476 |
| 9 | 0.004 | 31 | 0.128 |
| 10 | 0.084 | 103 | 8.634 |
| 11 | 0.240 | 49 | 11.771 |
| 12 | 2.448 | 93 | 227.633 |
| 13 | 0.009 | 83 | 0.707 |
+-----+-----------+-------+---------------+
Some of the challenges feasably could be solved with a pen and paper amd a keen eye, giving a line count of 0.
#nocode :D
Another wrinkle is how do you count the lines? I've done several of this year's AoC in "one line" of JavaScript because you can just chain split().map().reduce().filter() etc. together indefinitely. Some languages like JS or python can do so much in one line
I probably should have made it clearer this is a somewhat tongue-in-cheek proposal :)
You're quite right - pretty much any program can be golfed into a single line.
The issue with that and reason why AoC doesnt use that for the leaderboard is they dont have access to the code people write, just the final result
Adding that as an option would mean having something that takes into account differences in base runtimes of code for different languages (e.g. scripting languages taking longer) so that its feasible to code it in anything, and having the ability to execute many different kinds of code which can be a pain to set up (and would mean youre then running arbitrary code unless you sandbox it)
I used that as the way to rank people in !challenges@programming.dev when I was running that and its been on hiatus for awhile due to the effort needed to run it since I havent had time due to building up things in the instance such as !pangora@programming.dev
It could work if self reported but then its easy to cheat
Oh sure, it's only for fun - I was thinking of it more of a way to compare my own solutions to different problems.
I didn't notice there was a challenges community! That's awesome. (Maybe a more casual honor-based version where anybody can submit puzzles would be easier? Creating puzzles sounds like fun!)
Yeah ill be editing it and trying to relaunch it in the new year with a different format