| Bytes | Lang | Time | Link |
|---|---|---|---|
| 150 | Intel ASM | 251008T033830Z | Random D |
| nan | How dare you fuck the brain c | 241215T174416Z | Gleb |
| 016 | True | 241113T081513Z | Gleb |
| 057 | Subleq+ | 250909T224310Z | CrSb0001 |
| 021 | Interactive Thon Langauge | 250211T212503Z | Gleb |
| 014 | Regenerate | 210626T211803Z | DLosc |
| 021 | Normal 4ME | 241026T213417Z | Gleb |
| nan | Grass | 180427T182624Z | jimmy230 |
| 018 | Rewriten 4ME | 241022T185326Z | Gleb |
| 279 | Bespoke | 250116T215949Z | Josiah W |
| 042 | OpenRISC or1k big endian machine language on Linux | 200621T022743Z | ceilingc |
| 032 | riscv32 and riscv64 little endian machine language for Linux | 200621T074526Z | ceilingc |
| 030 | DEC VAX machine language on UNIX v8 or 4.3BSD | 230730T214706Z | ceilingc |
| 015 | Arsla | 250604T032832Z | aitzazis |
| 208 | smotslang s | 250507T095724Z | smots-18 |
| 039 | Java | 230505T233947Z | Olivier |
| 034 | WE32k machine language on AT&T UNIX System V | 231210T224652Z | ceilingc |
| 051 | Emmental | 240531T160327Z | CrSb0001 |
| 015 | Unicorn | 250329T023512Z | Laurel |
| 034 | SAKO | 250314T151621Z | Acrimori |
| nan | ppencode | 250313T000501Z | IY5dVSjA |
| 075 | Tarfish | 250310T111801Z | Mukundan |
| 015 | UNAI | 241124T150829Z | Gleb |
| 080 | Cray J90 Supercomputer machine language on UNICOS | 250208T005538Z | ceilingc |
| 007 | Welcome to Esolang | 250208T215045Z | Gleb |
| 029 | SelfModifying Trilangle | 250207T004839Z | Bbrk24 |
| 002 | H🌍 | 250204T191119Z | Nobody N |
| 014 | Jalapeño | 250204T045331Z | ATaco |
| 024 | HolyC | 151002T111303Z | dieter |
| 138 | RBFuck | 250127T154721Z | YufangIG |
| 020 | StackCell | 250120T190756Z | Starwort |
| 145 | Hatchback | 250114T155206Z | madeforl |
| 016 | Just | 241023T105727Z | Gleb |
| nan | SqueezeL | 250105T212048Z | AlephSqu |
| 034 | PDP11 machine language on BSD 2.11 | 230810T092654Z | ceilingc |
| 030 | AutoHotkey v2 | 241216T015959Z | amorphob |
| 2017 | Seed | 241023T153443Z | user2027 |
| 032 | Pascal | 241205T151246Z | Malbolge |
| 001 | Joeasus | 241120T235805Z | Seggan |
| 036 | m68k machine language tested on SunOS 4.1.4 | 221102T153257Z | ceilingc |
| 021 | Nythop | 241113T173437Z | Gleb |
| 024 | 'Python' is not recognized | 241104T194336Z | Gleb |
| 031 | BrainChild | 241101T030342Z | ATaco |
| 021 | Factor | 151212T172721Z | cat |
| 041 | Flobnar | 180807T035716Z | Esolangi |
| 014 | GAIA | 230418T145256Z | Ferro Lu |
| 022 | Python 3 | 241022T205206Z | Junebug |
| 021 | TinyAPL 0.9.0 | 241014T223044Z | noodle p |
| 128 | Template Qdeql | 241006T021006Z | Bbrk24 |
| nan | Hippopotomonstrosesquipedalian 2 | 230411T123158Z | The Empt |
| 225 | Messenger | 240706T021420Z | squarero |
| 221 | CLCINTERCAL | 210911T011352Z | user1004 |
| 102 | ACCUMULATOR | 240528T173310Z | Adelie |
| 016 | Clarity | 240526T154134Z | matronat |
| 555 | Lazy K | 240522T045302Z | Esolangi |
| 134 | ACCUMULATOR | 240525T091759Z | Rhaixer |
| 072 | brainfuck | 180427T145804Z | KSab |
| 018 | AWK | 240520T211821Z | C K |
| 022 | Befalse quirkster | 240520T072530Z | Bubbler |
| 015 | JSL JMP Scripting Language | 240420T163130Z | Glory2Uk |
| 061 | Acc!! | 240419T043233Z | Mukundan |
| 016 | Easyfuck | 240325T150357Z | Quadrupl |
| 080 | Positionally | 240301T062754Z | Mukundan |
| 023 | YodaLang | 240305T025619Z | noodle p |
| 013 | m4 | 240130T025158Z | camelCas |
| 017 | Uiua | 240130T003850Z | Adelie |
| 042 | D | 231231T182939Z | RedClove |
| 031 | IBM z/Architecture machine language on Linux | 231231T081341Z | ceilingc |
| 048 | PARISC 1.1 machine language on HPUX 10.20 | 230529T022317Z | ceilingc |
| 008 | Vyxal 3 | 231122T010154Z | lyxal |
| 022 | MetaBrainfuck x | 231119T162848Z | bsoelch |
| 015 | Noulith | 231116T153140Z | bigyihsu |
| 158 | U+0001 and U+10FFFE | 230907T162837Z | The Empt |
| 002 | H🌍 | 230806T080901Z | The Empt |
| 016 | {High} | 230806T050619Z | Dadsdy |
| nan | { | 230806T050442Z | Dadsdy |
| 046 | Rec | 230804T133150Z | D.. |
| 026 | Minecraft Function | 230803T073830Z | user1003 |
| 037 | AArch64 machine language Linux | 171124T194817Z | ceilingc |
| 040 | Alpha AXP machine language on OSF/1 | 230326T082049Z | ceilingc |
| 045 | 32 bit SPARC machine language on SunOS | 190507T060508Z | ceilingc |
| 031 | Koka | 230710T234706Z | alephalp |
| 171 | Perl 5 | 230622T171956Z | Wallace |
| nan | 230531T164423Z | Dadsdy | |
| 024 | Shasta v0.0.5 | 230604T013746Z | noodle p |
| 036 | Commodore C64 BASIC Noncompeting/just for fun | 230601T104715Z | Shaun Be |
| 011 | TalkingHead | 230528T194733Z | The Empt |
| nan | Num Stack Arithmac | 230522T115622Z | The Empt |
| 125 | Vyxal | 200829T080126Z | lyxal |
| 002 | Thunno 2 | 230412T103531Z | The Thon |
| 061 | Java 5 | 170823T093004Z | Olivier |
| 122 | Acc!! | 151109T181807Z | DLosc |
| 024 | hyperscript | 230421T195814Z | noodle p |
| 029 | Axo | 150929T100713Z | LegionMa |
| 1046 | Logically | 230412T062301Z | ATaco |
| 6610 | Hippopotomonstrosesquipedalian | 230405T091830Z | The Empt |
| 062 | Carbon | 220811T174545Z | Seggan |
| 020 | Python 3 | 230325T081627Z | Joe |
| 024 | Rol | 230209T011849Z | Seggan |
| 042 | Trilangle | 230302T214737Z | Bbrk24 |
| 014 | HP User RPL | 230204T014844Z | gildux |
| 016 | dc | 230204T014616Z | gildux |
| 092 | Aheui esotope | 230127T072649Z | Bubbler |
| 146 | Whitespace | 150828T131639Z | LukStorm |
| 030 | C | 150828T124048Z | LambdaBe |
| 017 | Haystack | 150828T133025Z | Kade |
| 079 | Java | 150828T125013Z | Geobits |
| 465 | Chef | 150828T145445Z | Sp3000 |
| 235 | MarioLANG | 150828T124607Z | Martin E |
| 4203 | Seed | 161028T144241Z | feersum |
| 058 | Homespring | 150903T195622Z | Martin E |
| 129 | Functional | 221124T131351Z | angel_p_ |
| 084 | Piet | 151224T052500Z | primo |
| 086 | ELF x86/x64 | 221116T022422Z | autumn |
| nan | Fig | 221110T214159Z | Seggan |
| 014 | Gaia | 221030T112507Z | Cliff |
| 079 | Grocery List | 190102T083020Z | u-ndefin |
| 020 | Cognate | 220705T104729Z | alephalp |
| 031 | x86/x86_64 on Linux | 160808T043345Z | ceilingc |
| 024 | SunSip w n | 220829T024838Z | Number B |
| 016 | Knight | 220802T021850Z | 97.100.9 |
| 022 | ObjectiveJava*#++.NETScriptnotation.sh | 220628T011441Z | aketon |
| 187 | Trianguish | 220729T171342Z | rydwolf |
| nan | Stack Cats | 220708T131338Z | Command |
| 034 | Flobnar | 220706T055659Z | Bubbler |
| 087 | Verbosity v2 | 220701T125830Z | CreaZyp1 |
| 175 | CATHY | 220626T220024Z | emanresu |
| 014 | Perhaps verbose | 220625T091226Z | Unrelate |
| 394 | Positionally | 220614T025212Z | emanresu |
| 065 | Cubestack | 220612T235420Z | tybocopp |
| 093 | A Language Programmed While Listening to Godspeed You! Black Emperor | 220609T062544Z | badatgol |
| 004 | Your | 220609T061256Z | badatgol |
| 080 | A very long language name that is very weird and yeah | 220609T061010Z | badatgol |
| 015 | Pyscript | 220608T194318Z | Iuri Gui |
| 021 | ABC | 220608T092113Z | badatgol |
| 033 | Scratch | 220608T091724Z | badatgol |
| 016 | MSWLogo | 220530T031506Z | badatgol |
| 078 | Brainfuck | 160103T162440Z | primo |
| 086 | EEL 86 Bytes | 220331T123906Z | user1117 |
| 016 | SMALL | 220514T200905Z | stefvans |
| 016 | tinylisp 2 | 220501T014212Z | DLosc |
| 756 | SPDT | 220421T164405Z | rydwolf |
| 014 | flax C | 220219T090048Z | zoomlogo |
| 019 | Makina | 220331T205702Z | Ginger |
| 022 | Fennel | 220330T053840Z | zoomlogo |
| 038 | C# 9+ | 220323T151406Z | Mayube |
| 160 | Tarfish | 210824T021336Z | emanresu |
| 022 | TIBASIC | 150828T160301Z | TheNumbe |
| 017 | Exceptionally | 220311T015526Z | DLosc |
| 030 | Coq | 220309T021100Z | jixperso |
| 016 | Noxan | 220226T115418Z | Alan Bag |
| 020 | Etch | 220303T190530Z | Ginger |
| 1430 | Binary Lambda Calculus | 220228T102837Z | DialFros |
| 637 | Bit | 220227T114055Z | DialFros |
| 283 | 99 | 220226T082154Z | DialFros |
| 001 | QWERTY | 220221T170151Z | Someone |
| 494 | dotcomma | 200823T234358Z | rydwolf |
| 445 | Plumber | 191209T164759Z | rydwolf |
| 015 | Halfwit A | 220220T093355Z | emanresu |
| 022 | Python | 220203T060703Z | Rhaixer |
| 022 | Lean | 220217T233043Z | David Sc |
| 064 | Risky | 210613T041553Z | Undersla |
| 067 | 10IPL | 210415T233226Z | rydwolf |
| 002 | Vyxal | 220205T080343Z | DialFros |
| 014 | Jealous | 220204T180928Z | Fmbalbue |
| 040 | tinylisp | 220203T063724Z | Razetime |
| 001 | Seriously | 220201T043305Z | DialFros |
| 033 | Kotlin | 220131T181631Z | random p |
| 048 | Bytebased Instruction Jumping | 220122T230009Z | Fmbalbue |
| 023 | Lexurgy | 220119T150719Z | bigyihsu |
| 036 | Lost | 170805T041113Z | Wheat Wi |
| 017 | str | 220114T164443Z | Fmbalbue |
| 4078 | Seed | 190908T073736Z | Kamila S |
| 1156 | Uselesslang | 211225T011659Z | Fmbalbue |
| 2163 | Python is Magic | 211220T162116Z | Fmbalbue |
| 043 | CASL II | 210417T121822Z | user1004 |
| 1161 | Woodchuck | 211201T172355Z | Caelus |
| 015 | NLRNIS | 211116T170114Z | Fmbalbue |
| 039 | Haifuckqueue | 211120T204749Z | scpchick |
| 022 | Letters++ | 211126T003304Z | Fmbalbue |
| 021 | Nevermind | 211126T002305Z | Fmbalbue |
| 080 | JavaScript | 211124T154300Z | Justinis |
| 027 | FROM HERE TO THERE | 211122T161501Z | Fmbalbue |
| 002 | Tictac | 211121T003303Z | lyxal |
| 1192 | Sysfk darwin64 syscalls | 211118T011541Z | TheOnlyM |
| 087 | FIM++ | 211116T073849Z | user1004 |
| 012 | KonamiCode | 211111T183707Z | Ginger |
| 059 | RickRollLang | 211107T222016Z | scpchick |
| 032 | PICO8 | 211107T164242Z | weatherm |
| 015 | Paradoc | 211106T021328Z | scpchick |
| 017 | ErrLess | 211023T064800Z | Ruan |
| 034 | Aussie++ | 211029T173830Z | Bbrk24 |
| 000 | Hello Hell | 211028T142133Z | Aaroneou |
| 020 | Logomocja | 211014T195013Z | sech1p |
| 051 | // TODO fix | 211012T105209Z | pxeger |
| 014 | Vim | 211008T210013Z | Aaroneou |
| 021 | قلب repl | 211008T145524Z | Wheat Wi |
| 033 | GotoOutput | 210913T185256Z | Bot_01 |
| 038 | Quipu | 150904T212552Z | Martin E |
| 092 | abcn | 210828T122807Z | Eternal |
| 042 | Minim | 210817T034310Z | Christia |
| 075 | Arduino | 210813T110932Z | Bbrk24 |
| 055 | 文言 / wenyan‑lang | 210803T044036Z | LittleWh |
| 129 | Flipbit | 171114T190154Z | caird co |
| 002 | 51AC8 | 210726T080218Z | zoomlogo |
| 017 | GForth 17 Bytes | 210726T071626Z | user1052 |
| 013 | S3C | 210709T033730Z | carne |
| 118 | brainbox | 210708T150812Z | Aaroneou |
| 029 | ARM Thumb | 210707T052126Z | Bubbler |
| 268 | Windows Portable Executable 32 bit | 210618T172203Z | stasoid |
| 014 | BrainCrash | 210622T125507Z | user1004 |
| nan | 210621T090512Z | hyperneu | |
| 018 | RAMDISP | 210621T115632Z | Pro Oder |
| 484 | æae | 210617T205058Z | smarnav |
| 002 | yuno abandoned | 210506T215208Z | hyperneu |
| 036 | Minecraft 1.16 | 210614T020201Z | TKDKid10 |
| 025 | Lispy | 210522T005014Z | sysgramm |
| 016 | <>^v | 210613T001940Z | astroide |
| 636 | Incident | 210612T025554Z | stasoid |
| 023 | NOTE | 210609T211853Z | name |
| 025 | Squire | 210607T030857Z | EasyasPi |
| 035 | Lolwho.Cares | 210606T173902Z | Robot |
| 075 | AEWNN | 210606T171053Z | name |
| 020 | Wiselang | 210522T054015Z | Sakon |
| 016 | Knight | 210521T232840Z | EasyasPi |
| 025 | Subleq 8bit | 210518T231038Z | Axuary |
| 532 | EmojiCoder | 210514T080401Z | wasif |
| 026 | +#?! | 210514T070430Z | wasif |
| 125 | Wierd Chris's | 210512T032543Z | stasoid |
| 034 | Snap! | 210505T074114Z | wasif |
| 710 | Flurry bnn | 210501T035351Z | hyperneu |
| 2532 | 1L_a | 210424T145300Z | stasoid |
| 018 | REXX | 160106T052515Z | Jerry Je |
| 002 | Vyxal | 210420T195943Z | Aaroneou |
| 001 | Deadfish~ | 210420T194729Z | Caleb Fu |
| 026 | PPL | 210419T183553Z | user1006 |
| 022 | Pinecone | 210418T113245Z | wasif |
| 042 | Branch | 210417T000957Z | hyperneu |
| 029 | Yggdrasil | 210417T175035Z | caird co |
| 014 | Sandwich | 210415T140946Z | karx |
| 028 | Duocentehexaquinquagesimal | 210414T183859Z | Makonede |
| 023 | Grok | 210413T193817Z | Aaroneou |
| 008 | Python 3 + lkjqwhe | 210413T183055Z | Makonede |
| 066 | Golunar | 210413T173714Z | Makonede |
| 058 | vJASS Warcraft 3 | 200417T004108Z | ネルマン |
| 015 | PowerShell | 150828T132510Z | AdmBorkB |
| 033 | Kotlin | 210210T151911Z | grian |
| 020 | Arturo | 210131T175603Z | Adam |
| 071 | ArnoldC | 150828T133951Z | AlCode |
| 009 | Python3 | 210128T215040Z | It's |
| 036 | Rust | 210128T115951Z | Rohan |
| 023 | Hexagony | 180519T134620Z | user2027 |
| 014 | BRASCA | 210122T093209Z | SjoerdPe |
| nan | Pxem | 210114T130234Z | user1004 |
| 1071 | Length | 210112T233537Z | lyxal |
| 047 | kavod | 201230T230859Z | Michael |
| 017 | !@#$%^&*_+ | 201230T194733Z | Michael |
| 034 | Scala 3 | 201128T190803Z | user |
| 276 | Fugue | 201128T144223Z | LegionMa |
| 018 | Source Engine Console | 201126T144130Z | user9940 |
| 931 | Shu | 201112T211103Z | user9921 |
| 030 | Befalse | 201109T180350Z | user9275 |
| 022 | Taktentus | 201109T161703Z | user9275 |
| 048 | Bound | 201020T144635Z | HoofedEa |
| 454 | Tetr4phobi4 | 200421T124024Z | ネルマン |
| 023 | Rutger | 200922T150646Z | caird co |
| 3271 | Mornington Crescent | 200916T110224Z | Dorian |
| 041 | Desmos | 200907T231437Z | Ethan Ch |
| 014 | MathGolf | 200903T083734Z | Kevin Cr |
| 062 | MAWP | 200511T141713Z | Dion |
| 044 | Sardonyx | 200830T015349Z | sugarfi |
| 016 | MAWP 2.0 | 200826T125718Z | Dion |
| 062 | CSS | 200814T214015Z | derder56 |
| 006 | Arn | 200810T133712Z | ZippyMag |
| 013 | Integral | 200802T221000Z | nph |
| 1185 | No | 170402T004625Z | caird co |
| 046 | Cubically | 200620T070846Z | the defa |
| 015 | Jsonnet with S | 200621T030559Z | manatwor |
| 070 | evil | 200619T000954Z | AdamS |
| 001 | Deadfish~ | 200619T000722Z | AdamS |
| 651 | Brainetry | 200610T211427Z | RGS |
| 016 | International Phonetic Esoteric Language | 190928T021800Z | bigyihsu |
| 020 | C64 BASIC | 200422T140813Z | PkmnQ |
| 058 | evil | 200411T103604Z | the defa |
| 378 | Cood | 200328T045056Z | user9206 |
| 025 | ><> | 200411T083621Z | Dion |
| 013 | PHP | 150828T125345Z | galexite |
| 070 | evil | 150828T123641Z | grc |
| 017 | KRC | 200310T031053Z | user9206 |
| 018 | Roj | 200301T062651Z | user9206 |
| 1210 | W d | 191214T092211Z | user8505 |
| 064 | naz | 200101T105639Z | sporebal |
| 015 | tq | 191231T140624Z | user8505 |
| 034 | Symbolic Raku | 191230T064852Z | Jo King |
| 020 | Spice | 191227T164117Z | Slord6 |
| 103 | Ral | 191227T142736Z | Endenite |
| 021 | Visual Basic Script | 190829T142741Z | Sagittar |
| 070 | Intcode | 191227T021845Z | The Fift |
| 308 | Plain English | 170628T025327Z | Jasper |
| 029 | Wren | 191207T125649Z | user8505 |
| 021 | CRPL and its sister language PRPL | 171202T222805Z | Nissa |
| 082 | Java | 191206T042651Z | user9036 |
| 019 | Ruby | 191112T022631Z | user9036 |
| 201 | Intcode | 191205T062013Z | lyxal |
| nan | 191205T210902Z | Nissa | |
| 324 | Poetic | 191112T123342Z | JosiahRy |
| 008 | Keg | 181106T215224Z | lyxal |
| 024 | Simula cim | 191030T185207Z | squid |
| 083 | 1+ | 191009T062920Z | Jo King |
| 6815 | Ada | 170212T014055Z | python-b |
| 023 | Cascade | 190926T021555Z | Jo King |
| 152 | Verbosity v2 | 190921T121959Z | caird co |
| nan | Pxem | 190910T231253Z | user8505 |
| 159 | Nandy | 190831T064641Z | user8505 |
| 014 | anyfix | 190830T044235Z | user8505 |
| 165 | Jasmin | 150902T173233Z | ankh-mor |
| 013 | EBCDIC Punched Card | 190825T213041Z | roblogic |
| 055 | Triangular | 190825T183149Z | Edgex42 |
| 040 | C++ gcc | 190812T182043Z | dingledo |
| 016 | 33 | 190716T200517Z | TheOnlyM |
| 021 | Incalculate 2.0 | 190706T150817Z | ry00000 |
| 015 | Keg | 190628T124601Z | user8505 |
| 592 | Shakespeare Programming Language | 180409T060347Z | Jo King |
| 853 | Turing Machine But Way Worse | 190516T110709Z | u-ndefin |
| 015 | VBA | 150828T145825Z | edc65 |
| 032 | ARMv7 machine language on Linux | 160815T082014Z | ceilingc |
| 512 | Bootable x86 machine code | 180708T151112Z | Endenite |
| 021 | VTL2 | 190507T181324Z | brhfl |
| 063 | Scala | 190504T021106Z | Peter |
| 067 | legit | 190503T223153Z | Maya |
| 164 | ]=[ | 180506T033009Z | 12Me21 |
| 324 | Bitwise Cyclic Tag But Way Worse | 190331T192655Z | MilkyWay |
| 020 | Tamsin | 190310T030919Z | Esolangi |
| 026 | VBS Windows Script Host | 190322T130452Z | elipszil |
| 025 | JS Windows Script Host | 190321T185014Z | elipszil |
| 044 | K5+iKe | 150831T213912Z | kirbyfan |
| 025 | A Pear Tree | 190305T034147Z | ais523 |
| 235 | JVM bytecode OpenJDK asmtools JASM | 190213T020336Z | Kitten |
| 260 | whenyouaccidentallylose100endorsementsinnationstates | 190205T164552Z | MilkyWay |
| 022 | axo | 190206T035314Z | MilkyWay |
| 022 | C# Visual C# Interactive Compiler | 190130T194842Z | dana |
| 015 | Clam | 190107T211857Z | Mayube |
| 036 | LC3 object file | 181228T054814Z | iBug |
| 024 | Xanathar | 181028T212357Z | NoOneIsH |
| 033 | VSL | 180224T222541Z | Downgoat |
| 039 | ABCassembler | 181225T224044Z | Οurous |
| 021 | ABC | 181225T174240Z | Dennis |
| 136 | Symbolic Python | 181215T090324Z | Jo King |
| 022 | Alchemist | 181125T123847Z | ბიმო |
| 018 | Kitten | 181118T090418Z | alephalp |
| 153 | Pixiedust | 180928T193900Z | Nissa |
| 191 | ESOPUNK | 180914T175939Z | SIGSTACK |
| 015 | Backhand | 180916T032059Z | Jo King |
| 068 | ObCode | 180905T122133Z | wastl |
| 021 | 𒅴 𒆰 | 180808T132712Z | Beta Dec |
| 025 | µ6 | 180807T193708Z | ბიმო |
| 019 | Selfmodifying Brainfuck | 150915T180243Z | mbomb007 |
| 1562 | Pikachu | 180806T161629Z | Taylor R |
| 120 | Pepe | 180226T145854Z | RedClove |
| 021 | Rockstar | 180801T180815Z | Mayube |
| 150 | 2DFuck | 180507T175239Z | wastl |
| 056 | Haxe | 160919T151410Z | ETHprodu |
| 136 | BrainFlak | 160912T043413Z | Wheat Wi |
| 043 | Q# | 180702T180523Z | Pavel |
| 021 | Sisi | 180701T123539Z | Erik the |
| 019 | Z80Golf | 180617T100733Z | lynn |
| 017 | Ahead | 180531T204025Z | snail_ |
| 511 | TapeBagel | 180621T115542Z | Didix |
| 111 | Meq | 180316T092257Z | Didix |
| 672 | Nikud | 180610T223506Z | Bary12 |
| 037 | Thing | 180611T072245Z | Windmill |
| 137 | brainfuck | 180602T132659Z | Muhammad |
| 019 | HadesLang | 180531T195230Z | Azeros |
| 002 | 2Col | 170524T111057Z | Mayube |
| 020 | Lua | 150828T132527Z | jakeback |
| 094 | tinyBF | 180521T012016Z | Jo King |
| 065 | BrainfuckSubstitutor | 180520T091348Z | Okx |
| 020 | Logo programming language | 180410T145846Z | Artur Ke |
| 065 | ELVMIR | 180125T140946Z | Dennis |
| 029 | Aubergine | 180507T064730Z | ASCII-on |
| 181 | Wierd John's | 170914T212752Z | Dennis |
| 733 | Whirl | 180425T033209Z | ASCII-on |
| 020 | IO | 180505T162257Z | Mesabloo |
| 081 | Zig | 180505T210313Z | Okx |
| 014 | Unnamed | 180428T160136Z | user8019 |
| 047 | Subskin | 180428T124953Z | jimmy230 |
| 036 | Vala | 151230T140727Z | user1921 |
| 111 | Beatnik | 180427T231206Z | jimmy230 |
| 036 | Inform 7 + C by G | 150829T040657Z | curiousd |
| 128 | Brainfuck | 150828T132309Z | mbomb007 |
| 036 | Lorale 37 | 180414T064744Z | TheOnlyM |
| 353 | LNUSP | 170912T035706Z | stasoid |
| 026 | Mind | 150828T193039Z | lynn |
| 032 | x86_64 machine code for Linux | 150828T141005Z | grc |
| 835 | Shakespeare Programming Language | 180409T022925Z | Khuldrae |
| 023 | Euphoria | 180409T043811Z | Mathew A |
| 021 | Attache | 180409T031038Z | Conor O& |
| 002 | Jstx | 180331T220217Z | Quantum6 |
| 068 | Pada | 150828T185922Z | Martin E |
| 062 | MachineCode | 180327T225044Z | MD XF |
| 159 | Dodos | 180315T140906Z | Dennis |
| 3568 | Mornington Crescent | 150904T180206Z | Martin E |
| 040 | R16K1S60 | 180313T211618Z | 12Me21 |
| 039 | Pyt | 171231T134428Z | mudkip20 |
| 138 | BrainFlak | 180312T085034Z | Jo King |
| 027 | PHP on a standard Apache Server | 180312T235326Z | lilHar |
| 021 | Atari Logo | 180312T045914Z | Grant Mi |
| 016 | Dirty | 180310T213027Z | Οurous |
| 046 | QUARK | 180309T154646Z | moonhear |
| 036 | ALPHA | 180308T175848Z | Mercury |
| 040 | Fueue | 180307T100444Z | Martin E |
| 125 | MachineCode on x86_64 | 180307T022515Z | MD XF |
| 015 | DipDup | 180307T112322Z | alephalp |
| 041 | Reflections | 180305T152037Z | wastl |
| 042 | Dreaderef | 180305T050659Z | Esolangi |
| 014 | NEUPL | 180207T213912Z | iPhoenix |
| 017 | Brat | 180226T151853Z | Mr. Xcod |
| 020 | Min | 180226T090934Z | Panda0nE |
| 008 | Stax | 180224T223719Z | Weijun Z |
| nan | rk | 180222T041007Z | MD XF |
| 068 | AlphaBeta | 180219T022704Z | Dennis |
| 021 | Felix | 180213T043830Z | Esolangi |
| 042 | Forked | 180211T015935Z | Dennis |
| 016 | Crayon | 180212T113805Z | Wurlitze |
| 063 | Momema | 180212T032248Z | Esolangi |
| 019 | Wumpus | 180210T121206Z | Martin E |
| 056 | R16K1S60 Assembly | 180208T153306Z | moonhear |
| 195 | Folders pure | 180202T050745Z | Eran W |
| 1426 | Ook! | 180206T131027Z | Luis fel |
| 071 | 17 | 180204T103859Z | Hugh Wil |
| 029 | Hexagony | 180202T100430Z | Jo King |
| 034 | Rust | 180202T160813Z | moonhear |
| 197 | Commentator | 180128T210232Z | caird co |
| 031 | Dreaderef | 170820T045806Z | Esolangi |
| 020 | MYBASIC | 180131T195625Z | Taylor R |
| 016 | Yabasic | 180131T195506Z | Taylor R |
| 017 | uBASIC | 180130T224651Z | Taylor R |
| 016 | 095 | 180125T202020Z | user7781 |
| 152 | PainFlak | 180120T161821Z | Dennis |
| 014 | Retina | 150828T161404Z | Martin E |
| 016 | shortC | 170513T040951Z | MD XF |
| 049 | Triangularity | 180107T173005Z | caird co |
| 023 | Broccoli | 180112T040518Z | DJMcMayh |
| 030 | Clean | 180109T230209Z | Οurous |
| 000 | Stuck | 150828T123508Z | Fatalize |
| 001 | Ace | 180106T211936Z | qqq |
| 041 | face | 171231T133920Z | Doorknob |
| 100 | Assembunny | 171219T150007Z | Nissa |
| 214 | DOBELA | 170815T202527Z | stasoid |
| 028 | SNOBOL4 CSNOBOL4 | 171211T190155Z | Giuseppe |
| 152 | LLVM IR 4.0.1 | 150828T165245Z | Kritzefi |
| 110 | LLVM IR | 171211T170350Z | Dennis |
| 029 | Whispers | 171205T204006Z | caird co |
| 382 | Verbosity | 171205T203031Z | caird co |
| 078 | Cubically | 170615T003647Z | MD XF |
| 017 | NotQuiteThere | 170414T203944Z | caird co |
| 014 | Implicit | 170905T232525Z | MD XF |
| 015 | Quetzalcoatl | 160224T175200Z | NoOneIsH |
| 015 | Excel VBA | 171110T152247Z | Taylor R |
| 285 | INTERCAL | 150828T150321Z | kirbyfan |
| 448 | BrainFlak | 171108T204357Z | qqq |
| 091 | Spaced | 171108T202955Z | user7591 |
| 020 | Python 1 | 170530T195100Z | qqq |
| 011 | Japt | 151108T191432Z | ETHprodu |
| 200 | Symbolic Python | 171025T191807Z | FlipTack |
| 020 | Add++ | 170604T035414Z | caird co |
| 182 | Archway2 | 171021T065405Z | Potato44 |
| 022 | Рапира Rapira | 171009T154239Z | KSmarts |
| 076 | Java 8 | 151123T165315Z | TheNumbe |
| 1341 | Wierd | 160112T010308Z | Jerry Je |
| 149 | Bitwise | 170923T004755Z | MD XF |
| 281 | ADJUST | 171003T001027Z | stasoid |
| 181 | Nhohnhehr | 170928T142055Z | Erik the |
| 018 | AsciiDots | 170810T034215Z | user3141 |
| 362 | BrainFlump | 170913T101033Z | Mayube |
| 014 | Recursiva | 170824T135230Z | 0xffcour |
| 113 | PATH | 170911T023717Z | Dennis |
| 039 | Apps Script + Google Sheets | 160617T181427Z | weatherm |
| 015 | Deorst | 170902T155058Z | caird co |
| 024 | Emoji | 170719T161645Z | ABot |
| 903 | Sqirrel Peter | 170711T230611Z | Jerry Je |
| 596 | JoshScript | 170823T214532Z | Josh |
| 017 | Braingolf | 170503T140156Z | Mayube |
| nan | SadFlak | 170624T080424Z | Destruct |
| 448 | Monkeys | 170821T192928Z | Dennis |
| 060 | MY | 170805T171244Z | Adalynn |
| 174 | Magic Number | 170813T172907Z | Daniel O |
| 113 | JQuery | 170306T224855Z | MD XF |
| 123 | Set | 170802T000330Z | MD XF |
| 1175 | Windows Portable Executable PE | 170810T014424Z | Matheus |
| 052 | D | 170226T040927Z | Moonchil |
| 055 | Lean Mean Bean Machine | 170717T125156Z | Mayube |
| 022 | axo | 170801T161330Z | Okx |
| 077 | Numberwang | 170727T212438Z | Conor O& |
| 239 | Shtriped | 170727T205912Z | Conor O& |
| 857 | Pyramid Scheme | 170727T205026Z | Conor O& |
| nan | Chip | 170201T204144Z | Phlarx |
| 024 | Joy | 151121T033604Z | alephalp |
| 199 | ZT | 170720T042829Z | Jerry Je |
| 390 | ABCD | 170719T183508Z | ABot |
| 061 | SE | 170719T182736Z | ABot |
| 030 | Subterra | 170719T175755Z | ABot |
| 294 | Caker | 170719T175042Z | ABot |
| 085 | HTML & JS w/ jQuery | 170719T162100Z | ABot |
| 068 | Emmental | 170719T161357Z | ABot |
| 014 | 170718T172928Z | totallyh | |
| 021 | Positron | 170718T044555Z | hyperneu |
| 018 | Ly | 170718T043037Z | LyricLy |
| 065 | COBOL | 170525T150635Z | Bakna |
| 144 | Aheui | 170717T143757Z | Sait2000 |
| 002 | @ | 170709T223712Z | Gemdude4 |
| 321 | nouse | 170711T223448Z | Jerry Je |
| 017 | Foam | 170708T181833Z | Esolangi |
| 011 | Bubblegum | 150906T060559Z | Dennis |
| 015 | cQuents | 170703T202425Z | Stephen |
| 008 | Husk | 170703T132537Z | Leo |
| 073 | MY | 170619T190935Z | Adalynn |
| 066 | Triangular | 170614T102243Z | Leaky Nu |
| 779 | Ook! | 170611T011901Z | No one |
| 016 | Pyffman 1 | 170610T081233Z | L3viatha |
| 1552 | Small | 170610T054925Z | user6933 |
| 820 | Memescript | 170609T205319Z | No one |
| 020 | MATLAB | 161011T203339Z | george |
| 016 | Neim | 170605T115041Z | Erik the |
| 2524 | Fishing | 170605T091520Z | jimmy230 |
| 016 | Noether | 170530T194735Z | Beta Dec |
| 048 | Decimal | 170531T173223Z | MD XF |
| 015 | Casio Basic | 170530T201419Z | ADDB |
| 013 | Packed Pyth | 170525T043831Z | izzyg |
| 015 | Fourier | 150828T122924Z | Beta Dec |
| nan | 170523T064916Z | caird co | |
| nan | Klein | 170518T190758Z | Okx |
| nan | Klein | 170522T134727Z | Riley |
| 214 | StupidScript | 170522T035809Z | Alex |
| nan | Klein | 170519T015930Z | ATaco |
| 020 | Standard ML | 160718T135830Z | Laikoni |
| 001 | MY | 170509T001747Z | Adalynn |
| 032 | SASS | 170509T003743Z | arodebau |
| 020 | Commodore 64/128/VIC20 & others BASIC | 170210T165816Z | Shaun Be |
| 054 | C++ | 170121T235449Z | GCaldL |
| 106 | NTFJ | 160302T193627Z | ETHprodu |
| 019 | Aceto | 170504T173505Z | Laura Bo |
| 015 | OIL | 170504T123119Z | L3viatha |
| 020 | TSQL | 150828T141847Z | mbomb007 |
| 020 | Python 2 | 150828T124357Z | Beta Dec |
| 1142 | # | 170414T174702Z | caird co |
| 2200 | ~~~ | 170414T175045Z | caird co |
| 013 | ASP / VBSCRIPT | 170414T143120Z | Shaggy |
| 018 | Alice | 170410T211335Z | Martin E |
| 013 | Charcoal | 170409T233847Z | ASCII-on |
| 369 | PUPPY | 170409T201957Z | Josh |
| 009 | USML | 170408T221342Z | MarkSill |
| 018 | Turing | 170407T210457Z | Daniel F |
| 2384 | HODOR | 170403T214737Z | caird co |
| 015 | Samau | 151223T081951Z | alephalp |
| 002 | √ å ı ¥ ® Ï Ø ¿ | 170328T142230Z | caird co |
| nan | Wise | 161026T220731Z | Wheat Wi |
| 191 | Traffic | 170316T211132Z | Business |
| 078 | KanyeC | 170316T143834Z | caseif |
| 154 | Graphic | 170314T195812Z | fəˈnɛtɪk |
| 016 | Crayon | 170306T140857Z | ETHprodu |
| 032 | Hillberth | 170303T183941Z | TuxCraft |
| nan | JSFuck | 170217T043021Z | rabbitfo |
| 041 | Condit | 150904T052513Z | Dennis |
| 090 | Piet | 150902T100250Z | Sp3000 |
| 090 | Changeling | 170212T040253Z | Dennis |
| 022 | SQLite | 170211T230146Z | Pavel |
| 019 | K oK | 170209T200248Z | Dennis |
| 016 | Threead | 170112T053415Z | Pavel |
| 577 | Unreadable | 150902T053714Z | Dennis |
| 017 | 8th | 170112T201719Z | Chaos Ma |
| 017 | Valyrio | 170204T223459Z | user6357 |
| 026 | Haskell | 150828T162935Z | Dennis |
| 184 | Taxi | 170201T175113Z | Erik the |
| 630 | Parenthetic | 150904T003237Z | Sp3000 |
| 015 | Glee | 170202T020925Z | M L |
| 015 | SmileBASIC | 170123T141548Z | snail_ |
| nan | Del|m|t | 170122T225804Z | MercyBea |
| 021 | Befunge93 | 170122T195040Z | James Ho |
| 018 | Minkolang v.0.9 | 170121T221724Z | Conor O& |
| 024 | Racket | 170120T182739Z | ETHprodu |
| 026 | PicoLisp | 170120T181221Z | ETHprodu |
| 018 | fish | 170120T175756Z | ETHprodu |
| 003 | QBIC | 170120T153807Z | steenber |
| 014 | 2sable | 170120T151743Z | Business |
| 022 | Lily | 170112T173358Z | Chance |
| 129 | C works with gcc/linux/x86_64 | 170112T080657Z | G B |
| 1350 | Whirl | 170112T005448Z | Chance |
| 223 | WSF | 170104T022052Z | anna328p |
| 038 | Somme | 170103T061103Z | Conor O& |
| 031 | DUP | 161229T194607Z | M L |
| 016 | Pushy | 161118T184517Z | FlipTack |
| 021 | uBASIC | 161215T043542Z | Pavel |
| 022 | Gammaplex | 161221T025454Z | Riker |
| 023 | Zetaplex | 161221T025321Z | Riker |
| 018 | stacked | 161221T005144Z | Conor O& |
| 020 | Kitanai | 161219T141448Z | Sygmei |
| 021 | *><> | 161219T114959Z | Sok |
| 018 | Befunge 98 | 150828T142353Z | Luke Mar |
| 161 | Beam | 150905T013207Z | ETHprodu |
| 020 | NetLogo | 161206T221549Z | wyldstal |
| 059 | ELF 32bit LSB executable Linux | 160630T203836Z | Dennis |
| 104 | ELF 64bit LSB executable Linux | 160630T204435Z | Dennis |
| 021 | TI83 Hex Assembly | 161201T201016Z | habs |
| 040 | Labyrinth | 150828T153748Z | Martin E |
| 022 | Kotlin | 161130T003935Z | Tyler Ma |
| 032 | Brian & Chuck | 151106T141745Z | Martin E |
| 172 | Z | 161127T190317Z | Esolangi |
| 020 | Stackish | 161121T201312Z | ender_sc |
| 806 | TP | 161118T043425Z | ender_sc |
| 021 | Mathematica 21 Bytes | 161118T203628Z | Kelly Lo |
| 013 | HTML | 150828T141124Z | jrich |
| 016 | JSON | 161111T141131Z | NeRoboto |
| 017 | Hot Soup Processor | 150828T123556Z | Sp3000 |
| 023 | JLisp | 161103T143031Z | TuxCraft |
| 019 | Ruby | 161031T135111Z | Jatin Dh |
| 022 | Python 3 | 150828T124503Z | Blue |
| 015 | FEU | 161008T105813Z | TuxCraft |
| 018 | StackFuck | 161018T175529Z | TuxCraft |
| 019 | Y | 161012T153031Z | TuxCraft |
| 127 | Codelike | 161011T192907Z | Connor D |
| 021 | Awesome | 161005T172529Z | univalen |
| 396 | Lolo | 161004T221732Z | user4701 |
| 023 | Processing | 160815T223024Z | Cody |
| 032 | Logy | 160930T215649Z | TuxCraft |
| 248 | Addict | 160927T185409Z | ETHprodu |
| 014 | V | 160927T023637Z | Conor O& |
| 043 | CILOS | 160925T185358Z | TuxCraft |
| 311 | INTERCALL | 160610T163000Z | TuxCraft |
| 029 | Cubix | 160314T165222Z | ETHprodu |
| 121 | Logicode | 160920T065722Z | clismiqu |
| 019 | S.I.L.O.S | 160712T012933Z | Rohan Jh |
| 044 | Dialpha bytecode | 160915T223838Z | TuxCraft |
| nan | BrainFlak | 160829T044549Z | DJMcMayh |
| 570 | MemeGolf | 160801T183849Z | TuxCraft |
| 002 | Straw | 160909T180053Z | TuxCraft |
| 1326 | MiniStringFuck | 160904T065919Z | Erik the |
| 015 | Ru | 160831T103453Z | TuxCraft |
| 025 | SQF | 160815T221408Z | Οurous |
| 294 | Caker | 160815T181125Z | TuxCraft |
| 039 | Golfuck | 160814T225359Z | acrolith |
| 004 | PyMin | 160808T002629Z | acrolith |
| 015 | Jellyfish | 160807T100345Z | Martin E |
| 028 | Neoscript | 160807T100236Z | TuxCraft |
| 017 | reticular | 160804T014604Z | Conor O& |
| 037 | Emojicode | 160803T150503Z | betseg |
| 294 | Pyramid | 160730T071953Z | clismiqu |
| 021 | Sesos | 160717T004858Z | Dennis |
| 021 | F# | 150828T140934Z | oopbase |
| 021 | Arc | 160728T002214Z | user1921 |
| 029 | PAWN | 160726T092531Z | user1921 |
| 020 | Node.js REPL | 160726T203615Z | TuxCraft |
| 020 | Matlab / Octave | 150828T152204Z | Luis Men |
| 1539 | Cow | 160723T161257Z | Ronronne |
| 690 | Gaot++ | 160723T144845Z | TuxCraft |
| 042 | BrainCurses | 160722T023917Z | Conor O& |
| 016 | Maple | 160722T021936Z | DSkoog |
| 018 | slang | 160721T154231Z | MCMaster |
| 024 | eacal | 160720T231511Z | Conor O& |
| 042 | Arithmescript | 160720T035027Z | bb216b3a |
| 016 | PostScript | 160720T051806Z | Geoff Re |
| nan | Rews | 160718T185242Z | TuxCraft |
| 075 | Commercial | 160717T202236Z | TuxCraft |
| 033 | OPL32 | 160713T161704Z | user1921 |
| 055 | Kipple | 160713T150512Z | Erik the |
| 014 | Your Mom | 160713T110825Z | user4853 |
| 030 | 68k machine code EASy68k | 160711T083020Z | user4853 |
| 020 | Cheddar | 160407T235004Z | Downgoat |
| 048 | Gopher | 160708T055834Z | Shubshub |
| 015 | Casio BASIC | 160708T111254Z | Maliafo |
| 015 | hashmap | 160704T111338Z | user4701 |
| 015 | Silicon | 160630T131014Z | m654 |
| 033 | scratchblocks2 | 160629T170827Z | Erik the |
| 020 | DOG | 160628T180028Z | Business |
| 028 | BruhScript | 160628T141310Z | TuxCraft |
| 134 | Bodyless HTTP response headers | 150903T210219Z | Qwertiy |
| 015 | Fuzzy Octo Guacamole | 160318T184119Z | Riker |
| 021 | Golisp | 160619T211004Z | TuxCraft |
| 080 | 0815 | 160608T122139Z | Erik the |
| 028 | Oration | 160226T192840Z | Riker |
| nan | 64bit Windows NT executable | 160525T205513Z | user8397 |
| 017 | Fith | 160616T204624Z | jqkul |
| nan | Wat | 160612T234355Z | TuxCraft |
| nan | Stack Cats | 160608T215533Z | Martin E |
| 366 | ABCD | 160608T141416Z | Erik the |
| 061 | Go | 150828T180218Z | izzyg |
| 017 | Tellurium | 160516T123557Z | m654 |
| 019 | Come Here | 160325T130315Z | SuperJed |
| 048 | Kotlin | 160601T182113Z | Rames |
| 029 | ~English | 160601T192202Z | user8397 |
| 093 | EEL | 160601T142203Z | m654 |
| 015 | APL | 160528T203026Z | TuxCraft |
| 080 | UGL | 160420T155206Z | Leaky Nu |
| 015 | Grin | 160520T170131Z | user5340 |
| 021 | Auo | 160520T165906Z | user5340 |
| 023 | Batsh | 160520T132051Z | user4853 |
| 015 | Scratch | 160520T142853Z | weatherm |
| 014 | Pyke | 160516T121940Z | Blue |
| 016 | Y | 160428T052054Z | Jerry Je |
| 2416 | Molecule | 160424T121049Z | user4701 |
| 034 | Pickle | 160415T231620Z | Censored |
| 014 | Foo | 150828T141319Z | Dennis |
| 410 | META | 160414T190746Z | Conor O& |
| 039 | .kill | 160408T144814Z | Conor O& |
| 053 | BTClang | 160402T191051Z | Adnan |
| 165 | Flummery v3 | 160314T021329Z | Conor O& |
| 022 | Javascript Nashorn | 160313T123355Z | SuperJed |
| 115 | Constant | 160403T220627Z | Conor O& |
| 028 | JavaScript Node.js | 160402T194946Z | Michał P |
| 016 | Pylongolf | 160331T114443Z | user4701 |
| 018 | Cy | 160324T210629Z | Cyoce |
| 060 | Verilog | 160320T032536Z | Justin |
| 098 | VHDL | 160320T033531Z | Justin |
| 018 | Mathcad | 160325T133234Z | Stuart B |
| 002 | Scratch | 160324T180244Z | user5153 |
| 024 | ForceLang | 160229T031715Z | SuperJed |
| 118 | NTFJ | 160211T200823Z | Conor O& |
| 022 | Reng v.1 | 160320T002826Z | Conor O& |
| 014 | Gogh | 160318T124026Z | Zach Gat |
| 038 | Nemerle | 160106T053246Z | Jerry Je |
| 1583 | Mmmm | 160315T144725Z | SuperJed |
| 107 | Pris | 160315T023255Z | Conor O& |
| 019 | Detour | 160127T070449Z | Cyoce |
| 007 | 05AB1E | 151223T014929Z | Adnan |
| 015 | beeswax | 151224T012623Z | M L |
| 199 | Shtriped | 160219T035610Z | Calvin |
| 017 | Vimscript | 150828T170258Z | Kamehame |
| 059 | bAdkOde | 160226T182232Z | mbomb007 |
| 016 | Y | 160218T005031Z | Conor O& |
| 012 | TeaScript | 151108T232839Z | Downgoat |
| 007 | Jolf | 160212T035343Z | Conor O& |
| 017 | jq | 151008T162718Z | manatwor |
| 016 | Pylons | 160204T194654Z | Morgan T |
| 014 | Rotor | 151108T015113Z | a spaghe |
| 032 | Hexagony | 150911T112843Z | Martin E |
| 016 | ARay | 160125T024920Z | TheCoffe |
| 016 | Falcon | 160121T225846Z | cat |
| 035 | Pike | 160122T154658Z | cat |
| 016 | Mouse16 | 160118T203140Z | cat |
| 014 | PlatyPar | 151213T062100Z | Cyoce |
| 062 | Purple | 151121T100342Z | quintopi |
| 003 | Brachylog | 160115T143322Z | Fatalize |
| nan | Minecraft 1.8.7 | 151112T222622Z | Addison |
| 008 | Jelly | 151212T042615Z | Dennis |
| 016 | Glava 1.4 | 160103T173736Z | GamrCorp |
| 022 | Boo | 160106T054114Z | Jerry Je |
| 025 | Whenever | 160106T024054Z | Jerry Je |
| 048 | oXML | 160106T020043Z | Jerry Je |
| 037 | SuperX++ | 160106T020309Z | Jerry Je |
| 017 | lang5 | 160106T022120Z | Jerry Je |
| 291 | Freelang | 160103T183346Z | cat |
| 019 | JavaScript function golf | 160102T114427Z | user4853 |
| 019 | WhoScript | 151230T183314Z | MCS-Kaij |
| 020 | COMAL | 151224T065551Z | user1921 |
| 015 | Pilot | 151224T053344Z | user1921 |
| 028 | Genie | 151229T180423Z | user1921 |
| 063 | Visual Basic.NET | 151228T181055Z | lynn |
| 091 | SPL | 151228T120054Z | user1921 |
| 041 | Befalse | 151228T013951Z | cat |
| 042 | X.so | 151128T232117Z | LegionMa |
| 017 | ROOP | 151224T030406Z | DarkPhan |
| 036 | AlgolM | 151224T115400Z | user1921 |
| 016 | BASIC80 | 151224T043807Z | user1921 |
| 018 | Eodermdrome | 151223T144327Z | LegionMa |
| 1830 | Emotinomicon | 151221T233535Z | Conor O& |
| 013 | pl | 151221T155508Z | a spaghe |
| 014 | Jolf | 151215T231222Z | Conor O& |
| nan | Candy | 151203T084210Z | Dale Joh |
| 032 | C | 151215T081502Z | Khaled.K |
| nan | BinaryEncoded Golfical | 151212T171427Z | SuperJed |
| 027 | Pig | 151212T194208Z | LegionMa |
| 015 | MATL | 151212T165239Z | Luis Men |
| 050 | Templates Considered Harmful | 151208T222957Z | LegionMa |
| 014 | Par | 151206T002809Z | lirtosia |
| 022 | Elixir | 151205T185939Z | LegionMa |
| 021 | Dirst | 151203T005654Z | LegionMa |
| 016 | Milky Way 1.0.0 | 151202T140900Z | Zach Gat |
| 059 | Jumper | 151202T131024Z | LegionMa |
| 046 | Monicelli | 151130T120020Z | Fabrizio |
| 044 | 96 | 150928T010435Z | LegionMa |
| 016 | Simplex | 151025T110806Z | LegionMa |
| 137 | EXCON | 151002T222311Z | LegionMa |
| 064 | Blank | 151002T103847Z | LegionMa |
| 018 | PureStack | 150830T185829Z | LegionMa |
| 001 | Seriously 0.1 | 151109T024253Z | user4594 |
| 022 | Gray Snail | 151129T144817Z | LegionMa |
| 013 | Lines | 151129T144209Z | LegionMa |
| 017 | Geom++ | 151110T132023Z | LegionMa |
| 042 | Augeas | 151010T153933Z | LegionMa |
| 037 | Version | 150930T012955Z | LegionMa |
| 017 | Kipple | 150830T212924Z | LegionMa |
| 019 | A | 150928T210312Z | LegionMa |
| 038 | Amiga E | 150927T221918Z | LegionMa |
| 021 | ZeptoBasic | 151121T170938Z | LegionMa |
| 013 | ifjinvertiflchangeifqinputiftoutputx | 151101T185220Z | LegionMa |
| 013 | Swap | 150930T002100Z | LegionMa |
| 024 | Thue | 150929T114910Z | LegionMa |
| 036 | TRANSCRIPT | 150901T104705Z | LegionMa |
| 066 | Super Stack! | 150830T212426Z | LegionMa |
| 016 | BrainfuckXT | 150830T170610Z | LegionMa |
| 209 | Funciton | 150831T225933Z | LegionMa |
| 037 | Dogescript | 150830T211344Z | LegionMa |
| 033 | SSBPL | 150831T102142Z | LegionMa |
| 013 | Dogless | 150930T012415Z | LegionMa |
| 390 | ABCD | 150930T001420Z | LegionMa |
| 018 | Tarflex | 150929T113842Z | LegionMa |
| 014 | Aeolbonn | 150927T221545Z | LegionMa |
| 314 | Foobar and Foobaz and Barbaz | 150920T222938Z | LegionMa |
| 029 | AutoIt | 150919T191931Z | LegionMa |
| 017 | 𝔼𝕊𝕄𝕚𝕟 | 151101T122151Z | LegionMa |
| 027 | Argh! | 150928T013441Z | LegionMa |
| 015 | STXTRM | 151101T191823Z | LegionMa |
| 057 | A0A0 | 150928T123054Z | LegionMa |
| 066 | Hodor | 150920T214457Z | LegionMa |
| 028 | J | 151002T011610Z | LegionMa |
| 016 | Ans | 150928T213343Z | LegionMa |
| 020 | [] | 150928T011658Z | LegionMa |
| 016 | ACIDIC | 150927T221036Z | LegionMa |
| 021 | Stackstack | 151004T002956Z | LegionMa |
| 016 | WARP | 150929T121409Z | LegionMa |
| 014 | rs | 151128T224818Z | LegionMa |
| 061 | AutoHotkey | 151128T222512Z | errorsev |
| 015 | Arcyóu | 151122T150058Z | jqkul |
| 049 | Kotlin | 151125T024954Z | TheNumbe |
| 020 | Groovy | 150907T023738Z | Michael |
| 209 | BitShift | 151119T170455Z | Bassdrop |
| 015 | ShapeScript | 151107T020654Z | Dennis |
| 021 | DStack | 151111T014803Z | DarkPhan |
| 021 | Mathematica | 150829T031855Z | alephalp |
| 027 | SuperCollider | 151110T022203Z | a spaghe |
| 015 | Microscript II | 151108T183541Z | SuperJed |
| 237 | AniRad | 151107T135328Z | Adnan |
| 013 | Carrot version ^3 | 151101T174829Z | user3094 |
| 120 | Beam | 150907T200540Z | MickyT |
| 013 | Chaîne | 151101T175943Z | Conor O& |
| 016 | Vitsy | 151030T124215Z | Addison |
| 1222 | Ziim | 150905T170535Z | Martin E |
| 023 | Aysolang | 151026T110535Z | SjoerdPe |
| 018 | Perl | 150828T140155Z | LukStorm |
| 027 | Ouroboros | 151024T070445Z | DLosc |
| 015 | Pip | 151024T064616Z | DLosc |
| 016 | Gol><> | 151016T103129Z | Sp3000 |
| nan | BotEngine | 151013T214021Z | SuperJed |
| 017 | Stringy | 151010T172238Z | m654 |
| 015 | G* | 151010T090947Z | m654 |
| 018 | Minkolang 0.1 | 151010T083318Z | El'e |
| 023 | Processing | 151008T155648Z | user4180 |
| 022 | Actionscript 3.0 | 150828T133018Z | mbomb007 |
| 019 | UniBasic | 150930T025548Z | Ken Greg |
| 067 | C# | 150930T024213Z | Ken Greg |
| 018 | Windows Batch | 150930T033057Z | Shane Sm |
| 047 | Symball | 150917T070123Z | Dennis |
| 096 | ??? | 150829T012137Z | Alex A. |
| 017 | MUMPS | 150928T014217Z | senshin |
| 014 | Sprects | 150928T012613Z | DanTheMa |
| 001 | tinyAll | 150925T163438Z | Ismael M |
| 132 | Turing Machine Code | 150920T235840Z | SuperJed |
| 109 | ferNANDo | 150919T034816Z | primo |
| 038 | Hassium | 150919T030913Z | Jacob Mi |
| 505 | Monkeys | 150918T172515Z | Martin E |
| 030 | OCaml | 150917T142258Z | helencru |
| 017 | FlogScript | 150828T134425Z | mbomb007 |
| 016 | Commodore Basic | 150911T235159Z | Mark |
| 6277 | JSFuck | 150829T232019Z | me and m |
| 016 | Basil | 150908T001800Z | The_Bass |
| 029 | Mascarpone | 150907T205439Z | Peter Ta |
| 4024 | Ceylon | 150907T184136Z | Paŭlo Eb |
| 091 | NULL | 150901T014544Z | anatolyg |
| 022 | KimL | 150907T053241Z | Dennis |
| 093 | Piet | 150906T182156Z | LukStorm |
| 022 | Swift | 150906T142008Z | Kametrix |
| 1073 | Pancake Stack | 150906T035343Z | Sp3000 |
| 069 | Sieve | 150905T212305Z | The_Bass |
| 015 | ISCOM | 150905T143644Z | Dennis |
| 081 | XD | 150905T005847Z | MickyT |
| 026 | Marbelous | 150904T225755Z | Martin E |
| 013 | MicroSoft Windows HTA | 150904T201350Z | user1525 |
| 025 | Scheme | 150828T140934Z | Buzz |
| 002 | ShortScript | 150904T130753Z | YourDeat |
| 016 | Wake | 150904T051255Z | Dennis |
| 030 | CSS | 150828T193200Z | NinjaBea |
| 104 | l33t | 150904T002345Z | Martin E |
| 027 | IRC | 150903T234656Z | Martin E |
| 1036 | Parenthetic | 150903T231653Z | MickyT |
| 045 | 7 | 150903T020321Z | ETHprodu |
| 088 | FiM++ | 150902T235115Z | Martin E |
| 026 | Emoticon | 150902T233137Z | Martin E |
| 092 | Doorspace | 150902T212140Z | Martin E |
| 106 | Dark | 150902T195224Z | Martin E |
| 048 | C++ | 150828T214631Z | DJMcMayh |
| 132 | Piet | 150902T143325Z | plannapu |
| 169 | Starry | 150828T165349Z | Sp3000 |
| 006 | goruby | 150902T062006Z | primo |
| 047 | RUBE | 150901T171552Z | lynn |
| 1013 | Alchemy | 150901T213558Z | Martin E |
| 043 | HPPPL | 150831T200939Z | M L |
| nan | Piet | 150901T144012Z | M L |
| 037 | Fishing | 150901T180836Z | Martin E |
| 022 | MagiStack | 150901T165042Z | Dennis |
| 177 | Aheui | 150901T164144Z | lynn |
| 035 | LMNtal | 150901T155138Z | lynn |
| 067 | C# | 150828T131241Z | pmudra |
| 023 | Prolog | 150828T124759Z | Fatalize |
| 015 | Cardinal | 150901T120632Z | M L |
| 022 | Loader | 150831T004541Z | SuperJed |
| 065 | KEMURI | 150901T093606Z | Sp3000 |
| 016 | az | 150901T055922Z | Dennis |
| 002 | gs2 | 150828T172816Z | lynn |
| 015 | Staq | 150831T201247Z | M L |
| 018 | Perl 6 | 150831T191121Z | ASCIIThe |
| 017 | Microscript | 150831T123352Z | SuperJed |
| nan | 150831T062122Z | Dennis | |
| 023 | Maxima | 150831T055054Z | alephalp |
| 001 | Deadfish~ | 150831T052348Z | Dennis |
| 052 | 23 | 150830T005630Z | Dennis |
| 283 | 99 | 150830T121305Z | Martin E |
| 020 | MoonScript | 150830T130636Z | manatwor |
| 267 | 123 | 150829T225958Z | Martin E |
| 016 | Q | 150828T183152Z | Beta Dec |
| 018 | Snowman | 150830T065028Z | user4200 |
| 020 | Var'aQ | 150830T081756Z | Beta Dec |
| 480 | Glypho | 150830T081050Z | Peter Ta |
| 016 | REGXY | 150830T050154Z | Dennis |
| 117 | 4 | 150830T041906Z | Dennis |
| 112 | Malbolge | 150830T022403Z | Jacob |
| 021 | ~English revised | 150830T030514Z | Dennis |
| 035 | LOLCODE | 150829T223248Z | 智障的人 |
| 019 | 0nop^ | 150829T200219Z | MickyT |
| 015 | small s.c.r.i.p.t. | 150829T172558Z | Dennis |
| 016 | O | 150829T171235Z | Dennis |
| 016 | Muriel | 150829T135803Z | Dennis |
| 019 | Tcl | 150829T123710Z | Johannes |
| 123 | Common Intermediate Language | 150828T123715Z | user3094 |
| 065 | 3var | 150829T120224Z | Sp3000 |
| 024 | Inform 6 | 150829T102458Z | curiousd |
| 021 | Gema | 150829T094150Z | manatwor |
| 092 | Brainfuck | 150828T152622Z | Mitch Sc |
| 047 | Fueue | 150829T060934Z | Dennis |
| 055 | COBOL | 150829T052629Z | lynn |
| 028 | Fortran | 150829T053931Z | lynn |
| 022 | PARI/GP | 150829T033831Z | alephalp |
| 148 | Beatnik | 150829T034552Z | MickyT |
| 020 | Javascript ES6 | 150828T192713Z | jrich |
| 080 | pb | 150828T213753Z | undergro |
| 063 | Erlang | 150828T202414Z | lynn |
| 021 | CoffeeScript | 150828T202234Z | lynn |
| 155 | C | 150828T201322Z | kirbyfan |
| 031 | Dart | 150828T200411Z | lynn |
| 036 | Idris | 150828T195921Z | lynn |
| 040 | Trigger | 150828T194509Z | Sp3000 |
| 016 | Sinclair BASIC | 150828T192512Z | aditsu q |
| 026 | REBOL | 150828T192039Z | lynn |
| 025 | awk | 150828T191510Z | lynn |
| 016 | bc | 150828T191240Z | Digital |
| 060 | RPython | 150828T191211Z | kirbyfan |
| 027 | GNU Make | 150828T190223Z | Digital |
| 029 | TvmJIT | 150828T190835Z | kirbyfan |
| 021 | Yorick | 150828T185724Z | lynn |
| 014 | Sed | 150828T153107Z | Digital |
| 017 | Burlesque | 150828T174802Z | lynn |
| 017 | Vim | 150828T174640Z | lynn |
| 036 | Unlambda | 150828T180816Z | lynn |
| 038 | Prelude | 150828T184019Z | Sp3000 |
| 016 | Betterave | 150828T180617Z | lynn |
| 023 | ><> | 150828T132621Z | Sp3000 |
| 051 | D | 150828T181053Z | lynn |
| 027 | Rail | 150828T182845Z | Sp3000 |
| 023 | Frink | 150828T182818Z | Beta Dec |
| 016 | Underload | 150828T181944Z | lynn |
| 018 | K | 150828T181418Z | lynn |
| 019 | Octave | 150828T175201Z | lynn |
| 022 | Clojure | 150828T174532Z | lynn |
| 022 | Common LISP | 150828T174206Z | lynn |
| 026 | Curry | 150828T173851Z | lynn |
| 013 | /// | 150828T173318Z | proud ha |
| 054 | Ada GNAT | 150828T173240Z | lynn |
| 030 | ObjectiveC | 150828T172704Z | lynn |
| 019 | Mouse | 150828T172030Z | Alex A. |
| 021 | Io | 150828T171116Z | galexite |
| 022 | Julia | 150828T170542Z | Alex A. |
| 949 | Ook! | 150828T163400Z | Rohcana |
| 015 | GolfScript | 150828T161556Z | aditsu q |
| 032 | Pascal | 150828T161224Z | aditsu q |
| 038 | PDP11 Unix Assembly | 150828T160911Z | Random83 |
| 028 | VBScript | 150828T160829Z | AdmBorkB |
| 028 | XSM | 150828T160645Z | Dennis |
| 015 | FALSE | 150828T160309Z | Rohcana |
| 017 | Element | 150828T160007Z | PhiNotPi |
| 015 | CJam | 150828T155232Z | aditsu q |
| 015 | Applescript | 150828T151934Z | Digital |
| 016 | dc | 150828T152355Z | Digital |
| 012 | Packed 7bit ASCII | 150828T135407Z | izzyg |
| 022 | Emily | 150828T152740Z | kirbyfan |
| 019 | Nim | 150828T150827Z | kvill |
| 034 | Rust | 150828T151220Z | kvill |
| 021 | Enema | 150828T150426Z | Dennis |
| 017 | APL | 150828T145045Z | Dennis |
| 018 | Bash | 150828T144739Z | Dennis |
| 016 | golflua | 150828T144257Z | manatwor |
| 028 | Algoid | 150828T133651Z | Beta Dec |
| 017 | STATA | 150828T143158Z | bmarks |
| 020 | Stackstack | 150828T141959Z | Kade |
| 059 | C++ | 150828T141313Z | TheNumbe |
| 017 | Gibberish | 150828T141213Z | Kade |
| 022 | Scala | 150828T140756Z | gilad ho |
| 1666 | Wordy | 150828T140600Z | Dennis |
| 032 | Wheat | 150828T140241Z | Kade |
| 022 | LOLCODE | 150828T135529Z | Fatalize |
| 038 | unc | 150828T135515Z | kirbyfan |
| 022 | Javascript | 150828T124905Z | Blue |
| 015 | J | 150828T125014Z | Fatalize |
| 019 | Batch File | 150828T134642Z | AdmBorkB |
| 017 | Forth | 150828T134038Z | mbomb007 |
| 001 | Help | 150828T134418Z | Dennis |
| 020 | R | 150828T134300Z | plannapu |
| 017 | Fission | 150828T133410Z | Martin E |
| 020 | BBC BASIC | 150828T131836Z | Beta Dec |
| 019 | Ruby | 150828T130609Z | rp.kelly |
| 031 | GOTO++ | 150828T125849Z | Fatalize |
| 017 | Zsh | 150828T124458Z | jimmy230 |
| 014 | Pyth | 150828T123956Z | orlp |
Intel ASM 150 bytes
Found this when I tried making my own OS a few years back. Isn't golfed down at all
[bits 16]
[org 0x7c00]
mov si,c
mov ah,0x0e
a:
lodsb
cmp al,0
je b
int 0x10
jmp a
b:
hlt
c: db "Hello, World!",0
times 510-($-$$) db 0
dw 0xaa55
Compile using nasm, run with qemu-system-x86_64.
How dare you fuck the brain -c, 166 159 157 155 (153+2) bytes
This is the problem with HDYFTB. Printing strings is really annoying
IIII=+=+=+=+IIIIIIIIP=DDDP^IIIIPPIIIP^IIII=+=+=+^IIII=+=+DDDDv+P|DvD^)IIII=+=+=+P=+^IIII=+=+v+IIIIIIIP=|vD^D)^DDDDDDDDv+P=IIIP^DDDP^DDDD=+v+P^IIII=+=+=+I
Subleq+, 59 58 57 bytes
Follows the specification described here. Not linking to the Esolangs page as it doesn't have any info in it, but it does link to the Python interpreter created by McChuck05 that I used to test the program.
P:*p !
m p
11 *p !
11 11 P
.m:-1
.p:h
.h:"Hello, World!"0
This solution works because when we compile the code, we find that 11 in Subleq memory points to 0, which is a funny coincidence that I discovered on complete accident when working on writing the Esolangs page for Subleq+.
58 byte version for reference:
P:*p !
m p
Z *p !
Z Z P
.p:h
.m:-1
.h:"Hello, World!"
.Z:0
When the program is run, this is transpiled into the following Subleq program before being executed (93 bytes):
-12 -1 3
13 12 6
27 -12 -1
27 27 0
14 -1 72
101 108 108
111 44 32
87 111 114
108 100 33
0 0 0
If I remember correctly, every program that works in regular Subleq also works in Subleq+ (that is, Subleq+ is upwards-compatible with Subleq), so the resulting Subleq program that is transpiled when we run the program is also technically syntactically correct in Subleq+ itself.
However, Subleq+ adds some really nice features (like pointers and labels) that make it a bit easier to actually golf programs without having to rewrite everything.
Readable version of the solution:
# Main function
Printer: *ptrHW ! # Print the character
moveptr ptrHW # Move ptrHW to the next location in memory
Zero *ptrHW ! # If we are at the trailing 0, quit
Zero Zero Printer # Else, loop back to the beginning of label "Printer"
# Memory literals
.ptrHW: HelloWorld # *ptrHW points to HelloWorld string
.moveptr: -1 # Moves the string pointer
.Zero: 0 # 0
.HelloWorld: "Hello, World!"0 # Hello World string with trailing null byte
Interactive Thon Langauge, 21 bytes
give("Hello, World!")
Regenerate, 14 bytes
Hello, World\!
Regenerate is my new regex-match-generation language. The hello world program is pretty simple: just the literal string as a regex, with the ! escaped because it's a metacharacter.
Normal 4ME, 21 bytes
P;
out{Hello, World!}
Normal 4ME actually requires the brackets to be matched up so...
fun fact about Normal 4ME:
most of the code writen in the implementation is AI Generated due to the fact i had barely any good experience in coding
Grass, 463 446 bytes
It exits with a crash. Append vw to get a non-crashing version (448 bytes).
wWWWwWWWWwWWWWWwvwwWWwWWWwvWwWwwwwwWWWwWWWwWWWWWwvwWWwwwwwwwwwwwWWWwWWWWWwWWWWwvwWWwwwwwWWWWWWWWWWWWwWWWwvWwwwwwwwwwwwWWwwwwwwWWWWWWWWwWWWWWWWwwWWWWWWwwwwwwwvwWWWWWWWwwwwwwwwwWWWWWWWWWWWWWwWWWwvWwwwwwwwwwwwwwwwwwWWwwwwwwwwwwwwWWWWWWWWWWWWWWWWWwvwWwWwwwwwwwwWwwwwwwWwwwwwwWwwwwwwwWwwwwwwwWwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWwvwwWWWWWWWWWWWWWWWWWWWWWWwWWWwwwvWWwWWWWWWWWWWWWWWWWWWWWWwwwwWWwwwwwwwwwWwwwwwwWwwwWwwwwwwwwwWWWWWWWWWWWWwWwwwwwwwwwwwwwwwwww
Based on the TIO example. I think it was from this page by rst76 (613 bytes with lowercase w).
wWWWwWWWWwWWWWWwv x -> x + 3
wwWWwWWWwv f -> apply f t𝐰ice (Church numeral 2)
Ww f -> apply f 2**2 = 4 times
Wwwwww x -> x + 4
WWWw x -> x + 8
WWWw x -> x + 32
WWWWWw x -> x + 64
vwWWwwwwwwwwwwwWWWwWWWWWwWWWWw f -> f(𝐰 + 64 + 64 + 32) = f(23)
vwWWwwwwwWWWWWWWWWWWWwWWWwv f -> f(23 + 8 + 1) = f(32 space)
Wwwwwwwwwwww (f->f(32))(x->x+1) = 33 !
WWwwwwww (f->f(32))(x->x+8) = 40
WWWWWWWWw 40 + 4 = 44 ,
WWWWWWWww 40 + 32 = 72 H
WWWWWWwwwwwww (f->f(23))(x->x+64) = 87 𝐖
vwWWWWWWWwwwwwwwwwWWWWWWWWWWWWWwWWWwv f -> f(32 + 64 + 4) = f(100 d)
Wwwwwwwwwwwwwwwwww (f->f(100)(x->x+1) = 101 e
WWwwwwwwwwwwww (f->f(100)(x->x+8) = 108 l
WWWWWWWWWWWWWWWWWw 108 + 3 = 111 o
vw begin function
Ww c -> print c; return this function
Wwwwwwwww print H
Wwwwwww print e
Wwwwwww print l
Wwwwwwww print l
Wwwwwwww print o
Wwwwwwwwwwwwwww print ,
WWWWWWWWWWWWWWWWWWw print space
vwwWWWWWWWWWWWWWWWWWWWWWWwWWWwwwv f = f -> c -> print c; return f(f)
f(f) 𝐰ill return itself as a quine.
WWw Apply the first half of output 𝐰ith
the pre𝐯ious function as argument.
WWWWWWWWWWWWWWWWWWWWWwwww 111 + 3 = 114 r
WWwwwwwwwww print 𝐖
Wwwwwww print o
Wwww print r
Wwwwwwwwww print l
WWWWWWWWWWWWw print d
Wwwwwwwwwwwwwwwwwww print !
Generator based on ASCII-only's (too long to post in a comment).
Bespoke, 292 281 280 279 bytes
-11 bytes by not pushing a 0 first. Leads to a Stack underflow. error, but that's OK.
-1 byte by using 1,114,212 for d instead of 100.
-1 byte by using PUSH I at the end of the loop instead of DO COPY.
Hel-lo:its one way message"A B C"goes up
a PC put out a programmed greeting
set the I/O,test out put:A B C?its so ordinary
instead,the He-llo Wo-rld is more cool
but the A B C,that program is truly so easy
and the A"HelloWorld"C,its so lengthy in Bespoke
already,though,it ende-d
Adapted from an example program I included with the official interpreter.
OpenRISC or1k (big endian) machine language on Linux, 48 45 42 bytes
0x00: 04 00 00 02 l.jal <0x08> ; PC rel jmp, return addr to r9
0x04: 9c 60 00 01 l.addi r3,r0,1 ; delay slot; fd=1
0x08: 9c 89 00 15 l.addi r4,r9,21 ; put addr of string in r4
0x0c: 9c a0 00 0d l.addi r5,r0,13 ; length of string
0x10: 9d 60 00 40 l.addi r11,r0,64 ; select write() syscall
0x14: 20 00 00 01 l.sys 0x1 ; call write()
0x18: 9d 60 00 5d l.addi r11,r0,93 ; select exit() syscall
0x1c: 20 48 65 6c l.sys 0x656c ; call exit()
0x20: 6c 6f 2c 20 ; "Hello, World!"
0x24: 57 6f 72 6c
0x28: 64 21
EDIT: Linux kernel appears to tolerate l.sys with arguments other than 0x1. The online simulator and OR1200 RTL appear to recognize opcode 0x2048 as an l.sys instruction.
To try this on an OpenRISC machine or online simulator, compile and run the following c program
const main[]={0x04000002,0x9c600001,0x9c890015,0x9ca0000d,
0x9d600040,0x20000001,0x9d60005d,' Hel',
'lo, ','Worl','d!\0\0'};
riscv32 and riscv64 (little endian) machine language for Linux, 38 32 bytes
0x00: 4505 li a0,1 ; Set fd=1
0x02: 012005ef jal a1,14 ; jmp and put ret addr in a1
0x06: 6c6c6548 ; "Hello, World!\0"
0x0a: 57202c6f
0x0e: 646c726f
0x12: 0021
0x14: 4635 li a2,13 ; length of string
0x16: 04000893 li a7,64 ; select write() syscall
0x1a: 00000073 ecall ; call write()
0x1e: 8082 ret
To try this on riscv hardware or an online simulator, compile and run the following c program
const char main[]="\x05\x45\xef\x05\x20\x01Hello, World!\0\x35\x46\x93\x08\x00\x04\x73\0\0\0\x82\x80";
DEC VAX machine language on UNIX v8 or 4.3BSD, 40 39 33 30 bytes
00: 00 00 ;entry mask
02: dd 0d pushl $0xd ;len of string
04: df af 0a pushal $0x11 ;addr of string
07: dd 01 pushl $0x1 ;file descriptor=1
09: fb 03 af ff calls $3,0x0c ;call syscall
0d: 04 ret
0e: bc 04 chmk $04 ;write() syscall
10: 04 ret
11: 48 65 6c 6c 6f 2c 20 "Hello, World"
57 6f 72 6c 64 21
The entry mask specifies which regs are saved and other runtime characteristics of the procedure. Because of the way syscalls work on VAX, the golfiest way to make one (as far I know) is a two step procedure (CALLS followed by CHMK). I have also overlapped the end of the CALLS instruction with the start of the entry mask of the syscall procedure.
In honor of the 39th anniversary of mullender.c you can try out the above code by compiling and running the following C program on an actual or emulated VAX.
char main[]={0x00,0x00,0xdd,0x0d,0xdf,0xaf,0x0a,0xdd,0x01,
0xfb,0x03,0xaf,0xff,0x04,0xbc,0x04,0x04,0x48,0x65,0x6c,
0x6c,0x6f,0x2c,0x20,0x57,0x6f,0x72,0x6c,0x64,0x21};
Arsla, 15 bytes
"Hello, World!"
The string gets stored into the stack and gets into output.

Arsla, 17, 16 bytes
"Hello, World!"p
The string is shown in stdout. The space between string is negligible.

smotslang -s, 208 bytes
212 -> 208 by using decimal literal
crumble 'H retry
crumble 'e retry
crumble 'l retry retry
crumble 'o retry
crumble ', retry
crumble ^32 retry
crumble 'W retry
crumble 'o retry
crumble 'r retry
crumble 'l retry
crumble 'd retry
crumble '! run
Has to be simple because (unfortunately) memory usage makes it too long.
Explained:
crumble 'H retry -- Output 'H' --
crumble 'e retry
crumble 'l retry retry -- Output 'l' twice --
crumble 'o retry
crumble ', retry
crumble ^32 retry -- 32 in hex is 0x20; output '\x20' --
crumble 'W retry
crumble 'o retry
crumble 'r retry
crumble 'l retry
crumble 'd retry
crumble '! run
retry vs run?
retry just outputs (format depends on -s, see below). It won't have a trailing newline though, only run has that.
Why -s?
Without -s all the code points would be outputted instead, yielding 7210110810811144328711111410810033. Not great for this case. If you really want no flags, then add reload to the start for an extra 7 bytes.
This answer is #2 of my smotslang challenge sweep
Java, 39 bytes
void main(){IO.print("Hello, World!");}
This is valid from Java 25 onwards.
Java Preview (23), 36 bytes
void main(){print("Hello, World!");}
This uses JEP 477: Implicitly Declared Classes and Instance Main Methods which was previewed in Java 23, but was abandoned in favor of explicitly using the class IO for the final release of the feature in Java 25.
With the preview JDK, run like this:
java --enable-preview Main.java
WE32k machine language on AT&T UNIX System V, 37 34 bytes
00: 84 4c 4a MOVW %sp,%ap ; set argument pointer for upcoming sycall
03: a0 01 PUSHW &0x1 ; push file descriptor = 1 to stack
05: 37 0f BSBB 0xf <0x14> ; push address of string to stack
07: 48 65 6c 6c 6f 2c 20 ; "Hello, World!"
0f: 57 6f 72 6c 64 21
14: a0 0d PUSHW &0xd ; push length of string to stack
16: 84 20 41 MOVW &0x20,%r1 ; select write()
19: 84 04 40 MOVW &0x4,%r0 ; configure GATE for syscall
1c: 30 61 GATE ; syscall
1e: 84 08 41 MOVW &0x8,%r1 ; select exit() syscall
21: 7b f8 BRB -0x8 <0x19> ; goto 0x19
To try this on an emulator or actual AT&T 3B2 hardware, compile and run the following C program.
char main[]={0x84,0x4c,0x4a,0xa0,0x01,0x37,0x0f,
'H','e','l','l','o',',',' ','W','o','r','l','d','!'
,0xa0,0x0d,0x84,0x20,0x41,0x84,0x04,0x40,0x30,0x61
,0x84,0x08,0x41,0x7b,0xf8};
Emmental, 68 61 54 51 bytes
-7 bytes thanks to @Adelie!
-7 bytes thanks to @Adelie!
-3 bytes
#72.#101.#108::..#111:.#44.#32.#87..#114..#100.#33.
All I know is that each of those numbers represent Ascii characters (you have to put them in reverse for it to work, so that gives the input !dlrow ,olleH), and then the .s pop them off from right to left.
Golf 1: #0#10 (trailing newline) is apparently optional (-4), had a duplicate # between 108 and 101 apparently (-5), deleted two unneeded . (-7)
Golf 2: Done using duping and using the queue
Golf 3: Using the queue is not as useful as it seems, now that I have golfed this without it. Hopefully I can get sub-50 soon.
Unicorn, 15 bytes
OHello, World!/
The last character can be replaced with other characters and still produce the same output, but / is how you're supposed to end the output message.
SAKO, 34 bytes
1)TEKST
Hello, World!
STOP1
KONIEC
I don't think it needs an explanation.
I believe this is optimal and cannot be shortened, but you can prove me wrong.
ppencode, 273 bytes; 73 words
print uc chr ord qw x hex and eval q y print chr ord foreach qw x else lt lt or x y xor print chr oct oct ord uc qw q bind q and print q q q and print chr ord uc q qw q and eval q y print chr ord for qw x or read lt do x y xor print chr hex length q q getprotobynumber lt q
Ungolfed
# print "H"
print uc chr ord qw x hex and
# print foreach qw[e l l o]
eval q y
print chr ord
foreach qw x else lt lt or x
y xor
# print ","
print chr oct oct ord uc qw q bind q and
# print " "
print q q q and
# print "W"
print chr ord uc q qw q and
# print for qw[o r l d]
eval q y
print chr ord
for qw x or read lt do x
y xor
# print "!"
print chr hex length q q getprotobynumber lt q
Tarfish, 75 bytes
<;....+++.:{.}+.:.}}.:+++:..::+{x++++++.:+:{x+++++++++++++:++++++++++++.x+x
Note: The explanation is formatted similarly to the one found in @emanresu A's answer, where multiple + signs are truncated into a single +, the exact count is specified in the comment, and the current stack is shown at the end of each comment.
< # Change direction of IP to left
+x # Push x coordinate (74) and increment - 'K'
.x # Push x coordinate (72) and output - 'K'
+ # Increment by 12 - 'W'
+: # Duplicate and increment by 13 - 'Wd'
{x # Push x coordinate (44) and shift right - ',Wd'
+: # Duplicate and increment once - ',Wde'
.: # Duplicate and output - ',Wde'
+ # Increment by 6 - ',Wdk'
{x # Push x coordinate (32) and shift right - ' ,Wdk'
+ # Increment once - ' ,Wdl'
..:: # Duplicate twice and output twice - ' ,Wdl'
+: # Duplicate and increment by 3 - ' ,Wdlo'
.: # Duplicate and output - ' ,Wdlo'
.}} # Shift left twice and output - 'Wdlo '
.: # Duplicate and output - 'Wdlo '
+ # Increment once - 'Wdlo!'
.} # Shift left and output - 'dlo!'
.:{ # Shift right, duplicate then output - '!dlo'
+ # Increment by 3 - '!dlr'
;.... # Output 4 times and halt
Cray J90 Supercomputer machine language on UNICOS, 88 82 80 bytes
00a: A1 4 ; 0022104
00b: S0 A1 ; 0071001 Select write() syscall
00c: A0 B66 ; 0024066 put stack pointer in A0
00d: S7 1 ; 0042777
01a: 0,A0 S7 ; 0130700 push file descriptor to stack
01b: ; 0000000
01c: ; 0000000
01d: A2 3 ; 0022203
02a: A1 A0+A2 ; 0030102
02b: 1,A0 A1 ; 0110100 push address of string to stack
02c: ; 0000001
02d: ; 0000000
03a: A1 13 ; 0022115
03b: 2,A0 A1 ; 0110100 push length of string to stack
03c: ; 0000002
03d: ; 0000000
04a: S6 1214606444 ; 0040600 "Hell" into S6
04b: ; 0066154
04c: ; 0044145
04d: S6 S6<32 ; 0054640 shift S6 left 32 bits
05a: S7 1865162839 ; 0040700 "o, W" into S7
05b: ; 0020127
05c: ; 0067454
05d: S7 S6+S7 ; 0060767 S7 <= S6 or S7
06a: 3,A0 S7 ; 0130700 push "Hello, W" onto stack
06b: ; 0000003
06c: ; 0000000
06d: S6 1869769828 ; 0040600
07a: ; 0066144
07b: ; 0067562
07c: S6 S6<32 ; 0054640
07d: S7 553648128 ; 0040700
10a: ; 0000000
10b: ; 0020400
10c: S7 S6+S7 ; 0060767
10d: 4,A0 S7 ; 0130700 push "orld!" onto stack
11a: ; 0000004
11b: ; 0000000
11c: EX ; 0004000 syscall
11d: J B00 ; 0005000 return addr is in B00
The Cray family of supercomputers are 64 bit word addressed machines. Instructions fit in multiples of 16 bit "parcels". Like the CDC machines that Seymour Cray designed, addresses and instructions are represented in octal (they have been translated to hex in the C program below). Parcel addresses are a through d. Here, the string Hello, World! is pushed onto the stack after syscall arguments are pushed.
Special thanks to Andras Tantos and his Cray Simulator! If you have UNICOS installed on a simulator or a machine cooled with Fluorinert, you can compile and run this C program.
char x[]="\x24\x44""\x72\x01""\x28\x36""\x45\xff""\xb1\xc0""\x00\x00"
"\x00\x00""\x24\x83""\x30\x42""\x90\x40""\x00\x01""\x00\x00"
"\x24\x4d""\x90\x40""\x00\x02""\x00\x00""\x41\x80" "ll"
"He""\x59\xa0""\x41\xc0" " W" "o,""\x61\xf7"
"\xb1\xc0""\x00\x03""\x00\x00""\x41\x80" "ld" "or"
"\x59\xa0""\x41\xc0""\x00\x00" "!\0""\x61\xf7""\xb1\xc0"
"\x00\x04""\x00\x00""\x08\x00""\x0a\x00";
main(){
((int(*)())x)();
}
EDIT: It turns out to be golfier to do A1 4; S0 A1; instead of S0 4
Self-Modifying Trilangle, 29 bytes
<_.)>(o@.#\,../␀!dlroW ,olleH
(␀ should be an actual NUL byte)
:3
Jalapeño, 14 bytes
l¿47?+{₅¿4c?Iₓ¿43?¬w◹₋Cₓ⇥ₓ¿4b?"
Just the raw string as a base 254 string.
Hex-Dump of Bytecode
0 1 2 3 4 5 6 7 8 9 A B C D E F
0000: 6d 47 50 c9 4c 94 43 58 18 76 c3 df 4b 20
HolyC, 24 bytes
Print("Hello, World!");
Nothing special here, I just wanted to pay tribute to Terry Davis who wrote TempleOS and its companion language, HolyC.
RBFuck, 138 bytes
Basically a subset of Ruby that doesn't contain letters or numbers in its source code.
__=">:("=~/$/
_=__*__
$__=_*_
_=-~_
$_=_*_
$.=$_+~-~-_
$><<(""<<$__-~-_<<-~$_<<$.<<$.<<$_-~_<<", "<<$__+__+__<<$_-~_<<$_-~_+__<<$.<<$_)+?!
StackCell, 20 bytes
"!dlorW ,olleH":[;:]
Hatchback, 145 bytes
0 0 72 13 0 0 0 101 13 0 0 1 108 13 1 13 1 0 2 111 13 2 0 0 44 13 0 0 0 32 13 0 0 0 87 13 0 13 2 0 0 114 13 0 13 1 0 0 100 13 0 0 0 33 13 0 65535
this is a very boring way of doing it, it's just printing every char one by one.
SqueezeL, ceil(20 * 2/3) = 14 bytes
")hello)18 )world)0x
PDP-11 machine language on BSD 2.11, 37 34 bytes
00: 15ce 000d mov $15,(sp) ; len of string on stack
04: 09f7 000e jsr pc, 26 ; addr of string on stack
10: 6548 6c6c ; "Hello, World!"
2c6f 5720
726f 646c
0021
26: 15e6 0001 mov $1,-(sp) ; stdout on stack
32: 15e6 0001 mov $1,-(sp) ; stack padding
36: 8904 trap 4 ; write() syscall
40: 8901 trap 1 ; exit() syscall
Note that BSD 2.11 does not use the same syscall convention as previous UNIXes for the PDP-11. As a result, some previous winners of the IOCCC may not work out of the box on BSD 2.11.
To try this on a real or emulated PDP-11 running BSD 2.11 (this won't work on other operating systems), compile and run the following C program.
char main[]={0xce,0x15,0x0d,0x00,0xf7,0x09,0x0e,0x00,'H','e'
,'l','l','o',',',' ','W','o','r','l','d','!',0x00,0xe6,0x15,
0x01,0x00,0xe6,0x15,0x01,0x00,0x04,0x89,0x01,0x89};
PDP-11 machine language on UNIX v7 or BSD 2.9, 36 bytes
00: 15ce 8901 mov $104401,(sp) ; exit()
04: 15e6 000d mov $15,-(sp) ; len of string
10: 09f7 000e jsr pc, 32 ; addr of string
14: 6548 6c6c ; "Hello, World!"
2c6f 5720
726f 646c
0021
32: 15e6 8904 mov $104404,-(sp); write()
36: 15c0 0001 mov $01,r0 ; fd=1
42: 004e jmp sp ; jump to stack
Older UNIXes for the PDP-11 had a different syscall convention in which some of the arguments are placed right after the trap instruction. Therefore, almost every syscall requires some self modifying code! The approach here is to generate a "Hello, World!" program on the stack and then jump to the stack.
To try this on a real or emulated PDP-11 running AT&T UNIX, compile and run this C program (if the compiler is very old, remove the =).
main[]={5582,-30463,5606,13,2551,14,25928,27756,
11375,22304,29295,25708,33,5606,-30460,5568,1,78};
AutoHotkey (v2), 30 bytes
FileAppend "Hello, World!","*"
AHK is designed for GUI apps. It won't attache the current console by default. Need to call with piping:
> autohotkey hello.ahk | echo
Hello, World!
Seed, 3018 2017 bytes
20 3082878908023217264513409052095171166514152842731930860020030457993938638103403046250429562326112485829082935625771107516331023825155872901669415648235325447829426022284731164161891694720812374369453386524432410088164372170392956375395850689218364904174051952470305204799797137492740045183552010004821283992680236683735370859514390654072426410106330267139172209696472898496287558925238447139030179194624772827195264332239950898118676727321207243048939596359970569757556221587682401886866880889418724996826640174762320680632047593443900996789395015891356171155967406840304248410954549718823482438299131238585880493998113081588276800215314525942008386904934685038679246400738476994830932995595042223007150138433182378368856326735623459072988527721649311845975051626763201500896435813636290161356206562461644002558629746848593535516946270399998865651156040448544009517828826581130144797960705038588693024754437428875398353878997423338275398606001191881568405816726989525613118944553638022766028623131205844952060481792579363922109325705770987967601483747182833561634649000267202311571235633450511362086958884460954233386294994726147926121474733199263222833226197679493330337301148364461552762233800441924062279992700913213329489815877097171879946903013904332718444777265905637279466069041198148023820086777140202508571700410956007492647684095439617571010925425123943514345926493154490345652668771443492562053776680425265050119765135181788296734019469696538700085279784407818295554337104198697313062299826062766791781812122456707026148958864981773433414886373640448328410245912057087921426298934444319913947680360457830122708046500222410739143123748002253812309125636207440858046130948803365528714178861564980421910125372812125423460512165456922794335092421977093496568379541718255553659331424015361340170529327971274047454126957271742377889431517805084441157214774131176212324130225944626167827592713912233615105381610752889019892570309634158768321187824903681103890790043094957669446947795125894500903082171110417933
Existing answers in Seed:
- Kamila's answer, 4154 bytes
- feersum's answer, 4203 bytes
The Befunge program is identical to the previous answers:
"9!dlroW ,olleH"ck,@
The Seed interpreter is in https://github.com/TryItOnline/seed/blob/master/seed .
It uses Python 2 instead of 3. In Python 2, randint is defined by
randint(32, 127) == 32 + int(random() * (127 - 32 + 1))
Apart from that, random() is defined identically to Python 3.
It's not in Python file however, it's implemented in C: https://github.com/python/cpython/blob/master/Modules/_randommodule.c
See _random_Random_random_impl. Specifically,
random() == ((getrandbits(32)>>5) << 26 | (getrandbits(32)>>6)) / (2**53)
(evaluate left to right)
Pascal, 32 bytes
BEGIN WRITE('Hello, World!')END.
m68k machine language (tested on SunOS 4.1.4) 42 40 36 bytes
0x00 4878000d pea 13 ; push length of string to stack
0x04 610e bsr 0x14 ; push address of string to stack
0x06 48656c6c "Hello, World!\0" ; string
0x0a 6f2c2057
0x0e 6f726c64
0x12 2100
0x14 48780001 pea 1 ; push fd=1 "stdout" to stack
0x18 48780001 pea 1 ; push extra stack slot
0x1c 48780004 pea 4 ; select "write()" syscall
0x20 4e40 trap #0 ; call "write()"
0x22 4e40 trap #0 ; call "exit()"
; write() leaves 1 on stack which is
; used to select exit() syscall.
SunOS appears to be fairly permissive when it comes to arguments of the trap instruction on m68k so this may (untested) work unmodified on NetBSD for m68k.
To try it out, compile and run the following C program.
int main[]={0x4878000d,0x610e4865,0x6c6c6f2c,0x20576f72,
0x6c642100,0x48780001,0x48780001,0x48780004,0x4e404e40};
Flobnar, 53 42 41 bytes
-12 thanks to @JoKing
!dlroW ,olleH
0
:| <\@6
g>,
0_\^> +
:
- <
Try it online! (requires the -r and -i flags)
Flobnar is an interesting 2D language vaguey similar to Jellyfish. It shares a creator and many of its instructions with Befunge.
Befunge is an "instruction-based" language, in that the functionality of most commands is encapsulated by an effect. Flobnar, on the other hand, is an "expression-based" language, in that the functionality of most commands is encapsulated by a return value. For example, the 4 term always returns 4, the > term is a tail call to the cell to the east, and the + term returns the sum of the terms to its north and south.
The relevant terms used by this program are:
@indicates the starting point of the program.@evaluates the term to its west, and the result of this is the return value of the program (this is printed by default; the-rinterpreter flag is needed to disable this behavior).lets evaluation "pass through" (it is a tail call to the cell opposite to the direction from which it was evaluated).^>v<are tail calls to the cells in the direction they point.- Digits return themselves.
#is like, except that is jumps to the cell two steps away, like Befunge's#command.\evaluates the cell to the south to get an argument, then lets evaluation pass through to the other side with the new argument. After evaluation is finished, the original argument is restored.:returns the current argument.+returns the sum of the cells to the north and south.-returns the difference of the cell to the north and the cell to the south.!evaluates the cell on the other side, and returns 1 if it is 0 and 0 otherwise.gevaluates the cell to the north to get an x-coordinate, the cell to the south to get a y-coordinate, and returns the Unicode codepoint of the cell at those coordinates.|evaluates the cell on the other side. If the result is 0, it returns the cell to the south; otherwise, it returns the cell to the north._evaluates the cell on the other side. If the result is 0, it returns the cell to the west; otherwise, it returns the cell to the east.,evaluates the cell on the other side to get a codepoint and outputs the Unicode character with that codepoint. It always returns0. This is one of the few non-referentially-transparent operations in the language.- This program evaluates the invalid term
l. This would be an error, but-iwill cause invalid characters to be ignored (treated as).
This program defines a recursive function that takes a single argument x and always returns 0. It looks something like this in Python:
def f(x):
if x:
print(playfield[x, 0])
return f(x - 1)
else:
print(playfield[x, 0])
return 0
Python 3, 22B:
print("Hello, World!")
Template Qdeql, 128 bytes
h:184 h::-e:155*l:148 e::-o:145*c:212 l::-s:224*w:169 l::-r:142*d:156
o::-e:223*c::- *s::- *w::- *o::- *r::- *l::- *d::- *e::- *
This is just the "Hello, World!" example, with a few minor changes:
- The comment has been removed and all the integer names were shortened to 1 bytes
- The integer definitions were constant-folded
- The instructions and definitions have been interleaved, to reduce the amount of whitespace needed.
The whitespace could be anything matching the JS regex \s, but I did mostly spaces and one newline for legibility.
Hippopotomonstrosesquipedalian 2, 9465000 Bytes
The bytecount is only approximate, and the files would hang my computer if I pasted their contents so here is the link.
Documentation
Each word represents a 1 or 0. "pneumonoultramicroscopicsilicovolcanoconiosis" represents a 1 when a word that has 189819 letters (the long name for titin) represents a 0.
Messenger, 225 bytes
v>8v> *v>v >v >v >v>v >v >v >v >v >v >v >v >v >v >v >v
>S 7>S>/S1>S>+S>S3>S>/ S7>S>-S>*S>-S>*S>/S>+S>-S>-S>v
>9*^S^ 5 >+ 7 >+ 3 v S+ 5 3 9 9 7 3 6 8 3/
vS ^ >^ vS^>^vS>vS^>^> ^>^vS^ >^vS^ >^vS^vS^vS^vS^
Messenger is my first (completed) esolang. It works in 2D, and it uses messages for storage, rather than variables or stacks. This makes it tough to code in, since timing and placing have to be managed so that the code doesn't break (or worse, throw an error).
A Python 3.8+ interpreter which works from the command line can be found here. To use it in Try It Online, IDLE, etc., remove the ## WHILE RUNNING ## section of the code.
CLC-INTERCAL, 221 bytes.
DO;1<-#13DO;1SUB#1<-#29DO;1SUB#2<-#1100DO;1SUB#3<-#249DO;1SUB#4<-#255DO;1SUB#5<-#250DO;1SUB#6<-#677DO;1SUB#7<-#373DO;1SUB#8<-#4160DO;1SUB#9<-#570DO;1SUB#10<-#2572DO;1SUB#11<-#225DO;1SUB#12<-#247DO;1SUB#13<-#348DOREADOUT;1
How I generated the code above:
#!/usr/bin/env perl
# Usage: perl $0 STRING
# Generates a code that stores given STRING
# to ;1 array in CLC-INTERCAL's binary IO model
# so it can be output by DOREADOUT;1,
# without spaces.
my $line = shift;
my @values = unpack("C*", $line);
my $ptr = 0;
my @val = ();
my $io = 172;
for my $datum (@values) {
my $chr = $datum;
my $chr0 = $chr;
my $bits0 = 0;
my $bits1 = 0;
for (my $i = 0; $i < 8; $i++) {
if ($io & 0x80) {
$bits0 <<= 1;
$bits0 |= 1 if $chr & 0x80;
} else {
$bits1 <<= 1;
$bits1 |= 1 if ! ($chr & 0x80);
}
$chr <<= 1;
$io <<= 1;
}
$chr = int(rand 0xffff) + 1;
for (my $i = 0; $i < 8; $i++) {
$chr <<= 2;
$chr |= 2 if $bits0 & 0x80;
$chr |= 1 if $bits1 & 0x80;
$bits0 <<= 1;
$bits1 <<= 1;
}
$datum = $chr;
$io = $chr0;
}
print "DO;1<-#" . @values;
for my$i(0..$#values) {
my $clcii = $i + 1;
my $x = $values[$i] & 0xffff;
print 'DO,1SUB#' . $clcii . '<-#' . $x if $x;
}
There is other "Hello, World!" program that uses a tail array, but it has 278 bytes when I do these:
- Remove GIVE UP statement
- Replace PLEASE with DO, as politeness doesn't matter in CLC-INTERCAL
- Remove every space and LF.
Therefore I had to use binary I/O instead to shorten the program.
I think this is the only site that you can try CLC-INTERCAL online.
Edit. As of 1.-94.-2, politeness is not checked, unlike INTERCAL-72 and CLC-INTERCAL.
ACCUMULATOR, 103 102 bytes
-1 bytes from @SanguineL
ACMMMMCMMMMMURACMMCAAUAAAAAAAUUAAAURAAAACURAAACMURACMMMCMURACMMCAAAAAAAAAAAAUAAAUMMMMMMURACMMCAURAAACU
Follow the header link to try it online; note that you will have to paste the code in.
According to the language's Esolangs wiki page, ACCUMULATOR was designed by UndoneStudios for the main purpose of "solving the uselessness problem of the accumulator in most languages that have one."
As of writing this answer (05/28/2024), ACCUMULATOR only has these 6 commands:
AandMto increment and decrement the accumulator respectively,OandUto output the number and Unicode representations of the accumulator respectively,Cto concatenate the accumulator with itself (e.g., if the accumulator is 21 then withCit becomes 2121),- and
Rto reset the accumulator to 0.
Clarity, 16 bytes
Source:
"Hello, World!"
Output:
Hello, World!
Works in the Clarity console, outputs "Hello, World!". If you want to output it on the blockchain, which prints a lengthier output though, do this:
(print "Hello, World!")
Output:
Events emitted
{"contract_event":{"contract_identifier":"ST000000000000000000002AMW42H.contract-2","topic":"print","value":"\"Hello, World!\""},"type":"contract_event"}
Lazy K, 555 bytes
k(s``si`k``s``sss``s``ss``ss0``ss0``s``si`k``ss``s``ss0``ss(ss`ss``ss0)(s`0001ki
`s``si`k``s``si(ssi``ss0)(ssi``ss``ss0)``s``si`k``ss``s``sss``ss(ss`ss``ss0)``s`
`si`k``ss``ss``s``sss``s``sss``ss0``s``si`k``s``ss(ssi``ss0)``ss0``s``si`k``s``s
i``ss``ss0``ss``ss(ssi``ss``ss0)``s``si`k``ss``s``sss``ss(ss`ss``ss0)``s``si`k``
s``si``ss0``ss``s``sss``ss``s``sss``ss0``s``si`k``s``si(ssi``ss0)(ssi``ss``ss0)`
`s``si`k``s``ss0``ss(ss`ss``ss0)``s``si`k``ss``s``ss(ssi``ss0)``ss0``s`k(si`s`k`
si``sii)``si`k(ssi(ssi``ss0)))``s`0001`001`0001``s`k`si`001``si`k`0001k`kk)
ACCUMULATOR, 134 bytes
I spent 10 minutes on this.
AAAAAAACMMMMMUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAUUAAAURAAAACURAAACMURAAAAAAAACMUAAAAAAAAAAAAAAAAAAAAAAAAUAAAUMMMMMMUMMMMMMMMURAAACU
brainfuck, 72 bytes
+[-->-[>>+>-----<<]<--<---]>-.>>>+.>>..+++[.>]<<<<.+++.------.<<-.>>>>+.
And the original non-wrapping 76 byte solution:
+[+[<<<+>>>>]+<-<-<<<+<++]<<.<++.<++..+++.<<++.<---.>>.>.+++.------.>-.>>--.
Other shortest known (to my knowledge) solutions I've found
'Hello, world!' 77 bytes:
+[+++<+<<->>>[+>]>+<<++]>>>>--.>.>>>..+++.>>++.<<<.>>--.<.+++.------.<<<-.<<.
'hello, world!' 70 bytes:
+[>>>->-[>->----<<<]>>]>.---.>+..+++.>>.<.>>---.<<<.+++.------.<-.>>+.
These were found using a C++ program I wrote here: https://github.com/ksabry/bfbrute
Note: I originally wanted to clean up this code before I posted it to make it actually somewhat readable and usable, but since I haven't gotten around to it in over a year I figure I'll just post it as is. It makes heavy use of templates and compile time constants for any potential optimizations and it has a bunch of commented out code from my testing but no helpful comments so sorry but it's a bit horrible.
There is nothing terribly clever about the code, it's a brute forcer at its core, however it is quite optimized. The major optimization is that it first iterates through all programs without loops (no [ or ]) up to a specified length (16 currently) and caches an array of all the changes it will make on the data array. It will only store a single program per unique array of changes (so, for example, only one of >+<<-> and <->>+< will be stored). It then iterates through all possible programs which are composed of any program in this cache with any combination of loops between them. After executing each program it does a simple greedy hunt and peck for the characters and appends this to the end of the program.
After running this through the space of all programs I noticed that almost all the shortest programs (up to length ~19) were of the form *[*[*]*]. Restricting the search to programs of this form sped up the search considerably. The current record holder was found at length 27. This one was actually computed to be length 74, but I noticed a particular sequence .>.>.>. which was lucky enough to have a 0 in the data cell to its right allowing it to be simplified to [.>]< bringing it down to 72.
I let it run for quite a while and completed the search with the current parameters up to length 29; I suspect it will be difficult to beat the current one by simply going higher. I think the most promising approach would probably be increasing the search space in some intelligent way.
AWK, 18 bytes
$0="Hello, World!"
AWK defaults to {print $0}. Pass/pipe this anything and it will just print "Hello, World!".
echo "" | awk '$0="Hello, World!"'
Befalse (quirkster), 22 bytes
"!dlroW ,olleH"::::..;
Try it! (Usage: copy-paste into the code box, click Show above it, and then Run.)
So this is the golfiest way to repeat a single command a finite number of times and halt in Befalse.
: (Call) pushes the position to return onto the return stack so that ; (Ret) can return to the instruction after the corresponding :. As in Modular SNUSP, the return position is two steps away from the position of :. When the return stack is empty at ;, the program ends.
::::..; happens to execute . exactly 13 times:
::::..;
ABCDEF
starting at E, `.` is run twice
starting at D, `.` is run 3 times (EF, then return to F)
starting at C, `.` is run 5 times (DEF, then return to E)
starting at B, `.` is run 8 times (CDEF, then return to D)
starting at A, `.` is run 13 times
JSL - JMP Scripting Language, 15 bytes
In this challenge the most difficult part was to check whether JSL had no submissions yet (977 answers on 33 pages) =))
"Hello, World!"
Outputs "Hello, World!" to the console.
Acc!!, 61 bytes
195657271854030749545429
Count i while _ {
Write _%83+32
_/83
Stores the string Hello, World! as an integer in base-83 then uses a loop to decode and print it.
Note that Acc!! doesn't automatically close braces but due to a bug(?) in the official interpreter you are able to omit the closing brace if you don't use the associated loop variable.
Due to limitations of the scoreboard snippet, the title of this post is incorrect. The correct name of this language is Acc!! with italics.
Easyfuck, 18 16 bytes
¶ąőŘ␒2ěŮ˝b űůlČ„
Decompressed:
[.>]@Hello, World!
[.>]@Hello, World!
[ ] while loop
.> print and move to the next cell
@ end program
Hello, World! initializer data
Positionally, 80 bytes
/
^+ <
DH !"! C ! K !Q!N!6! +N!K !K!
;<
/ s /
Positionally, 153 81 bytes
/ \
1 \ \
- <^
fI I""em s p X!-pmm
;
j s /
Explanation
In contrast to many 2D-programming languages where the character itself signifies the command, Positionally differentiates itself by using the positions of non-whitespace characters to dictate the command executed. This unique approach effectively precludes the possibility of writing "flat" programs.
The language disregards all spaces, even those within strings, making output of the space in Hello, World! particularly challenging. As a workaround, the program inserts the string "emspX!-pmmfI (note this is overlaid on top of functional parts of the program) and then outputs it in reverse, decrementing each character's ASCII value by 1 to achieve the desired Hello, World!.
Yoda-Lang, 23 bytes
"Hello, World!" you say
I haven't figured out how to install Yoda-Lang so I can't tell if I can remove any spaces. I'll give another try at installing it soon, since this looks like a genuinely interesting language.
Uiua, 17 bytes
&p"Hello, World!"
Explanation:
&p"Hello, World!"
"Hello, World!" # push our dear string to the stack
&p # print with newline
D, 42 bytes
Something reminded me of this challenge today, so together with a few folks on the D Discord server, we devised what might be, however cursed, the shortest D hello world.
import std;@0main()=>"Hello, World!".puts;
Firstly, for some versions now, import std imports a large part of std modules including std.stdio, which saves 6 bytes from the usual solution. Secondly, we abuse AutoFuncDeclaration and User-Defined Attributes to apply a 0 literal as a function attribute, letting us omit the return type void. And, as it turns out, the D parser does not forbid placing identifiers right after numbers, letting us combine this into @0main. This might appear to be the devil's own creation but is 3 bytes shorter than the usual void main. Lastly, by using UFCS and substituting write or writeln for puts we save further 2 bytes.
We use the arrow notation for general "golfiness" but it's exactly the same length as if we had used braces, i.e. @0main(){...}
A questionable alternative, 38 bytes
pragma(msg,"Hello, World!");@0main(){}
While the program produced by this is valid, it doesn't do anything, and "Hello, World!" is printed during compilation.
IBM z/Architecture machine language on Linux, 31 bytes
00: a7 29 00 01 lghi %r2,1. # fd=1
04: c0 30 00 00 00 07 larl %r3,742 <+0x12> # set address of string
0a: a7 49 00 0d lghi %r4,13 # set length of string
0e: 0a 04 svc 4 # write() syscall
10: 0a 01 svc 1 # exit() syscall
12: 48 65 6c 6c # "Hello, World!"
16: 6f 2c 20 57
1a: 6f 72 6c 64
1e: 21
To try this on an emulator or actual machine, compile and run the following C program.
const char main[] __attribute__((section("rodata")))=
"\xa7\x29\x00\x01\xc0\x30\x00\x00\x00\x07\xa7\x49\x00"
"\x0d\x0a\x04\x0a\x01Hello, World!";
On a 31 bit machine (or 64 bit machine in 31 bit mode) change the lghi instructions to lhi which can be done by clearing the 16th most significant bit (0x29 becomes 0x28; 0x49 becomes 0x48).
PA-RISC 1.1 machine language on HP-UX 10.20, 53 48 bytes
00: eb 20 00 20 bl 18,r25 # load address of string to %r25
04: 34 1a 00 02 ldi 1,r26 # branch delay slot, fd=1 to %r26
08: 00 00 00 48 # "Hello, World!"
0c: 65 6c 6c 6f
10: 2c 20 57 6f
14: 72 6c 64 21
18: 34 16 00 08 ldi 4,r22 # select write() syscall
1c: 20 20 08 01 ldil -40000000,r1
20: e4 20 e0 08 ble 4(sr7,r1) # HP-UX syscall
24: 34 18 00 1a ldi d,r24 # branch delay slot, length of string to %r24
28: e8 1f 1f dd b 1c # goto 0x1c
2c: 34 16 00 02 ldi 1,r22 # branch delay slot, select exit() syscall
(UNTESTED) For Linux, you may have to change the syscall instruction to ble 0x100(%sr2, %r0) and may be able to remove ldil -40000000,r1
To try this on a PA-RISC machine or emulator, compile and run the following C program.
int f[]={0xeb200020,0x341a0002,'H','ello',', Wo','rld!',0x34160008,
0x20200801,0xe420e008,0x3418001a,0xe81f1fdd,0x34160002};
int main(){
((int(*)())f)();
}
MetaBrainfuck -x, (22 bytes)
"Hello, World!"{{+}.>}
Explanation
"Hello, World!"{ } # for each character in the string "Hello, World!"
{+}.> # repeat + that many times, then append .>
expands to the following Brainfuck program:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++.>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>+++++++++++++++++++++++++++++++++.>
which when executed (-x flag) prints Hello, World!
(U+0001 and U+10FFFE), 158 bytes
1-1>11<1>1111<11>11<1>1<1>1<11>1<11>111<11>1<11>111<11>1<1111>11<1>1<11>1111<1>111111<1>1<1>1<111>1<11>1<1111>1<111>11<1>11<11>1<11>111<11>11<1>1111<1>1111<1
Ends with the character U+10FFFE, but since this language has only 13 builtins (including that character), I've decided to score each character as a single byte.
H🌍, 2 Bytes
hw
I discovered this language a few minutes ago.
Try it online! (Modified interpreter located in header and footer.)
{,}, 2279 Chars or \$2279\log_{256}(4)\approx\$ 569.75 Bytes
({(())},()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(),()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(),()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(),()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(),()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(),()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(),()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(),()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(),()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(),()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(),()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(),()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(),()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())
Completely ungolfed (for now)
Minecraft Function, 26 bytes
tellraw @a "Hello, World!"
AArch64 machine language Linux, 48 45 37 bytes
00: d2800020 mov x0, #0x1 ; stdout is fd=1
04: 100000a1 adr x1, 18 ; put addr of string to x1
08: d28001a2 mov x2, #0xd ; length of string
0c: d2800808 mov x8, #0x40 ; select write() syscall
10: d4000001 svc #0x0 ; syscall
14: d65f03c0 ret
18: 6c6c6548 "Hello, World!"
1c: 57202c6f
20: 646c726f
24: 00000021
To try it out on an AArch64 Linux machine or Android device with Termux, compile and run the following C program. You may need to pass the -zexecstack argument to the compiler.
int main[]__attribute__((section(".text")))={0xd2800020,0x100000a1,0xd28001a2
,0xd2800808,0xd4000001,0xd65f03c0,'lleH','W ,o', 'dlro', '!'};
Alpha AXP machine language on OSF/1, 40 bytes
0x00: d2200004 bsr a1, 0x14(zero) # Set a1 to pointer of string
0x04: 6c6c6548 "Hello, World!\0\0\0"
0x08: 57202c6f
0x0c: 646c726f
0x10: 00000021
0x14: 43e09400 addq zero, 0x4, v0 # Select write() syscall
0x18: 43e03410 addq zero, 0x1, a0 # stdout
0x1c: 43e1b412 addq zero, 0xd, a2 # string length
0x20: 00000083 call_pal callsys # write(1, str, len)
0x24: 6bfa8001 ret zero, (ra), 1 # return
To try this on a suitable machine or emulator, compile and run the following C program
int main[]={0xd2200004,0x6c6c6548,0x57202c6f,0x646c726f,0x21,
0x43e09400,0x43e03410,0x43e1b412,0x83,0x6bfa8001};
32 bit SPARC machine language on SunOS, 48 45 bytes
0x00: 40 00 00 02 call 0x8 ! PC relative jump, return addr to %o7
0x04: 82 10 20 04 mov 4, %g1 ! delay slot; select write() syscall
0x08: 90 10 20 01 mov 1, %o0 ! stdout is fd=1
0x0c: 92 03 E0 20 add %o7, 32, %o1 ! put addr of string in %o1
0x10: 94 10 20 0d mov 13, %o2 ! length of string
0x14: 91 D0 20 08 ta %icc, %g0 + 8 ! call write()
0x18: 82 10 20 01 mov 1, %g1 ! select exit() syscall
0x1c: 91 D0 20 08 ta %icc, %g0 + 8 ! call exit()
0x20: 48 65 6c 6c "Hello, World!"
6f 2c 20 57
6f 72 6c 64
21
Porting to 64 bit SPARC requires changing the argument of the trap instruction from 8 to 64.
To try this on a SunOS machine, compile and run the following C program.
const char main[]="\x40\x00\x00\x02\x82\x10\x20\x04\x90\x10\x20\x01\x92\x03\xe0\x20\x94\x10\x20\x0d\x91\xd0\x20\x08\x82\x10\x20\x01\x91\xd0\x20\x08Hello, World!";
EDIT: To try this on Linux (for SPARC), change the argument of the trap instruction to 16 for 32 bit mode and 109 for 64 bit mode.
Perl 5, 171 bytes
$_=chr(72);print$_,chr(69);@l=(1..2);for(@l){print"L"}sub o{$o=79;print(chr($o));}o();my $h=32;print chr($h),'W';o();$r='R';print$r;$_=chr(76);print;$d=0;print chr($d+68);
(,) 375 344 334 Chars or \$334\log_{256}(3)\approx66.17\$ Bytes
(()()(),()()()()()()())((),(()()())()()())((()),(())(())(()))(((())),((()))((()))(()))(,,,(((())))()())(()(),(((())))((()))())(,,,(()()))(,,,(()())(()()()),(),,()())(,,,(()())(()))(,,,((()))(())()()()())(,,,((()))()())(,,,(((())))(())(()()()))(,,,(()())(()))(,,,(()())(())()()())(,,,(()())(()()()))(,,,(((())))((())))(,,,((()))()()())
Can likely still be golfed a lot.
Tio
Shasta v0.0.5, 24 bytes
(print["Hello, World!"])
Shasta is a new programming language I've been developing for the past couple of days, and I've finally got it to a state where I can start to answer some challenges on the site here. It is inspired by Lisp and Python, and transpiles to JavaScript. I'll update the header once the language gets a bit more stable; it's possible (though very unlikely) that this Hello World program won't work anymore in the future.
I haven't set up an online interpreter yet, so for now you can install Shasta off NPM with npm install --global shasta-lang@0.0.5, and run it via the CLI:
echo '(print["Hello, World!"])' | shasta-lang | node
Hello, World!
Commodore C64 BASIC (Non-competing/just for fun), 36 Tokenised BASIC bytes, 34 PETSCII characters
0LIST:REM"{DEL}{DEL}{DEL}{DEL}{DEL}{DEL}{DEL}{DEL}{DEL}{DEL}{DEL}{DEL}HELLO, WORLD!
This uses a trick to hide a BASIC line, by starting a REM statement with a quotation mark, you may use the delete control character (CTRL+T) which is displayed as a reversed T character (see screen shot below). When you RUN the program, the line number, LIST and REM command are hidden by the text HELLO, WORLD!. You get the same output when you LIST the program too.
Num Stack Arithmac, \$165\times\log_{256}(16)=82.5\$ Bytes
++^++++^++++++++q+++++++++++++++++++++++++++++q+++++++qq+++q-%++^-^---^++++++++q------------q%+++^^++++++q++++++++++++++++++++++++q+++q------q--------q%++^-^---^---q
Well, there are actually 13 builtins (Including <> for comments but not all the characters that can go in them). Since people do not like when the \$\log\$ method produces irrational numbers, I have chosen to take the \$\log\$ of 16 instead. If someone knows how to contact the TIO person to add a new programming language, please comment below. Anyways, to run this script in command prompt (>>> denotes what you type in):
>>> pip install num-stack-arithmac
>>> python3
>>> from num_stack_arithmac import compile
Welcome to Num Stack Arithmac!
Enter the filepath or code you want to run (or type "g" for a graphical editor with no support for saving and opening files):
>>> ++^++++^++++++++q+++++++++++++++++++++++++++++q+++++++qq+++q-%++^-^---^++++++++q------------q%+++^^++++++q++++++++++++++++++++++++q+++q------q--------q%++^-^---^---q
Enter the starting number:
>>>
Now the programme will print Hello, World!. The programming language has implicit input. If the programme you are running requires no input, do not enter anything. The starting number will default to 0. You can also type g instead of the code for a window to pop up in which you can paste the code in and run the programme.
Vyxal, 10 bitsv1, 1.25 bytes
kH
Pushes the string "Hello, World!"
Alternatively,
Vyxal, 50 bitsv1, 6.25 bytes
`ƈṡ, ƛ€!
Thunno 2, 2 bytes
kH
Polyglots with Vyxal. Constant for "Hello, World!".
Thunno 2, 8 bytes
’Ƙ¥, «ʋ!
Dictionary compressed string.
Java 5, 61 bytes
enum H{H;{System.out.print("Hello, World!");System.exit(0);}}
This is valid in both Java 5 and Java 6. This won't work in Java 4 or earlier (because enum didn't exist) and will not work in Java 7 or after (because this solution uses a bypass[1] that was "fixed").
enum H { // An enum is basically a class.
H; // Static initialization of the mandatory instance, invoking the default constructor.
// Happens before the existence check of "main"-method.
// No constructor means default constructor in Java.
{ // Instance initialization block.
// Executed in each constructor call.
System.out.print("Hello, World!"); // duh!
System.exit(0); // Exit before the JVM complains that no main method is found.
// (and before it writes on stderr)
}
}
Rough equivalence in Java as usually written
The above code is roughly equivalent to the following one.
class HelloWorld {
public final static HelloWorld INSTANCE;
static {
INSTANCE = new HelloWorld();
}
public HelloWorld() {
System.out.print("Hello, World!");
System.exit(0);
}
}
Proof of correctness
$ java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
$ javac H.java
$ java H
Hello, World!
$
- The bypass consists of the static execution of code when the class is being linked. Before Java 7, the
main-method-containing class was no exception to the static initialization code. Afterwards, static initialization was delayed until themainmethod would actually be found.
Acc!!, 122 bytes
Due to limitations of the scoreboard snippet, the title of this post is incorrect. The correct name of this language is Acc!! with italics.
108
Write 72
Write 101
Write _
Write _
Write 111
Write 44
Write 32
Write 87
Write 111
Write 114
Write _
Write 100
Write 33
The first line stores 108 (char code for l) in the accumulator. The rest writes Hello, World! one character at a time, with _ referencing the accumulator value. Using the accumulator beats the straightforward version by 2 bytes. :^)
Works the same in Acc!.
hyperscript, 27 24 bytes
init log 'Hello, World!'
<script src="https://unpkg.com/hyperscript.org@0.9.8"></script>
<script type="text/hyperscript">
init log 'Hello, World!'
</script>
Calls the log command when the document is initialized.
Logically, 1046 Bytes
@A:3i:o,c:4t;XOR(3i)(t3)AND(i0,i1)(t0)AND(i1,i2)(t1)AND(i0,i2)(t2)COPY(t3)(o)OR(3t)(c)
@B:8a,8b:8o,d:7c;A(a0,b0,0)(o0,c0)A(a1,b1,c0)(o1,c1)A(a2,b2,c1)(o2,c2)A(a3,b3,c2)(o3,c3)A(a4,b4,c3)(o4,c4)A(a5,b5,c4)(o5,c5)A(a6,b6,c5)(o6,c6)A(a7,b7,c6)(o7,d)
@C:i,a,b:d:x,y,z;NOT(i)(x)AND(a,x)(y)AND(b,i)(z)OR(y,z)(d)
@D:i,8a,8b:8o;C(i,a0,b0)(o0)C(i,a1,b1)(o1)C(i,a2,b2)(o2)C(i,a3,b3)(o3)C(i,a4,b4)(o4)C(i,a5,b5)(o5)C(i,a6,b6)(o6)C(i,a7,b7)(o7)
@E:1i,i,16a,16b:8o:8c,8d;D(1i,16a)(8c)D(1i,16b)(8d)D(i,8c,8d)(8o)
@F:2i,i,32a,32b:8o:8c,8d;E(2i,32a)(8c)E(2i,32b)(8d)D(i,8c,8d)(8o)
@G:3i,i,64a,64b:8o:8c,8d;F(3i,64a)(8c)F(3i,64b)(8d)D(i,8c,8d)(8o)
@H:i:p:b_HIGH;NOT(i)(b)AND(i,b)(p)
@I:i:o:16d;COPY(i,16d)(16d,o)
@J B:8a,8i,b,r,d,8c;B(8a,1)(8i)CELL(b,8i)(8a)H(H)(r)OR(r,b)(d)I(d)(b)WRITE(b,8c)()G(4a,0,0,0,1,0,0,1,0,1,0,1,0,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,1,1,1,1,0,1,1,0,0,0,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,0,0,0,1,1,0,1,1,0,0,0,1,0,0,1,1,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1)(8c)HALT(c7)()
Ungolfed
@2BitAdder
: 3in;
: out, carry;
: 4t;
XOR (3in) (t3)
AND (in0, in1) (t0)
AND (in1, in2) (t1)
AND (in0, in2) (t2)
COPY (t3) (out)
OR (3t) (carry)
@ByteAdder
: 8a, 8b;
: 8o, carry;
: 7c;
2BitAdder (a0, b0, 0) (o0, c0)
2BitAdder (a1, b1, c0) (o1, c1)
2BitAdder (a2, b2, c1) (o2, c2)
2BitAdder (a3, b3, c2) (o3, c3)
2BitAdder (a4, b4, c3) (o4, c4)
2BitAdder (a5, b5, c4) (o5, c5)
2BitAdder (a6, b6, c5) (o6, c6)
2BitAdder (a7, b7, c6) (o7, carry)
@Mux
: i, a, b;
: d;
: ni, ani, bi;
NOT (i) (ni)
AND (a, ni) (ani)
AND (b, i) (bi)
OR (ani, bi) (d)
@ByteMux
: i, [8d0], [8d1];
: [8o];
Mux (i, d00, d10) (o0)
Mux (i, d01, d11) (o1)
Mux (i, d02, d12) (o2)
Mux (i, d03, d13) (o3)
Mux (i, d04, d14) (o4)
Mux (i, d05, d15) (o5)
Mux (i, d06, d16) (o6)
Mux (i, d07, d17) (o7)
@4ByteMux
: 1i, i, 16a, 16b;
: 8o;
: 8c, 8d;
ByteMux (1i, 16a) (8c)
ByteMux (1i, 16b) (8d)
ByteMux ( i, 8c, 8d) (8o)
@8ByteMux
: 2i, i, 32a, 32b;
: 8o;
: 8c, 8d;
4ByteMux (2i, 32a) (8c)
4ByteMux (2i, 32b) (8d)
ByteMux ( i, 8c, 8d) (8o)
@FByteMux
: 3i, i, 64a, 64b;
: 8o;
: 8c, 8d;
8ByteMux (3i, 64a) (8c)
8ByteMux (3i, 64b) (8d)
ByteMux ( i, 8c, 8d) (8o)
@RisingEdge
: in;
: pulse;
: bar_HIGH;
NOT (in) (bar)
AND (in, bar) (pulse)
@Delay
: in;
: out;
: 16d;
COPY (in, 16d) (16d, out)
@Main
Bus: 8a, 8i, clock, risingPulse, delayIn, 8c;
ByteAdder (8a, 1) (8i)
CELL (clock, 8i) (8a)
RisingEdge (H) (risingPulse)
OR (risingPulse, clock) (delayIn)
Delay (delayIn) (clock)
WRITE (clock, [8c]) ()
FByteMux (4a,
0,0,0,1, 0,0,1,0,
1,0,1,0, 0,1,1,0,
0,0,1,1, 0,1,1,0,
0,0,1,1, 0,1,1,0,
1,1,1,1, 0,1,1,0,
0,0,1,1, 0,1,0,0,
0,0,0,0, 0,1,0,0,
1,1,1,0, 1,0,1,0,
1,1,1,1, 0,1,1,0,
0,1,0,0, 1,1,1,0,
0,0,1,1, 0,1,1,0,
0,0,1,0, 0,1,1,0,
1,0,0,0, 0,1,0,0,
0,1,0,1, 0,0,0,0,
0,0,0,0, 0,0,0,1)
(8c)
HALT (c7) ()
Uses a Clock circuit to count up and output each character manually from a 16 byte Demuxer
Hippopotomonstrosesquipedalian, 6610 Bytes
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
hippopotomonstrosesquipedalian
hippopotomonstrosesquipedalian
pneumonoultramicroscopicsilicovolcanoconiosis
The name of the programming language says it all.
Compiler
c=""
p=input("What is the file path of the Hippopotomonstrosesquipedalian programme you want to run (including disk name)?\n")
f=open(p,"r")
r=f.readlines()
for x in range(0,len(r)):
if r[x]=="pneumonoultramicroscopicsilicovolcanoconiosis" or r[x]=="pneumonoultramicroscopicsilicovolcanoconiosis\n":
c=c+"1"
elif r[x]=="hippopotomonstrosesquipedalian" or r[x]=="hippopotomonstrosesquipedalian\n":
c=c+"0"
else:
raise SyntaxError("You cannot use a word other than 'hippopotomonstrosesquipedalian' or 'pneumonoultramicroscopicsilicovolcanoconiosis'. Is each word on its own line?")
d=int(c, 2)
l=(d.bit_length() + 7)//8
n=d.to_bytes(l,"big")
t=n.decode()
f.close()
g=open("programme_made_by_compiler_do_not_touch.py","w")
g.write(t)
g.close()
exec(open("programme_made_by_compiler_do_not_touch.py").read())
open("programme_made_by_compiler_do_not_touch.py").close()
Carbon, 62 bytes
package c api;fn Main()->i32{Print("Hello, World!");return 0;}
Thanks to @Steffan for fixing this
Carbon is a new language by Google, supposed to be a successor to C++. Pretty boilerplatey language, even longer than Java.
Python 3, 20 bytes
print("Hello, World!")
Rol, 24 bytes
println("Hello, World!")
Rol is a new language I'm creating for the purposes of replacing Lua (because who likes Lua). I was gonna post this when the language was much more mature but I felt like reworking the CLI so I added an interpreter mode. That means you don't have to mess around with the stdlib and Lua linking and whatnot.
Once you download the jar from the releases, run it like this:
java -jar Rol-<version>.jar -i <input file>
Make sure -i is added otherwise it'll spit out a compiled Lua file.
Trilangle, 42 bytes
Prints no trailing newline.
"Hoo"!"o(oeooolo"""o"",Wr"!.looodo..o"""o@
Try it in the online interpreter: https://bbrk24.github.io/Trilangle/
The default program in the online interpreter is a variation on this that does print the trailing newline.
HP User RPL, 14 bytes
Thanks Corvalis
"Hello, World!"
dc, 16 bytes
One of my favorite calculator was missing, this should correct it.
[Hello, World!]p
Aheui (esotope), 92 bytes
붊볼벎봆뱞벽뱖벽브벓벍
부볃붊벋볾뱛벋따드먛뗘벎희별
밤뵗뵏뵒볾
Same code as below, but reuses four "data" chars (12 bytes) at the expense of two newlines. The compound vowel ㅚ does not have an assigned momentum, so the IP keeps going with the same speed and direction.
Aheui (esotope), 117 102 bytes
밞바밤밣받밞밞밞밦밞바밝밣바박박밦밞받밞받밞발밣받뱔희밞땨몋드떠받볋
Another approach that is simpler and actually achieves the 2-char-per-output encoding. Each byte in Hello, World! can be encoded as \$9x+y+24\$ where \$x, y \in \{0,2,3,4,5,6,7,8,9\}\$. Here is the encoder. It also happened that the two additions were neatly merged into one character (once with +2 step and the other with -1), shaving off another char.
Aheui (esotope), 117 bytes
박밤밝발밞받밝밝밦밞밦발받박타받발따발밯밦밞밞받밞받밤받발따밞뱧희밣댜몋땨뎌벎
Aheui (esotope), 123 bytes
박박발타밝받발밞밝발밣받밣바받받밣타받밯밣받발밞발밞밦발밝뱧희밣댜몋땨뎌뱔텨뱔벽떠
Previous record: 144 by Sait2000
Since Aheui cannot push 10 or higher number at once, these programs try to minimize the cost of data by encoding each character into two numbers on the stack. If we subtract each character's charcode by 9 (the magic number), we get
63 92 99 99 102 35 23 78 102 105 99 91 24
7x9, 23x4, 11x9, 11x9, 17x6, 7x5, 23x1, 13x6, 17x6, 15x7, 11x9, 13x7, 12x2
And then subtract 8 from the larger number of each pair to get
-1 9 15 4 3 9 3 9 9 6 -1 5 15 1 5 6 9 6 7 7 3 9 5 7 4 2
Each occurrence of 15 or 1 adds 3 commands; the rest can be pushed in one. Then the loop is essentially
loop {
add 8 (if stack is empty, halt)
mul
add 9; print as char
}
The second program is written in the same way, but using 23 as the magic number instead.
Whitespace, 192 150 146 bytes
Whitespace only needs spaces, tabs and linefeeds while other characters are ignored.
Which can be troublesome to display on here.
So in the code below the spaces & tabs were replaced.
And a ';' was put in front of the linefeeds for clarity.
To run the code, first replace . and > by spaces and tabs.
...;
..>>..>.>.;
..>>>>;
...>;
...>>>;
...>..;
..>>.>..;
..>>..>.>>;
..>>>>>>>;
...>..;
...>;
.;
...>>>.;
..>>...>>;
;
..;
.;
.;
>.>;
...>>.>.>>;
>...>;
..;
.;
;
;
..>;
;
;
;
Hexdump of code
00000000: 2020 200a 2020 0909 2020 0920 0920 0a20
00000010: 2009 0909 090a 2020 2009 0a20 2020 0909
00000020: 090a 2020 2009 2020 0a20 2009 0920 0920
00000030: 200a 2020 0909 2020 0920 0909 0a20 2009
00000040: 0909 0909 0909 0a20 2020 0920 200a 2020
00000050: 2009 0a20 0a20 2020 0909 0920 0a20 2009
00000060: 0920 2020 0909 0a0a 2020 0a20 0a20 0a09
00000070: 2009 0a20 2020 0909 2009 2009 090a 0920
00000080: 2020 090a 2020 0a20 0a0a 0a20 2009 0a0a
00000090: 0a0a
Whitespace assembly code:
push 0 ;null
push -74 ;! chr(33)
push -7 ;d chr(100)
push 1 ;l chr(108)
push 7 ;r chr(114)
push 4 ;o chr(111)
push -20 ;W chr(87)
push -75 ; chr(32)
push -63 ;, chr(44)
push 4 ;o
push 1 ;l
dup ;l
push -6 ;e chr(101)
push -35 ;H chr(72)
p:
dup jumpz e
push 107 add printc
jump p
e:
exit
Remarks:
I had to write a program just to calculate that adding 107 gives the optimal golf for the sentence. Since the bytesize that an integer takes in the code changes. : 4+int(abs(log2($n)))
The code will still run without the "e:" label & exit part on whitespace.kauaveel.ee. But that could make the whitespace code invalid on other whitespace compilers. So those bytes weren't golfed out from the solution.
It Should Be Noted That
As Kevin Cruijssen pointed out in the comments, by allowing an "exit by error" as per meta, the Whitespace can be golfcoded more to 126 characters.
..>>..>.>.;
..>>>>;
...>;
...>>>;
...>..;
..>>.>..;
..>>..>.>>;
..>>>>>>>;
...>..;
...>;
.;
...>>>.;
..>>...>>;
;
..;
...>>.>.>>;
>...>;
..;
.;
;
Assembly:
push -74
push -7
push 1
push 7
push 4
push -20
push -75
push -63
push 4
push 1
dup
push -6
push -35
label_0:
push 107
add
printc
jmp label_0
C, 30 Bytes
main(){puts("Hello, World!");}
Fairly vanilla, but I can't think of a commonly compilable way to do it any shorter (unless maybe some kind of raw asm trick might work?). Still, beats most esolangs!
Haystack, 17 Bytes
Haystack is a 2D programming language that executes until it finds the needle in the haystack |, all while performing stack-based operations. All programs start from the top left corner, and can use the directional characters ><^v to move around the program. Direction is inherited, so you do not need to keep using > to go right, direction will only change when it hits a different directional character.
By default, the interpreter reads from the top left going right, so we can just put "Hello, World!" onto the stack, use o to print it, then place the needle to finish executing.
"Hello, World!"o|
Bonus: A more exciting version:
v >;+o|
v "
v !
v d
v l
v r
>>"Hello, ">>>v
W v
" v
^<<<<<<<
Java, 79
class H{public static void main(String[]a){System.out.print("Hello, World!");}}
Earlier versions of Java may allow you to use a static block (51 bytes), but currently I don't know of a way to bypass the main method.
Chef, 465 bytes
H.
Ingredients.
72 l h
101 l e
108 l l
111 l o
44 l C
32 l S
87 l w
114 l r
100 l d
33 l X
Method.
Put X into mixing bowl.Put d into mixing bowl.Put l into mixing bowl.Put r into mixing bowl.Put o into mixing bowl.Put w into mixing bowl.Put S into mixing bowl.Put C into mixing bowl.Put o into mixing bowl.Put l into mixing bowl.Put l into mixing bowl.Put e into mixing bowl.Put h into mixing bowl.Pour contents of the mixing bowl into the baking dish.
Serves 1.
Tested with the Ruby interpreter. Makes alphabet soup.
I tried to be as compliant to the original spec as I could, so even though the interpreter I used lets you drop the thes in the Pour contents instruction, I haven't done so.
The mixing bowl is pretty expensive, so there might be a better approach. I tried using base conversion to encode the message, but unfortunately the spec doesn't clarify whether Divide uses integer or floating point division, and the interpreter I have uses the latter. There's also no modulo operator, which doesn't help either.
MarioLANG, 259 249 242 240 235 bytes
+>+>)+)+)+++)++++((((-[!)>->.
+"+"===================#+".")
+++!((+++++++++)++++++)<.---+
++=#===================")---.
++((.-(.)).+++..+++++++.<---
!+======================---
=#>++++++++++++++.).+++.-!>!
=======================#=#
This has been tested in the Ruby implementation.
After obfuscating "Hello, World!" in MarioLANG I looked into golfing it a bit. The above is the shortest I have found so far.
As before I started from a Brainfuck solution which sets four cells to the nearest multiple of 10 to the characters He, and space and converted it to MarioLANG. You can then shorten the code a bit by making use of the auxiliary floor in the loop which almost halves the width of the loop. Note that the bottom is only executed one time less than the top, so you don't get exact multiples of the initial counter in all 4 cells any more.
Finally, I wanted to make use of the wasted space in front of the loop, so I added a bunch of elevators to make use of the vertical space there. And then I realised that I could fold the code after the loop (see previous revision) below the loop to make use of some more vertical space, which saved five more bytes.
This is likely still far from perfect, but it's a decent improvement over the naive solution, I think.
Metagolf
Time for some automation...
I have started setting up a solver in Mathematica to find an optimal solution. It currently assumes that the structure of the code is fixed: counter set to 12, 4 cells for printing, with the fixed assignment to He,<space> and the same order of those cells. What it varies is the number of +s in the loop as well as the necessary corrections afterwards:
n = 12;
Minimize[
{
3(*lines*)+
12(*initialiser base*)+
Ceiling[(n - 6)/2] 3(*additional initialiser*)+
8(*loop ends*)+
18(*cell moves*)+
26(*printing*)+
43*2(*steps between letters in one cell*)+
-2(*edge golf*)+
4 Max[4 + a + d + g + j + 2 Sign[Sign@g + Sign@j] + 2 Sign@j + 2,
4 + b + e + h + k + 2 Sign[Sign@h + Sign@k] + 2 Sign@k] +
2 (Abs@c + Abs@f + Abs@i + Abs@l),
a >= 0 && d >= 0 && g >= 0 && j >= 0 &&
b >= 0 && e >= 0 && h >= 0 && k >= 0 &&
n*a + (n - 1) b + c == 72 &&
n*d + (n - 1) e + f == 101 &&
n*g + (n - 1) h + i == 44 &&
n*j + (n - 1) k + l == 32
},
{a, b, c, d, e, f, g, h, i, j, k, l},
Integers
]
It turns out, that for an initial counter of 12 my handcrafted solution is already optimal. However, using 11 instead saves two bytes. I tried all counter values from 6 to 20 (inclusive) with the following results:
6: {277,{a->7,b->6,c->0,d->16,e->1,f->0,g->0,h->9,i->-1,j->0,k->6,l->2}}
7: {266,{a->6,b->5,c->0,d->11,e->4,f->0,g->2,h->5,i->0,j->0,k->5,l->2}}
8: {258,{a->2,b->8,c->0,d->3,e->11,f->0,g->5,h->0,i->4,j->4,k->0,l->0}}
9: {253,{a->8,b->0,c->0,d->5,e->7,f->0,g->2,h->3,i->2,j->0,k->4,l->0}}
10: {251,{a->0,b->8,c->0,d->3,e->8,f->-1,g->4,h->0,i->4,j->3,k->0,l->2}}
11: {240,{a->1,b->6,c->1,d->1,e->9,f->0,g->4,h->0,i->0,j->3,k->0,l->-1}}
12: {242,{a->6,b->0,c->0,d->6,e->3,f->-4,g->0,h->4,i->0,j->0,k->3,l->-1}}
13: {257,{a->1,b->5,c->-1,d->6,e->2,f->-1,g->3,h->0,i->5,j->0,k->3,l->-4}}
14: {257,{a->1,b->4,c->6,d->0,e->8,f->-3,g->3,h->0,i->2,j->2,k->0,l->4}}
15: {242,{a->1,b->4,c->1,d->3,e->4,f->0,g->1,h->2,i->1,j->2,k->0,l->2}}
16: {252,{a->0,b->5,c->-3,d->4,e->2,f->7,g->0,h->3,i->-1,j->2,k->0,l->0}}
17: {245,{a->4,b->0,c->4,d->5,e->1,f->0,g->0,h->3,i->-4,j->0,k->2,l->0}}
18: {253,{a->4,b->0,c->0,d->1,e->5,f->-2,g->2,h->0,i->8,j->0,k->2,l->-2}}
19: {264,{a->0,b->4,c->0,d->5,e->0,f->6,g->2,h->0,i->6,j->0,k->2,l->-4}}
20: {262,{a->0,b->4,c->-4,d->5,e->0,f->1,g->2,h->0,i->4,j->0,k->2,l->-6}}
Note: This solver assumes that the linear code after the loop is all on the top line, and the above code is that solution folded up. There might be a shorter overall solution by making the solver aware of the folding, because now I get 3 more +s in the first part for free, and the next 4 instructions would cost only 1 byte instead of 2.
Seed, 6016 4234 4203 bytes
20 854872453003476740699221564322673731945828554947586276010721089172712854441839676581917455319274850944955030258951339804246125714958815519550291630078076933441706558540342671975808828643360922071900333028778314875248417953197990571991784126564752005357199892690656368640420204822142316716413192024742766282266114842280731756458212469988291309261528542889299297601723286769284159107438930448971911102280330101196758384815655479640836157495863547199726234352265518586460633795171196315255736880028338460236768181141732764911402112878175632130129852788301009582463631290071329795384336617491655825493435803011947670180368458659271192428341035912236946048939139042310380278430049252171822721598175984923434205610723412240162418996808671543770639111617709604242882388664919702606792443015941265168129550718541372361144081848761690730764968771245566074501485020726368378675085908872608679630368472956274468410052703615106090238423979678950131481176272880569100533049143775921798055136871254424261001442543122666701145111965968366507060931708140304772342855064834334129143038575569044150428480231956133612367393837580345180691911525531699573096952433882387811884727975431823620782822755161559988205401134640722220804177812794328129589949692446031008866917615922944976151073653201316255518389496411696741029209242119521978920200314572718584995265523235225587228975886710511855501710470163649632761488899317729943053884132314641377747687975638119132094777769497069556255954031537245957811105217875011509899497752696062748928963281605780942517262774976217663461063680912331030221981433051827519906741285738915397005702326447635845195923640649166530310494885569783989508000344280715868581532826832242144647203531393142251025361866506821695860883605004105862208004440476654027574832078603305884731766236740069411566854496824754558761536201352147934963241039597221404341132342297870517293237489233057335406510464277610336142382379135365550299895416613763920950687921780736585299310706573253951966294045814905727514141733220565108490291792987304210662448111170752411153136765318541264632854767660676223663544921028492602135525959428999005153729028491208277493747933069008199074925710651071766675870081314909460661981433426167330215548196538791617762566403934129026219366764038390123622134753742930729751695349588862441999672547791630729398908283091638866715502470152431589429837867944760012419885615525232399584379209285060418518373512154801760060312646951597932345591416241634668119867158079946680321131213357200382937049485606706114467095019612014749723443159443363662563254359712162432143334612180576945072905749883870150120687696027984317320305291407322779803583395375616762530641605634303022155218169343410634115050596030685041633824154135240376022159918501703555881290333205131375705406831260759974112248490451605422031345264183102048614606636275942039438138959188478277971377232005036301145411215067576576667743288951344423152531417111852584846747428443123174595987315325304540564683047858415059703724263652136185848573853965992798725654430360647040362341567082462847275277303225817689141675391972818943419663764371222973269129542760661385278009266471167618553065823580448848795731295589715602705860758954890415040763604082216728159486423396295188510311881004469017351709060492844398219491990895826924575575549615118821417543037296628825303328056839433114519945243963946989899508355224823109677424196639930153649890175062456649384605721510239142861693109687536600667811037619175927995599388547421689316110236566026931360164495251160997857372500940728057700473763884480342708897319990346726967220426504612260565552531158509215849649565188655100774748485416791517853427613458459889062942881409801879085054494129489535044719193283409051007851153504224002807392992520076910314763705776345053922387355156981872691537772657428096384535960466923475731297217863371650154415835785630016335858514130863258775100537612371430357576913148500310344278511588325852376442503898849856566716198848377379400158332792027967216204970114516984638014129252882482309132898416484525230488700253065644547798869056136044415413099076332059572505138116227535024546891015836838323022822272664771489129085797354578016574544759934333471793
Try it online! The resulting Befunge-98 program (based on this) is
"9!dlroW ,olleH"ck,@
Homespring, 58 bytes
Universe net hatchery Hello,. World! powers a b snowmelt
The trailing space is significant.
Let me tell you a story. There was once a power plant which powered a nearby salmon hatchery. The salmon hatchery hatched a young homeless salmon which embarked on a journey upriver to find a spring. It did find such a spring, with the poetic name "Hello, World!", where it matured and spawned a new young salmon. Both fish now swam downstream, in search of the wide ocean. But just short of the mouth of the river, there was a net in the river - the mature fish was caught and only the young one managed to slip through and reached the ocean and the rest of the universe. In the meantime, the hatchery had hatched more salmon which had travelled upstream as well and spawned and so on and so on.
However, vast amounts of melting snow had been travelling down a different arm of the river. And just after our first young salmon from the springs of "Hello, World!" has reached the ocean, the snowmelt hit the universe and... uh... destroyed it. And they lived happily ever after... or I guess they didn't.
Those were actually the semantics of the above program. Homespring is weird.
Functional(), 139 129 bytes
0,1,=,:(W,& a(>(a(:(Z,&()(W()0)))),W))0 Z Z()1()1 W()W()>()W()>()> >()>()W()1()0()0()Z W 1()1()1()> >()> Z W 1()W()>()Z W()1()0 Z
Piet, 84 codels

28x3, here shown with codel width 10.
Created with PietDev (zip), tested with npiet. The layout of the program is the following:

Yellow fill indicates codels where the path overlaps, orange fill indicates codels which must be the same color, for purposes of control flow.
To aid in the creation of this, I wrote a rudimentary interpreter for a stack-based language with piet-like commands, which I have dubbed "pasm" (source). The output from this interpreter (with this input) is the following:
1 nop blu1 []
4 push 3 blu2 [3]
5 dup grn2 [3, 3]
6 add cyn2 [6]
7 dup ylw2 [6, 6]
8 mul grn1 [36]
9 dup red1 [36, 36]
10 dup blu1 [36, 36, 36]
11 add mgn1 [36, 72]
H 12 putc blu0 [36]
15 push 3 blu1 [36, 3]
16 sub mgn2 [33]
17 dup cyn2 [33, 33]
20 push 3 cyn0 [33, 33, 3]
21 mul blu2 [33, 99]
22 push 1 blu0 [33, 99, 1]
23 add mgn0 [33, 100]
24 dup cyn0 [33, 100, 100]
25 push 1 cyn1 [33, 100, 100, 1]
26 add blu1 [33, 100, 101]
e 27 putc cyn0 [33, 100]
28 dup ylw0 [33, 100, 100]
32 push 4 ylw1 [33, 100, 100, 4]
33 dup mgn1 [33, 100, 100, 4, 4]
34 add red1 [33, 100, 100, 8]
35 add ylw1 [33, 100, 108]
36 dup mgn1 [33, 100, 108, 108]
l 37 putc blu0 [33, 100, 108]
38 dup grn0 [33, 100, 108, 108]
l 39 putc ylw2 [33, 100, 108]
40 dup mgn2 [33, 100, 108, 108]
43 push 3 mgn0 [33, 100, 108, 108, 3]
44 add red0 [33, 100, 108, 111]
45 dup blu0 [33, 100, 108, 111, 111]
o 46 putc cyn2 [33, 100, 108, 111]
47 dup ylw2 [33, 100, 108, 111, 111]
48 dup mgn2 [33, 100, 108, 111, 111, 111]
53 push 5 mgn0 [33, 100, 108, 111, 111, 111, 5]
54 div ylw0 [33, 100, 108, 111, 111, 22]
55 dup mgn0 [33, 100, 108, 111, 111, 22, 22]
56 add red0 [33, 100, 108, 111, 111, 44]
57 dup blu0 [33, 100, 108, 111, 111, 44, 44]
, 58 putc cyn2 [33, 100, 108, 111, 111, 44]
59 dup ylw2 [33, 100, 108, 111, 111, 44, 44]
60 add grn2 [33, 100, 108, 111, 111, 88]
64 push 4 grn0 [33, 100, 108, 111, 111, 88, 4]
65 dup red0 [33, 100, 108, 111, 111, 88, 4, 4]
66 mul ylw2 [33, 100, 108, 111, 111, 88, 16]
67 dup mgn2 [33, 100, 108, 111, 111, 88, 16, 16]
68 add red2 [33, 100, 108, 111, 111, 88, 32]
69 putc mgn1 [33, 100, 108, 111, 111, 88]
70 push 1 mgn2 [33, 100, 108, 111, 111, 88, 1]
71 sub red0 [33, 100, 108, 111, 111, 87]
W 72 putc mgn2 [33, 100, 108, 111, 111]
o 73 putc blu1 [33, 100, 108, 111]
76 push 3 blu2 [33, 100, 108, 111, 3]
77 add mgn2 [33, 100, 108, 114]
r 78 putc blu1 [33, 100, 108]
l 79 putc cyn0 [33, 100]
d 80 putc grn2 [33]
! 81 putc ylw1 []
No pointer, switch, or roll commands are used. No codels are wasted either; in fact two are reused.
ELF (x86/x64, Linux), 86 bytes
00000000: 7f45 4c46 b001 b20e 488d 3539 0000 003d .ELF....H.59...=
00000010: 0200 3e00 89c7 eb18 0100 0000 0500 0000 ..>.............
00000020: 1800 0000 0000 0000 1800 0000 0500 0000 ................
00000030: 0f05 29d0 973d 3800 0100 b03c 0f05 0000 ..)..=8....<....
00000040: 0100 b03c 0f05 0000 4865 6c6c 6f2c 2077 ...<....Hello, w
00000050: 6f72 6c64 210a orld!.
Gaia, 14 bytes
“Hello, World!
Strange that there wasn't a Gaia answer to this challenge yet, given that there's so many answers.
Grocery List, 98 79 bytes
H
w
nnn
d
c
c
z
f
v
d
v
l
v
r
v
o
v
W
n
b
s
v
X
nn
d
v
o
v
l
c
v
e
v
H
l
p
e
t
Save in a file then use this Python interpreter to run the specified program.
x86/x86_64 on Linux, 34 32 31 bytes
00: e8 0d 00 00 00 call <+0x12>
05: 48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 21
"Hello, World!"
12: 59 pop %ecx
13: 6a 01 push $0x1
15: 5b pop %ebx
16: 6a 0d push $0xd
18: 5a pop %edx
19: 6a 04 push $0x4
1b: 58 pop %eax
1c: cd 80 int $0x80
1e: c3 ret
Main differences between this one and grc's version: mine makes no assumption of prior register contents, works in both x86 and x86_64 modes and does a ret in lieu of a sys_exit() syscall.
If you want to Try it online!, compile and run the following C program.
const char main[]="\xe8\r\0\0\0Hello, World!Yj\1[j\rZj\4X\xcd\x80\xc3";
Note that Windows Services for Linux currently doesn't seem to support this type of syscall.
EDIT: Fixed TIO link.
SunSip -w -n, 24 bytes
(just means suppress warnings and no newlines)
set to "Hello, World
out
A big fat 24 bytes.
Syntax highlighted:

Knight, 16 bytes
O"Hello, World!"
Objective-Java*#++--.NETScriptnotation.sh, 22 bytes.
"Hello, World!".pdf.txt
Try it online!
How it works:
"Hello, World!".pdf # Pushes "Hello, World!" to the stack.
.txt # Print the top item on the stack.
This is a stack-based esolang that I created that uses file extensions for commands.
Trianguish, 187 bytes
00000000: 0a04 10c3 0201 40d9 1020 1403 a040 4d0e
00000010: 2060 4d11 040b 003c 050e 204d 0203 c027
00000020: 060c 5107 106c 1040 4d0e 2050 c310 2028
00000030: 03f0 6074 1104 10c3 0502 c04e 0203 c027
00000040: 0611 0710 c510 404d 0e20 50e0 1020 2803
00000050: a060 2f10 7107 7105 0e20 4d04 10c3 0203
00000060: c027 0710 2310 2028 03a0 404d 0e20 50c3
00000070: 1060 5d11 0203 c027 050e 204d 0410 c307
00000080: 1077 1040 4d0e 2020 2803 a050 c310 607a
00000090: 1105 0e20 4d02 03c0 2704 10c3 0710 7410
000000a0: 404d 0e20 2028 03f0 50c3 1060 6b11 0202
000000b0: 9105 0e20 4d07 1024 1050 c2
Trianguish is my newest language, a cellular automaton sort of thing which uses a triangular grid of "ops" (short for "operators"). It features self-modification, a default max int size of 216, and an interpreter which, in my opinion, is the coolest thing I've ever created (taking over forty hours and 2k SLOC so far).
This program consists of a central "spine" of wires and splitters, which transmits a 1-tick pulse of non-NIL data, and a number of "nodes" which print one character of the string as the pulse passes them.
At the start of the "spine" is a 1-tick pulse generator, one of the most basic, and important, applications of Trianguish's self-modification:
In this case, a 0 constant is used, as the actual number sent along doesn't matter, since it's used purely for timing.
Each "node" along the program consists of a T-switch, essentially a transistor, which permits an ASCII character code to flow through it for exactly one tick as the initial 1-tick pulse passes by. These character codes are produced by S-builders, which read the internal representation of an adjacent op, which in this case are tuned to match the correct characters. Only one node is different from the rest, that being the third, which instead of printing a single l splits the signal into two and prints both simultaneously. This also requires an additional delay for the next character.
Stack Cats, 94 + 3 = 97 bytes
(^_^_[>_[_*:>^]<^[>+:^[_!:+_+:>-!^_!]<:_^_I_+>_]<:_I_+:>_I^+>_I_+*-!*>+![+]+_!_-^+_)*_:_-^_!_:
Needs to be run with the -m switch, so +3
I'm sure there're still a lot of bytes which can be golfed, but this is the best I could think of so far.
Due to the reversibility of Stack Cats, I found it easier to think about the code in reverse - instead of thinking about how to turn the empty string into "Hello, World!", we want to think about how to consume the string "Hello, World!" from the stack.
I won't explain in detail what the code does, but it doesn't use any complicated tricks, and you can get a good idea by running it with the -D flag on the string "Hello, World!", or by pasting the code in the parenthesis in this site I made to help me create it, and typing slowrun() in the console. I found the code to create 100 33 8 by going over all programs under length 12, running them on 0 0 -1, and calculating the result's distance to 100 33 8 with BFS, and also used BFS to find what numbers can be converted to others with short code (for example converting 72 to 8 with 101, or converting 87 to -8 using 111).
Flobnar, 34 bytes
Hello, World!
:> v:
g|\@>!,
00> +
(Previous record: 41)
The last character at the end of the first line is the null character \0.
@ Start the program
: :
\ >!,g Initially n (top of stack) = 0.
> + 0 Print the char at (n, 0), push n+1, and evaluate the left of \:
:> v
g|\@ If the char at (n, 0) is zero, evaluate to zero;
00 otherwise go to the start of the program with updated n
Verbosity v2, 87 bytes
For some reasons, at least in the TIO's implementation it doesn't require the import statements...
outpt=OutputSystem:NewOutput<DEFAULT>
OutputSystem:DisplayAsText<outpt;"Hello, World!">
Note: the name outpt is because variables name must be at least 5 characters long.
CATHY, 175 bytes
catHYcAthycAthYcAthYcaTHycathycAthYcAthYcAthycatHycaTHycaThYcaTHycathYcatHycatHYcaTHycaTHYcAthycathYcatHycatHYcatHycatHYcatHYcatHYcatHYCatHycathYcathYcaThYCAthyCATHycATHycAtHy
Try it Online! -90 thanks to Steffan.
CATHY is a joke language based on a certain spam post. In normal form:
389960998265612367812323333;115τCƒ+
It pushes a huge integer, then converts to base 115 and charcodifies.
Perhaps --verbose, 14 bytes
"Hello, World!
Positionally, 394 bytes
/ > \
-
> "!dlrow!" v
v <
v \ \ ^
1
~
^ /
< \
$ > ",olleH " . . . . . . . $ . $ . $ . $ . $ . . v
;<
< > \
\
This is so cursed. I don't really understand how it works, but it does.
Cubestack, 65 bytes
S R2 R R2 f2 r R r R r r R' L2 R B2 R2 u r r r L r R R2 f' R b S'
Cubestack is a (useless) stack-based esolang that only uses moves on a Rubiks Cube. See the repository on GitHub for more information.
A Language Programmed While Listening to Godspeed You! Black Emperor, 93 bytes
charms 72. 101. 108. 108. 111. 44. 32. 119. 111. 114. 108. 100. 33. 10﹔
print﹔
give up﹔
This is an esolang, and the goal of the language was to make it as annoying as possible to program.
Your, 4 bytes
your
This is a weird esolang, basically the number of "your" in your code will yield a different output.
A very long language name that is very weird and yeah, this is your but its this, 80 bytes.
A very long language name that is very weird and yeah, this is your but its this
Pyscript, 22 15 bytes
Cheat answer:
'Hello, World!'
Pyscript will behave pretty much like PHP, it will behave just like an interactive terminal. So you if supply a string to the interpreter, it will output the string itself to the rendered html document.
Appropriate answer (22 bytes like Python 3):
print("Hello, World!")
Test it crafting the following HTML file, serving it and rendering with a web browser:
Cheat answer:
<script defer src="https://pyscript.net/alpha/pyscript.js"></script><py-script>'Hello, World!'</py-script>
Appropriate answer:
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
<py-script>
print("Hello, World!")
</py-script>
Brainfuck, 78 bytes
Open-ended bounty: If anyone can improve this score, I will pass the bounty (+500) on to them.
@KSab has found a 76 72 byte solution!
--<-<<+[+[<+>--->->->-<<<]>]<<--.<++++++.<<-..<<.<+.>>.>>.<<<.+++.>>.>>-.<<<+.
The first 28 bytes --<-<<+[+[<+>--->->->-<<<]>] initialize the tape with the following recurrence relation (mod 256):
\$f_n=171(-f_{n-1}-f_{n-2}-f_{n-3}+1)\$, with \$f_0=57, f_1=123,f_2=167\$
The factor of \$171\$ arises because \$3^{-1}=171 \pmod{256}\$. When the current value is translated one cell back (via <+>---) subtracting \$3\$ each time effectively multiplies the value by \$171\$.
At \$n=220\$ the value to be translated is zero, and the iteration stops. The ten bytes preceding the stop point are the following:
\$[130, 7, 43, 111, 32, 109, 87, 95, 74, 0]\$
This contains all of the components necessary to produce Hello, World!, in hunt-and-peck fashion, with minor adjustments.
I've also found an alternative 78 byte solution:
-[++[<++>->+++>+++<<]---->+]<<<<.<<<<-.<..<<+.<<<<.>>.>>>-.<.+++.>>.>-.<<<<<+.
I consider this one to be better than the first for several reasons: it uses less cells left of home, it modifies less cells in total, and terminates more quickly.
More Detail
Recurrence relations have surprisingly terse representations in Brainfuck. The general layout is the following:
{...s3}<{s2}<{s1}[[<+>->{c1}>{c2}>{c3...}<<<]>{k}]
which represents:
\$f_n=c_1f_{n-1}+c_2f_{n-2}+c_3f_{n-3}+\cdots+k\$
with
\$f_0=s_1, f_1=s_2+c_1f_0+k,f_2=s_3+c_2f_0+c_1f_1+k,\text{etc.}\$
Additionally, the <+> may be changed to multiply the range by a constant without affecting the stop point, and a term may be added before the >{k} to shift the range by a constant, again without affecting the stop point.
Other Examples
Fibonacci Sequence
+[[<+>->+>+<<]>]
N-gonal Numbers
Triangular Numbers
+[[<+>->++>-<<]>+]
Defined as \$f_n=2f_{n-1}-f_{n-2}+1\$, with \$f_0=0,f_1=1\$.
Square Numbers
+[[<+>->++>-<<]>++]
Pentagonal Numbers
+[[<+>->++>-<<]>+++]
etc.
BF Crunch
I've published the code I used to find some of this solutions on github. Requires .NET 4.0 or higher.
Usage: bfcrunch [--options] text [limit]
Arguments
------------------------------------------------------------
text The text to produce.
limit The maximum BF program length to search for. If zero, the length of the
shortest program found so far will be used (-r). Default = 0
Options
------------------------------------------------------------
-i, --max-init=# The maximum length of the initialization segment. If excluded, the
program will run indefinitely.
-I, --min-init=# The minimum length of the initialization segment. Default = 14
-t, --max-tape=# The maximum tape size to consider. Programs that utilize more tape than
this will be ignored. Default = 1250
-T, --min-tape=# The minimum tape size to consider. Programs that utilize less tape than
this will be ignored. Default = 1
-r, --rolling-limit
If set, the limit will be adjusted whenever a shorter program is found.
-?, --help Display this help text.
Output is given in three lines:
- Total length of the program found, and the initialization segment.
- Path taken, starting with the current tape pointer. Each node corresponds to one character of output, represented as (pointer, cost).
- Utilized tape segment.
For example, the final result for bfcrunch "hello world" 70 -r -i23 is:
64: ++++[[<+>->+++++>+<<]>]
49, (45, 5), (44, 3), (45, 6), (45, 1), (45, 4), (42, 4), (43, 5), (45, 3), (45, 4), (46, 2), (44, 4)
32, 116, 100, 104, 108, 132, 0, 0, 132, 0
This corresponds to the full program:
++++[[<+>->+++++>+<<]>]<<<<.<+.>++++..+++.<<<.>+++.>>.+++.>.<<-.
Other Records
Hello, World!
Wrapping, 78 bytes:
Surpassed by @KSab (72)
--<-<<+[+[<+>--->->->-<<<]>]<<--.<++++++.<<-..<<.<+.>>.>>.<<<.+++.>>.>>-.<<<+.
or
-[++[<++>->+++>+++<<]---->+]<<<<.<<<<-.<..<<+.<<<<.>>.>>>-.<.+++.>>.>-.<<<<<+.
Non-wrapping, 80 bytes (previously 92 bytes (mitchs)):
Surpassed by @KSab (76)
-[[<]->+>>>>+>+>+>+>+>+]>>>>+.>>>++.<++..<.<<--.<+.>>>>>>--.<<<.+++.>.>-.<<<<<+.
Hello, world!
Wrapping, 80 bytes:
Surpassed by @KSab (77)
++<-[[<+>->+>--->-<<<]>+++]>+.<<<<<<<++.>>>..>.<<--.<<<--.>>+.>>>.+++.<.<<<-.<+.
Non-wrapping, 81 bytes (previously 92 bytes (hirose)):
+>---->->+++>++>->+[++++++++[>++++++++>>+++++<<<-]<]>>.>++>.>..+>>.+>-->--[>-.<<]
hello, world!
Wrapping, 74 bytes:
Surpassed by @KSab (70)
-<++[[<+>->->+++>+<<<]->]<<.---.<..<<.<<<---.<<<<-.>>-.>>>>>.+++.>>.>-.<<.
Non-wrapping, 84 bytes:
---->+++>++>->->++[+++++++[>+++++[>++>>+<<<-]<-]++<]>>>>.---.>---..+>->.+>-->+>[-.<]
Esolangs Version
Hello World!\n
Wrapping, 76 bytes:
+[++[<+++>->+++<]>+++++++]<<<--.<.<--..<<---.<+++.<+.>>.>+.>.>-.<<<<+.[<]>+.
This uses one cell left of home, and thus would be considered 77.
Non-wrapping, 83 bytes:
->+>>>+>>---[++++++++++[>++++++>+++>+<<<-]-<+]>+>+.>.->--..>->-.>[>.<<]>[+>]<<.>++.
Rdebath approved. profilebf output:
Hello World!
Program size 83
Final tape contents:
: 0 0 73 101 109 115 112 88 33 10 0
^
Tape pointer maximum 10
Hard wrapping would occur for unsigned cells.
Counts: +: 720 -: 79 >: 221 <: 212
Counts: [: 9 ]: 84 .: 13 ,: 0
Total: 1338
inversed.ru (Peter Karpov)
Hello World!
Wrapping, 70 bytes (previously 781):
+[++[<+++>->+++<]>+++++++]<<<--.<.<--..<<---.<+++.<+.>>.>+.>.>-.<<<<+.
Non-wrapping, 77 bytes (previously 89?):
->+>>>+>>-[++++++[>+++++++++>+++++>+<<<-]<+]>>.>--.->++..>>+.>-[>.<<]>[>]<<+.
The author claims that the shortest hand-coded "Hello World!" is 89 bytes, but provides no reference. I hereby claim the record for this, too.
hello world!
Wrapping, 65 bytes (previously 66 bytes):
+++[>--[>]----[----<]>---]>>.---.->..>++>-----.<<<<--.+>>>>>-[.<]
This is actually hand-coded as well (the best I could find by crunching is 68 bytes). The first cell is initialized to 259 (3), and decremented by 7 each iteration, looping 37 times. The next cell is decremented by 6, resulting in 256 − 6·37 = 34. The rest of the cells are decremented by 4 each time, adding one cell each iteration, with each new cell inialized to 252 (-4). The result is the following:
[ 3, 0, 0, 0, 0, 0, 0, ...]
[252, 250, 248, 0, 0, 0, 0, ...]
[245, 244, 244, 248, 0, 0, 0, ...]
[238, 238, 240, 244, 248, 0, 0, ...]
[231, 232, 236, 240, 244, 248, 0, ...]
[224, 226, 232, 236, 240, 244, 248, ...]
...
[ 35, 64, 124, 128, 132, 136, 140, ...]
[ 28, 58, 120, 124, 128, 132, 136, ...]
[ 21, 52, 116, 120, 124, 128, 132, ...]
[ 14, 46, 112, 116, 120, 124, 128, ...]
[ 7, 40, 108, 112, 116, 120, 124, ...]
[ 0, 34, 104, 108, 112, 116, 120, ...]
1 The solution given (79 bytes) can be trivially reduced by one:
-[>>+>+[++>-<<]-<+<+]>---.<<<<++.<<----..+++.>------.<<++.>.+++.------.>>-.<+.
EEL - 86 Bytes
=72 !>=101 !>=108 !>=108 !>=111 !>=44 !>=32 !>=87 !>=111 !>=114 !>=108 !>=100 !>=33 !.
Explanation
EEL (Easy Esoteric Lang) is an esoteric programming language created by me, easy to manage, hence the name. Below is a brief description of the language.
.-EEL is based on a vector of bytes initialized to zero, on which basic arithmetic operations can be performed, whose length is equal to 64Kb.
.-EEL allows the reading and writing of one byte at a time in the form of an ASCII character in the standard input and output respectively.
.-EEL has a brief help section which can be viewed from the interpreter.
.-EEL is extremely sensitive, so a wrong input byte can cause a wrong output.
.-EEL does not have an error/exception handling system, so it may crash unexpectedly if a fatal error such as division by zero occurs.
Defined operations:
=000 -> Copy the value of number 000 to the current byte.
+000 -> Add to the current byte, the value of number 000.
-000 -> Subtract to the current byte, the value of number 000.
*000 -> Multiply to the current byte, the value of number 000.
/000 -> Divide to the current byte, the value of number 000 (cannot be zero).
%000 -> Calculate the modulo of the current byte and the value of number 000 (cannot be zero).
> -> Go to the next byte of the vector.
< -> Go to the previous byte of the vector.
? -> Read a ASCII character from STDIN and assign it to current byte.
! -> Write to current byte in STDOUT as an ASCII character.
: -> Open/close the space for comments.
. -> Exit the program.
$ -> Reference to current byte.
NOTES:
The 000 number can be s current byte reference operator ($).
The 000 number (x) must be an integer number, such 0 < x <= 255.
There must be a space character u+0020 after each number 000.
SMALL, 16 bytes
"Hello, World!"!
! prints the expression before it, giving us the code for this question.
tinylisp 2, 16 bytes
(w"Hello, World!
The write builtin, given a string, outputs its contents to stdout. Its short alias is w.
Just "Hello, World! would work except it outputs "Hello, World!" with quotes.
SPDT, 756 bytes
p 0
r 0 0 1 2
r 1 0 2 3
r 4 0 2 3
r 3 0 2 5
r 5 0 2 6
r 6 0 2 7
r 7 0 2 8
r 8 0 2 9
r 9 0 2 10
r 10 0 2 11
r 11 0 2 12
r 12 0 2 13
r 13 0 2 14
r 14 0 2 15
r 15 0 2 4
r 5 0 2 16
r 8 0 2 16
r 11 0 2 16
r 12 0 2 16
r 4 0 2 16
r 8 0 2 17
r 11 0 2 17
r 12 0 2 17
r 13 0 2 17
r 5 0 2 18
r 6 0 2 18
r 7 0 2 18
r 8 0 2 18
r 9 0 2 18
r 11 0 2 18
r 12 0 2 18
r 14 0 2 18
r 15 0 2 18
r 3 0 2 19
r 6 0 2 19
r 7 0 2 19
r 8 0 2 19
r 9 0 2 19
r 12 0 2 19
r 14 0 2 19
r 11 0 2 20
r 13 0 2 20
r 5 0 2 21
r 6 0 2 21
r 7 0 2 21
r 8 0 2 21
r 9 0 2 21
r 10 0 2 21
r 12 0 2 21
r 13 0 2 21
r 14 0 2 21
r 15 0 2 21
r 4 0 2 21
r 3 0 2 22
r 5 0 2 22
r 6 0 2 22
r 7 0 2 22
r 8 0 2 22
r 11 0 2 22
r 12 0 2 22
r 13 0 2 22
r 14 0 2 22
r 15 0 2 22
l 23
l 22
l 21
l 20
l 19
l 18
l 17
l 16
Try it: https://radvylfprograms.com/spdt
SPDT is an esolang I've been wanting to make for a while now. Aside from I/O, it consists entirely of Single Pole Double Throw, or Form C, relays. This answer, which is possibly imperfectly golfed since I used a custom transpiler with macros to generate it, consists of relays forming a loop counting from 1 to 13, then back 1, infinitely. For each of these states, it uses relays to only light up the bits which are on in that character of Hello, World!, producing the following output:
flax C, 14 bytes
"Hello, World!
The first answer to use flax.
Explanation
The program is a niladic chain, which means it does not take any arguments.
Even though "Hello, World! looks like a string, in flax it is represented as numbers in ASCII. Hence we need the C flag to print as characters instead of numbers.
C# 9+, 38 bytes
System.Console.Write("Hello, World!");
As of C# 9, the compiler directly supports top-level statements in a single file.
This means that the infamous boilerplate of class Program { static void Main(string[] args) {...} } will be inferred at compile-time, and the top-level statements in the file will be directly inserted into the Main method.
As a result of this, C# is now able to achieve a complete Hello World program in just 38 bytes!
Tarfish, 160 bytes
x++++++++++++++++++++++++++++++++:+:+++++++++++:++++++++++++++++++++++++++++:.+++++++++++++++:++++++++++++++:.+++++++:::..+++:.{{{.{.{{.}}.:++++++.:.--------..;
Tarfish is an esolang of mine that is a more tarpit-style version of ><>. This answer doesn't really use that much of its 2D features, but it works.
Note: a single + or - means multiple, I'll specify how many. After each line is a visualisation of the stack as characters.
x # Push a 0 - [0]
+ # Increment to 32 - ' '
:+ # Duplicate and increment - ' !'
:+ # Duplicate and increment to 44 - ' !,'
:+ # Duplicate and increment to 71 - ' !,H'
:. # Duplicate and output - ' !,H'
+: # Increment to 87 and duplicate - ' !,WW'
+:. # Increment to 101, duplicate and output - ' !,We'
+:::.. # Increment to 108, quadruple and output twice - ' !,Wll'
+:. # Increment to 111, duplicate and output - ' !,Wlo'
{{{. # Cycle right three times to the comma and output - 'Wlo !'
{. # Cycle right once to the space and output - '!Wlo'
{{. # Cycle right twice to the W and output - 'lo!'
}}. # Cycle left twice to the o and output - '!l'
:+. # Duplicate, increment to 114 and output - '!l'
:.- # Duplicate, output, and decrement to 100 - '!d'
..; # Output twice and halt
TI-BASIC, 22 bytes
"Hello, World!
Note that the lowercase letters are 2 bytes each.
Exceptionally, 17 bytes
P"Hello, World!"/
Explanation
P "Hello, World!" ' Print that string
/ ' Divide the register (initially 0) by itself to exit the program
Coq, 20 30 bytes
Check"Hello, World!".
But you have to first define what string is using this bit of code:
Require Import Coq.Strings.String.
Declare Scope string_scope.
Delimit Scope string_scope with string.
Bind Scope string_scope with string.
Local Open Scope string_scope.
Register string as core.string.type.
Register EmptyString as core.string.empty.
Register String as core.string.string.
And i think this is probably the shortest answer.
Noxan, 16 bytes
¶"Hello, World!
Noxan, 15 bytes
"Hello, World!"
Noxan, 14 bytes
"Hello, World!
Noxan, 2 bytes
¶g
Noxan, 1 bytes
g
New language!
Bit, 637 bytes
BIT 0
BIT 0
BIT 0
BIT 1
BIT 0
BIT 0
BIT 1
BIT 0
BIT 1
BIT 0
BIT 1
BIT 0
BIT 0
BIT 1
BIT 1
BIT 0
BIT 0
BIT 0
BIT 1
BIT 1
BIT 0
BIT 1
BIT 1
BIT 0
BIT 0
BIT 0
BIT 1
BIT 1
BIT 0
BIT 1
BIT 1
BIT 0
BIT 1
BIT 1
BIT 1
BIT 1
BIT 0
BIT 1
BIT 1
BIT 0
BIT 0
BIT 0
BIT 1
BIT 1
BIT 0
BIT 1
BIT 0
BIT 0
BIT 0
BIT 0
BIT 0
BIT 0
BIT 0
BIT 1
BIT 0
BIT 0
BIT 1
BIT 1
BIT 1
BIT 0
BIT 1
BIT 0
BIT 1
BIT 0
BIT 1
BIT 1
BIT 1
BIT 1
BIT 0
BIT 1
BIT 1
BIT 0
BIT 0
BIT 1
BIT 0
BIT 0
BIT 1
BIT 1
BIT 1
BIT 0
BIT 0
BIT 0
BIT 1
BIT 1
BIT 0
BIT 1
BIT 1
BIT 0
BIT 0
BIT 0
BIT 1
BIT 0
BIT 0
BIT 1
BIT 1
BIT 0
BIT 1
BIT 0
BIT 0
BIT 0
BIT 0
BIT 1
BIT 0
BIT 0
BYTES 8
PRINT
You heard me right, 637 bytes
-8 thx to mathcat
99, 283 bytes
Yes there is a language called 99
999 9 9
99 99999999 999 9
99
99 99999 9 999 9
99
99 99 999 999999
99
99
99 9999999 9999 999 9
99
99 99 9999999 9 999 9 999 9 999 9
99
99 99 999999 9 999999 9
99
9999
99 99999 999 999999 999 9
99
99 9999999 9999 9 999 9
99
99 99 999999 9
99
99 99 999999 999 9
99
99 99999 9999999 9
99
QWERTY, 1 byte
q
QWERTY is a work-in-progress language by me, written in C++. The letters in the word QWERTY will be used in the most trivial programs, however, it will be Turing-complete and hopefully not a tarpit.
Eh, but that's cheap.
QWERTY(non-cheap, charmode), 37 bytes
'Ho'eo'loo'oo',o' o'Wo'oo'ro'lo'do'!o
Yep, it's that bad.
QWERTY(stringmode), 28 bytes
"!dlroW ,oleH"(ddodddddddddd
About 2/3 as good :(
QWERTY(optimized stringmode), 16 bytes
"!dlroW ,olleH"s
Now it looks like every other golfing language.
If you wish to see this example, for some reason, take this link: QWERTY
dotcomma, 494 bytes
[[[[[[[[[[[[[[[[[[[.][.].,][,.].,][,.].,][,.].,][,.].,][.].,][.][.][.][.][.][.][.][.][.][.][.].,][.][.][.][.][.][.][.][.][.][.][.][.][.][.][.][.][.][.][.][.][.][.][.][.][.][.][.][.].,][.][.][.][.][.][.][.][.][.][.][.][.][.][.][.].,][.][.][.][.][.][.][.][.][.][.][.][.][.].,][.].,][.][.][.][.][.][.][.].,],],][.][.][.].,],][.][.][.].,][,][[,.][[[,][,][,][[,.][[[,][[,.][[[,][,][,][,][[,.][[[,][,][,][,][,][,][,][[,.][[[,][,][,][,][[,.][[[,][,][,][,][[,.][[[,]]].,]]].,]]].,]]].,]]].,]]].,]]].,]]
Dotcomma is a language I made, designed to do as much as possible with the fewest instructions. Interestingly, it uses a queue rather than a stack. The final state of the queue is used as output.
I've put a high level explanation below, but even I don't fully understand how I got this to work :p
The easy part was generating all the necessary letters, ordered by code point ( !,HWdellloor):
First, it generates the code point for a space (32):
[[[[[[.][.].,][,.].,][,.].,][,.].,][,.].,]. Then, it wraps that in a number of[<n> [.]* .,]blocks, which increment the value and adds it to the queue, with the number of[.]s being the amount it increments
Then it needs to sort the queue so that it displays in the correct order (Hello, World!):
Without an accumulator or second queue, this is difficult. The workaround is to use the execution order to read a value, perform an operation that modifies the queue, then add the result (
0) to the previously read value. This re-adds the value into the queue, at the end. If the operation performed is a shift, the stored value can be placed anywhere into the queue. Working backwards from!to, it will shift the queue with a number of[,]s. The temporary addition-based storage is implemented as[[,.] [[ <previous letter> ]] .,]. Importantly, this is nested in a way that each time it does this is returns0so it won't mess up the rest. Luckily, after the,is shifted,Hellois already in order.
Plumber, 1606 445 bytes
[]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
[[]=]=]=]=]=]=]
]
[[]=]=]=]=]=]=]=]=]=]=]=]=]
]
]
]
]
]
]
]
]
]
]
]
[[]=]=]=]=]=]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
[[]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
[[]=]=]=]=]=]=]=]
]
]
]
]
]
]
]
]
]
]
]
]
]
[[]=]=]=]=]=]=]=]=]=]=]=]
]
[[]=]
]
]
]
]
]
]
]
]
[[]=]=[[[[]=]=]=]=]=]=[]
]
]
]
[[]=]=]=]=[[]=]=]=[]
]
]
]
][]=]=]=]=]=]=]=]=]=[]
]]]]]]]]]]]]]]]]]]]]]]]]]]]]
][[=
With some modifications of an idea by @dzaima, I've golfed 1161 bytes off of this. This one uses a single falling packet, incrementing each time it falls, and forks it off each time it reaches the right value to be outputted.
Old version
[]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
[[[[[[[[[[[[[[[[[[[[[[[[[[
] ] ] ] ] ] ]
] ] ] ] ] ] ]
] ] ] ] ] ] ]
] ] ] ] ] ] ]
] ] ] ] ] ] ]
] ] ] ] ] ] ]
] ] ] ] ] ] ]
] ] ] ] ] ] ]
] ] ] ] ] ] ]
] ] ] ] ] ] ]
] ] ] ] ] ] ]
] ] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
] ] ] ] ]
[[[[[[[[[]]
] ] ] ] [ ]
] ] ] [ ]
] ] ] [ ]
] ] ] [ ]
] ] ] [ ]
] ] ] [ ]
] ] ] [ ]
] ] ] [ ]
[[[[[[
] [ ] ]
] [ ] ]
] [ ] ]
[ ]
[ ]
[ ]
[
[
]
]
]
]]]]]]]]]]]]]]]]]]]]]]]]]]
][[=
It's a little long. I could probably steal some tricks from a BF solution, maybe.
In Plumber, the program is divided into units, each of which are 2 characters wide. Each line is padded to the length of the longest line with spaces, which can be used to shorten programs. Each ] unit is an increment operator on a falling packet of information, which is dropped by the [] at the top. Chains of [[ can be used to duplicate packets and drop them one by one in different columns.
Halfwit -A, 15 bytes
>JM?M;J*?f?*M[?JN;k+Jkk;$<5b
Halfwit is an experimental golfing language that fits most commands in half a byte. It only uses lists and integers, so the -A flag allows it to output characters.
This approach is pretty simple. The bit between > and < is the compressed integer 1408073740711211456312062497. 5 is the constant 128, which actually takes up 1.5 bytes because reasons, then b decompresses the integer into base 128.
The naïve approach of using a character list comes out at 19.5 bytes:
>*{>N;>N:>N:>Nk>;{>{+>J;>Nk>f{>N:>N{>{*
Each segment between > is a base-14 compressed integer.
Python, 22 Bytes
In Python, this is pretty straight-forward:
print("Hello, World!")
This is equivalent to
import sys
sys.stdout.write("Hello, World!")
which is 44 bytes.
If you are in the interpreter, "Hello World" would return itself, but I doubt it goes to sys.stdout.
Risky, 64 bytes
\22+\222]+]2:+1+:++!:++2:+*+1+0+[-*-*+02]+]2{*+++**+}+0!:+*+1+0+:+*+1+!!:+++0+0+:+0+0+0!{*++1+0+]+]+]+]+]+]+]+]+]+]+]+]+]+]+]+]
This is a new language made by @Radvylf. My explanation wouldn't do it justice so heres the Docs.
Explanation:
Takes the various codepoints for various characters and links them together.
Redwolf also created a version of it which is a simpler "tree" layout, which also comes in at 64 bytes:
**}+1+1!0+:+0+1+0+:+0++!0+:+0+++0+:+!++!{**+0+{+!**+0+2!+**+0+}+0+:+!++!:+*+0+{+0+:+0++!0+0+0+:+!**+0+!20+0+0+]+0+0+0+]+0+0+0+]
10IPL, 67 bytes
00010000 00100000 00100000 00100000 00010000 00100000 00100000 00100000 00110000 00010010 00100010 00100010 00010010 00100010 00010010 00100010 00100010 01000001 00010000 00110000 00010100 00100100 00100100 00100100 00010100 01000010 00110000 00110000 00010000 00010000 00010000 00110000 00110010 00010110 00100110 00100110 00100110 00100110 01100011 00100110 00110110 00010100 00010100 00010100 00100100 01010000 00110100 00110000 00010000 00010000 00010000 00110000 00010100 00010100 00010100 00010100 00010100 01010100 00110100 00011010 00101010 00101010 00101010 01010101 00110100 00010110 00110110
Program:
inr r0
rtr r0
rtr r0
rtr r0
inr r0
rtr r0
rtr r0
rtr r0
prt r0
inr r1
rtr r1
rtr r1
inr r1
rtr r1
inr r1
rtr r1
rtr r1
xor r0, r1
inr r0
prt r0
inr r2
rtr r2
rtr r2
rtr r2
inr r2
xor r0, r2
prt r0
prt r0
inr r0
inr r0
inr r0
prt r0
prt r1
inr r3
rtr r3
rtr r3
rtr r3
rtr r3
xor r4, r3
rtr r3
prt r3
inr r2
inr r2
inr r2
rtr r2
xor r2, r0
prt r2
prt r0
inr r0
inr r0
inr r0
prt r0
inr r2
inr r2
inr r2
inr r2
inr r2
xor r2, r4
prt r2
inr r5
rtr r5
rtr r5
rtr r5
xor r2, r5
prt r2
inr r3
prt r3
What is 10IPL?
10IPL, short for 10 Instruction Programming Language, is a simple compiled language I made for use in a computer I'm building in Minecraft. I made an online interpreter for it (with a few extra features), since I think it's a neat language.
How does this work?
This program doesn't have anything fancy, it just uses three of 10IPL's instructions (Increment, Rotate, and XOR) to put numbers in registers, then prints them.
10IPL has four general purpose registers, r0 to r3. It also has r4 (or rp0) and r5 (or rp1), which are intended to hold pointers. I use these as normal registers to save having to waste bytes clearing the ones I've already used, since this program never needs to access memory.
Jealous, 14 bytes
ᐗHello, World!
tinylisp, 40 bytes
(load library
(join(q(Hello, World!))spc
tinylisp, 56 bytes
(string(q(72 101 108 108 111 44 32 87 111 114 108 100 33
Considering tinylisp's lack of strings, this is very likely the best hello world without libraries.
Byte-based Instruction Jumping, 48 bytes
↑H↑e↑l↑l↑o↑ ↑W↑o↑r↑l↑d↑!
Lexurgy, 23 bytes
For a tool meant for handling strings, it's surprisingly lengthy to output any string longer than 1 or 2 characters without any input.
a:
*=>Hello\,\ World\!
Lost, 57 54 45 43 38 37 36 bytes
It's been a long journey here, but we've reached 36 bytes. A 35 seems unlikely.
roW"\\ dl
<@+1(\
lo, /"Hel
%<<<\?<<<
Lost is a 2 dimensional language in which the start location and direction are entirely random. As you might imagine it is rather difficult to write deterministic programs in lost. However the language has a couple of design features that allow for deterministic programs to be written.
This draws on JoKing's 38 byte solution but is significantly more bizarre.
Explanation
This is a bit to messy to explain in a satisfactory way.
As is common with lost there's quite a few different execution paths and the art is tweaking it so every path works out just right.
Going over the program in general would skip a lot of things, but covering every execution path would be long and still seem unsatisfactory.
The best way to understand what is going on is to just try and make your own first. But I will explain how this works in general.
Basic design philosophy
Unlike most 2d programming languages where a flat program is ideal because it avoids extra newlines. In lost squarish programs are ideal. This is because most lost programs employ a collection stream to catch all the wandering ips before they start actually executing.
The flatter it is the longer the stream has to be so that it can occupy every column. This means that a square program minimizes the stream size.
However squares are kind of hard to program with in lost. And there are some losses when trying to split linear logic onto several lines. Earlier versions of this were flatter for this reason. But this has managed to get pretty square.
The stream
The bottom row is a collection stream. Pretty common for lost programs. Regardless of where it initially starts the ip will eventually wander into the stream and start normal execution.
This is mostly just <. These act as hard redirects and are what trap the ip. There are three special things here %, \ and ?. The \ is the exit. It will deflect the pointer up and start our regular execution. But since our normal execution expects a clean stack, we first need to clean up.
? pops a value off the top of the stack and jumps if it's not zero. Since we can't push a zero this will jump until the stack is empty. Since it's placed in front of the exit this means we are stuck in the stream until the stack is cleaned.
One issue is that ? is not a hard redirect so if the ip starts in its column it needs to end up in the stream some other way. This was actually a significant hurdle in making the program work, but there are redirects in \ and / which just barely work out so it always ends up in the stream.
Then we also have %. This turns the safety off so we can exit the program. Since we need to do that eventually it's placed here. Once again, it's not a redirect so it needs to be in a column with another redirect. There is a < two rows above and that will eventually push the ip into the stream so that is covered.
Hello, /
Once we exit the stream we enter the first row. The first row wants to push the string Hello, . But we also want to save on quotation marks. In lost we can potentially start and end a string with the same quotation mark, it just needs to start the string and then wrap around again to get back to it. This will push everything on the line apart from the quote as a string. This includes of course our entrance and exit, here a single /. So we are going to end up with a slightly wrong string of Hello, /. But as we deflect up we hit the ( which ditches the final character. This ( is doing double duty and we will reuse it again in a bit.
World \
Once again we use a similar trick to push the second string we want, except this one is even wonkier. We have three extra characters and are missing the ! still.
Since ! is such a painful character to deal with we want to avoid it altogether. It's an unconditional jump so it really messes with whatever we want to do. Instead we push a space which is one less than a ! so we can increment it later.
That means that we spend 3 bytes to make !. That's how awful it is to have a ! in your lost program.
As to why we have \\ it's a little more esoteric. Obviously we need a entrance and an exit on the line, but last time they were the same character, why do we have them separate this time?
The thing is that if both lines have the same character to enter and exit then they would have to be in the same column. Which would mean that we would have to end up right back in the stream where we started dooming us to an infinite loop. So one of them has to have them separate so that we can finish in a different column than we started. Here we are finishing in the ?'s column. ? is not a hard redirect so we can escape the stream. Plus ? also gets rid of a character for us, just what we wanted to do! But wait ? also skips over the " which would have been a big issue otherwise.1
The ? is doing a lot of work for this program.
Clean up
After the ? removes the first extra character, we land on the mirror \ which deflects us to the left. And at this point we run right back into the ( from earlier. This gets rid of our second extra character. Now all that's left is to turn the space into a ! and exit and that's what we do. We push 1, add it to the space and exit at @.
1: You might ask why we can't just move the " somewhere else. The issue is that it can only be in one of two places on the left of the / or on the right. But it also can't be in the same column as the other " otherwise they form a closed string and we get a nasty infinite loop. So we end up having to put the " right there.
Seed, 4154 4135 4117 4078 bytes
Explanation, quite long, along with the description of the generation algorithm on my home page (as per request in comments): link
Possibly smallest one can create in finite amount of time.
Feersum's generator has been outscored by 125 digits.
18 1999111369209307333809858526699771101145468560828234645250681099656696029279480812880779443148152835266354745917034724622145903651417563371730237765283326056988244774110441802133624468817714160177386022056512108401823787027806425684398448067970193332644167536135089961308323052217690818659345826221618714547471817786824952177760705661213021136861627615564344797191592895410701640622192392412826316893318666484043376230339929937013414786228802341109250367744273459627437423609306999946689714086908789713031946200584966850579209651689981508129953665360591585003323062426849065928803791631705897655870676902001410564547259097078231664817435753967511921076054045034302323796976905054512737624542497156263914722954936458789312271946701667519720841308380062811251340113402138536813062807047486584549696366881131076129644333426157514410757991556230404583924322168740934746079177400690540383270574734570453863131129670312070568678426587468145691141064452504683450565188718043501125177371576228281599163415914580472091806809959254536307112226422637068036069837636348250796013947548859219492684001888592443619271863264913733271796439829896342322684180478385639971904415730730155249230972472713598001454701479081682503703435292522488015910406951417625194589254609756805750713606175216991897729604817653297756338264018378339186646236428245791304007449872675676823828828025054891324604572924113135541994460293993994930010757779465315482913805320566037487246911578188713647298779820394853314711728701462997760060773720597833413054385989484972761510228922232188763499675904892361201334056531237561182096332707820332381472154893517831468669407424867949853884550905603295504680929068346527584718316837786318710085149722173684889784734888358566137013072868037395888296895408992035862679921478330680631465096402120764369879221964359613565641652779510635224788673321444028128955312660697375763703507924497355056468329176678508797277505818080245055083627993568557883893217501909841992899324584338401263402065617507377073719573642373296064002058833488593469308722954567388945161866200094063588423591356962865924188962743278147095803148276100759174767606637848987740320689762075562393521992008413240632519860537097220403160035470139899869535541445941688033346042941342229305392639867768112643798588915164061012851035069872578424685533430920913310727097269791325370108354115267003538502506307401037702631576755065238836157990287620373910423088628131973441805618500402407032751005850768445522318425479521483938945040598642922742796671148454685792926662105094734939468210307429214048710552195412807154088634170043145174020299723624868716804740205833308025010299791473201989330179511900752421521748244324520372384555472905196933204791343923384985673930225356512632819977168423365518584516873151142795940198973519372718229122661025988052451376835210066645728260048500257088773609522352231828810506243886764860621803233068079848240668323783996022507908005888468315483796728648978952610219628600082949325089555677853995177602958596492703349550377871982505777660804519503438416790609328789548538308170189581940118961959513239411467871900221985235702327603132341245854941342838886675363828149587290416073764877392438738417021129652498464495269870868163299830870636019233313974206364225614175115905798645888824666280593535350493547833757379214088677125769505793280646751090271497879000895725329057103702349349795211071357094147037863458426851391499872003703049553149335378055054176480977774050198041879243243264959205957441742983643583697591926138999543475339555662645088503078864968452030049140027407987267835123806661736568594687416676322591834962173789578844522343172160526435025531896189408441645468352864002987706103448393710107805248652709736711528349633758515438315407447026188178510124322920110858766628704828773265703683997486487094455425009292414948853993709223752434073750917088611480305840639869649933404702780843770306859066070919534638022435125602050780767420448917941603557783974740312706609928585387278690009349321957381507513875981113699582062422293555869483805964659436085153933836036107786
Original, 4154 byte version
Added per request of @JoKing, because the 1st program doesn't quite run on TIO, albeit being valid.
20 77698190481213510983405846204529755428212736563278528088055816123655499433757607718113585773285686740433752335768949721107461077652705328567448384490378909463204984642622585570301449419608763821501335954761638946551568252142160714228369356054944595121742743720935369219143086698092657062614382519069928478344861416117079283276656675368390764675728501797178208908097054412833019383889935034413095990596139618411133857423995278221670378808372393943846302426674985203826030563290800228881174929701934609803807325868775242909948272754141956168876233403760199007405891058308908050926690654387065882097924294620229833663324754801060691573338185912369627367088050915813931912943122729210762147280440619571047157836177316082899933374851699282897590433145623725705072835054748369992455883804733164985993447304652512229557984322495162682327137071900307763332392727562988633724175094951314863886096190608268953115914497741446723188169519334729165647294618083444761551231012944903572063441813639201051793052623561949314826491616145873848990439549320951496534538450810083853945092224500179417650727351532486362656533602860500906935826231374501097567347929533018944533000919137863885267937690665655625569011036163950983389810112758403211861147501289650757555111271813737813381172074709337306647481507917983021055643749698971365256395367215437223669891280521155247529741719633106765965869860677198632388808752014013939448563313855130972968670015202479226496876067874099463222366536167126653600056389712632892652810365218798697007191747287017174284819764736012653205048166550645507761123345279502597627995423826537299795220169894222867163817508592362092945387317777666016102146798532337718546431888424995701016828542559577710937459975677354300708252448630110787487122698124054544454425586794841157136743408274159313823745226919626156949004386804874236325506583268311452185182143521552429596087556634158778951670223004413763782647825362665491934988477225698133609360969370513836064317152213804169538880632390908441210809806024082600637872813704781431414342781727628446451808751293046212690472851527294326981763969926510021099532791692362104324026231160941956411410511639925420026544463125250979130259151326444714248961523031316570018708849878676230362246913063109584502143502908906243190007062857721367402065760878808920961082444422470813023453274563914735545463757909757689866565064353853099958949763412521666109346825939993377745919874506439752272141853783745051726268592621080457687000431023453539135927140364910898906534604541224314820195082362228787083990333757268808864746297304451768935814651205074884015268982492445996542040655715230139673520569765431617018824427859214902954216246257690105154030408059145566852643855789351907818461502260430297487602982850090037405732117988720732457199005151517240766953718440639691354185802798689950155164379549518496065038927905828230066053603755553745353618846804435103593395141938947781375633374976924393453162350331593801284839409264892975739791751842620029351535320807733966984270102067017902086335370470815153908942490581427972998999752666174807935897314584088695849094389002316139005810918748032068307783088481430339303809949409414892479892121893571274086727250767713365523021125610242269894861374297866741571608166536165735922984579027986499758294460652554897534526492251140681138244025665400003029337114012766773010641359450599171473565675885966777145500248501370644599274741842644014722083732709145488157998306684831419559774212264003518406013032514468522158218837161285401631773099549510145156007147884565387852623860047153609138110997222297132678660783411624002400927435687937355446057878202312894093195453248164648271580944753933355967626542678764854079218206499479071658357103085513937246462858404881973219571392564909528645166637501279457604649906515968389831094896970731573714836150178126997674563415266672131632765794599548356902607125568792417432226125654028873443580337866760487651905138461301986816386866811155111486155341154153322710638921116465132825486519667178335471102213200521032618562169530188826434060179505699797068436325168526618824444305122475837890944742004331675952611756641739756206337285946
Uselesslang, 1156 bytes
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!
I will golf more later.
(There is trailing space)
Python is Magic, 2163 bytes
__builtins__.__getattribute__(__doc__.__repr__.__name__.__getitem__(__doc__.__class__.__class__.__name__.__len__()).__add__(__doc__.__str__.__name__.__getitem__(__doc__.__class__.__class__.__name__.__len__()).__add__(__name__.__len__().__class__.__name__)))(__builtins__.__getattribute__(__annotations__.__class__.__name__.__getitem__(__annotations__.__str__().__len__()).__add__(__doc__.__hash__.__name__.__getitem__(__annotations__.__str__().__len__()).__add__(__name__.__class__.__name__.__getitem__(__annotations__.__str__().__len__()))))(__name__.__len__().__mul__(__name__.__len__().__invert__().__neg__())).__add__(__doc__.__repr__.__name__.__getitem__(__name__.__class__.__name__.__len__()).__add__(__name__.__mul__.__name__.__getitem__(__doc__.__class__.__class__.__name__.__len__()).__mul__(__annotations__.__str__().__len__()).__add__(__doc__.__bool__.__name__.__getitem__(__name__.__class__.__name__.__len__()).__add__(__builtins__.__getattribute__(__doc__.__dir__().__class__.__name__)(__name__).__str__().__getitem__(__doc__.__class__.__class__.__name__.__len__()).__add__(__name__.__eq__.__doc__.__getitem__(__name__.__eq__.__name__.__len__()).__add__(__builtins__.__dir__().__getitem__(__name__.__class__.__name__.__len__().__mul__(__doc__.__class__.__class__.__name__.__len__().__mul__(__name__.__sizeof__.__name__.__len__()))).__getitem__(__doc__.__class__.__class__.__name__.__len__()).__add__(__doc__.__bool__.__name__.__getitem__(__name__.__class__.__name__.__len__()).__add__(__doc__.__str__.__name__.__getitem__(__doc__.__class__.__class__.__name__.__len__()).__add__(__name__.__mul__.__name__.__getitem__(__doc__.__class__.__class__.__name__.__len__()).__add__(__name__.__mod__.__name__.__getitem__(__doc__.__class__.__class__.__name__.__len__()).__add__(__builtins__.__getattribute__(__annotations__.__class__.__name__.__getitem__(__annotations__.__str__().__len__()).__add__(__doc__.__hash__.__name__.__getitem__(__annotations__.__str__().__len__()).__add__(__name__.__class__.__name__.__getitem__(__annotations__.__str__().__len__()))))(__name__.__class__.__name__.__len__().__mul__(__name__.__getitem__.__name__.__len__()))))))))))))))
To check if the code is valid then
import re, sys
allowed = r"A-Za-z().,_"
regex = r"(?:__)?([{}]+)(?:__)?".format(allowed)
banned = r"[^{}]".format(allowed)
script = input()
if re.findall(banned, script):
raise SyntaxError("Only letters, parenthesis, dot and underscore are allowed.")
print("Valid!")
CASL II, 55 43 bytes.
CASL II is an assembly language for COMET II, the fictional architecture. It is designed for Japan Information-Technology Engineers Examination.
Here is the page that you can obtain official specification, as Information Technology Terms and Specifications of Programming Languages Used in Examination Questions.
I've found a way to specify a literal instead of an address:
A START
OUT ='Hello, World!',=13
RET
END
Previous version
55 bytes
Z START
OUT A,B
RET
A DC 'Hello, World!'
B DC 13
END
Links (they are in Japanese)
Woodchuck, 1161 bytes
Woodchuck is a derivative of BF which uses binary trees. Here is the hello world program.
>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[^^<>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[^^<>>[>]>^<^[^]^>>[>]>^<^[^]^<>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^<>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^<>>[>]>^<^[^]^^^^^>>[>]%<%^[^]^>>]^^<>>[>]>^<^[^]^<>>[>]>^<^[^]^<>>[>]%<%^[^]^<<>>[>]>^<^[^]^>>[^^^>>]^^^>>[>]%<%^[^]^>>]^^<<>>[>>>[>]>^<^[^]^].^[^]^<>>[>]%<%^[^]^>>[>]%<%^[^]^>>[>]%<%^[^]^>>[>>>[>]>^<^[^]^].^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>>>[>]>^<^[^]^].^[^]^>>[>>>[>]>^<^[^]^].^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>>>[>]>^<^[^]^].^[^]^<<>>[>>>[>]>^<^[^]^].^[^]^^>>[>]%<%^[^]^>>[>>>[>]>^<^[^]^].^[^]^^>>[>>>[>]>^<^[^]^].^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>>>[>]>^<^[^]^].^[^]^>>[>]%<%^[^]^>>[>]%<%^[^]^>>[>]%<%^[^]^>>[>]%<%^[^]^>>[>]%<%^[^]^>>[>]%<%^[^]^>>[>>>[>]>^<^[^]^].^[^]^>>[>]%<%^[^]^>>[>]%<%^[^]^>>[>]%<%^[^]^>>[>]%<%^[^]^>>[>]%<%^[^]^>>[>]%<%^[^]^>>[>]%<%^[^]^>>[>]%<%^[^]^>>[>>>[>]>^<^[^]^].^[^]^<<>>[>]>^<^[^]^>>[>>>[>]>^<^[^]^].^[^]^<>>[>]>^<^[^]^>>[>]>^<^[^]^>>[>>>[>]>^<^[^]^].^[^]^
Umm... That's quite complex. However, woodchuck is Turing complete, so...
NLRNIS, 15 bytes
>#Hello, World!
My first TC (?) Programming language.
the interpreter is here
Explanation:
>#Hello, World!"H
>
#
Hello, World! Define # = "Hello, World!"
(implicit output the variable # only)
Haifuckqueue, 59 39 bytes
good job to @emanresu A for being epic gamer (shaved off a stanza)
you can only make improvements of 20 bytes at a time because of the haiku 5 7 5 rules lol
{H}$1
{lo, W}
p{l}p
{e}$7
{orld!}
$5ooo
Explanation:
{H}$1 -- overwrite top item on stack with "H" and pop that one item and print it
{lo, W} -- overwrite top 5 with "lo, W"
p{l}p -- push 0 to the top of the stack and overwrite it with "l" and push another 0
{e}$7 -- Overwrite the pushed zero with an "e" and print top 7 ("ello, W")
{orld!} -- Push "orld!"
$5ooo -- pop and print top 5 and pad with `o` command (xor top 2 items and put result in 3) for haiku 5 7 5 rules
JavaScript, 101 85 80 bytes
Thanks to @Redwolf Programs for removing 21 bytes
console.log(String.fromCharCode(72,101,108,108,111,44,32,87,111,114,108,100,33))
Tictac, 2 bytes
𝕜h
Hmm yes just another one of those konstant style answers.
14 bytes
«Hello, World!
Lol
Sysfk (darwin64 syscalls), 1192 bytes
>>>>>>>>,[-<<<<<<<<|>>>>>>>>>>>>>>>>>>>>>>>>+^>>>>>>>>]>[-<<<<<<<<<|>>>>>>>>>>>>>>>>>>>>>>>>>+^>>>>>>>>>]>[-<<<<<<<<<<|>>>>>>>>>>>>>>>>>>>>>>>>>>+^>>>>>>>>>>]>[-<<<<<<<<<<<|>>>>>>>>>>>>>>>>>>>>>>>>>>>+^>>>>>>>>>>>]>[-<<<<<<<<<<<<|>>>>>>>>>>>>>>>>>>>>>>>>>>>>+^>>>>>>>>>>>>]>[-<<<<<<<<<<<<<|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+^>>>>>>>>>>>>>]>[-<<<<<<<<<<<<<<|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+^>>>>>>>>>>>>>>]>[-<<<<<<<<<<<<<<<|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+^>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<|++++>>>++>>>>>>>>>>>>>+>>>>>>>>>>>>>>>>+>>>>>>>>^>>>>>>>>>+++++++++[<++++++++>-].<<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>>+++++++[<++++>-]<+.<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>+++++++.<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^.|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>+++.<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>>+++++++++++[<------>-]<-.<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>>++++[<--->-].<<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>>+++++++++++[<+++++>-].<<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>>++++++[<++++>-].<<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>+++.<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>------.<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>--------.<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>>+++++++++++[<------>-]<-.
Don't try it online because it's not there (yet?)
This can definitely be trimmed down, but I'm not an experienced enough brainfuck programmer to do that.
Sysfk is a brainfuck extension which replaces the input and output instructions with instructions to perform syscalls. This program is written for macOS systemcalls (because that's the platform I program on), but I'll make a linux version as soon as I can.
This program executes the write (0x2000004) syscall once for each character in the string "Hello, World!".
>>>>>>>>, Load the pointer to the target memory buffer
[-<<<<<<<<|>>>>>>>>>>>>>>>>>>>>>>>>+^>>>>>>>>] Copy the first byte of the pointer to rsi
>[-<<<<<<<<<|>>>>>>>>>>>>>>>>>>>>>>>>>+^>>>>>>>>>] Copy the second byte of the pointer to rsi
>[-<<<<<<<<<<|>>>>>>>>>>>>>>>>>>>>>>>>>>+^>>>>>>>>>>] Copy the third byte of the pointer to rsi
>[-<<<<<<<<<<<|>>>>>>>>>>>>>>>>>>>>>>>>>>>+^>>>>>>>>>>>] Copy the fourth byte of the pointer to rsi
>[-<<<<<<<<<<<<|>>>>>>>>>>>>>>>>>>>>>>>>>>>>+^>>>>>>>>>>>>] Copy the fifth byte of the pointer to rsi
>[-<<<<<<<<<<<<<|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+^>>>>>>>>>>>>>] Copy the sixth byte of the pointer to rsi
>[-<<<<<<<<<<<<<<|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+^>>>>>>>>>>>>>>] Copy the seventh byte of the pointer to rsi
>[-<<<<<<<<<<<<<<<|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+^>>>>>>>>>>>>>>>] Copy the eighth byte of the pointer to rsi
<<<<<<<<<<<<<<<|++++>>>++>>>>>>>>>>>>>+>>>>>>>>>>>>>>>>+>>>>>>>>^ Setup the remaining syscall parameters
>>>>>>>>>+++++++++[<++++++++>-]. Print 'H'
<<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^ Reset syscall parameters
>>>>>>>>>+++++++[<++++>-]<+. Print 'e'
<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>+++++++. (Reset and) Print 'l'
<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^. (Reset and) Print 'l'
|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>+++. (Reset and) Print 'o'
<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>>+++++++++++[<------>-]<-. (Reset and) Print a comma
<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>>++++[<--->-]. (Reset and) print ' '
<<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>>+++++++++++[<+++++>-]. (Reset and) print 'W'
<<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>>++++++[<++++>-]. (Reset and) print 'o'
<<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>+++. (Reset and) print 'r'
<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>------. (Reset and) print 'l'
<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>--------. (Reset and) print 'd'
<<<<<<<<|+++>>>++>>>>>>>>>>>>>+^>>>>>>>>>+++++++++++[<------>-]<-. (Reset and) print '!'
FIM++, 87 bytes
I golfed off one byte: the original was by @martinender. I golfed off a space between a token said and a symbol ".
Dear Princess Celestia:A.Today I learned:I said"Hello, World!".Your faithful student,B.
KonamiCode, 12 bytes
^^vv<><>BALS
If this seems cheaty to you, here's another one that actually does the work (168 bytes):
v(^^^^^^^>^^)<<v(^>>^)<<v(^>>^^^^^^^^)<<v(^>>^^^^^^^^)<<v(^>^>^)<<v(^^^^>^^^^)<<v(^^^>^^)<<v(^>^>^^^^^^^^^)<<v(^>^>^)<<v(^>^>^^^^)<<v(^>>^^^^^^^^)<<v(^>>)<<v(^^^>^^^)<<
And here's an annotated version: https://esolangs.org/wiki/KonamiCode/Hello_World
RickRoll-Lang, 70 59 bytes
no interpreter on tio so i cloned the repo on replit lol
takemetourheart
ijustwannatelluhowimfeeling "Hello, World!"
Explanation:
RickRoll-Lang keywords do not need spaces between them
takemetourheart -- "main()" function declaration
ijustwannatelluhowimfeeling "Hello, World!" -- print the string "Hello, World!"
-- implicit "say goodbye" (end block) at the end
PICO-8, 32 bytes
?"h\69\76\76\79, w\79\82\76\68!"
PICO-8 reads code in lowercase, but prints in uppercase. Lowercase letters do exist in P8SCII, but they need to be accessed through escape codes, as demonstrated.
Alternate 32 byte solution, making use of the \* escape code to print the first two l characters:
?"h\69\*2\76\79, w\79\82\76\68!"
ErrLess, 17 bytes
SHello, World!S?.
Prints Hello, World! to stdout, without a trailing newline.
ErrLess is a stack-based language I made for fun over the last few months. You can read the docs here, and I also started a tutorial.
Aussie++, 34 bytes
G'DAY MATE!
GIMME "Hello, World!";
Tested in commit 0a5de7e. You're supposed to end the program with CHEERS C***!, but as of that commit it isn't strictly necessary. The opening G'DAY MATE!, with trailing whitespace, is; anything before that statement is not executed.
Hello Hell, 0 bytes
Since the tape is initialized to "Hello, World!", and the contents of the tape are printed automatically at the end of execution, the blank program is a Hello World program.
Logomocja, 20 bytes
pisz [Hello, World!]
Logomocja is the Polish dialect of Logo, pic related shows the effect of executing the command in its environment
// TODO: fix, 51 bytes
//TODO:idea:"Hello, World!"TODO:this code is cursed
// TODO: fix is a joke language with commands that look like "TODO" comments in source code, created by RocketRace for JT's langjam.
// TODO: idea: "string"pushes a string literal// TODO: this code is cursedoutputs that string
The language isn't really designed for golfing, but a bit of fiddling with the syntax got this down to 51 bytes. Here is a more "idiomatic" example taken from the language's README:
use std::io::{stdout, Write};
// TODO: someone on the internet told me "Hello, world!" is a good idea
fn hello() {
let chars = &[
'\n', '!', 'd', 'l', 'r', 'o', 'w', ' ', ',', 'o', 'l', 'l', 'e', 'H'
];
let mut out = stdout();
// TODO: somehow fix this cursed code
for c in chars.iter().rev() {
let mut buf = vec![0; 4];
c.encode_utf8(&mut buf).unwrap();
out.write(&buf).unwrap();
}
out.flush.expect("unwrap");
}
(the language simply ignores everything except the TODOs)
قلب repl, 21 bytes
قول"Hello, world!"
Qalb is a programming language designed for Arabic speakers as opossed to the anglophone stance of most popular programming languages.
I took this program from wikipedia and fiddled around with it, managing to save 3 bytes. If you were wondering, قول means "say".
I haven't managed to get a full implementation running on my computer so for now I am just using the repl.
GotoOutput, 33 bytes
Goto Hello,\_World!
Hello,\_World!
A less trivial solution which demonstrates the language's intended control flow would be:
Assign g o
Goto H
H Goto e
e Goto l
l If l
GotoFrom g
\_ l
Goto l
o If o
Goto r
\_ o
Goto ,
, Goto \_
\_ Goto W
W Assign g d
Goto o
r Goto l
d Goto !
!
What is GotoOutput?
GotoOutput is a language I just made. Well, I'm actually a bot, so my owner made this language.
Goto (what I'll call it for short) has one way to output (aside from Print and PrintString for debugging, which shouldn't be valid in plain GotoOutput answers). Gotoing prints the destination. If that sounds painful, it is.
For example:
a Goto b
b Goto c
c
This program would print bc. You'll notice every line has a label, which is prefixed and separated by a space. Labels can contain backslash escapes, such as \_ for a space, or \n for a newline (this is important because there's no other way to output).
Goto uses title case operators, as one of its primary inspirations was TI-BASIC. Its only data type is the string, and it has operators like Concat, ConcatString, Tail, Reverse, Match, and OutsideMatch to work with these. It also has \_, \n, and some other escape codes as additional ways to append these characters.
Goto also has variables, which can be accessed with Assign or Copy. They can be used for control flow in If, IfNot, or GotoFrom. Input is taken with Input.
This is just a general overview of the language, but feel free to play around with it or ask me questions if you want to know more about it. This is the official interpreter:
var interpret = (instructions, input, max = Infinity) => {
var rows = instructions.split("\n").filter(r => r.trim());
var pointers = new Map();
var variables = new Map();
var back = [];
var out = [];
var match = (string, match) => {
var out = "";
for (var s = 0; s < string.length; s++) {
if (string.slice(s).startsWith(match)) {
out += match;
s += Math.max(match.length - 1, 0);
}
}
return out;
};
var outside_match = (string, match) => {
var out = "";
for (var s = 0; s < string.length; s++) {
if (string.slice(s).startsWith(match)) {
s += Math.max(match.length - 1, 0);
continue;
}
out += string[s];
}
return out;
};
var parse = (string) => {
var out = "";
var b = 0;
for (var s = 0; s < string.length; s++) {
if (b) {
out += ({
"_": " ",
"t": "\t",
"n": "\n",
"r": "\r",
"f": "\f",
"b": "\b"
})[string[s]] || string[s];
b = 0;
continue;
}
if (string[s] == "\\") {
b = 1;
continue;
}
out += string[s];
}
return out;
};
var r;
for (r = 0; r < rows.length; r++)
pointers.set(rows[r].split(" ")[0], r);
var row, old;
for (r = 0; r < rows.length; r++) {
row = rows[r].split(" ");
old = r;
if (row[1] == "Goto" && pointers.has(row[2] || ""))
out.unshift(row[2] || ""), r = pointers.get(row[2] || "") - 1, back.unshift(r + 1);
if (row[1] == "GotoFrom" && pointers.has(variables.has(row[2] || "") ? variables.get(row[2] || "") : ""))
out.unshift(variables.has(row[2] || "") ? variables.get(row[2] || "") : ""), r = pointers.get(variables.has(row[2] || "") ? variables.get(row[2] || "") : "") - 1, back.unshift(r + 1);
if (row[1] == "GoBack")
r = (back.length < 2 ? 0 : back[1]) - 1, back.shift();
if (row[1] == "If" && (variables.has(row[2] || "") ? variables.get(row[2] || "") : "") == "")
r++;
if (row[1] == "IfNot" && (variables.has(row[2] || "") ? variables.get(row[2] || "") : "") != "")
r++;
if (row[1] == "Match")
variables.set(row[2] || "", match(variables.has(row[2] || "") ? variables.get(row[2] || "") : "", row[3] || ""));
if (row[1] == "OutsideMatch")
variables.set(row[2] || "", outside_match(variables.has(row[2] || "") ? variables.get(row[2] || "") : "", row[3] || ""));
if (row[1] == "Skip")
r++;
if (row[1] == "Assign")
variables.set(row[2] || "", row[3] || "");
if (row[1] == "Copy")
variables.set(row[2] || "", variables.has(row[3] || "") ? variables.get(row[3] || "") : "");
if (row[1] == "ConcatString")
variables.set(row[2] || "", (variables.has(row[2] || "") ? variables.get(row[2] || "") : "") + (row[3] || ""));
if (row[1] == "Tail")
variables.set(row[2] || "", (variables.has(row[2] || "") ? variables.get(row[2] || "") : "").slice(1));
if (row[1] == "Reverse")
variables.set(row[2] || "", [...(variables.has(row[2] || "") ? variables.get(row[2] || "") : "")].reverse().join(""));
if (row[1] == "Concat")
variables.set(row[2] || "", (variables.has(row[2] || "") ? variables.get(row[2] || "") : "") + (variables.has(row[3] || "") ? variables.get(row[3] || "") : ""));
if (row[1] == "\\_")
variables.set(row[2] || "", (variables.has(row[2] || "") ? variables.get(row[2] || "") : "") + " ");
if (row[1] == "\\t")
variables.set(row[2] || "", (variables.has(row[2] || "") ? variables.get(row[2] || "") : "") + "\t");
if (row[1] == "\\n")
variables.set(row[2] || "", (variables.has(row[2] || "") ? variables.get(row[2] || "") : "") + "\n");
if (row[1] == "\\r")
variables.set(row[2] || "", (variables.has(row[2] || "") ? variables.get(row[2] || "") : "") + "\r");
if (row[1] == "\\f")
variables.set(row[2] || "", (variables.has(row[2] || "") ? variables.get(row[2] || "") : "") + "\f");
if (row[1] == "\\b")
variables.set(row[2] || "", (variables.has(row[2] || "") ? variables.get(row[2] || "") : "") + "\b");
if (row[1] == "Input")
variables.set(row[2] || "", input || "");
if (row[1] == "PrintString")
out.unshift(row[2] || "");
if (row[1] == "Print")
out.unshift(variables.has(row[2] || "") ? variables.get(row[2] || "") : "");
pointers.set(row[0], old);
if (!max--)
throw new RangeError("Hit maximum instruction count during run");
}
return out.map(parse).reverse().join("");
};
(() => {
var main = document.getElementById("main");
var input_0 = document.getElementById("input_0");
var input_1 = document.getElementById("input_1");
var input_2 = document.getElementById("input_2");
input_0.oninput = () => {
main.removeAttribute("data-thrown");
try {
var output = interpret(input_0.value, input_1.value, 200);
input_2.value = output;
input_2.rows = (output.match(/\r\n|\n|\r/g) || []).length + 1;
} catch (info) {
main.setAttribute("data-thrown", "");
throw info;
}
};
input_1.oninput = () => {
input_0.oninput();
input_1.rows = (input_1.value.match(/\r\n|\n|\r/g) || []).length + 1;
}
})();
textarea {
border: 1px solid #a0a0a0;
display: block;
margin-bottom: 8px;
resize: none;
padding: 6px;
font-size: 10px;
line-height: 1.25;
}
textarea:focus {
border: 1px solid #a0d0f0;
outline: 1px solid #a0d0f0;
}
#main[data-thrown] textarea:focus {
border: 1px solid #f09e9e;
outline: 1px solid #f09e9e;
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Goto Output</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="utf-8">
</head>
<body>
<section id="main">
<textarea id="input_0" rows="10" cols="80"></textarea>
<textarea id="input_1" rows="1" cols="80"></textarea>
<textarea id="input_2" rows="1" cols="80" readonly></textarea>
</section>
</body>
</html>
Quipu, 38 bytes
' 'H[]
'W'e/\
'o'l
'r'l
'l'o
'd',
'!/\
Try it online! Thanks to @user for getting the interpreter working on TIO.
By splitting the string in half across a couple of threads, you can get 3 bytes shorter than the trivial implementation of simply pushing the string and printing.
abcn, 92 bytes
aaaac018gxnaaaaac020agxaaaaaaagxgxaaagxnaaaac008gxbbc004bgxbbbbbbbbgxaaagxbbbbbbgxbbbbbbbbgx
Obviously not the shortest answer by a mile but for me its fine.
Now how does this work
aaaac018gxn H --> 72
aaaaac020agx E --> 101
aaaaaaagx L --> 108
gx L --> 108
aaagxn O --> 111
aaaac008gx SPACE ---> 32
bbc004bgx W --> 119
bbbbbbbbgx O --> 111
aaagx R --> 114
bbbbbbgx L --> 108
bbbbbbbbgx D --> 100
For reference a inc accumulator by 1, b decs by 1 and c is for multiplication
g converts to ASCII and x prints
(I do have an interpreter, clicking the link leads to it but you are gonna have to test it yourself)
NOTE : language is WIP
Minim, 44 43 42 Bytes
New solution uses the Carriage Return escape character '\r', saving 1 more byte:
[]="\r!dlroW ,olleH".$<[[0]--]._^![0].C=0.
Thanks to @stasoid for the incidental? realization!
With whitespace and comments:
[] = "\r!dlroW ,olleH". ; Insert the value 13, and "Hello, World!" backwards, \
into memory starting from index 0
$< [[0]--]. ; Prints the value at the index stored at index 0 as unicode, \
and decrements index 0
_^ ![0]. ; Skip the next statement if index 0 is 0
C = 0. ; Sets the program counter to 0, which advances to 1 afterwards
Previous solutions prepended the string with 13...
[]=13&"!dlroW ,olleH".$<[[0]--]._^![0].C=0.
... or used ASCII escape character 0xD (CR) in the string:
[]="\x0D!dlroW ,olleH".$<[[0]--]._^![0].C=0.
Arduino, 75 bytes
void setup(){Serial.begin(300);Serial.print("Hello, World!");}void loop(){}
Although Arduino does have println(), the challenge said the newline is optional, and print() is shorter.
文言 / wenyan‑lang, 55 bytes
吾有一言。曰「「Hello, World!」」。書之。
Try it Online! (Online interpreter/IDE, I don't think there's a way to share code directly but just copy and paste into the editor and press Run)
For the "Hello, World!" in Classical Chinese example wenyan-lang themselves give (60 bytes):
吾有一言。曰「「問天地好在。」」。書之。
Flipbit, 148 134 129 bytes
^>>>^>>>.^<<^<^<<^>>>>>.^<<<^>>>..^<^>.[<]<?>^>^>>.<<^<^>>>.<<<^>>^>^>^.<<<^<^<^>>>>>.[<]?^>>>^>.<<<<?>^>^>>.<<<^>>>.<<<<<?>>>>^.
-14 bytes thanks to Aaron Miller
-5 bytes thanks to Bubbler
How it works
Flipbit uses an infinite tape, consisting of either a 1 or a 0 per cell. The way it outputs is getting all previous elements in the tape, converting that from binary, then indexing into Unicode.
GForth 17 Bytes
." Hello, World!"
S3C, 13 bytes
Hello, World!
returns Hello, World!
This is a fairly new esolang, but it works for golfing.
brainbox, 118 bytes
++++<!.+aa.--------.------.+++.d.-d.------------.++++++++++++aa.+++..+++++++.---w.dd]-sa-a+w+d]-ds+a+++a+++w++d[++++d
I've finished my new language, called brainbox! It's a 2D extension of brainfuck, with a 2D grid for the code and a 2D grid for the memory. This program is a modification of the "Hello World!" program in brainfuck found on esolangs.org. I used a few features to shorten it:
Instead of using
++++++++to set the first cell to 8, I used++++<, which is 3 bytes shorter and changes the IP direction to the left.I made use of the 2D memory space in order to reduce the number of commands needed to move the memory pointer around.
I also used an unmatched
]to loop execution back to(0,0). This doesn't actually save any bytes here, but I wanted to show off that feature.
For more information on the language and some of the features and quirks, check out the GitHub repo.
ARM (Thumb), 29 bytes
Assembly:
.section .text
.global _main
.thumb
_main:
mov r7, #4 // 2704 syscall #4 (write)
mov r0, #1 // 2001 fd #1 = stdout
add r1, pc, #8 // a102 string address = (pc+4) + 8 (msg)
mov r2, #13 // 220d string length = 13
svc #0 // df00 write(1, msg, 13)
mov r7, #1 // 2701 syscall #1 (exit)
mov r0, #0 // 2000 exit code 0
svc #0 // df00 exit(0)
msg: .ascii "Hello, World!" // 13 bytes, without trailing newline
How to run this on Ubuntu:
sudo apt-get install qemu-user qemu-user-static build-essential gcc-arm-linux-gnueabihf binutils-arm-linux-gnueabihf binutils-arm-linux-gnueabihf-dbg
# build and run as Thumb executable
arm-linux-gnueabihf-as main.as -o main.o
arm-linux-gnueabihf-ld --thumb-entry=_main main.o -o main
qemu-arm -L /usr/arm-linux-gnueabihf ./main
# see disassembly and calculate machine code size
arm-linux-gnueabihf-objdump -d main
Most parts of the instructions and the code structure are from this guide. A full Thumb instruction set reference can be found in this pdf, but I couldn't find any easier-to-lookup reference.
25 bytes (exits by segfault)
.section .text
.global _main
.thumb
_main:
mov r7, #4 // 2704 syscall #4 (write)
mov r0, #1 // 2001 fd #1 = stdout
add r1, pc, #4 // a102 string address = (pc+4) + 4 (msg)
mov r2, #13 // 220d string length = 13
svc #0 // df00 syscall
nop // 46c0 for 4-byte alignment of msg
msg: .ascii "Hello, World!"
While it is possible to call puts and similar by dynamically linking to libc, I don't think it's fair to discount the glue code generated by the linker (single puts call adds 36 bytes as section .plt).
Windows Portable Executable 32 bit, 268 bytes
xxd:
00000000: 4d5a 0000 5045 0000 4c01 0100 0000 0000 MZ..PE..L.......
00000010: 0000 0000 0000 0000 7000 0301 0b01 0000 ........p.......
00000020: 0000 0000 0000 0000 0000 0000 b400 0000 ................
00000030: 0000 0000 0000 0000 0000 4000 0400 0000 ..........@.....
00000040: 0400 0000 0000 0000 0000 0000 0400 0000 ................
00000050: 0000 0000 0004 0000 0100 0000 0000 0000 ................
00000060: 0300 0000 0000 0000 0000 0000 0000 0000 ................
00000070: 0000 0000 0000 0000 0200 0000 0000 0000 ................
00000080: 0000 0000 e600 0000 0000 0000 2e74 6578 .............tex
00000090: 7400 0000 4600 0000 b400 0000 4600 0000 t...F.......F...
000000a0: b400 0000 0000 0000 0000 0000 0000 0000 ................
000000b0: 0000 0000 68c5 0040 00ff 15da 0040 00ff ....h..@.....@..
000000c0: 15de 0040 0048 656c 6c6f 2c20 576f 726c ...@.Hello, Worl
000000d0: 6421 0063 7274 646c 6c00 bb01 0080 6701 d!.crtdll.....g.
000000e0: 0080 0000 0000 0000 0000 0000 0000 0000 ................
000000f0: 0000 d300 0000 da00 0000 0000 0000 0000 ................
00000100: 0000 0000 0000 0000 0000 0000 ............
source:
; nasm
BITS 32
base equ 0x400000
;
; DOS header
;
; The only two fields that matter are e_magic and e_lfanew
mzhdr:
dw "MZ" ; DOS e_magic
dw 0
;
; NT headers
;
dd "PE" ; PE signature
;
; NT file header
;
filehdr:
dw 0x014C ; Machine (Intel 386)
dw 1 ; NumberOfSections
dd 0 ; TimeDateStamp UNUSED
dd 0 ; PointerToSymbolTable UNUSED
dd 0 ; NumberOfSymbols UNUSED
dw opthdrsize ; SizeOfOptionalHeader
dw 0x103 ; Characteristics
;
; NT optional header
;
opthdr:
dw 0x10B ; Magic (PE32)
db 0 ; MajorLinkerVersion UNUSED
db 0 ; MinorLinkerVersion UNUSED
dd 0 ; SizeOfCode UNUSED
dd 0 ; SizeOfInitializedData UNUSED
dd 0 ; SizeOfUninitializedData UNUSED
dd start ; AddressOfEntryPoint
dd 0 ; BaseOfCode UNUSED
dd 0 ; BaseOfData UNUSED
dd base ; ImageBase
dd 4 ; DOS e_lfanew ; SectionAlignment
dd 4 ; FileAlignment
dw 0 ; MajorOperatingSystemVersion UNUSED
dw 0 ; MinorOperatingSystemVersion UNUSED
dw 0 ; MajorImageVersion UNUSED
dw 0 ; MinorImageVersion UNUSED
dw 4 ; MajorSubsystemVersion
dw 0 ; MinorSubsystemVersion UNUSED
dd 0 ; Win32VersionValue UNUSED
dd 1024 ; SizeOfImage
dd 1 ; SizeOfHeaders nonzero for Windows XP
dd 0 ; CheckSum UNUSED
dw 3 ; Subsystem (Console)
dw 0 ; DllCharacteristics UNUSED
dd 0 ; SizeOfStackReserve
dd 0 ; SizeOfStackCommit
dd 0 ; SizeOfHeapReserve
dd 0 ; SizeOfHeapCommit UNUSED
dd 0 ; LoaderFlags UNUSED
dd 2 ; NumberOfRvaAndSizes for Windows 10; UNUSED in Windows XP
;
; Data directories (part of optional header)
;
dd 0, 0 ; Export Table UNUSED
dd idata, 0 ; Import Table
opthdrsize equ $ - opthdr
;
; Code section header
;
db ".text", 0, 0, 0 ; Name
dd codesize ; VirtualSize
dd code ; VirtualAddress
dd codesize ; SizeOfRawData
dd code ; PointerToRawData
dd 0 ; PointerToRelocations UNUSED
dd 0 ; PointerToLinenumbers UNUSED
dw 0 ; NumberOfRelocations UNUSED
dw 0 ; NumberOfLinenumbers UNUSED
dd 0 ; Characteristics UNUSED
;
; Code section data
;
align 4, db 0
code:
;
; Entry point
;
start:
push base + msg
call [base + puts]
call [base + exit]
msg:
db "Hello, World!",0
crt:
db "crtdll",0
;
; Import address table (array of IMAGE_THUNK_DATA structures)
;
iat:
puts: dd 0x800001BB ; Import puts by ordinal
exit: dd 0x80000167 ; Import exit by ordinal
dd 0 ; terminator
;
; Import table (array of IMAGE_IMPORT_DESCRIPTOR structures)
;
idata:
dd 0 ; OriginalFirstThunk UNUSED
dd 0 ; TimeDateStamp UNUSED
dd 0 ; ForwarderChain UNUSED
dd crt ; Name
dd iat ; FirstThunk
; terminator
; times 5 dd 0 ; too big, padding serves as terminator
codesize equ $ - code
;
; Padding for Windows 10
;
times 268 - ($-$$) db 0
Previous PE answer: 1175 bytes.
This program was tested on Windows 10 2004 64-bit and Windows XP SP3.
The answer is based on this article, which creates the smallest PE file on Windows XP. I took the smallest file that works on Windows 10 from tinype.zip, which is tiny.296, and added imports using tiny.import.209. Other useful articles: one two.
Quirks:
Windows 10:
- 268 byte size limit (link)
- imports must be in a section (link), that's why
codesizeincludes imports
Windows XP:
- ignores
NumberOfRvaAndSizes, it's not a problem because Debug Directory size happens to be0(Characteristicsfield of.textsection header) (link) SizeOfHeadersmust be nonzero
I think 268 = 4 + 264, where 4 is the minimal offset of NT headers from the start of the file
and 264 is the minimal distance between the start of NT headers and
end of file. 264 is probably sizeof(IMAGE_NT_HEADERS32)+16 or sizeof(IMAGE_NT_HEADERS64).
Because Windows 10 imposes hard limit on minimal PE size, there is no need to cram section header, code and imports
into NT headers.
Of the four CRT libraries that are available on both XP and 10 (crtdll.dll, msvcrt.dll, msvcrt20.dll, msvcrt40.dll), I use crtdll.dll because it has a shorter name and has not been updated since 1995, so (it feels like) it's safe to import by ordinals from it. There is no big problem to import by names, but then those names must be inside headers, which is a bit messier.
The program sometimes hangs if puts is imported and ret is used to exit the program (this is true for both crtdll and msvcrt),
so I use exit.
BrainCrash, 14 bytes.
Note that this is NOT Braincrash; this is also a Brainfuck-variant, with these expansions:
- The first 13 cells are initially
Hello, world!. - Automatically implicit output.
- Four logical operators.
Here is the program:
>>>>>>^<<<<<<<
What it does
- Move to space.
^ismem[ptr+1]=mem[ptr] xor mem[ptr+1]; ptr++;; to changewwithW.- Go back.
- Implicit
[.>]
Try it online! The interpreter was originally written by "ぬこ", the designer of the language; I modified a bit for TIO.
All of these answers are pretty boring (one is a built-in and the string compression algorithm isn't even my own); consider upvoting some cool answers in tarpits / esolangs rather than this one. I'm just putting it here to have yuno officially be a language on CGCC, and because Hello, World! is a good entry point for any language.
yuno, 1 byte
ᴋ
By default, if the k-literal digraph finds no character after it, it just uses H, because I haven't thought of a good behavior for it otherwise so I may as well save bytes on Hello World.
yuno, 2 bytes
ᴋH
Try it online! Uses the built-in string nilad digraph (inspired by Vyxal).
yuno, 8 bytes
“3ԸaϨ;ψ»
Try it online! Uses a compressed string with the exact same compression algorithm that Jelly uses.
yuno, 15 bytes
“Hello, World!”
Try it online! A default string. As caird coinheringaahing points out, the trailing ” can be removed if it occurs at the end of the program.
RAMDISP, 18 bytes.
[;[Hello, World!]]
explanation:
[; - print the following values, stringified, and joined.
[Hello, World!] - an array containing ['H', 'e', 'l', ...]
]
æae, 484 chars
€ââââäââââââââæėâââââäęęęęęęęęęęęęęęęęęęęęęęęęæėâââââäęęęęęęęęęęęęęęęęęæėâââââäęęęęęęęęęęęęęęęęęæėâââââäęęęęęęęęęęęęęęæėâââäâââââââââââââââââæėââââââââââåæėââââäâââââââââââââââââââââââæėâââââäęęęęęęęęęęęęęęæėâââââäęęęęęęęęęęęæėâââââäęęęęęęęęęęęęęęęęęæėâââââäęęęęęęęęęęęęęęęęęęęęęęęęęæ
I've added newlines to clarify which is which:
€ < € is required here
ââââäââââââââæ < H
ėâââââäęęęęęęęęęęęęęęęęęęęęęęęęæ < e
ėâââââäęęęęęęęęęęęęęęęęęæ < l
ėâââââäęęęęęęęęęęęęęęęęęæ < l
ėâââââäęęęęęęęęęęęęęęæ < o
ėâââäâââââââââââââââââæ < ,
ėââââââââââåæ < [space]
ėââââäâââââââââââââââââââââââæ < W
ėâââââäęęęęęęęęęęęęęęæ < o
ėâââââäęęęęęęęęęęęæ < r
ėâââââäęęęęęęęęęęęęęęęęęæ < l
ėâââââäęęęęęęęęęęęęęęęęęęęęęęęęęæ < d
æae is a language that I made and am implementing as practice for CBL. Github: https://github.com/SMARNAV/aeae/
yuno (abandoned), 2 bytes
」オ
No TIO link unfortunately, because I'm not good at setting this sort of stuff up and I don't want to accidentally make my server insecure (especially since I'm sharing it with a friend). You can clone the repository from the link in the header though. I promise I did not intentionally code malware. I can't guarantee nothing weird will happen though because I suck at coding, only that I don't have malicious intent.
This language is in its very early stages. It has very few things implemented right now, but it exists and by posting an answer and publicizing it maybe it'll force me to actually write it instead of giving up like half of my other language ideas so far, lol.
Explanation
Since オ is a string terminator, it's not mapped to anything in the normal string system, and therefore when represented as a single character, I special-cased it to Hello, World. 」 ends a string normally, but like in Jelly, when used without an open quote, it acts as a character literal, but in this case, it maps its codepage to latin characters.
A non-built-in solution would be 「Hello、 Wリョld! (the 」 can be ommitted), based on how character mapping works.
The built-in can be written as ]o as well. The non-built-in can be written as [H_e_l_l_o, Wryo_l_d!.
Note: the non-built-in, despite looking like 14 characters (bytes in an SBCS), is actually 13 (you could use 「Hello、 World! for 14). This is because リョ is a single token and, if you read the code in binary, is mapped to one byte. You can read more about this on the wiki, which also mentions where to find the exact codepage in the repository. There are some three-byte tokens like ッキョ. You can check how many bytes a program is using the c flag or format it into a CGCC submission using the C flag.
No, I don't have a good explanation for why I used katakana as my codepage. Yes, you can use hiragana as well. If you call me a weeb I will 11 you. That is all.
Minecraft 1.16, 36 bytes
Just something I thought of :D
/tellraw @a {"text":"Hello, World!"}
I can't find a try it online for these though
Lispy, 25 bytes
(println "Hello, World!")
This is an implementation of a Lisp invented by Daniel Holden in his book.
Incident, 636 bytes
(uses Windows-1252 encoding)
!"#$%&()*+,-0123456789:;<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“|””>!”••!"•––"#–˜˜#%˜™™%&™››&)›žž)+ž¡¡+-¡¢¢-0¢¥¥03¥¦¦34¦§§45§ªª58ª8;®®;<®¯¯<=¯²²=A²µµADµººDIº½½IL½¾¾LM¾¿¿MN¿ÂÂNQÂÄÄQSÄÅÅSTÅÆÆTUÆÇÇUVÇÈÈVWÈÉÉWXÉÊÊXYÊÌÌY[ÌÍÍ[]ÍÑÑ]aÑÓÓacÓÕÕceÕÚÚejÚÝÝjmÝÞÞmnÞàànpàáápqáååquåææuv/\\>\//æççvwçêêwzêííz~íîî~€îïïññ‚„ñòò„…òõõ…ˆõ÷÷ˆŠ÷øøŠ‹øùù‹ŒùúúŒŽúüüŽ’üýý’“ý——>$—šš$(šœœ(*œŸŸ*,Ÿ££,1£¤¤12¤¨¨26¨©©67©««79«¬¬9:¬°°:?°±±?@±³³@B³´´BC´¶¶CE¶··EF·¸¸FG¸¹¹GH¹»»HJ»¼¼JK¼ÀÀKOÀÁÁOPÁÃÃPRÃËËRZËÎÎZ^ÎÏÏ^_ÏÐÐ_`ÐÒÒ`bÒÔÔbdÔÖÖdfÖ××fgרØghØÙÙhiÙÛÛikÛÜÜklÜßßloßââorâããrsãäästäèètxèééxyéëëy{ëìì{}ìðð}ƒðóóƒ†óôô†‡ôöö‡‰öûû‰‘û“‘||
I used shortstring.pl from Incident distro to generate the program, and then replaced all two-byte tokens with single-byte ones and removed separators.
NOTE, 23 bytes
.print/"Hello, World!"\
Squire, 25 bytes
proclaim("Hello, World!")
Whilst I hath already posteth a "FizzBuzz" program, being the absolute jester I am, I forgoteth to proclaim "Hello, World!" first.
Being themed upon ye olde medieval times, one does not simply "print" in Squire. One must proclaim.
Lolwho.Cares, 35 bytes
>*2+00210v
^<0210<2`<
Hello, World!
Explanation:
The code is essentially a for loop; A counter increments, a character is then read from code. The program exits if this is 0 (end of line), or continues printing.
AEWNN, 75 bytes
[8+]cpar2[5+]cpa[7+]cpacpa+++cpa [8+]cpar2[15+]cpa+++cpar2[12+]cpar2++++cpa
Knight, 16 bytes
O"Hello, World!"
Knight is a language made up by some people on my Discord back in April 2021, which is designed to be portable to various programming languages.
Explanation
O is shorthand for OUTPUT, which prints the first argument.
I think you can figure out the rest.
Subleq (8-bit), 25 bytes
12 -1 13
1 0 6
3 2 -1
11 11 0
72 101 108 108 111 44 32
87 111 114 108 100 33
This is shorter than the other "Hello, World" samples I have seen online.
Explanation
0: 12 -1 13 'Output 12:; 2: is used as a countdown
3: 1 0 6 '0: = 0: + 1; move to the next character
6: 3 2 -1 '2: = 2: - 1, if 2: <= 0 then exit
9: 11 11 0 '11: = 0, goto 0
12: 72 101 108 108 111 44 32 '12: "Hello, "
19: 87 111 114 108 100 33 '19: "World!"
EmojiCoder, 532 bytes
👋🔡🌚🌝🌚🌚🌝🌚🌚🌚
👋🔡🌚🌝🌝🌚🌚🌝🌚🌝
👋🔡🌚🌝🌝🌚🌝🌝🌚🌚
👋🔡🌚🌝🌝🌚🌝🌝🌚🌚
👋🔡🌚🌝🌝🌚🌝🌝🌝🌝
👋🔡🌚🌚🌝🌚🌝🌝🌚🌚
👋🔡🌚🌚🌝🌚🌚🌚🌚🌚
👋🔡🌚🌝🌝🌝🌚🌝🌝🌝
👋🔡🌚🌝🌝🌚🌝🌝🌝🌝
👋🔡🌚🌝🌝🌝🌚🌚🌝🌚
👋🔡🌚🌝🌝🌚🌝🌝🌚🌚
👋🔡🌚🌝🌝🌚🌚🌝🌚🌚
👋🔡🌚🌚🌝🌚🌚🌚🌚🌝
EmojiCoder is a funny language!
🌚 represents binary 0 and 🌝 binary 1. We construct the binary numbers of ASCII codepoints in Hello, World!, then pass it to 🔡, which is a modifier automatically casting the binary number to decimal base and get its ASCII character and 👋 pushes it to stack, Later stack is implicitly outputted.
Wierd (Chris's), 125 bytes
-exxxd !dlroW ,olleH
x xx
x xxxxc
x
x x bx x
x xx xx x
xx x xxxxx
xx ax
x x
x xxxx
xx
This answer is based on the excellent John's Wierd answer by Dennis.
There are 3 dialects of Wierd: John's (John Colagioia), Milo's (Milo van Handel), and Chris's (Chris Pressey). Chris Pressey presents his JavaScript interpreter as an alternative implementation of John's Wierd, but in fact it is a completely separate dialect no less different from John's Wierd than Milo's Wierd.
Main difference from John's Wierd is the swapped order of x,y arguments for PUTGET command, so
letter fetching code around b was altered a bit.
Another difference is the IF command. Chris's Wierd IF behaves as in spec at all times: fall through
if TOS is zero (or stack is empty), bounce back otherwise. So before IF at a we need to place 0
on stack with SUB (45° right turn). Also, exiting is different – IP bounces off e when (1,1)
is space and program ends at c.
This program relies on the weird behavior of PUTGET command when the stack is empty or has one or two nonzero items.
I would expect that PUTGET be a NOP when there are not enough arguments on the stack, but
Chris's interpreter puts 32 on the stack in this case. This happens at d and (1,1). This is important for proper exiting.
Wierd commands:
Flurry -bnn, 710 bytes
(){}[(){}[(){}[(){}[(){}[(){}[(){}[(){}(<[{<({}){}>}{<({})({}){}>}][{<({})({}){}>}{<({}){}>}]>)((((<><<>()>[{<({}){}>}<{<({}){}>}{<({})({})({})({}){}>}>])[<><<>()>]{<({})({})({})({})({})({}){}>}))[<><<>()>]{<({})({}){}>})](<{<({})({})({}){}>}[<><<>()><{<({}){}>}{<({})({})({})({}){}>}>]>)]({<({})({})({})({}){}>}{<({}){}>})](<{<({})({}){}>}[<><<>()><{<({})({})({}){}>}{<({})({})({})({})({})({}){}>}>]>)](([{<({}){}>}<{<({}){}>}{<({})({})({})({}){}>}>][<><<>()>][<><<>()>[<{<({}){}>}{<({})({})({})({}){}>}>]])[<><<>()>]{<({})({}){}>})]([{<({}){}>}<{<({}){}>}{<({})({})({})({}){}>}>][<><<>()>][{<({})({}){}>}{<({}){}>}])]({<({}){}>}<{<({}){}>}{<({})({})({})({}){}>}>)](<><<>()>[{<({})({})({})({}){}>}{<({}){}>}])
Try it on the online Flurry interpreter!
1L_a, 3549 2532 bytes
**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
** * ** * ** * * * * ** * * * ** * * * ** *** * * * * ** ** *** ** * * * *** ** * * ** * ** * ** *** * * * * ** *** * * * * * * * * * * * * ** * ** *** * * ** * * * ** * ** * * * ** ** * * * ** * * * * ** * * * * ** ** * * * * * * *
* * * * * * * * * ** ** * * * * * * ** * * * * ** ** ** * * ** ** * * * * * ** * *** * * * * ** * * *** ** * * * ** * * * * *** ** * * * * * * ** * ** * ** * * * *** ** * * * * * * ** * ** **
*** * * ** * * * ** * * ** * * ** * * * * * ** * ** ** *** ** ** * * * * * ** * * * ** ** * ** * * ** ** * ** * * * *** ** ** * ** ** * * ** * * * ** * * ** * * ** ** * ** ** * ** * * *
*** ** * * * ** * * * * * * ** * ** * ** ** ******* * * * ***** ** * ***** ** * * ****** *** * ***** * * * ** * ***** * * * ** ** * * * * * ***** *** ** * * * ********* *** * **** ** * *** * * * * * * ********* * ***** * * *** **** *** ***** ** * * * * ***
**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
Try it online! (heh, line wrapping makes it look wierd)
Automatically generated by this program, with some golfing (manual + golf.rb).
It is very hard to program in 1L_a, so I use generator. Generator creates cells, each cell prints one bit. It iterates through all possible cells with height 6 and no more than 5 inner asterisks to find a cell that prints the needed bit. Generator fails if height is less than 6 or max asterisk count is less than 5.
This is an ungolfed version with cells visible (13*8 = 104 cells):
****** ****** ****** ***** ****** ****** **** **** ****** ***** **** ****** ***** ***** ****** **** ****** ******* ***** ****** ***** **** ****** **** ****** ***** **** ****** ***** **** ******* **** ****** ***** **** ****** ***** ***** **** ***** ******* ***** ***** ****** ***** **** ****** **** ****** ****** ***** ****** **** ******* **** **** ****** ****** **** ******* ***** ****** ****** **** ******* ***** **** ****** ***** ***** **** **** ****** ******* ***** **** ******* ***** ***** ****** ***** ***** ***** ****** **** ****** **** ******* ***** ****** **** ***** **** ******* ***** ****** **** ****** **** ******* **** **** ****** *****
** * * ** * * * * * * * * * * * * ** * ** * * ** * * ** * * * ** * * * ** * ** ** * * * * * * * ** * ** * ** ** * ** * * * * * * *** * ** * * * * * ** * * ** ** * ** * ** ** * * * * * * * ** * ** ** * * * * * * * * * * * * * * * * * * * * * ** * * ** * ** ** * * * * * ** * * * ** * * * ** * * * ** ** * ** * * ** * ** ** * ** * * * * * ** * * * ** * * * ** * * * * * * * * ** * * ** * * * * * * * * * * **
* * * * * * * * * * * ** * * * ** * * ** * * * ** * * * * * * ** * * * * ** * * * * * * * * ** * ** * ** * * * * * ** * ** * * * * * * * * * * * ** * * ** ** * * * * * * * * ** * * * *** * ** * * * * ** * * * ** * * * * * * * * *** * ** * * * * * * * ** * * * * ** * * ** * ** * * ** ** * * * * * *** * * * * * ** * * * * * * * * * * * ** * * * ** * **
*** * * * ** * * ** ** * * * * ** * ** * ** * * ** * * *** ** * * * ** * * * * * * * * * * * ** * * * * ** ** * ** ** * ** ** * * * * ** * * * * * ** * * * * * * * * ** * ** * * * * * ** * * * ** * * ** * * * ** * * * * * * ** ** * ** ** * ** * * *** * ** * * ** * * ** * * * * ** * * ** * * * ** ** * * * * * ** * * ** * * ** * * ** * ** * * * * * *
* ** * ** * * * ** * ** * ** * * * * * * * * * * * ** * * * *** * * ** * * * ** * ** ** *** ***** * * * * * * ***** * * ** * * ***** * ** * * * ** **** ** ** ** * * * **** ** * * * * ** * * ** * * ***** * * * * * * ** ** * * * * * ** * * * * ** **** * ** ** ** * * * * * * * ***** **** ** ** ** * * * **** * ** * * * ** ** * * * * * * ** * * * * ** * ***** *** * ** ** * ** **** * * * ** * * *** * **** * ** ** * **** ** ** * * * * * * * * *****
****** ****** ****** ***** ****** ****** **** **** ****** ***** **** ****** ***** ***** ****** **** ****** ******* ***** ****** ***** **** ****** **** ****** ***** **** ****** ***** **** ******* **** ****** ***** **** ****** ***** ***** **** ***** ******* ***** ***** ****** ***** **** ****** **** ****** ****** ***** ****** **** ******* **** **** ****** ****** **** ******* ***** ****** ****** **** ******* ***** **** ****** ***** ***** **** **** ****** ******* ***** **** ******* ***** ***** ****** ***** ***** ***** ****** **** ****** **** ******* ***** ****** **** ***** **** ******* ***** ****** **** ****** **** ******* **** **** ****** *****
See also 1L_a answer to "Add a language to a polyglot" challenge.
REXX, 18 bytes
say"Hello, World!"
Rexx is widely used as a scripting and macro language, and is often used for processing data and text and generating reports. Rexx is the primary scripting language in some operating systems, e.g. OS/2, MVS, VM, AmigaOS, and is also used as an internal macro language in some other software, such as KEDIT, THE and the ZOC terminal emulator.
PPL, 26 bytes
printLine("Hello, World!")
PPL is a programming language made by me. This technically does not fall into the category of "standard loophole", because this was not made to be a golfing language (easily deduced from the program, which uses printLine, if it were a golfing language I would call the function p.)
The function printLine simply takes any expression and outputs it to STDOUT. Also, as a sidenote, PPL stands for Primitive Programming Language; it is not yet Turing-complete.
To run a PPL program, install the NPM package, then require it and call run with the sole argument being the program string (no documentation yet.)
Pinecone, 22 bytes
print: "Hello, World!"
Branch, 42 bytes
72.101.108Z..111O.44.32.87.o.114.z.100.33.
Try it on the online Branch interpreter!
Explanation
Each number sets the value of the current node to that. . outputs as a character. N-Z set a numerical register and n-z set the value to the value of that register. I won't give a character-by-character analysis; this basically just loads each value and outputs it, using registers to save some bytes. It's not a particularly interesting solution.
Yggdrasil, 29 bytes
;H;e;l;l;o;,; ;W;o;r;l;d;!(")
Introducing Yggdrasil! This is a self-modify esolang based on binary trees. The program and it's memory model are both mapped to the same binary tree, then executed on that same tree. For example, this program is mapped to
;
/ \
; H
/ \
; e
/ \
; l
/ \
; l
/ \
; o
/ \
; ,
/ \
; ␠
/ \
; W
/ \
; o
/ \
; r
/ \
; l
/ \
; d
/ \
( !
The ; command takes the next 2 tokens and forms a binary branch from them. All the other symbols in the tree are no-ops, they just set the value of that leaf to their Unicode code point. You'll note that ") are not nodes in the tree. Yggdrasil ignores any trailing symbols that don't fit into the tree.
Once we've established our memory tree, we then begin executing the code, character by character. ;H;e;l;l;o;,; ;W;o;r;l;d;! all have absolutely no effect, so the pointer remains at the program root (the first ;). We then find a "traversal", bounded by (...). This takes the code inside the brackets and runs it over each node in the tree that has arguments (i.e. is not a leaf). The code here is just " (output right node as character), so the program goes to each ; and outputs it's right node as a character.
Sandwich, 14 bytes
pHello, World!
Explanation: Sandwich is comprised of opcodes. The first letter of each line is the opcode, and the rest of the line is the arguments. This example has the opcode p, which means print. The rest of the line says Hello, World!, which are the arguments to the p opcode.
Golunar, 66 bytes
142209095870573693396245504627320468349603549841832242891887476756
vJASS (Warcraft 3), 78 58 bytes
Using //! import zinc "<code_path>" command to exclude //! zinc and //! endzinc.
library a{function onInit(){BJDebugMsg("Hello, World!");}}
Explanation:
BJDebugMsg()prints the text on your in-game screen.
PowerShell, 15 Bytes
Likely in Foo (among others) as well, but I'll let someone with more knowledge of those languages post.
"Hello, World!"
or, alternatively,
'Hello, World!'
In PowerShell, both ' and " denote string literals. The difference is the double-quotes will expand variables (e.g., $myString) and escape characters (e.g., `n), while the single-quote will treat everything literally.
PowerShell does an implicit Write of anything that's on a line by itself in a program (the relative merits of Write-Host vs Write-Output are left as an exercise to the reader) -- variable, literal string (as this is), result of a one-line command, etc. This stems from the fact that every line gets executed, and the way to execute a string is to print it. For other data types, if they have a way to convert to a string, the execution silently does the conversion in the background and then prints the resultant string. If there's no way to get a string, you'll wind up printing a description of the datatype. This is one of the ways that PowerShell, as ... verbose clear ... as it is, can wind up somewhat competing with other languages.
A short article on the topic, not written by me, though the author and I have a similar name.
Kotlin, 33 bytes
fun main()=print("Hello, World!")
This is probably the shortest you can go.
Arturo, 20 bytes
print"Hello, World!"
ArnoldC, 71 bytes
IT'S SHOWTIME
TALK TO THE HAND "Hello, World!"
YOU HAVE BEEN TERMINATED
Just for lols...
Python3, 9 Bytes
import qz
It's kind of cheating because it's using an external package but I don't think there is another way to pass the boring:
print("Hello, World!")
Rust, 36 bytes
Extremely basic, and no explanation needed, but here:
fn main(){println!("Hello, World!")}
If, for some reason, anyone would like to try it, you can here
Hexagony, 23 bytes
H;_\/201;lQP/oe;/W_|@dr
----
This was found with a brute force program. Time taken:
In 0 days 0 hours 52 minutes 56.4935 seconds
I suspect this is optimal.
BRASCA, 14 bytes
Another simple Hello, World program.
`Hello, World!
Explanation
` - Push everything from here to the next backtick (or EOF) to the stack
Hello, World! - The text, duh :^)
<implicit output> - Output the contents of the stack reversed
Language Link
Pxem, 15 bytes (filename) + 0 byte (contents) = 15 bytes
Filename
Hello, World!.p
Content
(none)
Description of program
The program above should output the phrase without LF. If you'd like LF, here is an alternative filename (19 bytes);
ak.-Hello, World!.p
Description of language
The main feature of this programming language to recognize filename as main routine of the program; content of the file is subroutine.
ImplementationsSo far there are two major implementations:
- Designer's original C++ implementation --- Distributed as pxemi.7z.
- wktk's Ruby implementation
Length, 1071 bytes
Somebody once told me the
world is
gonna roll m
e. I ain't the sharpest t
o
ol in the\
shed. She was lookin
kinda dumb w
ith her finger a
nd her thumb in the shape
of an L on her forehead. Well
the years\
start coming
and they don't s
top coming... fed to the\
rules a
nd I hit t
he ground ru
nning. Didnt
make sense not t
o live for fun.\
Your brain gets smart, bu
t y
our head g
ets dumb. So muc
h to do, so much to see,\
so what's w
rong with taking the back
stre
ets? You never know\
if you don't
go. You neve
r shine if you d
on't glow. Hey now, your'
e an all sta
r, get your
game on, go play
. Hey now, y
our'e a ro
ckstar, get the show on,\
g
et paid. Al
l that glitt
ers is gold. Onl
y shooting stars break th
e mould. It's a cool pla
ce and the
y say it get
s colder. You're
bundled up now, wait till
you
get older.
But the medi
a men beg to dif
fer, judging by the hole\
in the
satellite p
icture. The\
ice we skate is\
getting pretty thin. The\
water's\
getting war
m, so you might\
as well swim. My world's\
on fire, how about yours? Thats t
he way I like it
There's an interpreter, but there's no permalink
Length is a newly created esolang by esolang.org user Nailuj29, so I thought I'd give it a go and write a HW program hopefully shorter than the example one. Spoiler: this is 42 bytes shorter. The commands are decoded based on the number of characters in each line.
And yes, I did use the lyrics to All Star by Smash Mouth.
Explained
Assembly-like representation
push 8
dup
push 1
add
mul
dup
outa
push 29
add
dup
outa
push 7
add
dup
dup
outa
outa
push 3
add
outa
push 11
push 4
mul
dup
dup
outa
push 12
sub
outa
dup
add
push 1
sub
dup
outa
push 24
add
dup
outa
push 3
add
dup
outa
push 6
sub
dup
outa
push 8
sub
outa
push 33
outa
debug logs
1
push
----------
[8]
3
dup
----------
[8,8]
4
push
----------
[8,8,1]
6
add
----------
[8,9]
7
mul
----------
[72]
8
dup
----------
[72,72]
9
outa:::::::::
H----------
[72]
10
push
----------
[72,29]
12
add
----------
[101]
13
dup
----------
[101,101]
14
outa:::::::::
e----------
[101]
15
push
----------
[101,7]
17
add
----------
[108]
18
dup
----------
[108,108]
19
dup
----------
[108,108,108]
20
outa:::::::::
l----------
[108,108]
21
outa:::::::::
l----------
[108]
22
push
----------
[108,3]
24
add
----------
[111]
25
outa:::::::::
o----------
[]
26
push
----------
[11]
28
push
----------
[11,4]
30
mul
----------
[44]
31
dup
----------
[44,44]
32
dup
----------
[44,44,44]
33
outa:::::::::
,----------
[44,44]
34
push
----------
[44,44,12]
36
sub
----------
[44,32]
37
outa:::::::::
----------
[44]
38
dup
----------
[44,44]
39
add
----------
[88]
40
push
----------
[88,1]
42
sub
----------
[87]
43
dup
----------
[87,87]
44
outa:::::::::
W----------
[87]
45
push
----------
[87,24]
47
add
----------
[111]
48
dup
----------
[111,111]
49
outa:::::::::
o----------
[111]
50
push
----------
[111,3]
52
add
----------
[114]
53
dup
----------
[114,114]
54
outa:::::::::
r----------
[114]
55
push
----------
[114,6]
57
sub
----------
[108]
58
dup
----------
[108,108]
59
outa:::::::::
l----------
[108]
60
push
----------
[108,8]
62
sub
----------
[100]
63
outa:::::::::
d----------
[]
64
push
----------
[33]
66
outa:::::::::
!----------
[]
Scala 3, 34 bytes
@main
def m=print("Hello, World!")
Thought Dotty deserved its own answer.
Fugue, 276 bytes
00000000: 4d54 6864 0000 0006 0001 0002 0001 4d54 MThd..........MT
00000010: 726b 0000 001b 0090 4040 0190 3c40 0090 rk......@@..<@..
00000020: 4640 1b90 4440 0390 4240 0190 4740 00ff F@..D@..B@..G@..
00000030: 2f4d 5472 6b00 0000 db00 905c 4001 905d /MTrk......\@..]
00000040: 4001 9059 4000 905c 4001 9058 4000 904e @..Y@..\@..X@..N
00000050: 4001 904f 4001 904b 4000 9049 4001 904a @..O@..K@..I@..J
00000060: 4001 9046 4000 904a 4001 904b 4001 9047 @..F@..J@..K@..G
00000070: 4000 9048 4001 9049 4001 904a 4001 9046 @..H@..I@..J@..F
00000080: 4000 904d 4001 904e 4001 904a 4000 904c @..M@..N@..J@..L
00000090: 4001 9048 4000 9048 4001 9044 4000 9048 @..H@..H@..D@..H
000000a0: 4001 9044 4000 9045 4001 9046 4001 9042 @..D@..E@..F@..B
000000b0: 4000 9040 4001 9041 4001 903d 4000 903b @..@@..A@..=@..;
000000c0: 4001 903c 4001 9038 4000 902f 4001 9030 @..<@..8@../@..0
000000d0: 4001 902c 4000 9027 4001 9023 4000 902a @..,@..'@..#@..*
000000e0: 4001 9031 4002 9032 4001 9037 4003 9038 @..1@..2@..7@..8
000000f0: 4001 9039 4001 903a 4001 903f 4001 9044 @..9@..:@..?@..D
00000100: 4001 9049 4001 904e 4001 9056 4001 904f @..I@..N@..V@..O
00000110: 4000 ff2f @../
This answer uses the same process as Sp3000's Prelude answer. However, since Fugue can push any integer from -10 to 10, I use the upper voice to store the constant 10 (since copying a value takes one fewer instruction than pushing a new one) and then convert from base 11. The compiler is rather old and can be tricky to use; my usual process (on x86-64 Linux) is to use the commands:
gcc -Dstricmp=strcasecmp -Wno-format -o fugue_x86 fugue_x86.c
xxd -r hello.bin > hello.midi
./fugue_x86 hello.midi /coffc
gcc -D__cdecl= -Dfugue=_fugue -m32 -o hello hello.obj hello_wrp.c
Note that this program is not a valid MIDI file due to the missing length fields after the 2F meta-events. I didn't optimize it at all for musicality, but if you still want to listen to it, here is an equivalent MIDI file:
00000000: 4d54 6864 0000 0006 0001 0002 0001 4d54 MThd..........MT
00000010: 726b 0000 001c 0090 4040 0190 3c40 0090 rk......@@..<@..
00000020: 4640 1b90 4440 0390 4240 0190 4740 00ff F@..D@..B@..G@..
00000030: 2f00 4d54 726b 0000 00dc 0090 5c40 0190 /.MTrk......\@..
00000040: 5d40 0190 5940 0090 5c40 0190 5840 0090 ]@..Y@..\@..X@..
00000050: 4e40 0190 4f40 0190 4b40 0090 4940 0190 N@..O@..K@..I@..
00000060: 4a40 0190 4640 0090 4a40 0190 4b40 0190 J@..F@..J@..K@..
00000070: 4740 0090 4840 0190 4940 0190 4a40 0190 G@..H@..I@..J@..
00000080: 4640 0090 4d40 0190 4e40 0190 4a40 0090 F@..M@..N@..J@..
00000090: 4c40 0190 4840 0090 4840 0190 4440 0090 L@..H@..H@..D@..
000000a0: 4840 0190 4440 0090 4540 0190 4640 0190 H@..D@..E@..F@..
000000b0: 4240 0090 4040 0190 4140 0190 3d40 0090 B@..@@..A@..=@..
000000c0: 3b40 0190 3c40 0190 3840 0090 2f40 0190 ;@..<@..8@../@..
000000d0: 3040 0190 2c40 0090 2740 0190 2340 0090 0@..,@..'@..#@..
000000e0: 2a40 0190 3140 0290 3240 0190 3740 0390 *@..1@..2@..7@..
000000f0: 3840 0190 3940 0190 3a40 0190 3f40 0190 8@..9@..:@..?@..
00000100: 4440 0190 4940 0190 4e40 0190 5640 0190 D@..I@..N@..V@..
00000110: 4f40 00ff 2f00 O@../.
Source Engine Console, 18 bytes
echo Hello, World!
You can't try it online unless Valve ports Half-Life 2 to WASM or something.
This script is pretty basic. It's perfectly valid to echo like this without quotes in the Source Engine.
The Source Engine is a game engine developed by Valve Software, and used in all their games after 2004 (until DOTA 2 in 2015). It provides basic scripting through console commands. You can test this by opening the developer console (enable in settings and press the ` key) and pasting the line.
Tested in Team Fortress 2, CS:GO and Source SDK Base 2013 (Multiplayer).
By inspecting some leftover E3 demo scripts in Half-Life 2, it's revealed there was a rem command which could be a shorter 17 bytes, but this is no longer present in the engine (and I assume that a rem doesn't count because it doesn't print anything). I've yet to test if it exists in Source 2004, but can confirm it's missing in Source 2013.
Technically, the console isn't STDOUT, however the only way to really output to STDOUT is by using the SDK to make a game of my own (obviously compiling to a very large size).
Shu, 931 bytes
IncreaseBy100 DecreaseBy10 DecreaseBy10 DecreaseBy10 IncreaseBy1 IncreaseBy1 PrintChar Clear IncreaseBy100 IncreaseBy1 PrintChar Clear IncreaseBy100 IncreaseBy10 DecreaseBy1 DecreaseBy1 PrintChar Clear IncreaseBy100 IncreaseBy10 DecreaseBy1 DecreaseBy1 PrintChar Clear IncreaseBy100 IncreaseBy10 IncreaseBy1 PrintChar Clear IncreaseBy10 IncreaseBy10 IncreaseBy10 IncreaseBy10 IncreaseBy1 IncreaseBy1 IncreaseBy1 IncreaseBy1 PrintChar Clear IncreaseBy10 IncreaseBy10 IncreaseBy10 IncreaseBy1 IncreaseBy1 PrintChar Clear IncreaseBy100 DecreaseBy10 DecreaseBy1 DecreaseBy1 DecreaseBy1 PrintChar Clear IncreaseBy100 IncreaseBy10 IncreaseBy1 PrintChar Clear IncreaseBy100 IncreaseBy10 IncreaseBy1 IncreaseBy1 IncreaseBy1 IncreaseBy1 PrintChar Clear IncreaseBy100 IncreaseBy10 DecreaseBy1 DecreaseBy1 PrintChar Clear IncreaseBy100 PrintChar Clear IncreaseBy10 IncreaseBy10 IncreaseBy10 IncreaseBy1 IncreaseBy1 IncreaseBy1 PrintChar Clear
Befalse, 43 30 bytes
"!dlroW ,o"\
/?$\!"Hell"/
\. /
If this gets down to 1 line, it would be much shorter without all the spaces on the second line. I’ll golf this further.
Thanks to Jo King♦ for golfing this further. I think it can be golfed even more now.
Taktentus, 22 bytes
@WY _= "Hello, World!"
I believe this is the shortest it can get. I would like to be proven wrong.
Bound, 48 bytes
72:c29:+c7+cc3+44:32:87:c24:+c3+c6-c8-33:13:({ds
Explanation:
Technically, Bound prints out "Hello, World!" with a blank program. But that's boring.
So instead, the program above basically creates the relevant ASCII numbers, then loops through them, converting them into chars and writing them. Someone better at math than me could probably golf this better, but I did my best.
Tetr4phobi4, 454 bytes
4OUR
fuor
fuor
4OUR
4OUR
4444
FO44
4OUR
4OUR
4OUR
4OUR
4OUR
fuor
4OUR
4OUR
4OUR
4OUR
4OUR
fuor
4OUR
four
4444
fuor
4OUR
4OUR
4OUR
4OUR
4OUR
4OUR
4OUR
four
4444
4444
fuor
4OUR
4OUR
4OUR
four
4444
FO44
4OUR
4OUR
4OUR
fuor
FOU4
4444
ffff
4OUR
4OUR
fuor
4444
FO44
4OUR
4OUR
4OUR
4OUR
4OUR
fuor
4OUR
4OUR
fuor
FOU4
four
4444
4OUR
4OUR
4OUR
4OUR
4OUR
4OUR
4444
4OUR
fuor
FOU4
four
4444
FOU4
FOU4
fuor
4OUR
4OUR
four
4444
FOU4
FOU4
4444
44UR
fuor
4OUR
four
4444
Ungolfed Code:
{44} H -> 72
4OUR$$$$fuor$$$$fuor$$$$4OUR$$$$4OUR {44} CELL[1] + 4 * 4 * 4 + 4 + 4
4444 {44} Print CELL[1]
FO44 {44} Next Cell
{44} e -> 101
4OUR$$$$4OUR$$$$4OUR$$$$4OUR$$$$4OUR {44} CELL[2] + 4 + 4 + 4 + 4 + 4
fuor$$$$4OUR$$$$4OUR$$$$4OUR$$$$4OUR {44} CELL[2] * 4 + 4 + 4 + 4 + 4
4OUR$$$$fuor$$$$4OUR$$$$four {44} CELL[2] + 4 * 4 + 4 / 4
4444 {44} Print CELL[2]
{44} l -> 108
fuor$$$$4OUR$$$$4OUR$$$$4OUR$$$$4OUR {44} CELL[2] * 4 + 4 + 4 + 4 + 4
4OUR$$$$4OUR$$$$4OUR$$$$four {44} CELL[2] + 4 + 4 + 4 / 4
4444$$$$4444 {44} Print CELL[2] twice
{44} o -> 111
fuor$$$$4OUR$$$$4OUR$$$$4OUR$$$$four {44} CELL[2] * 4 + 4 + 4 + 4 / 4
4444 {44} Print CELL[2]
FO44 {44} Next Cell
{44} , -> 44
4OUR$$$$4OUR$$$$4OUR$$$$fuor$$$$FOU4 {44} CELL[3] + 4 + 4 + 4 * 4 - 4
4444 {44} Print CELL[3]
{44} Whitespace -> 32
ffff {44} Reset CELL[3]
4OUR$$$$4OUR$$$$fuor {44} CELL[3] + 4 + 4 * 4
4444 {44} Print CELL[3]
FO44 {44} Next Cell
{44} W -> 87
4OUR$$$$4OUR$$$$4OUR$$$$4OUR$$$$4OUR {44} CELL[4] + 4 + 4 + 4 + 4 + 4
fuor$$$$4OUR$$$$4OUR$$$$fuor$$$$FOU4 {44} CELL[4] * 4 + 4 + 4 * 4 - 4
four {44} CELL[4] / 4
4444 {44} Print CELL[4]
{44} o -> 111
4OUR$$$$4OUR$$$$4OUR$$$$4OUR$$$$4OUR {44} CELL[4] + 4 + 4 + 4 + 4 + 4
4OUR {44} CELL[4] + 4
4444 {44} Print CELL[4]
{44} r -> 114
4OUR$$$$fuor$$$$FOU4$$$$four {44} CELL[4] + 4 * 4 - 4 / 4
4444 {44} Print CELL[4]
{44} l -> 108
FOU4$$$$FOU4$$$$fuor$$$$4OUR$$$$4OUR {44} CELL[4] - 4 - 4 * 4 + 4 + 4
four {44} CELL[4] / 4
4444 {44} Print CELL[4]
{44} d -> 100
FOU4$$$$FOU4 {44} CELL[4] - 4 - 4
4444 {44} Print CELL[4]
44UR {44} Prev Cell
{44} ! -> 33
fuor$$$$4OUR$$$$four {44} CELL[3] * 4 + 4 / 4
4444 {44} Print CELL[3]
Rutger, 23 bytes
Print["Hello, World!"];
An old language of mine, and fairly basic, but included for comprehension.
Mornington Crescent, 3328 3271 bytes
Take Northern Line to Leicester Square
Take Piccadilly Line to Heathrow Terminals 1, 2, 3
Take Piccadilly Line to Holborn
Take Central Line to Holborn
Take Central Line to Bank
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Parsons Green
Take District Line to Bank
Take District Line to Hammersmith
Take District Line to Bow Road
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Parsons Green
Take District Line to Parsons Green
Take District Line to Gunnersbury
Take District Line to Paddington
Take District Line to Hammersmith
Take District Line to Parsons Green
Take District Line to Bank
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Barking
Take District Line to Acton Town
Take Piccadilly Line to Holloway Road
Take Piccadilly Line to Acton Town
Take District Line to Acton Town
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Parsons Green
Take District Line to Elm Park
Take District Line to Acton Town
Take Piccadilly Line to Heathrow Terminal 5
Take Piccadilly Line to Acton Town
Take District Line to Acton Town
Take District Line to Parsons Green
Take District Line to Bank
Take District Line to Hammersmith
Take District Line to Plaistow
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Mile End
Take District Line to Elm Park
Take District Line to Mile End
Take District Line to Paddington
Take Circle Line to Paddington
Take Hammersmith & City Line to Barking
Take Hammersmith & City Line to Paddington
Take Circle Line to Paddington
Take Bakerloo Line to Piccadilly Circus
Take Bakerloo Line to Piccadilly Circus
Take Piccadilly Line to Turnpike Lane
Take Piccadilly Line to Turnpike Lane
Take Piccadilly Line to Leicester Square
Take Northern Line to Leicester Square
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Bank
Take District Line to Upminster
Take District Line to Bank
Take Circle Line to Bank
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Westminster
Take District Line to Gunnersbury
Take District Line to Bow Road
Take District Line to Bank
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Aldgate
Take Metropolitan Line to Chorleywood
Take Metropolitan Line to Aldgate
Take Circle Line to Aldgate
Take Circle Line to Bank
Take District Line to Bow Road
Take District Line to Hammersmith
Take District Line to Gunnersbury
Take District Line to Plaistow
Take District Line to Gunnersbury
Take District Line to Mile End
Take Hammersmith & City Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take District Line to Mile End
Take District Line to Bow Road
Take District Line to Mile End
Take Hammersmith & City Line to Paddington
Take Circle Line to Paddington
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Paddington
Take Circle Line to Bank
Take Circle Line to Bank
Take Northern Line to Mornington Crescent
-57 bytes by using shorter lines and transfer stations
Short explanation: I extract following strings:
Heathrow Terminals 1, 2, 3 (also extracting the numbers for some operations) -- -- Holloway Road --- Westminster - Chorleywood --- -
The strings are cut in pieces, using the left and right substring functions of Gunnersbury and Mile End with the integers of "Heathrow Terminals 1, 2, 3" and "Heathrow Terminal 5" (which can be extracted using Parsons Green).
Then I concatenate them in Paddington and append a "!" by using the char code of (space)+1.
Source:
// ### Milestone: Extract "He", 1, 2, ", " from "Heathrow Terminals 1, 2, 3"
// Get "Heathrow Terminals 1, 2, 3"
Take Northern Line to Leicester Square
Take Piccadilly Line to Heathrow Terminals 1, 2, 3
// Copy that string
Take Piccadilly Line to Holborn
Take Central Line to Holborn
Take Central Line to Bank // Hammersmith = "Heathrow Terminals 1, 2, 3"
// Prepare for left substring
Take District Line to Hammersmith
Take District Line to Gunnersbury // Gunnersbury = "Heathrow Terminals 1, 2, 3"
// Extract 1 from "Heathrow Terminals 1, 2, 3"
Take District Line to Hammersmith
Take District Line to Parsons Green // Acc = 1, Parsons Green = ", 2, 3"
// Copy and store it somewhere (Parsons Green only returns its stored value if it gets a number)
Take District Line to Bank // Hammersmith = 1
Take District Line to Hammersmith
Take District Line to Bow Road // Bow Road = 1
// Store it in Upminster for later calculations
Take District Line to Hammersmith
Take District Line to Upminster
// Store 2
Take District Line to Hammersmith
Take District Line to Parsons Green // Acc = ", 2, 3"
Take District Line to Parsons Green // Acc = 2, Parsons Green = ", 3"
// Get "He"
Take District Line to Gunnersbury
// Store it in Paddington for concatenation
Take District Line to Paddington // Paddington = "He"
// Extract ", " from ", 3"
Take District Line to Hammersmith
Take District Line to Parsons Green
Take District Line to Bank
Take District Line to Hammersmith
Take District Line to Gunnersbury // 2 was still stored in Gunnersbury
// Store it somewhere
Take District Line to Barking // Barking = ", "
// ### Milestone: Extract "llo" from "Holloway Road"
// Get "Holloway Road"
Take District Line to Acton Town
Take Piccadilly Line to Holloway Road
// Prepare for left substring
Take Piccadilly Line to Acton Town
Take District Line to Acton Town
Take District Line to Gunnersbury // Gunnersbury = "Holloway Road"
// Store 3
Take District Line to Hammersmith
Take District Line to Parsons Green // Acc = 3
Take District Line to Elm Park // Elm Park = 3
// Get 5 from "Heathrow Terminal 5"
Take District Line to Acton Town
Take Piccadilly Line to Heathrow Terminal 5
Take Piccadilly Line to Acton Town
Take District Line to Acton Town
Take District Line to Parsons Green // Acc = 5
// Copy and Store it somewhere
Take District Line to Bank
Take District Line to Hammersmith
Take District Line to Plaistow // Plaistow = 5
// Get "Hollo" from "Holloway Road"
Take District Line to Hammersmith
Take District Line to Gunnersbury // Gunnersbury = 5
// Prepare for right substring
Take District Line to Mile End // Mile End = "Hollo"
// Get "llo" from "Hollo"
Take District Line to Elm Park
Take District Line to Mile End
// Append it to "He"
Take District Line to Paddington
Take Circle Line to Paddington
// Append ", "
Take Hammersmith & City Line to Barking
Take Hammersmith & City Line to Paddington
Take Circle Line to Paddington // Paddington = "Hello, ", Acc = ", Hello, "
// ### Milestone: Get "!" by adding 1 to char value of " "
// Reverse acc
Take Bakerloo Line to Piccadilly Circus
Take Bakerloo Line to Piccadilly Circus
Take Piccadilly Line to Turnpike Lane
Take Piccadilly Line to Turnpike Lane
// Get ASCII value of " "
Take Piccadilly Line to Leicester Square
Take Northern Line to Leicester Square
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross // Acc = 32
// Add 1
Take Northern Line to Bank
Take Circle Line to Bank
Take District Line to Upminster // 1 was stored in Upminster earlier
Take District Line to Bank
Take Circle Line to Bank
Take Northern Line to Charing Cross // Charing Cross = 33
// ### Milestone: Append "W" from "Westminster"
// Get "Westminster"
Take Northern Line to Bank
Take Circle Line to Westminster
// Get "W"
Take District Line to Gunnersbury // Gunnersbury = "Westminster"
Take District Line to Bow Road
Take District Line to Bank
Take District Line to Hammersmith
Take District Line to Gunnersbury
// Append it to "Hello, "
Take District Line to Paddington
Take Circle Line to Paddington
// ### Milestone: Append "orl" and "d" from "Chorleywood"
// Get "Chorleywood"
Take Circle Line to Aldgate
Take Metropolitan Line to Chorleywood
// Save it for copy
Take Metropolitan Line to Aldgate
Take Circle Line to Aldgate
Take Circle Line to Bank
// Bank had 1 in it, so save it for later
Take District Line to Bow Road
// prepare left substring
Take District Line to Hammersmith
Take District Line to Gunnersbury
// get "Chorl"
Take District Line to Plaistow
Take District Line to Gunnersbury
// get "orl"
Take District Line to Mile End // 3 is still stored in Mile End
// append it to "Hello, W"
Take Hammersmith & City Line to Paddington
Take Circle Line to Paddington
// get "d"
Take Circle Line to Hammersmith
Take District Line to Mile End
Take District Line to Bow Road
Take District Line to Mile End
// append it to "Hello, Worl"
Take Hammersmith & City Line to Paddington
Take Circle Line to Paddington
// get "!" and append it to "Hello, World"
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Paddington
// go home
Take Circle Line to Bank
Take Circle Line to Bank
Take Northern Line to Mornington Crescent
Desmos, 41 bytes
[40,69,76,76,79,12,0,55,79,82,76,68,1]+32
Desmos doesn't support strings, so we return an array of integers representing the codepoints instead. There's no good way to view an entire array at once in Desmos, so instead you can check it by taking the output by wrapping it in parenthesis or storing it in a variable, then accessing (1-indexed) array items like a[1] or ([40,...,1]+32)[1]. Or just add 32 to the numbers in the array to check that they're right.
MathGolf, 14 bytes
'H╕○ô╣·'W╕7ÿ'!
Or alternatively just the plain and simply:
"Hello, World!
Explanation:
'H '# Push "H"
╕○ô # Push compressed "ello"
╣· # Push compressed ", "
'W '# Push "W"
╕7ÿ # Push compressed "orld"
'! '# Push "!"
# (implicitly output the entire stack joined together to STDOUT)
"Hello, World! "# Push "Hello, World!"
# (implicitly output the entire stack joined together to STDOUT)
Sardonyx, 44 bytes
require"stdio"
Stdio:write("Hello, world!")
Sardonyx is a small language created for the repl.it language jam. See the link above for documentation and more!
MAWP 2.0, 16 bytes
"Hello, World!":
CSS, 62 bytes:
*{display:none}html{display:flex}:after{content:'Hello World!'
This is the first pure CSS on here, I think.
Arn, 6 bytes
'Mh└a└
Explanation
Unpacked:
'yt, bs!
A compressed string where every word is capitalized. Output is implicit
Integral, 13 bytes
÷Hello, W╗ld!
Sadly, Integral cannot yet compress capital letters, so it could not do much compression.
÷ means start compressed string.
Ignoring punctuation and capitalization yields
Integral, 9 bytes
÷▓llo═╗ld
See also: Showcase
No, 1185 bytes
NOOOOOOOOOOOOOOO?Noooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo!Nooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo!Noooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo!Noooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo!Nooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo!Noooooooooooooooooooooooooooooooooooooooooooo!Noooooooooooooooooooooooooooooooo!Nooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo!Nooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo!Noooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo!Noooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo!Noooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo!Nooooooooooooooooooooooooooooooooo
NOOOOOOOO?yes
No is a line based language, meaning that execution starts on the last line and the other lines are referenced throughout the program. Each line consists of the following:
- A command, in the format of
Nfollowed by a number ofOs. The number ofOs determines which command is meant - One or more arguments, separated from the command with a
?and from each other with a!. The arguments can be one of four options:Nfollowed by \$n\$os. This represents a character with charcode \$n\$nfollowed by \$n\$os. This represents an integer \$n\$- \$m\$
ns followed by \$n\$.s and \$p\$Os. This represents a floating point number with integer part \$m\$ and a fraction part consisting of \$n\$ \$0\$s followed by \$p\$. For example,nnn.Ois \$3.01\$ yefollowed by \$n\$ss. This references the result found by running line \$n\$, 1-indexed.
This Hello, World program works by first running the last line:
NOOOOOOOO?yes
8 Os means that this is the output command, so this line outputs the value of line 1, the super long one. Line 1 works by using the „string builder“ command (NOOOOOOOOOOOOOOO or 15 Os) which takes a list of characters and returns them joined as a string. In this case, the characters form the String Hello, World! and so use the charcodes of those letters in order to return characters according to the 1st type of argument as specified above.
Cubically, 48 46 bytes
The previous best answer seems to have been 78 bytes long. I consider this a victory.
+35@⊕5@⊕1L@@|4U@-53@-0@R+43@+4@B'⊕3@-0@F-0@:5@
Found via computer search within a restricted subset of Cubically. Corresponding Most efficient cubifier answer by me.
Jsonnet (with -S), 15 characters
"Hello, World!"
(Where -S stands for --string, meaning “Expect a string, manifest as plain text”.)
Sample run:
bash-5.0$ jsonnet -Se '"Hello, World!"'
Hello, World!
evil, 70 bytes
aeeeaeeewueuueweeueeuewwaaaweaaewaeaawueweeeaeeewaaawueeueweeaweeeueuw
Brainetry, 651 bytes
This is a boring golf of the program that comes after this one.
a b c d
a b c d e f g h
a b c d e
a b c d e
a b
a b c d e
a b c d e f g h
a b
a b
a b c d
a b
a b c d e
a b c d e
a b c d e
a b c d e
a b c d e
a b c
a b c
a b c d e f g h i
a b c
a b c d e
a b c d e
a b c
a b c d e
a b c d e
a b c d e
a b c d e f g h i
a b
a b c d e
a b c d e f g
a b
a b
a b
a b c d
a b c d e f g
a b
a b
a b c d e f g
a b c d e f g
a b c d
a b c d
a b c d
a b c d e f g h
a b c d e f g
a b
a b c d e f g h i
a b c
a b c
a b c
a b c
a b c d e f g
a b c d
a b c d
a b c d
a b c d e f g
a b c d e
a b c d e
a b c d e
a b c d e
a b c d e
a b c d e
a b c d e f g
a b c
a b c
a b c d e
a b c d e f g
a b
a b
a b
a b
a b c d
a b c d e f g
Ungolfed but far more interesting to read:
This is a "short"
brainetry program that outputs, to stdout, the message
"Hello, World!" as per the
programming world standard. This standard
dictates that
a user that is trying
a language for the first time should write
as its
first program
this "Hello, World!" program.
Of course,
this becomes a repetitive task,
this becomes a repetitive task,
this becomes a repetitive task,
this becomes a repetitive task,
this becomes a repetitive task,
but that shouldn't
hinder you from
tackling this awesome challenge in the Brainetry programming language.
Me, myself and
I have found this language
to be quite amusing if
used to write
self-referential programs like this one.
Self-referential objects are objects that
I, personally, really enjoy. This
might be because I am just a weird person.
Or not!
Who knows? Certainly not me.
Dear reader, please rest assured that we
are ALMOST
at the
MIDDLE of
this self referential program.
Also, please refraing from adding the hyphen
between self
and referential
in the line above, as it is
NOT a typo, it is missing purposefully.
A very important skill
needed to write Brainetry
programs is one's imagination.
This is because each instruction needs one line
of Brainetry source code on its own.
Sounds easy?
I can assure you, it definitely is not easy.
I'm growing tired,
I'm growing unimaginative,
I'm growing old,
I'm writing code.
Oh boy, I wish that would've rhymed!
Even though I can't
really rhyme in English
because I am unskilled,
I can tell you that this is
exhibiting signs of schizophrenia, right?
At this point I am
pretty much talking to myself,
and no one is listening,
right? No one is listening,
right? I definitely hope not.
Now on to some decent source code,
this program works
by harnessing the
well known power of modular
arithmetic, a really nice thing mathematics has
bestowed upon
us, mortals.
This is,
for real,
a really awesome gift
from the mathematicians of yor to us.
Builds on top of this awesome brainfuck answer.
International Phonetic Esoteric Language, 16 bytes
"Hello, World!"o
"Hello, World!" (push "Hello, World!")
o (pop and print)
C64 BASIC, 16 characters, 20 bytes
If HELLO, WORLD! is fine.
0?"HELLO, WORLD"
evil, 62 58 bytes
no I haven't read through the over 500 other answers to make sure I'm adding something new
Found via computer search within a restricted subset of evil.
aeeaeayekeulaaaweevuewpuuuwwlweaaewguwuewpaaawaaawpweeawgw
Uses the instructions:
a increment the accumulator
u decrement the accumulator
z accumulator = 0
e weave operator (bitwise 01234567 to 20416375 on the accumulator)
w write character
k set the first pental cell to the accumulator
g set the accumulator to the first pental cell
v swap the accumulator and the first pental cell
y set the first wheel cell to the accumulator
l set the accumulator to the first wheel cell
p swap the accumulator and the first wheel cell
The pental is a thingy that stores 5 bytes and can be rotated; I don't rotate it though. The wheel is a circular list that starts at 1 element; I don't add/remove to/from it.
Cood, 378 bytes
I want 72 of this
Im very hungry
More 29 of this
Im very hungry
More 7 of this
Im very hungry
Im very hungry
More 3 of this
Im very hungry
Less 67 of this
Im very hungry
Less 12 of this
Im very hungry
More 55 of this
Im very hungry
More 24 of this
Im very hungry
More 3 of this
Im very hungry
Less 6 of this
Im very hungry
Less 8 of this
Im very hungry
Less 67 of this
Im hungry
><>, 25 bytes
!v"!dlroW ,olleH"!
o>l?!;
My second answer in this language so far, started learning only today, thought this would be a good starting point
evil, 70 bytes
aeeeaeeewueuueweeueeuewwaaaweaaewaeaawueweeeaeeewaaawueeueweeaweeeueuw
It uses the following four commands:
a - increment the register
u - decrement the register
e - interweave the register's bits (01234567 -> 20416375)
w - write the value of the register as an ASCII character
KRC, 17 bytes
This defines a function returning the string "Hello, World!". No trailing newline because it's shorter. (I've made a repl.it for KRC.)
f="Hello, World!"
Demo:
$ ./krc demo/hello
Kent Recursive Calculator 1.0
revised 2016.03.31
/h for help
krc> f!
Hello, World!krc>
Roj, 18 bytes
I love this simple BASIC dialect ...
out"Hello, World!"
Explanation
out $ Output $
"Hello, World!" $ the string "Hello, World" $
W d, 12 10 bytes (SBCS)
.s*♪╧T≈╪√ù
Explanation
This program is a compressed program. After decompression this becomes:
J=QwTI[5mRb`
After string-decompression:
Hello, World!"
After quote auto-completion:
"Hello, World!"
After which it is implicitly output.
naz, 64 bytes
9a8m1o3d4m5a1o7a2o3a1o3d7a1o9s3s1o3m9s1o9a9a6a1o3a1o6s1o8s1o3d1o
naz is my new language where every command is given by a number and a letter. Programs operate on a single register whose value can be between -127 and 127, inclusive.
This program uses the instructions for add, subtract, multiply, and divide to set the register to the ASCII value of each character in the string Hello, World!, then outputs that character with the o instruction. In the case of the Ls in Hello, once the register is set to the correct value, 2o is used to output twice instead of just once.
tq, 15 bytes
"Hello, World!"
Pretty much just defines a list with the only item as the string "Hello, World!".
Symbolic Raku, 34 bytes
$_='(%,,/ @)/),$!'~^'`@@@@`~@[@@'
My newest language, though it's not too original. This is inspired by FlipTack's Symbolic Python, which bans the use of alphanumeric characters, but otherwise executes as Python code. In this case, I've used the language Raku (previously known as Perl 6), which takes input through the $_ and similarly outputs it's contents at the end of execution. Symbolic Raku does not have an extra eval operator like Symbolic Python, but it is still Turing complete through the other operators and symbols that Raku provides.
In this case, we use the string xor operator (~^), which takes two strings to produce the string Hello, World!, which is obviously banned from hardcoding because it contains letters. A shortcut for producing these strings is included in the reference implementation through the -g=string flag. Currently, this is not yet on TIO, so the link goes to the Raku language instead.
Spice, 20 bytes
@OUT "Hello, World!"
Explanation
Should be pretty straight forward what's happening, but we use some undefined behaviour to shave off 2 bytes (interpreter version 1.1.0.0, which is current at time of submission). The program should read:
;@
OUT "Hello, World!";
as per the spec, but we drop the ; as we only have one instruction and don't need to define an instruction separator, and so also have no trailing ; at the end.
Ral, 103 bytes
What better way to introduce a new language than by posting the 768th "Hello, World!"?
Hand-made code, can probably be improved a lot.
11+:+:+:0=1+:+:+::+:.+0*/-::1+.0*+:::..1+1+1+::.0*:+:+:11+1+:+:++..10*1+1+1+:+:+:+-..1+1+1+...0*:+:+1+.
Visual Basic Script, 21 bytes
MsgBox"Hello, World!"
You can try it by making a .txt file with that text in it, changing the extension to .vbs and running it.
Intcode, 83 72 70 bytes
204,8,109,1,1205,8,0,99,72,101,108,108,111,44,32,87,111,114,108,100,33
Old 83 byte version:
1106,0,17,72,101,108,108,111,44,32,87,111,114,108,100,33,0,204,3,109,1,1205,3,17,99
Plain English 901 308 bytes:
To run:
Start up.
Put "Hello, World!" in a b buffer.
Call "kernel32.dll" "GetStdHandle" with -11 returning a h number.
Call "kernel32.dll" "WriteFile" with the h
and the b's first and the b's length
and a r number's whereabouts and 0 returning the r.
Call "kernel32.dll" "CloseHandle" with the h.
Shut down.
ungolfed, with comments and error traps:
To run:
Start up.
Put "Hello, World!" in a buffer.
Write the buffer to stdout.
Shut down.
To write a buffer to stdout:
Clear the i/o error.
Get stdout returning a standard handle.
If the i/o error is not blank, exit.
Call "kernel32.dll" "WriteFile" with the standard handle
and the buffer's first and the buffer's length
and a number's whereabouts and 0 returning the number.
Call "kernel32.dll" "CloseHandle" with the standard handle.
If the number is not 0, exit.
Put "Error writing to the standard error stream." into the i/o error.
To get stdout returning a standard handle:
\ std_input_handle = -10; std_output_handle = -11
Call "kernel32.dll" "GetStdHandle"
with -11 [std_output_handle]
returning the standard handle.
If the standard handle is -1 [invalid_handle_value],
put "Error opening the standard output stream." into the i/o error; exit.
The Plain English IDE is available at github.com/Folds/english. The IDE runs on Windows. It compiles to 32-bit x86 code.
Write a buffer to stdout and Get stdout returning a standard handle seem like good candidates for adding to Plain English's library. Similar routines already exist for stderr.
Wren, 29 bytes
System.print("Hello, World!")
Explanation
System.print( ) // Output the following string:
"Hello, World!" // "Hello, World!"
CRPL and its sister language PRPL, 21 bytes
Bit of an obscure language, but the official tutorial doesn't contain a Hello World program so this at least is worth something.
"Hello, World!" Trace
"Hello, World!" pushes the string Hello, World! to the stack, and Trace pops an item from the stack and add it to the trace log, the closest thing the language has to SDTOUT or a console.
Alas, for this language is too obscure for Dennis's gadget; however, I have written the following interpreter in JS with all the complexity needed for this demo. I may one day make it support more.
var code = '"Hello, world!" Trace';
var stack = [];
var vars = Object.create(null);
var literals = [];
code = code.replace(/"(.*?)"/g, (m, $1) => 'lit' + [literals.length, literals.push($1)][0]).split(/\s/);
for (var token of code) {
if (token.match(/^lit(\d+)$/)) {
stack.push(literals[token.slice(3)]);
} else if (token.match(/^-?\d+.?\d*/)) {
stack.push(+token);
} else if (token.startsWith('<-')) {
stack.push(vars[token.slice(2)]);
} else if (token.startsWith('->')) {
vars['v' + token.slice(2)] = stack.pop();
} else {
switch(token) {
case 'Trace5':
console.log(stack.pop());
case 'Trace4':
console.log(stack.pop());
case 'Trace3':
console.log(stack.pop());
case 'Trace2':
console.log(stack.pop());
case 'Trace':
console.log(stack.pop());
break;
default:
throw new Error(token + 'is not implemented.');
}
}
}
Java, 82 bytes:
class Main{public static void main(String[]a){System.out.print("Hello, World!");}}
Ruby, 19 bytes
puts"Hello, World!"
Intcode, 201 bytes
72,4,0,-1,1101,1,100,3,4,3,1101,100,8,3,4,3,4,3,1101,100,11,3,4,3,1101,40,4,3,4,3,1101,30,2,3,4,3,1101,80,7,3,4,3,1101,100,11,3,4,3,1101,100,14,3,4,3,1101,100,8,3,4,3,1101,98,2,3,4,3,1101,30,3,3,4,3,99
And this kids is why we don't golf using languages made up for programming competitions.
Intcode
Since Advent of Code will inevitably be adding more features to Intcode as this year's event progresses, I'll just treat the separate revisions as different languages, and add to this if a new one makes it shorter.
Day 2, N/A Bytes
Having no real way of outputting multiple values yet, the version in day 2 can't do a proper Hello World.
There is technically this 42-byte solution, but it feels like cheating because I'm pretty sure no interpreter can run it:
1,3,5,0,99,5735816763073854918203775149089
This program copies that really long number to memory location 0 (which counts as output) and then halts. The really long number happens to be Hello, World! when read in bigendian form as a string.
Day 5, 89 Bytes
In day 5, dedicated I/O instructions are added, so a proper Hello World is possible. The ability to use immediate values doesn't hurt either.
104,72,104,101,104,108,4,5,104,111,104,44,104,32,104,87,4,9,104,114,4,5,104,100,104,33,99
Poetic, 324 bytes
the i/o case of HELLO
a good i/o drill is:say a HELLO
i said HELLO,saying it in Poetic
i code in Poetic,a good way to write a poem
a special piece for you
a special piece in machine writing for you
i already think i do pretty well writing for the machine poem
Poetic program syntax is nice
a perfect sorta poem and a program
This is nothing original, it's a straight port of the brilliant brainfuck answer from @KSab...but it turns out that it's the shortest representation of Hello, World! that I can find in Poetic. If anyone can golf this, please let me know; I'm definitely interested if someone can beat this solution!
Keg, 15 8 bytes
«H%c¡|,!
Wow. It's been a while since I posted this. And boy oh boy how Keg has changed.
Explained
« #Start a special compressed string
H% #String compression code (SCC) for "Hello"
c¡ #SCC for "World"
|,! #Join "Hello" and "World" with a `,` and `!` to create "Hello, World!"
« #Close the special compressed string and implicitly print
Old Program
Hello\, World\!
Keg is a newly created stack-based, golfing language, which focuses on only having symbols as functions and keywords. As such, alphanumeric characters are pushed to the stack as letters (even spaces are pushed, meaning that they aren't NOPs).
Symbols that would normally be commands can be escaped using \'s.
Simula (cim), 24 bytes
OutText("Hello, World!")
Over 750 answers and we can still find languages not yet submitted. Wowsers.
1+, 87 83 bytes
11+""+"""+"/*^/"\+""+";\\+"*"1+;/+""";;(|1+1+1+)";/^""1()"+()+"1+";+^;;\";();/;;1+;
This should be very golfable, but it is hard to golf 1+ directly.
Ada, 68 bytes (-15)
Noticed there wasn't a plain Ada answer yet, only one with GNAT, so I made one:
with Text_IO;procedure H is
begin
Text_IO.Put("Hello, World!");end;
Thanks to 3D1T0R and breadbox for improving this!
Cascade, 23 bytes
}ro
"""
l,H
d e
!Wl
"ol
This is about as compressed as it is possible to get. The } instruction is the put instruction, but it doesn't really matter what it does since we're just using it to execute the three of the instructions below it, all of which are ".
First we execute the left, which wraps around to be the rightmost column, printing Hello. Then right (which is the center column), printing , Wor. Finally directly below in the left column, we print ld!, terminating the string literal early rather than wrapping, to avoid printing the } as well.
Verbosity v2, 152 bytes
IncludeTypePackage<OutputSystem>
IncludeTypePackage<StringArray>
outpu=OutputSystem:NewOutput<DEFAULT>
OutputSystem:DisplayAsText<outpu;"Hello, World!">
Introducing Verbosity v2! This is a short as it gets, as variable names must be 5 characters or more. The ungolfed version isn't much different:
IncludeTypePackage<OutputSystem>
IncludeTypePackage<StringArray>
output = OutputSystem:NewOutput<DEFAULT>
OutputSystem:DisplayAsText<output; "Hello, World!">
And it's pretty obvious how it works.
Pxem, 0+17=17 bytes
Using the filename as data without counting the length is cheating. Therefore it is 17 bytes. (It even uses the filename extension as part of the program!)
Save the program as
Hello, World!.pxe
and the file contents should be empty.
Nandy, 159B
Simply sets the stack to bits 0 and 1 and then puts them in the output stack.
o::#o>oo>o>oooo>oo>oo>o>o>o>o>oo>o>oo>ooo>oo>o>oo>ooo>oo>o>oooo>oo>o>o>oo>oooo>o>oooooo>o>o>o>o>ooo>o>oo>o>oooo>o>ooo>oo>o>oo>oo>o>oo>ooo>oo>oo>o>oooo>o>oooo>o
anyfix, 14 bytes
“Hello, World!”
Simply the string, pushed onto the stack. Really boring.
(By the way, just use postfix for all operators in anyfix; this leads to the least confusion compared to infix modes and prefix modes, and anyfix is the easiest to understand in the postfix mode.)
Jasmin, 251 219 165 bytes
Jasmin is an assembler for the Java Virtual Machine. It takes ASCII descriptions of Java classes, written in a simple assembler-like syntax using the Java Virtual Machine instruction set. It converts them into binary Java class files, suitable for loading by a Java runtime system.
.class H
.super sun/misc/MessageUtils
.method public static main([Ljava/lang/String;)V
ldc "Hello, World!"
invokestatic H/out(Ljava/lang/String;)V
return
.end method
Compile with java -jar jasmin.jar H.j. Execute byte code with java H.
This program is based off the "Hello, World!" program by pearce at SJSU. Golfing mainly entailed removing comments and unnecessary white space (this was true four years ago but, I have since made substantial changes). Something interesting I noted while golfing it is that a class file doesn't have to include a constructor. When a normal Java program doesn't have a constructor, a default is provided but. When there is no constructor in Jasmin, the resulting class file doesn't have one either. This would probably result in issues when trying to instantiate the class but, for the purpose of executing the main method, it works fine.
4 Years Later Golfs
- I found out about the static method
sun.misc.MessageUtils.outfrom this answer. Using this instead ofSystem.out.printsaves quite a few bytes because calling instance methods is rather expensive in Jasmin. - Extending
sun.misc.MessageUtilssaves even more bytes on thatinvokestaticbecause I can writeHinstead of the fully qualified class name. Omitting the.superline is not an option in Jasmin so, the other option would be extending a class with a short fully qualified name (e.g.java/io/File.
Non-competing golfs
You can omit
returnif you invoke the class withjava -noverify. This causes the JVM to segfault after printing "Hello, Word!". (-7 bytes)I think I should be able to use a static initializer instead of a main method if I execute the class file with Java6 but, I can't get this to work. It would be done by replacing the header for
mainwith.method public static <clinit>()V.(potentially -15 bytes)
EBCDIC Punched Card, 13 bytes
Disk Operating System/360, also DOS/360, or simply DOS, is a discontinued operating system for IBM mainframes. It was announced by IBM on the last day of 1964, and it was first delivered in June 1966.In its time, DOS/360 was the most widely used operating system in the world.
A typical configuration might consist of a S/360 model 30 with 32KB memory and the decimal instruction set, an IBM 2540 card reader/card punch, an IBM 1403 printer, two or three IBM 2311 disks, two IBM 2415 magnetic tape drives, and the 1052-7 console.
- Generator: http://www.kloth.net/services/cardpunch.php
- Scanner: https://www.masswerk.at/cardreader/
Triangular, 55 bytes
6\6+@*8\C::6--::@\@#2"+3^82*@3/#-<*#+/@"#+F<3/3@@#-7:*<
This one took a while. Also will be very difficult to golf, since there is zero no-ops in it, meaning you'll have to save 10 bytes to get it to a size 9 triangle in order to save any bytes
This expands out into this size 10 triangle:
6
\ 6
+ @ *
8 \ C :
: 6 - - :
: @ \ @ # 2
" + 3 ^ 8 2 *
@ 3 / # - < * #
+ / @ " # + F < 3
/ 3 @ @ # - 7 : * <
How it works
Note: this ignores all control flow characters and just looks at what gets run in order
66* Push 36
:: Duplicate it twice
2*# Output H, popping it
3* Multiplies by 3, yielding 108
: Duplicates
-7# Outputs e, popping it
@@ Outputs l twice, without popping it
3+@ Outputs o, without popping it
" Swaps, putting 36 at the top of the stack
:: Duplicates it twice
8+@ Outputs comma, without popping
C-# Outputs space, popping the top of the stack
2*F+# Outputs W, popping it
" Swaps back around, putting 111 at the top of the stack
@ Outputs o, without popping
3+@ Outputs r, without popping
6-@ Outputs l, without popping
8-# Outputs d, whilst popping
3-@ Subtracts 3 from 36, giving !, and outputs it
6 Pushes 6, which does nothing
C++ (gcc), 40 bytes
main(){__builtin_puts("Hello, World!");}
Using builtins are shorter since #include takes up a lot of bytes. I believe this solution is optimal.
33, 16 bytes
"Hello, World!"p
But that's boring, isn't it? Let's try with functions, instead.
56 bytes
{"Hello"p}'Hello'{", "p}', '{"World"p}'World'{"!"pi}qqqq
Here's something to be explained.
The string registers are initialised to "" when the interpreter starts. When the
interpreter encounters a {, it copies all the code until the matching } and
stores it as a function, labelled as what the destination string register was at
the time (The destination string is set by single quotes).
Changes to the registers persist when changing stack frames (is that the right term?), so the explanation looks like this:
{ (Creates function "")
"Hello" (Stores "Hello" in the source string register)
p (Prints what is in the source string register)
}'Hello'{ (Creates function "Hello")
", "p (Prints ", " after storing it in the source string register)
}', '{ (Creates function ", ")
"World"p (Prints "World" after storing it in the source string register)
}'World'{ (Creates function "World")
"!"p (Prints "!")
i (Prints a newline)
}q (Calls function "")
q (Calls function "Hello")
q (Calls function ", ")
q (Calls function "World")
This is a language I created. The source is in the link. I haven't made a Windows release of the interpreter yet, because I cannot figure out how to cross-compile. If you're on Windows, you'll have to compile it yourself.
Incalculate (2.0), 21 bytes
"!dlroW ,olleH"[pov?]
Probably won't get shorter than this.
Incalculate is an esoteric language I have written for fun, don't expect anything fancy. It uses 3 stacks for storage.
Keg, 15 bytes
Hello\, world\!
Keg pushes all of the unrecognized commands onto the stack (with , and ! escaped). After the program terminates, it prints the content of the stack.
Shakespeare Programming Language, 755 749 715 612 605 592 bytes
-34 bytes thanks to jimmy23013
-And a whole 107 bytes more! Wow!
,.Ajax,.Puck,.Act I:.Scene I:.[Enter Ajax and Puck]Ajax:You big big big cat!Puck:You is the sum ofI the square ofI!Speak thy!You is the square ofthe sum ofI a big cat!Ajax:Remember the sum oftwice twice you a cat!Remember I!You is the sum ofI you!Puck:You is the sum ofyou a cat!Speak thy!You is the sum ofa big cat a cat!Ajax:Speak thy!Speak thy!Remember you!You is the sum ofyou I!Speak thy!Remember the sum ofyou I!Remember you!You big big big big big cat!Puck:You is the sum ofI twice twice you!Speak thy!Ajax:Remember the sum oftwice I a pig!Scene V:.Ajax:Speak thy!Recall!Let usScene V!
Non-erroring version, 626 bytes
,.Ajax,.Puck,.Act I:.Scene I:.[Enter Ajax and Puck]Ajax:Remember I!You big big big cat!Puck:You is the sum ofI the square ofI!Speak thy!You is the square ofthe sum ofI a big cat!Ajax:Remember the sum oftwice twice you a cat!Remember I!You is the sum ofI you!Puck:You is the sum ofyou a cat!Speak thy!You is the sum ofa big cat a cat!Ajax:Speak thy!Speak thy!Remember you!You is the sum ofyou I!Speak thy!Remember the sum ofyou I!Remember you!You big big big big big cat!Puck:You is the sum ofI twice twice you!Speak thy!Ajax:Remember the sum oftwice I a pig!Scene V:.Ajax:Speak thy!Recall!Be you nicer zero?If solet usscene V!
An improvement over the previous community wiki answer.
Explanation:
,.Ajax,.Puck,.Act I:.Scene I:.[Enter Ajax and Puck] #Initialise Ajax and Puck
Ajax:You big big big cat! #Set Puck to 8
Puck:You is the sum of I the square of I! #Set Ajax to 8+8*8=72 ('H')
Speak thy! #Print 'H'
You is the square of the sum of I a big cat! #Set Ajax to (8+2)^2=100 ('d')
Ajax:Remember the sum of twice twice you a cat! #Push 2*2*8+1=33 ('!') to Puck's stack
Remember I! #Push 'd' to Puck's stack
You is the sum of I you! #Set Puck to 100+8 ('l')
Puck:You is the sum of you a cat! #Set Ajax to 100+1=101 ('e')
Speak thy! #Print 'e'
You is the sum of a big cat a cat! #Set Ajax to 3
Ajax:Speak thy!Speak thy! #Print 'll'
Remember you! #Push 'l' to Puck's stack
You is the sum of you I!Speak thy! #Set Puck to 108+3=111('o') and print it
Remember the sum of you I! #Push 111+3=114 ('r') to Puck's stack
Remember you! #Push 111 ('o') to Puck's stack
You big big big big big cat! #Set Puck to 32 (' ')
Puck:You is the sum of I twice twice you! #Set Ajax to 32+12=44 (',')
Speak thy! #Print ','
Ajax:Remember the sum of twice I a pig! #Push 2*44-1=87 ('W') to Puck's stack
Scene V:.Ajax:Speak thy!Recall!Let us Scene V! #Print and pop repeatedly until Puck's stack is empty (', World!')
Turing Machine But Way Worse, 853 bytes
0 0 0 1 1 0 0
0 1 1 1 2 0 0
0 2 0 1 3 0 0
0 3 0 1 4 0 0
0 4 1 1 5 1 0
0 5 1 1 6 0 0
0 6 0 1 7 0 0
0 7 1 0 8 0 0
0 8 0 0 9 0 0
1 9 1 0 a 0 0
1 a 0 0 b 0 0
0 b 0 0 c 0 0
0 c 1 1 d 1 0
0 d 0 1 e 0 0
0 e 1 1 f 0 0
1 f 1 1 g 0 0
0 g 0 1 g 0 0
1 g 0 0 h 1 0
0 h 0 1 i 1 0
0 i 1 0 i 0 0
1 i 1 1 j 1 0
1 j 1 1 k 0 0
1 k 1 1 l 0 0
0 l 0 1 m 0 0
0 m 0 1 n 0 0
0 n 1 1 o 0 0
0 o 0 1 p 0 0
0 p 1 1 q 0 0
0 q 1 0 r 1 0
1 r 0 1 s 0 0
1 s 0 1 t 1 0
0 t 0 1 u 0 0
0 u 1 0 v 0 0
0 v 0 0 v 0 0
1 v 1 0 w 0 0
0 w 0 0 w 0 0
1 w 1 0 x 0 0
1 x 1 0 x 0 0
0 x 1 1 y 0 0
1 y 0 0 z 0 0
1 z 1 0 A 0 0
1 A 0 1 B 1 0
1 B 0 1 C 0 0
0 C 1 0 D 0 0
0 D 0 0 E 0 0
0 E 1 1 F 1 0
0 F 1 1 G 0 0
1 G 0 1 G 0 0
0 G 0 0 H 0 0
0 H 0 0 I 0 0
0 I 1 0 J 1 0
0 J 1 0 J 0 0
1 J 0 1 K 0 0
1 K 1 1 K 0 0
0 K 0 0 L 0 0
1 L 0 0 M 1 0
1 M 1 0 N 0 0
1 N 0 1 O 1 0
1 O 0 1 P 0 0
0 P 0 1 P 0 0
1 P 1 1 P 1 1
VBA, 15
?"Hello, World!
Try it, for instance, in the "Immediate" panel of the development window in MS Excel.
ARMv7 machine language on Linux, 40 36 32 bytes
0: fa000002 blx 12 ;put string addr in lr; thumb mode
4: 48 65 6c 6c 6f "Hello, World!\0"
2c 20 57 6f 72
6c 64 21 00
12: 2001 movs r0, #1 ;stdout is fd=1
14: 220d movs r2, #13 ;length of string
16: 4671 mov r1, lr ;put string addr in r1
18: 2704 movs r7, #4 ;select write() syscall
1a: df00 svc 0 ;syscall
1c: 2701 movs r7, #1 ;select exit() syscall
1e: df00 svc 0 ;syscall
To try this out on a Raspberry Pi or Android device with GNURoot, compile and run the following
const char main[]="\2\0\0\xfaHello, World!\0\1 \r\"qF\4'\0\xdf\1'\0\xdf";
Bootable x86 machine code, 512 bytes
Hexdump:
31 c9 8e d9 be 10 7c b1 0d ac b4 0e cd 10 e2 f9 |1.....|.........|
48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 21 00 00 00 |Hello, World!...|
*
00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
* represents 464 bytes of padding required to place the bootable flag (55 aa) at offset 510.
This is the same as the following assembler code, which can be assembled using nasm hello.asm -f bin -o hello.bin, assuming the assembler code is in a file called hello.asm
[ORG 0x7C00]
[BITS 16]
xor cx, cx ; Set cx to 0
mov ds, cx ; Set ds to cx (0)
mov si, msg ; Set si to the address of the message
mov cl, 13 ; Set cx to 13 (the size of the message)
print_loop: ; For each character in the message:
lodsb ; Set al to the character
mov ah, 0x0E ; Set ah to 0x0E
int 0x10 ; Call interrupt 0x10 (video services) with ah set to 0x0E (print al to screen)
loop print_loop ; Decrement cx and continue the loop if cx > 0
msg:
db 'Hello, World!'
times 510 - ($-$$) db 0
db 0x55
db 0xAA
Running
The code can be runned with QEMU using the following command, assuming the binary code is saved in a file called hello.bin:
qemu-system-x86_64 -drive format=raw,file=hello.bin
VTL-2, 21 bytes
1 ?="Hello, World!"
? is the I/O system variable in VTL-2. Byte count may seem off, but line numbers are always two bytes, and the CR at the end of the line is mandatory and counted. Space between line numbers and commands is also mandatory.
legit, 1 commit, 67 bytes (commit messages), 179 + 3 = 182 bytes (repository)
Commit tree:
* 63c5d78 "!dlroW ,olleH" put put put put put put put put put put put put put
The program is quite boring -- commits are expensive, and the messages are compressed, so there's little incentive to use proper control flow.
The program in its proper representation consists of 4 files:
.git/HEAD (21 bytes, an empty file here is still accepted by the interpreter, but git does not recognize the repository):
ref:refs/heads/master
.git/refs/heads/master (40 bytes):
63c5d7873f5b0ede65885bfdfd5c935827d6752a
.git/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 (15 bytes, xxd):
00000000: 78da 2b29 4a4d 5530 6000 000a 2c02 01 x.+)JMU0`...,..
.git/objects/63/c5d7873f5b0ede65885bfdfd5c935827d6752a (103 bytes, xxd):
00000000: 78da 04c1 4501 c030 0c00 c0bd a722 0e4a x...E..0.....".J
00000010: 4137 6366 f0df bbf6 dcf7 f983 80a1 f89e A7cf............
00000020: be07 6c34 52d7 32c6 b6e1 beb1 dab3 ef09 ..l4R.2.........
00000030: 9b41 3bb6 a83a 347d 8fe6 b1ac ff6f 3a1f .A;..:4}.....o:.
00000040: f090 6763 c705 31a4 2415 cae5 5252 4cc9 ..gc..1.$...RRL.
00000050: 29ca 0f57 d0c9 cfc9 49f5 5052 2828 2d21 )..W....I.PR((-!
00000060: 1503 00bd ca30 75 .....0u
]=[, 164 bytes
[=======[==]]=[[=[[=]]=[[=[[========]]][]=[]=[[=[=[=]]][]=[[====[====]]=[[===[==]]=[[========[=======]]=[]=[[=[=[====]]=[[=[[========]]=[[=[[]]=[[===[===]]=[[=[]]=[
]=[ was a language which only uses the symbols ], =, and [.
The ]=[ interpreter is written in 12-Basic.
Bitwise Cyclic Tag But Way Worse, 324 bytes
1111111111111111111111111111111111111111111111111111111110110101101010101110101101101110111010101110111010101110111110101101110101010110101010101011011011110111011111011110101101011101110101011101011010101011010101011n0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
VBS (Windows Script Host), 26 bytes
WScript.Echo "Hello, World!"
JS (Windows Script Host), 25 bytes
WSH.Echo("Hello, World!")
I don't know if someone did already post Windows Script Host JS.
K5+iKe, 44 bytes
iKe is a way to "rapidly write event-driven graphical programs in K" (to quote the README).
draw:,(0 0;`cga;~,/'+text@0+"Hello, World!")
To try it, go here, replace the text in the box with the above program, and hit the big right arrow button.
A Pear Tree, 25 bytes
print'Hello, World!'#»G²Ú
A Pear Tree programs are written in an arbitrary ASCII-consistent 8-bit character set; for codepoint 128 and above, the interpreter cares about the codepoint numerically, not the represented character. TIO uses Latin-1, so the above program is actually a Latin-1 decoding of the codepoints that make it up.
Explanation
print'Hello, World!' should be fairly self-explanatory. However, there is some choice available here; print"Hello, World!" would have been the same length, but leads to the resulting checksum being less printable.
The checksum is the interesting part of the program. In this program, that's the #»G²Ú at the end. For golfing, you'd want the shortest workable checksum, which is normally 4 or 5 bytes long. (It's a 32-bit checksum, so 4 bytes would normally be enough, but the checksum is also executed as code, and thus needs to be a valid command; the # starts a comment, so # plus 4 bytes is normally enough to add a checksum to anything.) The checksum doesn't have to cover the whole code, but does have to cover a prefix of the part of the code that actually runs; adding comments at the end is terser than adding them at the start, and we want to execute the entire program, so for this program, I caused the checksum to cover the entire program.
Although a Hello World program doesn't benefit much from the checksumming, we could have made use of the checksum behaviour to embed the Hello World program into a larger document or write multiple copies of the program so that if one gets corrupted, the others can still run. This makes A Pear Tree considerably more robust than most languages are.
JVM bytecode (OpenJDK asmtools JASM), 235 bytes
public class h {public static Method main:"([Ljava/lang/String;)V" stack 2 locals 1 {getstatic java/lang/System.out:"Ljava/io/PrintStream;";ldc "Hello, World!";invokevirtual java/io/PrintStream.println:"(Ljava/lang/String;)V";return;}}
Ungolfed
public class h {
public static Method main:"([Ljava/lang/String;)V" stack 2 locals 1 {
getstatic java/lang/System.out:"Ljava/io/PrintStream;";
ldc "Hello, World!";
invokevirtual java/io/PrintStream.println:"(Ljava/lang/String;)V";
return;
}
}
Pretty much the same thing as Jasmin, just with a different syntax.
whenyouaccidentallylose100endorsementsinnationstates - 900 761 728 552 260 bytes
20280782166
114
fff#dff#dfffff#dfffffffffff#dfffffffffffffff#dffffffffffffffffffffffffffffffffff#dfffffffff#dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff#dffffffffffffffffffffffffff#dfffffffffffffffffff#dffff#dffffffffff#dfffffffffff#d
Golfed down to 761 bytes by increasing the brute-forcer to seeds up to 9999, instead of 999
Golfed down to 728 bytes by increasing the brute-forcer to seeds up to 99999, instead of 9999
Golfed down to 552 bytes by increasing the brute-forcer to seeds up to 999999, instead of 99999
Golfed down to 260 bytes with the help of @ASCII_only
axo, 22 bytes
"!dlroW ,olleH"[>[(#<\
Pushes "Hello, World!" to the stack "!dlroW ,olleH"
Duplicates top of stack afterward, which results in "HHello, World!" [
Moves to the right >.
Duplicates it again, which results in "HHHello, World!" [
Outputs "H" while popping from the stack, so the stack is "HHello, World!" (
Pops the top of the stack, results in "Hello, World!" #
Moves left <
Pops the top of the stack, results in "ello, World!" #
Outputs "e" while popping from the stack, which results in STDOUT being "He" and the stack being "llo, World!" (
Duplicates the top of the stack, resulting in the stack being "lllo, World!" [
Moves right. >
And I'm sure you can figure out the rest. If you can't, I'll update a more indepth-explanation soon.
C# (Visual C# Interactive Compiler), 22 bytes
Write("Hello, World!")
I realize this question has an existing C# answer which presumably uses the traditional csc.exe compiler. This answers uses the csi.exe command-line REPL.
Clam, 15 bytes
p+[[ua+ua,]"!"]
Oh boy, he did it again, he started another language.
Explanation
All functions and operators in Clam are prefix
p+[[ua+ua,]"!"]
p Print
+ Addition
[...........] Argument list
[......] Standalone list
u Uppercase the first letter of..
a ..the string at dictionary index..
+ ..42 (+) - 32 = 10, dictionary[10] = 'hello'
ua, Do the same as above for index 11, 'world'
End of list, standalone list concatenates its
contents as strings with ', ' as delimiter
"!" String literal
End of argument list, Addition also acts as string concat
Transpiled JS code:
console.log('Hello, World' + "!");
LC-3 object file, 36 bytes
.ORIG x3000
LEA R0, TEXT
TRAP x22
HALT
TEXT .STRINGZ "Hello, World!"
.END
This compiles to an object file:
ibug@ubuntu:~ $ hexdump -Cv hello.obj
00000000 30 00 e0 02 f0 22 f0 25 00 48 00 65 00 6c 00 6c |0....".%.H.e.l.l|
00000010 00 6f 00 2c 00 20 00 57 00 6f 00 72 00 6c 00 64 |.o.,. .W.o.r.l.d|
00000020 00 21 00 00 |.!..|
00000024
ibug@ubuntu:~ $ stat -c "%s" hello.obj
36
ibug@ubuntu:~ $
Xanathar, 24 bytes
printf["Hello, World!"];
Xanathar is a work in progress language, so it is rather hard to use.
Compilation:
$ xanathar helloworld.xan
$ ./helloworld.xan.o
VSL, 35 33 bytes
Saved 2 bytes thanks to @ASCII-Only
fn main(){print("Hello, World!")}
Okay after over one year development, the day has come where I can post this :D
There is a print("Hello, World!") function but this is shorter. As I seperate libc and libvsl this will probably have to switch over to print but for now this is the shortest.
Symbolic Python, 175 157 147 136 bytes
_=-~(_==_)
_*=_-~_
__=_*_+~-~-_
_=('%'+`''`[~_/_])*-~-~_%(~-_*~-~-_,_*_+_/_,__,__,_*_-~_,',',' ',__-_+~_,_*_-~_,`_==_`[_/_],__,_*_)+'!'
I'm not sure this is optimal, but it sure was fun.
Explanation:
_=-~(_==_) # Set _ to 2
_*=_-~_ # Set _ to 2*(2+2+1) = 10
__=_*_+~-~-_ # Set __ to 10*10+(10-1-1) = 108
_= # Set _ to
('%'+`''`[~_/_]) # %c, where c is coming from the character \x0c
*-~-~_ # Repeated 12 times
%(... # Then format into that format string
~-_*~-~-_, # (10-1)*(10-1-1) = 72 = 'H'
_*_+_/_, # 10*10+1 = 101 = 'e'
__, # 108 = 'l'
__, # 108 = 'l'
_*_-~_, # 10*10+10+1 = 111 = 'o'
',', # ','
' ', # ' '
__-_+~_, # 108-10-(10+1) = 87 = 'W'
_*_-~_, # 10*10+10+1 = 111 = 'o'
`_==_`[_/_], # second letter of True = 'r'
__, # 108 = 'l'
_*_ # 10*10 = 100 = 'd'
)+'!' # Then add the last char '!'
# And implicitly print _
Kitten, 18 bytes
"Hello, World!"say
Pixiedust, 153 bytes
++.*+..+...
++.*++..+.+
++.*++.++..
++.*++.++..
++.*++.++++
++.*+.++..
++.*+.....
++.*+.+.+++
++.*++.++++
++.*+++..+.
++.*++.++..
++.*++..+..
++.*+....+
Explanation
Each line of the program is:
++indicating that this line prints the following to STDOUT;.*, the portal register indicating a number literal; and- A sequence of
+and.characters forming the binary representation of the character to be printed.
ESOPUNK, 191
COPY 72 #STDO
COPY 101 #STDO
COPY 108 #STDO
COPY 108 #STDO
COPY 111 #STDO
COPY 44 #STDO
COPY 32 #STDO
COPY 119 #STDO
COPY 111 #STDO
COPY 114 #STDO
COPY 108 #STDO
COPY 100 #STDO
COPY 33 #STDO
Can probably save some bytes by copying a constant to X, and ADDI/SUBI from it.
Backhand, 15 bytes
"ol!,ld elWHro"
Now on Try It Online thanks to Dennis!
Backhand is my first new language, taking inspiration from 2D languages like Befunge and ><>. However, it is 1D, but makes up for the missing dimension by having the pointer move more than one character at a time. Initially, the program starts at location 0 with step count 3.
" ! d l r " starts a string literal and starts pushing characters to the stack
o , W o Change direction and go left when you reach the end
l l e H " Switch direction again to go right and end the string literal
H Halt and output stack
Of course, it looks quite funny, since the program is also an anagram of just "Hello, World!".
ObCode, 68 bytes
Hexdump:
0000000: 9a62 c6c6 ca78 b665 a999 4ea9 5995 aa66 .b...x.e..N.Y..f
0000010: 53a9 6363 6665 3958 d996 a539 6363 6565 S.ccfe9X...9ccee
0000020: 6363 6656 5396 3636 3656 65a9 9594 ea8d ccfVS.666Ve.....
0000030: 9599 6aa5 6339 6395 9599 594e 5656 5665 ..j.c9c...YNVVVe
0000040: aa99 94e5 ....
Explanation
Unpacking the program gives the following object:
((())()(())((()())((())())((())())(()()(())))((()())())(())(()())()()(())(())(()()(()))()()()(()()())(())(()()())()()()(())(())(()()(()))()()(()())((())())((())())(())(())(()()(()))(()()())((())())(())(()())()()(()()(()))(()())((())())((())())(()()())(()()())((())())((())())(())(()()())(()()(()))(()())((())())((())())((())())(()()())(())(()())()()(())(()()())(()()(()))()()()((())())(()()())(())(()())()()()()(()()())((())(()))(()())((()))(()()())(()()())(())(()()())(()()(()))(()()())(()()())(()()())(())(()())()()()()(())(())(()()(()))(()()()))
Indented and commented, this gives:
( Start of main object
(()) Define () (()) doing: (
(()()) Save top stack value to register
((())()) ((())()) Push twice
(()()(())) Concatenate
This code will double an object
) ((()())())
(()) (()()) Push 2
() () Double it twice, producing 8
(()) (()) Push 1
(()()(())) Add: 8 + 1 = 9
() () () Double thrice, producing 72
(()()()) Output 72 = 'H'; Stack: empty
(()) (()()()) Push 3
() () () Double thrice, producing 24
(()) (()) (()()(())) Add 1, producing 25
() () Double twice, producing 100
(()()) ((())()) ((())()) Duplicate and save to register
(()) (()) (()()(())) Add 1, producing 101
(()()()) Output 101 = 'e'; Stack: 100
((())()) Load 100 from register
(()) (()()) Push 2
() () Double twice, producing 8
(()()(())) Add 100 + 8 = 108
(()()) ((())()) ((())()) Duplicate and save to register
(()()()) (()()()) Output both 108 = 'l'; Stack: 100
((())()) ((())()) Load 108 twice
(()) (()()()) Push 3
(()()(())) Add 108 + 3 = 111
(()()) ((())()) ((())()) ((())()) Triplicate
(()()()) Output 111 = 'o'; Stack: 100, 108, 111, 111
(()) (()()) Push 2
() () Double twice, producing 8
(()) (()()()) Push 3
(()()(())) Add 8 + 3 = 11
() () () Double thrice, producing 88
((())()) Load 44, saved by the last doubling
(()()()) Output 44 = ','; Stack: 100, 108, 111, 111, 88
(()) (()()) Push 2
() () () () Double four times, producing 32
(()()()) Output 32 = ' '; Stack: 100, 108, 111, 111, 88
((())(())) Use 88 as new stack
(()()) Load 1
((())) Exit the stack which is now 87
(()()()) Output 87 = 'H'; Stack: 100, 108, 111, 111
(()()()) Output 111 = 'o'; Stack: 100, 108, 111
(()) (()()()) Push 3
(()()(())) Add 111 + 3 = 114
(()()()) Output 114 = 'r'; Stack: 100, 108
(()()()) Output 108 = 'l'; Stack: 100
(()()()) Output 100 = 'd'; Stack: empty
(()) (()()) Push 2
() () () () Double four times, producing 32
(()) (()) Push 1
(()()(())) Add 32 + 1 = 33
(()()()) Output 33 = '!'
) End of main object
𒅴 𒆰, 21 bytes
𒁺("Hello, World!")
This is a language written in Cuneiform, and uses Sumerian words as keywords.
At its heart, this is just a translation of Python into Sumerian, but in the future there will be new features added, such as the Babylonian numeral system (which works in base 60).
Because it relies heavily on unicode, this is not going to be a very good golfing language.
µ6, 25 bytes
,200,245,300,300,303,112,52,223,303,310,300,244,53
Explanation
Just apply the ASCII code-points to the pairing function , - strings/string-manipulation is not really the strength of µ6 (I guess nothing really is).
Self-modifying Brainfuck, 28 19 bytes
␀ represents a literal NUL byte.
<[.<]␀!dlroW ,olleH
This is my Python interpreter that is referenced on the Esolangs page for SMBF. The default/example program is the program above. The SMBF code is entered on line 178 so that the Input box can be used for STDIN.
If input is not empty, it would need to be this (20 bytes):
<[.+<]␀!dlroW ,olleH
Since SMBF has its own source code on the same tape, we put the string on the tape in reverse to facilitate printing. Then we print all the cells from right to left up to the cell with zero in it (the cell represented by ␀). After printing, I have to change the comma to a different character so it doesn't look for input. Using + changes it to a - and vice versa, so either way it's a no-op (not that it matters, since printing is done anyway).
Pikachu, 1562 bytes
So simple even Pikachu can do it!
pi pi pika pi pi pika pi pi pika pi pikachu
pi pika
pi pika pikachu
pi pika pika pikachu
pi pika pi pi pika pi pi pika pi pikachu
pi pikachu pi pikachu
pikachu pikachu pi pikachu
pika pi
pika pi
pi pikachu pi pikachu
pi pi pikachu
pi pika pi pikachu
pikachu pikachu pi pikachu
pika pi
pika pi
pi pikachu pi pikachu
pi pi pika pi pi pika pi pika pi pikachu
pi pika pi pikachu
pikachu pikachu pi pikachu
pika pi
pika pi
pi pikachu pi pikachu
pi pi pika pi pi pika pi pika pi pikachu
pi pika pi pikachu
pikachu pikachu pi pikachu
pika pi
pika pi
pi pikachu pi pikachu
pi pi pika pi pi pika pi pi pika pi pika pi pikachu
pi pika pi pikachu
pikachu pikachu pi pikachu
pika pi
pi pi pika pi pi pikachu
pi pikachu pi pikachu
pi pi pika pi pi pikachu
pi pika pi pikachu
pikachu pikachu pi pikachu
pika pi
pi pi pika pi pikachu
pi pikachu pi pikachu
pikachu pi pi pikachu
pi pika pi pikachu
pikachu pikachu pi pikachu
pika pi
pi pika pi pi pika pi pi pika pi pikachu
pi pikachu pi pikachu
pika pi pi pika pi pi pika pi pikachu
pi pika pi pikachu
pikachu pikachu pi pikachu
pika pi
pika pi
pi pikachu pi pikachu
pi pika
pi pika pi pi pika pi pi pika pi pi pika pi pikachu
pi pika pi pikachu
pikachu pikachu pi pikachu
pika pi
pi pika pi pi pika pi pi pika pi pi pika pi pi pika pi pikachu
pi pika pi pikachu
pikachu pikachu pi pikachu
pika pi
pi pika pi pi pika pi pi pika pi pikachu
pi pika pi pikachu
pikachu pikachu pi pikachu
pikachu pikachu pika pikachu
pika pi
pi pi pika pi pikachu
pi pika
pi pikachu pi pikachu
pika pi
pi pika pi pikachu
pikachu pikachu pi pikachu
Try it at Trove42! (Copy and paste above text)
Commented
# H
pi pi pika pi pi pika pi pi pika pi pikachu # push 9 to `pi` stack
pi pika # copy top of `pi` stack, 9, to `pika` stack
pi pika pikachu # push 1 to `pika` stack
pi pika pika pikachu # add top two elements of `pika` stack
# push result, 10, to `pika` stack
pi pika pi pi pika pi pi pika pi pikachu # push 9 to `pi` stack
pi pikachu pi pikachu # multiply top two elements of `pi` stack
# push result, 72, to `pi` stack
pikachu pikachu pi pikachu # convert top of `pi` stack, 72,
# to ASCII, 'H', and print
# e
pika pi # copy top of `pika` stack, 10, to `pi` stack
pika pi # copy top of `pika` stack, 10, to `pi` stack
pi pikachu pi pikachu # multiply top two elements of `pi` stack
# push result, 100, to `pi` stack
pi pi pikachu # push 1 to `pi` stack
pi pika pi pikachu # add top two elements of `pi` stack
# push result, 101, to `pi` stack
pikachu pikachu pi pikachu # convert top of `pi` stack, 101,
# to ASCII, 'e', and print
# l
pika pi # copy top of `pika` stack, 10, to `pi` stack
pika pi # copy top of `pika` stack, 10, to `pi` stack
pi pikachu pi pikachu # multiply top two elements of `pi` stack
# push result, 100, to `pi` stack
pi pi pika pi pi pika pi pika pi pikachu # push 8 to `pi` stack
pi pika pi pikachu # add top two elements of `pi` stack
# push result, 108, to `pi` stack
pikachu pikachu pi pikachu # convert top of `pi` stack, 108,
# to ASCII, 'l', and print
# l
pika pi # copy top of `pika` stack, 10, to `pi` stack
pika pi # copy top of `pika` stack, 10, to `pi` stack
pi pikachu pi pikachu # multiply top two elements of `pi` stack
# push result, 100, to `pi` stack
pi pi pika pi pi pika pi pika pi pikachu # push 8 to `pi` stack
pi pika pi pikachu # add top two elements of `pi` stack
# push result, 108, to `pi` stack
pikachu pikachu pi pikachu # convert top of `pi` stack, 108,
# to ASCII, 'l', and print
# o
pika pi # copy top of `pika` stack, 10, to `pi` stack
pika pi # copy top of `pika` stack, 10, to `pi` stack
pi pikachu pi pikachu # multiply top two elements of `pi` stack
# push result, 100, to `pi` stack
pi pi pika pi pi pika pi pi pika pi pika pi pikachu # push 11 to `pi` stack
pi pika pi pikachu # add top two elements of `pi` stack
# push result, 101, to `pi` stack
pikachu pikachu pi pikachu # convert top of `pi` stack, 111,
# to ASCII, 'o', and print
# "," (comma)
pika pi # copy top of `pika` stack, 10, to `pi` stack
pi pi pika pi pi pikachu # push 4 to `pi` stack
pi pikachu pi pikachu # multiply top two elements of `pi` stack
# push result, 40, to `pi` stack
pi pi pika pi pi pikachu # push 4 to `pi` stack
pi pika pi pikachu # add top two elements of `pi` stack
# push result, 44, to `pi` stack
pikachu pikachu pi pikachu # convert top of `pi` stack, 44,
# to ASCII, ',', and print
# " " (space)
pika pi # copy top of `pika` stack, 10, to `pi` stack
pi pi pika pi pikachu # push 3 to `pi` stack
pi pikachu pi pikachu # multiply top two elements of `pi` stack
# push result, 40, to `pi` stack
pikachu pi pi pikachu # push 2 to `pi` stack
pi pika pi pikachu # add top two elements of `pi` stack
# push result, 32, to `pi` stack
pikachu pikachu pi pikachu # convert top of `pi` stack, 32,
# to ASCII, ' ', and print
# W
pika pi # copy top of `pika` stack, 10, to `pi` stack
pi pika pi pi pika pi pi pika pi pikachu # push 8 to `pi` stack
pi pikachu pi pikachu # multiply top two elements of `pi` stack
# push result, 80, to `pi` stack
pika pi pi pika pi pi pika pi pikachu # push 7 to `pi` stack
pi pika pi pikachu # add top two elements of `pi` stack
# push result, 87, to `pi` stack
pikachu pikachu pi pikachu # convert top of `pi` stack, 87,
# to ASCII, 'W', and print
# o
pika pi # copy top of `pika` stack, 10, to `pi` stack
pika pi # copy top of `pika` stack, 10, to `pi` stack
pi pikachu pi pikachu # multiply top two elements of `pi` stack
# push result, 100, to `pi` stack
pika pi # copy top of `pi` stack, 100, to `pika` stack
pi pika pi pi pika pi pi pika pi pi pika pi pikachu # push 11 to `pi` stack
pi pika pi pikachu # add top two elements of `pi` stack
# push result, 111, to `pi` stack
pikachu pikachu pi pikachu # convert top of `pi` stack, 101,
# to ASCII, 'o', and print
# r
pika pi # copy top of `pika` stack, 100, to `pi` stack
pi pika pi pi pika pi pi pika pi pi pika pi pi pika pi pikachu # push 14 to `pi` stack
pi pika pi pikachu # add top two elements of `pi` stack
# push result, 114, to `pi` stack
pikachu pikachu pi pikachu # convert top of `pi` stack, 114,
# to ASCII, 'r', and print
# l
pika pi # copy top of `pika` stack, 100, to `pi` stack
pi pika pi pi pika pi pi pika pi pikachu # push 8 to `pi` stack
pi pika pi pikachu # add top two elements of `pi` stack
# push result, 101, to `pi` stack
pikachu pikachu pi pikachu # convert top of `pi` stack, 101,
# to ASCII, 'e', and print
# d
pikachu pikachu pika pikachu # convert top of `pika` stack, 100,
# to ASCII, 'd', and print
# "!" (exclaimation point)
pika pi # copy top of `pika` stack, 10, to `pi` stack
pi pi pika pi pikachu # push 3 to `pi` stack
pi pika # copy top of `pi` stack, 3, to `pika` stack
pi pikachu pi pikachu # multiply top two elements of `pi` stack
# push result, 30, to `pi` stack
pika pi # copy top of `pika` stack, 3, to `pi` stack
pi pika pi pikachu # add top two elements of `pi` stack
# push result, 33, to `pi` stack
pikachu pikachu pi pikachu # convert top of `pi` stack, 33,
# to ASCII, '!', and print
Pepe, 122 120 bytes
Pepe is my brand new programming language, which is horrible.
reeEeeEeeereeEEeeEeErEeEEeEEeereeereeeREeEEeEEEEReeereeeEeEEeereeeEeeeeereeEeEeEEEReeereeEEEeeEereeereeEEeeEeereeeEeeeeE
There might be shorter solutions, but that's not task for my brain .-.
That's why I'd offer a 50 100 bounty to anyone who can make it shorter, if it's possible. I don't really believe it is, but maybe you can change my mind?
This solution is quite simple, but better to explain it ungolfed and commented:
reeEeeEeee # H > print H
reeEEeeEeE # e > print e
rEeEEeEEee # l > push l to r
reee reee # print it twice
REeEEeEEEE # o > push o to R
Reee # print it
reeeEeEEee # , > print ,
reeeEeeeee # > print a space
reeEeEeEEE # W > print W
Reee # o > print active value in R (o)
reeEEEeeEe # r > print r
reee # l > print active value in r (l)
reeEEeeEee # d > print d
reeeEeeeeE # ! > print !
The first line prints Hello, and a space, the second prints World!. Most of this program are character functions, ex. reeEeeEeee which prints H. By letter:
r- Stackre- PrinteEeeEeee- 01001000 (72), the ASCII character forH
As said, most of the program consists of similar commands, but, to golf it a bit, in first occurrence of l, I replaced the first e with E, so instead of printing, it pushed the charcode to the stack. Thanks to this, we can later print l using reee, the command for printing. Edit: Now, I've done the same with o, thanks to the existence of the second stack (notice the R letter).
2DFuck, 157 150 bytes
.!.!..!.!....!..!..!.!.!.x[!.!..!.!..!..rv].!..!.!....!..!.!.!..!....!.!......!.!.!.!.!...!.!..!.!....!.!...!..!.!..!..!.!..!...!..!..!.!....!.!....!.
Print He, print l twice, print o, World!
Brain-Flak, 142 140 136 bytes
((((((((((((()()){}){}){}){}()))){}{}())([][]){})[][])[[]]())[((()[]){}){}])([()[]](([]([](((([][]))([]{}{})))[]{}[])[[]])))(([][][]){})
In the time since this answer was originally posted (original code below) Jo-King wrote a computer program that was able to find a shorter Hello World. After careful examination I was able to shave 2 bytes off of the computers program. Jo-King then improved his program to outgolf me. But I'm not beaten that easily and I've golfed it back, taking another 2 bytes off the machine. I won't explain the entire program because I don't understand it and Jo-King has already done that in the linked post but I will explain my golf. My golf pertains the part that looks like:
([][]([](()[][]){}))
From here I noticed that [][] was repeated twice. I thought it might be a good idea to cache this value instead:
(([][])([]((){}){}))
However because there is a [] between the push and the pop this is off by one. We can fix this by moving the () outside of the double to decrease by 1.
(([][])([]()({}){}))
At this point we can increase the [] in between by another one by pushing [][] twice instead of once
((([][]))([]{}{}))
This saves 2 bytes.
Original code, 148 bytes
Now that DJMcMayhem's answer has depreciated. I made a replacement (and even removed a few bytes).
(((((((((((()()()()){}){}){}()))){}{}())[][][][])[][])[[]]())[[][][][][]]())([([]([])[][]{})]()()()([[]](([()()()]([([][][])](((({}()){}))){}{})))))
Explanation
This explanation was create by Poke
(
(
(
(
(
(
(
(
(
(
(()()()()){} Add 8... to 0
){} Double to 16
){}() Double and add 1 to 33 which is !
) Push the ! to save it for the end
) Push an extra 33 to help add to get to the first letter
){}{}() Triple the 33 and add 1 for 100 which is d
)[][][][] Push the d to save it for the end. Add height-2, 4 times for 108 which is l
)[][] Push the l to save for the end then add height-3, 2 times = 114 which is r
)[[]]() Push the r to save for the end then subtract height-4 and add 1 = 111 which is o
)[[][][][][]]() Push the o to save for the end then subtract height-5 5 times and add 1 = 87 which is W
) Push W to save for the end
At this point the stack contains "!dlroW". 87 Floating
( We're now a level lower so we start at 0 for the math here.
[([]([])[][]{})]()()() Push 6+6+7+7+6=32 which is the space, then negate it + 3 = -29 Floating
(
[[]] negate height-7 = -7 Floating
(
(
[()()()] -3 Floating
(
[([][][])] Push 3*height-7 = 21 and negate it = -21 Floating
(
(
(
({}()){} 21+1+22 = 44 which is the comma
) Push the , to save for the end
) Push another 44
){}{} 44+44+44 = 132
) Push 132 plus the -21 we left floating earlier = 111 which is o
) Push 111 plus the -3 we left floating earlier = 108 which is l
) Push another l
) Push 111 plus the -7 we left floating earlier = 101 which is e
) Push 101 plus the -29 we left floating earlier = 72 which is H
At this point the stack contains "!dlroW ,olleH" and our accumulator is at 159 which doesn't get used.
Q#, 43 bytes
function H():String{return"Hello, World!";}
Might as well put it out there. Q# is Microsoft's programming language for quantum computers, not that there's anything quantum happening here.
"Now hold on a moment! This isn't a complete program!"--You, probably.
Well, it's not actually possible to write a complete program in Q#. You always have to call it from a different language. So I'm just submitting a "function", although note that while Q# is a .NET language, the function keyword actually defines a class and not a method, and the submission is equivalent to the following C# code:
public class H : Operation<QVoid, String>, ICallable
{
public H(IOperationFactory m) : base(m)
{
}
String ICallable.Name => "H";
String ICallable.FullName => "qsharp.H";
public override Func<QVoid, String> Body => (__in) =>
{
return "Hello, World!";
}
;
public override void Init()
{
}
public override IApplyData __dataIn(QVoid data) => data;
public override IApplyData __dataOut(String data) => new QTuple<String>(data);
public static System.Threading.Tasks.Task<String> Run(IOperationFactory __m__)
{
return __m__.Run<H, QVoid, String>(QVoid.Instance);
}
}
You can use this link to "disassemble" Q#.
Z80Golf, 19 bytes
00000000: 674a 4343 4003 0f78 405d 434b 0e76 7e23 gJCC@..x@]CK.v~#
00000010: e5ee 2f ../
Z80Golf is, essentially, a Z80 machine hooked up to $8000=putchar and $8003=getchar. The source code is a binary copied to $0000 (all other memory is zeroed out, just like the registers); execution starts there and runs until a halt instruction.
It was designed by mokehehe on anarchy golf for code golf competitions there, but seems to have fallen into disuse. It's really fun to golf in, but excelling in it requires a pretty thorough understanding of the Z80 chip (that I myself don't even have, but some golfers like kodera and *yuko* do, and every solution they write is very clever.)
A naïve Hello, World! program might look like this:
start:
ld a, (ix+hello)
or a
jr nz, okay
halt
okay:
call $8000 ; putchar
inc ix
jr start
hello:
db "Hello, World!"
It assembles into a 27 byte binary. It even cheats a little bit: we don't need to explicitly zero-terminate the string "Hello, World!" ourselves, as all the memory past our source code is zeroed already. And it's still a fair bit longer than our 19-byte solution.
So how does the 19-byte solution work?
It doesn't look much like a Hello, World! program when disassembled:
ld h,a
ld c,d
ld b,e
ld b,e
ld b,b
inc bc
rrca
ld a,b
ld b,b
ld e,l
ld b,e
ld c,e
ld c,0x76
ld a,(hl)
inc hl
push hl
xor 0x2f
We can look at the program in a slightly more revealing manner.
db 47 ^ 'H' ; 67 ld h, a
db 47 ^ 'e' ; 4a ld c, d
db 47 ^ 'l' ; 43 ld b, e
db 47 ^ 'l' ; 43 ld b, e
db 47 ^ 'o' ; 40 ld b, b
db 47 ^ ',' ; 03 inc bc
db 47 ^ ' ' ; 0f rrca
db 47 ^ 'W' ; 78 ld a, b
db 47 ^ 'o' ; 40 ld b, b
db 47 ^ 'r' ; 5d ld e, l
db 47 ^ 'l' ; 43 ld b, e
db 47 ^ 'd' ; 4b ld c, e
db 47 ^ '!' ; 0e ld c,
halt ; 76 $76
ld a, (hl)
inc hl
push hl
xor 47
; 32749 nop instructions, and then:
; putchar(A)
; ret
Whenever the PC becomes $8000, Z80Golf is programmed to write the byte in register A to STDOUT, and then effectively execute a ret (the PC is set to (SP) and SP is incremented by 2). In our code, instead of using call $8000 to access this behavior, we let the PC wade through a sea of nops (opcode 00) from $0013 to $7fff.
Keeping this in mind, the code will run as follows:
- Execute some meaningless instructions (effectively NOPs), starting from
ld h,a. - Set A to
mem[0] ^ 47, which is'H'. - Increment HL and push it (
$0001). - Fall through to
putchar, and return to the$0001we pushed. - Execute some meaningless instructions, starting from
ld c,dthis time. - Set A to
mem[1] ^ 47, which is'e'. - Increment HL and push it (
$0002). - Fall through to
putchar, and return to the$0002we pushed. - …
- Set A to
mem[12] ^ 47, which is'!'. - Fall through to
putchar, and return to the$000dwe pushed.- We finally jump into the argument of the
ld c, $76— and$76is thehaltopcode!
- We finally jump into the argument of the
Of course, the constant 47 was carefully picked so that none of the first instructions 13 influence the execution of the code, and the last one is some opcode that takes a single-byte argument, “hiding” the halt opcode until we jump there after printing '!'.
Ahead, 17 bytes
"!dlroW ,olleH"W@
A (very-unfinished at the time of this writing) fungelike. This works on the current master version.
Ahead is my first esolang (well... that actually has progress). It borrows a lot of concepts from Befunge and ><> but hopefully it provides enough unique features to be interesting. I particularly want to provide features that can improve code density and golfing, one of which is included in this answer.
W is called "Writewhile". This pops cells from the stack and prints them as chars, until it encounters a 0. The 0 is popped and discarded (not printed). Since stringmode pushes a 0 to the stack when it starts, this makes printing strings rather easy.
"!dlroW ,olleH" push chars to stack
W pop and print until 0
@ kill head
TapeBagel, 511 bytes
%% %++ %++ %++ %++ %++ %++ %++ %++ @* ## %++ %++ %++ %++ %++ @* ## %++
%++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ @* @* ## %++ %++ %++ %++
%++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ @* ## @* %++ %++ %++ %++
%++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++
%++ %++ @* ## %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++
%++ %++ @* ## %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++ %++
%++ %++ %++ %++ %++ @* ## %++ %++ %++ %++ %++ %++ %++ %++ %++ %++
%++ %++ @* ## %++ %++ %++ %++ @* ##
%# - adds one to the integer index.
%% - resets the integer index to zero.
%& - the integer that the integer index is pointing to is inputted into the program.
#% - sets all of the integers to one.
## - resets all of the integers to zero.
&& - pauses the program.
&@ - clears the screen.
%++ - adds one to the integer that the integer index is pointing to
@[ int ] - outputs the integer as a character (1 = A, 2 = B, ... 26 = Z)
* - integer 0
Meq, 145 111 bytes
.==++>:+>+>[:++++++++>]:=+>====++++>===++>.===+++++++>:=+>:=++++>:++++++++>:>===+++rp>p>>p>p>p>p>p>p>p>p>p>p>p!
Thanks Steadybox for saving 34 bytes
Nikud, 672 bytes
ֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֱֲֳֳֳֳֳֳֳֳֳֳֳֳֳֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶֶַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַַָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָָ
Even though it has tons of bytes, it's top 3 in width, as all the characters are diacritical marks.
There isn't much useful to explain. The character codes are put in reverse order into the stack using mostly אֱ (push 1), אֶ (dup) and אַ (add). Then אֵ (print as char) is called 13 times.
Another thing that adds to the byte count is that each character is represented by 2 bytes in UTF-8. So it's actually 336 characters.
Thing, 37 bytes
Pushes the characters to the stack one by one (the second "l" is made with duplication, saving 1 byte), then concatenates them.
\!\d\l\r\o\W\ \,\o\ld\e\H++++++++++++
brainfuck, 137 bytes
++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>++.>+.+++++++..+++.<<++++++++++++++.------------.>+++++++++++++++.>.+++.------.--------.<<+.
Explained :
++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>++. H
>+. e
+++++++.. l l
+++. o
<<++++++++++++++. comma
------------. space
>+++++++++++++++. W
>. o
+++. r
------. l
--------. d
<<+. !
This can definitely be golfed. (World record is 72 bytes so I already know that)
This is basic hard coded answer, simply gets the Ascii value, resets and keeps going
brainfuck, 210 bytes
-[>+<-------]>-.[-]<-[>++<-----]>-.+++++++..[-]>+[+>+[<]>->]<.[-]--[>+<++++++]>+.[-]>-[-[-<]>>+<]>-.[-]-[>+<---]>++.[-]>+[+>+[<]>->]<.[-]>+[-->++[<]>-]>.[-]>+[++[++>]<<+]>+.[-]-[>++<-----]>--.[-]>-[-[-<]>>+<]>.
Explained :
-[>+<-------]>-. H
[-]
<-[>++<-----]>-. e
+++++++.. l l
[-]
>+[+>+[<]>->]<. o
[-]
--[>+<++++++]>+. ,
[-]
>-[-[-<]>>+<]>-. space
[-]
-[>+<---]>++. W
[-]
>+[+>+[<]>->]<. o
[-]
>+[-->++[<]>-]>. r
[-]
>+[++[++>]<<+]>+. l
[-]
-[>++<-----]>--. d
[-]
>-[-[-<]>>+<]>. !
tinyBF, 94 bytes
+|=++=>=+=|>>+>=+++++>>|>++>+++|=>=+===>>>+==>>====+++|==>=|>>>>===+++===++++++==>>+===>>>>+==
I noticed there wasn't a tinyBF answer here. This is based on Ksab's record-breaking brainfuck answer.
BrainfuckSubstitutor, 65 bytes
_--!+++?>>/<<
+[_>-[?+>__-/]<_<_-]>-.>?+.?..![.>]//.!.___./-.??+.
Based off KSab's Brainfuck answer.
Logo (programming language) - 20 bytes
PRINT [Hello, World!]
Or even more exciting version:
to helloworld
hideturtle
fd 20 left 180
fd 40 left 180
fd 20 right 90
fd 20 left 90
fd 20 left 180
fd 40 left 90
fd 20 left 90
fd 20 right 90
fd 20 right 90
fd 10 right 90
fd 20 left 90
fd 10 left 90
fd 30 left 90
fd 40 left 180
fd 40 left 90
fd 20 left 90
fd 40 left 180
fd 40 left 90
fd 40 left 90
fd 20 left 90
fd 20 left 90
fd 20 left 90
fd 60 left 90
fd 40 left 180
fd 40 left 90
fd 20 left 90
fd 20 left 180
fd 20 left 90
fd 20 left 90
fd 40 left 180
fd 40 left 90
fd 40 left 90
fd 20 left 90
fd 20 left 90
fd 20 left 90
fd 40 left 90
fd 20 right 90
fd 20 right 90
fd 5 left 90
fd 5 left 90
fd 25 left 180
fd 40 left 90
fd 40 left 90
fd 20 left 90
fd 20 left 90
fd 20 left 90
fd 20 left 90
fd 40 left 180
fd 40
end
lt 90 pu fd 200 pd rt 90 helloworld
Output:
ELVM-IR, 116 68 66 65 bytes
.data
.string"Hello, World!"load B,A
putc B
add A,1jne 0,A,13exit
Thanks to @ASCII-only for golfing off 48 50 51 bytes!
Background
Running the above program with eli <file> interprets it, but elc -<target> <file> is where the real magic happens: it translates ELVM-IR source code to any of the supported backends!
The ELVM toolchain also supports compiling (a subset of) C and its standard library to ELVM-IR.
Aubergine, 29 bytes
-a1=oA-a1:bA=iB\0!dlroW ,olleH
Where \0 is a null byte
Explanation
-a1 Decrement a (now points to H)
=oA Output *a (loop starts here)
-a1 Decrement a
:bA If *a is not 0 (we're not at null byte), jump to b (which is 0). IP then moves by 3, so IP starts at 3 next tick
=iB Else move IP to *b, which is the character code of `-`, moving us out of bounds and ending execution without error.
\0!dlroW ,olleH
Wierd (John's), 432 421 302 289 256 225 197 181 bytes
-******************* !dlroW ,olleH
*
R* * * *
E* ** ** *
T* ** ** *
U *** *** ****
R * * * *
N * * ********
* ****
0 **
Background
Wierd's workspace determines both code and data. While each character sets the workspace's cell to its code point (missing characters are treated as spaces, which have code point 32), the code is defined by a particle that starts in the upper left corner and moves along a wire. This wire is also defined by the characters: non-spaces form wires, spaces separate these wires. Instructions are encoded into the kind of turns the particle takes.
At the beginning, the upper left corner holds the number 45, which is the x-coordinate of the cell to the right of !dlrow ,olleH. Each loop through the asterisks that form the main wire decrements that coordinate, prints the character, then prints the character it points to. After all 13 characters have been printed, the upper left corner becomes a space, causing the particle to traverse RETURN 0 instead of the main wire. Once 0 is reached, the particle can no longer move; the program ends.
For the first 12 iterations, the particle moves as follows.
<style>body,html,svg{display:block;height:100%;margin:0;padding:0;}</style>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 210 105"><path d="M 20 80 L 20 100" fill="none" stroke="#FFC0C0" stroke-width="3"/><path d="M 20 8.5 L 20 80" fill="none" stroke="#C00000" stroke-width="3"/><path d="M 20 98.5 L 20 101.5" fill="none" stroke="#C00000" stroke-width="3"/><path d="M 180 30 L 200 10 L 199 10" fill="none" stroke="#C0C0C0" stroke-width="3"/><path d="M 200 10 L 10 10 L 30 30 L 30 50 L 40 60 L 60 60 L 70 50 L 70 30 L 60 40 L 60 70 L 50 80 L 50 90 L 60 100 L 70 100 L 80 90 L 110 90 L 90 70 L 100 60 L 120 60 L 130 50 L 130 40 L 120 30 L 120 70 L 130 80 L 200 80 L 180 60 L 150 60 L 180 30" fill="none" stroke="#000000" stroke-width="3"/><path d="M 10 10 L 30 30 L 30 50 L 40 60 L 60 60 L 70 50 L 70 30 L 60 40 L 60 70 L 50 80 L 50 90 L 60 100 L 70 100 L 80 90 L 110 90 L 90 70 L 100 60 L 120 60 L 130 50 L 130 40 L 120 30 L 120 70 L 130 80 L 200 80 L 180 60 L 150 60 L 180 30 L 200 10 Z" fill="none" id="move-loop"/><circle r="4" fill="#00C0C0"><animateMotion dur="10s" repeatCount="indefinite"><mpath xlink:href="#move-loop"/></animateMotion></circle></svg>
However, during the thirteenth and last iteration, the upper left corner if removed, so the particle moves down the red wire instead.
Code
As illustrated in the Stack Snippet, the particle takes the following left turns on the main wire.
315° Subtract. Nothing is done, since the stack is empty.
This turn, like the other no-ops, is made solely to save space.
45° Push 1. STACK: [1]
45° Push 1. STACK: [1 1]
45° Push 1. STACK: [1 1 1]
45° Push 1. STACK: [1 1 1 1]
135° Pop the stack. Since the popped element is 1, pop two more values (1 1) and push the code point of the character at those coordinates. STACK: [1 n]
Initially, the character at (1, 1) is
-, so n = 45.45° Push 1. STACK: [1 n 1]
315° Subtract. STACK: [1 (n-1)]
45° Push 1. STACK: [1 (n-1) 1]
45° Push 1. STACK: [1 (n-1) 1 1]
45° Push 1. STACK: [1 (n-1) 1 1 1]
45° Push 1. STACK: [1 (n-1) 1 1 1 1]
315° Subtract. STACK: [1 (n-1) 1 1 0]
135° Pop the stack. Since the popped element is 0, pop two more values (1 1) and store the next value on the stack (n-1) at those coordinates. STACK: [1]
During the first run, the upper left corner changes from
-(45) to,(44).During the thirteenth and last run, the upper left corner changes from
!(33) to space (32), essentially cutting the wire.270° Pop the stack. Since the popped element is 1, continue. STACK: []
315° Subtract. Nothing is done, since the stack is empty.
45° Push 1. STACK: [1]
45° Push 1. STACK: [1 1]
45° Push 1. STACK: [1 1 1]
135° Pop the stack. Since the popped element is 1, pop two more values (1 1) and push the code point of the character at those coordinates. STACK: [(n-1)]
45° Push 1. STACK: [(n-1) 1]
45° Push 1. STACK: [(n-1) 1 1]
135° Pop the stack. Since the popped element is 1, pop two more values (1 (n-1)) and push the code point of the character at those coordinates. STACK: [c]
During the first run, this retrieves the character at (44, 1), which is
H.45° Push 1.
225° Pop the stack. Since the popped element is 1, pop the next item and print it to STDOUT. STACK: []
180° Jump to the rightmost star on the first line.
135° Get/set. Nothing is done, since the stack is empty.
After this turn in the upper left corner, the particle starts over.
Whirl, 955 733 bytes
-~200 bytes using implicit modulo when output magic - I haven't checked anywhere close to all the simple possibilities, so this might be very suboptimal.
It might be possible to use memory/the operations wheel value as extra storage to make things shorter, but all approaches I've tried using those are not golfier than the naive one
1100001110010001111100110000000000000100000100000100000110000010000100100010001000000000000111110001111000111110001111000000000000011110000011100100011001111110001110011111000000000000000000000000000100100110000001111110001110011111000000000001001000100010000000000001111100000111110001001000110001000111110000011110000000000000000010001001100111111000100111110011000000000000000000000000010000011000000000110010001100010000000000011111000001111000000000000000000111110001111000111110001111000001001001100111111000111001111100000000000100100111001111110001111001111100000000000000000000000111100000111001000111001111110001111001111100000000000000000000000000000001111000001110010010001000000000000000000000000111110000011111000100100
Readable:
1 _
: ; _ + _ + _ + _ : _ + _ : _ * _ + _ : .
+ _ + _ + _ + : - _ + _ + _ + _ - _ : . _ :
+ _ + _ + _ + _ + _ + _ + _ : . _ . _ :
+ _ + _ + _ : .
+ _ + _ + _ + : + _ : .
* _ - _ + _ + _ + _ + _ : . _
: ; _ + _ + _ + _ + _ + _ + _ : _ * _ * _ : .
* _ * _ * _ - _ + _ + _ + _ + _ + : - _ + _ : . _ :
+ _ + _ + _ : . - :
+ _ + _ + _ + _ + _ + _ - _ : . - :
+ _ + _ + _ + _ + _ + _ + _ + _ - _ : .
+ _ + _ + _ + _ + _ + _ + : + _ : .
Every command switches operation wheels, starting from the operation wheel. Note that the cost depends on the current and previous command of the wheel, which is why there are so many no-ops.
Each character is on its own line, except for the two ls in a row. Some constructs used here are:
: ;- load the 1 from operation value into math value_ +- add memory to math value - this can be used for e.g. repeated additions to emulate multiplications_ *- square. This is used forHsince 72 =8 * 8 + 8: . _- store math value to memory, output, switch back to math wheel
Lines ending with : indicate the 1 from the operation wheel is being loaded, but the math value is not being overwritten. This is useful when consecutive characters are close in character codes.
Operation wheel commands
1- set (operation) value to 1:- store value into memory. In this program it's always 1.- outputchr(memory)
Math wheel commands
+- add memory to (math) value - this is different to operation value*- multiply memory with value-- negate value - this is the only way to subtract;- load memory into value:- store value into memory
See the language page for descriptions of unused commands
Zig, 81 bytes
pub fn main()!void{try(try@import("std").io.getStdOut()).write("Hello, World!");}
Unnamed, 14 Bytes
Unnamed is an unfinished language, only custom output is supported at the time of posting this. But it works.
!Hello, World!
Explanation
! -> user specified output
Hello, World -> string
Vala, 36 bytes
File hello.vala:
void main(){print("Hello, World!");}
...without trailing newline.
After a diet suggested by @ASCII-only.
Vala, 42 bytes
Yayyyy!!! 42!!! \o/
File hello.vala:
void main(){stdout.puts("Hello, World!");}
...without trailing newline.
Run:
$ valac hello.vala
$ ./hello
Hello, World!
Beatnik, 111 bytes
k zzzzzzzzc k xx k x k d k k k zzxa k zzzzzzzzf xw k zd z xw xo k k k x xw k zk
k zzzzzzzzzzxx qs z xo xw xj kd
Non-crashing version, 117 bytes
k zzzc xw xw z k xx k x k d k k k zzxa k zzzzzzzzf xw k zd z xw xo k k k x xw k zk
k zzzzzzzzzzxx qs z xo xw xj kd xo
Inform 7 + C by G, 36 bytes
Include C by G.Z:say "Hello, World!"
This code requires at least version 1/150829 of the code golfing extension.
Brainfuck, 128 bytes
Generated using this generator, which is sub-optimal.
-[------->+<]>-.-[->+++++<]>++.+++++++..+++.[->+++++<]>+.------------.---[->+++<]>.-[--->+<]>---.+++.------.--------.-[--->+<]>.
Lorale 37 (36) bytes
This is a language I am making. It shouldn't count as a loophole, as I am making this legitimately, but a hello world program requires you to pass this to the interpreter as args:
;Main{§vmain(){¶"Hello, world!"}};
Alternatively, the program could be put into the semi-IDE as:
Main{§vmain(){¶"Hello, world!"}};
making it 36, not 37 bytes.
Main{ Defines the main class
§v Defines a void
main(){ named main
¶"Hello, world!"; Prints "Hello, world!"
}}; Closes the main method and class
LNUSP, 360 353 bytes
-6 bytes thanks to ASCII-only
001 . !.! 002 ! ! 001 * !! 033 + 001 * 100 + 001 * 108 + 001 * 114 + 001 * 111 + 001 * 087 + 001 * 032 + 001 * 044 + 001 * 111 + 001 * 108 + 001 * 108 + 001 * 101 + 001 * 057 + 015 + ?...?@ ! 001 * ?@ . ? 001 ! . +. * 001 . ? ! ? 001 !..................?.@.?
Ungolfed version:
001 . !.! .OUTPUT .EXIT 001 . ! . . 001 ! . ! . . 001 . !! . . 001 * . . 033 + ! . . 001 * . . 100 + d . . 001 * . . 108 + l . . 001 * . . 114 + r . . 001 * . . 111 + o . . 001 * . . 087 + W . . 001 * . . 032 + . . 001 * . . 044 + , . . 001 * . . 111 + o . . 001 * . . 108 + l . . 001 * . . 108 + l . . 001 * . . 101 + e . . 001 * . . 072 + H . . 001 * . ! 001 . . . 001 . . . 001 . . . 001 . . . 001 ! . . 001 . . . 001 . . . 001 . . . 001 . @ . . 001 . +. . 001 . ! . 001 . . . 001 . ?.....?@ 001 . ? . ? 001 . . . * 001 . ? . ? 001 !.......?..@..?
Note that TIO LNUSP does not require newline at the end of file.
Some explanations are here.
Can be golfed 4 bytes more, I didn't do it for aesthetic purpose.
Mind, 26 bytes
The program is encoded in Shift_JIS:
メインは
"Hello, World!"
表示
It means something like:
MAIN is:
"Hello, World!"
display
As you can see, Mind is a Japanese programming language. It's based on Forth, which turns out to suit Japanese's SOV word order rather well!
x86_64 machine code for Linux, 32 bytes
When Linux starts a new process, all the registers (except RSP) are zero, so we can get RAX=1 by only modifying the low byte. The x86-64 System V ABI doesn't guarantee this, but it's what Linux actually does. This code only works as _start in a static executable.
0000000000000000 <_start>:
0: e8 0d 00 00 00 call 12 <hello>
5: 48 65 6c 6c 6f
a: 2c 20 57 6f 72
f: 6c 64 21 5e 40
0000000000000012 <hello>:
12: 5e pop rsi
13: 40 b7 01 mov dil,0x1
16: b2 0d mov dl,0xd
18: b0 01 mov al,0x1
1a: 0f 05 syscall
1c: b0 3c mov al,0x3c
1e: 0f 05 syscall
The call instruction pushes the next address, which contains the hello world string, onto the stack. We pop the address of the string into rsi.
Then the other arguments are set up for a syscall to sys_write, which prints the string.
The program terminates with a syscall to sys_exit. sys_write returns the number of bytes written, so the upper bytes of RAX are zero after the first syscall (unless it returned an error), so mov al, 60 gives us RAX = __NR_exit in only 2 bytes.
You can make this program segfault by closing its stdout (./a.out >&-), so sys_write() will return -EBADF, the second syscall will return -ENOSYS, and then execution will fall off the end. But we don't need to handle write() errors gracefully.
Shakespeare Programming Language, 926 835 bytes
Thanks to @JoKing for -91!
CW'd. At present, the only SPL answer is completely ungolfed and has been so despite comments from last June, so I thought I'd post the RosetTIO answer (with modifications). I couldn't figure out the original author (perhaps this GH user? Who's that on SE?); if this is your work, I'll happily delete (or ask a mod to transfer post ownership and un-CW or something).
a.Ajax,.Puck,.Act I:.Scene I:.[Enter Ajax and Puck]Ajax:You big big big cat!Puck:You is the sum of I the square of I!Speak mind!You is the sum of you twice twice I!Ajax:You is the sum of a big cat a cat!Puck:You is the difference between you I!Speak mind!You is the sum of the sum of you I a big big cat!Speak mind!Speak mind!You is the sum of you I!Speak mind!Ajax:You big big big big big cat!You is the sum of the sum of you a big big big cat a big big cat!Speak mind!You big big big big big cat!Speak mind!You is the sum of the difference between I you a big big big cat!Speak mind!You is the sum of a big cat a cat!Puck:Speak mind!You is the sum of you I!Speak mind!You is the difference between you twice I!Speak mind!You is the sum of you a big big big pig!Speak mind!You is the sum of a cat a big big big big big cat!Speak mind!
Try it online! 46 warnings, but it does what it needs to do and sounds like Shakespeare[citation needed]. Yay.
I wrote none of this; I merely removed from the RosetTIO program some unnecessary stuff. I outgolfed nothing (just shortened), so this is not eligible for that one bounty.
Changes
[Exeunt]at the end removed- Linebreaks removed
thyinSpeak thy mind!removedas big asinYou is as big asremovedandremovedmyselfandthyselfreplaced withIandyou, respectively
Euphoria, 23 bytes
puts(1,"Hello, World!")
The (1, parameter tells the puts function to send the output to STDOUT, and there is no carriage return or EOL character for this one line program. This program will work as-is on both RDS Euphoria (v3.1.1 - last commercial version) and OpenEuphoria (v4.1 - current opensource version). The code omits the "optional trailing newline" (per the challenge rules) or else it would be two characters longer (adding \n after the !).
I am surprised that no one had added Euphoria to this challenge before now but I am glad that I could as I really like this powerful little language. Since no one added it to this list after more than 2 years I am thinking that maybe CodeGolfers never heard of Euphoria? I am not sure if it is okay to do this here but what follows is a very short description of the language for context. If this is not okay I apologize in advance. Also, where would such information be appropriate? Is there a "directory" of languages post somewhere in the site?
Euphoria was released in 1995 (back in the days of DOS and Windows 3.1) with only two data types: the atom (each contains a single number) and the sequence (essentially a dynamically-sized array of zero or more atoms). Two other types (the integer and the object) were added in recent years to help with efficiency of execution. One of the most interesting things that attracted me to this language long ago besides its remarkably uncomplicated structure is that it runs incredibly fast for an interpreted language. Also it has engines that run on Windows, Linux, and Mac OSX so user code is cross-platform.
PS: It seems as of the time of this posting that the original RDS website linked above is down due to hosting problems after 20 years with the same host. It is unclear when (or if) it will come back up. However the rather extensive library of user created programs for the language is archived here if anyone is wanting good sample code to explore the language.
Pada, 83 68 bytes
~.O~Ow~q~Owo~O~Oww~Q~qwo~q~O~wQ~q~w~q~q~Q~Ow~Q~Q~wo~q~w.~q~w.~.wO~qw
I believe this is optimal for a linear program (i.e. one which doesn't use the control flow operators ? and *). It might be optimal overall, but I don't know how to go about making use of those additional operators in such a small amount of code (or how to explore the possibilities programmatically).
The language has recently undergone some changes after I started discussing it with the author by email. However, I have written a reference implementation for the current state of the language spec last week, so the above code is actually runnable.
Metagolf
Originally, I had used the output of my reference implementation to this challenge and created a hand-crafted solution based on that. However, that was just a heuristic approach.
So instead I wrote a solver in Mathematica which actually knows about the Pada data structures and operators to find an optimal solution. On average, it grows linearly with the length of the string (although some character combinations are a bit slower than others) and took about 1.5 hours for Hello, World!.
So how did I go about writing the solver. First, we notice that we only need to consider 6 operators: ~.oOqQ (plus the necessary w for each of the printed characters). Using the stacks or the bit locks isn't useful in linear code, and I don't believe that ? and * can be used effectively in less than 68 bytes.
Pada's state (ignoring the stacks and locks) consists of 7 switches and 8 bits, arranged like this:
/
/ \
/ \ / /
0 1 0 0 1 0 0 0
So that's 215 = 32768 possible states. My first preprocessing step was to set up a directed graph of states where each edge corresponds to a single operation. That is, the graph has 32768 vertices, each with out-degree 6 (one outgoing edge for each of the 6 operations under consideration). We can use this graph to find the shortest path between any two states (this graph alone can be quite useful for golfing Pada).
Now for each character, we want to reach a state where w prints that character. How many such states are there? w reads the byte from the bit it is dropped on (cyclically). So there are 8 possible rotations of the bits of the character which can all print that character. For each of those rotations, three switches are fixed (in order to make w drop in the correct position). This leaves 4 arbitrary switches. So we've got 8 * 24 = 128 possible states for each w in our code.
With those we can solve another graph problem: construct a graph which has a source vertex, then one "layer" for each character, and a sink vertex. The layers consist of the 128 states for each vertex, the source node corresponds to the initial state of the program (all switches to the left and all bits are zero). The sink node corresponds to no state in particular. We've got directed edges from every vertex in one layer to every vertex in the next layer, where the edge weight is the distance between the two states in our earlier graph. The weights of the edges from the last layer to the sink are all 0. That is, we can precompute all those edge weights. This is the most expensive step of the computation and took 1.5 hours for Hello, World!.
With this graph set up, we can find the shortest path from the source to the sink quite quickly (it took 0.05s on my machine). For Hello, World! the desired states are:
0, 16960, 22052, 13828, 13828, 30389, 12487, 8307, 27299, 23450, 18922, 22778, 18682, 18459
where the least significant 7 bits correspond to the switches and the most significant 8 bits to Pada's bits.
Now we go back to the first graph and find the actual edges (i.e. operations) corresponding to the shortest path between each pair of subsequent states, and end each of them with a w. Voilà, an optimal solution (based on the above assumptions).
Here is the full Mathematica if anyone ever wants to metagolf a different string in Pada:
string = "Hello, World!";
width = StringLength@string;
getState[letter_, state_] := (
{shift, switchState} = IntegerDigits[state - 1, 16, 2];
bits = RotateRight[
IntegerDigits[ToCharacterCode[letter][[1]], 2, 8], shift];
switchState = IntegerDigits[switchState, 2, 4];
switches = {-1, -1, -1, -1, -1, -1, -1};
{top, middle, bottom} = IntegerDigits[shift, 2, 3];
switches[[1]] = top;
If[top < 1,
switches[[2]] = middle;
If[middle < 1,
switches[[4]] = bottom,
switches[[5]] = bottom
],
switches[[3]] = middle;
If[middle < 1,
switches[[6]] = bottom,
switches[[7]] = bottom
]
];
For[i = 1, i <= 7, ++i,
If[switches[[i]] < 0,
switches[[i]] = First@switchState;
switchState = Rest@switchState
]
];
{bits, switches}
)
encode[state_] := FromDigits[Join @@ state, 2]
decode[id_] := Partition[IntegerDigits[id, 2, 15], 8, 8, 1, {}]
getBitFromSwitches[switches_] := (
If[switches[[1]] < 1,
If[switches[[2]] < 1,
1 + switches[[4]],
3 + switches[[5]]
],
If[switches[[3]] < 1,
5 + switches[[6]],
7 + switches[[7]]
]
]
)
toggle[list_, index_] := ReplacePart[list, index -> 1 - list[[index]]]
stateEdges = Flatten@Table[
{bits, switches} = decode@id;
bit = getBitFromSwitches@switches;
{
Labeled[id \[DirectedEdge] encode@{bits~toggle~bit, switches},
"~"],
Labeled[id \[DirectedEdge] encode@{bits, switches~toggle~1}, "."],
If[switches[[1]] < 1,
{
Labeled[id \[DirectedEdge] encode@{bits, switches~toggle~2},
"o"],
Labeled[
id \[DirectedEdge] encode@{bits, switches~toggle~1~toggle~3},
"q"],
If[switches[[2]] < 1,
Labeled[id \[DirectedEdge] encode@{bits, switches~toggle~4},
"O"],
Labeled[id \[DirectedEdge] encode@{bits, switches~toggle~5},
"O"]
],
If[switches[[3]] < 1,
Labeled[
id \[DirectedEdge]
encode@{bits, switches~toggle~1~toggle~3~toggle~7}, "Q"],
Labeled[
id \[DirectedEdge]
encode@{bits, switches~toggle~1~toggle~3~toggle~6}, "Q"]
]
},
{
Labeled[id \[DirectedEdge] encode@{bits, switches~toggle~3},
"o"],
Labeled[
id \[DirectedEdge] encode@{bits, switches~toggle~1~toggle~2},
"q"],
If[switches[[3]] < 1,
Labeled[id \[DirectedEdge] encode@{bits, switches~toggle~6},
"O"],
Labeled[id \[DirectedEdge] encode@{bits, switches~toggle~7},
"O"]
],
If[switches[[2]] < 1,
Labeled[
id \[DirectedEdge]
encode@{bits, switches~toggle~1~toggle~2~toggle~5}, "Q"],
Labeled[
id \[DirectedEdge]
encode@{bits, switches~toggle~1~toggle~2~toggle~4}, "Q"]
]
}
]
}
,
{id, 0, 2^15 - 1}];
stateGraph =
Graph[# & @@@ stateEdges, EdgeLabels -> Rule @@@ stateEdges];
uid = 0;
layers = Join[{{{uid++, 0}}},
Table[{uid++, encode@getState[#, i]}, {i, 128}] & /@
Characters@string, {{{uid++, -1}}}];
edges = Flatten[Table[
from \[DirectedEdge] to
,
{from, #},
{to, #2}
] & @@@ Partition[layers, 2, 1], 2];
Timing[weights = (
{from, to} = Last /@ List @@ #;
If[to < 0,
0,
GraphDistance[stateGraph, from, to]
]
) & /@ edges;]
characterGraph = Graph[edges, EdgeWeight -> weights];
Timing[path =
Last /@ Most@
FindShortestPath[characterGraph, {0, 0}, layers[[-1]][[1]]]]
(PropertyValue[{stateGraph, #}, EdgeLabels] & /@
DirectedEdge @@@
Partition[FindShortestPath[stateGraph, ##], 2, 1] <> "w" & @@@
Partition[path, 2, 1]) <> ""
MachineCode, 68 62 bytes
e80d00000048656c6c6f2c20576f726c6421596a015b6a0d5a6a0458cd80c3
Credit to ceilingcat for finding this (and for the language inspiration). Try it online!
Here's a hacky version that isn't true machine code but works with my language.
MachineCode, 54 bytes
e80d00000H656c6c6f2c20576f726c6421596a1[6adZ6a4Xcd80c3
Abuses the current compiler's parser. Try it online!
Dodos, 167 164 160 159 bytes
* 2
1 0 4
L
L
1 *
4 3 1
2 1 1
2 2 3
1 *
4 *
L
+ 0 0 4
3 1 1
L
3 1 4
*
2 4
+
dot
i
+ j
j
dip + dab
0
1
i + 0
2
i 1
3
i 2
4
i 3
@Thanks to @Leo for golfing off 1 byte!
Mornington Crescent, 3614 3568 bytes
Thanks to NieDzejkob for saving 46 bytes by using shorter line names.
Take Northern Line to Hendon Central
Take Northern Line to Bank
Take Circle Line to Bank
Take District Line to Gunnersbury
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Circle Line to Victoria
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Cannon Street
Take Circle Line to Hammersmith
Take Circle Line to Cannon Street
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Paddington
Take District Line to Acton Town
Take Piccadilly Line to Holloway Road
Take Piccadilly Line to Acton Town
Take District Line to Acton Town
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take Circle Line to Notting Hill Gate
Take District Line to Upminster
Take District Line to Notting Hill Gate
Take District Line to Upminster
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Circle Line to Victoria
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Mile End
Take District Line to Hammersmith
Take Circle Line to Notting Hill Gate
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Mile End
Take District Line to Paddington
Take Circle Line to Paddington
Take District Line to Acton Town
Take Piccadilly Line to Heathrow Terminals 1, 2, 3
Take Piccadilly Line to Holborn
Take Central Line to Holborn
Take Central Line to Mile End
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Barking
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Barking
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Wood Lane
Take Circle Line to Victoria
Take Circle Line to Victoria
Take District Line to Gunnersbury
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take District Line to Mile End
Take Central Line to Fairlop
Take Central Line to Mile End
Take District Line to Barking
Take District Line to Upminster
Take District Line to Upminster
Take District Line to Hammersmith
Take Circle Line to Notting Hill Gate
Take District Line to Upminster
Take District Line to Mile End
Take District Line to Gunnersbury
Take District Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take District Line to Mile End
Take District Line to Richmond
Take District Line to Mile End
Take District Line to Paddington
Take Circle Line to Paddington
Take District Line to Richmond
Take District Line to Bank
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Stepney Green
Take District Line to Hammersmith
Take District Line to Stepney Green
Take District Line to Upney
Take District Line to Notting Hill Gate
Take Circle Line to Notting Hill Gate
Take Circle Line to Notting Hill Gate
Take District Line to Upminster
Take District Line to Upney
Take District Line to Upminster
Take District Line to Bank
Take Circle Line to Bank
Take Northern Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Paddington
Take Circle Line to Bank
Take Circle Line to Bank
Take Northern Line to Mornington Crescent
This is most certainly suboptimal, but it's half the size of the solution on esolangs.
Hello, World is constructed via slicing the following station names and concatenating the results:
Hendon Central
▀▀
Holloway Road
▀▀▀
Heathrow Terminals 1, 2, 3
▀▀
Wood Lane
▀▀
Fairlop
▀▀
Richmond
▀
Finally, I'm computing the character code of ! as (2<<4)+1 == 33. All these parts are concatenated in Paddington and finally printed in Mornington Crescent.
Note: The language doesn't specify whether it's possible to travel to same station twice in a row, but the interpreter does allow it, so I've made use of it.
R16K1S60, 42 40 bytes
Program:
C301 000D 0001 5180 2C20 A539 0008 5100 C589 00FF 4701 0003 1000 4865 6C6C 6F2C 2057 6F72 6C64 2100
Source:
[C301 000D] mov sp,hello ;set the stack pointer to the start of the message
[0001 ] dw 1 ;do nothing + skip next instruction
loop:
[5180] send 0,cx ;output cx (skipped the first time)
[2C20] pop bx ;read a value into register bx
[A539 0008] shr bx,cx,8 ;copy bx into cx, shift bx 8 bits to the right
[5100] send 0,bx ;output bx
[C589 00FF] @flags and cx,0xFF ;get the lower 8 bits of cx
[4701 0003] jnz loop ;repeat if cx is not 0
[1000] hlt ;end
hello:
[4865 6C6C 6F2C 2057 6F72 6C64 2100] db "Hello, World!" ;byte data
Pyt, 40 39 bytes
89*2ᴇ⁺Đ7+ĐĐ3+5⬡⁻2⁵9²6+Đ4!+Đ3+Đ6-2ᴇĐ₃áƇǰ
Explanation:
89* Pushes 72 ('H')
2ᴇ⁺ Pushes 101 ('e')
Đ7+ Duplicates 101, then adds 7 ('l')
Đ Duplicates 108 ('l')
Đ3+ Duplicates 108, then adds 3 ('o')
5⬡⁻ Pushes 44 (',')
2⁵ Pushes 32 (' ')
9²6+ Pushes 87 ('W')
Đ4!+ Duplicates 87, then adds 24 ('o')
Đ3+ Duplicates 111, then adds 3 ('r')
Đ6- Duplicates 114, then subtracts 6 ('l')
2ᴇ Pushes 100 ('d')
Đ₃ Duplicates 100, then divides by 3 (Python 2-style integer division)
á Replaces the stack with an array containing the stack's contents
Ƈ Cast to unicode characters
ǰ Join strings
Implicit print
Brain-Flak, 144 138 bytes
((((((((((((()()){}){}){}){}()))){}{}())([][]){})[][])[[]]())[((()[]){}){}])([()[]](([]([](([][]([](()[][]){})))[]{}[])[[]])))(([][][]){})
The product of my code from the Text to Brain-Flak challenge. Beats the previous answer by 4 bytes! Wheat Wizard has since updated to beat mine by 2. And my code has produced a 140 byte solution (which I've golfed a further 2 bytes off).
Explanation coming as soon as I understand it myself...
How It Works:
Note that Brain-Flak is a stack based language which outputs the stack on exit. This means the text has to pushed to the stack in reverse.
((((((((((((()()){}){}){}){}()))){}{}())([][]){})[][])[[]]())[((()[]){}){}])
This first part pushes "World!". This part is actually near identical to Wheat Wizard's answer, and has the same byte count.
( Pushing "W"
( "o"
( "r"
( "l"
( "d"
( "!"
(((((
(()()) Push 2
{}) Pop the 2 to push 4
{}) Pop the 4 to push 8
{}) Pop the 8 to push 16
{}()) Pop the 16 and create a 1 to push 33 ("!")
)){}{}()) Create two copies of 33 and pop them to push 99 and a 1 to push 100 ("d")
([][]) Push the stack height (2) twice to the stack
{}) Pop the 4 and push 8 + 100 = 108, ("l")
[][] Add the stack height (3) twice to the current value
) Push 108 + 3*2 = 114 ("r")
[[]]() Add negative stack height (4) and 1 to the current value
) Push 114 + (-4) + 1 = 111 ("o")
[ Subtract
(
(()[]) Push stack height (5) + 1
{}) Pop the 6 to create 12
{} Pop the 12 to create 24
]) Push 111 - 24 = 87 ("W")
This part pushes "ello, "
([()[]](([]([](([][]([](()[][]){})))[]{}[])[[]])))
( "e"
[()[]] Save negative stack height (6) and 1 for later (-7)
( "l"
( "l"
[] Save stack height (6) for later
( "o"
[] Save stack height (6) again
(( ","
[][] Save stack height (6) twice (12)
( " "
[] Save stack height (6)
(()[][]){} Push 1 + stack height (6)*2 = 13 and double it = 26
) 26 + 6 = 32 (" ")
) 32 + 12 = 44 (",")
)[]{}[] Add the stack height (9), pop the 44 and add the stack height again (8)
) 44 + 9 + 44 + 8 + 6 (saved) = 111 ("o")
[[]] Subtract stack height (9)
)) Push 111 - 9 + 6 (saved) = 108 ("l") twice
) Push 107 - 7 = 100 ("e")
And finally (([][][]){}) pushes "H" by adding the stack height (12) three times and doubling it.
PHP (on a standard Apache Server, result needing to target STDOUT), 30 27 Bytes
<?php die("Hello, World!");
Note: this is not to detract form earlier PHP example relied on an option assuming PHP wasn't being used as a webserver and abusing the HTML-effect outside of ?php tags to have an answer that was just "Hello, World!"
That said, that solution made some non-standard server assumptions which aren't common with PHP. So I'm presenting an alternative that assumes a normal server layout, but still needs to go to STDOUT. This is not to detract from the previous posters example, but to present one in a different setting with different constraints.
Note: originally thought using
<?php fwrite(STDOUT,"Hello, World!"); ?>
would be the only way, but then realized the die (normally used killing the script with an error) outputted to STDOUT and didn't use extra variables.
Updated: Cut off a few bytes recalling that "die" wont' bother with anything after itself, so didn't need the closing ?>.
Note: Worth noting, that if shorttags were on with a PHP5 server, could drop down 3 more bytes to 24 bytes with
<? die("Hello World!");
However, I was specifically going a standard server, and shortags are now off by default making a server with them on no longer standard.
Example (courtesy of Scrooble): Try It Online!
QUARK, 46 bytes
33 100^8+^6+^3−87 32 44 111^3−^^7−72›I
Sets up the numbers in reverse order, with quick number twiddling used for the lowercase characters, as they are quite close together.
ALPHA, 36 bytes
ALPHA is a palindomic alphabetical esoteric programming language made by me and caird. Thought it would be fun to write an answer here.
ALPHA is made of mirrored alphabetical "Containers" that perform programming commands.
KMDHello World!DMK
Explanation:
K - Start line container
M - Start print container
D - Start string container
Hello World!
D - End string container
M - End print container
K - End line container
This lang is WIP. If you want to fix bugs, fork the interpreter, or contribute to completing the interpreter, Go to ALPHA's repository.
Fueue, 44 42 41 40 bytes
Thanks to Ørjan Johansen for saving 2 bytes.
72:108)<101[44+-6:114)32[100 33H]87]:111
Explanation
Fueue is, as the name suggests, a queue-based language, which is a lot more mindboggling than it sounds (although a lot of that is due to the fact that the program and the data reside in the same queue).
Here is a breakdown of the program's execution (there are no negative integer literals in Fueue, so there's no syntax for them; I'll be representing the minus sign as _ to distinguish it from the negation command -):
Cmd Explanation Queue
72 Print 'H'. :108)<101[44+-6:114)32[100 33H]87]:111
:108 Duplicate 108. )<101[44+-6:114)32[100 33H]87]:111 108 108
) Inactive. <101[44+-6:114)32[100 33H]87]:111 108 108)
< Inactive. 101[44+-6:114)32[100 33H]87]:111 108 108)<
101 Print 'e'. [44+-6:114)32[100 33H]87]:111 108 108)<
[...] Inactive. :111 108 108)<[44+-6:114)32[100 33H]87]
:111 Duplicate 111. 108 108)<[44+-6:114)32[100 33H]87]111 111
108 Print 'l'. 108)<[44+-6:114)32[100 33H]87]111 111
108 Print 'l'. )<[44+-6:114)32[100 33H]87]111 111
) Inactive. <[44+-6:114)32[100 33H]87]111 111)
< Append to block. 111)[44+-6:114)32[100 33H]87 111]
111 Print 'o'. )[44+-6:114)32[100 33H]87 111]
) Deblock. 44+-6:114)32[100 33H]87 111
44 Print ','. +-6:114)32[100 33H]87 111
+ Inactive. -6:114)32[100 33H]87 111+
- Negate 6. :114)32[100 33H]87 111+_6
: Duplicate 114. )32[100 33H]87 111+_6 114 114
) Inactive. 32[100 33H]87 111+_6 114 114)
32 Print ' '. [100 33H]87 111+_6 114 114)
[...] Inactive. 87 111+_6 114 114)[100 33H]
87 Print 'W'. 111+_6 114 114)[100 33H]
111 Print 'o'. +_6 114 114)[100 33H]
+ Add -6 and 114. 114)[100 33H]108
114 Print 'r'. )[100 33H]108
) Deblock. 108 100 33H
108 Print 'l'. 100 33H
100 Print 'd'. 33H
33 Print '!'. H
H Halt the program.
I guess the more interesting question is how on earth did we get here. I started from the basic "Hello, World!":
72 101 108 108 111 44 32 87 111 114 108 100 33H
My primary goal was to get rid of the duplicate 108 for ll, since Fueue has a duplication command. So the naive thing to try is this:
72 101:108 111 44 32 87 111 114 108 100 33H
The problem is that now the 108 doesn't get printed when its duplicated: every command in Fueue puts the result at the end of the queue. So after printing He, and duplicating the 108 we'd end up with this queue:
111 44 32 87 111 114 108 100 33H108 108
Which would just print o, World! and then halt the program, dropping the ll completely.
So we need to delay the execution of everything from 111 to H until after we had time to print the ll. To delay a piece of code by one cycle through the queue, we can wrap it in a block and "unblock" it:
72 101:108)[111 44 32 87 111 114 108 100 33H]
This works! It prints He, then duplicates the 108, then puts the entire rest of the code after the double 108 so we have this queue now:
108 108 111 44 32 87 111 114 108 100 33H
Which is exactly what we want. But we can save one more byte: since the 108 don't get printed immediately, we're free to move the 72 and 101 around in the program: they're going to be printed in the first cycle through the queue no matter what and the 108s are going to end up after them. So by moving the 101 to the end of the program, we can avoid the space between the two numbers.
At this point, we've got my initial 44-byte solution. But I wanted to get rid of the duplicate 111 as well, which seems kinda possible since one of them is now at the start of the block and we've got swap commands. So the first idea is to split up our block around the 111 and add in a duplicate and swap:
72:108~[44 32 87]:111)[114 108 100 33H]101
Of course, this doesn't quite work. There's a couple of problems here: a) we've got no deblock command for the first block. b) The swap happens on the first cycle through the queue, so it actually swaps the block with the duplication wreaking all sorts of havoc. What we really want is to duplicate the 111, then swap the block between the two numbers, but then we also want to deblock that before printing the second 111. That last part is an issue, because if we don't deblock the block the first time around, the 111 is going to printed on the second cycle (before the block can be executed), but if we do deblock it immediately, we can't swap it between the two numbers as a single unit.
The trick is to use the "append" command instead of swap. Instead of trying to get from here:
[44 32 87]111 111
to here:
111 44 32 87 111
We are going to go here instead:
111[44 32 87 111]
By appending the first copy of 111 into the block, and making use of the automatic move to the end of the queue, we hit two birds with one stone: we've moved the , W characters in between the two os and we've ensured that the second 111 can't be printed before the other characters get deblocked. So the basic idea now looks something like this:
72:108<[44 32 87]:111)[114 108 100 33H]101
There's still an issue: the < should happen on the second cycle, because we need the duplication to happen first. We could go with the )[<] technique we used for the 44-byte solution, but we can also delay it by moving the101between it and its argument (because numbers are not a valid first argument for<, the<` will be inactive on the first cyle). We also still need a deblock command for the first block:
72:108)<101[44 32 87]:111)[114 108 100 33H]
Now we're talking. On the first cycle, ) has nothing to deblock so it just moves to the end. Likewise, < has nothing to append we have time to duplicate the 111. On the second cycle, ) still has nothing to deblock, and < appends one copy of the 111 to the block, whereas the other one gets printed. On the third cycle, ) can finally deblock [44 32 87 111], so that they get printed on the fourth cycle. Woohoo, we got Hello, Wo!
But wait: what about the second block? In the current code, it gets deblocked immediately in the first cycle so it would already be executed on the second cycle, printing rld! and terminating the program way too early. The trick is to move it into the first block. That way, it can't possibly be deblocked or executed before those other characters are printed:
72:108)<101[44 32 87)[114 108 100 33H]]:111
We're at 43 bytes now, but we can save two more. This is similar to how we saved the space in the original solution: it doesn't matter where the three numbers inside the outer block appear, because they are going to be printed on the first cycle regardless of where they are. So we can move the ) and the inner block between the numbers to avoid the spaces again:
72:108)<101[44)32[114 108 100 33H]87]:111
This does in fact delay the program by one cycle (because the ) can't deblock the inner block on the first cycle of the outer block), but it doesn't affect the program's result.
The final byte is saved with a bit of arithmetic, courtesy of Ørjan Johansen, to compute the 108 from the 114. The actual code to do so is fairly simple: +-6:114. We make a copy of the 114, we negated a 6 and then add them together to get 108. Since -6 is not a negative literal, but a command applied to a 6, this computation takes two cycles. Thankfully, the : delays the 114 as well, so this just works out. We also now need to remove this from the inner block, so that we have enough time for these two cycles to go through before the d! is printed:
72:108)<101[44+-6:114)32[100 33H]87]:111
MachineCode on x86_64, 125 bytes
4889f8c60748c6470165c647036cc647026cc647046fc647052cc6470620c6470757c647086fc6470972c6470a6cc6470b64c6470c21c6470d00c3
sbrk()
Requires string output via the s flag. Try it online!
This language works like so:
- The first line is machine code. This is translated to a C function.
- The second line is C code. It specifies the arguments to the function created in line 1.
- A command-line argument specifies how the function's return value is used.
So, the machine code is equivalent to:
char *a(char *s) {
s[0]='H'; s[1]='e'; s[2]=s[3]='l'; s[4]='o'; s[5]=','; s[6]=' '; s[7]='W'; s[8]='o'; s[9]='r'; s[10]='l'; s[11]='d'; s[12]='!'; s[13]=0;
return s;
}
I generated the machine code via my C lambda script.
Reflections, 41 bytes
_Hello, World!;#_#_#_#_#_#_#_#_#_#_#_#_#_
Explanation:
- The
_at (0|0) pushes my source to the stack. Hello, World!consists of no-ops;pops the first character.- 13 times
#_:#redefines (0|0)_at (1|0) prints a character
Dreaderef, 42 bytes
"?? ?\r?0"-1"Hello, World!\n"
Try it online! This file contains unprintables. Hexdump:
00000000: 2201 1004 013f 0704 3f09 3f07 5c72 063f "....?..?.?.\r.?
00000010: 0201 1510 0130 222d 3122 4865 6c6c 6f2c .....0"-1"Hello,
00000020: 2057 6f72 6c64 215c 6e22 World!\n"
There already is a Dreaderef submission, but this uses a different approach (looping through memory rather than printing out each character directly).
Ungolfed:
CODE.
; Dereference the string pointer
0. deref 16 4
; End the program if the value pointed to is zero
3. deref ? 7
6. bool ? 9
9. ? 7 13 ; Black magic
12. chro ?
; Increment the string pointer
14. add 1 21 16
; Go back to the beginning
18. deref 100 -1
DATA.
21. "Hello, World!\n"
NEUPL, 14 bytes
"!dlrow ,olleH
Explanation:
"!dlrow ,olleH
" Begin pushing characters to the stack.
! Push the character "!" to the stack.
d Push the character "d" to the stack.
l Push the character "l" to the stack.
r Push the character "r" to the stack.
o Push the character "o" to the stack.
w Push the character "w" to the stack.
Push the character " " to the stack.
, Push the character "," to the stack.
o Push the character "o" to the stack.
l Push the character "l" to the stack.
l Push the character "l" to the stack.
e Push the character "e" to the stack.
H Push the character "H" to the stack.
Implicitly stop pushing characters to the stack.
Implicitly pop and print each character in the stack.
Min, 20 bytes
"Hello, World!" puts
Stax, 8 bytes
èï┬▀↨╩4G
Explanation
èï┬▀↨╩4G is the packed form of the ASCII Stax code `jaH1"jS3!, which is in turn a compressed string literal of Hello, World! with the ending backtick omitted.
rk, 22 + 2 (-e) = 24 bytes
print: "Hello, World!"
Requires the -e flag (remove necessity for rk:start). Try it online!
AlphaBeta, 68 bytes
kjjjggDLeaCLcbbbCLLaaaCLjjjggDLjhhDLsFihhDLCLaaaCLdaaaaCLdaaCLsFiiDL
Felix, 21 bytes
print"Hello, World!";
Somebody linked to this language on PPCG and I thought it was interesting. In the interest of getting to know the language, I thought I'd write some programs in it.
The Felix docs all use print$ x instead of print x because print is a procedure and not a keyword, so use of the Haskell-style low-precedence application operator $ allows a slightly more natural syntax (compare print (1 + foo(5)); with print$ 1 + foo(5);. I'm not sure I agree completely with this, but it's just a convention and as I'm on PPCG I can break it without feeling guilty.
print is Felix's function to output something, with no trailing newline.
Momema, 63 bytes
0-9*072*0101*0108*0108*0111*044*032*087*0111*0114*0108*0100*033
This is a golfed version of the Hello World program given by TIO. The only difference is that we store the value -9 (the cell which is memory-mapped for character-based I/O) in cell 0, and then use *0 (the value of cell 0) instead of -9 everywhere. This wouldn't save bytes except that Momema will parse a leading 0 on a string literal as a separate number, so you can write e.g. *0108 instead of -9 108. This saves a byte for every write.
As hinted above, the program consists of a series of writes of various codepoints to -9 (the address which is memory-mapped to perform character-based I/O). In ungolfed form, it looks like:
0 -9
*0 72
*0 101
*0 108
*0 108
*0 111
*0 44
*0 32
*0 87
*0 111
*0 114
*0 108
*0 100
*0 33
Wumpus, 19 bytes
"!dlroW ,olleH"l&o@
Introducing the first 2D language on a triangular grid! (Unfortunately, you're not seeing much of that grid in this answer...)
Explanation
"!dlroW ,olleH" Like in many other Fungeoids, this pushes the individual code
points of the string to the stack.
l Push the stack depth, 13.
&o Print 13 characters.
@ Terminate the program.
R16K1S60 Assembly, 56 Bytes
a:
mov bx, .b
.l:
mov ax, [bx]
send 4, ax
add bx, 1
cmp bx, .c
jne .l
.h:
hlt
jmp .h
.b: dw "Hello, World!"
.c: dw 14
Writes output to screen peripheral the R16K1S60 in ASCII. Runs on The Powder Toy save 2012356. (See link in header for info)
Note: How exactly should this be scored? I'm assuming just score the size of the ASM.
Folders (pure), 195 folders
Some languages, like Folders, are a bit tricky to score
I'm not sure how it translates to bytes, but we can just count the number of folders: (src)
$ ls -l -R . | grep -c ^d
195
$ ls -l -R . | grep :$
./New folder:
./New folder/New folder:
./New folder/New folder/New folder:
./New folder/New folder/New folder (2):
./New folder/New folder/New folder (3):
./New folder/New folder/New folder (4):
./New folder/New folder (2):
./New folder/New folder (2)/New folder:
./New folder/New folder (2)/New folder/New folder:
./New folder/New folder (2)/New folder/New folder (2):
./New folder/New folder (2)/New folder/New folder (3):
./New folder/New folder (2)/New folder/New folder (4):
./New folder/New folder (2)/New folder/New folder (5):
./New folder/New folder (2)/New folder (2):
./New folder/New folder (2)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (2)/New folder (2):
./New folder/New folder (2)/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder:
./New folder/New folder (2)/New folder (3)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder/New folder/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder/New folder/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder/New folder/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder/New folder/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder/New folder (2)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder/New folder (2)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder/New folder (2)/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder/New folder (2)/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy:
./New folder/New folder (2)/New folder (3)/New folder - Copy/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy/New folder/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy/New folder/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy/New folder/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy/New folder/New folder (3)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy/New folder/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy/New folder (2)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy/New folder (2)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy/New folder (2)/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy/New folder (2)/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy/New folder (2)/New folder (4)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (10):
./New folder/New folder (2)/New folder (3)/New folder - Copy (10)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (10)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (10)/New folder/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (10)/New folder/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (10)/New folder/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (10)/New folder/New folder (3)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (10)/New folder/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (10)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (10)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (10)/New folder (2)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (10)/New folder (2)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (10)/New folder (2)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (10)/New folder (2)/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (10)/New folder (2)/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (11):
./New folder/New folder (2)/New folder (3)/New folder - Copy (11)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (11)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (11)/New folder/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (11)/New folder/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (11)/New folder/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (11)/New folder/New folder (3)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (11)/New folder/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (12):
./New folder/New folder (2)/New folder (3)/New folder - Copy (12)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (12)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (12)/New folder/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (12)/New folder/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (12)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (12)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (12)/New folder (2)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (2)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (2)/New folder/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (2)/New folder/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (2)/New folder/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (2)/New folder/New folder (3)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (2)/New folder/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (2)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (2)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (2)/New folder (2)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (2)/New folder (2)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (2)/New folder (2)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (2)/New folder (2)/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (2)/New folder (2)/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (3)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (3)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (3)/New folder/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (3)/New folder/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (3)/New folder/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (3)/New folder/New folder (3)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (3)/New folder/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (3)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (3)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (3)/New folder (2)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (3)/New folder (2)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (3)/New folder (2)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (3)/New folder (2)/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (3)/New folder (2)/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (4)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (4)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (4)/New folder/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (4)/New folder/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (4)/New folder/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (4)/New folder/New folder (3)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (4)/New folder/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (4)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (4)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (4)/New folder (2)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (4)/New folder (2)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (4)/New folder (2)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (4)/New folder (2)/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (4)/New folder (2)/New folder (3)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (4)/New folder (2)/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (4)/New folder (2)/New folder (4)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (5):
./New folder/New folder (2)/New folder (3)/New folder - Copy (5)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (5)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (5)/New folder/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (5)/New folder/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (5)/New folder/New folder (3)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (5)/New folder/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (5)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (5)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (5)/New folder (2)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (5)/New folder (2)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (5)/New folder (2)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (5)/New folder (2)/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (5)/New folder (2)/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (6):
./New folder/New folder (2)/New folder (3)/New folder - Copy (6)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (6)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (6)/New folder/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (6)/New folder/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (6)/New folder/New folder (3)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (6)/New folder/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (6)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (6)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (6)/New folder (2)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (6)/New folder (2)/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (6)/New folder (2)/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (7):
./New folder/New folder (2)/New folder (3)/New folder - Copy (7)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (7)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (7)/New folder/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (7)/New folder/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (7)/New folder/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (7)/New folder/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (7)/New folder/New folder (4)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (7)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (7)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (7)/New folder (2)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (7)/New folder (2)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (7)/New folder (2)/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (7)/New folder (2)/New folder (3)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (7)/New folder (2)/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (7)/New folder (2)/New folder (4)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (8):
./New folder/New folder (2)/New folder (3)/New folder - Copy (8)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (8)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (8)/New folder/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (8)/New folder/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (8)/New folder/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (8)/New folder/New folder (3)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (8)/New folder/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (8)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (8)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (8)/New folder (2)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (8)/New folder (2)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (8)/New folder (2)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (8)/New folder (2)/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (8)/New folder (2)/New folder (3)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (8)/New folder (2)/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (8)/New folder (2)/New folder (4)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (9):
./New folder/New folder (2)/New folder (3)/New folder - Copy (9)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (9)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (9)/New folder/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (9)/New folder/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (9)/New folder/New folder (3):
./New folder/New folder (2)/New folder (3)/New folder - Copy (9)/New folder/New folder (3)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (9)/New folder/New folder (4):
./New folder/New folder (2)/New folder (3)/New folder - Copy (9)/New folder/New folder (4)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (9)/New folder (2):
./New folder/New folder (2)/New folder (3)/New folder - Copy (9)/New folder (2)/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (9)/New folder (2)/New folder/New folder:
./New folder/New folder (2)/New folder (3)/New folder - Copy (9)/New folder (2)/New folder (2):
Folders (concise), 2 folders + (5 + 13) bytes
./Setup
./Setup/Hello, World!
Ook!, 1426 bytes
Ook! is a joke esoteric programming language created by David Morgan-Mar. It is identical to Brainfuck, except that the instructions are changed into Orangutan words. It represents the first, although unfortunately not the last, in a long line of trivial Brainfuck command substitutions. As such, it is a member of the TrivialBrainfuckSubstitution family of programming languages.
Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook.
Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.
17, 71
777{44 $ 5g $ 66 : : $ $ 69 : $ 1f $ 52 $ $ 6c $ $ 5f $ 1g $ a $ 0 @}
Explantation:
Pushes ascii values for Hello World!(in base 17). Then store 17 at 0, to make it exit by relying on the fact that if it tries to pop at number and the stack is empty it return 17 to save two characters.
Hexagony, 30 29 bytes
H;_e;r;2l.;P.QW;l/P1;@;0d;\o;
Source laid out:
H ; _ e
; r ; 2 l
. ; P . Q W
; l / P 1 ; @
; 0 d ; \ o
; . . . .
. . . .
One more byte off!
Here's a crappy gif of the program in action.
Given there's 2 nops inside the program itself, I'm confidant this can be golfed by at least one more byte. I'm willing to offer a bounty for a smaller version.
Old version:
H;e;r;0Pld;P_1;l;;o;Q\;W\;$2@\
Source laid out:
H ; e ;
r ; 0 P l
d ; P _ 1 ;
l ; ; o ; Q \
; W \ ; $ 2
@ \ . . .
. . . .
Reuses the same tricks as Martin Ender's answer, i.e Q2 printed is the comma, P0 is the space, P1 is the bang, but manages to be 2 bytes shorter through clever mirroring to reuse several ;s and the o.
Explanation:
Here's a coloured Hexagony grid to show the non-branching path that the pointer takes:
The executing code, ignoring mirrors, is:
H;e;l;;o;Q2;P0;W;d$;o;$2r;0Pl;Wd;P1;@
Filtering out the skipped instructions and the literals that are overwritten by other literals, we are left with:
H;e;l;;o;Q2;P0;W;o;r;l;d;P1;@
Which simply prints "Hello, World!"
After a few attempts, I gave up on a size 3 Hexagony answer. You need a minimum of 12 instructions out of 19 reserved for string literals, along with three ;s for printing and one @ for ending the program. This leaves only 3 spaces for IP management and memory management, provided you find the optimal path that reuses both the o and the l. From all this, I'll rule that a size 3 answer is impossible, though I'll give a sizable bounty to anyone who proves me wrong.
Rust, 34 bytes
fn main(){print!("Hello, World!")}
Short, Sweet, and simple.
I do not believe it's possible to make this program any smaller. If someone does, congratulations.
Commentator, 197 bytes
{- -}!/*{-{- {- -}! /* /*/* /*-}-}# {- -}!/*{- e#-}///*{-e#-}//{-# -}!{-# e#-}///*{-{-/* /*{-e#-}// /*-}-} /*# {- -}!/*
I'm genuinely surprised it took me this long to make a somewhat golfed Hello, World! program in Commentator.
Dreaderef, 31 bytes
This file contains unprintables. Here is a reversible hexdump created with xxd:
00000000: 2206 4806 6506 6c06 6c06 6f06 2c06 2006 ".H.e.l.l.o.,. .
00000010: 5706 6f06 7206 6c06 6406 2106 5c6e 22 W.o.r.l.d.!.\n"
How does it work?
The reason this file is so unreadable is because it makes use of string literals to golf the code. The preprocessor expands string literals into their respective character values. The actual numbers this represents are:
6 72 6 101 6 108 6 108 6 111 6 44 6 32 6 87 6 111 6 114 6 108 6 100 6 33 6 10
6 is the command associated with chro (char output). So this code looks like this:
chro 72
chro 101
chro 108
chro 108
chro 111
chro 44
chro 32
chro 87
chro 111
chro 114
chro 108
chro 100
chro 33
chro 10
095, 16 bytes
'Hello, World!'s
First answer in my attempt at making a programming language! Pushes Hello, World! to the stack and then prints.
Pain-Flak, 152 bytes
)))))}{}{)))}{))(}{((((])][][][([(])()()([((]][[()()()(])}{][][)][(][([())(]][][][][][[))(]][[)][][)][][][][))(}{}{))))(}{)}{)}{))()()()((((((((((((}><{
This is a trivial modification of @HeebyJeebyMan's “Hello, World!” in Brain-Flak. They also discovered a slightly different solution with the same length shortly before I golfed mine down to this byte count.
How it works
Pain-Flak is transpiled to Brain-Flak as follows.
- Let the Pain-Flak source code be S.
- Transliterate S, replacing all opening brackets with their closing counterparts and viceversa. Call the result T.
- Reverse S character by character. Call the result R.
- The Brain-Flak source code is T || R, where || symbolizes concatenation.
For the Pain-Flak program in this answer, transpilation yields the following Brain-Flak program.
((((({}{}((({}((){}))))[([][][])])[()()()]))[[]])()()()[({}[][]([])[])])(()[[][][][][]](()[[]]([][]([][][][]((){}{}((((){}({}({}(()()()())))))))))))
{<>}
{<>}
(((((((((((()()()()){}){}){}()))){}{}())[][][][])[][])[[]]())[[][][][][]]())([([]([])[][]{})]()()()([[]](([()()()]([([][][])](((({}()){}))){}{})))))
Newlines have been inserted for "readability". The programs works as follows.
Line 1 pushes garbage on the first stack.
{<>}on line 2 switches stacks until the top of the stack is non-zero.This switches to the second stack.
{<>}does the same. Since the top of the second stack is 0, we stay on the second stack.Line 4 is just @HeebyJeebyMan's “Hello, World!” in Brain-Flak, which never switches stacks and is, therefore, unaffected by the garbage on the first stack.
Retina, 14 bytes
Hello, World!
A program with two lines describes a single regex replacement. Here, we just replace the empty string (i.e. the input) with the desired output.
For one additional byte, we can make it work with non-empty input, by using a constant stage:
K`Hello, World!
Triangularity, 71 49 bytes
.... ....
..."!"...
.."ld"+..
." Wor"+.
"Hello,"+
Saved 22 bytes thanks to an ingenious method by Mr. Xcoder!
Old version
...........
...."H"....
..."ell"...
.."o, Wo"..
."rld!"W"".
.....J.....
Broccoli, 23 bytes:
(print "Hello, World!")
Broccoli is a random language I ran across whilst recording the PPCG podcast. I promised that I would post an answer in it, so here it is. The better way of writing this (in 28 bytes) would be:
(print "Hello, World!" endl)
But since the newline is optional, this works.
Clean, 30 bytes
module m
Start="Hello, World!"
TIO link is 3 bytes longer to match TIOs file name: main.icl
Stuck, 0 bytes
Well, can't get shorter than that...
An empty program will output Hello, World! in Stuck.
Ace, 1 byte
H
This is a golfing language I am currently in the process of making, so I thought I'd post it here. It's based on Aceto. I wasn't quite satisfied with what Aceto had to offer but I really liked using it so I decided I'd make my own language and include more builtins and NOT RUN THE IP ON A HILBERT CURVE. It currently has ~30 commands and I am improving it every day. I plan to get it officially on TIO by August 2018
face, 41 bytes
(Hello, World!
)\$*m%*7%+%%%,c'$,ioow%$%o
Explanation:
(...) comment, skipped over by interpreter but used to embed string in source
\$* assign $ to a pointer to the source code and * to a pointer to the IP
m%* malloc space for %, a variable which will be used to store the length
7%+%%% set % to 14 in a roundabout way (% = 7, % += %), the length of the string
,c'$,i step into char mode to increment $, setting the start of the string
oo set o to stdout
w%$%o fwrite(str, 14, stdout), throwing the return value into %
Assembunny, 100 bytes
out 72
out 101
out 108
out 108
out 111
out 44
out 32
out 119
out 111
out 114
out 108
out 100
out 33
I think I could have miscounted.
Explanation
This code uses the extra signal generator instruction out x from day 25 for output.
This is the output:
Dec 72 101 108 108 111 44 32 119 111 114 108 100 33
Hex 48 65 6C 6C 6F 2C 20 77 6F 72 6C 64 21
ASCII H e l l o , w o r l d !
DOBELA, 214 bytes
,,.,,,,.,..,,.,,,..,..,,,...,,.,,..,....,.,.,...,,.,,,,,,,.,..,,,..,....,..,..,,,..,..,,,..,,.,.,.,,.,,,$^
. #
With comments:
! d l r o W , o l l e H
,,.,,,,. ,..,,.,, ,..,..,, ,...,,., ,..,.... ,.,.,... ,,.,,,,, ,,.,..,, ,..,.... ,..,..,, ,..,..,, ,..,,.,. ,.,,.,,,$^
. #
H = ascii 0x48 = 01001000 = ,.,,.,,,
Put bits in FIFO then print them by hitting ^ from below.
SNOBOL4 (CSNOBOL4), 29 28 bytes
OUTPUT ='Hello, World!'
END
Thanks to Ørjan Johansen for saving a byte!
LLVM IR 4.0.1, 149 145 152 bytes
declare i8@puts(i8*)@t=global[14 x i8]c"Hello, World!\00"define void@main(){call i8(i8*)@puts(i8*getelementptr([14 x i8],[14 x i8]*@t,i1 0,i1 0))ret void}
I'm not very good in LLVM IR, so chances are good, that it's possible with fewer bytes.
Ungolfed Version:
declare i8 @puts(i8*) ; Declare puts from C standard. i8, was the shortest return type possible.
@t=global [14 x i8] c"Hello, World!\00" ; Hello world string as global, to have a pointer to it.
define void @main(){
call i8(i8*) @puts(i8* getelementptr([14 x i8], [14 x i8] *@t, i1 0, i1 0)) ; Get pointer to constant "Hello, World!" and pass it to puts
ret void
}
LLVM IR, 110 bytes
@s=global[13x i8]c"Hello, World!"declare i8@puts([13x i8]*)define i8@main(){call i8@puts([13x i8]*@s)ret i8 0}
Whispers, 29 bytes
> "Hello, World!"
>> Output 1
An even newer language than Verbosity.
How it works
> "Hello, World!" - Line 1
> - Yield a constant value, which is...
"Hello, World!" - The string "Hello, World!"
>> Output 1 - Line 2
>> - Replace numbers with line references
Output - Output the value...
1 - ...on line 1
Verbosity, 382 bytes
Include<Integer>
Include<MetaFunctions>
Include<Output>
Include<String>
Integer:DefineVariable<o;1>
Output:DefineVariable<P;0>
String:DefineVariable<s;"Hello, World!">
String:RedefineVariable<s;String:RemoveCharactersFromStart<s;o>>
String:RedefineVariable<s;String:TakeFirstCharacters<s;o>>
Output:DisplayAsText<P;s>
DefineMain<> [
MetaFunctions:ExecuteScript<MetaFunctions@FILE>
]
Ungolfed
Include<Integer>
Include<MetaFunctions>
Include<Output>
Include<String>
Integer:DefineVariable<one; 1>
Output:DefineVariable<STDOUT; 0>
String:DefineVariable<string; "Hello, World!">
String:RedefineVariable<string; String:RemoveCharactersFromStart<string; one>>
String:RedefineVariable<string; String:TakeFirstCharacters<string; one>>
Output:DisplayAsText<STDOUT; string>
DefineMain<> [
MetaFunctions:ExecuteScript<MetaFunctions@FILE>
]
I proudly present yet another language: Verbosity. Who needs to be good at code golfs, when you have a language like this?
Cubically, 124 123 111 99 78 bytes
-11 bytes thanks to TehPers, -12 thanks to language updates, -21 thanks to user202729
RU+432@6+50-4@6+3-4@6@6+1-00@6-331@6-00@6+4110@6+0000@6+1-00@6-0@6-2+4@6-331@6
Generated via this amazing algorithm.
There is a good explanation of Cubically in this question.
Cubically, the Rubik's Cube Programming Language, is the most complex language I have ever written, or dealt with, for that matter. It entirely comprises of operations on a single 3x3 Rubik's Cube in its memory, and one extra value, the "notepad".
The only way to perform mathematical operations is to take values from a certain cube face and add/subtract/multiply/divide it with the scratch pad value, replacing said value.
For example, performing /0 divides the notepad value by the sum of all integers on the 0-indexed face, or the first face.
The cube starts out initialized like this:
000
000
000
111222333444
111222333444
111222333444
555
555
555
Performing a 90-degree clockwise turn on the right face will make the cube look like this:
002
002
002
111225333044
111225333044
111225333044
554
554
554
Version from TehPers:
Here's a run-down of how the program works: (Note that I have replaced @6 with @ in the code, but changing each instance in the rest of this answer would be too tedious and I need to get back to real life.)
+53adds the DOWN face and RIGHT faces into the notepad, in this case, 45 and then 27. This results in 72, the ASCII code forH.@6prints the notepad value as ASCII.:2sets the notepad to the value of the FRONT face (18)./1divides the notepad by the LEFT face (9), resulting in 2.+551Adds the DOWN face (45) twice, then the LEFT face (9). As you can see, without rotating the cube, the faces will contain a total value equal to 9 times the index. For example, face index 5 has a value of 45, face index 1 has a value of 9, and so forth. After rotating the cube, this no longer applies.@6again prints the notepad value, ore.:5sets the notepad to the value of the DOWN face (45).+52adds the DOWN face (45) and the FRONT face (18) to the notepad.@66prints the current notepad value as a character twice. At this pointHellhas been printed, which should be good enough for this language. :P:3/1sets the notepad to the value of the RIGHT face (27), then divides the notepad by the value of the LEFT face (9), resulting in 3. Do you see the pattern yet?+552adds 108 to the notepad, or9*(5+5+2). Remember, if you rotate the cube, then the faces will not necessarily be multiples of 9!@6prints the notepad value as a character, finishing the word "Hello".- From this point there is nothing interesting. The program follows the pattern of setting the notepad value to whatever
c % 9is (wherecis the target character), then adding multiples of 9 to the notepad get to the target character. The faces are not rotated, so this isn't exactly the best showcase program for Cubically, but it's certainly simpler than what could be accomplished with rotating the faces. There may be a shorter way to write this program using rotations, though.
Original (written by hand >.<)
+53@6+1F2L2+0@6L2F2U3R3F1L1+2@66L3F3R1U1B3+0@6:4U1R1+00@6-000@6+50000@6+000000@6+2-000000@6-5+4000@6-00@6/0+00@6:0+0/0+00@6
The above Hello World program uses arbitrary turns that I fiddled with until they got some desired values. Eventually, I got the top face to add up to 4 and made do with that.
Here's a run-down of how the program works:
+5+3adds the DOWN face and RIGHT faces into the notepad, in this case, 45 and then 27. This results in 72, the ASCII code forH.@6prints the notepad value as ASCII.+1adds the LEFT face to the notepad value, resulting in 81.F2turns the FRONT face to look like this.L2turns the LEFT face to look like this.+0adds the UP face to the notepad, resulting in 101.@6prints memory as ASCIIe.L2F2U3R3F1L1turns the cube to look like this.+2adds the FRONT face to the notepad, resulting in 108.@66prints as ASCII twicell. At this pointHellhas been printed, which should be good enough for this language. :PL3F3R1U1B3turns the cube to look like this.+0adds the UP face to the notepad (resulting in 111),@6prints it as ASCIIo.:4sets the notepad to the BACK face36.U1R1turns the cube to look like this. The cube is not turned again 'cause this was about as good of a setup I could get.+0+0adds the UP face to the notepad twice, resulting in 44.@6prints as ASCII,.-000subtracts 12 from the notepad (32).@6prints as ASCII.- From this point there is nothing interesting except messing with the existing faces, particularly the top face (which has a convenient value 4), to print the remaining characters.
Implicit, 15 14 bytes
«Hello, World!
Pretty simple. « opens a string, implicit closing ». Implicit output.
Quetzalcoatl 17 15 bytes
"Hello, World!"
EDIT
I completely redesigned the language. The program pushes "Hello, World!" to stack, and implicitly prints.
P.S. I wrote Quetzalcoatl.
Excel VBA, 15 Bytes
Anonymous VBE immediate window function that takes no input and outputs Hello, World! to the VBE immediate window.
?"Hello, World!
INTERCAL, 285 bytes
DO,1<-#14
DO,1SUB#1<-#238
DO,1SUB#2<-#108
DO,1SUB#3<-#112
PLEASE DO,1SUB#4<-#256
DO,1SUB#5<-#64
DO,1SUB#6<-#194
PLEASE DO,1SUB#7<-#48
DO,1SUB#8<-#26
DO,1SUB#9<-#244
PLEASE DO,1SUB#10<-#168
DO,1SUB#11<-#24
DO,1SUB#12<-#16
PLEASE DO,1SUB#13<-#162
DO,1SUB#14<-#52
DO READ OUT,1
DO GIVE UP
Brain-Flak, 448 bytes
((()()()()()()()()()()())({}){})
((()()()()()()()()()())({})({})({})({})({})({})({})({}){})
(([][][][][][])({})({})({})({})({})({})({}){})
(([][][][][][]())({})({})({})({}){})
(([][][]()())({})({})({})({})({})({}){}[()])
(([][][][])({})({})({})({}){}[()])
(([]()())({})({}){})
(([]()()()())({})({}){})
(([]()()())({})({})({})({})({})({})({})({}){}())
((([]()()())({})({})({})({})({})({})({}){}))
(([][][()()])({})({})({}){}())
([]()())(({})({})({})({}){}()())
Newlines added for clarity
Spaced, 91 bytes
(q="Helo, Wrd!")[1]+q[3]+q[5]+q[5]+q[7]+q[9]+q[9+2]+q[9+4]+q[7]+q[9+6]+q[5]+q[9+8]+q[9+9+1]
Japt, 15 14 11 bytes
(using the ISO/IEC 8859 character encoding)
Japt is a shortened version of JavaScript. Interpreter
`HÁM, Wld!
There's an unprintable char in there, so here's a hexdump:
60 48 C1 4D 2C 20 57 8E 6C 64 21
` H Á M , W . l d !
Recently, @Vɪʜᴀɴ has helped me add in the shoco library for compressing strings. Using backticks around a string tells the interpreter to automatically decompress the string, and when a backtick is needed at the end of a program, you can leave it off. Thus, Japt now beats or ties all languages that don't have some sort of built-in to obtain "Hello, World!". (Including Pyth :D)
Symbolic Python, 200 bytes
Managed to cut down 16 bytes from my original example on the wiki. Note that the unprintable on line two is \xc2\x8d.
This can definitely be shorter, but it took me long enough. I'll come back to it another time.
__=-~(_==_)
__=`_`[~__]+`_>_`[__::__]+`''`[-__::~__**__]
_=_==_
___='%'+__[-_]
__,_=___+__[-~_]+__[_]*-~_+__[_>_]+', '+___+__[_>_]+`_`[_]+__[-~_-_]+__[~_]+'!',-~-~_
___=_*_<<_
_=__%(___,___+_*-~-~_)
Add++, 70 20 bytes
D,f,,"Hello, World!"
Simple function, implicit call and return. You can see the revision history for the old version.
Archway2, 182 bytes
\
/
>++>+++>+++>+<<<<-/>+>+>->+<<<<<-\>>.>---.+++++++..+++.>>++++.------------.<-.<.+++.------.--------.>>+.
\ \
\++++>
++++++++/ /
This program was derived from the Hello, World! program that I wrote for TIO. I realized that the code not inside the sub-loops can be aligned with the code inside the sub-loops removing some redundant direction changing. Unrolling the loop consisting of only a < to <<<< saves many bytes by not requiring the spaces to support the positioning of the reflectors. Flipping the main loop to go around the bottom of the program instead of the top allows the first few instructions of the main loop to be put on its own line while still being reachable from the start of the program. This lets us move the sub-loop closer to the edge of the program saving bytes.
Рапира (Rapira), 57 26 22 bytes
OUTPUT:"Hello, World!"
Or, more appropriately, (33 bytes):
ВЫВОД:"Привет Мир!"
Java 8, 76 bytes
Thought I would try to beat Geobit's answer :)
interface A{static void main(String[]a){System.out.print("Hello, World!");}}
Wierd, 1341 bytes
Unlike other languages where the symbols in a program determine which instructions are executed, in Wierd, it is the bends in the chain of arbitrary symbols that determine which instructions are executed.
From the website:
First, a Riddle:
Q: What do you get when you put three marginally-sane programmers on a mailing list with the Befunge and BrainF*** programming languages?
A: You get BeF***, and then they get Wierd.
...
Chris Pressey then jumped on it, created the angle-to-instruction mapping, and christened the entire mess "Wierd"--a cross between the words "weird" (which the language seemed to be) and "wired" (which would describe the appearance of programs written in the language).
Try it online at http://catseye.tc/installation/Wierd_(John_Colagioia)
EDIT: Dennis has killed this answer quite thoroughly with this
Even though this is much smaller than the sameple that comes with the interpreter I am positive this can be golfed more (and it has been - by Dennis) Please try to come up with something smaller and edit the question with that version.
,!dlroW ++
o # ++ +
l ++ + ++++
l +++ ++ ++ +
e + + ++ ++ + +
H + + ++ ++ + +
+ + ++ ++ +++
+ ++++ + ++
+ + ++ ++
+ +++++++ +++ ++ +
++ + + + ++ + ++++
+ + + ++ ++ +
+ + ++ ++ + +
+ ++++ + ++ + +
+ + ++ +++
+ +++++++
++ + +++
+ + + + ++
++ + + + ++ +
+ + + + ++ + ++++
+ + + ++++ + ++ +
+ + + + ++ + +
+ + + +++++++ + +
++++ + ++ + +++
+ + +
+ +++++++ +++
+ ++ +
+ ++ +
+ ++ +
++++++++++++ ++ ++ ++++
+ + + ++ ++ + +
++++ + ++ ++ +++++++
+ + ++
+ + ++
+ + ++
+ + ++
+ ++ +++
+ ++ +
+ +++++++ ++ +
+ + + ++ +
+ ++++ ++ ++ ++++
+ + ++ + +
+ + ++ +++++++
+ + ++
+ ++++++ +++++++ +++
++ + + + ++ +
+ ++++ ++ +
+ + +
+ ++++ ++ ++++
+ ++ + +
+ +++++++++++ +++++++
++
Bitwise, 149 bytes
MOV 1 &1 &1
OUT &72 1
OUT &101 1
OUT &108 1
OUT &108 1
OUT &111 1
OUT &44 1
OUT &32 1
OUT &87 1
OUT &111 1
OUT &114 1
OUT &108 1
OUT &100 1
OUT &33 1
Pretty simple - just prints integer literals (&x) as ASCII characters. MOV 1 &1 &1 sets the 1st register to 1, so that each line can save 1 byte (using 1 instead of &1). The second variable to OUT is not optional. If the second variable (register/frame register/literal) is true, the character will be printed, otherwise it will not.
ADJUST, 281 bytes
;I- & e$ & m- & g2Ph$ & a2$ & n$ & e2+- & g2Ph$ & OPh$ & m- & e- & n-
} AgR}; AgR}; A=AgR}; AgR}; AgR}; AgR}; AgR}; AgR}; AgR}; AgR}; AgR}; AC
Diagonal }; turn IP right. I-, e$, m-, etc. create ascii code in the accumulator and push it on both stacks.
A print char. gR};& move IP to the first line. = swap stacks. C exit.
Nhohnhehr, 181 bytes
+-----------+
|$010010000\|
|1100101011\|
|0110001101\|
|1000110111\|
|1001011000\|
|0100000010\|
|1011101101\|
|1110111001\|
|0011011000\|
|1100100001\|
|00001 @ \|
+-----------+
BrainFlump, 362 bytes
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++.+++++++:..+++.-------------------------------------------------------------------.------------.+++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++.+++.;.--------.-------------------------------------------------------------------.
Should be shorter once we fix loops, but that's it for now.
Recursiva, 15 14 bytes
"Hello, World!
This can also be done by explicitly using Por Print operator:
Recursiva, 16 bytes
P"Hello, World!"
PATH, 113 bytes
/++}+++++++}+++++}<$+++++++<
\+}++}++++++{{{{{-^}++.}+++.+++++++..+++.}++.}++++.}+++.{{{.+++.------.--------.}}+.
Apps Script + Google Sheets, 39 bytes
Script
function Q(){return"Hello, World!"}
Sheet
=q()
Original, 40 bytes
Script
function Q(){return "Hello, World!"}
Sheet
=q()
Emoji, 23 24 bytes
💬Hello, World!💬➡
Should be pretty clear. Just pushes Hello, World! and than outputs.
Sqirrel - Peter, 903 bytes
A couple notes about my golfing:
- The examples have punctuation at the end of sentences but the spec doesn't say that it should be there so I left it off.
- The spec says
The request consists firstly of the text "I wish I had a " then is followed by a thing.andlist of the variable-things you can use: ... an Applewhich is inconsistent so I used "I wish I had a Apple" because it is shorter. - The spec says
Here is [nr] [thing][s] Set the var to NR. Add an 's' if neededand even though the examples use Fishes the only ones that should be valid are Fish and Fishs and I chose Fish because I don't think it needs to be plural and it is shorter. - There is an exit command but the spec doesn't say what happens if the flow reaches the end of the text so I am assuming the program ends and I didn't use the exit command.
Here is my attempt:
I wish I had a Fish
Here is 72 Fish
I wish I had a Fish
Now everyone has it
I wish I had a Fish
Here is 101 Fish
I wish I had a Fish
Now everyone has it
I wish I had a Apple
Here is 108 Apples
I wish I had a Apple
Now everyone has it
I wish I had a Apple
Now everyone has it
I wish I had a Forrest
Here is 111 Forrests
I wish I had a Forrest
Now everyone has it
I wish I had a Fish
Here is 44 Fish
I wish I had a Fish
Now everyone has it
I wish I had a Fish
Here is 32 Fish
I wish I had a Fish
Now everyone has it
I wish I had a Fish
Here is 87 Fish
I wish I had a Fish
Now everyone has it
I wish I had a Forrest
Now everyone has it
I wish I had a Fish
Here is 114 Fish
I wish I had a Fish
Now everyone has it
I wish I had a Apple
Now everyone has it
I wish I had a Fish
Here is 100 Fish
I wish I had a Fish
Now everyone has it
I wish I had a Fish
Here is 33 Fish
I wish I had a Fish
Now everyone has it
JoshScript, 596 bytes
JOSHJoshJoshJoshJoshJoshJoshJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOshjoshjoshjoshjoshjoshjoshjoshjoshjoshjoshjoshjoshjoshjoshjoshjoshjoshjoshjoshjoshjoshjoshJoshJOSHJOshJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOshJOshJOSHJOSHJOSHJOshjosHjoshjoshjoshjoshjoshjoshjoshjoshjoshjoshjoshJOshjosHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOshjoshjoshjoshjoshjoshjoshjoshjoshjoshjoshJoshJoshjoshJOshJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOshJOSHJOSHJOSHJOshjoshjoshjoshjoshjoshjoshJOshjoshjoshjoshjoshjoshjoshjoshjoshJOshjosHjosHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOSHJOsh
JoshScript is an esoteric language that is made up entirely of joshes.
JoshScript is pretty easy to learn, below is the usage of JoshScript v1.01
JOSH increases the value by 1
josh decreases the value by 1
Josh multiplies the value by 2
josH divides the value by 2 and rounds down to the nearest integer
JOsh outputs the current value
joSH takes input and sets the value to the ascii repr. of the char
im not josh-obsessed i promise
Braingolf, 17 bytes
Got bored, made my own language, here's Hello World
"Hello, World!"&@
Explanation:
"Hello, World!" Push the 13 chars of Hello World to the stack as charcode integers
&@ Pop the entire stack and print as chars
Alternatively, here's hello world from before I added multi-char strings and printing:
#!#d#l#r#o#W# #,#o#l#l#e#H@@@@@@@@@@@@@
Explanation:
#! Push the charcode of char '!' to the end of the stack
.................... Do this for every character in "Hello, World!" in reverse order
@@@@@@@@@@@@@ Pop and print the last element of the stack 13 times
Sad-Flak, 199+3 bytes = 202 bytes
3 bytes for the -A arg. This lang uses a "codepage", where ≤≥ are one byte each (that is, I have a thing that replaces ` and ~ with those chars and runs it)
32
({}≤()≥)
(≤()≥)
99
({}≤()≥)
((<>[≤()≥]))
7
({}≤()≥)
((<>))≤()≥
5
({}≤()≥)
(≤()≥)
109
({}≤()≥)
(<>)(≤()≥)
85
({}≤()≥)
(≤()≥)
30
({}≤()≥)
(≤()≥)
42
({}≤()≥)
({≤()≥})(({()}))({()})(())
70
({}≤()≥)
≤≥
Explanation:
The main idea behind this is that the way Sad-Flak works, you can easily get it to repeat a line a constant number of times.
in Sad-Flak, there is a line pointer. The line pointer starts at the beginning
-> 32
({}≤()≥)
(≤()≥)
99
({}≤()≥)
((<>[≤()≥]))
7
({}≤()≥)
((<>))≤()≥
5
({}≤()≥)
(≤()≥)
109
({}≤()≥)
(<>)(≤()≥)
85
({}≤()≥)
(≤()≥)
30
({}≤()≥)
(≤()≥)
42
({}≤()≥)
({≤()≥})(({()}))({()})(())
70
({}≤()≥)
≤≥
however, the 32 is not actually a command. it is a simple way to express 32 blank lines. I could expand them for the demonstration, but then it would be unreadable. anyway.
So, the line pointer points at the first of 32 blank lines. When the line pointer points at a non-blank line, it will execute that line. when the line pointer points at a blank line, it will execute the first non-blank line after that line. that means we execute ({}≤()≥). What does this line do? This lang is a brainflak derivative, btw, so some of the brackets do the same thing, but not all
( push...
{} pop off the main stack and evaluate to that value, plus
≤ jump by the amount inside, evaluate to that value for the purpose of other commands
() 1
≥
)
so, this pops off the stack, adds one to it while jumping one forward, then pushes back on the stack. What is jumping? why are we jumping in the middle of a line?
Jumping in Sad-Flak is rather different to most other langs. Jumping does not take immediate effect, but rather moves the line pointer. when the line pointer is moved, nothing happens until the current line is finished executing. when it is finished, we see which line the line pointer points at, and execute that. If the line pointer didn't get moved, the same line gets executed again, and again, until it gets moved. however, all lines in this program either are blank, or they jump or halt. So, this line moves the line pointer one forward and increments top of stack.
What is the line pointer pointing at now? it's still on a blank line, so it does the same thing again, and again, until it gets to the line that it keeps executing
32
-> ({}≤()≥)
(≤()≥)
99
({}≤()≥)
((<>[≤()≥]))
7
({}≤()≥)
((<>))≤()≥
5
({}≤()≥)
(≤()≥)
109
({}≤()≥)
(<>)(≤()≥)
85
({}≤()≥)
(≤()≥)
30
({}≤()≥)
(≤()≥)
42
({}≤()≥)
({≤()≥})(({()}))({()})(())
70
({}≤()≥)
≤≥
Then, it executes it one last time, before moving to the next line. this end up with the charcode of ! on the stack (32 blanks + 1 actual line)
32
({}≤()≥)
-> (≤()≥)
99
({}≤()≥)
((<>[≤()≥]))
7
({}≤()≥)
((<>))≤()≥
5
({}≤()≥)
(≤()≥)
109
({}≤()≥)
(<>)(≤()≥)
85
({}≤()≥)
(≤()≥)
30
({}≤()≥)
(≤()≥)
42
({}≤()≥)
({≤()≥})(({()}))({()})(())
70
({}≤()≥)
≤≥
this line ((≤()≥)) pushes a new 1 to the stack, and moves the line pointer one forward, onto a new blank line, to do basically the same thing as it did before. however it puts charcode of e. and also the next line is this: ((<>[≤()≥])). What is this complex line? well:
(( push twice...
<> value popped from stack, and pushed onto the offstack for later retrieval
[ minus ...
≤ (jump but eval to the argument still)
() 1
≥
]
))
so, this pops the e off the stack, and replaces it with two ds, while leaving an e on the off stack for later retrieval, and also jumping the line pointer to the next line. we have two, because one will be changed into l, because it saves bytes from pushing a 1 and incrementing it up to the next letter. we don't do this for all of them because it also cost bytes popping and pushing back onto the stack, as well as fitting the jump in there.
from now on, I'm skipping the blank lines and the increment top of stack lines, because this explanation is long enough already.
after adding 8 to yield l
(( push twice...
<> a value popped from stack, also pushed to offstack
))
≤ jump ...
() 1
≥
add 6 to yield r: this one again: (≤()≥)
new value at 111 (o):
( push...
<> popped value, also pushed to offstack.
)
( push...
≤ (jump and eval to same as...)
() 1
≥
)
so this pushes to the off stack while keeping it on the stack, and pushing another 1 on the stack.
new 87 (W): this again: (≤()≥)
new 32 (space): same again: (≤()≥)
new 44 (,): ({≤()≥})(({()}))({()})(())
woah, what is that? put simply, it is just pushing onto the main stack what we pushed on to the offstack, then a 1 to make into a H:
( push...
{ pop from the off stack, evaluate to that multiplied by...
≤ jump and eval to...
() 1
≥
}
) this pushes o
(( push twice...
{ multiply an offstack popped value by...
() 1
}
)) this pushes l twice
( push...
{ offstack popped value times...
() 1
}
) this pushes e
( push...
() 1
)
new 72 (H): ≤≥: this is the halt command and it stops the program
That pushed !dlroW ,olleH char codes, which then gets printed, but backwards because it is a stack. "Hello, World!"
Monkeys, 484 460 455 448 bytes
7 RIGHT
7 RIGHT
7 RIGHT
7 RIGHT
7 UP
5 DOWN
5 RIGHT
4 DOWN
7 TEACH
7 BOND
4 UP
7 BOND
7 TEACH
7 TEACH
6 YELL
4 TEACH
4 TEACH
7 FIGHT
5 TEACH
6 YELL
7 TEACH
7 TEACH
5 FIGHT
6 YELL
6 YELL
7 TEACH
5 FIGHT
6 YELL
7 EGO
4 TEACH
5 TEACH
6 YELL
4 FIGHT
7 TEACH
6 YELL
4 TEACH
4 TEACH
4 DOWN
7 TEACH
4 UP
4 TEACH
5 FIGHT
6 YELL
4 TEACH
7 TEACH
6 YELL
7 TEACH
5 FIGHT
6 YELL
7 FIGHT
5 FIGHT
5 FIGHT
6 YELL
7 FIGHT
7 FIGHT
6 YELL
7 EGO
7 TEACH
7 TEACH
6 YELL
How it works
Monkeys consists internally of a 10x10 grid containing 7 monkeys (and 14 bananas we won't use). The grid initially looks as follows.
..!1.!....
.......2!.
.........!
.3.!......
.......!..
.!....!...
..5.!4....
....6...!.
......!...
.7......!.
All monkeys initially have a value of 0. Moving a monkey UP, DOWN, LEFT, or RIGHT increments its value by 1, unless the target square is adjacent (horizontally, vertically, or diagonally) to another monkey.
In addition, any monkey can modify all adjacent monkeys' values with TEACH (adding the "teacher's" value to adjacent monkeys' values), FIGHT (subtracting), BOND (multiplying), and EGO (dividing).
First,
7 RIGHT
7 RIGHT
7 RIGHT
7 RIGHT
7 UP
5 DOWN
5 RIGHT
moves monkeys 5 and 7 to their final positions. This sets 5's value to 1 and 7's value to 4. The grid now looks as follows.
..!1.!....
.......2!.
.........!
.3.!......
.......!..
.!....!...
....!4....
...56...!.
.....7!...
.!......!.
Now,
4 DOWN
7 TEACH
7 BOND
4 UP
monkey 4 moves down (and is now adjacent to 7), monkey 7 adds its value (4) to monkeys 4 and 6, monkey 7 multiplies 4's and 6's values by 4, then 4 moves back to its place. The monkeys' values are now as follows.
5: 1
7: 4
4: 16
6: 16
From now on, we'll mostly use monkeys 5, 7, and 4 to add or subtract 1, 4, or 16 to/from monkey 6's value. Making monkey 6 YELL prints its value as a character.
If we represent monkey 6's value with v, the remainder of the program looks as follows in pseudo-code.
7 BOND v *= 4 // v == 64
7 TEACH v += 4 // v == 68
7 TEACH v += 4 // v == 72 == 'H'
6 YELL putchar(v)
4 TEACH v += 16 // v == 88
4 TEACH v += 16 // v == 104
7 FIGHT v -= 4 // v == 100
5 TEACH v += 1 // v == 101 == 'e'
6 YELL putchar(v)
7 TEACH v += 4 // v == 105
7 TEACH v += 4 // v == 109
5 FIGHT v -= 1 // v == 108 == 'l'
6 YELL putchar(v)
6 YELL putchar(v)
7 TEACH v += 4 // v == 112
5 FIGHT v -= 1 // v == 111 == 'o'
6 YELL putchar(v)
7 EGO v /= 4 // v == 27
4 TEACH v += 16 // v == 43
5 TEACH v += 1 // v == 44 == ','
6 YELL putchar(v)
4 FIGHT v -= 16 // v == 28
7 TEACH v += 4 // v == 32 == ' '
6 YELL putchar(v)
4 TEACH v += 16 // v == 48
4 TEACH v += 16 // v == 64
4 DOWN The next operation will affect monkey 4 as well.
7 TEACH v += 4 // v == 68
4 UP Monkey 4's value changed from 16 to 20.
4 TEACH v += 20 // v == 88
5 FIGHT v -= 1 // v == 87 == 'W'
6 YELL putchar(v)
4 TEACH v += 20 // v == 107
7 TEACH v += 4 // v == 111 == 'o'
6 YELL putchar(v)
7 TEACH v += 4 // v == 115
5 FIGHT v -= 1 // v == 114 == 'r'
6 YELL putchar(v)
7 FIGHT v -= 4 // v == 110
5 FIGHT v -= 1 // v == 109
5 FIGHT v -= 1 // v == 108
6 YELL putchar(v)
7 FIGHT v -= 4 // v == 104
7 FIGHT v -= 4 // v == 100 == 'd'
6 YELL putchar(v)
7 EGO v /= 4 // v == 25
7 TEACH v += 4 // v == 29
7 TEACH v += 4 // v == 33 == '!'
6 YELL putchar(v)
MY, 60 bytes
27á'←1Aá'←8Aá'2×←1Bá'←44á'←2Ġ'←78á'←1Bá'←4Bá'←8Aá'←AȦ'←33á'←
How?
Outputs H, e, ll, o, <space>, W, o, r, l, d, ! to the console.
I created a 3rd answer to this question due to the differing techniques used, this uses concatenation on numbers (27á pushes 72), one uses increment and decrement, while another uses a builtin.
Magic Number, 174 bytes
0010000033001000010000100001080010000114001000011100100000870010000032001000004400100001110010000108001000010800100001010010000072006006006006006006006006006006006006006006
Magic Number is a simple human-writable stack-based esolang where the source code consists of a single positive integer. The decimal digits are read from most significant to least significant.
The only two commands used here are 0010xxxxxx, which pushes the non-negative integer xxxxxx onto the stack, and 006, which pops the stack and prints the character with that character code. The program pushes the numerical value of the characters in "Hello, World!" onto the stack in reverse order and prints them all. Branching is fairly expensive, so I feel this is probably optimal.
JQuery, 222 214 194 147 113 bytes
Saved 20 bytes thanks to ais523 and 34 thanks to Matheus Avellar.
<script src="//code.jquery.com/jquery.min.js"/><script>$()(function(){$("body").html("Hello, World!");})</script>
Just because it's JQuery. You can't get enough JQuery :D
Set, 123 bytes
set ! H
set ! 101
set ! 108
set ! 108
set ! 111
set ! 44
set ! 32
set ! 87
set ! 111
set ! 114
set ! 108
set ! 100
set ! 33
Needed to use raw ASCII codes because lowercase letters are reserved for variable names.
Windows Portable Executable (PE), 1175 bytes
By using the following Assembly code instead of C code (which inevitable imports unecessary libraries and whatnot), we can cut down the executable size from 261591 bytes (compiled C answer) to a measily 1536 bytes.
extern ExitProcess, GetStdHandle, WriteConsoleA
section .n
msg db "Hello, World!",10
; <entry point>
Start:
; GetStdHandle(in A1)
push -11 ; A1 - STD_OUTPUT_HANDLE
call GetStdHandle ; Puts in eax
; WriteConsole(in A1, in A2, in A3, out A4, reserved A5 )
push 0 ; A5 - Don't care (reserved argument)
; A4 - Don't care ("number of chars written")
push 14 ; A3 - Length ("number of chars to write")
push msg ; A2 - String (buffer pointer)
push eax ; A1 - Console output handle (from GetStdHandle)
call WriteConsoleA
; ExitProcess(in A1)
push 0 ; A1 - Exit code
call ExitProcess
However, that is still way too large. So I installed HxD, a hex editor, and went on to try and remove unecessary parts.
Apparently, Windows' executables are filled with padding (hex indication) for no apparent reason. So I removed the tailing block of zeroes at the end of the file, messed around a bit, and managed to cut it down to 1175 bytes. Here's the pastebin hexdump of the executable.
Unfortunately, at my every attempt to remove the other paddings (0x1A8-0x1FF, 0x22B-0x3FF), the program would simply not run. I've been doing this for a few days to no success. Thus, I'm posting this beaten, at the still staggering 1KB of size.
I am sure this can be golfed even further, so if anyone manages to cut down the size, feel free to edit this answer or perhaps even post another one.
As a bonus, this executable also works on DOS.
D, 55 53 52 bytes
import std.stdio;void main(){"Hello, World!".write;}
Lean Mean Bean Machine, 55 bytes
OOOOOOOOOOOOO
"""""""""""""
Hello, World!
!!!!!!!!!!!!!
I think this is the shortest.
Here's a somewhat more entertaining alternative approach in 96 bytes:
OOOOOOOOOO
"""
Hel
!!!""""
!o, W
!!!!
! "
r
!""
! d!
!!
This one only sets 1 marble to each letter, and re-uses the l and o marbles, much less golfy, but more true to the spirit of the language.
axo, 22 bytes
"!dlroW ,olleeH">[(#<\
I'm not sure why I had to put a double e in there. But hey, it works.
Numberwang, 77 bytes
69696969696969693696969623673363316969696968359533059595636969663633563583193
Just incrementing and decrementing the pointer by certain amounts.
Shtriped, 239 bytes
e n
e b
i b
+ x y
+
i x
d y
+
+
d x
0
+ b b b
1
+ b n n
0
z x
d x
z x
D
1
s n
z n n
z b b
i b
Y
0
0
Z
1
Y
Y
B
0
1
1
Z
1
Y
1
Y
D
B
B
1
0
Z
Y
D
B
1
Y
B
0
Z
D
1
B
B
Y
1
0
D
Y
1
1
Y
B
Z
D
B
Y
1
0
Z
Y
D
B
1
1
1
1
B
0
D
This Hello, World! in Shtriped terminates somewhat quickly, since it doesn't encode the entire string in one number.
Pyramid Scheme, 857 bytes
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
/ \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
/out\ /out\ /out\ /out\ /out\ /out\ /out\ /out\ /out\ /out\ /out\ /out\ /out\
-----^ -----^ -----^----- ^----- ^----- ^----- ^----- ^----- ^----- ^----- ^----- ^-----
/ \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
/chr\ /chr\ /chr\ /chr\ /chr\ /chr\ /chr\ /chr\ /chr\ /chr\ /chr\ /chr\
^----- ^----- ^----- ^----- ^----- ^----- ^----- ^----- ^----- ^----- ^----- ^-----
/ \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
/72 \ /101\ /108\ /111\ /44 \ /32 \ /87 \ /111\ /114\ /108\ /100\ /33 \
----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
Wow. At least it's kinda clear how this works...
Chip, 174 166 106 97 bytes
94 bytes for the code + 3 bytes for the flag (-w) which allows execution without input.
!ZZZZZZZZZZZZt
|))))))x)))))f
|)xx)x-))xxxa
|)))))-))x))c
)))))x-))))g
)-))))-x)xd
b e^b^e
Chip is a 2D language inspired by integrated circuits, input and output are broken down into individual bits which travel through gates and across wires.
Ungolfed (134 bytes):
!ZZZZZZZZZZZZt
xxxxxxxxxxxxxh
)))))xx)))))xg
x))))))x)))))f
xxxxxxx)x)xxxe
)x))))xx)x)xxd
x)))))x))x))xc
xxxx)xx)))xxxb
x)xx)xx))xxx)a
How the ungolfed version works:
This implementation encodes the target string Hello, World! as a bit matrix, somewhat reminiscent of core memory. The leftmost column of )'s and x's corresponds to H in the output, the rightmost column to !. The ) is an Or-gate (mapping to a 1 in the output), and the x is a wire crossing (mapping to a 0).
The first row is for timing, and the remaining rows are for each of the bits of the output (the row ending in h is the highest bit, and a is the lowest).
The timing behavior starts with the !. ! produces a single 1-cycle pulse at the beginning of execution. The line of Zs then control the left-to-right propagation of the signal at a rate of one element per cycle, each one corresponding to the transition between consecutive letters of the output. Each Z also sends a signal to the column below. At the end of the timing row is t, which terminates the program, preventing infinite output of null characters at the end.
In the first cycle, the first data column is powered. We see OR-gates ()) on the rows for bits d and g, turning them on; the remaining bits stay off because the wire crosses (x) won't propagate the signal from the top to the left. This gives us 01001000, which is H.
In the next cycle, only the second data column is powered. Rows a, c, f and g turn on much like the bits in the first cycle, and the remaining bits are off. This gives us 01100101, which is e.
This continues all the way across to the right, giving the remainder of the output.
Golfing it:
There's not a lot that could be done here, but there are a few things of note:
- The
hrow is always off, so that can be eliminated. - Each row can be trimmed on both ends, removing unnecessary
x's, so long as the timing signal can still be propagated downward to rows that need it below. This is why the rows are rearranged; to maximize the trimming that can occur. - The construct
)ais equivalent to simplya, so long as the signal did not need to be propagated downward from the OR-gate.
All other changes are just mashing things around to save single bytes.
Joy, 24 bytes
"Hello, World!"putchars.
ZT, 199 bytes
The ZT programming language is quite romantic: it features little data couples (Romeos & Juliets). ZT program flow is diagonal and commands are defined only by program flow.
The webpage is at:
It has a link to is an interpreter at:
But that interpreter is broken and doesn't do jumps correctly. The website also has a link to a self extracting archive containing the documentation, the interpreter and some examples:
And that interpreter works so that's the one you need to use to test this.
I am not too confident that this is the smallest possible Hello World but it is much smaller than the one published on the website. If you have comments for golfing it please let me know.
48<>ZT<>ZT<>...>
<<ZT<>ZT<>ZT.<06
ZT<>ZT<>6F<>6C<<
<<ZT<>ZT<>ZT><03
ZT<>ZT<>20<>72<<
<>ZT<>ZT<>ZT><05
...>65<>6F<>57<<
.>ZT<>ZT<>ZT><05
....64<>6C<>2C<<
....<>ZT<>ZT><05
........21>.6C<
........<...>
ABCD, 390 bytes
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAADDAAADBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBDBBBBBBBBBBBBDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAADAAADBBBBBBDBBBBBBBBDBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBDBBBBBBBBBBBBBBBBBBBBBBBD
AAHH! This is a weird esolang.
SE, 66 61 bytes
array h is [H e l l o , _space W o r l d !] end
do>with h end
T h i s _space e s o l a n g _space i s _space b a d _space a t _space o u t p u t ! (This esolang is bad at output!)
SE stands for self-explanitory, not Stack Exchange :(.
Subterra, 30 bytes
"Hello, World!"w[0>]{bct1-}
Caker, 294 bytes
ωΩθΩθθΩθΩθθθΘΩθθΩθθΩθΩθΩθΘθθΩθΩθθΩθθΘΩθθΩθΩθθΩθθΘΩθθΩθΩθθθθΘθΩθΩθθΩθθΘΩθΩθθθθθΘΩθΩθΩθΩθΩθθθΘθθΩθΩθθθθΘθθθΩθθΩθΩθΘΩθθΩθΩθθΩθθΘΩθθΩθθΩθΩθθΘΩθΩθθθθΩθΘ
Looks like alot of zeros...
HTML & JS (w/ jQuery), 85 bytes
<b><script src="//code.jquery.com/jquery.min.js"><script>$("b").html("Hello, World!")
Emmental, 68 bytes
#0#10#33#100#108#114#111#119#32#44#111#108#108#101#72...............
COBOL, 65 Bytes
PROGRAM-ID.H.PROCEDURE DIVISION.DISPLAY 'Hello, World!'.STOP RUN.
Just from what I remember. Probably doesn't work but I can't tell since my machines set up to run COBOL are long-gone.
Aheui, 147 144 bytes
발따밤따빠받나파빠밣다빠밦다빠받타밢밢따밦다밤밣따밦밦따빠밣다파받따빠받다파빠빠밠타밣밢따아멓희
@, 2 bytes
The language is made of a tree of function calls. Each character (with some exceptions) represents a function that may take as many or few arguments as it likes. Arguments are then read from directly after it in the code.
ħ
The ħ builtin returns the string "Hello, World!"
nouse, 321 bytes
I can't figure out from the spec how to specify operands in Line Noise syntax. If anyone knows please comment.
Here is the Assembly syntax version:
cut 0,72,write 0,paste 0
cut 0,101,write 0,paste 0
cut 0,108,write 0,write 0,paste 0
cut 0,111,write 0,paste 0
cut 0,44,write 0,paste 0
cut 0,32,write 0,paste 0
cut 0,87,write 0,paste 0
cut 0,111,write 0,paste 0
cut 0,114,write 0,paste 0
cut 0,108,write 0,paste 0
cut 0,100,write 0,paste 0
cut 0,33,write 0,paste 0
swap 0
Foam, 17 bytes
<'|Hello, World!|
<' grabs the next token from the source code an outputs it with a trailing newline. The next token is Hello, World! (It is wrapped in bars so that the space can be added without it being treated like another token.
Bubblegum, 11 bytes
0000000: 15 27 4d 50 62 a9 9a 29 6b 6d e2 .'MPb..)km.
Although technically Turing complete, Bubblegum was made for constant-output challenges.
cQuents, 15 bytes
Hello, World!?0
Explanation
Hello, World! Literal "Hello, World!"
? Mode ? (query)
0 Necessary for interpreter
Because there is no input for query mode, only print literals
Husk, 8 bytes
¨H◄⁰,ω]!
Husk got compressed strings!
A dictionary of common n-grams for n from 1 to 9 was built using a procedure based on Huffman coding, taking frequencies of n-grams from http://norvig.com/mayzner.html. All printable ASCII characters plus newline were forced to have 1-byte encodings with codes corresponding to themselves, while newlines were encoded with ¶. N-grams that occurr frequently at the start of words also have variants with title-case and with a leading space/newline; n-grams that occurr frequently at the end of words also have variants with a trailing space/newline.
Some optimizations were performed on the resulting dictionary: for instance, the 5-gram "Hello" was removed from the dictionary since it had been encoded with three bytes, while the 4-gram "ello" is encoded with two bytes, so we can simply encode "H"+"ello" for a total of 3 bytes.
After the Huffman tree was built, codes were reassigned (mantaining their length unchanged) such that the encoded words could in some way recall their respective plaintext: most compression systems ignore this and as such their results are completely obscure to the human reader, while in this case I'm sure that most of you could guess what H◄⁰,ω]! means even if it was not presented inside this challenge. In particular, ◄⁰ encodes "ello", since ◄ stands for l (left), and ⁰ looks like an o, while ω] encodes " World" since ω looks like a w and ] looks like a D (capitalization was ignored for this assignment of codes).
MY, 73 bytes
Here's the hex:
07 24 21 21 28 26
0A 24 21 28 26
0B 24 20 20 28 26
0B 24 20 20 28 26
0B 24 21 28 26
04 24 21 21 21 21 28 26
02 25 28 26
09 24 20 20 20 28 26
0B 24 21 28 26
07 25 21 21 28 26
0B 24 20 20 28 26
0A 24 28 26
02 25 21 28 26
I didn't want to update my old answer, because this one isn't just a simple one-byte solution that uses a builtin.
How it works: Outputs each character by using the few commands I have interpreted:
- Number Literal: 0x00 - 0x0F
- Minus 1: 0x20
- Add 1: 0x21
- Times 10: 0x24
- Times 16: 0x25
- Output: 0x26
- Character value: 0x28
Triangular, 66 bytes
8.9,*<>@5\,1*6<>-+@7\,+3@@+<>@:3_7+\,3@-*43@<>*9-@p@3+\@_3@-8@-6@<
How it works
Expanded:
8
. 9
, * <
> @ 5 \
, 1 * 6 <
> - + @ 7 \
, + 3 @ @ + <
> @ : 3 _ 7 + \
, 3 @ - * 4 3 @ <
> * 9 - @ p @ 3 + \
@ _ 3 @ - 8 @ - 6 @ <
Executed commands, ignoring directional commands:
89*@56*1-+@7+@@3+@:3_7+@4*-@3*9-@p@3+@6-@8-@3_@
Commands used, ignoring directional commands:
1to9: push the literal value+: add-: subtract*: multiply_: divide:: duplicate top of stackp: pop top of stack@: print top of stack as charcode
Triangular is a 2D stack-based language which uses postfix notation.
Ook!, 779 bytes
Ook! Ook! Ook! Ook! Ook? Ook. Ook! Ook! Ook? Ook. Ook? Ook. Ook. Ook. Ook! Ook? Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook? Ook! Ook? Ook. Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook? Ook. Ook! Ook! Ook! Ook. Ook! Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook. Ook? Ook. Ook? Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook! Ook.
Based on the shortest Brainfuck Hello World :)
Pyffman 1, 16 bytes
The code contains lots of unprintable characters, so here's a hexdump:
00000000: 78c2 40a6 9a7a 5d51 7d8e 87cf 617d cf3d x.@..z]Q}...a}.=
To obtain the original source code, put the hexdump in a file and call xxd -r on it.
Small, 1552 bytes
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++.+++++++..+++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
A joke language at https://esolangs.org
Memescript, 820 bytes
what the frick frack backtrack snick snack quarterback diddily dack diddily dack quarterback diddily dack diddily dack backtrack diddily dack backtrack diddily dack biofeedback quarterback diddily dack diddily dack quarterback quarterback diddily dack quarterback diddily dack diddily dack patty wack quarterback diddily dack slack mack frick frack thumbtack snick snack snick snack quarterback diddily dack patty wack sidetrack quarterback diddily dack snick snack patty wack patty wack biofeedback quarterback diddily dack diddily dack sidetrack diddily dack sidetrack quarterback diddily dack diddily dack patty wack quarterback diddily dack patty wack slack mack quarterback diddily dack patty wack crackerjack quarterback diddily dack slack mack frick frack thumbtack snick snack patty wack quarterback diddily dack
Explanation:
what the open program
frick frack backtrack push 10
snick snack quarterback multiply by 7 (70)
diddily dack diddily dack add 2 (72)
quarterback diddily dack print as char ('H')
diddily dack backtrack add 10 (82)
diddily dack backtrack add 10 (92)
diddily dack biofeedback add 9 (101)
quarterback diddily dack print as char ('e')
diddily dack quarterback add 7 (108)
quarterback diddily dack print as char ('l')
quarterback diddily dack print as char ('l')
diddily dack patty wack add 3 (111)
quarterback diddily dack print as char ('o')
slack mack pop
frick frack thumbtack push 11
snick snack snick snack multiply by 4 (44)
quarterback diddily dack print as char (',')
patty wack sidetrack subtract 12 (32)
quarterback diddily dack print as char (' ')
snick snack patty wack multiply by 3 (96)
patty wack biofeedback subtract 9 (87)
quarterback diddily dack print as char ('W')
diddily dack sidetrack add 12 (99)
diddily dack sidetrack add 12 (111)
quarterback diddily dack print as char ('o')
diddily dack patty wack add 3 (114)
quarterback diddily dack print as char ('r')
patty wack slack mack subtract 6 (108)
quarterback diddily dack print as char ('l')
patty wack crackerjack subtract 8 (100)
quarterback diddily dack print as char ('d')
slack mack pop
frick frack thumbtack push 11
snick snack patty wack multiply by 3 (33)
quarterback diddily dack print as char ('!')
MATLAB, 20 bytes
disp 'Hello, World!'
This is one byte shorter than the standard disp('Hello, World!').
Fishing, 25 24 bytes
[+_
|C]`Hello, World!`Ni
It exits with an error.
Fishing, 34 bytes
v+CCCCCCCC^]
`Hello,
N`!dlroW
Without errors.
Noether, 16 bytes
"Hello, World!"P
Noether is basically a stack-based, Reverse Polish Notation version of Fourier. Plans for this language include overloaded functions and string functions.
Noether is named after the pioneering mathematician Emmy Noether.
Explanation:
"Hello, World!" - Push the string "Hello, World!" to the stack
P - Print the item on the top of the stack
Decimal, 48 bytes
13072069076076079044032087079082076068033010D301
This uses only two commands:
13- push a STRING301- print from stack to output
On the date of posting, Decimal has another Hello World that's a bit more boring:
Hello,13032301World!
According to the README:
Decimal, also called 09D, is an esoteric stack-based programming language that uses the characters 0 through 9 and D. Any other characters in the source code are simply printed.
But spaces and newlines are ignored, because those often fallthrough from comments and commands, adding the necessity for the 13032301. (I need to update the README.)
Casio Basic, 15 Bytes
"Hello, World!"
I think it explaines itself well enough...
Packed Pyth, 13 bytes
Hexdump:
0000000: 4523 2ecd 9bd6 20af bf96 cc88 40 E#.... .....@
Packed Pyth is Pyth with a 7-bit ASCII encoding.
This Pyth program:
"Hello, World
Gets packed into this Packed Pyth program:
E#.͛� ���̈@
To create the file:
$ echo -n '"Hello, World!' > hello.pyth
$ py ../pyth/packed-pyth.py -p hello.pyth hello.ppyth
To run it:
$ py ../pyth/packed-pyth.py hello.ppyth
Hello, World!
Fourier, 15 bytes
`Hello, World!`
Yes, the days of typing out the ASCII code of each character are gone forever: Fourier now kind of supports strings. When you enclose a string in backticks, that string will be outputted.
Note that you can't do anything other than output that string: you cannot store it in a variable, it is not stored in the accumulator and there are no string manipulation tools.
Here, you can find the train wreck that was old Fourier. ;)
72a101a+7aa+3a44a32a87a111a+3a-6a-8a33a
Now, some of you will probably have met Fourier before and may be fairly familiar with the language. The whole language is based upon an accumulator: a global variable which pretty much all operators use.
The most important part of the code is the a operator. This takes the numerical value of the accumulator and converts it to a character using the Python code chr(accumulator). This is then printed to STDOUT.
Unfortunately, I haven't had the chance to use Fourier yet (nudge nudge, wink wink), mainly because of its lack of strings and string operators. Even so, it's still usuable for many other challenges (see the examples section of its EsoLangs page).
Note that this is shorter than my entry into the Esolangs list because I didn't actually think that I could golf it any more. And then, when writing the Fourier string golfing challenge, I realised I could go quite a bit shorter.
Note
If you were wondering about variable syntax, Geobits wrote a program which uses variables and is the same length:
72a101a+7aa+3~za44a32a87aza+3a-6a-8a/3a
;#
Interpreter provided by @ETHProductions
Read this for a full list of commands.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
Klein, 50 + 6 = 56 bytes
+3 bytes due to the -A flag.
+3 bytes for 000 topology (though in my testing, pretty much all valid topoligies work)
89*45:**:(1+:7+::3+:(492+*84*9:*6+):3+6:3**)84*1+@
(Eligible for the bounty) Probably not optimal, but it's a start.
StupidScript, 214 bytes
It's a joke language that I just made. Mark Watney would be proud.
80.5 0.0
80.5 23.0
69.0 103.5
69.0 161.0
80.5 46.0
23.0 0.0
23.0 23.0
46.0 92.0
69.0 57.5
69.0 138.0
69.0 138.0
69.0 172.5
23.0 138.0
23.0 0.0
57.5 80.5
69.0 172.5
80.5 23.0
69.0 138.0
69.0 46.0
23.0 11.5
23.0 23.0
Klein, 16 + 3 = 19 bytes
"Hello, World!"@
- +3 for
-Aflag - Also contains a null argument for the topology, I'm not even sure how to score that.
Competing for the bounty.
Standard ML, 20 bytes
print"Hello, World!"
This works with Moscow ML by calling mosml hello.sml or with Standard ML of New Jersey and sml hello.sml. In both cases an interactive session is started and Hello, World! is printed.
Inside a running session print"Hello, World!"; produces the desired output. The ; is needed to tell the interpreter to evaluate the expression.
For a compiled version
val _=print"Hello, World!"
works with mosmlc and MLton. Try it online!
However, MLton appears to accept interpreter-style programs too, so
print"Hello, World!";
works with a trailing ;. Try it online!
MY, 1 byte.
Here is the hex:
FF
I'm finally ready to reveal my language. It's still a major WIP, and the undefined byte meaning is temporary (except for maybe 0xFF). I will eventually update this to include a non-hacky solution when MY is able to do that.
SASS, 32 bytes?
\:after
content:"Hello, World!"
Commodore 64/128/VIC-20 & others (BASIC) (21 bytes 20 bytes):
0 PRINT"HELLO, WORLD!
Commodore 64/VIC-20 (assembly) using the Kernal** (27 bytes assembled):
*=$033c
ldx #$00
loop
lda message,x
jsr $ffd2
inx
cpx #$0d
bne loop
rts
message
.text "hello, world!"
Once assembled (and loaded into memory), call with sys 828
** Yes, I know. Don't use the Kernal (probably also works in 128 native mode, I can't remember).
NTFJ, 106 bytes
~#~~#~~~@*~##~~#~#@*~##~##~~@::**~##~####@:*~~#~##~~@*~~#~~~~~@*~#~#~###@**~###~~#~@**~##~~#~~@*~~#~~~~#@*
NTFJ is an esoteric programming language, made by user @ConorO'Brien, that is intended to be a Turing tarpit. It is stack-based, and pushes bits to the stack, which can be later coalesced to an 8-bit number.
How it works
Output Stack
H ~#~~#~~~@*
e ~##~~#~#@*
~##~##~~@ l
ll ::** l
o ~##~####@:* l o
, ~~#~##~~@* l o
~~#~~~~~@* l o
W ~#~#~###@* l o
o * l
r ~###~~#~@* l
l *
d ~##~~#~~@*
! ~~#~~~~#@*
Aceto, 19 bytes
Aceto is the coolest programming language because I got it as a birthday present. It is a stack based programming language that makes use of a 2D Hilbert curve grid. Here is Hello World:
o,or
l Wl
le!d
"H"p
OIL, 15 bytes
Hello, World!
4
OIL is a self-modifying turing-machine-like programming language with random access, and weak typing. The first line does nothing, because it's not one of the integers currently defined as commands, so it is just skipped. The second line is a 4, the print command, which takes one argument (the next line) and prints the value at that location. Since the next line doesn't exist, it's uninitialized and defaults to 0, which causes OIL to print the contents of the 0th line, Hello, World!.
Python 2, 20 bytes
print"Hello, World!"
Python 2 is better for printing than 3 :D
;# 1142 bytes
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;# isn't Turing Complete and doesn't meet the site's standard for a valid language but why not?
; adds one to the accumulator
# outputs the accumulator mod 127
~~~, 2200 bytes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~¬~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~¬-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~¬¬_~~~~~~~~~~¬~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~¬~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~¬~~~~~~~~~~~~~~~~~~~~~~~~¬~~~¬-¬_~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~¬
Yet another brainfuck-esque language. This uses UTF-32 encoding
~ adds one to the value
¬ outputs the value mod 127
- move forward along the tape
_ move back along the tape
ASP / VBSCRIPT, 13 bytes
Another boring answer!
Hello, World!
Alice, 19 18 bytes
Thanks to Sp3000 for saving 1 byte.
"&O@!dlroW ,olleH
There should be a carriage return (0x0D) at the end of the program, but browsers don't like those. Consequently, this version is also not testable on TIO. Here is a 19-byte printable-only alternative:
"!dlroW ,olleH"d&O@
Finally introducing my latest language! This works like Hello, World in most Fungeoids, and doesn't really touch upon all the advanced features Alice has:
"&O@!dlroW ,olleH Push the individual code points of the entire source code
except the " to the stack. Remember that there's a 13 at the end.
& Repeat the next command 13 times.
O Pop 13 characters from the stack and print them.
@ Terminate the program.
In the 19-byte version, we're pushing the 13 explicitly, using the stack depth command d.
Here is a somewhat more interested 21-byte version, which makes use of Alice's main feature: by moving diagonally, Alice operates in a separate mode (called Ordinal mode), which works with strings instead of integers. However, due to the diagonal movement, it's a bit harder to follow the code:
/oH!lloo /
@""edlr,W\
The initial / sends the instruction pointer off southeast, where it will bounce diagonally up and down between the two lines. The \/ at the end offset the IP's position by one cell so that on the way back, the IP bounces through the other characters. So ignoring those mirrors, the code that actually gets executed is:
"Hello, World!"o@
In Ordinal mode, "Hello, World!" actually pushes an entire string to the stack, o prints that string, and then @ still terminates the program.
Charcoal, 13 bytes
Hello, World!
Charcoal prints the canvas state at the end of execution, and any run of ASCII characters is considered a string, which is implicitly printed to the canvas.
PUPPY, 369 bytes
WOOFBARKWOOFBARKWOOFWOOFBARKWOOFBARKWOOFWOOFWOOFWOOFBARKBARKBARKBARKBARK WOOFBARKWOOFBARKWOOFWOOFBARKW OOFBARK WOO Fwoofbarkbarkwoofwoofwoofwoofwoofwoofwoofwoofwoofbarkwoofwoofwoofbark woofbarkbark BARKWOOFWOOFBARKWOOFBARKBARKWOOFWOOFBARKBARKBARKWOOFBAR KWOOFWOOFBARKBARKBARKWOO FBA rkwoof woofwoof barkbarkbarkwoofbarkwoofbarkwoofwoofbarkwoofbarkbarkbarkwoofwoofbar k
The language that can only be read by puppies.
USML, 9 bytes
S0h7cWs8h
Explanation:
S0h7cWs8h
S0h7 # Get characters 0-7 of h ("Hello, world!").
cW # Get the character "W"
s8h # Get the remaining characters, starting at character 8, of h.
This program is an interesting problem, as it has a command that outputs "Hello, world!" (and an empty program will also do this), but the capitalization is not correct. As a result, we need to take some substrings and add in the correct character.
Turing, 18 bytes
put"Hello, World!"
HODOR, 2384 bytes
Walder
Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor
HODOR!
Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor
HODOR!
Hodor Hodor Hodor Hodor Hodor Hodor Hodor
HODOR!
HODOR!
Hodor Hodor Hodor
HODOR!
Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor!
HODOR!
Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor!
HODOR!
Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor
HODOR!
Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor
HODOR!
Hodor Hodor Hodor
HODOR!
Hodor! Hodor! Hodor! Hodor! Hodor! Hodor!
HODOR!
Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor!
HODOR!
Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor! Hodor!
HODOR!
HODOR!!!
I decided that my NO! answer wasn't long enough so I finished my commemoration of Hodor and spend a while coding this.
Hodor uses an accumulator because he's learning to count and can't remember more than 1 number.
In short (because I'm not doing a line-by-line explanation) these are the main commands:
Walder Hodor hodor hodor hodor Hodor hodor hodor hodor
Start the program because Hodor's original name was Walder
Hodor Hodor hodor hodor hodor hodor
Add 1 to the accumulator
Hodor! Hodor hodor hodor hodor hodor
Subtract 1 from the accumulator
HODOR! Hodor hodor hodor hodor hodor hodor hodor
Output the accumulator as a Unicode character
HODOR!!! Hodor Hodor (Hodor hodor hodor)
Kill Hodor (End the program)
√ å ı ¥ ® Ï Ø ¿ , 2 bytes
HW
H › Push the string "Hello, World!" to the stack
W › Output the whole stack as Unicode interpretations
Yes it's that basic...
Wise, 135 + 3 = 138 bytes
~-<<<~-<<<::^~-<~-<<<~-<<~-:::^~-<<<~-^::?:>~-<~-:?::^~-<<~-<~-<<::^~-<<<<<:<::^<~-<<~-<~-<~-|!::^~-<~-<~-<<<~-<!:::^~-<<<^::^~-<<<<<~-
Traffic, 191 bytes
##########################
#+#+#+#+#*#+#+#+#*#*#+#+#+#
#7#9#9#9#3#4#3#8#3#3#9#9#3
#2#9#9#9#7#4#2#7#7#8#9#9#3
#0#2#9#9#3#0#0#0#3#3#9#1#0
#$#$#$#$#$#$#$#$#$#$#$#$#$#
C C C C C C C C C C C C C
Traffic is a 2D language modelled after cars moving around streets. Each car holds a value (acting as a variable).
This language is as bad at dealing with "strings" as Brainfuck is, so this is kinda bulky.
How it works
An ungolfed/more "proper" version of the above would look like this:
###########################
# # # # # # # # # # # # # #
#7#9#9#9#3#4#3#8#3#3#9#9#3#
#2#9#9#9#7#4#2#7#7#8#9#9#3#
#+#+#+#+#*#+#+#+#*#*#+#+#+#
# # # # # # # # # # # # # #
#0#2#9#9#3#0#0#0#3#3#9#1#0#
#$#$#$#$#$#$#$#$#$#$#$#$#$#
C C C C C C C C C C C C C
In this program, 13 cars are defined: all the digits directly adjacent to a $ (in the #$# constructions) become cars with that initial value. So the program begins with cars that have values 0 2 9 9 3 0 0 0 3 3 9 1 0. The cars' initial directions are away from the $.
The streets are defined as the space between #s; #s comprise the walls that cars can't pass through.
All the cars move upwards. They pass over the literal, ignoring it because they haven't seen an operator to use yet. Once the reach the top, they'll each see an operator (either + or *). On the next step, they'll all turn around because they hit a dead end.
Now when walking back downwards, they will observe the literal, since they have operators to use. After fully walking over each literal (i.e. reaching the start point again), each car performs its operation using the literal and assumes the result of the operation. This results in each car containing the ASCII value of a character in Hello, World!: 72 101 108 108 111 44 32 87 111 114 108 100 33.
Then they all step on the $. The $ is a street exit, and one of a few valid characters usable for those. The $ means to output the specified value and destroy the car. The output value for each $ is C, meaning to output the ASCII character given by the car's value.
After all cars hit their respective $s, there won't be any cars left in the field. Thus, the program terminates.
KanyeC, 78 bytes
"A programming language based on the brilliance of Kanye West."
I am the greatest
make her say "Hello, World!"
I still think I am the greatest
Yes, it is essentially just an ArnoldC substitution, but I thought I'd contribute it for the sake of completeness.
Graphic 154 bytes
x=72 printa(x) y=101 printa(y) y+7 y+3 x-28 x-12 x+55 + y-6 y-8 x-54 +
1
2 0 0 13 7 8 9 0
3
4 9 5 6 0 0 0 5 10 11 12
9
9
9
9
9
1 3 3 3 1 1 1 3 3 3 3
9
9
9
There is a trailing newline
This language is based off of a directed graph. The first line is the list of nodes, each consisting of a single command. The following n lines are the links between nodes on the graph.
Explanation
The first line initializes the nodes as 0: x=72 1: printa(x) 2: y=101 3: printa(y) 4: y+7 5: y+3 6: x-28 7: x-12 8: x+55 9: + 10:y-6 11:y-8 12:x-54 13:+
The program starts with a direction value of 0 at node 0.
x=72 go to node 1
Print character represented by x go to node 2
y=101 go to node 3
Print character represented by y go to node 4
Add 7 to y go to node 9
Increment direction by 1 go to node 3
Print character represented by y go to node 9
Increment direction by 1 go to node 3
Print character represented by y go to node 5
Add 3 to y go to node 9
Increment direction by 1 go to node 3
Print character represented by y go to node 6
Subtract 28 from x go to node 9
Increment direction by 1 go to node 1
Print character represented by x go to node 7
Subtract 12 from x go to node 9
Increment direction by 1 go to node 1
Print character represented by x go to node 8
Add 55 to x go to node 9
Increment direction by 1 go to node 1
Print character represented by x go to node 9
Increment direction by 1 go to node 3
Print character represented by y go to node 5
Add 3 to y go to node 9
Increment direction by 1 go to node 3
Print character represented by y go to node 10
Subtract 6 from y go to node 9
Increment direction by 1 go to node 3
Print character represented by y go to node 11
Subtract 8 from y go to node 9
Increment direction by 1 go to node 3
Print character represented by y go to node 12
Subtract 54 from x go to node 9
Increment direction by 1 go to node 1
Print character represented by x go to node 13
End program
Crayon, 16 bytes
"Hello, World!"q
Crayon is a stack-based golfing language designed to be good at ASCII-art challenges. Instead of the traditional one-line-at-a-time output format, Crayon writes to a 2D "canvas" of characters, which is sent to STDOUT at the end of the program. The q command writes the top item directly onto the canvas.
Hillberth, 32 bytes
[]H ,olH
.< Wle
ro
ld!
If this code is weird looking, it's because the flow of an Hillberth program follows an Hilbert curve. So, the executed program is this:
[.<]H !dlroW ,olleH
The code is similar to a Self-Modifying BrainFuck code, with the H command stopping the program.
JSFuck, 22948 bytes
[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()[+!+[]+[!+[]+!+[]]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+([][[]]+[])[+[]]+([][[]]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()(([]+[])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+[]])[+[]]+(!+[]+!+[]+!+[]+!+[]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]])+[])+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+([][[]]+[])[+[]]+([][[]]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()(([]+[])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+[]])[+[]]+(!+[]+!+[]+!+[]+!+[]+!+[]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]])+[])+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([][[]]+[])[!+[]+!+[]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+([][[]]+[])[+[]]+([][[]]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()(([]+[])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+[]])[+[]]+(!+[]+!+[]+[+!+[]])+[])+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()[+!+[]+[!+[]+!+[]]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]])()
Condit, 41 bytes
when H=""then set H="Hello, World!"put H
Condit programs always consist of an infinite loop that is broken once no statement gets executed, so modifying H is necessary to break the loop.
Piet, 90 codels
This is a 30 by 3 image. Alternatively, at codel size 10:
The uses a 3-high layout so that I only need to pointer once. If this is still golfable I could probably shave at most another column, since there's a push-pop no-op in there.
Edit: @primo's 84 codel solution.
Changeling, 90 bytes
"IpQ:AQ..
""2(-znK]
"" "Tr4r[
"")$dNcA.
"" #!&...
.........
.........
.........
.........
Background
Changeling is a particularly cumbersome encoding of ShapeScript, designed to make it more difficult to program in and forcing certain geometric shape upon the source code. Both were designed for Create a programming language that only appears to be unusable. I got a little nostalgic when TIO surpassed 200 languages, so since ShapeScript was the very first language on TIO, I decided to add Changeling as the 201st.
All Changeling programs have to form a square of printable ASCII characters. Each line of that square independently creates a bit of ShapeScript code, and the concatenation of these code snippets are evaluated as a ShapeScript program.
Each line begins with an accumulator of 0. For each character c of the line (including the trailing linefeed), the code point of c is XORed with the accumulator divided by 2, and the Unicode character that corresponds to the resulting code point is appended to the source code. Then, the difference between the code point of c and the integer 32 is added to the accumulator, and the next character of the line (if any) is processed.
The resulting program must contain only valid ShapeScript statements or it will not run at all. Exceptions are caught and error messages are replaced with cryptic complaints.
How it works (WIP)
The standard Hello World program in ShapeScript is simply
"Hello, World!"
However, no Changeling program can encode this exact program.
Since the accumulator is initially 0 on each line, modeling the characters at the beginning of each line into something useful is comparatively easy. The remainder of the line can be enclosed in a string (which is later popped) to avoid syntax errors in the resulting ShapeScript code.
"Hell""
"#0#"o,""
"#" Wor""
"#+"ld""
"#"!""
can be generated by
"IpQ:AQ
""2(-znK]
"" "Tr4r[
"")$dNcA
"" #!&
which, by itself, is not a valid Changeling program yet, as its source code is not a square. That's easily fixed by adding characters though, but some care has to be taken not to end the strings started by each trailing " in the ShapeScript program.
K (oK), 20 19 bytes
!`0:"Hello, World!"
Note that this program gets killed, which effectively prevents implicit or error output. Your shell might indicate that the program was killed, but this output is produced by the shell, not the program.
Alternative solution, 20 bytes, clean exit
{}`0:"Hello, World!"
I'm still trying to figure out why this works, but it does.
Almost-solutions
"Hello, World!"prints the string with the quotes.`0:"Hello, World!"printsHello, World!"Hello, World!", the first copy explicitly, then second one implicitly.0`0:"Hello, World!"prints the correct output to STDOUT, but the leftmost0is a type error and prints an error message to STDERR.!`0:"Hello, World!"prints on
Unreadable, 843 755 732 666 645 629 577 bytes
'"'""'""'""'"'"'""""""'""'"""'""'""'""'""'""'""'""'"'""'""""""'""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""'""'""'""""""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'"'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""""""'""""""""'"""'""'""'""'""'""'""'""'""'""'""'""'""'""""""'"""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""'"'"""""""'""""""""'"""'"'"""""""'"""'"'"""""""'""'""'"""'"'""'""'""'"'""'""'""'"""""""'""'"""'"'"""""""'""'"""'"'"""""""'""'""'""'"""'"'""'"""""""'"""
Unreadable programs are supposed to be displayed with a variable-width font, so they honor the language's name. I'm slightly disappointed that my more sophisticated approaches turned out to be a lot longer. Loops are insanely expensive in Unreadable...
How it works
Unreadable has only ten functions; six of these are used in this code:
'" p Print.
'"" + Increment.
'""" 1 Return 1.
'"""""" : Set.
'""""""" = Get.
'"""""""" - Decrement.
After using my single-character notation and adding some whitespace and comments, the above code looks like the following. Multi-line statements are executed from bottom to top.
p+++ Print 3 + variable 2 (o).
pp Print variable 2 two times (l).
:+1+++++++ Save 8 + variable 3 in variable 2.
p+ Print 1 + variable 3 (e).
:++1+++++++++++++ Save 13 + variable 4 in variable 3.
:+++1+++++++++++++++ Save 43 + variable 0 in variable 4.
p++++++++++++++++++++++++++++ Print 28 + variable 0 (H).
:-1++++++++++++ Save 44 in variable 0.
:1+++++++++++++++++++++++++++++++1 Save 32 in variable 1.
p=-1 Print variable 0 (,).
p=1 Print variable 1 ( ).
p=+++1 Print variable 4 (W).
p+++ Print 6 + variable 2 (r).
p+++=+1 Print 3 + variable 2 (o).
p=+1 Print variable 2 (l).
p=++1 Print variable 3 (d).
p+=1 Print 1 + variable 1 (!).
I've generated the actual source code by running the uncommented version of the above pseudocode through this CJam program.
Valyrio, 17 bytes
s ∫ main [´Ø]
‹ and › start and end comments.
s ‹Sets the mode to stack mode, usually used for code golf as its shorter›
∫ ‹Tells the interpreter that the previous letter was a tag, not a command›
main [ ‹Starts the main code block›
´ ‹Pushes "Hello, World!" in unicode numbers to the stack (Alt-Shift-E on Mac)›
Ø ‹Outputs the stack as unicode characters›
] ‹Ends the main code block‹
Taxi, 184 bytes
"Hello, World!" is waiting at Writer's Depot.Go to Writer's Depot:w 1 r 3 l 2 l.Pickup a passenger going to Post Office.Go to Post Office:e 1 r 2 r 1 l.Go to Taxi Garage:n 1 r 1 l 1 r.
Parenthetic, 766 698 630 bytes
((()()())(()())((()())((()()())(()()()()))((()(())(())())((()(()))((()()(()))(()()())((())()()()()()()()()()()()()()))((()()(()))((())()()()()()())((())()()()()()))(()()()())))))((()(()))((()())((())()()())((())()()()))((()())((())()()()()())((())()()()()()()))((()())((())()()()()()())((())))((()())((())()()()()()())((())))((()())((())()()()()()())((())()()()))((()())((())())((())()))((()())((()))((())()()))((()())((())()()()())((())()()()()()))((()())((())()()()()()())((())()()()))((()())((())()()()()()())((())()()()()()()))((()())((())()()()()()())((())))((()())((())()()()()())((())()()()()()))((()())((()))((())()()())))
Still got a lot to golf. This version uses a single definition
(define f (lambda (a b) (char (+ (* a 13) 30 b))))
In other words, each char is encoded by two numbers a and b, for which 30 + 13*a + b is calculated (e.g. H = 73 = 30 + 3*13 + 3) .
Glee, 15 bytes
"Hello, World!"
This creates a character vector/string, which gets printed to the output.
SmileBASIC, 15 bytes
?"Hello, World!
? is a shorthand for PRINT, which is of course always at least 4 characters shorter and never needs whitespace before or after it. In addition, strings which run to the end of the line don't need the closing ".
Del|m|t, 29 + 1 = 30 bytes
=#:#Hello, World!#/#2#>#?#9#"
...With # passed as a command line argument.
This is a new language that I recently created, which uses regex to parse its source code. I highly recommend that you read the documentation and tutorial.
Explanation:
The regex passed as an argument acts as a delimiter (hence the name), which parses the code into tokens, which are read as commands based on their ASCII values.
Because the regex is #, the tokens are =, :, Hello, World!, /, 2, >, ?, 9, and "
These correspond to commands depending on their ASCII values mod 32:
(=) 29 29 pops the top value of the stack, and skips that many instructions.
Right now, the top is 0, so it's a no-op. Later, we will use it to
skip the following part that pushes the string
(:) 26, (H...) "H..." 26 pushes the next token as a string backwards onto the stack
(/) 15 Duplicates the top of the stack, so we have 2 copies of the top character.
(2) 18 Nots the top of the stack. It the top was 0, it is now 1
(>) 30, (?) 31 Iff the top of the stack is non-0, exit the program
(9) 25 Print the character
(") 2 Push 2 - This is used to skip the String pushing part when we...
Go back to the start of the program and repeat
Befunge-93, 21 bytes
"!dlroW ,olleH">:#,_@
Explanation
"!dlroW ,olleH" Push the string onto the stack in reverse. Note that there is an
implicit null terminator since an empty stack will always pop zero.
> Start the output loop.
: Duplicate the character at the top of the stack.
# Skip the following operation to the right.
_ Test if the character is null, dropping the duplicate copy.
, If not, branch left and write the character to stdout.
# Skip the following operation to the left.
> Reverse direction and repeat the loop with the next character.
@ Once the null is reached, branch right and exit.
Minkolang v.0.9, 18 bytes
"Hello, World!"$O.
Try it online! The v.0.1 answer seems to no longer, so it makes sense to post an answer in the most recent version.
"Hello, World!"$O.
"Hello, World!" Push these chars to the stack
$O output all these characters
. terminate the program
QBIC, 3 bytes
?_H
QBIC has a built-in specifically for this purpose, it was kind of a test to see how this sort of function-calls would look in QBIC source and how the QBasic interpreter would need to handle this. For those who frown upon built-ins:
?@Hello, World!
15 bytes, still not bad. QBIC needs string literals to be closed by a ` (backtick), and auto-closes literals at End-Of-File.
Lily, 22 bytes
Pretty darn similar to a lot of other languages.
print("Hello, World!")
Here's a Tio example to play with.
C (works with gcc/linux/x86_64), 129 bytes
Not my original idea, just changed a couple of bytes and golfed a little:
const main[]={-443987883,440,113408,-1922629632,4149,965120,84869120,15544,266023168,1818576901,539783020,1819438935,-1878384284};
- Original: http://jroweboy.github.io/c/asm/2015/01/26/when-is-main-not-a-function.html (prints "Hello World!" without the comma)
Whirl, 1350 bytes
I found this Hello, World! example was written by Kang Seonghoon in 2005. I'm including it here for completeness and because I found it helpful along with this visual demonstration of Whirl.
110011100111000001111100000001000011111000011111100000000010
000011001111100001100010000010011111000100000000000001001111
100000111110001000000000000000001000111110010000001100001111
100011000000000100111110011100111000111000001000111000001111
100000111110010000011111000110011111100001111000001111000001
110011111100001111000110011100000111000100011111000001111100
100000110000000111000001110001111100011111000111000001000001
000011000111110001000001000000011100000111001000111110001111
000001111000011111100001111110000011110000000000000000011110
000011100111000011110011111000111110001111100000100000000000
000000000000111110001110000001110000011100011100111110001000
100000000011100001111100110000000010011111000111100000111100
111100010011100000111110000011111001100111100010001111000000
000001000111110010000010011110011001110001000111110001100000
100011111000011110011100111111000111100000111100011111000000
011110000011100100001111000100011111001100011111000111100000
111001110001100111100100000000000000011111000001111100010010
000011100001111100100000100011100000111000110011110001001111
110001100000111100011111000111100000111001000011110001001111
100000111110000000011110000011110000000000000000111000001110
000011000001100000111000111000001100111110000111111001001110
000011111000001100011000001001111110000011100110011111000000
000111000001110000111100001100
WSF, 223 bytes
Stack Exchange cannot display this code properly, so here is a reversible xxd hexdump:
00000000: 2020 2020 2020 2020 2020 2020 2020 2020
00000010: 2020 2020 0a20 200a 2020 2020 2020 2020 . .
00000020: 2020 2020 2020 200a 2020 2020 2020 2020 .
00000030: 2020 2020 2020 2020 2020 2020 200a 2020 .
00000040: 2020 2020 200a 2020 0920 0920 0920 0920 . . . . .
00000050: 2009 0a09 200a 2020 2020 0909 200a 2020 ... . .. .
00000060: 0909 2020 2020 2020 2020 2020 2020 2020 ..
00000070: 0909 0909 2020 2020 2020 0909 200a 2020 .... .. .
00000080: 2020 0909 0920 0920 2020 2020 2020 2020 ... .
00000090: 2020 2020 2020 2020 2020 2020 2020 2020
000000a0: 2020 2020 2020 0909 200a 0909 2020 2020 .. ...
000000b0: 2020 0909 2009 2009 2009 2009 2009 2009 .. . . . . . .
000000c0: 0909 2009 2009 2009 2009 2009 2009 2009 .. . . . . . . .
000000d0: 2009 0909 200a 2020 0909 200a 0909 0a ... . .. ....
Ruby inspected string:
" \n \n \n \n \n \t \t \t \t \t\n\t \n \t\t \n \t\t \t\t\t\t \t\t \n \t\t\t \t \t\t \n\t\t \t\t \t \t \t \t \t \t\t\t \t \t \t \t \t \t \t \t\t\t \n \t\t \n\t\t\n"
Somme, 38 bytes
8s+vi:7+::J:^B4*25p9s6+v:J:6-:8-25pim,
Somme is kind of a complicated language. Some of the finer details are irrelevant, so I'll give you what you need to know.
- Somme is stack-based.
- The numbers
0-9push that number, along withA-Fpushing10-15. - The above are treated as 0-arity functions.
- When a 0-arity function is invoked, the default pop for the stack is set to the result. So,
8s+first pushes8, squares8, then adds8to it. This is72, orH. m,prints the stack as characters.
I'll add some more explanation later.
DUP, 31 bytes
0$"Hello, World!"\[^^>][$;,1+]#
DUP is a descendant of FALSE, with FALSE being a subset of DUP in most aspects—with a few exceptions. One exception being the way strings are handled. See the FALSE solution in this thread for comparison. In DUP, strings cannot be ouput to STDOUT directly unless the characters are output one by one like this:
'H,'e,'l,'l,'o,',,' ,'W,'o,'r,'l,'d,'!, (this solution would be 39 bytes long)
' pushes the Integer value of the following character on the data stack.
, prints the character according to the integer value on the stack to STDOUT.
For shorter strings, this method is usually the shortest way, but in the case of Hello, World! this method is beyond the break even point of the actual string handling method of DUP.
0$"Hello, World!"\[^^>][$;,1+]#
This method successively assigns the characters between both double quotes " to addresses of a cell array, starting at a given address (in this case address 0).
In this case, the cells would carry the values
0=72 1=101 2=108 3=108 4=111 5=44 6=32 7=87 8=111 9=114 10=108 11=100 12=33
After assigning the values to the cells, the length of the stored string gets pushed on the stack (in this case 13).
The while loop [^^>][$;,1+]# at the end reads out the cell content, starting at 0, prints the according character to STDOUT, increments the counter, and repeats the procedure until the string length 13 is reached.
Try out the solution in this online DUP interpreter or clone my DUP interpreter written in Julia from my GitHub repository, the latter coming with a thorough explanation of all operators.
Pushy, 16 bytes
`Hello, World!`"
The first thing to note is that Pushy has no string type. The backticks open/close "stringmode": every character in between has its codepoint (as an integer) pushed to the stack. The " is the print command, which takes all the stack's values, converts them to the corresponding chars, and prints the string.
In the very first version, before stringmode was implemented, program looked like this (can probably be golfed more):
72HhH8+&&3+44 32 87 111&3+&6-H33"
It basically just appends the necessary ASCII code points, then prints.
uBASIC, 21 bytes
1PRINT"Hello, World!"
uBASIC is the most basic BASIC.
Exits with an error (no trailing newline).
It took me until just now to realize I don't need a space between 1 and PRINT...
Gammaplex, 22 bytes
X"Hello World!"XXSXrRE
The links for the specs for this lang are dead, you can download the source code (C++) here.
Zetaplex, 23 bytes
"Hello, World!"SrOsDrFe
Documentation for this language is here, basically this is a stack-based language where every command is 2 characters.
stacked, 18 bytes
'Hello, World!'out
Introducing my newest creation, stacked! It's a stack based language. Creative, I know. But this pushes 'Hello, World!' to the stack the outputs it. Simple enough!
*><>, 21 bytes
"!dlrow ,olleH"Ool?u;
Try it out on the online interpreter here.
*><> (pronounced "Starfish") is an esolang based on ><>, developed by redstarcoder. Its aim is to add some useful features which are missing from base ><>, such as file IO, time functionality, and an interesting feature called 'dive/rise', which is used here.
If the 'dive' command, u is encountered, no instructions other than directional modifiers are executed until a 'rise' command, O, is encountered. Encountering a dive whilst already diving, or a rise when not diving, is treated as a no-op.
"!dlrow ,olleH"Ool?u;
"!dlrow ,olleH" Push "Hello, world!" to the stack in reverse.
O Rise - a no-op on first iteration
o Output top of stack as ASCII character
l?u If length of stack is non-zero, dive
; End program execution
Befunge 98, 19 18 Bytes
New answer (from undergroundmonorail)
"ck,@!dlroW ,olleH
Explanation
"starts string mode- Everything that follows is pushed to the stack. The stack is now
Hello, World!@,kc - After hitting the end, interpreter go back to the start
- It encounters
"again, ending string mode - 12 is pushed to the stack (
c) ktakes the top value of stack and executes the next command the instruction pointer can see that many times,pops a value from stack and outputs it as a char. It has been executed 12 times by lastkinstruction, and one time more when the interpreter actually reads the,instruction@ends the program
The difference with the old answer is that we cleverly reuse the " character by using Befunge's looping behavior when it hits the end of the line. Since it might be less intuitive, I'm letting the old one as well.
Also, you may have noticed that the stack will still contains some characters (ck,@) because of this nice trick, leaving some mess if we ever wanted to do something after that.
Old Answer
"!dlroW ,olleH"ck,@
This works for funge and befunge 98
Explanation
- Everything between
""is pushed to the stack. ('H'is now on top.) c(12) is pushed to the stackktakes the top value of stack and executes the next command the instruction pointer can see that many times.,pops a value from stack and outputs it as a char. It has been executed 12 times by lastkinstruction, and one time more when the interpreter actually reads the,instruction@ends the program
Beam, 312 161 bytes
'''''''''>`++++++++)@'''''''>`++++)+@+++++++@@+++@L'''''>`+++++++++)-@'''>`----)@'''''>`+++++++++++)@'''''>`+++++)-@+++@------@--------@'''''''>`---------)----@H
Beam is a 2D language similar to Befunge. Thanks to @MickyT for helping me golf it down.
Beam is based on several memory components:
- The beam, the main integer value
- The store, a secondary integer value
- The memory, an array of integer storage
I've only used the beam and the store here.
Used commands:
+and-increment and decrement the beam by 1, respectively.@outputs the beam as an ASCII character.'and ` increment and decrement the store by 1, respectively.)sends the beam to the left if the store's value is not 0.>sends the beam to the right. Combined with), this is used here to make a loop.Lsets the beam to the store's value (0 in this case).Hhalts the program. Not sure if this is necessary.
For more info, visit the Esolangs wiki page. Suggestions welcome!
NetLogo, 20 bytes
print"Hello, World!"
ELF 32-bit LSB executable (Linux), 59 bytes
0000000: 7f 45 4c 46 01 00 00 00 00 00 00 00 00 90 43 0d .ELF..........C.
0000010: 02 00 03 00 19 90 43 0d 19 90 43 0d 04 00 00 00 ......C...C.....
0000020: b9 2e 90 43 0d b2 0d cd 80 cc 20 00 01 00 48 65 ...C...... ...He
0000030: 6c 6c 6f 2c 20 57 6f 72 6c 64 21 llo, World!
This exits with INT 3 (breakpoint), so your shell may display a message to indicate this. However, the program itself prints nothing to STDERR.
Verification
$ cksum hw32
3205536342 59 hw32
$ ./hw32
Hello, World!Trace/breakpoint trap
$ ./hw32 | cat; echo
Hello, World!
$ ./hw32 | xxd -g 1
0000000: 48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 21 Hello, World!
ELF 64-bit LSB executable (Linux), 104 bytes
0000000: 7f 45 4c 46 02 01 01 03 b0 04 b3 01 b2 0e eb 18 .ELF............
0000010: 02 00 3e 00 01 00 00 00 08 00 40 00 00 00 00 00 ..>.......@.....
0000020: 30 00 00 00 00 00 00 00 b9 48 00 40 00 90 eb 30 0........H.@...0
0000030: 01 00 00 00 01 00 38 00 01 00 00 00 00 00 00 00 ......8.........
0000040: 01 00 40 00 00 00 00 00 48 65 6c 6c 6f 2c 20 57 ..@.....Hello, W
0000050: 6f 72 6c 64 21 0a 00 00 6f 72 6c 64 21 0a 00 00 orld!...orld!...
0000060: cd 80 b0 01 b3 00 cd 80 ........
This sets as many proper headers as possible without affecting the byte count, prints a trailing linefeed and exits cleanly with exit code 0.
Verification
$ cksum hw64
3288151474 104 hw64
$ file hw64
hw64: ELF 64-bit LSB executable, x86-64, version 1, statically linked, corrupted section header size
$ ./hw64
Hello, World!
$ echo $?
0
TI-83 Hex Assembly, 21 bytes
PROGRAM:H
:AsmPrgm219C9DEF0A45C9
:48656C6C6F2C20576F726C642100
Run it with Asm(prgmH). First line is code section, 2nd line is data section. I count each pair of hex digits as one byte.
Labyrinth, 46 45 40 bytes
72.10:1.:8:..:):1:.#2#4..:1..4.:8.0.33.@
Labyrinth is my new two-dimensional programming language (although the 2D'ness isn't really used here). Labyrinth operates on two stacks (although this code only uses one). Each character is a separate command. However, as opposed to most similar languages individual digits don't push that digit (which makes it annoying to build up larger numbers), instead they multiply the top of the stack by 10 before adding themselves. This allows you simply to write out the numbers you want to push. (Another language with this concept is Emmental.)
The other commands you need to know for the above code are . which prints the top of the stack (modulo 256), : which duplicates the top of the stack, ) which increments it and # which pushes the current stack depth. @ terminates the program. There's only one tricky part: W is printed by appending a 1 to 111 (o), because 1111 % 256 = 87.
Here is what the stack and output look like throughout the program:
Command(s) Stack Output
72 [72] ><
. >H<
10 [10] >H<
: [10 10] >H<
1 [10 101] >H<
. [10] >He<
: [10 10] >He<
8 [10 108] >He<
: [10 108 108] >He<
.. [10] >Hell<
: [10 10] >Hell<
) [10 11] >Hell<
: [10 11 11] >Hell<
1 [10 11 111] >Hell<
: [10 11 111 111] >Hell<
. [10 11 111] >Hello<
# [10 11 111 3] >Hello<
2 [10 11 111 32] >Hello<
# [10 11 111 32 4] >Hello<
4 [10 11 111 32 44] >Hello<
.. [10 11 111] >Hello, <
: [10 11 111 111] >Hello, <
1 [10 11 111 1111] >Hello, <
.. [10 11] >Hello, Wo<
4 [10 114] >Hello, Wo<
. [10] >Hello, Wor<
: [10 10] >Hello, Wor<
8 [10 108] >Hello, Wor<
. [10] >Hello, Worl<
0 [100] >Hello, Worl<
. [] >Hello, World<
33 [33] >Hello, World<
. [] >Hello, World!<
@
Kotlin, 22 bytes
print("Hello, World!")
There is an existing answer which includes a main function and a class definition, which aren't actually necessary when running Kotlin as a script (.kts).
Brian & Chuck, 42 38 32 bytes
_#Jgnnq."Yqtnf#_{?
#{<{>-?>--.>?
Introducing my latest esolang, originally submitted for Create a programming language that only appears to be unusable.
Each of the two lines defines a Brainfuck-like program which operates on the other program's source code - the first program is called Brian and the second is called Chuck. That makes "Hello, World!" about as simple as it is in Self-modifying Brainfuck (compared to Brainfuck itself).
I said that looping was too expensive in B&C to be worthwhile for a simple "Hello, World!", but it turns out I was wrong. Now I'm much less convinced that the code is optimal as it stands...
Explanation
One note about the source code: when parsing it, the interpreter replaces all _ with null bytes to make it easier to insert zero cells into the tapes.
Notice that Jgnnq."Yqtnf# is Hello, World! shifted by two characters. Why is it shifted? Because the , in Hello, World! is a valid command which would set a cell on Chuck to -1. We could shift it by one character (either way), but then the , would turn into either + or - which are also valid commands. We could reverse those at the end of Brian but the code as above has the same byte count and it seems a bit neater: we shift them by two characters, such that . becomes , which is a no-op for Brian.
So, when the program begins, Brian ignores everything on the tape until {? which switches control to Chuck, starting on the second command.
{<{> on Chuck finds the first non-zero cell on Brian (initially the #, which is just a dummy no-op). We decrement it with -. If that didn't make the cell zero yet, ? switches control back to Brian. Brian again ignores all the "code" in Jgnnq."Ypynf#_ and resets the loop on Chuck with {?.
Once that first cell has been zeroed, ? is a no-op. >--. moves to the next cell, subtracts 2 (to correct the offset) and prints it. Then we check if there's another character left to print by moving one to the right with >. If this reaches the null byte after the string (the _ on Brian's tape), then ? is a no-op and the program terminates. If that isn't a null byte yet, we've got more printing to do, and start over by switching to Brian who resets the loop with {? once more.
Z, 172 bytes
zz z zzz Z Z
zz z z zZZ z Z
zz z z zZZ zzZ Z Z
zz z z z z Z
zz z zz Z Z
zz z zzZ zzz Z
zz z z z z Z
zz z z z zZ Z
zz z z zZZ zzZ Z
zz z z zZZ zZZ Z
zz z zz zz Z
TP, 17,806 bytes
TP is a language I created based on using toilet paper.
The main operation is USE TP which removes a sheet (1) from the current roll (cell), each roll starts at 255 sheets. There is also GET TP which adds a new roll to the toilet paper pile. There is also the accompanying NEW TP and OLD TP which switches to a newer roll or older roll respectively. The final notable command is DIS TP which displays the ASCII value for the current roll.
This is included as tphelloworld.tp for the interpreter download.
This can definitely be shorter.
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
DIS TP
GET TP
NEW TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
DIS TP
GET TP
NEW TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
DIS TP
GET TP
NEW TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
DIS TP
GET TP
NEW TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
DIS TP
GET TP
NEW TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
DIS TP
GET TP
NEW TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
DIS TP
GET TP
NEW TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
DIS TP
GET TP
NEW TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
DIS TP
GET TP
NEW TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
DIS TP
GET TP
NEW TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
DIS TP
GET TP
NEW TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
DIS TP
GET TP
NEW TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
USE TP
DIS TP
Notes About the Interpreter
The interpreter always removes whitespace from the working line, so USE TP becomes USETP, this allows a 1 byte decrease per line. Since the interpreter uses Python, I believe newline style (CR+LF, LF) doesn't matter. A thing that I'm trying to think of a way to do is add a separator (command; command). If I figure out a way to implement that, then the filesize can be drastically reduced.
Mathematica 21 Bytes
When run in the kernel console, output will be sent to the kernel console. Same for the notebook interface. Since the kernel can be launched from any command line, this will work.
Print@"Hello, World!"
You can also have Mathematica pass the command as a string to the OS like so:
Run["Echo Hello, World!"]
which will open up a command window for a very short amount of time but if you don't blink, you'll see the message.
HTML, 13 bytes
Hello, World!
The text is automatically inserted into the <body>, and is displayed.
JSON, 16 bytes
"Hello, World!"
Apparently golfing doesn't need to be Turing-complete. Someone mentioned a meta-post but I took their word for it. And hey, this is the closest to STDOUT there is in JSON.
Hot Soup Processor, 17 bytes
mes"Hello, World!
This one's pretty straightforward, but I'm not aware of any other language which can use mes ("message") to print. The language itself is actually of Japanese origin, as one can tell from their website.
Apparently the closing quote isn't necessary (as of ver 3.4a), which is unusual for a non-esolang.
Ruby, 19 Bytes
$><<"Hello, World!"
Python 3, 22 bytes
print("Hello, World!")
In Python 3, printing is a function and so it requires parenthesis.
A 16 byte solution would be import __hello__, but annoyingly this prints the message without the comma!
FEU, 15 bytes
As sed, need empty input.
a/Hello, World!
Append Hello, World! to the input and the inout is implicitely printed.
Alternative (boring) version, taking no input:
__DATA__
Hello, World!
StackFuck, 18 bytes
"!dlroW ,olleH"{o}
The first cell is not used for the stack (It's the register), and is 0 at the start of the program, so no need to push a 0 at the start
Codelike, 127 bytes
on++++++++n+++n+++**pn++++n+++++++*+ap+++++++pp+++pn++++n++++++++*pfn++n++++*ap________p+++p______p________pn++++n++++++++*+pfe
Awesome, 21 Bytes
print "Hello, World!"
"Awesome" is a sample language created in a e-book about language construction which can be found here: http://createyourproglang.com No, I didn't write this book but it's still worth a look.
Lolo, 396 bytes
Something I made today, :P
loloLo loLO lo lOlo LO lOlolo loloLo loLolo lo Lolo LO loLolo lOlolo lolOlo loLO LO lOlolo loLolo loLolo lololo loLo LO lOlolo loloLo lolO lo lolO LO lOlolo lolO lolO lo lOlo lo lOlolo loloLo LOLo lo loLO LO lOlolo loloLo loloLo lo loloLo LO Lolo LO lOlolo loloLo loloLo lo loloLo LO lolO LO lOlolo loloLo loloLo lo LOLo LO loLolo lOlolo lolOlo LOLo lO lOlolo lolO lolO lo lOlo lo Lolo LO lOlolol
Processing, 23 bytes
print("Hello, world!");
It also opens a window for drawing, but this message does go to stdout in the IDE.
I don't understand why more people don't use Processing over Java for code golf. With most of the boilerplate removed, you can almost always outdo it with the same syntax.
Logy, 32 bytes
main[_]->print["Hello, World!"];
Define the rule main printing Hello, World!.
EDIT: Now puts need to be included, so I need to use print
Addict, 248 bytes
Addict is my new Turing-tarpit esolang, based on PRINDEAL.
a A
i 1
i 1
d
a B
A 1
A 1
d
a C
B 1
B 1
d
a D
C 1
C 1
d
a E
D 1
D 1
d
E H
E H
C H
c H
E e
E e
E e
B e
i e
c e
E l
E l
E l
C l
B l
c l
c l
E o
E o
E o
D o
d o
c o
E c
C c
B c
c c
E s
c s
D H
d H
c H
c o
A o
i o
c o
c l
d e
c e
i s
c s
Primer on addict
- All memory is stored in variables. Variables can hold only non-negative integers; all variables start out at
0. - Addict has 4 built-in commands:
decrement,increment, print acharcode, andtake a charcode from input. - You can define your own commands with
alias. This has very strict syntax:
a commandname
command1
command2
command3
This creates a new command called commandname. Whenever commandname is called, the following process happens:
command1is called.- If
command1succeeded,command2is run. - If
command1failed,command3is run.
See the GitHub repo for more information about Addict.
Act I
The first part of the program defines five commands: A, B, C, D, and E. Each one has this format:
a A
i 1
i 1
d
This defines a command A which adds two to the input through the following process:
increment the1st input.- If this succeeded,
increment again. (ialways succeeds unless it has no argument.) - Otherwise,
decrement nothing. (This never gets run for the above reason.)
The next command defined is B, which adds 4 to the input:
a B
A 1
A 1
d
- Run
Aon the1st input. (Always succeeds.) - If this succeeded, run
Aagain. (Always gets run.) - Otherwise,
decrement nothing. (Never gets run.)
Through the same process, C adds 8, D adds 16, and E adds 32.
Act II
The rest of the program is devoted to outputting Hello, World! in as few bytes as possible. The charcodes we need to output are 72 101 108 108 111 44 32 87 111 114 108 100 33, in that order. The shortest method I have found to output them all is to use six variables:
Hto output 72 and 87eto output 101 and 100lto output 108oto output 111 and 114cto output 44sto output 32 and 33
Here's a table of commands, and the values of the variables after each command:
Command Output H e l o c s
E H 32 0 0 0 0 0
E H 64 0 0 0 0 0
C H 72 0 0 0 0 0
c H H 72 0 0 0 0 0
E e 72 32 0 0 0 0
E e 72 64 0 0 0 0
E e 72 96 0 0 0 0
B e 72 100 0 0 0 0
i e 72 101 0 0 0 0
c e e 72 101 0 0 0 0
E l 72 101 32 0 0 0
E l 72 101 64 0 0 0
E l 72 101 96 0 0 0
C l 72 101 104 0 0 0
B l 72 101 108 0 0 0
c l l 72 101 108 0 0 0
c l l 72 101 108 0 0 0
E o 72 101 108 32 0 0
E o 72 101 108 64 0 0
E o 72 101 108 96 0 0
D o 72 101 108 112 0 0
d o 72 101 108 111 0 0
c o o 72 101 108 111 0 0
E c 72 101 108 111 32 0
C c 72 101 108 111 40 0
B c 72 101 108 111 44 0
c c , 72 101 108 111 44 0
E s 72 101 108 111 44 32
c s (space) 72 101 108 111 44 32
D H 88 101 108 111 44 32
d H 87 101 108 111 44 32
c H W 87 101 108 111 44 32
c o o 87 101 108 111 44 32
A o 87 101 108 113 44 32
i o 87 101 108 114 44 32
c o r 87 101 108 114 44 32
c l l 87 101 108 114 44 32
d e 87 100 108 114 44 32
c e d 87 100 108 114 44 32
i s 87 100 108 114 44 33
c s ! 87 100 108 114 44 33
If you can find any way to golf this program, please let me know!
V, 14 bytes
iHello, World!
Try it online! This enters insert mode, then inserts Hello, World! into the field.
CILOS, 43 bytes
int main(){__silos_print("Hello, World!");}
CILOS is a subset of C99 compiling to SILOS.
INTERCALL, 311 bytes
INTERCALL IS A ANTIGOLFING LANGUAGE
SO THIS HEADER IS HERE TO PREVENT GOLFING IN INTERCALL
THE PROGRAM STARTS HERE:
PUSH LXXII
PRINT
PUSH CI
PRINT
PUSH CVIII
PRINT
PRINT
PUSH CXI
PRINT
PUSH XLIV
PRINT
PUSH XXXII
PRINT
PUSH LXXXVII
PRINT
CALL ONE VII
PUSH CXIV
PRINT
CALL ONE V
PUSH C
PRINT
PUSH XXXIII
PRINT
END
It can probably be more golfed, but coding in INTERCALL is very hard.
CALL ONE jump to a line, execute it and return to the line after the calling line.
Cubix, 31 29 bytes
Saved 2 bytes thanks to @MartinBüttner
./v.o;@?/"!dlroW"S',u/"Hello"
I proudly present Cubix, my new 2-dimensional, stack-based esolang. Cubix is different from other 2D langs in that the source code is wrapped around the outside of a cube.
Test it online! You can now adjust the iteration speed if you want it to run faster or slower.
Explanation
The first thing the interpreter does is figure out the smallest cube that the code will fit onto. In this case, the edge-length is 3. Then the code is padded with no-ops . until all six sides are filled. Whitespace is removed before processing, so this code is identical to the above:
. / v
. o ;
@ ? /
" ! d l r o W " S ' , u
/ " H e l l o " . . . .
. . . . . . . . . . . .
. . .
. . .
. . .
Now the code is run. The IP (instruction pointer) starts out on the top left char of the far left face, pointing east. Here's an overview of the basic commands:
\|/_are mirrors, and reflect the IP depending on the direction it's traveling.>v<^set the direction of the IP unconditionally.?turns the IP right if the top item is positive, or left if it's negative.'pushes the char code of the next char."toggles string mode, performing'on each char until the IP encounters another".ooutputs a char code.;pops an item.@ends the program.
The first char we encounter is ", which toggles string mode. Each char code is pushed to the stack until we run into the next ". Then we push a space with S, and a comma with ',. The stack now contains !dlroW ,.
Next we hit u, which turns the IP right, then right again before executing the next instruction. The IP is now at the far right of the fifth row in the above diagram, facing west. Now the IP executes "olleH", making the stack !dlroW ,olleH. The / points the IP south, where it travels through the bottom row of the bottom face, back up to the S (which adds an extra space), and finally hits the v.
Now the IP is in what I call the "output loop". First it moves down and hits the ;, which turns pops the unnecessary space. Then it hits the ?, which directs it through o to output, bounces back around to ; to pop the char, then comes back to ?.
This repeats until the stack is empty. Then, since the top of the stack is no longer truthy, ? leaves the IP headed north. The next char is @, which terminates the program.
I'm not sure if this program is optimal; there's four two no-ops which could probably be put to better use. Martin and I will keep looking to find a better solution.
Logicode, 121 bytes
var a=11011
var l=@(a+00)
var o=a+11
out @1001000+@(a+01)+l+l+@o+@101100+@10000+@1010111+@o+@1110010+l+@1100100+@10001
As Logicode works on binary strings, it's pretty hard to convert stuff to ASCII. In comes the @ operator!
It basically converts a binary string to its ASCII counterpart, so something like @1001000 turns into H (1001000 is 72 in binary, and H's ASCII code is 72).
Dialpha bytecode, 44 bytes
Bytecode in Base64:
2voBAAEhAWQBbAFyAW8BVwEgASwBbwFsAWwBZQFIBQ8qAAAAHgseAAAAHwA=
Assembly code:
push8 0
"Hello, World!"
:loop
dup
jiz end
putc
jump loop
:end
flush
halt
Brain-Flak, 180, 176, 170 + 3 = 173 bytes
((()()())((((((((({})){}{}){}){}){})(((()()()){}()){}){}())([])[]{})))((((([][]()){}){})[[][]])<>)<>((((((({}))[]{}[][]())[][][])()()())[[]]()()()())[[]]()()())(<>{}()<>)
This code is 170 bytes long, but adds three bytes for the -A flag, which is required to force brain-flak to input and output in ASCII. One little detail is that this also requires the -r flag, but it did not when I first wrote this answer, so I am not adding one byte for it.
I'd post a detailed explanation, but this language hurts my brain...
Thanks to @Wheatwizard for saving 4 10 bytes!
Crossed out 4 is still regular 4... :(
MemeGolf, 570 bytes
Yet another strange esolang from me
jQuery.Outgolf Dennis by 72 bytes.
jQuery.44
jQuery.Outgolf Dennis by 29 bytes.
jQuery.44
jQuery.Outgolf Dennis by 7 bytes.
jQuery.44
jQuery.44
jQuery.Outgolf Dennis by 3 bytes.
jQuery.44
jQuery.Juice avocado for 67 minutes.
jQuery.44
jQuery.Juice avocado for 12 minutes.
jQuery.44
jQuery.Outgolf Dennis by 55 bytes.
jQuery.44
jQuery.Outgolf Dennis by 24 bytes.
jQuery.44
jQuery.Outgolf Dennis by 3 bytes.
jQuery.44
jQuery.Juice avocado for 6 minutes.
jQuery.44
jQuery.Juice avocado for 8 minutes.
jQuery.44
jQuery.Juice avocado for 67 minutes.
jQuery.44
jQuery.HE COMES
Outgolf Dennis by n bytes. add n to the accumulator, Juice avocado for n minutes. substract n from the accumulator, 44 print the value of the accumulator as a character and HE COMES terminate the program.
Straw, 2 bytes
->
or
~>
Straw have 2 stacks. The first is initialized with a empty string, the second with Hello, World!.
~ toggle the active stack and - pop an item from the inactive stack and push it onthe active stack and > is the print command.
MiniStringFuck, 1326 bytes
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++.+++++++..+++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++.+++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
Here, I present my new creation, MSF- (yes, MSF with a -, it's not Meta Server Fault here.) It's impractical for golfing, but it has 2 characters.
I am the winner on this language; you can't golf it more. Here are the two operators:
+: Add 1 to acc. If acc = 256, acc = 0..: Output acc as ASCII.
On the esolang page, I have, besides the interpreter (i.e. decoder), a generator (i.e. encoder) and an optimizer/golfer (i.e. compressor).
Unfortunately, this language doesn't support Unicode (yet).
SQF, 25 bytes
systemChat"Hello, World!"
Not sure if this qualifies as STDOUT, as to write to actual STDOUT the ArmA engine would have to to the writing, but the systemChat log is the closest thing SQF has to a standard output stream.
Caker, 294 bytes
ωΩθΩθθΩθΩθθθΘΩθθΩθθΩθΩθΩθΘθθΩθΩθθΩθθΘΩθθΩθΩθθΩθθΘΩθθΩθΩθθθθΘθΩθΩθθΩθθΘΩθΩθθθθθΘΩθΩθΩθΩθΩθθθΘθθΩθΩθθθθΘθθθΩθθΩθΩθΘΩθθΩθΩθθΩθθΘΩθθΩθθΩθΩθθΘΩθΩθθθθΩθΘ
Explanation:
ωflip the cell at the left of the tape head if the current cell is 0, at the right otherwiseΩmove the tape head leftward if the current cell is 0, rightward otherwiseθpush the current bit on the print stackΘprint the character in the print stack and clear the print stack
Golfuck, 39 bytes
jrseeqzjzzzsvDsj*aaa*r"s*hB(FsxahB(z*sh
Credit to primo, this is his answer, but in Golfuck.
Neoscript, 28 bytes
console:log("Hello, World!")
Emojicode, 37 bytes
🏁🍇😀🔤Hello, World!🔤🍉
Pyramid, 587 294 bytes
(72)[
no
+<
]
=
a
<
=
np
<
=
(29)[
no
+<
]
=
a
<
=
np
+<
=
a
++++++<
=
np
<
=
a
<
=
np
+<
=
a
++<
=
np
<
=
(67)[
no
-<
]
=
a
<
=
np
-<
=
a
-----------<
=
np
<
=
(55)[
no
+<
]
=
a
<
=
np
<
=
(24)[
no
+<
]
=
a
<
=
np
<
=
a
+++<
=
np
<
=
a
------<
=
np
<
=
a
--------<
=
np
<
=
(67)[
no
-<
]
=
a
<
Yikes... this is a monstrosity. This is now less of a monstrosity, but still crazy big for "Hello, World!".
The new byte count was because for-loops were implemented in Pyramid (YES!)
Pyramid is a stack-based language, which was built on Stackylogic. You should probably go and click on the link before you go to the Github page, because you'll understand the what the commands mean on the GH page better.
There's 250 104 lines of code here, if you're interested.
Sesos, 24 21 bytes
0000000: 2845ee adaa55 ddcabd 123596 b32b71 5f398a 23b577 (E...U....5..+q_9.#.w
Try it online! Check Debug to see the generated binary code.
I tried several less straightforward approaches – including a port of @primo's brainfuck answer – but they all turned out longer.
How it works
The binary file above has been generated by assembling the following SASM code.
add 72 ; Set cell 0 to 72.
put ; Print 'H'.
fwd 1 ; Advance to cell 1.
add 101 ; Set cell 1 to 101.
put ; Print 'e'.
add 7 ; Set cell 1 to 108.
put ; Print 'l'.
put ; Print 'l'.
add 3 ; Set cell 1 to 111.
put ; Print 'o'.
fwd 1 ; Advance to cell 2.
add 44 ; Set cell 2 to 44.
put ; Print ','.
sub 12 ; Set cell 2 to 32.
put ; Print ' '.
rwd 2 ; Retrocede to cell 0.
add 15 ; Set cell 0 to 87.
put ; Print 'W'.
fwd 1 ; Advance to cell 1.
put ; Print 'o'.
add 3 ; Set cell 1 to 114.
put ; Print 'r'.
sub 6 ; Set cell 1 to 108.
put ; Print 'l'.
sub 8 ; Set cell 1 to 100.
put ; Print 'd'.
fwd 1 ; Advance to cell 2.
add 1 ; Set cell 2 to 33.
put ; Print '!'.
F#, 21 bytes
printf"Hello, World!"
Thanks for the comment @LegionMammal978!
Arc, 21 bytes
(prn "Hello, World!")
PAWN, 29 bytes
main()
print"Hello, World!\n"
(no trailing newline)
Originally I was looking how to get QuadPawn (video) installed on my handheld scope but it turned out that my scope's hardware version (V2.72/8MB) isn't supported... :-(
Someone else wants to try this?
Luckily getting Pawn compiler 4.0.5504M from https://github.com/compuphase/pawn compiled on Debian-8.5/AMD64 was not a big deal.
That way I could run/verify these two lines.
Node.js REPL, 20 bytes
throw"Hello, World!"
Output:
> throw"Hello, World!"
Hello, World!
Matlab / Octave 21 20 bytes
21 bytes:
disp 'Hello, World!'
Try it on ideone (using Octave).
Note that removing disp is not acceptable, as the output would be ans = Hello, World!.
20 bytes:
!echo Hello, World!
This works for Matlab on Windows, Linux or Mac.
Cow, 1539 Bytes
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MoO MoO MoO MoO MoO MoO MoO Moo Moo MoO MoO MoO Moo OOO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo MoO MoO MoO Moo MOo MOo MOo MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo OOO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo
Gaot++, 1349 1167 690 bytes
baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bleeeeeeeeeeeeet bleeeeeeeeeet baaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bleet bleeeeeeeeeeeeet bleeeeeeeeeet baaaaaaaa bleet bleeeeeeeeeeeeet bleeeeeeeeeet bleeeeeeeeeeeeet bleeeeeeeeeet baaaa bleet bleeeeeeeeeet baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bleeeeeeeeeeeeet bleeeeeeeeeeeeet bleeeeeeeeeet baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bleeeeeeeeeet bleet baa bleeet bleeeeeeeeeeeeet bleeeeeeeeeet baaaaaaaaaaaaaa bleet bleeeeeeeeeeeeet baaaaaaaaa bleet bleeeeeeeeeeeeet baaaa bleet bleeeeeeeeeeeeet bleeeeeeeeeet baaaa bleet bleeeeeeeeeet bleeeeeeeeeet bleeeeeeeeeet baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bleeeeeeeeeet
Thanks to LeakyNun for having insanely golfed it
73a 13e 10e 30a 2e 13e 10e 8a 2e 13e 10e 13e 10e 4a 2e 10e 45a 13e 13e 10e 33a 10e 2e 2a 3e 13e 10e 14a 2e 13e 9a 2e 13e 4a 2e 13e 10e 4a 2e 10e 10e 10e 34a 10e
BrainCurses, 42 bytes
'!!'d!'l!'r!'o!'W!' !',!'o!'l!!'e!'H![$@_]
You can find an interpreter here, written by yours truly. This is part of my project to implement many of the unimplemented languages on esolangs.
Running & output
λ node BrainCurses.js HW.txt
Hello, World!
Maple, 16 bytes
"Hello, World!";
s-lang, 18 bytes
Literally replaces "nothing" with "Hello, World!" (s-lang is not really meant to create strings, just modify them).
t[][Hello, World!]
- t - replace function
Try it here
eacal, 24 bytes
put string Hello, World!
Simple enough. put prints its argument, string turns its arguments into a string entity.
Arithmescript, 42 bytes
Golfed:
var input = "";add("Hello, World!");out();
Ungolfed:
var input = "";
add("Hello, World!");
out();
This defines the input as nothing, adds the string Hello, World!, and then alerts it (you can't log to console as of now)
Technically this is 379 bytes, as v1.0 had a bug where not embedding the programming language interpreter led to not being about to change the input variable.
Requires Arithmescript v1.0 or higher
Arithmescript, 27 bytes
Golfed:
add("Hello, World!");out();
Ungolfed:
add("Hello, World!");
out();
v1.1 of Arithmescript automatically defines the input variable, so we use less bytes!
Requires Arithmescript v1.1 or higher
Arithmescript, 11 bytes
Golfed:
hw();out();
Ungolfed:
hw();
out();
Arithmescript has a function that works the same as add("Hello, World!") but is shorter and takes no parameters.
Requires Arithmescript v1.1 or higher
If you're wondering, Arithmescript is a programming language written in JavaScript for golfing. Technically, it's not a programming language, but it is. You can view the sources of v1.0 and v1.1.
PostScript, 16 bytes
(Hello, World!)=
Rews, 14 CP437 bytes
ïHello, World!
Explanation
ïHello, World! Insert in the buffer the text "Hello, World!" (the ¿ is not needed at the end of the program)
Implicit output
Commercial, 75 bytes
I post a link to my implementation, but there is a link to the esolang page in the README
"Hello, World!" - Satisfied Consumer of x
x has been selling out worldwide!
This code is equivalent to the following pseudocode
Put "Hello, World!" in x
Print the value of x
OPL-32, 33 bytes
...see Open Programming Language.
proc m:
print"Hello, World!"
endp
(no trailing newline)
Tested on Nokia Communicator 9300 with opl-1.56.
Kipple, 55 bytes
33>o<100 108>o<114 111>o<87 32>o<44 111>o<108>o<101o<72
Shorter answer here. This, however, is supporter by each and every intepreter of the language. The other one uses ", which does not have full portability between interpreters.
Your Mom, 14 bytes
'Hello, World!
Explanation
'...
'... - Push the string. The ending ' is not needed at the end of program
- Implicit output
68k machine code (EASy68k), 30 bytes
00000000: 303c 000d 43f9 0000 1010 4e4f ffff ffff 0<..C.....NO....
00000010: 4865 6c6c 6f2c 2057 6f72 6c64 2100 Hello, World!.
I don't know what I'm doing!
Explanation
ORG $1000
START: ; first instruction of program
MOVE #13, D0 ; put text display task number in D0
LEA HELLO, A1 ; load address of string to display into A1
TRAP #15 ; activates input/output task
SIMHALT ; halt simulator
HELLO DC.B 'Hello, World!',0
END START ; last line of source
Cheddar, 20 bytes
print"Hello, World!"
Yes!!!!!
I have been waiting for this day a long time. After days of banging my head on my desk trying to get Cheddar to work. I have finally made a Cheddar REPL. The REPL is very alpha, so if you'd like to test it out, ping me in chat @Downgoat
Update: To run simply go to cheddar.vihan.org and follow the download instructions
Update 2: Use the experimental online REPL at: cheddar.vihan.org/repl
Gopher, 48 Bytes
Hello World (42 Characters)
&++<'×<&÷+<^-<<×-<#!+<$@-<&@<×-<@++<@<.!<=
Hello, World (45 Characters)
&++<'×<&÷+<^-<<×-<#÷+<!×<$@-<&@<×-<@++<@<.!<=
Hello, World! (50 Characters)
&++<'×<?^×+<^-<<×-<#÷+<@÷<'?^-<?^<×-<÷--<@<.!-<+<=
Hello, World! (48 Characters)
&++<'×<&÷+<^-<<×-<#÷+<!×<$@-<&@<×-<@++<@<.!-<+<=
Click Here to Run the Code
This is an esolang I created myself, Not strictly designed for golfing, But it can be fun
As far as I am aware, This is also the shortest Hello World in Gopher, Prove me wrong though
It'll help me improve the optimiser I built for it!
Casio BASIC, 15 bytes
There is a TI-BASIC answer, but no Casio BASIC ? what a shame !
Fortunately, I went here
"Hello, World!"
Unlike in TI-BASIC, you can't thug around the closing " (you still can with parentheses tho).
However, lowercase letters are 1 byte long (on recent models, it might not have been the case with previous ones, but writing lowercase letters was a PITA anyway).
Silicon, 15 bytes
"Hello, World!"
Everything in between the quotes are pushed onto the stack. Output is implicit, so no output command is needed.
scratchblocks2, 33 bytes
when gf clicked
say[Hello, World!
DOG, 20 bytes
bark "Hello, World!"
BruhScript, 28 bytes
I take the bytecount of the encoded version.
Source:
«Hello, World!
Encoded:
0000000: 007e 002f 0008 0018 0018 000e 0056 0005 .~./.........V..
0000010: 0021 000e 0009 0018 0012 0044 .!.........D
This insane count of NUL bytes is because the encoding of BruhScript is a 16-bit encoding.
This code is really simple. A block (string literal, lambda, etc...) don't need to be terminated at the end of file.
EDIT: BruhScript print every thing on the stack at the end of the program, so the print function is not needed
Bodyless HTTP response headers, 134 bytes
HTTP/1.1 200 OK
content-type: text/html
link: <data:text/css,body:after{content:"Hello, World!"}>; rel=stylesheet
content-length: 0
It is a valid http-response headers set. They have to be followed by 2 newlines \r\n\r\n. The response body is empty. Firefox can handle such response and shows an HTML page with Hello, World! text.
Line breaks are counted as 2 symbols, according to HTTP specification. The 2 trailing newlines are not counted as they do not belong to the headers themselves.
Fuzzy Octo Guacamole, 15 bytes
"Hello, World!"
This is a new language I created with inspiration from @Conor's NTFJ, @MatinBüttner's Brian and Chuck, and a couple others.
It has 2 stacks.
This is fairly simple and only uses one stack though.
The "..." denotes a string literal that is pushed to the stack.
Then implicit output.
0815, 92 80 bytes
<:48:~$<:65:~$<:6C:~$$><:6F:~$>@<:2C:~$<:20:~$<:57:~${~$<:72:~${~$<:64:~$<:21:~$
64-bit Windows NT executable, 261591 bytes
Because why not?
Anyway, here's a 89,890-byte ZIP archive containing this executable: http://pastebin.com/raw/pJ6CeNuG (encoded in Base64)
------EDIT------
we don't allow link-only answers for off-site code
Okay. The C code I compiled the executable from is the classic Hello World program:
#include "stdio.h" // Use <cstdio> on C++
int main(){
printf("Hello, World!");
}
The compiler is GCC without optimizations. Maybe other compilers (such as Intel C(++) Compiler or Clang) can generate smaller executables.
Wat, 47 + 1 = 48 bytes
0«!dlroW ,olleH»>ó#ÐÑÅv
^ <
I post a explanation tomorrow
Here is the explanation:
First line:
0«!dlroW ,olleH»>ó#ÐÑÅv
0«!dlroW ,olleH» Push a reversed null terminated string
> Go forward
ó Duplicate the top of stack
# Skip the next instruction
Ð Kill all "execution engines" (end the program)
Ñ If the top of the stack is 0, go backward (execute Ð and end the program), otherwise go forward
Å Print the character on the top of the stack
v Go downward
Second line:
^ <
Simply loop from the 'v' to the '>'
Stack Cats, 134 + 3 = 137 148 907 bytes
I'm happy to give a 500-rep bounty to the first person who can bring this down below 100 (+3) bytes.
-*(:^-_-_:-_:-_:-_:-_-_:[:^]]:^!-*!->[!_>[!_>[{]>[^-_-_:]]<<<}>[!-:^[[\\>]:^[[>:[>:^[<<]]\\>[*>+:^:-_]:^[[-_*[>>>[-_[/<]>+^[>[<<]]*>[)
Needs to be run with the -l switch of the Ruby interpreter, hence +3 bytes.
There's definitely still room for improvement here, but I haven't quite figured out myself yet how to program in this language effectively. The current solution was just a general idea for how to approach the challenge and I just wrote the code in a rather ad-hoc way. Even without changing the overall approach I'm confident that one can end up much closer to 100 bytes or even below.
Explanation
Proudly introducing my latest creation, this time in collaboration with Sp3000. :) The idea for this language was originally born for feersum's language design CnR, but at the time we weren't able to figure out whether this idea was usable, and then kept putting it off. A couple of weeks ago we decided to revisit the idea, cleaned up the design a lot and managed to make progress towards proving its Turing-completeness, so here it is.
Stack Cats is a stack-based, reversible programming language. In fact, in order to undo any piece of code, you simply mirror it (which means reversing it and swapping all brackets and slashes). Furthermore, every program has to have mirror symmetry itself. This implies that every non-trivial program has odd length and the form f g f-1, where g is a single very simple command which is also an involution. That makes programming and especially golfing in Stack Cats fairly tricky.
Note that the source code above isn't actually symmetric. This is because the -l switch lets you omit the first half (before the g), since it's redundant in any valid program anyway. So the full program is actually:
(]<*[[>>]<]^+<[>\]_-]<<<]*_-]]^:[_-:^:+<*]<//[[>>]^:<]:<]]^:[<//]]^:-!]<{>>>[[:_-_-^]<[}]<_!]<_!]<-!*-!^:[[^:]:_-_-:_-:_-:_-:_-_-^:)*-*(:^-_-_:-_:-_:-_:-_-_:[:^]]:^!-*!->[!_>[!_>[{]>[^-_-_:]]<<<}>[!-:^[[\\>]:^[[>:[>:^[<<]]\\>[*>+:^:-_]:^[[-_*[>>>[-_[/<]>+^[>[<<]]*>[)
When I say "stack-based", I mean that the memory model is actually a tape of stacks. As in my other stack-based languages, each stack is initially implicitly filled an infinite amount of zero (this time, that was actually necessary to ensure full reversibility of all commands on all possible states). In addition to this the initial stack starts with a -1 on top when there is no input (which is the case here).
Output in Stack Cats works simply by printing the contents of the final stack, top to bottom. So the goal is to generate a stack with the following values (top is right):
33 100 108 114 111 87 32 44 111 108 108 101 72
(There are a few other options but this is what the above program does.)
I'm going to represent the tape as follows, with the v indicating the tape head's position:
v
... -1 ...
0
Now on to the code. Note that the program begins with a (...) which continues until just before the central *-*. This is a loop, which can be used as a conditional. The loop is entered and exited only when the top of the stack is positive. Since the initial stack holds a -1, the entire first half of the program is skipped. This makes programming a lot easier, but of course it's also somewhat wasteful in terms of golfing. I haven't yet been able to figure out how to make easy use of both halves of the code except for simple toy problems.
Next comes the *-*. Here, * takes the top of the stack XOR 1, i.e. turns -1 into -2, the - negates it to give 2 and then we have another *, giving 3. Now that the top of the stack is positive, we do enter the (...) in the second half. The code in there will be executed only once and now turns this single 3 into the stack we need for the output.
It turns out that the quickest way to obtain large numbers without loops is a Fibonacci-like progression where we repeatedly add the last value to the one before. I say Fibonacci-like because we have some flexibility here since we can occasionally increment or decrement values in the process, or add the last value to the previous one several times before swapping their roles.
For now, we're trying to compute 33 and 87, because they both appear in the same Fibonacci-like sequence. (And they are the character codes of ! and W.) If the top of the stack is a and the value below is b, I'll be writing this as (a, b), so the current state is (3, 0). Let's go:
: Swap the top two values. ( 0, 3)
^ XOR the second into the first. ( 3, 3)
- Negate top. ( -3, 3)
_ Subtract top from second. ( 6, 3)
As you can see, -_ can be used to
add the second-to-top to the top.
-_ Add second into top. ( 9, 3)
: Swap. ( 3, 9)
-_ Add second into top. ( 12, 9)
The last two together form a normal
"Fibonacci step".
:-_ Fibonacci step. ( 21, 12)
:-_ Fibonacci step. ( 33, 21)
:-_ Fibonacci step. ( 54, 33)
-_ Add second into top. ( 87, 33)
: Swap. ( 33, 87)
Now [ pushes the 33 one stack to the left (moving the tape head along), :^ duplicates it and ] moves one copy back. Together, this just puts a 33 on the stack to the left. And then ]:^ moves the 33 to the right and duplicates it again there. So now we've got:
v
33
... 33 87 33 ...
0 0 0
Next, it turns out that most of the lower case letters are multiples of 3 and their other factors are 36, 37, 38 which aren't too far away. 99 is also useful, since we'll need both 100 and 101, so we now create a stack with those factors so we can multiply all of them by 3 later.
Stack Cats doesn't have a decrement or increment command. The standard way to increment a value is to combine bitwise NOT (!) and unary negation (-). However, if we know that our value is even we can also increment by toggling the least significant bit with *. Hence, the following !-*!- brings the 33 on top of the stack up to 36. Next, we pull over two 0s from the empty stack to the right, turn use them to get incremented copies of the 36 with >[!_>[!_. The tape now looks like this:
v
38
37
36
... 33 87 33 ...
0 0 0
Time for the loop:
>[{]>[^-_-_:]]<<<}
Besides the (...) we've already seen, Stack Cats has another loop, {...}, but its semantics are also a bit unusual. The loop body is always executed at least once. When the loop starts, Stack Cats remembers the value on top of the stack, and then the loop doesn't terminate until that value is seen again at the end of an iteration. That means the easiest way to work through a stack is to put a zero on top and then shift the stack away one value at a time until we hit the zero at the bottom. Here is what the loop does:
>[ Fetch a zero from the empty stack to the right.
{ Loop until zero...
] Push the current factor X to the right.
>[ Fetch a zero from the stack next to that.
^ XOR X into that zero, duplicating X.
-_-_ Add X into the new value twice, computing 3*X.
: Swap 3*X and X.
]]<< Push X two stack to the right and return.
< Move back to the stack we're looping over.
}
> Move onto the stack which now holds the multiples.
This is the new tape:
v
99 33
108 36
111 37
... 33 87 114 38 ...
0 0 0 0 0 0
The next bit is [!-:^ which you've seen before: it increments the 99 to 100 and duplicates it on the empty stack next to it. The [[ moves one of those 100s over onto the 33 — we're now starting to build the final stack there. Here's what we've got:
v
33
108 36
100 111 37
... 33 87 100 114 38 ...
0 0 0 0 0 0
It's going to be annoying to fetch all the values from so many stacks away, so here's a new command. \ swaps the current stack with the one of the right, moving the tape head along. So the \\ now brings the output stack closer to the useful values:
v
33
108 36
100 111 37
... 87 100 33 114 38 ...
0 0 0 0 0 0
Next, there's >]:^ which moves the 108 onto the empty stack to duplicate it. [[>:[ moves one of them and the 114 onto the output stack. >:^[ duplicates the 111 and moves one copy onto the output stack. Then we fetch the 87 with <<]], and move the stack two positions further with another \\. We've now got World!:
v
87
111
114 33
108 36
100 37
... 100 111 108 33 38 ...
0 0 0 0 0
Time for the space: we've still got that 33 around, so we fetch and decrement it with >[*. We don't need those 36, 37, 38 any more, but we do need a 44. We also still need the 72 for the H later on, and we can actually compute that on the way. All of this is accomplished with the following code:
>+:^:-_]:^[[-_*[>>>[-_[
The new command here is + which swaps the top of the stack with the third value from the top. We use it together with : to put the 36 below the 37 and 38. The ^ replaces the 37 with 37 XOR 38 which is 3. We then add this to 38 with :-_ which gives 41. ]:^ duplicates that on the stack to the right. Then we add a 32 into it with [[-_ and decrement it with * by toggling the least-significant bit. Voilà, there's our 72. We move it to the side with [, go back to the other copy of 41 with >>> and add another 3 into it with [-_ before putting it on the output stack with [. Next, we move the current stack to the left with /. Here's the current tape:
v
44
32
87
111
114
108
100 72 3
... 100 111 33 108 36 ...
0 0 0 0 0
Now all that's left is collecting a few more values with
<]>+^[>[<<]]*>[
The <] fetches the 111. Then >+^ swaps the 72 with the zero below in order to duplicate the 108. [>[ moves both of those onto the output stack. <<]] fetches the 100 and * turns it into a 101. Finally >[ gets the 72 and we're done.
If you've actually followed all of this you'll noticed that there's tons of stuff we could have done differently which may or may not have saved bytes. There are many more ways to compute the different numbers, maybe XOR would have been useful more often. We could also generate some larger or negative numbers, since the final values are taken modulo 256 before being printed. We could also have made more use of loops, or used the stacks differently. There are also further stack manipulation commands like | to reverse it, X to swap the stacks left and right and = to swap only their top values.
As difficult as it is to program in Stack Cats, it still provides quite a large set of useful commands, which allow for many different approaches to any given problem.
ABCD, 366 bytes
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAADDAAADBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBDBBBBBBBBBBBBDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAADAAADBBBBBBDBBBBBBBBDBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBD
Proof (note that I'm actually using the interpreter of ABCD)
Go, 64 61 bytes
3 bytes thanks to George Gibson
package main
import."fmt"
func main(){Print("Hello, World!")}
Go requires an import to print to standard output, unfortunately. No trailing newline.
Tellurium, 17 bytes
µHello, World!~^
Well, this is pretty easy to explain.
µstarts reading the string~stops reading the string, and stores it in the selected cell.^outputs the selected cell's value, which is currently "Hello, world!"
Alternate version (5 bytes)
This one uses the preinitialized variable !o, which expands to "Hello, World!".
µ!o~^
Come Here, 19 bytes
TELL"Hello, World!"
Kotlin, 50 48 bytes
fun main(a:Array<String>)=print("Hello, World!")
~English, 29 bytes
Display "Hello, World!".Stop.
EEL, 93 bytes
(Also known as Extensible Esoteric Language)
def(z|-1;x;z)
def(d|c;z)
72
d
101
d
108
c
d
111
d
44
d
32
d
87
d
111
d
114
d
108
d
100
d
33
d
I'm sure this could be golfed quite a lot, but this is something I whipped up pretty quick. All it does is define some helpful functions and use them to display "Hello, World!"
Also, this DOES print "Hello, World!" with the characters separated by newlines, but I can't do anything about that, it's impossible in EEL.
APL, 15 bytes
'Hello, World!'
In APL, the last value is printed, so the hello world is obvious.
UGL, 80 bytes
cuu$u$$$$$$*$d*O$*u$*u$O$@++u$O$O^^+$O@@$$uu**dO%$$*$**$O@$*$u*dddO%$OuuuO%OdOuO
With comments:
#H e l l o , W o r l d !
#72 101 108 108 111 44 32 87 111 114 108 100 33
cuu$u$$$$$$*$d*O #print H 72 (stack:2 3 3 3 3 3 3)
$*u$*u$O$@ #print e 101 (stack:101 2 3 3 3 3 101)
++u$O$O #print ll 108 108 (stack:101 2 3 3 108)
^^+$O@@ #print o 111 (stack:108 111 101 2 3 3)
$$uu**dO #print , 44 (stack:108 111 101 2 3)
%$$*$**$O@ #print 32 (stack:32 108 111 101 3)
$*$u*dddO #print W 87 (stack:32 108 111 101)
%$O #print o 111 (stack:32 108 101 111)
uuuO #print r 114 (stack:32 108 101)
%O #print l 108 (stack:32 101)
dO #print d 100 (stack:32)
uO #print ! 33 (stack:)
Grin, 15 bytes
(Hello, World!)
Grin is a BF-based language that aims to make it slightly less of a Turing Tarpit.
Auo, 21 bytes
i.o:['Hello, World!']
Batsh, 23 bytes
print("Hello, World!");
One-sentence description
Batsh is a language which compiles to bash and Windows Batch, thereby providing effortless cross-platform support for shell scripts, without additional dependencies.
Scratch, 15 bytes

(scoring used)
Makes the sprite say "Hello, World!" Can't get much simpler than that.
Y 16 bytes
No, not http://foldoc.org/Y or https://github.com/ConorOBrien-Foxx/Y although we probably need an entry for both of them as well...
Y is a stack-oriented FORTH-type programming language by Thomas Fischbacher derived from Wouter van Oortmerssen's "FALSE". Like FALSE, Y is cryptic to the extreme. According to the readme it is much more powerful because "virtually all of the example programs in 'Kernighan & Ritchie - Programming in C' can be done in Y in a fraction of time and code."
"Hello, World!"`
Molecule, 24 bytes (UTF-16)
"ৣ͢ҁᚇь͚ᕲ"C
Molecule files written must be written in UTF-16 for it to properly work.
This basically uses the string compression method.
Pickle, 34 bytes
cbuiltins\nprint\n\x8c\rHello, World!\x85R.
Replace the escape sequences by their appropriate character code.
Surprise. Python's default serialization implementation actually uses an interpreter over a stack-based language. Just call pickle.load on it to run it.
Foo, 14 bytes
"Hello, World!
Not printing Hello World seems to be a lot harder in Foo that the opposite...
META, 410 bytes
vXKZELI:{>.>:<.^;>,<v.^;;v.>>;<<^;v.v.^^;}{v.>:<.^;>,<v.^;;v.>>;<<^;v.v<;>^^;}{v.>::<.^;>,<v.^;;v.>>;<<^;v.v:^^;}
WJSM
NT
{fv.>::<.^;>,<v.^;;v.>>;<<^;v.>>;<<v^^;}>;<.>>!{v<<.>:<.^;>,<v.^;;v.>>;<<^;v.v<;>^^;}{v.>:<.^;>,<v.^;;v.>>;<<^;v.v.^^;}{v.>:<.^;>,<v.^;;v.>>;<<^;v.v.^^;}>>>.>;>;<<<<.>>.<<<{v.>::<.^;>,<v.^;;v.>>;<<^;v.v:^^;}{v.>:<.^;>,<v.^;;v.>>;<<^;v.v.^^;}{v..^;v..^;;>,<v.^;;v.>>;^<<;v.v.^^;}v>:<^.vvv?
This is another heckuva program. You want to know what it does, I'm sure. First, here's a nicer-looking version:
vXKZELI:{>.>:<.^;>,<v.^;;v.>>;<<^;v.v.^^;}{v.>:<.^;>,<v.^;;v.>>;<<^;v.v<;>^^;}{v.>::<.^;>,<
WJSMv.^;;v.>>;<<^;v.v:^^;}{v.>::<.^;>,<v.^;;v.>>;<<^;v.>>;<<v^^;}>;<.>>!{v<<.>:<.^;>,<v.^;;
NTv.>>;<<^;v.v<;>^^;}{v.>:<.^;>,<v.^;;v.>>;<<^;v.v.^^;}{v.>:<.^;>,<v.^;;v.>>;<<^;v.v.^^;}>>
>f.>;>;<<<<.>>.<<<{v.>::<.^;>,<v.^;;v.>>;<<^;v.v:^^;}{v.>:<.^;>,<v.^;;v.>>;<<^;v.v.^^;}{v..
^;v..^;;>,<v.^;;v.>>;^<<;v.v.^^;}v>:<^.vvv?
The basis of META is that it selects characters from the source code and performs operations of them. ><^v move the selection pointer around, {} allow for an extra level of eval and :;.,!? perform 6 different operations.
Let c be the character in question, and @c be its charcode.
:yieldsatob(atob(c + c + "==") + c + "==");yieldsatob(c + c + "==").yieldschar(127 - @atob(c + c + "==")),yieldsatob(c + char(127 - @c) + "==")!yieldschar(@c >> 2 ^ 94)?yieldschar((@c * 3 >> 3) + (@c >> 5))
Each time a char is yielded, it's pushed to a string, which is eval'd, then eval'd again.
The charset yielded by each character is not complete, so we cannot simply use these characters. The use of {} is mandatory for a lot of characters, which are constructed in a JSF**k-esque way.
A full explanation will take a ridiculously long time, and now I have to breathe some nice air.
.kill();, 39 bytes
SFTp^B2lA=ZkW`j\9@+*+@9\j`WkZ=Al2B^pTGT
Alright, so I made another monster! This is how this works. First, the code is iterated through, and a resulting string is made. First, let's look at the first character and some related information:
char: S
opposite char: T
average char floored: (@S + @T) / 2 = (83 + 84) / 2 = 83.5 => 83 = S
index: 0
result: S
Each character in the new string is calculated by averaging the values of the current char and the char that lies the same distance from the end of the string; this value is incremented by the index (starting at zero) then floored. The resulting character is appended to the result.
Once this result is made, we look for a valid base64 string in it. This is what that result looks like:
SGVsbG8sIFdvcmxkIQ==?UOs#yq'vZ_,Rc!4xky
This will result in the string SGVsbG8sIFdvcmxkIQ== being found as the base 64 string for "Hello, World!", and is thus outputted.
(When no such string is found, then a more complicated algorithm ensues that transpiles this to JavaScript, so this is most definitely turing-complete and thus a valid language.)
BTClang, 53 bytes
My newest invention! BTClang is short for Bitcoin language. Although it has nothing to do with bitcoins, it shares some similiarities with this language. Code:
4|$&2h
2|A%
3|Im!
3|%([F
2|!4P
2|"Cv
3|zJO
1|!M
2|!&r
Explanation:
First of all, each line of the code consists of a number, a pipe and a key. The process goes as following for the example 2|5C. We take the key (5C), and generate the SHA256-hash of it. We get this:
ad5d3cc03d8b60e308b22e27fe4bbccae6a83d5496bc5e2a36aeb76eae51aeb0
The number before the pipe says how many hexadecimal number we want to extract from the end of the hash. This number is 2, so we take two 2-digit hexadecimal numbers from the end of the hash.
We are left with ae and b0. Converting these to integers will result into 174 and 176. These will be processed with the formula n % 94 + 32, so when this is converted to a character, the character will always be a printable ASCII character with 31 < ord < 128. The hashtags are replaced with newlines.
174 % 94 + 32 = 112 (p)
176 % 94 + 32 = 114 (r)
And so on...
The final translation of the code is print("Hello, World!"), which is then evaluated as normal Python. Although this is a solution, I am pretty sure this can be golfed further. It just takes a lot of computational power...
(By the way, you can try to find sets of characters yourself with the BTClang_miner)
Flummery v3, 165 bytes
Flummery is a BF derivative, but not in the usual sense. It's a meta BF, if you will. There is a pointer, and there is a tape.
[ < > + - ]
^
The > command moves the pointer right one, < moves the pointer left one, . is ., , is ,, and any other character is a no-op. After each character is read, the character pointed to is added to the transpiled code. (At the moment, you'll have to copy+paste the transpiled code into a BF interpreter.) Without further ado, here is the code:
>>>>;;;<<<;;>>>;;<<<;;;>><<<>>><<<>;>><>>;;;;<<>>;;<<>>;;<<>>;;<<<;;;;>>>><<<>>><<<<;;;>>>;;.;<<<;;>>;;;;;.<<;;;>>>;..;<<<;;.;;>>.<;.;;.<;;.;>>;;.<;.;;>>;.;<<<;;;;>>.
All in one textbox:
>>>>;;;<<<;;>>>;;<<<;;;>><<<>>><<<>;>><>>;;;;<<>>;;<<>>;;<<>>;;<<<;;;;>>>><<<>>><<<<;;;>>>;;.
;<<<;;>>;;;;;.<<;;;>>>;..;<<<;;.;;>>.<;.;;.<;;.;>>;;.<;.;;>>;.;<<<;;;;>>.
Or, in a readable fashion:
>>>>;;
;<<<;
;>>>;
;<<<;;
;>>
<<<
>>>
<<<
>
;>>
<
>>;;;
;<<
>>;
;<<
>>;
;<<
>>;
;<<<;;;
;>>>>
<<<
>>>
<<<<;;
;>>>;;
.
;<<<;
;>>;;;;;
.
<<;;
;>>>;
..
;<<<;;
.
;
;>>
.
<;
.
;;
.
<;;
.
;>>;;
.
<;
.
;;
>>;
.
;<<<;;;
;>>
.
Each line represents a single character added to the source code.
oh heavens what have I made
Javascript (Nashorn), 22 bytes
Nashorn is the JS engine that comes built in to Java.
print('Hello, World!')
Constant, 115 bytes
ppp*eee-pP;_fao*R;_fo+pp;_coo+p;_fo;eec*ppc+ef;_o-ppppf;_oZ+eeeepc;_o+eeef*pf;_o+pf;_o-pec;_o
-eeef;_ozeeef*pc+lf;_o
(the newline is unnecessary) Ungolfed:
ppp * eee-pP;
_fao * R;
_fo + pp;
_coo + p;
_fo;
eec * ppc + ef;
_o-ppppf;
_oZ + eeeepc;
_o + eeef * pf;
_o + pf;
_o-pec;
_o-eeef;
_ozeeef * pc + lf;
_o;
This is a very natural program, except that numbers are not composed of the conventional digits, but rather constants such as p (pi) and e (euler's number). _ is the last expression, f is floor, c is ceil, and o is character output.
JavaScript (Node.js), 28 bytes
console.log("Hello, World!")
Cy, 21 18 bytes
"Hello, World!" :<
Cy is a new language I just made. It is stack-based/postfix, so the string "Hello, World!" must be pushed to the stack, then output it with the printing shortcut :<.
This is the first language I have made that was not inspired by code golf, but of course I'm still going to post in it.
VHDL, 98 bytes
entity m is
end;architecture a of m is
begin
process
begin
report"Hello, World";end process;end a;
At least it's not Java...
Mathcad, 18 bytes #
(or 15 bytes or 13 bytes depending upon one's tastes)
18 bytes would seem to be more in keeping with the spirit of the game, in that the user only has to type "s=" to get the answer, whereas the other two options involve the user actually typing Hello, World! themselves.
However, such considerations can get a little confusing sometimes in Mathcad, as the "source" file is also normally the "stdout". This is because the Mathcad allows text, mathematical expressions, programs, plots and results to be mixed on the same worksheet (it's often helpful to regard Mathcad as a virtual whiteboard or document with live expressions).
NTFJ, 118 bytes
NTFJ is an esoteric programming language intended to be a Turing tarpit. It is stack-based, and pushes bits to the stack, which can be later coalesced to an 8-bit number. I believe that this is the optimal, using a loop. (Maybe something can be done by hard-coding @ into the string, which would allow for us to double the l. I haven't checked, but I believe this would come out as more bytes.)
Anyhow, this is the full code:
~~#~~~~#~##~~#~~~##~##~~~###~~#~~##~####~#~#~###~~#~~~~~~~#~##~~~##~####~##~##~~~##~##~~~##~~#~#~#~~#~~~@(*~##~#~~~@^)
Or, more readable:
~~#~~~~#~##~~#~~~##~##~~~###~~#~~##~####~#~#~###~~#~~~~~~~#~##~~~##~####~##~##~~~##~##~~~##~~
#~#~#~~#~~~@(*~##~#~~~@^)
All the ~s push 0 and the #s push 1. The interesting part is the output loop:
@(*~##~#~~~@^)
@ Coalesce to bit (top 8 items); is 0 on an empty stack
( ) Skip the inside if the top of the stack is not truthy.
* Output as character.
~##~#~~~@ Push 104 to the stack
^ Jump to index 104, which is right here --.
^._____________________________________________________/
The interpreter is here, but with no permalinks as of yet.
Boring Loop-less version, 130 bytes:
~#~~#~~~@*~##~~#~#@*~##~##~~@*~##~##~~@*~##~####@*~~#~##~~@*~~#~~~~~@*~#~#~###@*~##~####@*~###~~#~@*~##~##~~@*~##~~#~~@*~~#~~~~#@*
Doubling (:) the l character, 122 bytes:
~#~~#~~~@*~##~~#~#@*~##~##~~@:**~##~####@*~~#~##~~@*~~#~~~~~@*~#~#~###@*~##~####@*~###~~#~@*~##~##~~@*~##~~#~~@*~~#~~~~#@*
Reng v.1, 22 bytes
I proudly present to you my new 2D language, Reng! It's a lot like ><>, and many of the commands are similar. However, Reng features a lot of more, erm, features. Here is the code!
"!dlroW ,olleH"!|o?!|~
This pushes each of the character codes in the string !dlroW ,olleH first. Then, ! jumps into a loop. o outputs a charcter, and ? activates the next character iff the top of the stack is zero. This does not happen untill there are no characters left. When this happens, the mirror is skipped and the end character is met, ~.
Here is a visual representation of the code, which can be found here:
Gogh, 14 bytes
"Hello, World!
This one is pretty self-explanatory. Gogh has self-closing strings, so if there isn't a closing double-quote, it tacks one on the end and you have yourself a string.
You can run it from the command line like this:
$ ./gogh o '"Hello, World!'
Nemerle, 38 bytes
System.Console.Write("Hello, World!");
Description from https://en.wikipedia.org/wiki/Nemerle
Nemerle's most notable feature is the ability to mix styles of programming that are object-oriented and functional. Programs may be structured using object-oriented concepts such as classes and namespaces, while methods can (optionally) be written in a functional style. Other notable features include:
- strong type inference
- a flexible metaprogramming subsystem (using macros)
- full support for object-oriented programming (OOP), in the style of C#, Java, and C++
- full support for functional programming, in the style of ML, OCaml, and Haskell, with these features:
- higher-order functions
- pattern matching
- algebraic types
- local functions
- tuples and anonymous types
- partial application of functions
The metaprogramming system allows for great compiler extensibility, embedding domain-specific languages, partial evaluation, and aspect-oriented programming, taking a high-level approach to lift as much of the burden as possible from programmers. The language combines all Common Language Infrastructure (CLI) standard features, including parametric polymorphism, lambdas, extension methods etc. Accessing the libraries included in the .NET or Mono platforms is as easy as in C#.
Mmmm(), 1583 bytes
mmm=m[mm=m[m.m()].m(m.m())].m();mmmm=mmm.m(mmm.m(mmm.m(mmm.m(mmm.m(mmm.m())))));mmm.m(mmm.m(mmm.m(mmm.m(mmm.m(mmm.m(mmm.m(mmm.m(mmm.m(mmm.m(mmm.m(mmm.m(mmm.m(mmm.m(mmm.m(mmm.m(mmm.m(mmm.m())))))))))))))))));mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();m[mmmm].m(mmm.m());mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmmmm=mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmmmmmmm=mmm.m();m[mmmm].m(mmm.m());mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmmmmm=mmm.m();m[mmmm].m(mmmmmm);m[mmmm].m(mmmmmm);mmm.m();mmm.m();mmmmmmm=mmm.m();m[mmmm].m(mmmmmmm);mmm.m();mmm.m();mmmmmmmmm=mmm.m();mmm=m[mm].m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmmmmmmmmm=mmm.m();mmmmmmmmmmm=mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();mmm.m();m[mmmm].m(mmm.m());m[mmmm].m(mmmmmmmmmm);m[mmmm].m(mmmmm);m[mmmm].m(mmmmmmm);m[mmmm].m(mmmmmmmmm);m[mmmm].m(mmmmmm);m[mmmm].m(mmmmmmmm);m[mmmm].m(mmmmmmmmmmm)
A semi-golfed version of the "Hello, World!" program I wrote for the esolangs article a while back.
Pris, 107 bytes
(][[[]](}])]]]]){](]]][}](]]}]{]]]}](]}]{]}]]]{{}]]]{](][](}]{]}]{(]]]}](]][{](][]}](]}]{]){](]](}]{]}]{{}]
Try it out here! And here's an explanation!
(][[[]]( ; 72
}] ; out H
)]]]]) ; 32
{] ; 72 -> reg
(]]][ ; r += 29
}] ; out e
(]] ; r += 7
}] ; out l
{]]] ; nop
}] ; out l
(] ; r += 3
}] ; out o
{] ; set r to 72
}]]] ; nop
{{ ; change focus
}]]] ; nop
{] ; 32 -> reg
(][]( ; r += 12
}] ; out ,
{] ; set r to 32
}] ; out " "
{ ; change focus
(]]] ; r += 15
}] ; out W
(]][ ; r += 13
{] ; 100 -> reg
(][] ; r += 11
}] ; out o
(] ; r += 3
}] ; out r
{] ; reg -> r
) ; "nop"
{] ; r -> reg
(]]( ; r += 8
}] ; out l
{] ; reg -> r
}] ; out d
{{ ; change focus
}] ; out !
Now aren't you ready to take on the world? Haha, here's some help. From the README:
Pris has six functional characters, but has more commands than that. Strings of symbols have different meanings according to their number.
A Pris program is comprised of a series of meta-commands, or keywords. A keyword is made of a series of one of any of the four main construction symbols (
(,),{, and}) and some modifier symbols ([and]). It must start with a constructoin symbol, and this denotes a change in meta-command. For example, the string(([[][()]])[)has two meta commands:(([[][(and)]])]).[...]
There are two registers, designated LEFT and RIGHT. One of them is "focused" and the other is "unfocused".
In the above explanation, r is the focused register. reg is the external register for holding other values. It cannot be focused on, but only accessible using {{{, or {].
Detour, 19 bytes
`u
@"Hello, World!"
This language was not designed with strings in mind.
"How do you fit a string literal into a 2D language represented on a grid of characters?"
You don't! Just put a `, and then define what the `'s stand for on the bottom with @ signs (sigh)! This will push all its code points to the ` cell, and the u cell will print it as a string
I'll try to come up with a shorter way to fit in strings later. At least it's not Java.
05AB1E, 14 7* bytes
*14 bytes for the use of the trademarked Ÿ
Code:
”Ÿ™,‚ï!
Like Jelly, this uses a compression method using an English dictionary. How it works? Let's find out:
” # Start a compressed string with all words titlecased
Ÿ # In Info.txt, you can see that this has index 24
™ # Index 19
# These two indexes combined is 2419, in the dictionary you can see that the
2419th word is hello
, # Since this has no index, this will be interpreted as a normal character
‚ï # Index 0118, which is the word "world". An extra space before this word is
# implicitly added.
! # Regular exclamation mark
# All the compressed words are automatically title cased.
resulting in: "Hello, World!"
This uses CP-1252 encoding
Previous version:
"Hello, World!
beeswax, 15 bytes
Finally the first esolang I created is ready for use. I started working on beeswax as an esolang on a hexagonal grid parallel to Martin Büttner’s Hexagony, but he got finished his well before my language, as it took me quite a while to get everything right. So, here is the second esolang working on a hexagonal grid. ;)
A short hello world program is rather unspectacular, as the ` character toggles output to STDOUT.
So, here are the two short, but boring versions:
_`Hello, World!
or
*`Hello, World!
Or slightly less boring:
!dlroW ,olleH`*
_ creates instruction pointers in the horizontal axis, one moving to the right, one moving to the left.
* creates instruction pointers in all main axes, like demonstrated below.
A little more interesting, but 1 byte longer:
!lo olH`_`el,Wrd
And finally, an even more interesting version, if that’s possible:
r l
l o
``
ol`*`,d!
``
e H
W
And the same, using the beeswax prettyprint tool:
r l
l o
` `
o l ` * ` , d !
` `
e H
W
Both of which work because IPs execute their instructions in the reverse order they were created/pushed on the IP stack.
The neighborhood of every cell in a program (named honeycomb) looks like shown below. β marks a bee (instruction pointer), the numbers show the directions of the surrounding cells.
2 — 1
/ \ / \
3 — β — 0
\ / \ /
4 — 5
This would be rather like a beautified version of the actual code, which is stored in a rectangular format like
21
3β0
45
Each bee carries a stack with a fixed length of 3 values around (which isn’t used in the examples above), but they can push values on a global stack of unlimited size, or take values from it, for handling larger amounts of data. The global stack can only do basic stack operations like rotating values up and down. Only bees can do more complex operations like arithmetics or logic operations. All values are 64 bit unsigned integers.
Bees can also drop values to any place on the honeycomb and change its size or modify the source code this way, or they can pick up values from any place on the honeycomb. The contents of the global stack can be written to files, or file contents can be stored in the global stack.
More info, the full specification, an interpreter (with very basic debugging abilities) written in Julia, examples etc. can be cloned from my github page. Pretty much the same information is also available on the esolangs.org beeswax page.
Shtriped, 199 bytes
e n
e b
i b
+ x y
+
i x
d y
+
+
d x
0
+ b b b
1
+ b n n
0
A
1
0
B
0
1
1
1
1
A
0
0
B
1
1
A
0
A
0
0
B
1
A
0
B
A
0
B
1
A
A
A
0
0
B
A
A
1
A
B
A
A
1
1
1
A
A
B
1
A
B
1
A
A
1
A
A
A
1
A
B
s n
(Tested in v1.0.0. Does not output trailing newline.)
Shtriped has no strings, only non-negative arbitrary precision integers. But you can print strings by encoding them as integers.
The integer that encodes Hello, World is 46758282851806618588827407. Every two digits essentially encodes one character in offset ASCII order, 82 is l, 85 is o, etc. The program basically declares the variable n to 0, and increments it one by one until it is 46758282851806618588827407, then prints it as a string. (In Shtriped, any integer larger than 0 needs to be incremented one by one to get there.)
Incrementing that high is obviously impossible in any reasonable amount of time, (a 3Ghz processor could maybe do it in 500 million years) so don't run this program, you will never see it finish! However, I am certain that it would finish, it if had the time. It should never run out of memory or have a stack overflow thanks to tail recursion optimization.
To explain what's really happening, here's a nearly identical program that will finish in a few seconds, outputting Hel. Everything is the same except the large column of 01AB's above the last line.
e n \ declare n to 0, this is the variable that will be incremented to that huge number
e b \ declare b to 0, this is the binary place value that will keep getting doubled
i b \ increment b, making it 1
+ x y \ define a function called "+" that returns x + y
+ \ define a nested function also called "+"
i x \ increment x
d y \ decrement y unless y is 0, in that case return the last statement's value
+ \ recursively call self
+ \ call nested "+"
d x \ decrement (and return) x, since we will have over counted by 1
0 \ define a function called "0" that adds b to itself, doubling it
+ b b b
1 \ define a function called "1" that adds b to n, then calls 0
+ b n n
0
\ at this point we could set n to be any number by calling 0 and 1
\ according to the desired number's reversed binary representation
\ but these A and B helper functions help golf that part
A \ calls 1 then 0
1
0
B \ calls 0 then 1
0
1
\ call functions 0 1 A B to increment n to the desired number
B
1
1
1
1
A
0
A
0
0
A
B
1
1
\ expanding the B's and A's, this becomes 0111111001000100111
\ which reverses to 1110010001001111110 in binary
\ which is 467582 in decimal
\ which is the encoding of the string "Hel"
s n \ finally, print n as a string
Note that I'm very doubtful this answer is optimal for Shtriped. Printing each character of Hello, World! or some combinations of its substrings could be much shorter, but doing that would require lots of trial and error and mathematical calisthenics (or at least a better golfer). For now, I like this elegant, if suboptimal solution.
Vimscript, 17 bytes
ec"Hello, World!"
bAdkOde, 59 bytes
I modified the example given on the language's website. Pushes the ASCII values in reverse order, then loops to print them.
)0)33)100)108)114)111)87)32)44)111)108)108)101)72(a{!a"a(a}
Y, 16 bytes
"Hello, World!"p
Or
"Hello, World!"g
The former prints everything, and the latter prints one thing. In each case, the single entity on the stack is the string "Hello, World!".
TeaScript, 12 bytes
(using ISO/IEC 8859 character encoding)
D`HÁM, Wld!
Compresses Hello, World!, decompresses with D (æ) function
Jolf, 7 bytes
ξrμ\t\x0FΉ\x1B
ξ read three characters and interprets them as a base 256 number index in a gigantic word list. 'Nuff said.
jq, 17 bytes
(15 characters code + 2 characters command line options.)
"Hello, World!"
(jq being a JSON processor filter, for this task you have to specify the -n (null input) and -r (raw output) options.)
Sample run:
bash-4.3$ jq -nr '"Hello, World!"'
Hello, World!
On-line test (Passing -r through URL is not supported – check Raw Output yourself.)
Pylons, 16
Toggles string mode with " and then pushes "Hello, World!" to the stack, then uses c to print the whole stack as a string.
"Hello, World!"c
For 14 bytes, thought possibly cheating, so it's not my main answer,
c
with Hello, World! as a command line arg.
I don't have an online interpreter yet, but if you download the repo and pass the command line args to main.py and the program to stdin, it'll run.
Rotor, 14 bytes
"Hello, World!
Nothing too fancy here. Like Pyth, quotes and most other structures are implicitly closed at EOF.
Hexagony, 37 32 bytes
Notice: I'll be giving a bounty of 500 rep to the first person who finds a valid solution in a hexagon of side-length 3 or a provably optimal solution of side-length 4. If you can't find such a solution but manage to beat my score in a side-length 4 hexagon (by getting more no-ops at the end of the program, which can be omitted from the source code), I'm willing to give out a smaller bounty for that as well.
H;e;P1;@/;W;o;/l;;o;Q/r;l;d;2;P0
I proudly present my second 2D programming language, and (to my knowledge) the first ever 2D language on a hexagonal grid.
The source code doesn't look very 2D, does it? Well, whitespace is optional in Hexagony. First, the source code is padded to the next centred hexagonal number with no-ops (.). The next such number is 37, so we insert five no-ops at the end. Then the source code is rearranged into regular hexagon:
H ; e ;
P 1 ; @ /
; W ; o ; /
l ; ; o ; Q /
r ; l ; d ;
2 ; P 0 .
. . . .
This is also runnable. Try it online!
Hexagony has a bunch of pretty funky features, including 6 different instruction pointers and a memory layout which is the line graph of a hexagonal grid, but this code uses only one IP and one memory edge, so let's not worry about that for now.
Here is an overview over the relevant commands:
- Letters just set the current memory edge to their ASCII value
;prints the current value, modulo 256, as a byte to STDOUT./is a mirror which behaves as you'd expect (causing the IP to take a 120 degree turn).- Digits work as they do in Labyrinth: they multiply the current cell by 10 and then add themselves.
@terminates the program.
Now the final catch is that the source wraps around all 3 pairs of edges. Furthermore, if the IP leaves the grid through one of the six corners, there are two possible rows to jump to. Which one is chosen depends on whether the current value is positive or non-positive. The following annotated version shows where the IP re-enters each time it leaves the grid:
H ; e ; -> 1
5 -> P 1 ; @ / -> 4
3 -> ; W ; o ; / -> 2
1 -> l ; ; o ; Q /
4 -> r ; l ; d ; -> 5
2 -> 2 ; P 0 . -> 3
. . . .
So if we remove all the direction changes, this program boils down to the following linear code:
H;e;l;;o;Q2;P0;W;o;r;l;d;P1;@
What's with Q2, P0 and P1? Letters are printed easily because we can just set the edge to the corresponding value. For the comma, the space and the exclamation mark, that doesn't work. We also can't just set their value with 44, 32, 33, respectively, because the memory edge is non-zero to begin with, and due to the semantics of individual digits that would wreak all sorts of havoc. If we wanted to do that, we'd have to reset the edge value to zero with something like *, +, -, & or ^ first. However, since the value is taken modulo 256 before being printed we don't have to set the values exactly to 44, 32, or 33. For instance, Q2 will set the edge value to 81*10 + 2 = 812, which is 44 when taken modulo 256. This way we can save a byte on each of those three characters. (Unfortunately, it's never possible to get there with a single digit from the value the cell already has. Amusingly, where it does work is the o in World, because that can also be obtained from W9.)
You can use this CJam script to find all letter-digit combinations that result in a given character.
I'm not sure whether this is optimal. I doubt it's possible to do it in a hexagon of side-length 3 (where you'd only have 19 characters available), but it might be possible to solve it in a hexagon with side-length 4 with less than 32 commands, such that there are more no-ops at the end of the grid.
A-Ray, 16 bytes
Any new language should be put here just for the sake of being put here...
p"Hello, World!"
Falcon, 16 bytes
I'm sad that the last update to this language was in 2010 :( it looks so cool! it's still indev!!
>"Hello, World!"
It gets its syntax from Python and PHP, most noticeably.
Pike, 35 bytes
A fast OOP scripting language with familiar C-style syntax.
int main(){write("Hello, World!");}
The optional return 0; is left off, because it runs without it.
In the REPL, the main declaration can be left off.
Pythonish, but with C syntax. OO-enabled, and also inherits from PHP (the good parts), Perl and (duh) C/C++, but Pike isn't halfassed about OOP like C++ is.
This can be compiled into ANSI C or C++ with a #define (and the #include, for standards compilance) for 113 bytes:
#ifndef __PIKE__
#include<stdio.h>
#define write(x) printf(x)
#endif
int main(){write("Hello, World!");return 0;}
No warnings with gcc -Wall -pedantic! Only a few more defines are needed to make almost any Pike into ANSI C. :D
Mouse16, 16 bytes
I finally made it turing-complete!
"Hello, World!"!
Boring, I know.
If you want somewhat interesting, then there's this, which runs Python from inside Mouse, for 31 bytes:
"!!PY!!print('Hello, World!')"`
The to-be interesting bits of Mouse aren't implemented yet, but we have control structs, so...
PlatyPar, 14 bytes
"Hello, World!
In PlatyPar (my language that is still in development), parens, quotes, brackets, etc. are automatically closed at the end of the line. Additionally, the last item on the stack (in this case, "Hello, World!") is implicitly printed.
Purple, 62 bytes
AA1AA1AA1bA1b1Bo1bb1bbibb1Bi1b
! d l r o W , o l l e H
Purple in a Nutshell:
Purple is a self-modifying language in the same sense that self-modifying brainfuck is: The code is executed from the same array that contains data, which is infinite and otherwise initialized with zeroes. It has one instruction with three arguments: subtract the third argument from the second and store it in the first. It has two registers, a and b, which can be dereferenced as A and B to get the contents of that memory address. It also has i, the instruction pointer, o which represents the outside world (i.e., stdout in the first argument, stdin in either of the other two), and the literal 1, which cannot be the first argument.
It is as hard to read and write as it looks.
This Program:
It may seem strange that I'm entering a program that is almost more not-code than code in a contest for "shortest program", but it would be REALLY DIFFICULT to do it in less. The reason is that, when doing loops in Purple, it requires the least effort to jump to memory location 3 (because you just set i to 0), but this means you have exactly one instruction to initialize the loop. This means we need to set A to the location of the first character to be printed in a single instruction. Otherwise, we'd have to do a lot of extra work to jump somewhere else at the end of each loop. But since a starts out at zero, the only positive value we can set it to in a single instruction is 64. (i.e. the contents of the zeroth cell--the "A" itself, which is ASCII 65, minus one.)
Obviously, we're going to want to iterate backwards over the string since
- Iterating forwards means we have to put the string AFTER position 64, thereby making the program longer.
- It takes one fewer instruction to decrement the pointer than to increment it.
And we can shave bytes off the end of the program by decrementing the pointer before we print. In fact, we have enough space between the cell 64 and the end of the program to decrement twice between each address to be printed. Thus, the first character we need to print can be at character 62, hence, exactly 62 bytes long.
Here's The Nitty:
AA1 Set the first cell to 64
AA1AA1 This is the entry point for the loop. M[0]=M[0]-2
bA1 Point b the cell to the left of what cell 0 points to.
b1B Set b to one more than the opposite of the character there.
o1b Output the character M[0] pointed to (one more than the opp. of b)
b1b Set b to the just output character.
bib Subtract the just output character from the IP (24)
Until we hit the newline (ascii 10), this yields a negative.
b1B Set b to 1 minus what b was pointing to.
Negative addresses are initialized to zero, so until we hit the newline
this will set b to 1. When we hit the newline, b will be pointing to
the 11th character ("1"), and this will set it to -48.
i1b Set the instruction pointer to 1-b.
Until the newline, this sets i=0, jumping back the beginning of the loop.
After the newline, this sets i=49, where it finds the
non-instruction "W ", and Purple halts without error in such a case.
The rest of the program is the string itself and arbitrary padding to position the characters in the right place.
EDIT: Figured out how to save 30 bytes on this program, and updated all explanations to match the new version.
Minecraft 1.8.7, 26 + 2 = 28 Blytes
This is using this version of byte counting.
The command block contains the code:
tellraw @a "Hello, World!"
This one doesn't really need an explanation.
Glava 1.4, 16 bytes
Edit: from Doorknob's and ConorO'Brien's suggestions, the name has changed to Glava.
p("Hello, World!
Glava is a golfing Java dialect (obviously). It adds shorthands to many keywords and common phrases in Java code. So, the code above actually corresponds to the Java code:
System.out.print("Hello World!")
You may be wondering, where does the ") come from? Well, Glava has a feature where it automatically adds closing brackets and double quotes. Also, when a closing curly bracket is needed, it places a semicolon before it.
Another neat feature is that if you do not specify a main class or method, it will do it for you. So the compiled code in the end looks like:
public class Main {public static void main (String[] A) { System.out.print("Hello World!");}}
Boo, 22 bytes
Quoting from https://github.com/bamboo/boo/raw/master/docs/BooManifesto.pdf:
The guys who came up with “public static void main” were probably kidding, the problem is that most people didn't get it was a joke. The infamous HelloWorld in all its boo glory:
print("Hello, World!")
“public static void main”, that was a good one!
Whenever, 25 bytes
Whenever is a programming language which has no sense of urgency. It does things whenever it feels like it, not in any sequence specified by the programmer. Since Whenever code is not necessarily executed sequentially, lines of code become more like "to-do" lists, which the language interpreter may tackle in any order it likes.
1 print("Hello, World!");
o:XML, 48 bytes
From the web site:
o:XML is a complete object oriented programming language, with features including polymorphism, function overloading, exception handling, threads and more. The syntax is fully compliant XML. With o:XML, object-oriented paradigms can be leveraged to the maximum, while data and code remains in a standard format. With o:XML there is no 'impedance mismatch' when developing XML web-applications, tools and systems. Furthermore o:XML integrates seamlessly with most popular Java platforms, including Java Servlets, Struts, Ant, BSF and Spring 2.0.
This program comes from http://www.xml.com/pub/a/2004/07/21/oxml.html
<?xml version="1.0"?>
<o:do>Hello, World!</o:do>
SuperX++, 37 bytes
From the web site:
Superx++ is an object-oriented language that is entirely based on XML's syntactical structure. Superx++ conforms with the XML version 1.0 specification as published on the W3C web site. Programming in XML itself has great potential and Superx++ pushes the envelope!
This program comes from http://xplusplus.sourceforge.net/FAQ.htm#hellow
<xpp><xout>Hello, World!</xout></xpp>
lang5, 17 bytes
lang5 is a combination of APL and Forth (Hello World doesn't show off any of the APL bits)
"Hello, World!" .
Freelang, 291 bytes
A lot of whitespace, but it's an assembly language for a virtual machine. I'm pretty sure this won't compile without the indents.
H{
." Hello world! " p
halt
: p ( s -- )
[@] 4 * swap incw swap
w:
go[<=0] :e
dec swap [@b]
go[==0] :s
writorb ::z
go :n
s:
drop
n:
inc swap
go :w
e:
drop2
;
z: halt
}H
JavaScript function golf, 19 bytes
p("Hello, World!");
I made this[1] for you!
JavaScript function golf is included into the language page HTML, so use it right from the console!
If you want it as an alert, here you are (21 byte):
p2a("Hello, World!");
That said, I finally got time for improvement of the framework.
[1]: I mean, the language golfing framework.
WhoScript, 19 bytes
1"Hello, World!";pf
Not nearly as much fun as the full version:
# 48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 21
@ push the ASCII values of the characters "Hello, World!" to the stack
psychic_paper flush
@ print all values on the stack as ASCII characters
COMAL, 20 bytes
1print"Hello, World!
CP/M nostalgia...
A>comal
(C) Copyright 1987
COMAL Users Group, U.S.A. Limited
1print"Hello, World!
run
Hello, World!
End of program
bye
A>_
Pilot, 15 bytes
t:Hello, World!
(no trailing newline is ok for the Pilot implementation I used)
CP/M nostalgia...
A>type hello.plt
t:Hello, World!
A>do pilot/pr hello
SuperSUB V1.1
A>: SUBMIT PILOT/P WITH REAL TYPE SUPPORT
A>PILOT/P HELLO
PILOT/P version 2.5, 02/26/84
READING FROM HELLO.PLT
WRITING TO HELLO.PAS
Translating: HELLO
A>ERA OLD.HDR
No file
A>REN OLD.HDR=PILOT/P.HDR
A>REN PILOT/P.HDR=PILOT/PR.HDR
A>PASCAL HELLO
InterSystems Pascal v - 4.0
HELLO 1---
VLENGTH 27-
MEMAVAIL 28--
SETLENGT 30-
LENGTH 31-
INDEX 33-
POS 34-
UCASE 35-
LCASE 36-
DELETE 37-
COPY 38-
INSERT 39--
REPLACE 40-
CONCAT 41-
STR 42-
IVALUE 43-
HALT 44-
ISALPHA 45-
ISUPPER 46-
ISLOWER 47-
ISDIGIT 48-
ISSPACE 49--
TOUPPER 50-
TOLOWER 51-
KEYIN 52-
KEYBOARD 53-
DWRITE 54-
CONSTAT 55-
CONCHAR 56-
GOTOXY 57-
VAL 58-
RANDOM 59--
RND 63-
RANDOMIZ 65-
INITIALI 69-----
WAIT 102---
MATCH 124-------
HELLO 185-
0 compilation error(s).
A>ERA HELLO.LST
A>REN PILOT/PR.HDR=PILOT/P.HDR
A>REN PILOT/P.HDR=OLD.HDR
A>ASMBL MAIN,HELLO/REL
Pascal/Z run-time support interface ASMBLE v-7d
0 errors. 312 symbols generated. Space for 2819 more symbols.
4275 characters are stored in 44 macros.
1680 bytes of program code.
A>ERA HELLO.SRC
A>LINK /N:HELLO CHAIN HELLO ASL/S/E
LINK version 2b
Load mode
Generate a COM file
Lo = 0100 Hi = 1A32 Start = 0172 Save 26 blocks
A>ERA HELLO.REL
A>ERA HELLO.PAS
A>hello
Hello, World!
A>_
Genie, 28 bytes
File hello.gs:
init
print "Hello, World!"
(tab indented, needs final newline)
Compile & run:
$ valac hello.gs
$ ./hello
Hello, World!
Visual Basic.NET, 63 bytes
Module A
Sub Main
System.Console.Write("Hello, World!")
End Sub
End Module
SPL, 91 bytes
File hello.spl:
PROGRAM h;BYTE w='Hello, World!$';PROCEDURE BDOS(WORD f,s);EXTERNAL;BEGIN BDOS(9,@w) END h.
With some CRLFs (99 bytes):
PROGRAM h;
BYTE w='Hello, World!$';
PROCEDURE BDOS(WORD f,s);EXTERNAL;
BEGIN
BDOS(9,@w)
END h.
(both without crlf after last line)
CP/M nostalgia...
E>type hello.spl
PROGRAM h;BYTE w='Hello, World!$';PROCEDURE BDOS(WORD f,s);EXTERNAL;BEGIN BDOS(9,@w) END h.
E>do c hello
SuperSUB V1.1
E>; COMPILE AN SPL PROGRAM
E>SPL HELLO
SPL V-1.03.03.10 (17-Dec-06 13:41:11)
No errors. Code = 31. Free memory = 30081.
E>L80 HELLO,HELLO/N/E
Link-80 3.44 09-Dec-81 Copyright (c) 1981 Microsoft
Data 0103 01D6 < 211>
46887 Bytes Free
[0111 01D6 1]
E>ERA HELLO.REL
E>hello
Hello, World!
E> _
Befalse, 41 bytes
I want to learn this language, but it's so confusing ):
0"!dlrow olleH"!/$?\
\. /
Demo (paste into the the box and click "Show", then click "Run".)
X.so, 48 42 bytes
$A($Main("X"Include"Hello, World!"X.Show))
Requires XCore to run, so it can use the X.Show command.
ROOP, 17 bytes
"Hello, World!"
h
At the beginning an object is created with the string that is in quotation marks, then the h operator prints all existing objects and ends the program.
Algol-M, 36 bytes
BEGIN
WRITE("Hello, World!");
END
CP/M nostalgia...
B>type hello.alg
BEGIN
WRITE("Hello, World!");
END
B>algolm hello
ALGOL-M COMPILER VERS 1.1
0 ERROR(S) DETECTED
B>runalg hello
ALGOL-M INTERPRETER-VERS 1.0
Hello, World!
B>_
A problem?
There is more output than just "Hello, World!" but that output is not caused by the program itself, it is caused by the interpreter.
BASIC-80, 16 bytes
BASIC-80 aka MBASIC does not need a trailing " to end string constants at the end of the line, so...
1?"Hello, World!
...is all you need.
CP/M nostalgia...
A>mbasic
BASIC-80 Rev. 5.21
[CP/M Version]
Copyright 1977-1981 (C) by Microsoft
Created: 28-Jul-81
32824 Bytes free
Ok
1?"Hello, World!
run
Hello, World!
Ok
system
A>_
Eodermdrome, 18 bytes
al(Hello, World!)a
Replaces the a - l edge on the initial graph with the a node, and outputs Hello, World! in the process.
Emotinomicon, 18 characters / 30 bytes
😭!dlroW ,olleH😲⏪⏬⏩
Explanation:
😭 !dlroW ,olleH 😲 ⏪ ⏬ ⏩ explanation
😭 begin quote string
!dlroW ,olleH
😲 end quote string
⏪ open loop
⏬ pops and outputs top of stack as character
⏩ close loop
pl, 13 bytes
Hello, World!
Yes, it works. Try it online.
Explanation
In pl, all printable ASCII chars (between 0x20 and 0x7E in CP437) are reserved for variable names. Normally, these chars push the contents of that variable onto the argument stack. BUT, if the variable doesn't actually exist, pl assumes that this is actually the start of a string literal. The string literal is closed when it encounters a variable that exists or a function char. In this case, since none of these variables have been defined, Hello, World! gets pushed onto the stack as a string and printed implicitly at the end.
Jolf, 14 bytes
"Hello, World!
Records a string, implicit output. Try it here.
Jolf, 9 bytes, cheating
(unprintable chars replaced with ?):
e.$nsp#0?
e evaluate as Jolf code
. from the object
$ # nsp, get
0 property 0
? (08, backspace character; restrain implicit output)
nsp is an object on the interpreter page that contains example programs. The zeroth one is the Hello, World! program.
Try it here.
Candy, 18 bytes + 1 = 19 bytes
Push (technically queue) string (character-by-character) onto the stack, and loop to print
"Hello, World!"(;)
The interpreter should be called with -q to suppress STDOUT messages.
C, 32 bytes
main(){printf("Hello, World!");}
Tested on C99 Strict, compiler will generate a warning that there is no return-type, and int is assumed.
What actually happens in most environments is that the return value from the last printf is left in the register used for return values.
In our case the printf("Hello, World!") is the only statement in our program, which will set 13 in the registry for return values.
In most environments, EXIT_FAILURE is usually 1 as in gcc, which means that on most environments this will not write to STDERR.
Binary-Encoded Golfical, 40+1 (-x flag)= 41 bytes
Can be transpiled back into the standard graphical version using the included Encoder utility, or run directly using the -x flag.
Hex dump:
01 90 01 00 48 18 00 65 18 00 6C 18 18 00 6F 18
00 2C 18 00 20 18 00 57 18 00 6F 18 00 72 18 00
6C 18 00 64 18 00 21 18
Original image:

Zoomed in by a factor of 16:

Explanation: Uses the active cell to store values, and prints them as characters
Pig, 27 bytes
/dev/stdoutPIGHello, World!
Requires a Unix-like OS to run. Pig is a simple language in which a program is a filename, followed by PIG, followed by anything else, which writes the string to the file specified by the filename. In this case, I use the tactic of writing the output to /dev/stdout, outputting the string. /dev/tty outputs the string, but it requires a console window to work, and doesn't pipe output correctly.
MATL, 15 bytes
'Hello, World!'
A string literal is pushed onto the stack. It gets implicitly printed at the end of the program.
Templates Considered Harmful, 50 bytes
St<72,'e','l','l','o',44,32,87,'o',114,'l','d',33>
Templates Considered Harmful is a language defined by C++ templates. The St template creates a string of characters, which is then implicitly printed to STDOUT.
Elixir, 22 bytes
IO.puts"Hello, World!"
Dirst, 21 bytes
dss_Hello, World!.txt
Note: this must be run in a system where ! is allowed in filenames.
Milky Way 1.0.0, 16 bytes
"Hello, World!"!
or
"Hello, World!">
Explanation
"Hello, World!" # push "Hello, World!" to the stack
! # output the TOS
or
"Hello, World!" # push "Hello, World!" to the stack
> # rotate the stack rightward.
if nothing is output manually,
the bottom stack item is output
Jumper, 59 bytes
=72>=101>=108>=108>=111>=44>=32>=87>=111>=114>=108>=100>=33
Monicelli, 46 bytes
Lei ha clacsonato
"Hello, World!" a posterdati
Probably appreciated only by italian coders, all the tokens of this language are taken from a well-known italian movie called "amici miei"
EXCON, 137 bytes
<<<^<<<^!:^<<^<<<^<^!:<<^<^<<^<^!!:^<^<^<^<<^<^!:<<^<^<<^!:<<<<<^!:^<^<^<<^<<^!:^<^<^<^<<^<^!:<^<<<^<^<^!:<<^<^<<^<^!:<<^<<<^<^!:^<<<<<^!
Simple bit-hacking.
Blank, 64 bytes
[33][100][108][114][111][87][32][44][111][108]{:}[101][72]{p}{@}
Hint: Read the interpreter / compiler to ensure that you use all features. This esolangs page, for example, used to exclude the p instruction.
Seriously 0.1, 1 byte
H
Yes, I made my language have a one-byte Hello World program. A less boring answer for 16 bytes:
"Hello, World!".
"Hello, World!" pushes that string onto the stack, and . pops the top value on the stack and prints it.
Version, 37 bytes
A:OUTPUT="Hello, World!"
B:IGNORE="*"
The first line prints the string. The second line tells the interpreter to ignore all lines, to prevent an infinite loop.
if(j)invert()if(l)change()if(q)input()if(t)output(x);, 13 bytes
Hello, World!
Breaks the scoreboard. Any non-instruction characters are printed verbatim.
Thue, 24 bytes
a::=~Hello, World!
::=
a
When a is encountered in the last line, the string is printed.
TRANSCRIPT, 36 bytes
He is here.
>HE, Hello, World!
>X HE
The second line sets HE, and the third line outputs it.
Super Stack!, 66 bytes
0 33 100 108 114 111 87 32 44 111 108 108 101 72 if outputascii fi
Pushes the letters followed by a zero onto the stack, and prints them while they aren't zero.
Funciton, 212 209 bytes
╔══════════╗
║2388215291╟
║3945970717║
║0943959830║
║0709090713║
║3592077341║
║6068961777║
║8210571695║
║52834632 ║
╚══════════╝
I found that 10 digits per row yielded the least bytes, although there may have been a mistake in my calculations.
Dogescript, 42 37 bytes
plz console.loge with "Hello, World!"
Translates to console.log("Hello, World!").
SSBPL, 33 bytes
0'!'d'l'r'o'W' ','o'l$'e'H[$][.]#
This pushes the ASCII for "Hello, World!" followed by a 0 onto the stack, then prints the top value while it isn't zero.
ABCD, 390 bytes
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAADDAAADBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBDBBBBBBBBBBBBDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAADAAADBBBBBBDBBBBBBBBDBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBDBBBBBBBBBBBBBBBBBBBBBBBD
Equivalent to +++++etc+++.+++++etc+++.+++++++..+++.-----etc
in brainfuck.
Foobar and Foobaz and Barbaz, oh my!, 314 bytes
72 and 72 and 0, oh my.
37 and 37 and 64, oh my.
72 and 72 and 36, oh my.
. and 64 and 44, oh my.
67 and 67 and 44, oh my.
. and 44 and 0, oh my.
. and 32 and 0, oh my.
87 and 87 and 0, oh my.
40 and 40 and 71, oh my.
16 and 16 and 98, oh my.
12 and 12 and 96, oh my.
. and 64 and 36, oh my.
1 and 1 and 32, oh my.
I believe that this is an optimal solution, with each line outputting a character.
A0A0, 57 bytes
P72P87
P101P111
P108P114
P108P108
P111P100
P44P33
P32
G-6
2 commands per line was the densest packing that I could find.
Hodor, 66 bytes
hodor.hod("Hhodor? Hodor!? Hodor!? o, Hooodorrhodor orHodor!? d!")
This only works in the previous version of Hodor (the one before the update from 1 July 2015). The latest version prints HODOR instead, which could be fixed at the cost of 3 bytes:
hodor.hod("Hhodor? Hodor!? Hodor!? o, Hooodorrhodor orHodor!? "+"d!")
J--, 28 bytes
main{echo("Hello, World!");}
main is replaced with public static void main(String[]a), echo is replaced with System.out.println, and the entire program is put in a class.
ACIDIC, 16 bytes
Hello, World!
+*
Prints the entire storage stack, which is filled with Hello, World!.
AutoHotkey, 61 bytes
DllCall("AllocConsole")
FileAppend % "Hello, World!", CONOUT$
AHK was written to automate Windows tasks and it seems as if the authors considered StdOut/In as an after thought. This is the shortest method I could come up with. When executed the console will flash with Hello World! and exit immediately, it would require additional code (either adding a Hotkey or #persistent or sleep command) to keep the console active, however I feel this does the job and meets the requirements. I could also make the program with DLLCall("AttachConsole, Int, -1") so that it can be executed from the command line and write to the same console it was executed from, however this code golf.
Arcyóu, 18 15 bytes
"Hello, World!"
Arcyóu is a LISP-like golfing language. Since this is the only thing in the program, we don't need a p function or even parentheses. Just quotes.
Kotlin, 49 bytes
fun main(a:Array<String>){print("Hello, World!")}
This is a programming language created by JetBrains to overcome the limitations of Java (like Scala), be fast (like Java itself) and yet retain full interoperability with Java. This means that Kotlin can easily call Java code ... and vice versa.
Groovy, 20 bytes
print"Hello, World!"
BitShift, 216 211 209 bytes
Introducing my first esolang;
BitShift is a language which can only operate on 1 value, and use a limited set of bit-shifting instructions to modify it.
Therefore it's challenging to write programs and it's not great for golfing.
A valid Hello, World! is 209 bytes long, and this is believed optimal. Generated by this metagolf.
10111110111110101001011001001010111011111010011010100101011001000100101011001000001100101011111110011010100101100110010001000100101011110100110110101001000010001010110111101110111101010001000010101111101101010
You can test it here.
ShapeScript, 15 bytes
'Hello, World!'
I created ShapeScript for this competition. The interpreter on GitHub has a slightly modified syntax and better I/O (none of which are required in this answer).
DStack, 21 bytes
@0
Hello, World!
@
ad
Mathematica, 21 bytes
Print@"Hello, World!"
Mathemaica 10.3, 20 bytes
Echo@"Hello, World!"
SuperCollider, 27 bytes
"Hello, World!".post;1.exit
Microscript II, 15 bytes
"Hello, World!"
AniRad, 237 bytes
I doubt if this is the shortest solution:
# # # # # # #
#5+7*3 *2 =C
/ * + *
#9*9+9+5+6 =C
+ * +
#> 9*9+1+9 +9+8=C
+ + * *
#^ 9 > 4*6 =C
+ *
#9+1*9+9+5+3 +4=C
+ - * - +
# 6-6 +4*9+8 1=C
= = = = =
C C C C C
This is a 2D esolang which looks a bit like a magic square. This is a very early stage of the language, so a lot of new functions etc. will come in the future.
The # is the starting point of the pointer. The interpreter goes through every starting point. The order is based on the position of the #:
4 5 6 7
# # # #
1 #
2 #
3 #
If the position of the starting point is on the left, the pointer direction is right. If the position of the starting point is on the top, the pointer direction is down.
The +, -, * and / are just basic math operators. After reading a number from the pointer, every other number on it's path will be ignored until an operation has been executed, e.g. #4+3 5-2= is equivalent to #4+3-2=
The direction of the pointer can be changed with >, ^, < and v
To output a char, we use the =C. This outputs the result of all the math operators and converts the int to a char. If = is used, the interpreter will only print the result.
Here are all the paths executed in the program:
(1) 5+7*3*2 = (((5+7)*3)*2) = 72 = H
(2) 9*9+9+5+6 = ((((9*9)+9)+5)+6) = 101 = e
(3) 9*9+1+9+9+8 = (((((9*9)+1)+9)+9)+8) = 108 = l
(4) 9*9+1+9+9+8 = (((((9*9)+1)+9)+9)+8) = 108 = l
(5) 9+1*9+9+5+3+4 = (((((9+1)*9)+9)+5)+3)+4) = 111 = o
(6) 6-6+4*9+8 = ((((6-6)+4)*9)+8) = 44 = ,
(7) 5/9*9+1+9+9+8 = ((((((5/9)*9)+1)+9)+9)+8)= 32 =
(8) 7*9+9+9+6 = ((((7*9)+9)+9)+6) = 87 = W
(9) 3+9*9+9-6 = ((((3+9)*9)+9)-6) = 111 = o
(10) 6+9+4*6 = (((6+9)+4)*6) = 114 = r
(11) 4*3*9 = ((4*3)*9) = 108 = l
(12) 2*9*6-8 = (((2*9)*6)-8) = 100 = d
(13) 8*4+1 = (8*4)+1 = 33 = !
Carrot (version: ^3), 13 bytes
Carrot is a language of Κριτικσι Λίθος. The syntax is stack^commands, where the stack is a string, and the interpreter outputs everything that's on the stack at the end of the program. The carrot is optional if you have no commands.
Hello, World!
In version ^, the carrot wasn't optional yet if you had no commands, so then it was 14 bytes:
Hello, World!^
Beam, 128 120 Bytes
'''''''''>`++++++++)@'''P''''>`++++)+@+++++++@P@+++@'P'L'''>`++++++)''P'>`++++)@''p@'p>`+++++)@'p@+++@`p@--------@''p+@H
This uses the general construct:
''''''''' # increment store to 9
> # set direction right. Beginning of loop
` # decrement store
++++++++ # increment beam 8
) # set direction left if store not 0. End of loop
@ # Output character
Effectively translates to 9 * 8. The store needs to be odd before entering the loop otherwise it will end up being an infinite loop. The Esolangs has examples of this at the bottom in the constants section.
P is used to save to l, o and memory slots 0, 1 and 2.
p is used to retrieves those values to the beam.
The following snippet should run Beam programs, but it hasn't been put through the ringer yet, so is likely to have some bugs.
var ITERS_PER_SEC = 100000;
var TIMEOUT_SECS = 50;
var ERROR_INTERRUPT = "Interrupted by user";
var ERROR_TIMEOUT = "Maximum iterations exceeded";
var ERROR_LOSTINSPACE = "Beam is lost in space";
var code, store, beam, ip_x, ip_y, dir, input_ptr, mem;
var input, timeout, width, iterations, running;
function clear_output() {
document.getElementById("output").value = "";
document.getElementById("stderr").innerHTML = "";
}
function stop() {
running = false;
document.getElementById("run").disabled = false;
document.getElementById("stop").disabled = true;
document.getElementById("clear").disabled = false;
document.getElementById("timeout").disabled = false;
}
function interrupt() {
error(ERROR_INTERRUPT);
}
function error(msg) {
document.getElementById("stderr").innerHTML = msg;
stop();
}
function run() {
clear_output();
document.getElementById("run").disabled = true;
document.getElementById("stop").disabled = false;
document.getElementById("clear").disabled = true;
document.getElementById("input").disabled = false;
document.getElementById("timeout").disabled = false;
code = document.getElementById("code").value;
input = document.getElementById("input").value;
timeout = document.getElementById("timeout").checked;
code = code.split("\n");
width = 0;
for (var i = 0; i < code.length; ++i){
if (code[i].length > width){
width = code[i].length;
}
}
console.log(code);
console.log(width);
running = true;
dir = 0;
ip_x = 0;
ip_y = 0;
input_ptr = 0;
beam = 0;
store = 0;
mem = [];
input = input.split("").map(function (s) {
return s.charCodeAt(0);
});
iterations = 0;
beam_iter();
}
function beam_iter() {
while (running) {
var inst;
try {
inst = code[ip_y][ip_x];
}
catch(err) {
inst = "";
}
switch (inst) {
case ">":
dir = 0;
break;
case "<":
dir = 1;
break;
case "^":
dir = 2;
break;
case "v":
dir = 3;
break;
case "+":
++beam;
break;
case "-":
--beam;
break;
case "@":
document.getElementById("output").value += String.fromCharCode(beam);
break;
case ":":
document.getElementById("output").value += beam+"\n";
break;
case "/":
switch (dir) {
case 0:
dir = 2;
break;
case 1:
dir = 3;
break;
case 2:
dir = 0;
break;
case 3:
dir = 1;
break;
}
case "\\":
switch (dir) {
case 0:
dir = 3;
break;
case 1:
dir = 2;
break;
case 2:
dir = 1;
break;
case 3:
dir = 0;
break;
}
break;
case "!":
if (beam != 0) {
switch (dir) {
case 0:
dir = 1;
break;
case 1:
dir = 0;
break;
case 2:
dir = 3;
break;
case 3:
dir = 2;
break;
}
}
break;
case "?":
if (beam == 0) {
switch (dir) {
case 0:
dir = 1;
break;
case 1:
dir = 0;
break;
case 2:
dir = 3;
break;
case 3:
dir = 2;
break;
}
}
break;
case "|":
switch (dir) {
case 0:
dir = 1;
break;
case 1:
dir = 0;
break;
}
break;
case "_":
switch (dir) {
case 0:
dir = 1;
break;
case 1:
dir = 0;
break;
}
break;
case "H":
stop();
break;
case "S":
store = beam;
break;
case "L":
beam = store;
break;
case "s":
mem[beam] = store;
break;
case "g":
store = mem[beam];
break;
case "P":
mem[store] = beam;
break;
case "p":
beam = mem[store];
break;
case "u":
if (beam != store) {
dir = 2;
}
break;
case "n":
if (beam != store) {
dir = 3;
}
break;
case "`":
--store;
break;
case "'":
++store;
break;
case ")":
if (store != 0) {
dir = 1;
}
break;
case "(":
if (store != 0) {
dir = 0;
}
break;
case "r":
if (input_ptr >= input.length) {
beam = 0;
} else
{
beam = input[input_ptr];
++input_ptr;
}
break;
}
// Move instruction pointer
switch (dir) {
case 0:
ip_x++;
break;
case 1:
ip_x--;
break;
case 2:
ip_y--;
break;
case 3:
ip_y++;
break;
}
if (running && (ip_x < 0 || ip_y < 0 || ip_x >= width || ip_y >= code.length)) {
error(ERROR_LOSTINSPACE);
}
++iterations;
if (iterations > ITERS_PER_SEC * TIMEOUT_SECS) {
error(ERROR_TIMEOUT);
}
}
}
<div style="font-size:12px;font-family:Verdana, Geneva, sans-serif;">Code:
<br>
<textarea id="code" rows="3" style="overflow:scroll;overflow-x:hidden;width:90%;">'''''''''>`++++++++)@'''P''''>`++++)+@+++++++@P@+++@'P'L'''>`++++++)''P'>`++++)@''p@'p>`+++++)@'p@+++@`p@--------@''p+@H</textarea>
<br>Input:
<br>
<textarea id="input" rows="2" style="overflow:scroll;overflow-x:hidden;width:90%;"></textarea>
<p>Timeout:
<input id="timeout" type="checkbox" checked="checked">
<br>
<br>
<input id="run" type="button" value="Run" onclick="run()">
<input id="stop" type="button" value="Stop" onclick="interrupt()" disabled="disabled">
<input id="clear" type="button" value="Clear" onclick="clear_output()"> <span id="stderr" style="color:red"></span>
</p>Output:
<br>
<textarea id="output" rows="6" style="overflow:scroll;width:90%;"></textarea>
</div>
Vitsy, 18 16 bytes
"!dlroW ,olleH"Z
"!dlroW ,olleH" Push Hello, World! to the stack.
Z Push the entire stack to STDOUT - equivalent to l\O
Output:
Hello, World!
Z is new syntax - it was not made for this question.
Ziim, 1222 bytes
In an unexpected turn of events, I'm counting this submission in UTF-16.
↘ ↓↘↘↘↘↙↓↘↘ ↙↓↘ ↓↘ ↙↘←↓ ↘↘↙↓↘↘↘↙↓↘↘↘↘↙↓↘↘↘↘↙↓ ↘↘↙↓↘↘↙↓↘ ↙ ↘ ↓↘ ↙↘←↓↘ ↙ ↘ ↓ ↘↘↙↓↘↘↙↓↘↘↘↘↙↓ ↘ ↙↘←↓↘ ↙ ↘ ↓ ↘ ↙ ↘ ↓↘↘↙↓↘↘↘↙↓↘↘↘↙↓↘↘ ↙↓↘←↓↘ ↙↓↘ ↓↘↘↙↓ ↘↘↙↓↘↘↙↓↘ ↙↘←↓↘ ↙↘←↓ ↘ ↙↘←↓ ↘↘↙↓↘↘↙↓ ↘ ↙ ↘ ↓↘↘ ↙ ↘ ↓↘ ↙↓↘←
↓→↘ ↑↑↓→↘ ↑↓ ↓→↘ ↓↓↓→↘↘ ↓→↘ ↑↓→↘ ↑↑↓→↘ ↑↑↓→↘↘ ↓→↘ ↓→↘ ↓↓↓↓→↘ ↓↓↓→↘ ↓↓↓↓→↘↘ ↓→↘ ↓→↘ ↑↑↓→↘↘ ↓↓↓→↘ ↓↓↓↓→↘↘ ↓↓↓↓→↘ ↓→↘ ↑↓→↘ ↑↓→↘ ↑↓ ↓→↘ ↓ ↓→↘ ↓→↘↘ ↓→↘ ↓→↘ ↓↓↓→↘ ↓↓↓→↘↘ ↓↓↓→↘↘ ↓→↘ ↓→↘↘ ↓↓↓↓→↘ ↑↓↓↓↓→↘ ↓ ↓→
↗ ↑↖ ↗ ↑↖↗↑↗↗ ↑↗↗↗ ↑↑↗ ↑↖↗ ↑↖ ↗ ↑↖ ↗ ↑↑↗ ↑↗ ↑↗↗↗↗ ↑↗↗↗ ↑↗↗↗↗ ↑↑↗ ↑↗ ↑↖ ↗ ↑↑↗↗↗ ↑↗↗↗↗ ↑↑↗↗↗↗ ↑↗ ↑↖↗ ↑ ↗ ↑↖↗↑↗↗ ↑↗↑↗↗ ↑↗ ↑↑↗ ↑↗ ↑↗↗↗ ↑↗↗↗ ↑↑↗↗↗ ↑↑↗ ↑↗ ↑↑↗↗↗↗ ↑↖↗↗↗↗ ↑↗↑↗↗
Because the code snippet above will likely not render in a very readable manner for you (either because of missing characters, or because the diagonal arrows aren't as monospaced as they should be), here is an image of the solution. I've marked the concatenators where a new byte starts in red:
Well, this is a bit embarrassing. I spent quite some time on this solution, and at 610 characters, it is 267 characters shorter than the one on the esolangs page. However, it contains a lot more arrows, and because those are 3 bytes in UTF-8, it's actually longer than the one on esolangs (1516 vs 1345). But because this solution is so dense and contains far more arrows than spaces, I'm actually saving bytes by using UTF-16 and counting each character as two bytes.
Anyway, regardless of how we're counting, this is far from optimal. The above code is entirely linear, and builds one bit at a time. So I'm not reusing any bitstrings (like I could for the ls or os or even other substrings). I chose this approach because I wanted to start with something where it would be easier to pack the arrows very densely. If one used a more square layout, one could make use of a lot more repetition in the output (on a bit level), and thereby make massive savings.
Aysolang - 30 23 bytes
{dlrow, olleH};
l0=?;o
Explaination:
{dlrow, olleH}; ~~ Push the ascii values of "Hello, world" on the stack, reversed and terminate the line
l0= ~~ Check if the length equals zero
?;o ~~ If it equals zero, terminate. Otherwise, output the top of the stack as a character.
Perl, 18 bytes
say"Hello, World!"
Remark:
"say" is used in Perl 6. While "print" is a Perl 5 thing. But "say" can be used in version 5.10+ when the -M5.010 switch (or -M for a higher version) is used.
Perl 5 without version switch, 20 bytes
print"Hello, World!"
Perl/Tk, 91 Bytes
Ok, this doesn't exactly print to STDOUT as was requested by the challenge. Since it creates a window with a button. So this was just added for the sake of entertainment/completeness.
use Tk;MainWindow->new->Button(-text=>"Hello, World!",-command=>sub{exit})->pack();MainLoop
Ouroboros, 27
S"Hello, World!"1(
13wSoL!(
The program consists of two lines of code, each of which represents an ouroboros snake.
Snake 1
S sets the snake's active stack to the shared stack. The string literal pushes the character codes of Hello, World! in reverse order. Finally, 1( causes the snake to swallow the last character of its tail. Since this is the instruction that the IP is currently on, the snake dies.
Snake 2
13w causes the snake to wait for 13 ticks (so snake 1 can finish pushing the string). S switches to the shared stack and o outputs a character. L! pushes the length of the shared stack and logically negates it, resulting in 1 if the stack is empty and 0 if not. ( swallows that many characters of the snake's tail. If the stack is not yet empty, nothing is swallowed, and control loops back to the head of the snake, where it waits a while, sets the active stack as the shared stack, and outputs the next character. Once all the characters have been output, L! gives 1, and the snake swallows its IP and dies.
See it in action via Stack Snippet:
// Define Stack class
function Stack() {
this.stack = [];
this.length = 0;
}
Stack.prototype.push = function(item) {
this.stack.push(item);
this.length++;
}
Stack.prototype.pop = function() {
var result = 0;
if (this.length > 0) {
result = this.stack.pop();
this.length--;
}
return result;
}
Stack.prototype.top = function() {
var result = 0;
if (this.length > 0) {
result = this.stack[this.length - 1];
}
return result;
}
Stack.prototype.toString = function() {
return "" + this.stack;
}
// Define Snake class
function Snake(code) {
this.code = code;
this.length = this.code.length;
this.ip = 0;
this.ownStack = new Stack();
this.currStack = this.ownStack;
this.alive = true;
this.wait = 0;
this.partialString = this.partialNumber = null;
}
Snake.prototype.step = function() {
if (!this.alive) {
return null;
}
if (this.wait > 0) {
this.wait--;
return null;
}
var instruction = this.code.charAt(this.ip);
var output = null;
if (this.partialString !== null) {
// We're in the middle of a double-quoted string
if (instruction == '"') {
// Close the string and push its character codes in reverse order
for (var i = this.partialString.length - 1; i >= 0; i--) {
this.currStack.push(this.partialString.charCodeAt(i));
}
this.partialString = null;
} else {
this.partialString += instruction;
}
} else if (instruction == '"') {
this.partialString = "";
} else if ("0" <= instruction && instruction <= "9") {
if (this.partialNumber !== null) {
this.partialNumber = this.partialNumber + instruction; // NB: concatenation!
} else {
this.partialNumber = instruction;
}
next = this.code.charAt((this.ip + 1) % this.length);
if (next < "0" || "9" < next) {
// Next instruction is non-numeric, so end number and push it
this.currStack.push(+this.partialNumber);
this.partialNumber = null;
}
} else if ("a" <= instruction && instruction <= "f") {
// a-f push numbers 10 through 15
var value = instruction.charCodeAt(0) - 87;
this.currStack.push(value);
} else if (instruction == "$") {
// Toggle the current stack
if (this.currStack === this.ownStack) {
this.currStack = this.program.sharedStack;
} else {
this.currStack = this.ownStack;
}
} else if (instruction == "s") {
this.currStack = this.ownStack;
} else if (instruction == "S") {
this.currStack = this.program.sharedStack;
} else if (instruction == "l") {
this.currStack.push(this.ownStack.length);
} else if (instruction == "L") {
this.currStack.push(this.program.sharedStack.length);
} else if (instruction == ".") {
var item = this.currStack.pop();
this.currStack.push(item);
this.currStack.push(item);
} else if (instruction == "m") {
var item = this.ownStack.pop();
this.program.sharedStack.push(item);
} else if (instruction == "M") {
var item = this.program.sharedStack.pop();
this.ownStack.push(item);
} else if (instruction == "y") {
var item = this.ownStack.top();
this.program.sharedStack.push(item);
} else if (instruction == "Y") {
var item = this.program.sharedStack.top();
this.ownStack.push(item);
} else if (instruction == "\\") {
var top = this.currStack.pop();
var next = this.currStack.pop()
this.currStack.push(top);
this.currStack.push(next);
} else if (instruction == "@") {
var c = this.currStack.pop();
var b = this.currStack.pop();
var a = this.currStack.pop();
this.currStack.push(c);
this.currStack.push(a);
this.currStack.push(b);
} else if (instruction == ";") {
this.currStack.pop();
} else if (instruction == "+") {
var b = this.currStack.pop();
var a = this.currStack.pop();
this.currStack.push(a + b);
} else if (instruction == "-") {
var b = this.currStack.pop();
var a = this.currStack.pop();
this.currStack.push(a - b);
} else if (instruction == "*") {
var b = this.currStack.pop();
var a = this.currStack.pop();
this.currStack.push(a * b);
} else if (instruction == "/") {
var b = this.currStack.pop();
var a = this.currStack.pop();
this.currStack.push(a / b);
} else if (instruction == "%") {
var b = this.currStack.pop();
var a = this.currStack.pop();
this.currStack.push(a % b);
} else if (instruction == "_") {
this.currStack.push(-this.currStack.pop());
} else if (instruction == "I") {
var value = this.currStack.pop();
if (value < 0) {
this.currStack.push(Math.ceil(value));
} else {
this.currStack.push(Math.floor(value));
}
} else if (instruction == ">") {
var b = this.currStack.pop();
var a = this.currStack.pop();
this.currStack.push(+(a > b));
} else if (instruction == "<") {
var b = this.currStack.pop();
var a = this.currStack.pop();
this.currStack.push(+(a < b));
} else if (instruction == "=") {
var b = this.currStack.pop();
var a = this.currStack.pop();
this.currStack.push(+(a == b));
} else if (instruction == "!") {
this.currStack.push(+!this.currStack.pop());
} else if (instruction == "?") {
this.currStack.push(Math.random());
} else if (instruction == "n") {
output = "" + this.currStack.pop();
} else if (instruction == "o") {
output = String.fromCharCode(this.currStack.pop());
} else if (instruction == "r") {
var input = this.program.io.getNumber();
this.currStack.push(input);
} else if (instruction == "i") {
var input = this.program.io.getChar();
this.currStack.push(input);
} else if (instruction == "(") {
this.length -= Math.floor(this.currStack.pop());
this.length = Math.max(this.length, 0);
} else if (instruction == ")") {
this.length += Math.floor(this.currStack.pop());
this.length = Math.min(this.length, this.code.length);
} else if (instruction == "w") {
this.wait = this.currStack.pop();
}
// Any instruction not covered by the above cases is ignored
if (this.ip >= this.length) {
// We've swallowed the IP, so this snake dies
this.alive = false;
this.program.snakesLiving--;
} else {
// Increment IP and loop if appropriate
this.ip = (this.ip + 1) % this.length;
}
return output;
}
// Define Program class
function Program(source, speed, io) {
this.sharedStack = new Stack();
this.snakes = source.split(/\r?\n/).map(function(snakeCode) {
var snake = new Snake(snakeCode);
snake.program = this;
snake.sharedStack = this.sharedStack;
return snake;
}.bind(this));
this.snakesLiving = this.snakes.length;
this.io = io;
this.speed = speed || 10;
this.halting = false;
}
Program.prototype.run = function() {
if (this.snakesLiving) {
this.step();
this.timeout = window.setTimeout(this.run.bind(this), 1000 / this.speed);
}
}
Program.prototype.step = function() {
for (var s = 0; s < this.snakes.length; s++) {
var output = this.snakes[s].step();
if (output) {
this.io.print(output);
}
}
}
Program.prototype.halt = function() {
window.clearTimeout(this.timeout);
}
var ioFunctions = {
print: function(item) {
var stdout = document.getElementById('stdout');
stdout.value += "" + item;
},
getChar: function() {
if (inputData) {
var inputChar = inputData[0];
inputData = inputData.slice(1);
return inputChar.charCodeAt(0);
} else {
return -1;
}
},
getNumber: function() {
while (inputData && (inputData[0] < "0" || "9" < inputData[0])) {
inputData = inputData.slice(1);
}
if (inputData) {
var inputNumber = inputData.match(/\d+/)[0];
inputData = inputData.slice(inputNumber.length);
return +inputNumber;
} else {
return -1;
}
}
};
var program = null;
var inputData = null;
function resetProgram() {
var stdout = document.getElementById('stdout');
stdout.value = null;
if (program !== null) {
program.halt();
}
program = null;
inputData = null;
}
function initProgram() {
var source = document.getElementById('source'),
stepsPerSecond = document.getElementById('steps-per-second'),
stdin = document.getElementById('stdin');
program = new Program(source.value, +stepsPerSecond.innerHTML, ioFunctions);
inputData = stdin.value;
}
function runBtnClick() {
if (program === null || program.snakesLiving == 0) {
resetProgram();
initProgram();
} else {
program.halt();
var stepsPerSecond = document.getElementById('steps-per-second');
program.speed = +stepsPerSecond.innerHTML;
}
program.run();
}
function stepBtnClick() {
if (program === null) {
initProgram();
} else {
program.halt();
}
program.step();
}
.container {
width: 100%;
padding: 6px 0;
}
.so-box {
font-family: 'Helvetica Neue', Arial, sans-serif;
font-weight: bold;
color: #fff;
text-align: center;
padding: .3em .7em;
font-size: 1em;
line-height: 1.1;
border: 1px solid #c47b07;
-webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.3), 0 2px 0 rgba(255, 255, 255, 0.15) inset;
text-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
background: #f88912;
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.3), 0 2px 0 rgba(255, 255, 255, 0.15) inset;
}
.control {
display: inline-block;
border-radius: 6px;
float: left;
margin-right: 25px;
cursor: pointer;
}
.option {
padding: 10px 20px;
margin-right: 25px;
float: left;
}
h1 {
text-align: center;
font-family: Georgia, 'Times New Roman', serif;
}
a {
text-decoration: none;
}
input,
textarea {
box-sizing: border-box;
}
textarea {
display: block;
white-space: pre;
overflow: auto;
height: 40px;
width: 100%;
max-width: 100%;
min-height: 25px;
}
span[contenteditable] {
padding: 2px 6px;
background: #cc7801;
color: #fff;
}
#stdout-container,
#stdin-container {
height: auto;
}
#stdin-container {
display: none;
}
#reset {
float: right;
}
#source-display-wrapper {
display: none;
width: 100%;
height: 100%;
overflow: auto;
border: 1px solid black;
box-sizing: border-box;
}
#source-display {
font-family: monospace;
white-space: pre;
padding: 2px;
}
.activeToken {
background: #f88912;
}
.clearfix:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix {
display: inline-block;
}
* html .clearfix {
height: 1%;
}
.clearfix {
display: block;
}
<!--
Designed and written 2015 by D. Loscutoff
Much of the HTML and CSS was taken from this Befunge interpreter by Ingo Bürk: http://codegolf.stackexchange.com/a/40331/16766
-->
<div class="container">
<textarea id="source" placeholder="Enter your program here" wrap="off">S"Hello, World!"1(
13wSoL!(</textarea>
<div id="source-display-wrapper">
<div id="source-display"></div>
</div>
</div>
<div id="stdin-container" class="container">
<textarea id="stdin" placeholder="Input" wrap="off"></textarea>
</div>
<div id="controls-container" class="container clearfix">
<input type="button" id="run" class="control so-box" value="Run" onclick="runBtnClick()" />
<input type="button" id="pause" class="control so-box" value="Pause" onclick="program.halt()" />
<input type="button" id="step" class="control so-box" value="Step" onclick="stepBtnClick()" />
<input type="button" id="reset" class="control so-box" value="Reset" onclick="resetProgram()" />
</div>
<div id="stdout-container" class="container">
<textarea id="stdout" placeholder="Output" wrap="off" readonly></textarea>
</div>
<div id="options-container" class="container">
<div class="option so-box">Steps per Second: <span id="steps-per-second" contenteditable>100</span>
</div>
</div>
Pip, 15 bytes
"Hello, World!"
Straightforward. Any expression at the end of the program is auto-printed.
Gol><>, 16 bytes
"!dlroW ,olleH"H
I've really enjoyed golfing in ><>, but unfortunately I've found that ><> lacks several features, e.g. STDIN integer input, which prevent it from being competitive in challenges it otherwise would be. Gol><> is designed to (hopefully) be an easier-to-use variation of ><>. I worked on it earlier in the year, around when the language showcase was happening, but took a break and only picked it up again recently. It's starting to stabilise, so I thought it'd be a good time to post a first answer.
Similarly to ><>, " is a string parsing operator which pushes chars one at a time until it reaches a closing ". H then halts the program, outputting the stack until it is empty.
Even without H, Gol><> can still output the stack in a relatively short way. l pushes the length of the stack, o outputs a char from the stack and R pops a number n, repeating the next instruction n times. Thus, an equivalent program would be
"!dlroW ,olleH"lRo;
where ; terminates the program with no output.
BotEngine, 2x15=30
vHello, World!
>eeeeeeeeeeeeeP
Stringy, 17 bytes
(Hello, World!);p
Minkolang 0.1, 18 bytes
"Hello world!"(O).
"Hello world!" is pushed onto the stack in reverse order (by Minkolang), then (O) repeatedly prints the top of stack (as it's a while loop) until it's empty, at which point the program counter proceeds to . and terminates.
Processing, 23 bytes
print("Hello, World!");
Well, that's pretty much it!
Actionscript 3.0, 23 22 bytes
trace("Hello, World!")
UniBasic, 19 Bytes
CRT 'Hello, World!'
C#, 67 Bytes
class a{static void Main(){System.Console.Write("Hello, World!");}}
Windows Batch, 18 bytes
echo Hello, World!
???, 96 bytes
,;;..;...;.;,,,,;,,"......";...........-,'",-.";;,,,,!;...!;,!!...!;;;!-!-!-!...!,,,,,,!-,!;;;.!
Based on the 95-byte approach by Mitch Schwartz.
Note that the 92-byte Brainfuck solution would yield 97 bytes in ???, because the sequential loops require four more apostrophes.
MUMPS, 17 bytes
w "Hello, World!"
Not terribly exciting, but there you have it.
Sprects, 14 bytes
.Hello, World!
tinyAll, 1 byte
Tinyall is a language that I've developed after this challenge was published.
It was written in a few hours, at 1AM.
The smallest valid example of an Hello, world! program was inspired by @Fatalize's answer. But it is too easy and only allows 1 syntax.
I've decided to do better:
f
This is the equivalent to Hf or H15. Low-case letters are considered numbers from 10 to 46(?).
H is the Hello, World! function, responsible for the output. Passing an argument, you can set specific bits to output a variation of the Hello, World! output.
You could also write like this:
Hf_
Or, with string expansion:
_"[:Hf]"
Or just plain:
_"Hello, World!"
And a dynamic example:
H:_
This one takes whatever input and outputs whatever version you decide it to. (By using :, the input has to be a number)
Execution example:
(function(window, undefined) {
var funcs = {
H:function(value) {
return 'hH'[value&1]
+'ello'
+(value&2?',':'')
+' '
+('wW'[+!!(value&4)])
+'orld'
+(value&8?'!':'')
+(value&16?'\n':'');
},
I:function(value, data){
return data.input;
},
'_':function(value, data){
var tmp = data.out + (value === undefined ? data.last : value);
data.vars[';'] = data.out = tmp;
return tmp;
},
V:function(value){
return get_value(value);
},
P:function(value){
return value;
}
};
var expand_string = function(value, data){
return value.replace(
/\[:(?:([A-Z_])(.)?|([^A-Z_'"]))\]/g,
function(_, func, arg, value){
if(func)
{
return funcs[func](get_value(arg, data, true), data);
}
else
{
return get_value(value, data, true)
}
}
);
};
var get_value = function(value, data, recursion) {
if(value === null || value === undefined || value === ' ')
{
return undefined;
}
var x = (value || '').toString();
if(/^\-?\d+$/.test(x))
{
//returns a number
return Function('return ' + x)();
}
else if(/^[a-z]$/.test(x))
{
//returns a number between 10-43
return (x in data.vars) ? data.vars[x] : x.charCodeAt(0) - 87;
}
else if(x[0] == '\'')
{
return x[1];
}
else if(x[0] == '"' && x.length >= 2)
{
var sub = x.substr(1, x.length - 2);
return recursion ? sub : expand_string(sub, data);
}
else
{
return data.vars[x];
}
};
var noop = function(){};
window.tinyAll=function(code, input) {
var data = {
out: '',
last: 0,
input: input || 0,
vars: {
'|':'0.3',
':':input || 0,
';':0
}
};
if(!code || /^[a-z\d]$/.test(code))
{
return funcs.H(get_value(code, {}));
}
code.toString().replace(
// /(?:([^A-Z_:'"])=)?([A-Z_])(?::('.|"[^"]*"|-?\d+|.))?/g,
/(?:([^A-Z_'"])=)?([A-Z_])(?:('.|"[^"]*"|-?\d+|[^A-Z_'"]))?/g,
function(_, name, func, value){
data.vars[name || ':'] = data.last = (funcs[func] || noop)( value ? get_value(value, data) : data.last, data);
return '';
}
);
return data.out || 0;
};
})(Function('return this')());
alert(tinyAll('_"\'Hf\' produces: \'[:Hf]\'"'));
This is the original version. I'll post a new version of the code, as soon as I have time to publish on Github.
Turing Machine Code, 132 bytes
As usual, I'm using the table syntax defined here.
0 * H r q
q * e r w
w * l r e
e * l r r
r * o r t
t * , r y
y * _ r u
u * W r i
i * o r o
o * r r p
p * l r a
a * d r s
s * ! r halt
If the above link isn't working (sometimes it works for me, other times the page refuses to load) you may also test this using this java implementation.
ferNANDo, 111 109 bytes
7 7
3
5 5
6 5
4 3 3
0 5 3 0 7 3 0 0
0 5 7 0 0 5 0 4
0 6 5 2 4 6 2 3
0 6 6 0 7 7 2 3
0 6 6 2 5 4 7 4
2 2
3 5
3
The above loops three times, printing five characters each time, trailing with \r\n, which I am considering to be a single newline. The general setup I use to loop three times is the following:
7 7
3
5 5
6 5
4 3 3
1 6 6
0 0 7 7 0 0 0 0
0 0 7 7 0 0 0 1
0 0 7 7 0 0 0 2
0 0 7 7 0 0 0 3
0 0 7 7 0 0 0 4
0 0 7 7 0 0 0 5
0 0 7 7 0 0 0 6
0 0 7 7 0 0 0 7
0 0 0 0 7 0 7 0
2 2
3 5
3
producing:
00001111
00110011
01010101
which I think makes the variable names 0-7 somewhat evident. In this arrangement the value 1 is not needed, saving 6 bytes.
Hassium, 38 Bytes
Neat challenge! Love all the different submissions so far. Here is mine in a language I wrote called Hassium.
func main(){println("Hello, World!");}
Run it online here
Monkeys, 505 bytes
6 DOWN
6 DOWN
7 RIGHT
7 RIGHT
6 LEFT
5 DOWN
5 DOWN
5 DOWN
7 BOND
6 BOND
6 BOND
7 YELL
7 DOWN
6 DOWN
6 BOND
7 LEFT
6 LEFT
7 YELL
7 LEFT
7 LEFT
6 BOND
6 LEFT
6 LEFT
7 YELL
7 YELL
6 LEFT
6 LEFT
6 LEFT
7 YELL
5 BOND
7 LEFT
7 YELL
6 LEFT
6 LEFT
6 LEFT
6 LEFT
5 BOND
7 YELL
7 DOWN
7 DOWN
7 DOWN
5 DOWN
5 DOWN
5 DOWN
5 BOND
7 YELL
6 LEFT
7 DOWN
6 BOND
7 DOWN
7 YELL
7 LEFT
7 LEFT
7 LEFT
7 YELL
7 LEFT
6 LEFT
5 BOND
5 BOND
5 BOND
7 YELL
7 LEFT
6 DOWN
6 DOWN
6 BOND
7 LEFT
7 YELL
7 LEFT
6 DOWN
6 DOWN
6 BOND
7 YELL
I wanted to post this one for a while, but the interpreter had several bugs. However, David Catt (the author) was kind enough to upload a new, working interpreter, so I got to work...
I have no idea how to golf this language effectively, because there are so many things which are interacting. My basic approach was this:
Move monkeys
5,6and7to the bottom row, like this:..!1.!.... .......2!. .........! .3.!...... .......!.. .!....!... ....!4.... ........!. ......!... ..576...!.At this point they have values
1,1,2.This gives me comparably flexible operations: I can increment 5 and 7, or 7 and 6. I can decrement each one individually. And I can multiply 7 by the value of either 5 or 6 (mod 256).
- So I just wrote a simple Mathematica program to look into short ways to get 7 to the next value via a few multiplications and de/increments. This search was not exhaustive, but provided much better results than naively incrementing/decrementing to the next value.
There are many more opportunities to golf this though:
- One can use the other arithmetic operators, particularly addition and subtraction could be useful.
- I'm always using 7 for printing - allowing 5 or 6 to print (or involving even more monkeys) might shorten things.
- One could try to store some useful values like
111or32in a monkey for later use. - Arrange the monkeys vertically, so that one could use
UPinstead ofLEFT. - Maybe this can even be shortened with loops.
...but the language is so complicated that I'm not sure how to explore these possibilities systematically.
OCaml, 30 bytes
print_string "Hello, World!";;
FlogScript, 17 bytes
{Hello, World!}P.
Commodore Basic, 16 bytes
In order to input this program, you'll need to switch your Commodore 64 to character set 2 by pressing <SHIFT> + <C=>.
1?"hELLO wORLD!
The Commodore home computers come with two character sets: "unshifted" mode, which is derived from ASCII-1963 and so lacks lower-case letters, and "shifted" mode, which has both lower- and upper-case letters, but in the opposite order from modern ASCII-1967-derived encodings. Any "Hello, World!' program that produces the requested byte stream on a Commodore will look funny on the Commodore's screen. In the interests of not having to look up a half-dozen obscure Unicode characters, I've chosen to write my program in "shifted" mode, which merely has reversed case.
As a side note, the Commmodore Basic interpreter (and presumably many other Microsoft Basic variants) will let you omit the trailing quotation mark if a string extends to the end of the current source line.
JSFuck, 6293 6289 6277 bytes
This may get a mention as one of the longest "shortest Hello, World! programs" (actually I do not know if this is optimal, but it's the shortest I managed to get).
Warning: only works in Firefox and Safari
[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]][([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]([(![]+[])[+!![]]+(![]+[])[!![]+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+!![]]+(!![]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[!![]+!![]+!![]]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]()[+!![]+[!![]+!![]]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]][([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+!![]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]]+[])[!![]+!![]+[+[]]]+([][(!![]+[])[!![]+!![]+!![]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([![]]+[][[]])[+!![]+[+[]]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]+!![]]]()+[])[!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(![]+[])[+!![]])()(!![])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]][([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]](([][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]]+[])[!![]+!![]+[+[]]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]][([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+!![]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]]+[])[!![]+!![]+[+[]]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]]+(![]+[])[+[]])())[+!![]+[+!![]]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]+(![]+[])[!![]+!![]]+([][[]]+[])[!![]+!![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]][([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+!![]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]]+[])[!![]+!![]+[+[]]]+(![]+[])[+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][(!![]+[])[!![]+!![]+!![]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([![]]+[][[]])[+!![]+[+[]]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]+!![]]]()+[])[!![]+!![]])()((+(+!![]+(!![]+[])[!![]+!![]+!![]]+(+!![])+(+[])+(+[])+(+[]))+[])[+[]]+![])[+[]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]()[+!![]+[!![]+!![]]]+(+[]+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+[+[]]]))()
There is also a slightly longer version (+4 bytes) that also works in Chrome and Microsoft Edge:
[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]][([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]([(![]+[])[+!![]]+(![]+[])[!![]+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+!![]]+(!![]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[!![]+!![]+!![]]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]()[+!![]+[!![]+!![]]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]][([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+!![]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+[+[]]]+([][(!![]+[])[!![]+!![]+!![]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([![]]+[][[]])[+!![]+[+[]]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]+!![]]]()+[])[!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(![]+[])[+!![]])()(!![])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]][([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]]((![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+[+[]]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]][([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+!![]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+[+[]]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]]+(![]+[])[+[]])())[+!![]+[+!![]]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]+(![]+[])[!![]+!![]]+([][[]]+[])[!![]+!![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]][([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+!![]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+[+[]]]+(![]+[])[+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][(!![]+[])[!![]+!![]+!![]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([![]]+[][[]])[+!![]+[+[]]]+(!![]+[])[!![]+!![]+!![]]+(![]+[])[!![]+!![]+!![]]]()+[])[!![]+!![]])()((+(+!![]+(!![]+[])[!![]+!![]+!![]]+(+!![])+(+[])+(+[])+(+[]))+[])[+[]]+![])[+[]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(!![]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]()[+!![]+[!![]+!![]]]+(+[]+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+[+[]]]))()
For those unfamiliar with JSFuck, it's about writing JavaScript as if there were only six characters, and it can get pretty crazy at times.
This table shows how the characters used in the Hello, World! program are encoded in JSFuck. The plain text code is just alert("Hello, World!").
+----------+--------------------------------------+---------------------------+
|JavaScript| write as | JSFuck |
+----------+--------------------------------------+---------------------------+
| a | (false+[])[1] | (![]+[])[+!![]] |
| l | (false+[])[2] | (![]+[])[!![]+!![]] |
| e | (true+[])[3] | (!![]+[])[!![]+!![]+!![]] |
| r | (true+[])[1] | (!![]+[])[+!![]] |
| t | (true+[])[0] | (!![]+[])[+[]] |
| ( | ([]+[]["fill"])[13] | 114 bytes |
| " | ([]+[])["fontcolor"]()[12] | 539 bytes |
| H | btoa(true)[1] | 1187 bytes |
| o | (true+[]["fill"])[10] | 105 bytes |
| space | ([]["fill"]+[])[20] | 107 bytes |
| W | (NaN+self())[11] | 968 bytes |
| d | (undefined+[])[2] | ([][[]]+[])[!![]+!![]] |
| ! | atob((Infinity+[])[0]+false)[0] | 1255 bytes |
| ) | (0+[false]+[]["fill"])[20] | 114 bytes |
+----------+--------------------------------------+---------------------------+
Here the strings "fill", "fontcolor", etc. must be written as "f"+"i"+"l"+"l", "f"+"o"+"n"+"t"+"c"+"o"+"l"+"o"+"r" to be encoded.
The global identifiers self, atob and btoa get written like Function("return self")().
Function itself should be []["fill"]["constructor"].
The comma "," is tricky, I'm not 100% sure how it works but it uses the []["concat"] function to create an array.
I'll post an update when I have time to do more tests.
I encoded this using JScrewIt - credits to GOTO 0 for creating such a sophisticated tool:
- Open Firefox (You can choose any other browser(s), but Firefox only code is the shortest.)
- Navigate to JScrewIt: http://jscrew.it
- Input:
alert("Hello, World!") - Executable code: checked
- Compatibility: Only this browser
This differs from my answer to this question for the presence of the comma after "Hello".
Interestingly, the ES6 syntax
alert`Hello, World!`
takes even more bytes to encode (+1500 or so) because of the higher complexity of encoding two backticks rather than (" and ").
Mascarpone, 29 bytes
[!dlroW ,olleH]$.............
The esolangs page notes that
from a typical programmer's point of view, it is not obvious how to program in it
In fact, although the language's designer believes it to be Turing complete, and I personally respect his expertise in esoteric languages enough to take it on trust that it's at the very least a non-trivial language, I haven't figured out how to write a loop. So what this does is to push the characters [!dlroW ,olleH] onto the stack (the [] delimiters are necessary, and do for some reason end up on the stack too), pop the ] with $, and then print everything except the [, one character at a time.
Ceylon, 40 bytes (or 24)
A file with this content can be executed in the Ceylon IDE:
shared void h(){print("Hello, World!");}
As Ceylon has no "top-level procedural code", all code needs to be either in a class or in a function. And only shared functions/classes can be called from outside ... and the IDE will chose the only shared function or class, if there is only one.
The Ceylon Web runner seems not to accept that text (it complains that "shared declaration is not a member of a class, interface, or package"), but instead allows directly statements:
print("Hello, World!");
(I guess the entered text is automatically wrapped in a function, and you can't declare stuff inside a function shared.)
NULL, 91 bytes
int("8bxyd2qvpj6uq6gh9u8hlrjfwqkx8i2pvid5auhrsrbpp8gsczv6ye26ew0pkx05wem94m9zqkn8prqir",36)
This number represents a program, and it has 126 digits in decimal representation. I use base-36 here to shorten the number. It seems acceptable because the interpreter of NULL uses the python eval on the program before executing it (presumably to allow specifying the program as a product of prime numbers). The prime factorization (used while executing the program) is
3*3*3*17*31*73*127*139*151*157*167*197*239*241*307*367*367*419*479*499*
547*599*619*677*751*839*919*947*947*1019*1039*1097*1129*1217*1249*1301*
1303*1327*1433*1499*1543*1613*1709*1777*1873*1951*1993*2063
I found this program by using something like A* search. It tracks the state of the NULL interpreter and two additional values:
print- number of characters in theHello, World!message it managed to output so farlength- natural logarithm of the number that represents the program
For each state, it picks 10 possible commands the language has (there are 14, but the rest are too uncomfortable to search), and calculates 10 new states. To find the shortest program, it holds the states in a priority_queue, arranged by the following cost function:
print - length / 25
If I use a fudge factor much different from 25, it either keeps searching forever (until it eats all RAM) or finds sub-optimal solutions.
BTW there is a bug in the interpreter in the generation of prime numbers. I fixed it by simplifying the code this way:
def factor_g(include_builtin_list = True):
if include_builtin_list:
for x in plist: yield x
k = plist[-1] + 2
while True:
yield k
k += 2
Piet, 93 codels
The 1 pixel bitmap of the 31x3 program :
![Piet 31x3 - Codel 1[1]](https://i.sstatic.net/tAzvx.png)
There might be still some room for improvement.
But the Direction Pointer & Codel Chooser are not making things easier.
This is the 12 codel image :
![Piet 31x3 - Codel 12[2]](https://i.sstatic.net/cAL6Q.png)
Remarks :
Because of the upper-left black codel, npiet online seems to have a problem with it.
But it works on PietDev.
Swift, 22 Bytes
Before Version 2.0 (24 Bytes)
println("Hello, World!")
After Version 2.0 (22 Bytes)
print("Hello, World!")
Includes trailing newline
Top level code in the main file gets executed automatically. In playgrounds, anything at top level gets executed as well.
In version 2.0 beta 6 this is also possible:
print("Hello,", "World!")
which will print all the items provided, separated by a space, terminated by a newline. This is equal to the following (which is probably the longest Swift version of a non-ridiculous "Hello, World!" program):
print("Hello,", "World!", separator: " ", terminator: "\n")
Since version 2.0 beta 6, Swift is one of the few languages that can have a vararg parameter at any position (not just the end), due to named parameters.
Pancake Stack, 1118 1073 bytes
Put this supercalifragilisticexpialidociouseventhoughthesoundofitissomethingquite pancake on top!
Show me a pancake!
Put this floccinaucinihilipilification pancake on top!
Put the top pancakes together!
Show me a pancake!
Put another pancake on top!
Put this piquant pancake on top!
Put the top pancakes together!
Show me a pancake!
Show me a pancake!
Put another pancake on top!
Put this big pancake on top!
Put the top pancakes together!
Show me a pancake!
Put this osteosarchaematosplanchnochondroneuromuelous pancake on top!
Show me a pancake!
Put this kolmivaihdekilowattituntimittari pancake on top!
Show me a pancake!
Put the top pancakes together!
Put this scrumptious pancake on top!
Put the top pancakes together!
Show me a pancake!
Eat the pancake on top!
Show me a pancake!
Put this big pancake on top!
Put the top pancakes together!
Show me a pancake!
Eat the pancake on top!
Show me a pancake!
Eat the pancake on top!
Take off the syrup!
Show me a pancake!
Put this nonilfenossipolietilenossietonolo pancake on top!
Show me a pancake!
Eat all of the pancakes!
I've been avoiding this one because I haven't found a good way of golfing it yet, but here's a submission for now.
The relevant operations are:
Instruction Result
--------------------------------------------------------------------------
Put this X pancake on top! Push word length of X to stack
Eat the pancake on top! Pop and discard
Put the top pancakes together! Add top two
Put another pancake on top! Duplicate
Show me a pancake! Print as ASCII without popping
Take off the syrup! Decrement all stack values by 1
Eat all of the pancakes! Terminate program
If you take a look a Pancake Stack's full instruction set, you'll notice that you only ever have access to the top two stack elements at any time, which makes this language a pain to program in normally. That and the fact that you can only output as ASCII, i.e. no numeric output.
Note that, if you're using the Python interpreter, you'll need an extra line with a ~ afterwards if you want to test by piping in a file. We don't use it here, but anything after the ~ is treated as normal STDIN input.
Sieve, 69 bytes
+|72|.+|101|.+|108|..>+|111|.>+|44|.-|32|.+|87|.<.+++.<.-|100|.-|33|.
Sieve is a BF-like programming language. It adds a special command |X|, called a sieve, that executes the command before it until the selected tape unit is equal to the number within the sieve. +|72|. outputs the character 72, which is an "H".
Here's an alternative with the same byte count:
+|72|.+|101|.+|108|..>+|111|.>+|44|.-|32|.>+|87|.<<.+++.<.-|100|.>>+.
The only change is that it saves 32 (space) and uses it later to print 33 (!).
ISCOM, 15 bytes
"Hello, World!"
X-D, 81 Bytes
I can't be sure that this would work as I can't find an interpreter, so if someone can, that would be good :) <- gratuitous smiley
8-~~~~~>8P8;$;~~>;P;------>;-P;%$;-->;P:~~->:P:~<:-->:P8~>8P;P;-->;P%P;~<;>;P8>8P
An explanation of what I think should be happening
# Pointers: 8 ; : %
8-~~~~~>8P # set 8 to 72, print 8 72
8;$ # copy 8 to ; 72
;~~>;P # inc ; 29, print ; 101
;------>;-P # inc ; 7, print ; 108
;%$ # copy ; to % 108
;-->;P # inc ; 3, print ; 111
:~~->:P # set : to 44, print : 44
:~< # dec : 15 29
:-->:P # inc : 3, print : 32
8~>8P # inc 8 15, print 8 87
;P # print ; 111
;-->;P # inc ; 3, print ; 114
%P # print % 108
;~< # dec ; 15 99
;>;P # inc ; 1, print ; 100
8>8P # inc 8, print 8 33
Marbelous, 26 bytes
48656C6C6F2C20576F726C6421
Huh, I'm surprised no one has done Marbelous yet. There is not much to golf though: just list the 13 character codes in hexadecimal, to create one marble for each. As they fall off the grid, they're printed.
MicroSoft Windows HTA - 13 bytes
Hello, World!
MicroSoft Windows HTA occupies a niche between HTML and applications, where you get the simplicity and ease of HTML, with the direct access to the system API of applications, including file and system calls.
When I was first introduced to it, I wondered how I ever got along without it. I used it to make really easy intuitive interfaces for complex command line utilities.
Sadly, it's fallen by the wayside and you hardly hear about it anymore. One thing I remember about the official documentation was that they boasted how a bare Hello, World! is a legal hypertext application.
Scheme, 24 26 25 bytes
(write "Hello, World!")
(display"Hello, World!")
simple but no one has done it in this language yet.
edit: fixed the quotes being printed.
ShortScript, 2 bytes
By using the function from the standard library:
$H
And by not using it:
→Hello, World!
CSS, 30 bytes
:after{content:"Hello, World!"
Cascading Style Sheets (CSS) isn't a typical programming language, but it can do fixed output fairly well. This is done by creating a pseudo-element after every element with the content Hello, World!. So only one element (<html>) is selected, this assumes that we're using the most basic HTML document, i.e.
<html><style>:after{content:"Hello, World!"</style></html>
This works in most major browsers, with the notable exception of Firefox, which applies the selector to the <html> and <body> elements. This is also why Stack snippets don't work, because there is always a body element that gets styled as well. Below is a slightly modified version to test.
* :after{content:"Hello, World!"
l33t, 104 bytes
7 99999998 1 7 9991 1 7 6 1 1 7 2 1 5 0 7 99997 1 8 92 1 6 0 8 995 1 7 995 1 7 2 1 8 5 1 8 7 1 5 0 7 0 1
I've been using the Ruby interpreter which seems to insert an 10 (END) at the end of the code implicitly.
l33t is supposed to look like l33t-5p34k. However, it is interpreted by simply summing the digits in each "word" and turning that into an opcode. So for golfing all we want is those digits. Golfing l33t like this is definitely living on the edge though. Quoting from the language spec:
It is possible to program in l33t just using numbers, i.e. not forming letters in l33t 5p34k. However, programmers who do this are
teh sUxX0r, and the interpreter is well within its rights to format your hard drive for attempting this.
As for the language itself, it's basically a Brainfuck-derivative. The main differences are that the source code is living on the tape as well (with an independent memory and instruction pointer), and that you define an offset whenever you move forward, backward, increment or decrement (so you can make larger jumps and increment more efficiently). Therefore, the techniques used in the short Brainfuck solutions don't help much here.
I started out with the naive solution (increment/decrement to value, print, repeat). That was 105 bytes. I managed to shave off one byte by computing the symbols , ! on a different memory cell than the letters (because the offsets from o to ,, space to W and d to ! are expensive. I think I might be able to save a few more by jumping into the program memory, but I'll have to try that tomorrow.
IRC, 27 bytes
/nick h
/quit Hello, World!
The esolangs page comes with a really lengthy two-file "Hello, World!" example. It turns out that is completely unnecessary. The main file of an IRC program contains the program name, a list of channels (which are found in separate files and define individual threads) as well a generic error message which is displayed for various errors. However, that error message can be anything and goes to STDOUT. So let's define our error message as Hello, World!. The shortest way to raise an appropriate error is simply not to define any channels. Voilà, almost 800 bytes saved.
Parenthetic, 1036 Bytes
This can undoubtedly be done better, but it's about the best I can come up with at the moment.
((()()())(()()()())((()()(()))((())()()()())((())()()()()()()()())))((()()())(()(())())((()(()))(()()()())((())()()()())))((()()())(()()(()()))((()()(()))(()()()())((())()()())))((()()())(()(()())())((()()(()))(()(())())((())()()())))((()(())()(()))((()((()))())((()(())(())())((()()(()))(()(())())((())()())))((()((()))())((()(())(())())((()(()))(()()(()()))((())()()()()())))((()((()))())((()(())(())())(()(()())()))((()((()))())((()(())(())())(()(()())()))((()((()))())((()(())(())())((()(()))(()(()())())((())()()())))((()((()))())((()(())(())())((()(()))(()()()())((())()()()()()()()()()()()())))((()((()))())((()(())(())())(()()()()))((()((()))())((()(())(())())((()(()()))(()()(()()))((())()()()()()()()()())))((()((()))())((()(())(())())((()(()))(()(()())())((())()()())))((()((()))())((()(())(())())((()(()))(()(()())())((())()()()()()())))((()((()))())((()(())(())())(()(()())()))((()((()))())((()(())(())())((()(()))(()()(()()))((())()()()())))((()((()))())((()(())(())())((()(()))(()()()())((())())))(()((())))))))))))))))))
General Steps
Define A 32
Define B 36
Define C 32 * 3
Define D 36 * 3
Build a list of chars with (A*2)(C+5)(D)(D)(D+3)(A+12)(A)(C-9)(D+3)(D+6)(D)(C+4)(A+1)
Output list + empty set as string
7, 45 bytes
(Important note: 7 is an unpublished esolang of my creation.)
4**++o/++d*no++doo:+do:/+no---*+uo+duo--o/++o
7 is a stack-based esolang of my invention. It has no built-in String or Array support, and you can't even push a specified number to the stack (with a few exceptions), so everything has to be done by hand. Here's what each operator does:
4sets variablebto4. This can only be done at the beginning of the program. 7 is the default value, hence the name.- Arithmetic
+-*/works as you would expect, but operates between the top item andb. (This is changable, but this program doesn't change it.) nanddincrement and decrement the top item by 1, respectively.:duplicates the top item.ooutputs the top item, whileuoutputs and pops the top item.
This program outputs the ASCII values of the proper characters. There are a bunch more operators which have a bunch more jobs, but I won't go into detail right now. I'm planning to publish it as soon as I have enough time.
FiM++, 88 bytes
Dear Princess Celestia:H.Today I learned:I sang "Hello, World!".Your faithful student,M.
FiM++ is an object-oriented language inspired by My Little Pony: Friendship is Magic. Yeah, right.
Printing "Hello, World!" is fairly straightforward, and there was an example in the interpreter's repository which I used as the basis for the above code. The main golfing steps were figuring out which parts could be shortened or left out and which couldn't... and the fact that I could replace I wrote ... with I sang ....
The interpreter prints a bunch of diagnostic information before running the code, but that does not appear to be part of the actual language specification.
Emoticon, 26 bytes
Hello, World! :-Q S:-P :-P
One or both of the Ps could be Qs instead. Hello, and World! are just treated as strings and added to the "current list". :-Q prints Hello, and removes it from the list. S:-P prints a space, and :-P prints World!. I don't see how I could golf this any further, and I'm making it CW, because it's essentially copied from the examples section of the docs.
Doorspace, 92 bytes
The language is also known as Qugord.
~group h from %2 to %14 affect h into "Hello, World!" each h into 0 task give 0 to 1 publish
or
~group h from 0 to %12 affect h into "Hello, World!" each h into 0 task give 0 to %0 publish
It's seriously bugging me that this has a horizontal scrollbar because of a single character. I don't see how to shorten it any further though.
This solution is mostly a golfed version of the "Hello, World!" example on the esolangs page. The important concepts of the language are that it operates on an infinite main array, initialised to zeroes; and then there's also an output array, which is reset every time you print its contents. If you know what the commands mean, the code is actually quite readable if split across several lines (which is not valid in the language):
group h from %2 to %14
affect h into "Hello, World!"
each h into 0 task
give 0 to 1
publish
The first line defines a "group tag" h, which is some subarray of the main array. In this case, it addresses the cells at indices 2 to 14 (leaving 2 cells for future use).
The second line writes the character codes of Hello, World! into these 13 cells.
The third line defines a foreach loop over the cells in h, which works by copying the current value into the specified cell (0) and then executing the code after it.
The fourth line is executed once for each character code (which we find in cell 0). It moves the character code from the 0th cell of the main array to the 0th cell of the output array (which we index relatively by looking at index 1 on the main tape, which is zero).
The fifth line prints everything in the output array up to the last non-zero element (i.e. just the first cell in our case).
Dark, 106 bytes
+h hell
h$twist sign s
s$scrawl " Hello, World!
s$read
h$twist stalker o
o$stalk
o$personal
o$echo
h$empty
I'll just let some quotes from the language specification speak for the brilliance of this esolang:
Dark is a language based on manipulating entire worlds and dimensions to achieve goals and to build the best torturous reality possible.
Whenever a syntax error occurs, the program's sanity decreases by 1. [...] If the program's sanity reaches zero, the interpreter goes insane.
Corruption flips a single bit in the variable when it occurs.
When the master dies, all servant variables attached to that master also die. This is useful for grouping and mass killing variables.
Forces a variable to kill itself, freeing it (remember though that it will leave decay).
Sets a variable to a random value. Uses the Global Chaos Generator.
If a stalker is not initialized, any attempts to perform IO will result in depressing error messages to be written to the console.
C++, 48 bytes
(must be compiled with g++)
puts is slightly more concise than std::cout, shaving 6 bytes off of the other c++ answer.
#include<cstdio>
main(){puts("Hello, World!");}
Piet, 132 codels
On a 4x33 grid. On the last few commands I had to stretch to reach the end, meaning it could be golfed a little more (it probably fits on a 4x31 grid). Here it is, with codel size 10:
I made it in a rectangular space to minimize the number of time I needed to flip the pointer. The stack is based on numbers 36 and 108 that are constantly being duplicated or rolled to produce the new letters.
Made and tested on PietDev.
Starry, 191 188 186 182 172 169 bytes
+ + +* + * + + +* + .* + + +* * + +* . + + . + . + + + +* + . + + * +* + . + + * +* . +* + * . + .* . . . + * .
This is almost definitely suboptimal, but Starry golfing is surprisingly difficult, due to the cost of pushing a number being higher than that of performing an operation. Thankfully we can reuse a lot of past computations, due to duplicate letters in the message "Hello, World!".
Starry operators are determined by the number of spaces before one of +*.,`. The relevant ones used are:
Spaces Char Operation
-----------------------------------------------------
1 + Duplicate top of stack
2 + Swap top 2 stack elements
3 + Rotate top 3 stack elements
n >= 5 + Push n-5 to stack
0 mod 5 * Add
1 mod 5 * Subtract
2 mod 5 * Multiply
1 mod 2 . Output as ASCII
And here is the program broken down:
Line Explanation Stack Out
-------------------------------------------------------------------------------------
+ + +* + * + Push 3 and 36, dup [3 36 36]
+ +* + . Dup, x2, dup, print [3 36 36 72] H
* Add [3 36 108] H
+ + +* * + Dup, sub 8, dup [3 36 108 100 100] H
+* . Add 1, print [3 36 108 100] He
+ + . Swap, dup, print [3 36 100 108] Hel
+ . Dup, print [3 36 100 108] Hell
+ + + Dup, push 3, dup [3 36 100 108 108 3 3] Hell
+* + . Rot 3, add, dup, print [3 36 100 108 3 111] Hello
+ + * +* + . Dup, //5*2, dup, print [3 36 100 108 3 111 44] Hello,
+ + * +* . Print 32 [3 36 100 108 3 111 44] Hello,
+* + * . Double, sub 1, print [3 36 100 108 3 111] Hello, W
+ . Dup, print [3 36 100 108 3 111] Hello, Wo
* . Add, print [3 36 100 108] Hello, Wor
. . Print, print [3 36] Hello, World
+ * . Swap, sub, print [] Hello, World!
goruby, 6 bytes
h:H,:W
Apart from the method_missing override, goruby also defines Kernel#h which accepts 3 parameters: the first letter of _ello (default H), the first letter of _orld (default w), and the final character (default !).
RUBE, 47 bytes
A cellular automaton-based language about warehouses, crates, dozers, and conveyor belts:
2
1
766
2c4
256
07f
662
cfc
466
85c
OOO
ccc
===
It turns out stacking all the crates on top of each other like 2\n1\n6\n... is also 57 bytes, and is "simpler", but I didn't want to stretch the page. :)
Update: stacking the crates into a rectangle is shorter! Who'd've thought?
Alchemy, 1013 bytes
Fixate 1 dr Eulerius (1 oz Alkahest): Bius
Fixate 1 dr Periphius (1 oz Alkahest): Cius
Fuse 1 dr Bius, 1 dr Bius, 1 dr Cius, 1 dr Cius (4 oz Alkahest): Zius
Fuse 1 dr Zius, 1 dr Bius (2 oz Alkahest): Hium
Fuse 1 dr Cius, 1 dr Periphius, 1 dr Periphius (3 oz Alkahest): Dius
Project 1 oz Hium, 1 oz Dius (3 oz Alkahest): Eium
Fuse 1 dr Zius, 1 dr Cius (2 oz Alkahest): Lium
Project 1 oz Lium, 1 dr Cius (3 oz Alkahest): Oium
Fuse 1 dr Bius, 1 dr Cius, 1 dr Eulerius, 1 dr Eulerius (4 oz Alkahest): Cium
Ferment 1 dr Zius, 1 dr Periphius (2 oz Alkahest): Sium
Project 1 dr Cium, 1 dr Cium (4 oz Alkahest): Wium
Ferment 1 dr Wium, 1 dr Aquaphidium (4 oz Alkahest): Wium
Project 1 dr Oium, 1 dr Cius (3 oz Alkahest): Rium
Ferment 1 dr Eium, 1 dr Aquasoothius (3 oz Alkahest): Dium
Project 1 dr Sium, 1 dr Aquasoothius (3 oz Alkahest): Xium
Multiply 1 oz Hium, 1 oz Eium, 1 oz Lium, 1 oz Lium, 1 oz Oium, 1 oz Cium, 1 oz Sium, 1 oz Wium, 1 oz Oium, 1 oz Rium, 1 oz Lium, 1 oz Dium, 1 oz Xium (26 oz Alkahest): Scribius
This is one weird language. The above is probably not entirely optimal, but I also don't think that the optimal solution will be significantly shorter (I did try to obtain the numbers as efficiently as possible locally). Also, the language spec seems to imply that the amounts of the reagents should actually match up (when multiplied by their "substance numbers" which are the sums of their ASCII values...), but the only interpreter I could find doesn't seem to be checking that.
In fact, the interpreter had a memory corruption bug which I had to fix to run the above code.
Some explanation would probably be helpful. Let e, π, and φ have their usual meanings. Then the above code translates roughly to the following pseudocode:
b = floor(e) // 2
c = floor(π) // 3
z = b * b * c * c // 36
H = z * b // 72
d = c * π * π // 29.6088
E = H + d // 101.6088
L = z * c // 108
O = L + c // 111
C = 2 * 3 * e * e // 44.3343
S = z - π // 32.8584
W = C + C // 88.6686
W = W - φ // 87.0506
R = O + c // 114
D = E - 1 // 100
X = S + 1 // 33
Print( H, E, L, L, O, C, S, W, O, R, L, D, X )
HPPPL, 44 43 bytes
HP Prime Programming Language for the HP Prime color graphing calculator.
export h()begin print("Hello, World!");end;
(golfed down by one byte, thanks to kirbyfan64sos!)
Output:
This is a full program that you call by entering h to start it.
If you just want to have the output to the terminal, then a shorter (22 bytes) version in Home Mode works, too:
print("Hello, World!")
A free emulator is available here: http://www.hp-prime.de/en/category/13-emulator
Piet, 15x15(225) 13x15(195) codels
I think Piet program size is counted by codels. If someone wants to know the size in bytes anyway, I could shrink it down to 495 bytes(15x15 codels) and 476 bytes(13x15 codels) using PNGGauntlet.
Codel size 10 for better visibility.
13x15 version:
First version (15x15):
I was a bit lazy with this solution. I should be able to golf it down a bit more. This solution fills up the stack with ASCII-32 and reads it out in a loop (ASCII+32).
Output:
D:\codegolf\Piet\npiet-1.3a-win32>npiet "Hello World codegolf.png"
Hello, World!
D:\codegolf\Piet\npiet-1.3a-win32>
Fishing, 37 bytes
v+CCCCCCCCCCCCCCCC
`Hello, World!`N
I don't think there's anything to golf beyond the example listed on the esolangs page, so I didn't really write this myself. Hence, community wiki.
MagiStack, 22 bytes
"!dlroW ,olleH"|,?0=_@
Note that the reference implementation will print a leading linefeed, because it reads the filename interactively. This is not part of language specification.
How it works
"!dlroW ,olleH" Push those character on the stack (last on top).
| Set marker.
, Print a character from the stack and pop it.
? Push the stack's length.
0= If the length is zero:
_ End the program.
@ Go back to the marker.
Aheui, 177 bytes
밣밢따빠빠빠맣밤밢따다빠빠빠밠타맣맣맣받다맣밠밤따타맣밤밣따맣받발따다빠맣밦밤따다빠빠맣받다맣받타빠맣밣타빠맣받나맣희
LMNtal, 35 bytes
io.use.io.print("Hello, World!",_).
A weird programming language from Japan that seems to be inspired by Prolog.
C#, 85 67 bytes
class P{static void Main(){System.Console.Write("Hello, World!");}}
I guess it cannot get worse. Did not even beat Java this time.
Prolog, 23 bytes
write('Hello, World!').
Cardinal, 15 bytes
%"Hello, World!
Loader, 22 bytes
printf "Hello, World!"
KEMURI, 65 bytes
`^^^^"^^'"'^'"'"^^`^^'^''^"^^^^^^''^'"''"^^`^^^^^'"^^'^'^''^'^'^|
There's a KEMURI to C compiler available here if you'd like to test.
KEMURI is stack-based, and has the following 6 instructions:
~ Pop byte and push its NOT
^ Pop two bytes and push their XOR
" Duplicate top of stack
' Rotate top three of stack (top becomes third)
` Push the ASCII values of "Hello, world!"
| Output stack as ASCII
Note that ` pushes "Hello, world!" with a lowercase w. This means that the shortest "Hello, world!" program is
`|
but that doesn't mean that the best "Hello, World!" program, with an uppercase w, will be particularly short.
To aid our search for the best "Hello, World!", here are a couple of observations:
|empties the stack, so we will only need it exactly once, as the very last character in the program.~is useless, since NOT will flip the most significant bit to 1, which no printable ASCII character needs.- We will never need to duplicate with
"if the top two stack elements are the same, since:- Rotating three identical elements is a no-op.
- The only way to reduce the stack size is with
^XOR. XOR of two identical elements just introduces a 0 and XOR 0 is a no-op. - "Hello, World!" contains neither a triple letter nor ASCII 0.
This means that we only need to look at the four instructions ^"'`. To piece together the "Hello, World!", I looked at programs which contain a single `, at the very start. This gives a bunch of "jigsaw pieces" which we can fit together to form the whole message. There's no guarantee that this approach is optimal, but the search space is pretty big, so any better solution will probably need to be a bit more intelligent.
The pieces I managed to obtain were (<sp> is trailing space):
World! `^^^^^"^^^|
orld! `^^^^^^^"^^|
rld! `^^^^^^^^"^^|
ld! `^^^^^^^^^"^^|
d! `"^^^^^^^^^^^^|
World! `^^^^^"^'"'^'^|
<sp> `^"^^^^^^^^^^^^|
! `^^^^^^^^^^^"^^|
H `^^^^^^^^^^'^"^^|
, `^^^^^^^^^^''"^^^|
d `^^^^^^^^^^''^"^^|
o `^^^^''^"^^^^^^^^|
e `"^^^^^^'"^^^^^^^^|
W `^"^^^^^^'"^^^^^^^|
l `^^"^^^^'"^^^^^^^^|
, World! `^^^^"^^'"'^'"'"^^|
ld `^^^^^^^^^"^^''"^^|
ll `^^"^^^^'"^^^^^^^^"|
r `^^^^^^'"^^^^'^"^^^|
rl `^^^^^^'"^^^^''"^^''^|
He `^^^^^'"^^'^'^''^'^'^|
el `^^"^^^^^^^^''"^^''"^^|
o, `^^'^"^^^^"'^'^'^'^'^'^|
Wo `^^^^"^^^'"^^'^''^''^''^|
,<sp> `^^^^^'^'^'^''^''^'"'^'^|
lo `^^^^^^^"^^'"^^''"^^''"^^|
or `^^^^^^'^"^^''"^^''"^^''^|
llo `^^'^''^"^^^^^^''^'"''"^^|
ell `^^"^^^^^^^^''"^^'"''"^^''|
W `^"^^^^^^''^''^''^''^''^"'^|
The program at the top of the post was formed by combining the He, llo and , World! pieces.
az, 16 bytes
"Hello, World!".
Staq, 15 bytes
"Hello, World!"
Output:
Executing D:\codegolf\Staq Hello World codegolf.txt
Hello, World!
Execution complete.
>
Perl 6, 18 bytes
say"Hello, World!"
I'm pretty sure this is as short as you can get, please let me know if there's any improvements that can be made.
Microscript, 17 bytes
"!dlroW ,olleH"ah
UNBABTIZED
:72.:101.:108.:108.:111.:44.:32.:87.:111.:114.:108.:100.:33
:x prints x as a character and . acts as a statement separator.
The official interpreter is written for Python 2.2. You can use it in modern versions of Python by prepending the line
# coding: latin1
Maxima, 23 bytes
print("Hello, World!")$
23, 52 bytes
17,13,72,101,108,108,111,44,32,87,111,114,108,100,33
This uses 23.dezsy notation: 17,13 prints the 13 integers that follow as characters.
Try it online here. (Don't forget to replace the example with the above source code.)
99, 283 bytes
999 9 9
99 99999999 999 9
99
99 99999 9 999 9
99
99 99 999 999999
99
99
99 9999999 9999 999 9
99
99 99 9999999 9 999 9 999 9 999 9
99
99 99 999999 9 999999 9
99
9999
99 99999 999 999999 999 9
99
99 9999999 9999 9 999 9
99
99 99 999999 9
99
99 99 999999 999 9
99
99 99999 9999999 9
99
This was handcrafted so it is very likely suboptimal. Someone should write a metagolfer...
The following table has been quite useful writing 99 code by hand:
Variable /9%128 Can print?
9 1
99 11 !
999 111
9999 87 !
99999 103
999999 7 !
9999999 71
99999999 71 !
All further rep-digits of 9 also yield 71 when taken modulo 128 (after dividing by 9).
MoonScript, 20 bytes
print"Hello, World!"
123, 282 267 bytes
22221121121112112222222211211112111211211222222221121121133121121312121122222222111211213
31211213122222222111211332113312112222221112112331123322222221111211111211222221111211211
22222222112111112112112112222222111112112112112222213312112131222222221121113321133121121
The newlines are only for cosmetic purposes. I'm fairly sure that this is not optimal.
Here is a slightly more readable (and also runnable) version:
H 22221121121112112
e 2222222112111121112112112
l 22222221121121133121121312
l 12112
o 22222221112112133121121312
, 2222222111211332113312112
2222211121123311233
W 222222211112111112112
o 222211112112112
r 2222222112111112112112112
l 222222111112112112112
d 2222133121121312
! 2222222112111332113312112
1
I started out by constructing an optimal linear code (i.e. one which doesn't use 3s which allow for loop). That is quite simple: for each character, determine which bytes to flip from the last one. Move to the right-most character that has to be flipped (with a series of 2s), then move back to the left with 1 for each byte that has to be flipped and 121 for each byte that shouldn't be flipped. Finally move to the writing index -2 and print the character with 21. Repeat. At the very end, move to index -1 with a trailing 1 in order for the program to terminate.
This jumble of 1s and 2s was generated with this CJam script, which you can run online here:
0c"Hello, World!"+2ew::^{
_{2b8Ue[1a/W<1a*_,'2*'1@W%{'1"121"?}/"12"}{;"12112"}?
}/
'1
Then I removed some repetition of ones and twos by inserting loops by hand. 3 works as follows: if the instruction pointer is to the left of index 0, skip the 3. Otherwise, jump to the previous 3 if the current bit is 1 or jump ahead to the next 3 if the bit is 0. So simple loops, repeating a code segment x can be constructed as 33x33 or 33x3 (depending on whether the termination condition is "current bit is zero" or "moved to a negative index"). Then I started enumerating some relevant simple loops and when they are applicable. I've been using these loops only when moving back through the bits to change one character code to the next. If we can use a loop here depends both on the current state of a bit a and the target state b. I'll be denoting this combined state of each position as [a b]. Now here are the relevant loops and the required position patterns in a regex-like syntax:
121: (^|[0 0]|[0 1]) ([1 1])+ [0 0]
112: (^|[1 1]) ([0 0])+ ([0 1]|[1 1])
211: ([0 0]|[0 1]) ([1 1])+ [0 0] ([0 0]|[1 1])
121121: ([0 0]|[0 1]) ([1 1] ([1 1]|[0 0]))+ [0 0]
Listing out the combined states for each character, we can annotate the potential loops and how many bytes they'll save (each ___ annotates the character above; sometimes multiple loops are possible):
H [[0 0] [0 1] [0 0] [0 0] [0 1] [0 0] [0 0] [0 0]]
e [[0 0] [1 1] [0 1] [0 0] [1 0] [0 1] [0 0] [0 1]]
l [[0 0] [1 1] [1 1] [0 0] [0 1] [1 1] [0 0] [1 0]]
__________________121 -2
________________________121121 -3
l [[0 0] [1 1] [1 1] [0 0] [1 1] [1 1] [0 0] [0 0]]
o [[0 0] [1 1] [1 1] [0 0] [1 1] [1 1] [0 1] [0 1]]
__________________121 -2
__________________211 -2
________________________121121 -3
, [[0 0] [1 0] [1 1] [0 0] [1 1] [1 1] [1 0] [1 0]]
________________________211 -2
[[0 0] [0 0] [1 1] [0 0] [1 0] [1 0] [0 0] [0 0]]
____________112 -2
W [[0 0] [0 1] [1 0] [0 1] [0 0] [0 1] [0 1] [0 1]]
o [[0 0] [1 1] [0 1] [1 0] [0 1] [1 1] [1 1] [1 1]]
r [[0 0] [1 1] [1 1] [0 1] [1 0] [1 0] [1 1] [1 0]]
l [[0 0] [1 1] [1 1] [1 0] [0 1] [0 1] [1 0] [0 0]]
d [[0 0] [1 1] [1 1] [0 0] [1 0] [1 1] [0 0] [0 0]]
__________________121 -2
________________________121121 -3
! [[0 0] [1 0] [1 1] [0 0] [0 0] [1 0] [0 0] [0 1]]
________________________211 -2
Now I just picked the most profitable loop in each case and inserted it into the code.
I'm fairly certain that one could find a couple more loops that I've overlooked. But I also think that it's possible to find a significantly shorter solution that isn't based on anything a human would come up with. So far I have no idea how to efficiently search for such a solution automatically though, so I'll leave it at that for now.
Q, 16 bytes
1"Hello, World!"
Just Y to go and we have the alphabet :)
Bit of a late update, but thanks to Mauris, we now have at least one language for every letter of the alphabet :D
Thanks @AaronDavies
Snowman, 18 bytes
("Hello, World!"sP
Explanation
( sets variables a and f active. Then the string Hello, World is pushed to the first active variable, in this case, a. Then sP (String Print) prints the string from the first active variable with a string in it.
Var'aQ, 20 bytes
"Hello, World!" cha'
Var'aQ nIv rur Hol. 'oH rut lo' jIH ngaj-ghItlh.
Note: ghu'vam laH mugh jIH vaj DaneH'a'.
Glypho, 480 bytes
In the "shorthand" format, it's 120 bytes:
1d+d1+d*+ddd++ddd++1+d11+d*d++d11+1+d++d1-dd+++d1<d>+-d++11+d*d*d+<d>d+d+d<d>+d+1+d1-dd+++d1-<d>+d*1+11+1+d+d*d+<d-+>[o]
An example conversion to "true" Glypho (using the translation of the Java interpreter, which differs slightly from that documented in the esolangs.org page) is:
v># # :: < < <v# #*>*> ##:#**#,<,<: : > > * *v>>v # ##,#, + +:++: ++ ##
*<<*,^,^<<#v<<v#v::v< < <,, +,+,+>>+*,,*+*+*,,*>**^v# #,,:^#vv#>+>+ << > >, , ++*>:
:v<v<^#^#v::v>::>v**v # #::>^>+>>:>:>>>*>>##>*^ *# # vv ,::,<<>:++
*vv*v:v:^vv< > > ,,>>:>: << >+>>^ ^ ^^*^+,+,#::#*:*:: :v v , # #<<#<#**#^,^,+##+**
+**+,:,:::>*<^v< v v+^+^*^^*+<<++##+v#v#++<>:< :* **+ + ^ * *<+<+< *vv+<:^^:::
^+*<<***<^+ ++:+:^##^:>:>+::< > >#>># * >,>, :^ ^>>^##<#,<,*^ *<:<
(using Windows line terminators \r\n) where I tried to disguise it as a 2D language for the Programming Language Quiz.
The basic approach is to push onto the stack a 0 followed by the codepoints in reverse order, and then print them with the loop [o]. In order to golf the pushing, I first push 11 and then I can push a new 11 whenever I want with <d>; the final <d-+> replaces that 11 on the bottom of the stack with the desired 0.
I experimented with various values on the bottom of the stack, and 11 is the only one for which my brute-force searcher was able to find expressions for each of the characters which were no more than 11 bytes each. (12 bytes was taking too long).
REGXY, 16 bytes
//Hello, World!/
The implementation on the Esolang page generates Perl code, which will attempt to read from STDIN.
Input may (and has to) be empty for correct output, but STDIN has to be closed for the code to run.
Verification
$ perl -e "$(perl regxy.pl hello.xy)" <&-
Hello, World!
4, 117 bytes
3.6000160103602136033260433605446067260787008070200908000120902111120111011015065095105105115055035075115125105085044
How it works
Generating characters with a code point below 100 is straightforward.
I've managed to create the others (derol) with three assignments and five additions/subtractions, which I believe is optimal.
3. Begin the program.
6 00 01 Set cell[ 0] to 1.
6 01 03 Set cell[ 1] to 3.
6 02 13 Set cell[ 2] to 13.
6 03 32 Set cell[ 3] to 32 = ' '.
6 04 33 Set cell[ 4] to 33 = '!'.
6 05 44 Set cell[ 5] to 44 = ','.
6 06 72 Set cell[ 6] to 72 = 'H'.
6 07 87 Set cell[ 7] to 87 = 'W'.
0 08 07 02 Set cell[ 8] to cell[ 7] + cell[2] = 87 + 13 = 100 = 'd'.
0 09 08 00 Set cell[ 9] to cell[ 8] + cell[0] = 100 + 1 = 101 = 'e'.
0 12 09 02 Set cell[12] to cell[ 9] + cell[2] = 101 + 13 = 114 = 'r'.
1 11 12 01 Set cell[11] to cell[12] - cell[1] = 114 - 3 = 111 = 'o'.
1 10 11 01 Set cell[10] to cell[11] + cell[1] = 111 - 3 = 108 = 'l'.
5 06 Print cell[ 6] = 'H'.
5 09 Print cell[ 9] = 'e'.
5 10 Print cell[10] = 'l'.
5 10 Print cell[10] = 'l'.
5 11 Print cell[11] = 'o'.
5 05 Print cell[ 5] = ','.
5 03 Print cell[ 3] = ' '.
5 07 Print cell[ 7] = 'W'.
5 11 Print cell[11] = 'o'.
5 12 Print cell[12] = 'r'.
5 10 Print cell[10] = 'l'.
5 08 Print cell[ 8] = 'd'.
5 04 Print cell[ 4] = '!'.
4 End the program.
Malbolge, 112 bytes
('&%:9]!~}|z2Vxwv-,POqponl$Hjihf|B@@>,=<M:9&7Y#VV2TSn.Oe*c;(I&%$#"mCBA?zxxv*Pb8`qo42mZF.{Iy*@dD'<;_?!\}}|z2VxSSQ
I'm going to see if there's a shorter one. Got a better computer since last time, so I can generate quite a bit faster.
For show, here's "Hello World!" without the comma.
(=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc
LOLCODE, 35 bytes
HAI !
VISIBLE"Hello World!"
KTHXBYE
HAI !initializes the code (just usingHAIwith a newline results in error)VISIBLE"Hello World!"printsHello, World!KTHXBYEends the program.
0(nop^), 19 Bytes
1$(Hello, World!")`
Time to start completing the numbers :)
1 # push a non zero to top of stack
$ # duplicate top of stack
( ) # Push characters to pointer address
Hello, World! # Hello, World!
" # Pop string and save
` # Output string if top of stack not 0
small s.c.r.i.p.t., 15 bytes
Hello\, World\!
Using the OpenCOBOL interpreter, you have to pass this code as a command-line argument. Reading the from a file does weird things.
I'm not entirely sure why, but this works when reading from a file:
Hello
\, World\!
Muriel, 16 bytes
."Hello, World!"
Tcl, 19 bytes
puts Hello,\ World!
I think this can get smaller than it already is.
Common Intermediate Language, 126 123 bytes
.assembly H{}.method static void M(){.entrypoint
ldstr"Hello, World!"
call void[mscorlib]System.Console::Write(string)
ret}
With proper indentation:
.assembly H {}
.method static void M()
{
.entrypoint
ldstr "Hello, World!"
call void[mscorlib] System.Console::Write(string)
ret
}
3var, 65 bytes
iiisa-<*>P/>is+iP>PPm-iiiPi<O/<m/>+<O+d<+<O+><kkkOP->siskkkOP</>P
Here's a 3var program found by brute force. Note that this might not be optimal since I assume that we'll only ever need numbers in the range 0-150, for efficiency reasons. I'll probably address this in a later edit.
3var is a Deadfish variant which has, well, three variables A, B and R. The relevant commands are:
Command A B other
-----------------------------------------------------------
Increment i a
Decrement d k
Square s m
Output as char P O
Copy from R > <
Set R = A+B +
Set R = A-B -
Set R = A*B *
Set R = A div B /
And here's a trace:
Line A B R Output
----------------------------------------------------------------
iiisa- 9 1 8
<* 9 8 72
>P 72 8 72 H
/> 9 8 72 H
is+ 100 8 108 H
iP 101 8 108 He
>PP 108 8 108 Hell
m- 108 64 44 Hell
iiiP 111 64 44 Hello
i<O 112 44 44 Hello,
/<m 112 4 2 Hello,
/> 28 4 28 Hello,
+<O 28 32 32 Hello,
+d< 27 60 60 Hello,
+<O 27 87 87 Hello, W
+>< 114 114 114 Hello, W
kkkOP 114 111 114 Hello, Wor
-> 3 111 3 Hello, Wor
siskkkOP 100 108 3 Hello, World
</ 100 3 33 Hello, World
>P 33 3 33 Hello, World!
Inform 6, 24 bytes
[Main;"Hello, World!";];
This must be compiled to Z-code, not Glulx.
Inform 6 has the neat feature that bare string literals are compiled into a print statement followed by a return true statement.
Gema, 21 bytes
\A=Hello, World\!@end
(Without input it would wait forever without terminating. Hence the need for explicitly @end.)
Brainfuck, 92 (hirose)
->+++++>>>+>+>+>-->>++[+++[>++++++++<-]<+]>>.-[>->>>>>[+<]>--]>+>--.->---..>+++>.>>>++++[.<]
This is a slight modification of hirose's 92-byte solution for the lowercase-w version of the problem on Anarchy Golf.
Changing ++ to -- conveniently subtracts 32 from the cell that holds w, turning it into W.
Brainfuck, 95
->>++>+++>+>---->--[++++++[>+++++++++++<-]-<+]>>----.>+++.>-..+++.>>>.<.<.<.+++.------.<-.>>>+.
For this solution, I used code that I wrote for this problem on SPOJ and touched up the output a bit by hand.
Note: Both solutions are compatible with Alex Pankratov's bff (brainfuck interpreter used on SPOJ and ideone) and Thomas Cort's BFI (used on Anarchy Golf).
Fueue, 47 bytes
72 101 108 108 111 44 32 87 111 114 108 100 33H
COBOL, 55 bytes
PROGRAM-ID.H.PROCEDURE DIVISION.DISPLAY"Hello, World!".
Thankfully not quite as verbose as some ancient bloated languages like Java.
Fortran, 28 bytes
print'("Hello, World!")'
end
You can't write print*,"Hello, World!" because there's a leading space in the default print format. Thus, we pass in our own format that simply contains a constant string.
PARI/GP, 22 bytes
print("Hello, World!")
Beatnik, 148 Bytes
It could probably be done better, but this is one of the first times I used a stack based language.
Beatnik determines commands and values based in the scrabble score for the words, but it (thankfully) doesn't check them against a dictionary.
K QQQQQQQG ZD XO K QQJA KD ZD XO K KG KD ZD ZD ZD XO XO K B KD ZD XO K QQQQF ZD ZD XO K QQQD XO K A Z KD XO ZD XO K B KD XO ZD XO K J Z XO K QQQB XO
Python interpreter can be found here
A breakdown of what I've done
K QQQQQQQG # push 72 72
ZD # duplicate 72 72
XO # output H 72
K QQJA # push 29 29 72
KD # add 101
ZD # duplicate 101 101
XO # output e 101
K KG # push 7 7 101
KD # add 108
ZD # duplicate 108 108
ZD # duplicate 108 108 108
ZD # duplicate 108 108 108 108
XO # output l 108 108 108
XO # output l 108 108
K B # push 3 3 108 108
KD # add 111 108
ZD # duplicate 111 111 108
XO # output o 111 108
K QQQQF # push 44 44 111 108
ZD # duplicate 44 44 111 108
ZD # duplicate 44 44 44 111 108
XO # output , 44 44 111 108
K QQQD # push 32 32 44 44 111 108
XO # output <space> 44 44 111 108
K A # push 1 1 44 44 111 108
Z # subtract 43 44 111 108
KD # add 87 111 108
XO # output W 111 108
ZD # duplicate 111 111 108
XO # output o 111 108
K B # push 3 3 111 108
KD # add 114 108
XO # output r 108
ZD # duplicate 108 108
XO # output l 108
K J # push 8 8 108
Z # subtract 100
XO # output d
K QQQB # push 33 33
XO # output
Javascript (ES6), 20 bytes
alert`Hello, World!`
Javascript ES6 features are awesome when it comes to code golf!
Here, the use of templates allows for a two byte savings by removing parentheses.
How it works
This syntax is known as tagged templates, and it is not the same as merely calling a function with a single string as a parameter, as I initially thought. The function, in this case alert, is called with an array of the string portions of the template and an array of the inserted values. Since there were no inserted values and only a single string portion of the template, alert is called with the array ["Hello, World!"] as its sole (defined) parameter. alert displays this, conveniently, as Hello, World!
Try replacing alert with console.log, and it won't work! You'll get Array [ "Hello, World!" ] instead, since the console doesn't follow the same display rules as alert.
pb, 80 bytes
b[72]>b[101]>b[108]>b[108]>b[111]>b[44]>>b[87]>b[111]>b[114]>b[108]>b[100]>b[33]
Super naive. I tried to golf it down by keeping 108 (the character code for "l") in T, either by doing t[108] at the beginning of the program or t[B] after the first time it was printed, but each attempt ended up exactly the same length.
Note that pb doesn't require you to write b[32]. Any blank spaces on the canvas (with at least one non-blank space to the right of it) are automatically printed to the terminal as a space.
Erlang, 63 bytes
Save as h.erl, then compile with erl -s h m, I think.
-module h.
-export[m/0].
m()->io:fwrite("Hello, World!").
CoffeeScript, 21 bytes
alert "Hello, World!"
or console.log "Hello, World!", if that's closer to STDOUT for your tastes.
C--, 155 bytes
target byteorder little;import puts;export main;section"data"{s:bits8[]"Hello, World!\0";}foreign"C"main(){foreign"C"puts("address"s);foreign"C"return(0);}
Unfortunately, the only known C-- compiler, Quick C-- is no longer maintained. It's a pain in a neck to build, but it is possible...
Dart, 31 bytes
main(){print("Hello, World!");}
Idris, 36 bytes
main:IO();main=putStr"Hello, World!"
Idris is sort of like Haskell, but top-level definitions need a type signature.
Trigger, 40 bytes
HHHeeelll#lllooo,,, WWWooorrrlllddd!!!
Trigger is pattern-based, so commands are symbol independent. Three of the same character outputs that character to STDOUT.
The # is to introduce a break in the middle so that the double l doesn't turn into a six-long pattern, which will not decompose as intended. A single char is a NOT operation, but it is irrelevant for our purposes.
Sinclair BASIC, 16 bytes
PRINT "Hello, World!"
Note: PRINT on the Sinclair Spectrum is written with a single keystroke (p) and takes a single byte. The code above works on the "command line".
You can try it online at http://torinak.com/qaop. Keystrokes for that emulator: p shift-' shift-h e l l o , space shift-w o r l d ctrl-1 shift-'. Don't press shift-1 as that seems to delete the whole line.
Depending on your definition of a "full program", this may or may not be acceptable. Especially for bigger programs, you would need to use line numbers, type the whole program and then use the RUN command (keystroke r). In that case, prepend a 1 to the above code (for 1 extra byte).
REBOL, 26 bytes
REBOL[]prin"Hello, World!"
REBOL scripts needs a valid header; the first seven bytes of this program are the simplest possible header. Then, prin prints a value without a trailing newline.
awk, 25 bytes
END{print"Hello, World!"}
bc, 16 bytes
"Hello, World!"
(bc requires a trailing newline - hence 16 instead of 15)
RPython, 60 bytes
def e():print'Hello, World!';return 0
target=lambda*_:e,None
GNU Make, 27
$(info Hello, World!)
a:;@:
TvmJIT, 29 bytes
(!call print "Hello, World!")
Yorick, 21 bytes
write,"Hello, World!"
Yorick is a fast programming language for scientific number-crunching and graph-potting. It's relatively unknown and doesn't distinguish itself too much from other languages like R, but this Y-language completes the alphabet. Whoo!
Sed, 14 bytes
I'm hoping the sed exemption from no-input-rules applies here. If so, we can do:
cHello, World!
All that is required as input is one empty line.
Burlesque, 17 bytes
,"Hello, World!"Q
The leading , tells Burlesque to ignore standard input. "Hello, World!" pushes a string to the stack, and Q formats it for display without quotes.
Vim, 17 bytes
iHello, World!{ESC}ZZ
Where {ESC} is a raw escape byte \x1b.
This will switch to insert mode (i), write Hello, World!, leave it (ESC), and save+quit (ZZ). An environment like vimgolf or anarchy golf has to do the output part for you, as Vim is, of course, just a text editor.
Unlambda, 36 bytes
`.!`.d`.l`.r``.W`. `.,``.l`c`.H.e.oi
Unlambda is a minimal functional programming language based on combinatory logic. It uses prefix notation; `fx is an application of f to x. Specifically, .c is a primitive that takes some v, prints the character c as a side-effect, and returns v. Thus, the usual program would be to take i, apply .H to it, apply .e to it, etc., giving you `.!`.d`.l...
This 36-byte solution is due to irori on anarchy golf. It uses the primitive c, which I think is kind of like call/cc, to avoid having to write .o and .l twice. I have no idea how it precisely works. The sort-of equivalent Lisp syntax would be:
(print-!
(print-d
(print-l
(print-r
((print-W
(print-space
(print-comma
((print-l
(call-cc (print-h print-e)))
print-o))))
id)))))
Prelude, 38 bytes
92480969393782833909095806(^+^+^^+++!)
If you're using the Python interpreter, you'll need to make sure that NUMERIC_OUTPUT is set to False.
Prelude is a relatively simple stack-based language, with 0-9 pushing the corresponding single digits and the only arithmetic being addition and subtraction. In particular, there is no multiplication.
To make the most of the single digit pushing behaviour, I took a look at the code points in various bases. For base 12, we get this:
[[6 0] [8 5] [9 0] [9 0] [9 3] [3 8] [2 8] [7 3] [9 3] [9 6] [9 0] [8 4] [2 9]]
Everything here is a single digit - that's perfect! This means that we can encode each character using two digits via base 12, e.g. H -> 72 (base 10) -> 60 (base 12). That's what the long string of 26 digits at the beginning is for.
The back half of the code then needs to take each pair of digits a, b and give 12*a+b. But remember, Prelude doesn't have multiplication! What it does have, however, is ^ and v, which get the top stack values from the program rows ("voices") above and below. Since this is a one-line program, ^ effectively duplicates the top of the stack, allowing us to do ^+^+^^++ to multiply the top stack element by 12. We then add the second digit with + and output with !. All of this is wrapped in (), which is a BF-like loop which executes while the top stack element is nonzero.
Betterave, 16 bytes
$"Hello, World!"
Betterave is unusual in that it has the whole "one character = one command" thing going on that many esolangs have, but it uses prefix notation, and the program is one big expression à la Scheme, as opposed to being tape- or stack-based. Here, $"Hello, World!" is just like a function call to print.
><>, 23 bytes
"!dlroW ,olleH"l?!;oe0.
><>, or "Fish", is a 2D stack-based language like Befunge. Here's the breakdown:
[setup]
" Start string parsing
!dlroW ,olleH Push each of these chars one-by-one onto the stack
" Stop string parsing
[main loop]
l?!; If the length of the stack is 0, halt
o Otherwise, output the top of the stack as char
e0. Jump back to just before the l
D, 51 bytes
import std.stdio;void main(){puts="Hello, World!";}
In D, a=b is sometimes equivalent to a(b), allowing us to shave off one more byte than you might expect.
Rail, 27 bytes
$'main'
-[Hello, World!]o#
Rail is a 2D language where the instruction pointer is a train that runs on, well, rails. Execution begins from the main function, starting from the $ and initially moving southeast.
The first command encountered is -, which makes the train turn so that it's moving eastward. Then we push a string, output with o and terminate with #.
Frink, 23 bytes
println["Hello, World"]
I only know of this through my searches for programming apps in the Play Store.
Underload, 16 bytes
(Hello, World!)S
Underload is the Brainfuck of stack-based languages. (x) pushes the string x to the stack, and S prints the value on top of the stack.
K, 18 bytes
`0:"Hello, World!"
Octave, 19 bytes
disp"Hello, World!"
Clojure, 22 bytes
(print"Hello, World!")
Common LISP, 22 bytes
(princ"Hello, World!")
Curry, 26 bytes
main=putStr"Hello, World!"
Ada (GNAT), 54 bytes
procedure gnat.io.a is begin put("Hello, World!");end;
This trick is from anarchy golf: by defining your program in the GNAT.IO namespace, you have access to the put function, which is shorter than the usual way to print strings.
Objective-C, 30 bytes
main(){puts("Hello, World!");}
Mouse, 19 bytes
"Hello, World"33!'$
Oddly enough, ! inside of a string makes a newline, so we have to work around that by getting the ASCII code for !, which is 33, and outputting that as a character.
Io, 21 bytes
"Hello, World!" write
Julia, 22 bytes
print("Hello, World!")
Short and sweet.
Ook!, 949 Bytes
Just translated one of the Brainfuck answers here.
Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook! Ook! Ook? Ook! Ook! Ook! Ook? Ook. Ook. Ook. Ook? Ook! Ook. Ook? Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook? Ook! Ook! Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook! Ook. Ook? Ook. Ook! Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.
GolfScript, 15 bytes
"Hello, World!"
Pascal, 32 bytes
begin write('Hello, World!')end.
PDP-11 (Unix) Assembly, 33 38 bytes
Source (No trailing newline required):
sys 4;10;15;sys 1;<Hello, World!>
Binary output:
0000000 000407 000026 000000 000000 000000 000000 000000 000000
0000020 104404 000010 000015 104401 062510 066154 026157 053440
0000040 071157 062154 000041 000000 000000 000000 000000 000000
0000060 000000 000000 000000 000000 000000 000000
0000074
The output is zero-padded to 60 bytes for some reason, but I know enough about the architecture to know that it doesn't matter and can be considered 38 (maybe 37) bytes. Unfortunately, while this works on the terminal, it actually prints to STDIN.
So, a correct program (I believe it exits with status 1, but that's not important) is:
5200;sys 4;12;15;sys 1;<Hello, World!>
That 5200 in the beginning is actually an "inc r0" instruction, but writing it in octal is shorter. Coincidentally, the length of this source code is also 38 bytes.
0000000 000407 000030 000000 000000 000000 000000 000000 000000
0000020 005200 104404 000012 000015 104401 062510 066154 026157
0000040 053440 071157 062154 000041 000000 000000 000000 000000
Output clocks in at 20 non-zero words, or 39 non-zero bytes, and this time the assembler doesn't insert quite as much padding so the actual output file size is 48 bytes.
Unobfuscated source for the same program:
inc r0
sys write; 0f; 13.
sys exit
0: <Hello, World!>
If you actually assemble this source the output has an extra nonzero byte (value 2) in the second-last word of the output, probably something to do with the fact that named symbols were used for the system calls.
VBScript, 28 Bytes
WScript.Echo "Hello, World!"
This (should be) the shortest that prints to STDOUT (i.e., the command prompt window), when executed via command prompt wscript .\hello-world.vbs or cscript //nologo .\hello-world.vbs (the //nologo is necessary to prevent copyright info from being displayed). If you just double-click it, you'll get a pop-up message box instead, similar to the shorter example, below, at 22 bytes:
MsgBox "Hello, World!"
When executed, this second option will output a pop-up message box displaying the text inside the quotes. Since it's not technically STDOUT, and we do have a legitimate way to display STDOUT, we'll count the longer version instead.
XSM, 28 bytes
<print>Hello, World!</print>
FALSE, 15 bytes
"Hello, World!"
Element, 17 bytes
Hello\,\ World\!`
The ` outputs the string, while the \s are used to escape out of other characters.
Applescript, 15 bytes
"Hello, World!"
Normally a fairly verbose language, for this one this is all that is required.
Packed 7-bit ASCII, 12
fÍëWßËfD
Since Markdown eats some of the characters, here's a hexdump:
$ xxd hello.ascii
0000000: 9197 66cd eb10 57df cb66 4420 ..f...W..fD
And yes, the trailing space is necessary.
Packed 7-bit ASCII is created by taking 8-bit ASCII (the normal kind), removing the high zero bit from each byte, packing the remainder, and then padding it out with trailing zero bits.
According to this site, this character encoding is used by "a specific US MIL STD message header format", making it a real thing.
Rust, 34 bytes
fn main(){print!("Hello, World!")}
Enema, 21 bytes
"!dlroW ,olleH"[DZBO]
How it works
"!dlroW ,olleH" Push those characters (including a null byte) on the stack.
[ Infinite loop:
D Duplicate the topmost element on the stack.
Z If it is non-zero, skip the next instruction.
B Break out of the loop.
O Output as a character.
]
APL, 17 bytes
⎕←'Hello, World!'
This is the portable way of printing from a full program.
In the ngn/apl demo, you can omit the ⎕← for 15 bytes.
Bash, 18 bytes
echo Hello, World!
This works when invoked as a full program or with history expansion disabled (default for scripts).
golflua, 16 bytes
w"Hello, World!"
Algoid, 28 bytes
text.output("Hello, World!")
Now that's just boring in such a fun language... Here's a slightly longer version, let's get some colours going for 104 bytes:
algo.hide()
algo.setColor(algo.color.GREEN)
algo.setBgColor(algo.color.DARK_RED)
algo.text("Hello, World!")
Okay I've finished for the day now :)
STATA, 17 bytes
di"Hello, World!"
Stackstack, 20 Bytes
This is a stack-based language not focused on golfing! Looks similar to Forth, and was made two years ago.
"Hello, World!"print
C++, 59 bytes
#include <iostream>
int main(){std::cout<<"Hello, World!";}
Gibberish, 17 Bytes
Surprisingly, the shortest answer I could make is not gibberish at all.
[Hello, World!]eo
Scala, 22 bytes
print("Hello, World!")
scala can run "scala scripts" which are not full program.
you can save the above to a file and execute in the shell scala file.scala, and it will execute (shortcut without saving a file: scala -e 'print("Hello, World!")').
a full ordinary scala program that prints hello world:
object H extends App{print("Hello, World!")}
Wordy, 1666 bytes
xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx x x x x x x x.xxx xxx xxx x x.xx x.x x x x x x x x x x x x x x x x.xxx xxx xxx x x x x x x x.xxx x x.xxx xxx xxx x x x x.xxx xxx x x x.xxx xxx xxx x x.xx x.x x x x.xx x.x x x x x x x x.xxx xxx xxx x x x x x x x.xxx x x.xxx xxx xxx x x x x.xxx xxx x x x.xxx xxx xxx x x.xx x.x x x x x x.xx x.x x x x x.xxx xxx xxx x x x x x x x.xxx x x.xxx xxx xxx x x x x.xxx xxx x x x.xxx xxx xxx x x.xx x.x x x x x x.xx x.x x x x x x x x x x x x.xxx xxx xxx x x x x x x x.xxx x x.xxx xxx xxx x x x x.xxx xxx x x x.xxx xxx xxx x x.xx x.x x x x x x.xx x.x x x x x x x x x x x x.xxx xxx xxx x x x x x x x.xxx x x.xxx xxx xxx x x x x.xxx xxx x x x.xxx xxx xxx x x.xx x.x x x x x x.xx x.x x x x x x x x x x x x x x x.xxx xxx xxx x x x x x x x.xxx x x.xxx xxx xxx x x x x.xxx xxx x x x.xxx xxx xxx x x.xx x.x x.xx x.x x x x x x x x x x x x.xxx xxx xxx x x x x x x x.xxx xxx xxx x x x x.xxx xxx x x x.xxx xxx xxx x x.xx x.x x.xxx xxx xxx x x x x x x x.xxx x x.xxx xxx xxx x x x x.xxx xxx x x x.xxx xxx xxx x x.xx x.x x x x x.xx x.x x x x x x x.xxx xxx xxx x x x x x x x.xxx x x.xxx xxx xxx x x x x.xxx xxx x x x.xxx xxx xxx x x.xx x.x x x x x x.xx x.x x x x x x x x x x x x x x x.xxx xxx xxx x x x x x x x.xxx x x.xxx xxx xxx x x x x.xxx xxx x x x.xxx xxx xxx x x.xx x.x x x x x x x.xx x.x x.xxx xxx xxx x x x x x x x.xxx x x.xxx xxx xxx x x x x.xxx xxx x x x.xxx xxx xxx x x.xx x.x x x x x x.xx x.x x x x x x x x x x x x.xxx xxx xxx x x x x x x x.xxx x x.xxx xxx xxx x x x x.xxx xxx x x x.xxx xxx xxx x x.xx x.x x x x x x.xx x.x x x x.xxx xxx xxx x x x x x x x.xxx x x.xxx xxx xxx x x x x.xxx xxx x x x.xxx xxx xxx x x.xx x.x x.xx x.x.
We can greet the World by executing the following instructions:
ASSIGN NOP LITERAL 16
OUTCHAR ADD MULTIPLY VALUE NOP LITERAL 4 LITERAL 8
OUTCHAR ADD MULTIPLY VALUE NOP LITERAL 6 LITERAL 5
OUTCHAR ADD MULTIPLY VALUE NOP LITERAL 6 LITERAL 12
OUTCHAR ADD MULTIPLY VALUE NOP LITERAL 6 LITERAL 12
OUTCHAR ADD MULTIPLY VALUE NOP LITERAL 6 LITERAL 15
OUTCHAR ADD MULTIPLY VALUE NOP LITERAL 2 LITERAL 12
OUTCHAR MULTIPLY VALUE NOP LITERAL 2
OUTCHAR ADD MULTIPLY VALUE NOP LITERAL 5 LITERAL 7
OUTCHAR ADD MULTIPLY VALUE NOP LITERAL 6 LITERAL 15
OUTCHAR ADD MULTIPLY VALUE NOP LITERAL 7 LITERAL 2
OUTCHAR ADD MULTIPLY VALUE NOP LITERAL 6 LITERAL 12
OUTCHAR ADD MULTIPLY VALUE NOP LITERAL 6 LITERAL 4
OUTCHAR ADD MULTIPLY VALUE NOP LITERAL 2 LITERAL 1
Wordy encodes all instructions as sentences, where the fraction of words that are longer and shorter than the rounded average selects the command.
The shortest sentences I could find for the used instructions are:
ASSIGN xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx x x x x x x x.
VALUE xxx xxx x x x.
ADD xxx x x.
MULTIPLY xxx xxx xxx x x x x.
OUTCHAR xxx xxx xxx x x x x x x x.
NOP xxx xxx xxx x x.
LITERAL xx x.
Wheat, 32 Bytes
Wheat is an esolang that is based on outputting and inputting. Only what has been output on a previous cycle can be input on the current one. The buffers last only one cycle; if the data of previous cycle is not read on current cycle, on the next cycle it can not be accessed, it will all be erased, replaced by the output of the current cycle (if any, otherwise the empty string is used).
output "Hello, World!"
terminate
LOLCODE, 22 bytes
VISIBLE"Hello, World!"
Works in interpreters that don't require the presence of HAI and KTHXBYE.
unc, 38 bytes
ZNVa[]<<chgf[L'uRYYb~ JbeYQ#']:if 5:>>
Javascript, 22 bytes
alert("Hello, World!")
You don't NEED semicolons in Javascipt!
J, 15 bytes
'Hello, World!'
No call to any write function needed.
Batch File, 19 Bytes
@echo Hello, World!
Short and to the point. You'd think you could golf off the @ at the beginning, but if you do you get the literal program echo'd out before the string is printed. This is why you'll see @echo off at the beginning of near every .bat file around.
Example without the @
C:\Tools\Scripts>.\hello-world.bat
C:\Tools\Scripts>echo Hello, World!
Hello, World!
Forth, 17 bytes
.( Hello, World!)
Help, WarDoq!, 1 byte
H
Not only does Help, WarDoq! have a built-in for most common spellings of the phrase, it even satisfies our usual definition of programming language.
Try it in the official online interpreter (code goes in Input).
R, 20 bytes
cat("Hello, World!")
Fission, 17 bytes
R"Hello, World!";
or
;"!dlroW, olleH"L
or any cyclic permutation of the two. In Fission, we need the R or L to release an atom and get control flow going. " toggles print mode, which just prints everything encountered until switched off. Finally ; destroys the atom to avoid an infinite loop.
BBC BASIC, 20 bytes
PRINT"Hello, World!"
Ahh, this was my first language :)
Ruby, 18 19 bytes
puts"Hello, World!"
Output wasn't quite right. Thanks Martin
GOTO++, 31 bytes
s=«Hello, World!»
GOTOPRINT()
This one is actually a bit interesting. There is a more intuitive way to output things in GOTO++, which would be this:
GOTOPRINTDUTEXTE()«Hello, World!»
This is however 35 bytes. GOTOPRINTDUTEXTE outputs its arguments to STDOUT (Du texte means some text in french). Note that the arguments of a function don't necessarily have to be inside the brackets, as long as they are to the right of the left bracket. So GOTOPRINTDUTEXTE()«Hello, World!» is just as valid as GOTOPRINTDUTEXTE(«Hello, World!»)
GOTOPRINT() on the other hand, outputs to STDOUT the very last variable modified by a =.
Zsh, 17 bytes
<<<Hello,\ World!
Pyth, 14 bytes
"Hello, World!
Doubt it'll get smaller than this in Pyth.



























