Protohackers 2022/2023

If anyone wants to socialize & do https://protohackers.com, let me know!

I’ve been using @talex’s eio on ocaml 5, and it’s been really nice.

My solutions live @ GitHub - cdaringe/protohacks

Aside, someone has been doing great work on ci.ocamllabs.io–look at this lovely new CI UI.

7 Likes

That UI does look sooo clean

I still wonder which CI UI will be the first to actually try to immediately show me the end of the logs, where errors and results are usually located, rather than force me to scroll for pages to get there.

ya, good point. on failure, it would be nice to:

  • on the overview page failure card, have a tail of the last 4 lines in the html title/tooltip (if available)
  • on click into the failed step, autoscroll to the bottom

Thanks for the suggestions. @maiste @novemberkilo and I are working on the redesigned UI.
Our plans for now is to finish with the styling on all pages and enable the previous functionality plus better build history and status. We expect that will happen gradually over the rest of this year.
If you have any feature requests please get in contact or open an issue Issues · ocurrent/ocaml-ci · GitHub

2 Likes

FWIW Gitlab’s CI does that (random example from data-encoding).

1 Like

Challenge 4 - Unusual Database Program

Challenge 4 was so simple, it’s nearly unworthy of discussion. Hopefully we get a juicy protocol to implement soon :smile: protohacks/unusual_db.ml at main · cdaringe/protohacks · GitHub.

actually, my msg parser is pretty nasty. maybe someone has a nice parser combinator strategy they’d use? to-be-improved: protohacks/unusual_db.ml at main · cdaringe/protohacks · GitHub. i partition the Seq of chars into (key: char list, value: char list) form, but they key and values chars are reversed, for which i need to reverse them before reconstructing them as strings. There are surely much better ways of doing this.

1 Like

This week’s proxy exercise was a bit trickier. I realized I wasn’t terminating connections correctly, and I hit a snag where I was proxying lines at EOF that were not explicitly ‘\n’ delimited.

I see @Lortex did the challenge too (2nd place, :smile:), and hit the same snag. I may have adapted some of his ideas from my first solution into my final solution. Here’s my final.