
Code Golf at Google - antichaos
http://blog.zmxv.com/2015/07/code-golf-at-google.html
======
nate_martin
Fun fact: there has been a problem with Googlers calculating hash functions
that pass all the test cases for certain questions.

~~~
Retra
If you think about it the right way, that's what everyone is doing:
calculating a hash from the problem statement into stream of symbols with
certain constraints.

So the problem here is not calculating hash functions per se, but over-fitting
the solution to those test cases.

------
spydum
i think the sad pattern I see in a lot of these code golf implementations is
the solution score is based on Lines of Code, which we already agree is a POOR
representation of either complexity or simplicity.

I think it would be far more interesting to measure number of instructions to
complete the objective. Though I suspect the folks familiar with assembly
would run circles, perhaps you could segment by solution language?

~~~
modeless
You may be interested in
[http://www.zachtronics.com/tis-100/](http://www.zachtronics.com/tis-100/).
It's essentially a code golf game with many different metrics to optimize
including number of instructions.

~~~
nsajko
It's DRM-ed, sadly.

~~~
acc00
Not anymore: [http://www.gog.com/game/tis100](http://www.gog.com/game/tis100)

------
webo
Hah, I remember spending hours on this during work hours when I was interning
last year. I used to come up with very clever and short solutions only then to
find out I wasn't even top 10 :(

------
karavelov
Perl is a way more fun for golfing but it's missing from the supported
languages

------
acomjean
I had to do a code test for a job (sigh). But it actually was kind of fun. The
website takes your code and checks correctness and efficiencies.

The company posts "challenges" every month. But they also have lessons which
contain some interesting code challenges. The only problems is 1) they're
timed 2) sometimes the descriptions are kinda mathy which may put people off.

[https://codility.com/programmers/lessons/](https://codility.com/programmers/lessons/)

------
Omnipresent
Can a googler put the questions in public for others to see?

------
Buge
I'm trying to run the c++ version, but it won't compile because the loop
variables in the range for loops do not have declarations.

~~~
detrino
There was a proposal[1][2] for C++17 to allow:

    
    
        for (e : c)
    

which would be equivalent to:

    
    
        for (auto &&e : c)
    

Gcc implements this when compiling with -std=c++1z. My understanding is that
it was rejected by the committee.

[1] [http://www.open-
std.org/jtc1/sc22/wg21/docs/papers/2014/n385...](http://www.open-
std.org/jtc1/sc22/wg21/docs/papers/2014/n3853.htm)

[2] [http://www.open-
std.org/jtc1/sc22/wg21/docs/papers/2014/n399...](http://www.open-
std.org/jtc1/sc22/wg21/docs/papers/2014/n3994.htm)

------
rory096
>[http://go/codegolf](http://go/codegolf)

How does this work, some sort of TLD magic? (That shouldn't be possible,
right?) Is it just routed within Google's internal network?

~~~
jsmthrowaway
Search paths. The full address is go.corp.google.com (which is simply a URL
shortener), IIRC; however, I think the resolvers are also configured to
respond to a bare name in a lot of cases as an optimization. They talk a
little bit about corp in their BeyondCorp paper[0], which is well worth a
read, and I'm speaking to ancient memory so I might be wrong these days.

[0]:
[http://static.googleusercontent.com/media/research.google.co...](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43231.pdf)

~~~
rory096
Thanks for the link! Figured it was a bit more complex than just a host file,
being Google and all.

------
planetjones
I watched the wolf of wall street recently. I see some of the solutions to
these code golf exercises as similar to the bankers who beat their chests and
celebrate their masculinity in selling penny stocks to gullible
investors.These code golf exercises seem like the software developer
equivalent: "look at how brilliant and superior I am that I can obfusicate
code into something no-one understands in only 2 lines".

My concern here is that this Code Golf mentality infects the normal day-to-day
coding at Google. Just because an implementation can spawn a few lines it
doesn't make it a good implementation. What about clean code, maintainability,
automated testing, self documenting code...

I pity the codebase I would have to maintain from one of these code golfers.

~~~
jsnell
Nice how many off-handed insults you've managed to pack into such small space,
based on no data at all except extrapolating from your own prejudices. It's
almost like some kind of HN comment golf.

A playful programming competition is really not at all comparable to cheating
innocent people out of their money. Like, seriously. People are generally able
to behave appropriately in situations with different expectations. There's no
reason to think that it's not equally applicable to using the appropriate
programming style for the project. It's like you're looking at somebody
walking on the street in jeans and a T-shirt, and complaining that they're not
properly dressed for the opera. And no code gets committed without a code
review at Google anyway.

Finally, code golf is rarely about obfuscation; obfuscation just for its own
sake isn't compatible with minimizing code length. Once you e.g. know the
basic Perl golf tricks, the code can be surprisingly readable since it really
just contains the core of the algorithm.

~~~
Vexs
Insult golf sounds kinda fun. Try to come up with the most insulting thing
possible in the least characters.

On a more serious note, I agree with you. There's some alarmist reactions to
things like this, but in reality I don't think it's an issue at all. Sure,
there might be bragging and such, but that's the point of something like this,
isn't it? It's a game, not a serious discussion on optimization. Short code is
more "fun" than superoptimized to my mind.

