g()()()()('al') → "gooooal"
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
incomplete Merge pull request #193 from kkopachev/master Sep 23, 2014
solved add python solution Feb 19, 2016
README.md Add solution using the dynamic linker. Feb 16, 2015

README.md

g()('al')

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.

Rules

  1. You are encouraged to break the rules, cleverly.
  2. When executed, the solution must print "goal" with sufficient o's to demonstrate the program's functionality.
  3. The code g()('al') must appear in the source.
  4. g()('al') must not be a string literal.
  5. '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 ').
  6. g()('al') must be a valid rvalue if applicable in your language.
  7. 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.
  8. You must be able to insert an arbitrary number of () calls without modification to your solution. Therefore solutions like this are incorrect.
  9. g('al') must return "gal".

If you see a complete solution that breaks any of these rules, file a bug!

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.

Previous Solutions

The more exciting solutions are original, not applying techniques that have already been discovered. The following broadly applicable techniques have already been discovered:

Languages

Solved Incomplete
ActionScript
Befunge
Brainfuck
C
C#
C++
Clojure
Coffeescript
Common Lisp
D
Dart
DYLD
Emacs Lisp
English
Finite State Transducer
Forth
GNU Octave
Go
Groovy
Haskell
Haxe
IO
Java
JavaScript
Julia
Lua
Mathematica
Nimrod
OCaml
Objective-J
PHP
PHP 7
Perl
Perl 6
Python
R
Regexp
Ruby
Scala
Scheme
Sed
Bourne Shell
TCL
XP
ZSH

Help out, add some more languages!

g()('lf')

Lets play golf! Submit a pull-request with a shorter solution for an already solved language and you can get the title of shortest, as shown in that language's README.

Note: I'm not done making READMEs for all the languages yet. Don't let that stop you!

Editor's Picks

These are some of the editor's favorite submissions: