We all know and love (!) the leaderboard, but how about a different method?

One can solve a problem with a simple, naive method resulting in a short program and long runtime, or put in lots of explicit optimizations for more code and shorter runtime. (Or if you’re really good, a short, fast program!)

I propose the line-second.

Take the number of lines in your program (eg, 42 lines) and the runtime (eg 0.096 seconds). Multiply these together to get a score of 4.032 line-seconds.

A smaller score is a shorter, faster program.

Similarly, (for a particular solver), a larger score is a “harder” problem.

  • exocortex
    link
    fedilink
    arrow-up
    6
    ·
    edit-2
    11 months ago
    1. 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.

    2. 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.

    3. The final metric could be: [minified filesize] * [code execution time] * [problem solving time].

  • hades@lemm.ee
    link
    fedilink
    arrow-up
    5
    ·
    11 months ago

    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       |
    +-----+-----------+-------+---------------+
    
  • CameronDev@programming.devM
    link
    fedilink
    arrow-up
    4
    ·
    11 months ago

    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

  • HeckGazer@programming.dev
    link
    fedilink
    arrow-up
    4
    ·
    11 months ago

    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

    • Leo Uino@lemmy.sdf.orgOP
      link
      fedilink
      arrow-up
      2
      ·
      11 months ago

      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.

  • Ategon@programming.devM
    link
    fedilink
    arrow-up
    3
    ·
    11 months ago

    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

    • Leo Uino@lemmy.sdf.orgOP
      link
      fedilink
      arrow-up
      1
      ·
      11 months ago

      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!)