15
votes
\$\begingroup\$

Final phase

You have chosen the categories and the nominees for CGCC's annual "Best of". Now it is time to pick the winners!

Each of the 22 categories is represented by an answer to this question, and each of these answers contains all nominations by the members of our community.

Voting mechanism

Each nominee has been added as a comment to its category's answer. In each category, the nominee whose comment has the highest number of votes by Feb 18 6:00 UTC will be declared the winner of that category.

Further details

  • Starting now, please do not edit the answers.

  • Please do not add comments to the answers.

  • Votes on the question and on answers are meaningless; only votes on comments count.

  • Feel free to vote for multiple nominees of the same category, including your own posts.

\$\endgroup\$
3
  • 1
    \$\begingroup\$ How long will the voting last? \$\endgroup\$
    – alephalpha
    Feb 4 at 15:53
  • 1
    \$\begingroup\$ @alephalpha Sticking with the same as previous years, 2 weeks - so voting closes on the 18th, at ~6:00 UTC (when hyper added the comments to vote on) \$\endgroup\$ Feb 4 at 16:43
  • 1
    \$\begingroup\$ As of 18th 6:00 UTC, the list of winners is here. \$\endgroup\$
    – Bubbler
    Feb 18 at 6:11

22 Answers 22

9
votes
\$\begingroup\$

Most complex answer

For the answer so complex that few people or even no people can understand, yet it works beautifully while remaining golfed.

These answers could be creative and long (but are not generated or just repeat the same code)

The logic inside the code can't be understood by us mortals, but it works anyway.

Geiger Counter in Klein XXX by Wheat Wizard

(self nomination)

JoKing originally proposed a Klein XXX Geiger counter back in 2018. I tried it several times since each time getting a little farther but eventually giving up because it was just too complicated.

A Geiger counter is hard since you need to account for any character being deleted. The larger the code grows the more you need to account for. But the real issue here is that there are on top 12 different Klein topolgies to account for, which means you can lose track of the instruction pointer in the middle of execution. The deletions of newlines were especially tricky since they completely change the shape of the program which has to be accounted for in different ways for every topology.

Last year, 3 years after JoKing issued the initial challenge I finally broke through and produced a working answer. I'm not sure it's really even possible to have a true understanding of how this answer works.

ais253's answer to High-throughput Fizz Buzz

(nominated by pxeger)

This is almost the obvious choice for this year: garnering 390 upvotes (at the time of writing, January 2022), and going viral on HackerNews (twice), ais253 himself described this post as harder than his Master's thesis. Some of the comments on HackerNews put it best:

Thanks for my daily dose of software engineer imposter syndrome.

Being able to write a function limited mostly by the l2 cache size and able to realize that is rad

At 1364 lines of x86 Assembly + cpp, this answer produces 56 GiB/s of FizzBuzz and is apparently bottle-necked almost entirely by writing its output. The code is so complex that its explanation had to be golfed to fit in StackExchange's 65,536 byte size limit for answers!

Need I say more?

Deadcode's Match strings whose length is a fourth power in .NET Regex

From Deadcode's answer:

Not only does this outgolf primo's amazing answer, but it runs at very close to exactly the same speed under .NET's regex engine.

With the help of some tricks from .NET Regex and countless iterations posted on the thread, Deadcode managed to beat primo's answer on the question, which had been standing as the shortest for 7 years.

Totally Cubular by tjjfvi

Totally Cubular was a question that was famously not answered for 4 years, until it was answered this year with a full Github repository with a solver created by tjjfvi. There is a fully specced solving method detailed on the answer, and I think you find it as cool as I did, because I cannot do justice to how well designed it is.

\$\endgroup\$
4
7
votes
\$\begingroup\$

Most improved answer

This category is to reward the continued work users put into answers long after they have been posted. After the FGITW effect has dissipated there stops being so much incentive to work on an old answer, but some users put in the effort and really make it shine. The ideal answer here would be one that demonstrates a significant commitment to improvement regardless of the quality of the initial answer. This could be improving the score, or the explanation or both.

Answers in this category don't have to have been initially posted in 2021 but the improvements have to have been made over the course of the year.

"Hello World!" in Lost by Wheat Wizard

Self-nomination

This answer was originally posted in 2017 it was golfed a bit by Martin Ender at first but basically sat unimproved for 3 years. It seemed that this was probably optimal for Lost. 45 bytes seemed like as good as it was going to get.

However in 2021 some new techniques in Lost golf were invented and it became apparent that this might not be so optimal. With some fiddling it was brought down 2 bytes to 43. And then the door was open. How far could it be brought down? JoKing came up with a brilliantly complex 38 byte solution and further effort carefully brought it down to 37. Several more 37s were found and it seemed like there might be a possibility of a 36. And after a few more weeks of work but a 36 was finally discovered putting it where it is today.

The journey from the somewhat straightforward program an incomprehensible square of symbols, has really been a wonderful collaboration. It's amazing that 4 years on this very simple task in Lost is still producing new and interesting golfing opportunities.

Placing circles along a square spiral by emanresu A

Self-nomination

What can I say? This answer went from 417 bytes to 194 through a series of golfs over the last few months. Just now, I found a way to golf off 12 bytes, and I feel like there's still room for improvement.

1, 2, Fizz, 4, Buzz by lyxal

Self nomination

Whether you love it or hate it, this answer has had significant effort placed into getting its byte count down from 19 to 11. And while that may not seem like much at first glance, it's quite significant given that Fizzbuzz has existed for many years, and yet this was the first answer to get 2 bytes away from single-digit scores.

The journey of this answer starts in August 2020. The initial score was 19 bytes (Ĥɾƛ3∻kf*n5∻kb*+n⟇;), and had a lot of icky references to the context variable (a variable that allows you to retrieve the argument of a lambda/function/for-loop). This was the best that could be done at the time, because Vyxal was only at version 0.3.0.

