# Cast your vote for “Best of PPCG 2015”!

### Final phase

You have chosen the categories and the nominees for PPCG's first ever "Best of", now it is time to pick the winners!

Each of the seven 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 February 1, 00:00 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.

## Educational

Best answer containing interesting and/or deep mathematical (or other) material.

## Area of a Self-Intersecting Polygon by Ell

Nominated by Martin Büttner

Ell's answers are amazing without exception. It was actually pretty hard to single out a specific post. They tend to answer very tricky questions (occasionally as the only answerer), but always solve them with exceptionally clever algorithms which are also very well explained (more often than not with great diagrams). This is one such answer. They came up with an original algorithm for the problem (whether it's been discovered independently elsewhere, I cannot say) which solves the problem very elegantly and rather efficiently. The explanation is top-notch, very clear and with one of those beautiful and very helpful diagrams. I can't upvote most of Ell's answers enough and would very much like to see this one awarded this prize as a representative for all of their great contributions to PPCG.

## Xorting an array by Jakube

Nominated by Alex A.

Jakube's Pyth solution to this problem is outstanding. It's an efficient, novel algorithm (with a very short implementation, of course) that he takes care to explain thoroughly and in an understandable and accessible manner.

## Extending OEIS: Counting Diamond Tilings by Peter Taylor

Self-nominated

The header of my answer here puts the emphasis on the mathematics rather than the language, because the analysis which went into the algorithm is far more important than the code: Algebra, graph theory, Möbius inversion, research, and Java. (Maybe I should have written the submission in CJam, because it doesn't have many opportunities to win challenges, but if I had then someone would probably have ported the answer to C). The description given is really only an overview, with links out to Wikipedia for more detail on some of the techniques applied and to my own writeup for further references.

## Showcase of Most Promising New Golfing Language

[What the title says.] There seem to be quite a few of these new languages that have popped up in the last year.

Nominations:

## Diamond Puzzles! by Dennis - Jelly

Nominated by Alex A.

Not only is this an interesting approach to the challenge, but it's a good display of Jelly's strengths. It doesn't use any built-ins that other golfing languages do not have, yet it beats the second best answer overall by 37% and the second best answer in a golfing language by 44%.

## Halloween Golf: The 2spooky4me Challenge! by ETHproductions - Japt

Nominated by Downgoat

JavaScript is a popular language here on PPCG, but lacks any golfing potential. Recently, quite a few JavaScript golfing languages have popped up but Japt is one of the most promising golfing languages. It has tons of built-ins and golfing-syntax.

## Calculate Phi (not Pi) by Mego - Seriously

Nominated by TanMath

Seriously is another stack-based language that can even beat CJam as it does in this answer. It has many built-ins and and cool commands. Using CP437 encoding allows for much more commands than regular ASCII.

## Check if a UUID is valid without using regexes by Cᴏɴᴏʀ O'Bʀɪᴇɴ - Jolf

This question shows that Jolf has a lot of potential, being only three bytes shorter than the accepted answer, and would be the same length as the accepted answer, if not for a bug that was discovered. Jolf has a vast array of tools to its advantage, it's purpose being not only being mainly a golfing language but rather a utility tool; this is signified by some of it's tools that would seem to be unhelpful for regular challenges, including, but not limited to, converting back-and-forth between Greek letters and their name, a function that returns 42, and code for concatenating upper- and lower-case versions of a string.

## Capture on the Pawn Chessboard by Martin Büttner - Retina

Self-Nomination

Out of the four languages I created (and all the ones I have notes for), Retina is the only one I'd consider a golfing language. While this answer isn't a winner, it's a fairly concise solution, just barely beaten by Pyth and it showcases several of the cool things Retina can do.

Retina is perhaps a bit different from the other golfing languages in this category. It doesn't try to squeeze a ton of built-ins into single-character commands, or make use of all 256 possible byte values to squeeze in more functionality.

Instead Retina wants to do one thing: if a challenge can be solved with nothing but a regex (or a few of them), there should be as little overhead as possible in using that regex. And it does that really well, regularly beating sed and Perl when it comes to regex-only solutions.

Retina has also started to grow a bit beyond that original premise, and these days you can combine multiple types of regex stages (the answer shows transliteration, substitution and match counting), and you can loop through them (also part of that answer).

According to Doorknob's statistics, Retina is the most-used language created in 2015. And finally, here is some testimonial from undergroundmonorail:

i like seeing how much retina has evolved. iirc originally the whole language was a way to stop people from commenting "this answer is invalid, regex isn't a language" but it's so much more than that and it's kind of beautiful

## Compute the Binary Sierpinski Triangle Sequence by Adnan - 05AB1E

Self-Nomination

05AB1E is one of the first golfing languages I made. It's not finished yet and I need to implement a lot of functions. Due to the implicit input and output, it can beat other programming languages (like Pyth, or even Jelly :p) in short trivial tasks. Of course, it's not efficient enough and I think I can improve a lot on efficiency, but I definitely think it's one of the promising languages of 2015.

## Remove all occurrences of the first letter of a string from the entire string by Downgoat - TeaScript

Self-Nomination

When you hear "TeaScript" you may think, "Not another JavaScript golfing language", but TeaScript was actually the first JavaScript golfing language. TeaScript was also made before the sudden skyrocket of new golfing languages.

JavaScript, being one of the most popular language on the site, does have its fair share of long property names such as document.getElementById or String.fromCharCode. Seeing no one has made a JavaScript golfing language yet. I decided to make my own.

TeaScript's goal was to be a golfing language but be completely familiar and easy to read to anyone who knows JavaScript. TeaScript started out with just reduced property names but grew quickly with features such as automatic property chaining. TeaScript is now a full-on golfing language especially with the recently released TeaScript 3!

## Rookie of the Year (challenge)

Best challenge by a user who had not posted a challenge before 2015.

Nominations:

## I'm not the language you're looking for! by MuddyFish

Nominated by GamrCorps

This is one of the coolest challenges that I've seen on the site. It encouraged users to think outside the box and find and abuse language bugs unintended features so the community as a whole learned a thing or two about how certain languages work in unpredictable ways. Ignoring the many Foo answers, some users found polyglots that could also earn a place in the "Most Above and Beyond" Category. Overall, this challenge greatly benefited the PPCG.SE community, which is why I nominated it.

## Implement a Truth Machine by quartata

Nominated by RikerW

This was a cool challenge, and the first I saw on this site. :P It was simple, but not trivial in some languages. Especially it allowed esolangs and other unusual languages to get in on the action. For example, @ThomasKwa wrote a 2 byte solution in Motorola MC14500B Machine Code. @FlagAsSpam even wrote a 18 byte Minecraft™ solution! As you can see, it benefited the PPCG community and was a lot of fun for everyone.

## Stacking Pythagorean Triangles by Brainsteel

Nominated by Peter Taylor

A simple question to understand, well illustrated, and with a lot of depth.

## Overcoming cluster size by Dennis

Nominated by Sp3000

Surprisingly, despite being a member for two years, 2015 was the first year of challenge-writing for Dennis. This challenge requests complex polyglots, where the key is to optimise matching languages to pre-specified tasks whilst keeping the total byte count low.

## Molecules to Atoms by Zach Gates

Self-Nomination

This was a novel challenge that has proved interesting. It presented users with a real-world problem to solve in fun way. It has clear specifications and, while able to be understood easily, it isn't trivial to implement. This leaves room for many possible answers and makes it a more competitive challenge.

## Decimal concatenation of squares by TanMath

Self-nomination

This is a challenge that I believe was one that many people liked. I started out this challenge by asking about my idea in chat. Many people supported the idea and was excited to answer. It had a clear specification, and was one of those sequence challenge based on an OEIS sequence. It was a relatively simple challenge as well.

## Fibonacci Spiral by Downgoat

Self-Nomination

This was my first challenge on the site which brought forth an interesting problem. Without being a trivial problem, it has a specification which was crystal clear. Bringing together the Fibonacci sequence and ascii-art, this challenge provided a good balance of difficulty while maintaining a level of engagingness. It also highlighted strengths in non-golfing languages such as MATLAB and other smart solutions.

## I haven't seen that number before! by Ampora

Self-Nomination

Not only was this a challenge created by a user not present before 2015, but this was my very first challenge overall! I thought this was a tough problem that provided a nice challenge for golfers. @orlp wrote a winning Pyth solution in 22 bytes, while other users provided answers in a number of languages. I believe the PPCG community liked it as a challenge, and hopefully you were excited to see what else I would create.

## Calculating waves by ETHproductions

Nominated by Alex A.

This was ETHproductions' first challenge. It's an interesting problem that's well described and well formatted. It wasn't too simple but it wasn't so difficult as to be a barrier to entry for newer users. Indeed, a couple of users answered for the first time on that challenge.

## Less is More

Best challenge with a simple but novel problem and a concise and clear spec.

## Xorting an array by Martin Büttner

Nominated by Alex A.

Beyond being an extraordinarily interesting problem, it has practical use, which is best explained by directly quoting the post:

It occurred to me the other day that a XOR operation can "sort" an array, which makes it possible to perform a binary search on the array in O(log n) without having to sort it first. It appears to be possible to determine N in pseudolinear time, which would make this a faster alternative to most sorting algorithms, and it doesn't have the memory requirements of radix sort. Of course, a straight linear search through the unsorted array will be faster, but if you want to search the same array many times, a single linear pre-computation can bring down the time required for each search significantly.

## Rotate the anti-diagonals by Zgarb

Nominated by Martin Büttner

I think this is the best kind of challenge. It's simple. Everyone can grasp it. It doesn't take huge amounts of code to implement. But it still allows for a variety of interesting approaches (as evidenced by aditsu's winning answer). Over the past year Zgarb have worked their way up one of our best and most productive challenge authors. The challenge specifications are consistently clear, comprehensive and to the point. This challenge is the quintessence of all of those things and should the receive as a representative for all the other top-quality challenges Zgarb wrote.

## The versatile integer printer by Stewie Griffin

Nominated by Zach Gates

I think this is a phenomenal challenge. It's easy to understand and easy to read; not to mention the acute scoring method. There is a vast number of possible answers. That's what makes it so fun and competitive. StewieGriffin has consistently posted impressive challenges of all shapes and sizes, from to . In the past few months, he's worked his way up to the top 10% of users across the site. I think this is the perfect example of something simple but still challenging enough to spark interest. It deserves to have the win.

## Find the largest independent set in a high-dimensional lattice-like graph by Lembik

Nominated by Peter Taylor

The question asks for maximum independent sets for a class of graphs which is sufficiently described in only a few lines and which has a lot of structure but not so much as to render the problem trivial. Although Lembik's obsession with binary strings is still in evidence, this takes quite a different direction to their previous questions.

## Automate Saving the World by DJMcMayhem

Self-nomination

This has always been one of my favorite challenges. The premise is extremely simple. Print some numbers, pause, repeat. But it has a unique twist that is very relevant to the story of the challenge. Each language used most come from before 1977. A unique restricted-source challenge, and yet the spec is very short, at least when you ignore the long story preamble to the challenge.

## Source code ecological footprint by Super Chafouin

Nominated by TimmyD

Topical-humor entry, minimally edited with a clear specification, dozens of answers with a variety of methods, and nearing a hundred upvotes (with no downvotes) ... PLUS, a novel scoring mechanism that focused the challenge on something other than code-golf. All in all, an excellent challenge.

Every once and a while, an answer takes the challenge to the extreme. This prize will be awarded to an answer which went far beyond the expectations of the challenge. This could include

• a code golf answer that brute-forced/proved the shortest program in some language
• a graphical-output popcon answer of extreme size and quality
• a KOTH answer of high complexity which absolutely dominated the competition

## Truth Machine by Martin Büttner

Nominated by El'endia Starman

Martin normally explains his Hexagony answers wonderfully, but this one is, I believe, the most exceptional answer he's done yet. He wrote a brute-forcer that failed to find a shorter program, but turned up a veritable treasure trove of same-length programs. Martin took the time and effort to highlight and explain every single meaningfully distinct program. In doing so, he taught himself and others a great deal about how control flow works in Hexagony. Not only that, but some of the programs found were so convoluted that a human probably would not have come up with them, which is a testament to the surprising intricacy of the language.

## Extending OEIS: Counting Diamond Tilings by Peter Taylor

Nominated by Martin Büttner.

During my diamong-tiling spree last summer, I stumbled across an OEIS sequence with a surprisingly small number of terms (5). It seemed like a rare case where it would be possible for us amateurs to extend a sequence on OEIS to some degree, since even a half-decent brute force solution should be able to count the tilings for sidelength 6 or 7. And that was pretty much what I was expecting as answers: optimised brute force which essentially counts the possible tilings while applying some clever heuristics to reduce the search space.

What did Peter do? He spent a week (on and off, I assume) on the problem and found a closed-form solution based on several other results scattered throughout OEIS. His reference implementation solves N = 1000 in 30 seconds. He also wrote up a short 4-page paper pulling all the loose ends together. I think that's pretty much the definition of above-and-beyond.

## How many three-fruit pies can you make? by Mego

Self-nominated

xnor posted a bounty on this question, awarding 150 reputation to the first person who could prove an optimal algorithm for maximizing the number of pies made from n ingredients, with k distinct ingredients per pie, for any positive integers n and k. Building on Thomas Kwa's work, I managed to construct a proof for an optimal algorithm, earning the bounty (my first!) on my fifth-ever answer to a PPCG challenge.

## Rearranging Words by Dennis

Nominated by randomra.

Dennis worked on this code challenge though several weeks and 44 revisions to find the optimal solution and thoroughly explain it with examples. The final code is a terse, 363-byte long CJam code with no embedded data. Of course this code has a very well commented version in Dennis's answer. Also, the solutions for the test cases were visualized (with help from Doorknob).

# The versatile integer printer, by Martin Büttner

Nominated by Stewie Griffin

Martin's answer to this challenge is an extreme accomplishment. Martin managed to write a code that is executable in 15 unique languages, while the maximum amount anyone else managed was 6 languages (disregarding version dependent solutions). Not only did he manage 15 languages, he did so in 65 bytes. Sweerpotato's comment: "This is really impressive", was posted when the submission had 6 languages and a score of 0.0833. 15 revisions later, the submission had 15 languages and a score of 0.019. In addition, he explained in detail how every single language prints the correct number. 119 upvotes at the time I'm writing this says it all really.

# Showcase your language one vote at a time by Martin Büttner

Nominated by MickyT

This answer for Mathematica has always impressed me with the sheer amount of effort and time that was put into it. As with all Martin's answers it is clear and does not leave you going huh? It was a well deserved winner of the challenge and I think a good contender for this category

## Labour of Love

For a great challenge that took immense amounts of preparation on the part of the challenge author.

## Block Building Bot Flocks! by Calvin's Hobbies

Nominated by Sp3000

This challenge, "BBBF", came soon after another Stack Snippet-based KOTH by Calvin (Red vs. Blue). [more description pending]

## Lab Rat Race: an exercise in genetic algorithms by Martin Büttner

Nominated by Rainbolt

If you were around when fortnightly challenges were a thing, then you know that they all involve immense amounts of preparation. This one in particular was posted with controllers written in five different languages.

## Red vs. Blue - Pixel Team Battlebots by Calvin's Hobbies

Nominated by Alex A.

Just by reading the post you can tell an incredible amount of work went into making this. Calvin's Hobbies even made a Sandbox post for it to test ideas, and he is well known for never using the Sandbox, so you know it's complex challenge.

## Sprocket Science: Animating a Chain Drive System by Ell

Nominated by Martin Büttner

I have rarely seen a code golf challenge with a spec like that. It is certainly a challenging problem (and I still feel bad for never getting around to answer it), but the specification manages to clarify all of the details with those amazing diagrams and animations which are probably the best reference implementation any challenge author has ever written on PPCG. The annotated diagram of the various dimensions of the sprocket alone would have qualified this challenge for a nomination.

## King of the Hill - Spacewar! by El'endia Starman

Nominated by Zgarb

In this KotH challenge, Javascript bots compete in the classic shooter game Spacewar! (or one version of it). In order to create the challenge, El'endia Starman (with help from PhiNotPi, BrainSteel and CᴏɴᴏʀO'Bʀɪᴇɴ) recreated the game from scratch, planned and implemented an easy-to-use interface for the submissions, and put up a website where people can pit the bots against each other or try their own skills against one. The game even features animated rocket exhaust flames and explosions! This is a great KotH challenge which certainly took loads of love and work to accomplish.

## Team Effort

[Best] answer that involved the cooperation of many people.

Nominations:

## Count sums of two squares by Mitch Schwartz, xsot, and Peter Taylor.

Nominated by xnor.

This 44-byte Python solution combines significant contributions from all three users, each bringing a fundamental new idea that gave a significant improvement. The end result is a heavily-golfed, beautiful, and unexpected solution.

• Peter Taylor (56 bytes) brought in a new formula from OEIS that expresses the answer as a sum of signs corresponding to odd divisors, totally different from natural counting strategies of previous answers. He previously used it in his CJam answer.
• xsot (52 bytes) expressed the formula recursively, avoiding a direct summation, with clever handling of the exceptional n=0 case using the operator precedence of bit shift to save on parens.
• Mitch Schwartz (44 bytes) simplified xsot's recursion to achieve an alternating sum by negating the result of the recursive call, avoiding needing to check sign directly.

## Red vs. Blue - Pixel Team Battlebots by PhiNotPi and Sp3000

Nominated by Alex A.

PhiNotPi and Sp3000 worked together extensively for this challenge to create a pair of bots called SphiNotPi3000. The bots share almost all of the same code and work as a pair. As a result of their hard work, they absolutely obliterated the Red Team and made it an easy victory for Blue.

## 1,2,Fizz,4,Buzz by TimmyD, feersum, Danko Durbić, and TessellatingHeckler

Self-nomination

Sure, it's just a FizzBuzz challenge. But the fact that it's in PowerShell (so there's already a limited number of users here that use it), and that there are three different solutions all at the same 54 byte count, make this a unique entry.