- Do I need to log in to play?
-
No. Submitted solutions will be executed and checked without
logging in, but nothing will be saved and you won't appear on the
leaderboards.
- Is code.golf free as in speech?
-
Yes! It is written in Go, licensed under
MIT, and available on
GitHub; patches welcome!
- Is code.golf free as in beer?
-
Yes! However hosting isn't, so if you enjoy Code Golf consider
donating to its continued existence and improvement via
GitHub Sponsors.
Sponsors will receive a couple of additional perks, with more
planned:
* Badge hidden if sponsorship is anonymous.
|
| Free
| Sponsor
|
| Profile Badge
| No
| Yes *
|
| Follow Limit
| 10
| 24
|
| Solution Notes
| No
| Yes
|
- What languages are supported?
-
JavaScript
V8 14.3.127.16
If you'd like to see another language added then raise an
issue.
- Are warnings ignored?
-
Yes. Only STDOUT is checked against the solution, STDERR is
however shown back to you to ease debugging.
- Is trailing whitespace ignored?
-
Trailing whitespace is trimmed from each line and the entire
output, except when solving Quine.
- How are arguments passed to my program?
-
Some holes pass arguments, for those your program should read them
from the command line arguments (ARGV).
- How do I print Unicode characters?
-
Your source code is sent to the interpreter encoded in UTF-8,
and is expected to write output encoded in UTF-8 to STDOUT.
For languages where it matters, your code is run in the
en_US locale with a UTF-8 output encoding.
In Unicode-aware languages like Python, this means
print("π") and print(chr(0x1f642))
both produce the emoji U+1F642 "Slightly Smiling Face" π, which
is encoded as f0 9f 99 82 in UTF-8.
In less Unicode-aware languages where strings are byte strings,
you might still get away with UTF-8 in string literals. For
example, OCaml treats "π" as a string of length 4
(four bytes), but Char.chr 0x1f642 is an error.
In yet other languages, like brainfuck, you have to print the
individual bytes f0 9f 99 82 one by one.
- How are solutions ranked?
-
There are two scorings in use, bytes and chars. Bytes is the
number of bytes of a solution encoded in UTF-8. Chars is the
number of Unicode codepoints of a solution. Users may submit up to
two solutions per hole per language. This is handled automatically
when you enter two solutions and each minimizes a different
scoring. Each scoring has its own set of leaderboards. For the
chars scoring, both βAβ (U+0041 Latin Capital Letter A) and βπβ
(U+1F609 Winking Face) cost the same despite the 1:4 ratio in byte
count in UTF-8.
Some experimental languages that make heavy use of multi-byte
characters (APL, UIUA, 05AB1E, BQN, Vyxal) have a third scoring
method that does not yet affect leaderboards or solution saving.
This method allows multi-byte characters commonly used in the
language to count for only one stroke, while all other characters
count as one stroke for every UTF-8 byte in their encoding.
Reference
PR#2513
for more detail.
- How are solutions scored?
-
For each hole, in each language, up to 1,000 points are available.
The formula is:
Points =
Sb Γ· Su Γ 1000
Where Su is the length of the user's solution,
and Sb is a Bayesian estimator of the form:
Sb = ((βn + 2) Γ· (βn + 3))
Γ S + (1 Γ· (βn + 3)) Γ Sa
n is the number of solutions in this hole in this language.
S is the length of the shortest solution in this hole in
this language.
Sa is the shortest solution among all languages
in this hole.
The confidence interval is chosen such that the shortest
solution in any language will receive a score of at least 750.
Your overall score is the sum of your highest points in each
hole.
- Are submissions resource-constrained?
-
Yes. Execution time is limited to 5 seconds, CPU & RAM usage is
unbounded but this will probably change soon. The length of each
solution must be lower than 128 KiB as that's the maximum length
of any program argument under Linux.
- Is there an API?
-
An API is currently being developed and documented in standard
OpenAPI format.
A legacy API that just returns scores in JSON exists. The URL is
/scores/all-holes/all-langs/all.
Note that all-holes and all-langs may be replaced by the names of
specific holes and languages.
- Can I see other people's solutions?
-
No, that way all holes stay competitive. If you're stuck on how to
shave a couple of strokes off your solution then why not visit
our Discord server for some advice.