14
\$\begingroup\$

We have decided the initial 8 categories for the "Best of CGCC 2023", and nominations are now open. If you want to submit any more categories throughout the year, until the last few weeks of the year, you can still do so by answering the Call for Categories. If a category there gains net score > 3, I will add it as a category accepting nominations here.

How this will work: I will post 8 Community Wiki answers to this question, one for each category. Nominations should be edited into these answers in any order (e.g. feel free to add late nominations to the top so that they're more visible). They should include a prominent link to the nominated post, the corresponding user, as well as a bit of text about why the post was nominated and would deserve the award. Self-nominations are welcome.

On 1st January 2024, this post will be edited into the voting phase, all comments below the answers will be deleted, and replaced with one comment for each nominated post in that category. Votes will then be accepted for two weeks.

Especially during the first and last few days of the nomination process, I would recommend writing up a nomination elsewhere and just copying it into the post in one go, because there will probably be quite frequent edits, and SE has no way of merging conflicting edits.

\$\endgroup\$
2
  • \$\begingroup\$ I nominate: myself! For all 8 categories! \$\endgroup\$ Aug 2 at 20:08
  • 1
    \$\begingroup\$ @TheEmptyStringPhotographer You can only nominate a user in two of the categories; Rookie of the Year - Answers and Rookie of the Year - Challenges. The rest of the categories need either an answer or a question as a nomination. \$\endgroup\$
    – Aiden Chow
    Aug 3 at 5:19

9 Answers 9

9
\$\begingroup\$

Wrong tool for the job

Repost from 2018, 2021, 2022, but rephrased significantly

Technically, every Turing-complete language should be able to solve every problem. In practice though, some problems are really hard in particular languages, and thus those languages are rarely used. While you can, for example, invent multiplication in a language that doesn't have it, it's a lot of effort for little benefit.

However, some brave souls are not afraid of a challenge. They'll solve challenges in languages that lack arrays. They'll solve challenges in languages lacking an easy-to-use RNG. This category is for them. Those who don't care about spending a whole day solving a challenge that would be <100 bytes of Python.

In short, this answer is for answers that:

  • Solve a challenge in a language that's lacking the basic features that would normally be used for this type of challenge
    • This could be because the language has a specific weakness or because it's just really hard to use for all problems
  • Still make a good attempt to improve the score, within the limits of the language

Salicious Bacon Tripod by Mousetail (self-nomination)

This challenge is about substituting a specific word with a different set at random.

There are two things that ><> is really bad at: working with arrays and randomness. The stack in ><> can hold only single numbers so trying to store something like a list of strings that can be conveniently accessed with the very primitive set of stack manipulation operators. Instead, this answer uses the code itself as storage but this has it's own problems as you need leave space near the top of the code box to store data. If you need more data, in this case you need a list of list of strings it's tricky to make sure you can store them all while still being convenient to access.

The most important part to make that a bit golfy is to make sure the base of every array is below 15 so you can access it with f+ instead of a much longer expression for every single access. That means your main code needs to be limited to at most 15 - amount of data lines, in this case 13, very little for such a complex challenge.

Randomness is also very hard. The only random operator in ><> is the x which just moves in a random direction. Turning this into a uniform random number between 0 and n, a basic builtin in most languages, is not trivial, especially when you have a tight limit on the number of vertical lines used.

Number to Binary by Bubbler

Nomination by Aiden Chow

Edit: Bubbler has recently golfed his answer even further to 29 bytes, due to an improvement to the second loop. It is now under 30 bytes... just insane!

An easy challenge like converting a base-10 number to its binary form can be done with the use of a builtin or two in most languages. However, in Piet, it is difficult to create a functioning answer to even the most simplistic challenges, let alone golf them.

For Piet specifically, it is not only difficult to decide which instructions need to be used in which order, but also to construct a concise structure of the code and control the path of the instruction pointer as it makes its way throughout said structure.

In Piet, there are also two different registers which influence the path of the instruction pointer that also need to be considered to properly control the instruction pointer in a way that you want it to: the Codel Chooser (CC) and the Direction Pointer (DP). The instruction pointer is heavily influenced by the shape of the various "islands" of colors, called codels, so not only do you need to manipulate the CC and the DP in an efficient way, but to also fit together the codels in the most concise way possible.

Going back to the Number to Binary challenge, Bubbler's Piet answer comes in as the third Piet answer to that challenge. The first Piet answer posted was by Parcly Taxel, at 73 bytes, and it showcases an interesting looping structure and a great start as Piet answers go. Then I, Aiden Chow, decided to give it a shot with a 42 bytes answer. While this was an improvement to Parcly Taxel's structure, this still used a naive structure, with two loops right next to each other in a two-high grid. But then Bubbler posted a mind blowing 33(!!!) bytes answer, blowing the previous two answers out of the water.

The main improvements that Bubbler's answer had over both Parcly Taxel's and my answer was the insightful and elegant structure of the code. Although the fundamental logic of using two loops, one to set up the stack with bits and the other to print out all the bits on the stack, was the same as the previous two answers, Bubbler's choice of placing the DP+ instruction at A1A2, which helped save space in the first loop, was what set apart his answer from the previous two answers and saved around 10 bytes over the previous best Piet answer to the challenge (which was my, Aiden Chow, 42 bytes answer).

The basic reason why Bubbler's A1A2 DP+ instruction saves so many bytes is because this placement of the DP+ instruction allows more flexibility as to how the loop is constructed afterwards. With the technique of putting the two loops right next to each other, you are limited to placing the DP+ instruction at the rightmost edge of the loop in order for the instruction pointer to be able to easily transition from first loop to the second loop. But for this to work you need to place the check to exit the loop on the top half of the loop, while putting the actual logic of converting a base-10 number to its binary form on the bottom half of the loop. This wasted space along the top half of the loop.

This problem is bypassed with Bubbler's DP+ instruction placement because instead of being limited to having to exit the loop on the rightmost edge of the loop, it is instead possible to transition to the second loop through the bottom of the first loop. This essentially removes the limitation of having the place the exiting check on the top half of the loop and the actual logic on the bottom half of the loop as I did in my 42 bytes answer, but instead it is now possible to do both the actual logic and the check without any limitations as to where the codels are.

If you are interested in learning more about the A1A2 DP+ structure, you can check out Bubbler's tip, where he goes over when to apply this kind of structure and provides specific examples of how this structure is applied.

Overall, because of the ingenious structure of Bubbler's Piet answer resulting in a surprisingly golfy 33 bytes answer, along with the sheer difficulty of creating a Piet answer for even the simplest of challenges due to the amount of things you need to keep track of when creating a Piet answer, I nominate Bubbler's Piet answer to the Number to Binary challenge.

\$\endgroup\$
8
\$\begingroup\$

Best mathematical insight

Repost of 2022, 2021, 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).

