# Cast your vote for Best of CGCC 2020

### 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 fourteen 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 14 23:59 UTC will be declared the winner of that category.

### Further details

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

# Wild card

Repost of 2019. Also somewhat related to Overall best challenge from 2017.

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

### @SilvioMayolo's answer to Distinguish English and Spanish with regular expressions

(Nominated by @Dingus)

The original 60 % accuracy threshold for this challenge turned out to be a little loose . . . and this was the astonishing one-byte answer that proved it.

### My answer to Hexasweep (part 1): The Solver

(Self-nomination by @RedwolfPrograms)

I usually don't do much answering on this site, so I'm kind of proud of this one. I ended up spending a weekend (and a pad of isometric grid paper) on it, as it'd been unsolved for nearly four years.

Also, if anyone wants to try answering it themselves my solution is definitely far from optimal!

### Myseries of 12 challenges to commemorate John Conway

(Self-nomination by @Bubbler)

From Wikipedia:

On 11 April 2020, at age 82, [John Conway] died of complications from COVID-19.

Conway was a truly brilliant mathematician. He made numerous contributions in so many fields of mathematics, so much that Wikipedia had to have a dedicated page for the list of things named after him. Among them were three Turing-complete esolangs, which gave me the idea to start this series of Conway-themed challenges on Code Golf.

While I had the list of Conway's achievements, it was definitely not easy to find suitable ideas for Code Golf challenges. Some were mathematically prohibitive, and some didn't have suitable input parameters. Also, I wanted to include challenge types other than plain , which made things even harder. Fortunately I could pull out two s and one in the theme.

# Best Non-Code-Golf Challenge

Repost of 2019

Best challenge whose winning criteria did not include any code-golfing. King of the Hill, Fastest Code, etc. would be eligible. Proof Golf, atomic-code-golf, etc. are also included. Anything that's not the standard "shortest code length" is eligible.

### Print X without X by @WheatWizard

(Nominated by @Dingus)

I like how this challenge took something generally frowned upon ('Do X without Y') and turned it into something genuinely fun with high replay value, spawning several entertaining back-and-forth battles. 83 upvotes and 176 answers across the cops' and robbers' threads are indicative of how well this challenge was received.

### Shortest 'arithmetic formula' to output 1000 primes by prime_directive

(Nominated by @RedwolfPrograms)

This is an interesting challenge in a category that isn't used much (). Additionally, it was the user's first post!

There was a lot of room for answers to improve, with the original scores being golfed down more than twenty times smaller, and the entry barrier was sufficiently low that many new users posted great answers.

Partial repost of 2019

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.

### Dominic Van Essen's answer, Robin Ryder's answer, and Giuseppe's answer to Is It A Rainbow Color?

(Nominated by user)

First Giuseppe posted a 60 byte answer. Robin Ryder, being sportsmanlike, suggested a 47 byte alternative (a whopping -13 bytes!), and Giuseppe golfed that further to 44.

Then Robin Ryder had another idea, and this time they posted their own 41 byte answer using a different approach, now the shortest R answer.

Suddenly, Dominic Van Essen swooped in with a 35 byte answer, shocking everyone! Robin Ryder heroically countered with a last minute 33-byter, but alas, it was in vain, for Dominic Van Essen changed directions and made it to the 28 byte mark, where Dom Hastings and caird coinheringaahing carried the exhausted R Rainbow champion to the 26-byte line!

(self nomination by Lyxal)

This was a fun little exchange of cop and robber answers for which HighlyRadioactive provided cop answers in ><> and which I promptly cracked. The irony about this chain is that the intended answers were much shorter than what I came up with. I don't think anyone else engaged in such a long challenge chain.

It started off with HighlyRadioactive (hereby referred to as HR) posting an easy enough first cop (which required usage of o), which I swiftly cracked. HR shot back with the second cop, which barred numbers, making constants harder to push to the stack. But with the power of colons, ls and +s, it was cracked by me.

Round three was just another restriction of constants (the length operator this time), but that was easily circumnavigated using ASCII character codes. Round four introduced a slight inconvenience into the works (by banning something that would make constants more tedious to produce) - something which I responded by getting creative and using the fact that -1 is returned when there is no input.

Round five ruined that previous approach, but I still had ASCII characters up my sleeve, so the games continued.

Then came round six. I probably shouldn't have made the whole entire ASCII stuff obvious because HR barred that too. For a while, I was at a loss on how to even generate any form of number on the stack - I had no numbers, no literals and everything else that pushed a number was banned. But I wasn't about to give up. Desperate to find something to use, I looked at the command line flags to see what I could potentially twist to the purposes of making something out of nothing. Then I saw it... the -v interpreter flag which allows one to pre-initialise the stack with values. I got straight to work, typing up 649 colons, plus symbols and ns all by hand on a 5-inch phone. The ball now once again laid in HR's side of the court.

In a some-what anti-climatic twist, round seven allowed the usage of a constant again - promptly cracked.

Round eight was posted, I cracked it using the usual approach, but due to technicalities, it wasn't technically accepted. Regardless, there was still a response to the last challenge.

And so that is the story of probably the longest chain of cracking to the challenge Print X without X

(Self-ish nomination by user)

• Answers to Is It A Rainbow Color by Dominic Van Essen, Robin Ryder and Giuseppe Jan 30 '21 at 13:35
• Answers to Print X without X by Lyxal and HighlyRadioactive Jan 30 '21 at 13:35
• Answers to Is it a still-life by Razetime, Luis Mendo and user Jan 30 '21 at 13:36

# Best Tip

Repost from 2019, 2017 and 2016

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

### Zgarb's answer to Tips for Creating/Maintaining a Golfing Language

(Nominated by RedwolfPrograms)

This answer provides some very helpful advice relating to one of the (arguably) more difficult things to decide on, what commands to add. It also gives examples of how other golfing languages handle things like overloading and type coercion.

As someone who's considering designing a golfing language, this answer addresses several things I'd been unsure of at a more depth than any other answer.

### Luis Mendo's answer to Tips for Creating/Maintaining a Golfing Language

(Nominated by user)

Luis Mendo's answer goes into a lot of depth on how to get started on a golfing language - picking a language to base it off of, choosing a paradigm, reserving names for later expansion. These tips make it easier for people without previous experience make golfing languages. They also go beyond just designing the language, to maintaining it and the documentation so it's more accessible to people. It's a very valuable resource.

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.

Repost of 2018

### Redwolf Programs

Nominated by caird coinheringaahing

Most challenges or answers posted by new users will have a comment underneath them saying something along the lines of

Welcome to the site! Be sure to check out these helpful pages

As someone who posts a fair amount of these comments, I can easily say that Redwolf gets there quicker than most, and almost always includes helpful information for the newer users. In fact, they've even gone to the lengths of creating a userscript to help them (and others) to comment even more. The sheer prevalence and consistency of quality of these comments by Redwolf makes them deserving of this award in my mind.

### caird coinheringaahing

(Nominated by @Razetime)

So active and so consistent with their help that I sometimes wonder if they're an omnipotent being. Their activity page is filled to the brim with helpful comments, generally welcoming beginners. caird has also been very helpful with sandboxed posts, and has helped many of mine (and others) questions become clear and more fun to answer.

# Best Explanation

Repost from 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.

### Myanswer to 1, 2, Fizz, 4, Buzz

(self nomination by @Lyxal)

Even though I only copied the explanation in recently, I typed up and shared it in November 2020 in The Tarpit chatroom as a 1 hour "lesson". This explanation gives a detailed account on how one gets from a very rudimentary Fizzbuzz program (75 bytes long) to the answer linked (18 bytes long) in a series of iterations explaining where golfs can be made, and why those golfs are made. While it does assume some knowledge of stack mechanisms, the assumptions made are light, and only require one to understand how pushing values and popping values works. Other than that, every syntactical element is described over the course of 8 different fizzbuzzes.

(Nomination by @user)

In this answer, Deadcode manages to use only regex to divide by $$\\sqrt 2\$$. Their explanation is just as impressive as the answer they submitted, and while it is not particularly easy to understand, they've explained it well enough that someone could follow along. Before reading it, I had no idea you could use regex for such complex operations.

### Wheat Wizard's answer to Shortest code to produce non-deterministic output

(self nomination)

With such a simple challenge this answer delivers an odyssey of an explanation. It explains the implementation details of Haskell's type system, the ways in which functional languages allocate data, and even some kernel level security features while always being relevant to the answer.

# Trickiest Challenge

repost from 2019

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

## Vandalizing Marquees by Stephen

Nominated by Razetime

This one looked really simple for most golfing languages with a powerset builtin, but it turned out to be much harder with its compression tactic.

## Checkerboard the Matrix by fireflame241

Nominated by Bubbler

It looks like a simple variation of linear algebra-themed "row-operations on a matrix", yet no one seems to have figured out how to actually solve it. This one remains unsolved for almost six months, at the time of writing.

# Most Underappreciated Challenge

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

### Explicit-ify APL expressions involving trains by @Bubbler

(Self-nomination)

As a challenge made after a feature of APL, I knew it would be trivial in APL, so I tried to make the task so that it's not that trivial to use that feature while allowing other languages to use other approaches, e.g. repeated string substitution. To my disappointment, the challenge simply went out of sight after getting an APL answer and nothing else.

### Total resistance from unit resistors by Peter Kagey

(Nominated by user)

This is a thought-provoking question, and is rather well written, with pictures to aid in understanding it and a clear specification. However, there is only one answer to it, and the question itself only has 10 upvotes.

Like this category, but for answers. Great answers sometimes slip through the cracks and don't get a chance in the spotlight. Sometimes it's an answer posted after activity has died down on a challenge. Other times it's one that's hard to appreciate without specific background or context.

### Myanswer to Implement the Enigma Machine

Self-nomination by @cairdcoinheringaahing

This is probably the answer I spent the most amount of time and effort on this year. The fact that the only other answer to the question is in Python and is 10 times the length suggests just how difficult the task is. This was compounded by the string based nature of the challenge and the fact that a variable's value changed each "step" in the program - two things Jelly really isn't good for. While the answer did get a few upvotes, I think in comparison to the effort put in, it flew mainly under the radar.

## Myanswer to ASCII-art Venn diagram

Self-nomination by @Razetime

Husk is a language which isn't particularly well-known for its string manipulation or ascii-art capabilities. That being said, it took me few days to write this answer and figure out all the type inference problems, and finally arrive at a correctly formatted solution that inferred in time. And surprisingly, after all those adjustments, it beat the Charcoal solution! I think it deserves more viewings(and some golfing suggestions) for the effort I put into it.

# Rookie of the Year - Answers

For the best answer written by a new user in 2020. This doesn't have to be a user who created their account in 2020; rather, this is for any answer posted in 2020 by a user who didn't post any answers before 2020.

SEDE query modified from the one Giuseppe gave.

### @xash's answer to Determine the area enclosed by slashes

Nominated by @Bubbler

xash started their Code Golf career with an answer in J, which is already an uncommon language choice for a new user. They showed off brilliant approaches (the nominated answer) and an ability to write 200-byte-long J train and 400-byte-long one. Then they picked up two more esoteric languages, namely Brachylog and convey, in a relatively short amount of time.

### Dingus' answer to Peel away the layers - Cops

(Nominated by @cairdcoinheringaahing)

Dingus first answered in March, and has quickly amassed over 6000 reputation and answered with some truly great answers. For this one however, I (along with most other people) were expecting answers to have scores solidly in the double figures, until Dingus posted this answer, scoring $$\840,527,321,220,386\$$, through clever obfuscation techniques, in the code, the languages used and how those languages were used. The answer stayed uncracked for 14 days, despite some valiant efforts by the Robbers, and was easily the most impressive of all the Cops' solutions.

• Jan 30 '21 at 13:38
• Peel away the layers - Cops by Dingus Jan 30 '21 at 13:39

# Best mathematical insight

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

### Myanswer to Count the Collatz survivors mod 2^n

(Self-nominated by @Bubbler)

I'm nominating this answer since I think it is the most mathematically interesting answer I posted last year (and unfortunately I couldn't remember any of someone else's), and all of the other answers use the same algorithm. The mathematics itself is not that far from obvious (one can derive the property with some basic knowledge in number theory); nevertheless, it did simplify the problem to one that was well-suited for golfing in many different languages.

### Surculose Sputum's answer to Perimeter of Conway Hexagon

(Nominated by @Razetime)

For what looked like a mostly tedious geometric calculation, Surculose Sputum condensed the problem into a short and simple algebraic formula, which all the other answers proceeded to use(including mine). It also outgolfed xnor's existing Python 3 solution(!), which they later modified to use the same formula.

### Sisyphus' answer to Calculate the inverse of a matrix

(Nominated by @cairdcoinheringaahing)

When I wrote this challenge, I fully expected most answers to simply use a builtin or something similar (such as the Jelly and MATL answers - matrix power to the $$\-1\$$). Sisyphus provided a brilliant iterative example and then went ahead and found a way to simplify it by choosing an easy to code $$\V_0\$$ (as many answers that ported this noted, $$\\text{tr}(AA^T) = \sum_{i,j} a^2_{ij}\$$). Just scrolling through the answers, you'll find that around a third use Sisyphus' method while almost all the rest use a builtin. If that wasn't enough, Sisyphus then stuck around the thread and continued to help users golf their answers with even more mathematical insights.

# Rookie of the Year - Challenges

Repost of 2019

For the best challenge written by a new user in 2020. This doesn't have to be a user who created their account in 2020; rather, this is for any challenge posted in 2020 by a user who didn't post any challenges before 2020.

SEDE data query

### How far should I sum? by @RGS

Nominated by @Bubbler

RGS posted 40 challenges in 2020, 39 of which were well-received (positive score), which is a great achievement. I couldn't choose the best one out of them, so I decided to nominate one of simple, clearly written ones. They also successfully hosted RGS's Golfing Showdown, a golfing event of five challenges.

### High throughput Fizz Buzz by Omer Tuchfeld

Nominated by @cairdcoinheringaaing

This is Omer's first and only challenge on the site, and is a textbook example (IMO) of how new users should post challenges to the site. Omer asked around in chat, posted in the Sandbox and finally posted a high quality, non- challenge. The question has received some impressive answers, including this first post by Issac G., is the highest voted challenge this year, and is well-deserving of a reward.

Repost of 2019

Best answer to a challenge whose winning criteria did not include any code-golfing. King of the Hill, Fastest Code, etc. would be eligible. Proof Golf, atomic-code-golf, etc. are also included. Anything that's not the standard "shortest code length" is eligible.

### @DomHastings's answer to Build an alphabetised polyglot

(Nominated by @Dingus)

This 26-language polyglot showcases a variety of languages ('9 shells, 3 Rubies, some 2D (and 1D!) languages and many languages . . . learned just for this challenge') and obviously took a significant amount of effort to put together. That the code is golfed as well, despite not being a requirement for the challenge, makes this answer all the more impressive.

### Isaac G.'s answer to High throughput Fizz Buzz

(Nominated by @caircoinheringaahing)

While not the fastest answer to the challenge, this was a brilliant first answer (both Isaac's first and only answer, and the first answer to the challenge), which set a high bar for incoming answers. Since posted, the code has had little changes made to it, and yet is still competitive with the other answers, showing just how good the answer is.

Answer whose score improves the most from its initial posting. This doesn't have to be one with an objectively big increase/decrease (depending on the scoring system), but can be one with the most impressive change.

### My answer to Cut a triangle into equal-sized parts!

Self-nomination by @user

This wasn't one of the most golfed answers, but it was a record for me (over 150 bytes shaved off). I worked on it from August to December, and the final answer ended up quite different from the original one. Even though the underlying approach stayed pretty much the same (build up a set of partially made triangles, add a cell each round, and deduplicate), I went from using recursion to iteration, changed the transformations on the cells, uniquified in a different way, and modified a bunch of other stuff.

### My (@Lyxal) answer to Make the Finest Magic Code Square

Self-nomination by @Lyxal

The reason why this would be suitable for most improved answer because it went from being an invalid attempt at utilising a loophole (and consequently garnering downvotes and having to be deleted) to the most upvoted/winner of the popcon. And even though it may not be the biggest square, the fact it went from non-serious to actual contender is significant enough to potentially make it the most improved answer.

• Jan 30 '21 at 13:45
• Jan 30 '21 at 13:45