Then, in January 2021, the Arn fizzbuzz was posted, coming in at 18 bytes. Now during the later months of 2020, Vyxal had grown enough so that I was able to get 18 bytes too, using the original fizzbuzz I had envisioned during language design. But I wasn't about to be happy sharing tied first-place for shortest non-built-in FizzBuzz; a somewhat obvious golf got the answer down to 17 bytes (Ĥƛ3œı⇿⌊*n5œıₛÔ*+⟇).

Then, in March 2021, after a while of pondering about how to make the FizzBuzz shorter within existing constructs (as in, getting a shorter fizzbuzz was something I had been planning on and off since January - I used many pages of paper for handwritten experiments as to how best remove bytes), I had the brilliant idea of placing the divisibility of each number by 3 and 5 into a list and using vectorised multiplication of the list of ["Fizz", "Buzz"] instead of doing each divisibility test individually. Doing so managed to shave another 3 bytes off the answer to get 14 bytes (Ĥƛ35fœkfkb‿*∑⟇). At this stage, this answer was just trailing behind the second-place built-in answer in Valyrio.

I was pretty happy with myself - 14 bytes was well below the existing Jelly answer that was 20 bytes long, and I thought it would be a while before I had to consider any competition. I was wrong. In April 2021, there was another golfing language (Ash, by Redwolf Programs) being developed that boasted a 12-byte FizzBuzz - 2 bytes shorter than my current record of 14 bytes. Unfortunately, my planning only managed to find a 14 byte limit - I couldn't find any shorter programs with the built-in set of Vyxal 1.x. In order to keep my position as #1 non-built-in fizzbuzz, I'd need to do something big - rewrite the entire language.

Doing so allowed me to add a whole bunch of useful features to Vyxal (such as parallel apply, better constant glyphs, divisibility checks, etc) that would aid my quest to not come up 2 bytes too long. After a few weeks of language designing and implementation, I had an 11 byte solution: ₁ƛ₍₃₅kF½*∑∴. This was guaranteed to be shorter than the potential Ash fizzbuzz, and ended up beating the aforementioned Valyrio answer, placing it second on the entire leaderboard.

The improvements made to get it from 14 bytes to 11 bytes are subtle, but effective: 35fœ turned into ₍₃₅ and kfkb‿ turned into kF½.

And during this time, the explanations of each answer were added, and at one stage in 2021, I had included a detailed description of how to derive the 18 byte fizzbuzz starting from basics.

\$\endgroup\$
3
6
votes
\$\begingroup\$

Off the Charts

For an answer that has been proven to work correctly but can't realistically be run, for example because it would take an enourmous amount of time to execute.

22 Vyxal answers to Print X Without X by lyxal, Aaroneous Miller and emanresu A

Partial self-nomination by Aaroneous Miller

This chain began with emanresu A and Lyxal trading cops and cracks, with cracks initially being tens of thousands, and later hundreds of thousands of bytes. These programs are already somewhat unwieldy, but they were nothing compared to what was coming.

For emanresu A's tenth cop, Lyxal's crack was upwards of 2 MB. After that, Lyxal took over posting the cops, and I joined the fun. We went back and forth a couple more times, and emanresu A posted a crack that exponentially grew in size to a total of 9942694705621871183448638796 bytes, or 9,942 Yottabytes.

The next crack seemed like things would slow down, with a relatively short 2.5 MB, but it was followed by 29 Exabytes. After that, there were several more answers, whose bytecounts jumped around depending on whether or not the solution was exponential. There were a couple more answers in the Exabyte range, one unintentionally trivial answer, one unintentionally overcomplicated answer, a few nearly identical answers, and a Spamton joke, but every single one was on the scale of anywhere from millions of bytes to trillions of bytes, until I finally managed to find Lyxal's intended solution with a 5.2 Exabyte answer.

All in all, none of the answers in the chain could be reasonably ran, but some were so large that even samples of the code could barely be ran, and just creating the solutions in the first place became difficult, with the biggest answer in the chain totaling over 1,500,000,000 times bigger than the internet.

Almost any answer by caird coinheringaahing

This is what I think this category was looking for, rather than just a really long answer. Caird's Jelly answers have quite the variety of horrifyingly fast growing time complexities:

Here are a couple of them graphed:

Desmos

And if you think they don't look too bad at that zoom:

Desmos

(Red is \$O({n^2}!)\$, blue is \$O(9^{n^2})\$, green is \$O(2^{n!})\$)

Largest SKI output in less than 200 combinators by Bubbler

Self-nomination

\$ \approx f_{\omega+1}(3\uparrow\uparrow\uparrow\uparrow3) \$ - The largest number I could create in an answer last year (and the largest number of mine across all years too). I had to pick this one to beat the other nominations in terms of the magnitude of the numbers involved. I didn't even know how to express the number until nph helped by invoking the fast-growing hierarchy.

\$\endgroup\$
3
5
votes
\$\begingroup\$

Most helpful commenter

Repost of 2020 2018

One of the things that stands out about this community is that although it's highly competitive, there is nearly always someone on hand to offer advice both on improving challenges and improving answer scores. It's part of what made this site seem so welcoming to me.

In recognition of this, nominees should be people who have helped others improve and made them feel welcome, whether by direct comments on challenges and answers, or in comments in chat.

xnor for golfs on Haskell answers

Nominated by Wheat Wizard

Xnor is very skilled at Haskell golfing, but only posted a handful of Haskell answers this year. Instead xnor left quite a few comments suggesting golfs on other's Haskell answers.

This is just a way to appreciate xnor's brilliant contributions to Haskell golfing.

att for golfs on Mathematica answers

Nominated by alephalpha

Att is a really magical Mathematica golfer, who knows every dark corner of this language, and enthusiastically share these magics through comments. This is how I usually golf a Mathematica answer:

  1. Find a solution.
  2. Try every trick that I can think of, until I cannot golf a single byte.
  3. Post the answer.
  4. See a comment.
  5. "-10 bytes thanks to @att."