Make a custom Bayer matrix by alephalpha

Nomination by Neil

At time of writing the two main approaches are to either build up the matrix using Parcly Taxel's recursive formula or perform some bit-twiddling on the row and column indices including reversal of the bits, normally performed by padding and reversing the binary representation. However alephalpha vastly simplified the latter approach by pointing out that one of the acceptable output formats is almost exactly equivalent to converting to base ¼.

Is it a plausible chess move? by loopy walt

Nomination by DLosc

Building on an answer by xnor, loopy walt shaved 18 bytes by taking input as complex numbers. The core insight was that a queen's move (horizontal, vertical, or diagonal) can be defined as a complex number which, when taken to the fourth power, has zero imaginary component.

String Comparison by loopy walt

Being an expert in discrete math, loopy walt quickly identified the intended approach for String Comparison and provided a nice, rigorous proof that is easy to formalize in Coq. The approach was then used by all answers in the challenge.

How powerful must this e approximation be? by Roman

Nomination by Command Master

In this answer Roman found a simple exact formula for the solution, and then proceeded to find a good enough approximation to write an answer shorter by 17 23 bytes than the previous Mathematica answer.

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

Most diverse challenge

repost from 2022

Often, there is one real algorithm to solve a challenge that is competetive. Maybe very esoteric or specialized languages need a different approach, but mostly, every answer is just a translation of the others.

This award is for challenges with no clear single approach where very different algorithms can be competitive. These are the most fun to solve, since you can't just translate other answers but need to carefully consider which approach to take, or even to invent a new one.

This prize is intended specifically for challenges where:

  • There are either many approaches or just a few that are very different
  • All of which are competitive
  • Even in the same/similar languages
\$\endgroup\$
4
\$\begingroup\$

Slowest Gun in the East

Repost from 2022, 2021, 2018, 2017, 2016,

There are a lot of really good old questions on this site. Unfortunately, new answers to them tend to gain very few votes and little interaction compared with answers to new challenges.

This category is for underappreciated new answers to challenges where the last interaction was at least 1 year before the post was made.

SGITE 2023 query.

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

Rookie of the Year - Challenges

Repost of 2022, 2021, 2020, 2019, 2018.

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

SEDE query (modified from 2022)

Aitzaz Imtiaz

nomination by Seggan

Aitzaz has done something extremely rare for a new user. As I write this (Feb 28), he has been a member of CGCC for five days, yet has written 8 challenges. All of them but one are open and have been received positively. He has even managed to get away with not using the Sandbox. This is rare for even a seasoned user. For these reasons I nominate him.

Note: originally this was a nomination for Aira Thunberg; however, Aira's account has been merged with Aitzaz's. Aitzaz has stated that they have produced the challenges together. I have changed this nomination to him as the challenges were also made by him.

SpyderScript

nomination by Jacob

As of writing this, SpyderScript has posted their first challenge What dice do I need to display every integer up to X? just six days ago and has already amassed a whopping 45 upvotes (May 1), immediately standing out from other challenges posted in recent months by more seasoned users. Spyder did not use the Sandbox and has still managed to create a very unique and interesting challenge that seems to have had good reception across the board, with not a single downvote as I write this. They have also posted a sequel to the challenge: What dice do I need to display my words?, which as of writing this has not received much attention but will likely get similar reception in the coming days (I will update my nomination for them in a week or so.)

\$\endgroup\$
2
\$\begingroup\$

Best Explanation

Repost from 2022, 2021, 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.

\$\endgroup\$
2
\$\begingroup\$

Best sequel

Originality is great, we love challenges that provide a new fresh take on things. But sometimes unoriginal ideas are just as good. This award is for challenges that take the ideas of an earlier challenge (by the same or different author) and improve on them or twist them in a new and interesting way.

Nominations should include both the challenge being nominated and any "prequels" to help give context.

Landmine Number I II III IV V by Jacob Creutzfeldt

nominated by alephalpha

A series of five interesting challenges based on the same idea, but each with a different twist.

\$\endgroup\$
2
\$\begingroup\$

Rookie of the Year - Answers

Repost from 2022, 2021 and other years.

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


MTN

nominated by The Empty String Photographer

They have posted an amazing answer to my challenge as their first answer!

incendiary

nominated by xnor

incendiary's first and only answer so far would be impressive for a Python golf veteran. On the challenge of Finding prime numbers without using "prime characters", it makes clever use of Unicode normalization and class methods to avoid parens and other banned characters.


SEDE query (modified from 2022)

\$\endgroup\$
1
\$\begingroup\$

Wild card

Repost from 2021

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

\$\endgroup\$

You must log in to answer this question.

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