9
\$\begingroup\$

We have decided 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\$
0

8 Answers 8

6
\$\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

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\$
3
\$\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\$
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.

SEDE query (modified from 2022)

\$\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\$

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

\$\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\$
1
\$\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.

\$\endgroup\$

You must log in to answer this question.

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