Lyxal and Aaroneous Miller for golfs on Vyxal answers

Nominated by emanresu A

Both of these two are very skilled at Vyxal golfing, sometimes finding very clever tricks to save a few bytes, as you can tell by these searches.

I can't decide who to nominate here, so I'm nominating both of them.

\$\endgroup\$
4
  • 13
    \$\begingroup\$ Upvote this comment to vote for xnor for golfs on Haskell answers. \$\endgroup\$
    – hyper-neutrino Mod
    Feb 4 at 6:02
  • 7
    \$\begingroup\$ Upvote this comment to vote for att for golfs on Mathematica answers. \$\endgroup\$
    – hyper-neutrino Mod
    Feb 4 at 6:03
  • 6
    \$\begingroup\$ Upvote this comment to vote for lyxal for golfs on Vyxal answers. \$\endgroup\$
    – hyper-neutrino Mod
    Feb 4 at 6:03
  • 8
    \$\begingroup\$ Upvote this comment to vote for Aaroneus Miller for golfs on Vyxal answers. \$\endgroup\$
    – hyper-neutrino Mod
    Feb 4 at 6:03
5
votes
\$\begingroup\$

Wrong tool for the job

Repost from 2018

This category is for an answers that use the worst possible language to accomplish a task, while still making an effort to optimize the score. For example, writing a non-trivial program while using an extremely minimalist language like 7, or an inconvenient language like lost, or even a normal language that's missing some crucial capability like internet connectivity or image processing.

Answers for this category should consider both the difficulty of the task and the unsuitable-ness of the language.

tjjfvi's 25 answers in AOCG2021 in TypeScript Types

Nomination by alephalpha

It's well-known that TypeScript's type system is Turing complete, but writing nontrivial programs in TypeScript Types is not easy. tjjfvi solved all 25 challenges in AOCG2021 using TypeScript Types, which includes writing an interpreter and solving word problems of Hyperbolic Coxeter groups.

user197974's Gravity Simulator in Marbelous

Marbelous is a famous turing incomplete 2d language which is just unsuitable for most simple tasks. The author of this answer has gone so far as to write an entire interpreter for Marbelous themselves, along with simulating a rotating tape within its constraints to make a truly impressive answer.

caird coinheringaahing's parsing HTML with Jelly

Self-nomination

What's a worse idea than parsing HTML with regex? Parsing HTML with Jelly

Jelly almost famously has very little string handling capacity, is awful at parsing challenges and, being a golfing language, isn't exactly optimised for web-based ones either. Which is why it's very surprising that Jelly is the winning answer here, in a challenge about parsing the HTML content of a webpage. I think the quote from my answer just about sums it up nicely how bad Jelly is for this challenge.

Aaroneous Miller's's Whitespace interpreter in Vim

Nominated by DLosc

Vim is a text editor. Sure, it's got tools that make it far more capable than your average text editor, but still--it's a text editor. When you think Vim golf, you think of transforming some input into some output, usually string manipulation, maybe a little math.

Aaroneous Miller used Vim to write an interpreter for a programming language. (Actually, this happened twice (!), but the BF interpreter was already nominated for another category, so I'm nominating the Whitespace interpreter here.) The amount of patience required to implement a language with control flow, a stack and a heap, and two dozen commands in Vim is amazing.

\$\endgroup\$
4
4
votes
\$\begingroup\$

Best mathematical insight

Repost of 2020, 2019, 2018.

On this site we often see answers in languages specifically designed for short code, or designed to be fast. Sometimes, a nice golfing trick or speed-up technique surprises us with its ingenuity, beyond the standard use of that language.

And occasionally an answer shows up that uses an unexpected approach to greatly simplify the problem, and makes us wonder how the author could ever think of that. This usually involves some far-from-obvious mathematical equivalence, or a particularly simple approach to the problem that was not evident at all (once revealed, other answers often follow the same approach).

This category is for the answer with the best mathematical insight or unexpected approach that led to greatly simplifying the problem, in any challenge type (code golf, fastest code, or others). The insight should have led to a significant improvement according to the challenge's metric (code length, run time, or whatever applicable).

Cumulative summation of repeated descending powers of ten (nominated by Adám)

The algorithm pioneered in Lynn's Jelly answer for Converge to a number was then copied by a handful of others.

Implement Ash's float division by Delfad0r

(nominated by Redwolf Programs)

Although many of the answers to this question of mine had unique and interesting golfs, Delfad0r's Haskell answer (the one I'm nominating) ingeniously made use of tanh, one of the rarely used hyperbolic trig functions. It's the exact sort of trick that takes what makes code golf so great to the extreme; using an obscure built-in for something it was never designed for, just to save a couple bytes.

Anders Kaseorg's answer to AoCG2021 Day 22: Hyperbolic rescue (nominated by alephalpha)

Reduce a path on a order-4 hexagonal tiling on a hyperbolic space. The challenge itself is very mathematical, even seems impossible to solve.

Anders Kaseorg first translated a path into a sequence of symmetries, and then transformed it to a concise set of string rewriting rules. Now the challenge become easy to understand and solve.

Robin Ryder's answer to Demonstrate some advanced abstract algebra

Nominated by caird coinheringaahing

With some refinement from xnor, Robin provides a very clean and elegant proof that the only anti-distributive (\$a * (b + c) = -(a * b + a * c)\$) surjection on \$\mathbb Z\$ is when \$a * b = 0\$ for all \$a, b\$. Thus, proving my challenge to be impossible, which had been the subject of multiple discussions in The Nineteenth Byte leading up to my posting of the challenge.

\$\endgroup\$
4
4
votes
\$\begingroup\$

The most unexpected outcome

An answer that you didn’t expect to work, or do something else, but unexpectedly did some weird behavior and made the answer valid.

This could involve some interpreter bug, or obscure feature that wasn’t documented nor known by many people.

Print instructions for typing \` in chat by DLosc

Self-nomination

At first, I thought this challenge was going to be a straightforward regex substitution problem in Pip. But as I started writing it, I realized that a regex was the solution. It turns out that the way a Pip regex is formatted in its string representation (escape all backticks and then wrap the whole thing in backticks) is exactly what the challenge asked for. This despite the fact that some of the outputs (such as `\\`` from the titular \`) are not even valid regex literals in Pip. I'm not sure whether this is a bug or a feature, but it was certainly convenient.

Lolololololololololololol by Bubbler

Self-nomination

Hexagony golfing language confirmed

Solving it in Hexagony at 6 bytes is easy:

 L ;
o ; l
 ; .

but did you imagine that Hexagony can print Lololol... in 5 bytes? Because I totally didn't. And I totally didn't expect my six printer in 6 bytes to trivially translate to this one either. But it did. (And it is currently winning the challenge, tying with Keg and winning against everything else - Jelly, 05AB1E, Stax, Husk, you name it.)

Sort a list and write some English! by emanresu A

Self-nomination

While writing this, I wanted to start my letter with Dear Boss,. But , prints the top of stack and I couldn't have extraneous output, so I used a homoglyph comma. then, I realised Dear Boss, was the answer. Dear Bo leaves the list unchanged, ss sorts it twice and , outputs, then all I needed to do was terminate the program with a Q and... ugh... do some creative writing.

Unlolify a lolified message by emanresuA

Nomination by @lyxal

Here's me, and I've FGITW'd a question (as you do) with Vyxal. I gave an 18 byte answer and thought to myself "I'm happy with this, it's 18 bytes, and will probably lose to Jelly by 3 or 4 bytes but that's okay".

Turns out I was wrong.

Very wrong.

So wrong that I basically got ratio'd on a code golf answer in 2021.

How? EmanresuA went and posted a 3 byte answer that completely blew my pathetic 18 byter out of the water. To quote myself:

H.......... How'd you absolutely destroy me by 15 bytes?!?!?

And then to make things worse for me, emanresuA came and golfed my answer by almost half, putting my original 18 byte answer to all sorts of shame. In summary, things were completely and utterly frick for me but wonderful for EmanresuA kekw.

Needless to say, I wasn't expecting any of that to happen, hence why I think this should be chosen as the winner of this category.

(There's also the fact that 17 people agreed that this should be nominated for a best-of category when Adám suggested to do so on a comment on the answer: IIRC, there is/was a "best of" category for outgolfing the creator of a language. This certainly qualifies." - since there isn't such a category, I thought it appropriate to nominate it here)

\$\endgroup\$
4
4
votes
\$\begingroup\$

Best Tip

Repost from 2020

For the best answer to a question tagged with , because this site isn't just about competing with one another, but also about helping each other improve our golfing skills

The shortest infinite for comprehension (self-nomination by pxeger)

While answering Write an infinitely nested generator comprehension, I discovered a way to shorten something you might think to be totally optimal, which felt like a crazy new discovery to make.

s isn't longest first, but is by Unrelated String

In Brachylog, s is the obvious builtin for "get all contiguous sublists." The trouble is that you often want to generate the longest sublist first, and s doesn't do that: it starts with all sublists that include the first element. However, Unrelated String realized that , "get all sublists, not necessarily contiguous," does generate the longest sublists first, and furthermore that the non-contiguous results can be easily removed by combining with s. This tip is non-obvious and really useful; I've used it twice already.

Use and for certain length checks by emanresuA

Nomination by @lyxal

I put a meme in my nomination kekw

This tip has been helpful many times in shaving bytes off my answers. Plus, it utilises some of the lesser-known overloads of things like how will check to see if a string is of length 1.

Compress your strings and numbers by lyxal

Self nomination

String/number compression is an important part of any modern SBCS golfing language, and Vyxal is no different. This tip gives a comprehensive explanation of the compression utilities available to vyxalers, and it explains the concept of things like "String Compression Codes" and the dictionary of words Vyxal uses.

\$\endgroup\$
4
4
votes
\$\begingroup\$

Wild card

Repost of 2020.

For a deserving challenge, answer, or user that isn't a good fit for any of the other categories.

quintopia's Befunge-93 in Befunge-93

Interpreting Befunge 93 is already not very easy, but doing it within Befunge 93 is a behemoth in itself. This uses the existing features of befunge to simulate the program within its own playing field!

Jo King's quantum quine

Nominated by emanresu A

When I wrote this question, I didn't believe it was possible to create a program with a score of 0. It's hard to make a program that functions when any character is removed, and even harder to make a quine that stays a quine when any character is removed, let alone one that behaves in such a specific way.

Jo King's answer uses Backhand, a language which skips every few characters to make a bit easier, and even then it's still a quite complex answer.

m90's answer to Final tribute to John Conway: FRACTRAN self-interpreter

Nominated by Dingus

The previous best solution known for this problem, at 48 fractions, had stood since 2017. It was blown out of the water by @m90's 30-fraction solution, which was accompanied by an excellent explanation.

tjjfvi's answer to Complement a POSIX Extended Regular Expression

Nominated by Dingus

This challenge had gone without an answer for over 7 years, and a quick survey of the comments reveals just how difficult it was perceived to be: 'It's possible, but crazy tedious ... slightly harder than writing a complete RE engine!', 'Supporting escaped meta-characters is honestly going to be a challenge in itself', 'The code I have so far is basically 30KB'. And indeed, @tjjfvi's well-explained code is a complex beast, transforming regex → tree → DFA → regex, all in less than 1.6 kB! This answer could easily have been nominated for Most Complex Answer or Best Explanation, but @tjjfvi already has another worthy contender in those categories!

\$\endgroup\$
4
4
votes
\$\begingroup\$

Best Explanation

Repost from 2020, 2019, 2018, 2017, 2016

This category is for the answer with the best explanation accompanying it. Ideally, the winner will be an answer with a very detailed explanation that is accessible to anyone, regardless of the amount of relevant knowledge already possessed.

Animate finding the middle by Jonah

Nominated by DLosc

Jonah's solution takes a sideways approach to the problem (literally), and Jonah went to the trouble of drawing up a couple of diagrams to illustrate the thought process. The explanation also does a good job of breaking the solution down into its constituent parts, with a worked example, so that even someone who doesn't know J can understand what the program does.

Totally Cubular by tjjfvi

Self-Nomination

The algorithm for solving the puzzle is fully described in the explanation. It's long, due to the complexity of the challenge, but it was written to be approachable by anyone, even if they have never touched a twisty puzzle. Thus, it explains not just the algorithm, but also the fundamental concepts and thought process behind solving the challenge. Additionally, it includes numerous interactive illustrations (example) and a custom playground which was created solely for the CGCC explanation.

Delfad0r's answer to Sticky polyhexes

Nominated by Dingus

A picture is worth a thousand words and this answer incorporates some excellent visual aids to help explain cube co-ordinates. The ideas behind the code are broken down clearly in a thorough, yet entertaining, way. This is a well written, high effort answer that @Delfad0r has every right to be proud of.

Deadcode's answer to Division and remainder

Nominated by Radvylf Programs

This was a Regex answer to a math-related problem, so the answer's basically guaranteed to be interesting. With more than 20 KB of information about how the answer and some golfed variants of it work, more than 400 MathJax delimiters, and dozens of useful links, this answer provides far more in-depth details on how the answer works than would ever be expected for a 57 byte submission.

\$\endgroup\$
4
4
votes
\$\begingroup\$

Most involvement in an answer/answers

Repost of 2020

For an answer or multiple answers where multiple people were involved. This could be multiple people helping out a user on a single answer, or a back-and-forth between two or more answers trying to outgolf each other.

69 answers to Print X Without X by lyxal, Aaroneous Miller and emanresu A

Partial self-nomination by emanresu A & Lyxal

Note: Answer count was honestly unintentional.

This began with me posting cops in Javastack (a language of mine) and Lyxal cracking them. We got to 13 before I gave up, then a few weeks later we began again in Vyxal.

I began posting these, and got to 10 before Lyxal and I decided to swap. At this point, the cracks were hundreds of thousands of bytes. Aaroneous Miller jumped in and solved Lyxal's first cop, and ended up solving most of Lyxal's.

For the first few of Lyxal's, the answers could actually be run, until I found a crack where the cost to get a single character exponentially grew. From this point on, the programs became completely theoretical - over the course of several weeks (September 25 to October 16), the byte counts exceeded even the size of the internet.

I (lyxal) personally know that when constructing the cop answers, figuring out what to ban next and improving my intended solution was on my mind quite frequently - I'd be thinking about it while shopping, while taking showers and more. And I know that AaroneousMiller was also pretty constant in his dedication/determination to crack the cops - there was much discussion in the Vyxal chat room on different potential solutions/strategies.

It ended with Aaroneous exactly finding Lyxal's intended answer.

I recommend reading the robbers' thread as it has all the explanations.

In 2020, Lyxal and HighlyRadioactive had 16 answers total. In 2021, the three of us had 69 total answers. We'll see what happens this year, and I apologize in advance to Wheat Wizard's inbox.

JS answers to Constructing Solar Panels from Squares (Redwolf Programs, Arnauld)

(Partial) self-nomination by Redwolf Programs

This started with a FGITW by Redwolf, which was golfed from 110 to 90 bytes. An answer was then posted by Arnauld, at 79 bytes, which seemed like it was likely to be close to optimal. However, with help from both Mayube and emanresu A, the byte count on the first answer was brought down to 81, then 73, and finally to 71, over a period of about half an hour and with some collaboration in chat.

This was the first time I'd actually discussed golfs for an answer in chat, and the community effort to bring down the byte count was a lot of fun, and also the only time I've managed to outgolf Arnauld. :p

Ian H.'s answer to Write a C++ demangler

Nominated by Dingus

A series of 11 golfs in comments by emanresu A, FZs, Arnauld, and a deleted user shaved 54 bytes off the original 287 byte solution. This answer well embodies the collaborative spirit of CGCC.

\$\endgroup\$
3
4
votes
\$\begingroup\$

Rookie of the Year - Challenges

Repost of 2020, 2019, 2018.

For the best challenge written by someone who has not written a challenge prior to 2021

emanresu A for pretty much all their questions

(nominated by pxeger)

Being a new user in 2021 and posting consistently high-quality, interesting, and well-received challenges.

I'd like to specifically point out Implement Minceraft, which although not actually their first challenge, was well-received and hit the HNQ jackpot. It was a simple challenge to implement in the first place, but had various interesting approaches for golfing thanks to the pattern between the two strings, which I think is what made it particularly interesting. It also inspired some interesting new techniques for producing randomness.

xkcd 2385 KoTH (Final Exam) by EnderShadow8

Nominated by Dingus

It's pretty rare for a user's first challenge to be a KoTH and rarer still for it to succeed like this one did (91 upvotes and 63 answers at the time of writing). The relatively simple premise invited a large number of submissions, which ran the gamut from returning a constant to implementing mathematically informed prediction strategies.

Nth Fizzbuzz Number by Bgil Midol

(self-nomination)

This is fizzbuzz, but the challenge is to get the nth fizz, the nth buzz, and so on. The answers contain mathematical insight, and hyper's answer at first used a "cheaty" solution. The answer, when made not cheaty, was actually shorter than the cheaty solution. The algorithmic thinking is an enjoyable process are all golfers.

Cooperative Counting by jumbot

Nominated by DLosc

This King of the Hill challenge provides an interesting twist on Iterated Prisoner's Dilemma, striking a great balance between simplicity and depth of strategy. King of the Hill is a hard challenge type to get right, so it's impressive to see a KotH of this quality from a user who's only posted one question and one answer so far.

\$\endgroup\$
4
3
votes
\$\begingroup\$

Rookie of the Year - Answers

Repost from 2020 and other years.

For the best answer written by a new user in 2021. This doesn't have to be a user who created their account in 2021 - rather, this is for any answer posted by a user in 2021 where that answer was that user's first answer on the site.

SEDE query modified from the 2020 one

Counting universal n-ary logic gates by AnttiP

Nomination by Bubbler

This is a math-heavy achievement but it's not purely mathematical nor does it improve the score for the winning criterion, so I decided to nominate this in this category rather than Best Mathematical Insight.

The attempt to count universal logic gates was done for only up to n=3 (Craig Gidney's result in 2013 being the only one I could find). AnttiP showed how to optimize further to achieve the result for n=4, using three new mathematical concepts and some programming-wise optimization techniques. By finding the value for n=4, the sequence also became eligible to be submitted to the OEIS. (It is now A350418.) This result truly deserves attention outside Code Golf SE.

Interpret brainf*** by Aaroneous Miller

As part of our new site blog, we've been nominated underappreciated answers. For 3 of the 4 blog posts, one of Aaroneous Miller's Vim answers has been listed, and his brinfuck interpreter in Vim is perhaps the most impressive of those answers.

Not only is this answer incredibly impressive normally, but it was also golfed by around 25%, dropping from 809 bytes to 580 bytes, to make it an even more impressive feat.

\$\endgroup\$
2
3
votes
\$\begingroup\$

Best non- challenge

Repost from 2020

Best challenge with a winning criteria other than .

While is our bread and butter, we have some very interesting others with , , , (some) s, etc.

Concatenated halting problem: no + no + ... = yes by Bubbler

Self-nomination

I think this one was fairly original (it isn't a variation of any previous challenge, at least to my knowledge), and attracted many creative answers in both mainstream languages and esolangs. It's like each answer has its own way to create halting programs with non-halting program segments.

As a small bonus, some users came up with very fitting and funny link texts for code examples:

\$\endgroup\$
1
3
votes
\$\begingroup\$

Breaking The Mold (Most Original Challenge)

Reposted from 2018

It's really easy to come up with normal and , or challenge, etc. Don't get me wrong, there's nothing wrong with these challenges. They're the meat of the challenges on our site. However, they're not the most imaginative.

This category is for a challenge that re-invents the wheel, and explores new ideas that we haven't really used on the site.

  • Maybe this challenge inspired a new tag, or category of challenges?

  • Maybe it's a with a unique and very well balanced scoring formula?

Or maybe it's even a challenge about a novel task. This category is for rewarding users who came up with interesting ideas that keep the site fresh.

Some justification for why the challenge is original is necessary with nominations - 99% of challenges posted on the site shouldn't qualify for this.

Minimally destroy CGCC in Game of Life by caird coinheringaahing

Nomination by Bubbler

The first challenge that asks to modify a given configuration in Game of Life to achieve a certain effect in the end. The idea originates from a similar challenge posted on Puzzling, but it also fits to our site in two ways: using GoL (a Turing-complete "language"), and being able to use code to search for a solution.

Build the stove controller (physically) by Bubbler

Self-nomination

This is one of the classic challenge that asks to implement a circuit that achieves some task using the fewest number of NAND gates. But this one introduces a new concept: a sequential circuit. That is, a circuit that contains some form of internal storage and, given certain kind of input, it changes its output and its internal state. In the context of circuit golf, it means that you need to juggle between different possible kinds of storage (a latch, a D flip-flop or a JK flip-flop?) and the count thereof, which have a tradeoff with the size of the input/output parts of the circuit.

Reverse Zip Bomb by Redwolf Programs

Self-nomination

This challenge was a , and a twist on the idea of a zip bomb. Rather than writing code directly, this challenge required designing a specially crafted image or other file which would be as difficult as possible to compress (which often required writing code).

\$\endgroup\$
3
3
votes
\$\begingroup\$

Best trickiest challenge

Similar to a category from 2020 (but slightly reworded to reward not purely hard, but also fun, challenges).

It should look simple and tempt you to start coding right away, but coming up with a good solution should be hard.

Infinite ordinals from a well-ordering by AnttiP

Nomination by Bubbler

This one fits in many categories (Rookie challenge, Breaking the mold (for being the first interesting challenge with partial-ordering winning criterion, which allows multiple winners at multiple levels), and possibly Best non-code-golf challenge), but I decided to nominate it here because it is also a great example of a challenge that is easy-to-participate but hard-to-win.

Due to the nature of the winning criterion of this challenge, multiple submissions can win at the same time at different "levels" or, in some sense, "categories". Lower categories (lower ordinals) are easy to participate in (construct some answer), but it is hard to win, being a red ocean of golflang wielders. Higher categories require mathematical thinking and some proper knowledge on the fast-growing hierarchy. Therefore, the challenge is naturally enjoyable to golfers at all levels, but challenging for everyone at the same time.

Drop down the numbers by Bgil Midol

This seems easy at first, (just sort every column) but you also need to handle wrapping, and duplicate locations. In some languages, to get shorter solutions, some mathematical knowledge might be used. It is also hard to win. Even in golfing languages, some algorithmic knowledge is used. The challenge is a good challenge for all, and also enjoyable.

Self-nomination

Converge to a number by emanresu A

(Paragraph coming soon.)

\$\endgroup\$
3
3
votes
\$\begingroup\$

Most significant impact via Meta

Meta is an important yet often overlooked portion of this site, where significant rules changes are decided, and the site becomes the most democratic. It allows people to present their visions of the site, and for others to show their agreement or disagreement, and contributions can be just as important - if not more - than posts on Main.

This category is to reward Meta posts that have had a non-trivial or significant impact on the site in some way, and the users who proposed them.

Should we have even even more room owners for The Nineteenth Byte?, asked by caird

(nominated by @lyxal)

If we're talking about things more important than posts on Main, then you can't go past meta posts directly impacting dealings in The Nineteenth Byte; you can't have a cohesive and functional community without a central discourse location.

This meta post prompted a Room Owner election and 4 new ROs were elected in 2021, meaning that more moderation was available for chat. In turn, TNB is more organised, able to flow with interruptions being handled quickly and with authoritative "leadership" (for lack of better phrasing) that works for everyone.

Advent of Code Golf, originally an idea by caird, largely implemented by Bubbler

(Nominated by pxeger)

In 2020, caird coinheringaahing had the idea of an "Advent of Code Golf", but decided to abandon it that year.

In 2021, it was re-proposed more formally on Meta. Bubbler swiftly took on the task, creating an event challenge sandbox and producing 22 challenge ideas for consideration over the span of only 11 days! Three challenges were also contributed by Wheat Wizard.

Several other users were also involved in posting the challenges on Bubbler's behalf on some days when he wasn't available at 00:00 UTC himself. Posting reliably at the same time for 15 days is quite an accomplishment for just one user!

A few leftovers from the planning were also posted a little after Advent finished.

I think this is the most significant impact this year because it produced 26 high-quality challenges, which are really the heart of our site, and what keeps us going. It's also very significant based on time alone: it occupied an entire month, and if it repeats in future years, will have had an even bigger (multiplied) impact.

caird said Bubbler deserves the nomination, so that's who I'm putting forward officially for this award.

Welcome to Code Golf and Coding Challenges Stack Exchange! by caird

(Self nomination)

We're very different from most other SE sites, and one of our biggest issues is that new users are often confused about how to get started here. New users often post off-topic or low quality questions, and aren't always aware of the Sandbox.

This page has detailed answers on how to get started, and what the site is about/for, and provides a more bespoke version of our help pages to help new users with answering, asking and further moderation on the site.

Having a welcome page has been suggested since 2016, but it wasn't until this year that we finally created one. And, since posting, the number of off-topic posts by new users appears to have reduced - the welcome page seems to be doing its job.

The Great Status Tag Cleanup by caird and hyper-neutrino

(Partial self-nomination by caird)

Back in May of 2021, I was messing around with SEDE and noticed that we had over 150 reports and posts with no status tag (e.g. , , etc.). Around the same time, staff members started paying more attention to newly retagged status posts - if you aren't aware, whenever a mod tags a post as , the SE staff have that post added to their tacking software. Because of this, and a suggestion I made, me and hyper decided to tackle the old and forgotten and posts on our meta.

Over the next couple of days, I compiled a list of all untagged posts with either the or tags, and me and hyper systematically went through them, retagging each as appropriate. This took a few days, and, once the dust settled, we had 4 questions left on meta that were missing a status tag. In short, we reduced the list down from over 150, to 4, and helped organise a large number of forgotten feature requests and bug reposts, some of which were later fixed/implemented.

I believe this should be split evenly between both myself and hyper - while I did a significant amount of work compiling and sorting through the list, without hyper's help, it never would've actually happened.

\$\endgroup\$
4
3
votes
\$\begingroup\$

Most Interesting King of the Hill Submission

For the best answer to a KotH challenge. Specifically, the one with the most interesting or complex strategy.

We had 14 KotHs this year, with a total of 179 answers, so it's quite likely there's some really great ones that should be recognized. I think it's especially important to recognize good answers to KotH challenges, because complicated strategies take time to write, and thus don't get as many votes from the challenge hitting the HNQs.

Rabbit by Razetime

Nominated by Redwolf Programs

This was the first bot in Bot Factory KoTH 2.0 that actually made use of the build function (which builds a new "worker" bot), which was one of the main points of the KotH. Although it didn't end up being super competitive, due to its inability to defend itself, it was exactly the sort of thing I was hoping people would come up with when I designed the challenge.

Ghost by Redwolf Programs

Self-nomination

I initially didn't make this self-nomination when nominating answers for this category, but I'm really proud of it. It was a self-answer to my Bot Factory 2.0, and it won. It had been carefully designed and optimized for days straight, and used several strategies I'd learned from bots in other KotHs, and from my previous submission to Bot Factory 2.0.

Ghost was given its name because it was almost invisible to the other bots; it would never try to compete with them, only ever going for characters which it could reach before anyone else. It would also do anything possible to avoid coming into contact with stronger bots (since it started out very weak, as bots' initial strength was based on their byte count, and Ghost was quite long).

Lumberjack by AncientSwordRage

Nominated by Redwolf Programs

Regardless of your opinions on it, xkcd 2385 KoTH (Final Exam) had a pretty big impact. It was one of the most popular questions we've had in a long time, nearly reaching +100, and it led to a substantial increase in the popularity of KotHs.

I debated with myself for a while to decide what answers from this KotH to nominate, and I ended up going with AncientSwordRage's Lumberjack. There were three main categories of submissions to this KotH:

  1. Trivial approaches, like always returning 100 or 1
  2. Simple bots that try some sort of strategy (such as copying the previous winner)
  3. Bots that use complicated math to try to precisely optimize their moves

Lumberjack was a fun mix between the 2 and 3, and one of the first non-trivial bots. Plus, it gets extra credit for this:

Kicking ass and taking logs, and it's all out of ass.

Sam (Self-Aware Maximizer) by wimi

Nominated by Redwolf Programs

This was another non-trivial answer to xkcd 2385 KoTH (Final Exam), and one that makes a serious effort to maximize its score. It was also one of the earlier bots, and it kick-started a massive arms race of optimization-focused bots. It was also the user's first post on CGCC.

Balanced Strategy by New Posts

Nominated by Redwolf Programs

This was an answer to xkcd 2385 KoTH (Final Exam), and the user's first (and only) post on CGCC. It had a refreshing lack of strategy or intelligence, fit for a bot posted by a bot.

phoenix_wright by gsitcia

Nominated by Redwolf Programs

Liars and Guessers was among first KotHs from 2021, and this was a fun and competitive solution to it. Liars and Guessers is different from most KotHs in that there are two roles a submission can have. Unsurprisingly, those are Liars and Guessers.

Phoenix_wright was a Guesser that used a neat strategy, and managed to get second place. The same user who posted phoenix_wright also had two Liars in second and third place.

\$\endgroup\$
6
3
votes
\$\begingroup\$

Slowest Gun in the East

Too often, late answers are overlooked, and end up with fewer upvotes than answers posted immediately after the challenge is posted. This category is aimed to reward impressive answers posted a while after the challenge was originally posted and that went unappreciated, compared to the FGITW answers.

Output a program that outputs a program ... that outputs PPCG by Fmbalbuena

Nominated by Me (Fmbalbuena)

This is My first answer and gained 10 upvotes.

Why?

Because this is the winner. Unfortunately, this answer didn't get accepted. Imagine 14 languages? This is the best of every answer.

Generate Net puzzles by Bubbler

Self-nomination

I can't believe that it went unanswered for, like, six and a half years?

And then it was solved with just 38 bytes. While complex solutions to complex problems are great on their own, I believe simple solutions like this to seemingly complex problems are the true gems of our site.

Flatten the CUBE by Aaroneous Miller

Nominated by DLosc

This question was posted in 2017. For years, the only answer was the OP's Python solution. Finally, in 2021, Aaroneous Miller posted a solution in Vim--a surprising language choice even though it's a challenge, since the challenge involves traversing a 2D figure in a twisty path. Not only that, but this Vim solution is a good bit shorter than the Python solution.

\$\endgroup\$
3
2
votes
\$\begingroup\$

Kansas City Shuffle

Reposted from 2018

Too often, someone devises a particularly golfy method of solving a challenge, which most people will use that method for their answers. This award goes to those answers that utilize an alternative method as a better solution than the method that the majority of other answers use (prior to the posting of the rewarded answer).

Compute matrix blockiness by alephalpha

Self-nomination

While all other answers try every possible blockiness, my answer simply takes a run-length encoding and a GCD. It was the shortest answer (beating J and Charcoal) until Bubbler ported my solution to J.

\$\endgroup\$
1
2
votes
\$\begingroup\$

Most helpful Sandbox commenter

The Sandbox is a very useful tool to help improve people's challenges, and functions best when users provide helpful advice and feedback on the drafts.

This category should reward the users who helped the most in the Sandbox during 2021

Razetime

Nominated by Redwolf Programs

Using my offline copy of TNB's transcript, I compiled a table, showing the number of times every user replied to a message in TNB asking for feedback on a sandboxed challenge in 2021.

Razetime had a large number of responses with consistently useful feedback, and more of them than any other user.

Bubbler

Nominated by Redwolf Programs

As with Razetime, Bubbler has consistently replied to requests for feedback in chat with useful suggestions. Many times Bubbler's replies make note of missing or incorrect test cases, which is important and something that's often skipped over.

\$\endgroup\$
2
  • 11
    \$\begingroup\$ Upvote this comment to vote for Razetime. \$\endgroup\$
    – hyper-neutrino Mod
    Feb 4 at 6:34
  • 10
    \$\begingroup\$ Upvote this comment to vote for Bubbler. \$\endgroup\$
    – hyper-neutrino Mod
    Feb 4 at 6:34
2
votes
\$\begingroup\$

Most Underappreciated Challenge

Repost from 2020

For the best challenge that didn't really get noticed. Sometimes a challenge, especially one that's tough or not vanilla code golf, only gets a few votes, maybe an answer, then disappears.

Solving a difficult challenge is rewarding; there's no reason we shouldn't reward the difficult challenges (that don't get noticed)!

Smallest image containing one of every RGB color by LostXOR

Nominated by Redwolf Programs

This is a challenge by a new user, with a really neat premise. It involves manipulating PNG's compression to try to make an image, containing every RGB color, as small as possible.

Fastest unique finder by l4m2

Nominated by Redwolf Programs

This is a bit of a niche challenge, and , and restricted to assembly or C on a particular chip. As a result, it didn't get many votes or answers, although there are answers and interesting ideas for solutions by multiple people.

The answers ended up being incredibly fast, with the winner managing to be more than thirty thousand times faster than the original approach in the question.

Overall, this was a pretty neat challenge, with a lot of interesting optimizations. It was rather poorly received, despite all of this.

Determine if a dot(comma) program halts by Redwolf Programs

Self-nomination

This was a challenge of mine that didn't end up getting many answers. It revolved around determining if a program in a certain subset of the language dotcomma would halt.

Gelatin integer metagolf by caird coinheringaahing

Nominated by Redwolf Programs

This is a challenge involving a tacit language similar to Jelly. In other words, it's difficult, especially for those who don't already know Jelly :p

As a result, it didn't get much attention, despite it showing that a lot of work was put in to ensure its specification was clear.

Splinter metagolf by emanresu A

Nominated by Redwolf Programs

This was a really cool metagolf, since Splinter has such basic syntax, but allows a lot of depth in how well the program can be optimized. Additionally, the answers show a lot of effort, and show the difficulty of the challenge.

Jelly compression quine by emanresu A

Nominated by Redwolf Programs

Currently, this is an unanswered question. The goal is to design a compressed Jelly string, which decompresses to itself. It's a very interesting idea for a challenge, and any answer to it would likely involve the exact sort of clever discoveries that this site encourages.

Smallest possible Scratch 3.0 project file (SB3) by Niall Ward

Nominated by Redwolf Programs

This was an interesting and somewhat unusual challenge, involving finding the smallest valid file that can be inputted into Scratch 3.0. It didn't receive much attention, but was a cool idea and had some interesting answers.

\$\endgroup\$
7

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .