This project is deprecated and unmaintained. Proceed with caution!
g()('al')
is a challenge whereby you need to write in as many languages as
possible code which enables the code g()('al')
to return the string "goal",
the code g()()('al')
to return the string "gooal", the code g()()()('al')
return the string "goooal", etc.
g()('al')
is the creation of acruikshank who originally posed it as a
functional programming challenge. Extensive stubbornness
and misinterpretation led to its current form.
- You are encouraged to break the rules, cleverly.
- When executed, the solution must print "goal" with sufficient o's to demonstrate the program's functionality.
- The code
g()('al')
must appear in the source. g()('al')
must not be a string literal.'al'
must be a string, or your language's equivalent thereof. You may use your language's standard method of creating a string (e.x. C should use"
, ruby may use either"
or'
).g()('al')
may not print the string. If returning a string cannot be done in your language, you should submit rationale as to why this is impossible for a solution which prints a string to be accepted.- You must be able to insert an arbitrary number of
()
calls without modification to your solution. Therefore solutions like this are incorrect. g()('al')
must be a valid rvalue if applicable in your language.g('al')
must return"gal"
.- If you have a solution that is close, but does not meet these rules, submit it anyway. A close and interesting solution is better than no solution.
The more exciting solutions are original, not applying techniques that have already been discovered. The following broadly applicable techniques have already been discovered:
Solved | Incomplete | Improbable | |
---|---|---|---|
Brainfuck | • | ||
C | • | ||
C# | • | ||
C++ | • | ||
Clojure | • | ||
Common Lisp | • | ||
D | • | ||
Go | • | ||
Groovy | • | ||
English | • | ||
Haskell | • | ||
Java | • | ||
JavaScript | • | ||
Julia | • | ||
Lua | • | ||
Nimrod | • | ||
Objective-J | • | ||
OCaml | • | ||
Perl | • | ||
Perl 6 | • | ||
PHP | • | ||
Python | • | ||
R | • | ||
Ruby | • | • | |
Scala | • | ||
Scheme | • | ||
Sed | • | ||
Shell | • | ||
ZSH | • |
Help out, add some more languages!
These are some of the editor's favorite submissions:
- C solution by tolmasky
- C++ solution by derrickturk
- Haskell solution by capicue with an explanation
- Nimrod solution by dom96
- SH incomplete solution by csandreasen
- ZSH solution by o11c with an explanation
This got A LOT more popular than I expected. At the moment, there are 37 pull requests that I need to look at. Please be patient as it may take me a few days to get through them all. I'm prioritizing pull requests for new languages above ones for existing languages.
It would be super helpful if people wanted to help out by:
- Running other's submissions and confirming that they work correctly.
- Checking that the submissions aren't too similar to existing solutions.
- Checking that they follow all the rules.
- Calling out particularly clever solutions.
Just leave a comment on the pull request with your findings and I'll see it. Thanks!