| Bytes | Lang | Time | Link |
|---|---|---|---|
| 026 | Retina 0.8.2 | 250508T163156Z | Neil |
| 011 | Charcoal | 250508T083340Z | Neil |
| 052 | JavaScript ES6 | 250508T114038Z | Arnauld |
| 010 | Vyxal | 250508T064206Z | The Empt |
| 102 | brainfuck | 250508T204744Z | Level Ri |
| 055 | Java | 250508T144100Z | Kevin Cr |
| 011 | 05AB1E | 250508T082952Z | Kevin Cr |
Retina 0.8.2, 26 bytes
DHEHAAS_FANSAVEES
T`Lw`lp
Try it online! Explanation: Outputs the lowercased Latinised Dhivehi string for 2025.
This language is the shortest I've found where the letters are all lower case but don't include l or p (I can substitute w if necessary).
Charcoal, 15 14 13 12 11 bytes
”&→↧«ⅉ·Mχt>
Try it online! Link is to verbose version of code. Explanation: Outputs the compressed Latinised Shan string for 2025.
JavaScript (ES6), 52 bytes
Outputs the translation in Lombard: "Dumila vinticinq", which is halfway between French and Italian.
_=>"\104"+"UMILA\40VINTICINQ"["\164oLowerC\141se"]()
Methodology
I've tried a few languages, looking for the following criteria:
- If the leading letter is in upper case, make sure it does not appear elsewhere in lower case.
- There are as few letters as possible appearing at least once among
CLaeorstw(the distinct letters in"toLowerCase"). - There are few spaces.
- The translation is overall as short as possible.
Vyxal, 13 12 10 bytes
«ɾẋṀ⅛ƒP?⅛∞
Uses the language Odia, where it comes out as "dui hajara pachisa"
- -1 as you don’t need to terminate strings, as Shaggy pointed out.
- -2 by switching to the Seychelles Creole thingy
brainfuck, 102 bytes
----[------->+++>+>+++>+++<<<<]>--------.+.>----.>+.----.+++.<.>>++++++++++.<<<.>>++..>---.<<<.>>.---.
This is Seychellois Creole, the shortest language I could confirm actually says "Two thousand and twenty-five" (it's basically French with an accent, and Dutch/German spelling rules.) There are creoles from other countries (such as Haiti) that produce the same translation but with the first letter capitalized.
The initial loop initialises 4 cells to l$ll (Ascii codes for 252/7=36 and 3*36=108.) The $ is modified to print the spaces and the three ls are modified to print characters at the beginning, middle and end of the alphabet, in a combination of hunt-and-peck and simple adjustment of cell value.
Image from Google Translate below for posterity.
Java, 55 bytes
$->"SONGPHANSAV\40HA".t\u006FL\u006FwerC\u0061\u0073e()
Outputs "songphansav ha" (Lao).
Explanation:
$-> // Method with unused empty parameter and String return-type
"SONGPHANSAV\40HA" // The uppercase output-string, with the space unicode-escaped
.t\u006FL\u006FwerC\u0061\u0073e()
// .toLowerCase(), with the `ooas` unicode-escaped
05AB1E, 11 bytes
Three equal-bytes alternatives:
- Dogri "do hajar pachis":
.•Râ₅‘.∍Ø«°- try it online; - Lao "songphansav ha":
.•4;~β%δè²È- try it online; - Seychellen-Creools "de mil vennsenk":
.•PžÁúäΔǝúT- try it online.
There are two other languages that can compress the translation within 11 bytes, but unfortunately the compressed strings uses characters of the output:
- Assamees "duhazar pochis":
.•1LÏRckVÞ4(has acin both the program and output) - try it online; - Urdu "do hazar pachis":
.•Râ₆3–ahΩË(has botha&hin both the program and output ) - try it online.
Explanation:
Basically just the compressed strings. Compressed strings in 05AB1E can be lowercase letters and spaces, so I've searched for all translations that only uses those.
See this 05AB1E tip of mine (section How to compress strings not part of the dictionary?) to understand how the compressed strings work.
