# The Programming Language Quiz

Congratulations to Dennis who won both the cops' and the robbers' challenge! Calvin's Hobbies has already delivered on his promise and wrote this challenge for Dennis for winning the robbers' challenge.

Notice: This challenge is closed for further cop answers as of 2015-09-01 02:00:00 UTC. Any new answers posted will not be eligible for winning and will not count towards the robbers' scores if cracked. However, you may still post new answers for the other users' enjoyment, so that there are still some puzzles available for future visitors. These new answers are included in the "Vulnerable Cops" section of the leaderboard and their non-competing status is marked separately.

Welcome to the Cops-and-Robbers edition of The Hello World Quiz! (If you've never played the quiz, feel free to try it out for a minute or 30. You don't need to have played it for this challenge though.)

## The Cops' Challenge

1. Choose a programming language. Valid languages must have either an English Wikipedia article, an esolangs article or a Rosetta Code article at the time this challenge was posted (note that the linked lists are not necessarily complete because they are curated manually). They must also satisfy our usual standards for programming languages, so things like HQ9+ are out. Lastly, there must be a free (as in beer) interpreter or compiler available for the language (at the time this challenge was posted).
2. Write a Hello World program. That is, write a full program in the chosen language which prints Hello, World! (exactly like that, i.e. this exact byte stream) and optionally a single trailing newline to STDOUT or closest alternative.

You must not assume a REPL environment, existing boilerplate code, or non-standard compiler/interpreter flags. The program must be in the form of one or more source files (to rule out quirky languages like Folders) and must fit into your answer in full (so it must not be longer than 30,000 characters) - this shouldn't be an issue for any serious submission.

If your code contains bytes outside the printable ASCII range, please include a pastebin or hex dump to make sure your code is actually testable.

The program must terminate within 1 minute on a typical desktop PC.

That's it. The catch is that you want to obfuscate your code such that it's not obvious which language you picked. Also note that you don't want your code to accidentally be a valid Hello World program in any other language, although I expect that to be unlikely for sufficiently obfuscated programs.

You must not under any circumstances edit the source code of your submission once posted (as this may invalidate a robbers' active attempts at cracking your answer). So make sure that you golf it as well as you can (or dare) before posting. If you realise that your answer does not work after posting it, simply delete your answer and post a fixed version if you want to.

If no one finds a language your code is valid in for 7 days, you may reveal the chosen language (ideally with an explanation for your obfuscated code), which will make your answer safe. Note that your submission can still be cracked until you reveal the language.

The shortest safe submission (in bytes) wins.

### Formatting

(Feel free to skip this section and read The Robbers' Challenge if you're not planning to participate as a cop right now.)

At the bottom of this post, you'll find a Stack Snippet which generates leaderboards as well as a list of submissions which can still be cracked. For the snippet to work, it is important that you include a certain header in your answer:

# ???, [N] bytes


where [N] is the size of your code in bytes and ??? should appear literally.

• If the answer is not cracked for 7 days and you want to make your answer safe by revealing the language, simply replace the ???, e.g.

# Ruby, [N] bytes


Feel free to have the language name link to a relevant website like an esolangs page or a GitHub repository. The link will then be displayed in the leaderboard.

• If another user successfully cracked your submission (see below), please also add the language, along with a notice like

# Ruby, [N] bytes, cracked by [user]


where [user] is the name of the user who submitted the first valid crack. If the language used in the crack is different from the one you intended, I'd recommend using the robbers' guess and mentioning in the answer that you intended it to be something else. Feel free to make the user name a link to their profile page.

## The Robbers' Challenge

1. Find a vulnerable answer. That is an answer, which hasn't been cracked yet and which isn't safe yet.
2. Crack it by figuring out its language. That is, find any language in which the given program is a valid Hello World program (subject to the rules outlined in The Cops' Challenge above). It doesn't matter if this is the language the cop intended.

If you've found such a language, leave a comment with the language's name. If possible, you should include a link to an online interpreter, showing that the code actually works in that language as required.

The user who cracked the largest number of answers wins the robbers' challenge. Ties are broken by the sum of bytes of cracked answers (more is better).

Because the robbers' challenge is held exclusively in comments, there won't be any reputation incentive for the robbers. However, the Grand Master of Challenge Writing, Calvin's Hobbies, has kindly offered to write a challenge about the user who wins the robbers' challenge!

## Challenge Dashboard

The Stack Snippet below generates leaderboards for the cops and robbers and will also list all answers which can still be cracked. Let me know if anything appears not to be working properly, and I'll try to fix it as soon as possible. If you can think of additional features which would make the dashboard more useful, leave a comment as well.

/* Configuration */

var QUESTION_ID = 54807; // Obtain this from the url
// It will be like http://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var DAYS_TILL_SAFE = 7;
var OVERRIDE_USER = 8478;
var CUTOFF_DATE = new Date(Date.UTC(2015, 8, 1, 2));

var MS_TILL_SAFE = DAYS_TILL_SAFE * 24 * 60 * 60 * 1000;

/* App */

// Must load over https (this comment is because I need to change 6+ chars)
return "https://api.stackexchange.com/2.2/questions/" +  QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}

}

jQuery.ajax({
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
data.items.forEach(function(a) {
});
comment_page = 1;
}
});
}

jQuery.ajax({
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
data.items.forEach(function(c) {
if (c.owner.user_id === OVERRIDE_USER)
});
else process();
}
});
}

var VULNERABLE_REG = /<h\d>[?]{3},[^\n\d,]*(\d+)[^\n,]*<\/h\d>/;
var SAFE_REG = /<h\d>\s*([^\n,]*[^\s,]),[^\n\d,]*(\d+)[^\n,]*<\/h\d>/;
var CRACKED_REG = /<h\d>\s*([^\n,]*[^\s,]),[^\n\d,]*(\d+)[^\n,]*,\s*cracked\s*by\s*(.*[^\s<])<\/h\d>/i;

function getAuthorName(a) {
return a.owner.display_name;
}

function process() {
var vulnerable = [];
var cops = [];
var robbers_hash = {};

var now = Date.now();

var body = a.body;
if(OVERRIDE_REG.test(c.body))
body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>';
});
var match;
if (VULNERABLE_REG.test(body)) {
vulnerable.push({
user: getAuthorName(a),
size: +body.match(VULNERABLE_REG)[1],
time_left: (a.creation_date*1000 > CUTOFF_DATE) ? Infinity : MS_TILL_SAFE - (now - a.creation_date*1000),
});
} else if (SAFE_REG.test(body)) {
if (a.creation_date*1000 < CUTOFF_DATE) {
match = body.match(SAFE_REG);
cops.push({
user: getAuthorName(a),
size: +match[2],
language: match[1],
});
}
} else if (CRACKED_REG.test(body)) {
if (a.creation_date*1000 < CUTOFF_DATE) {
match = body.match(CRACKED_REG);
var language = match[1];
var size = +match[2];
var user = match[3];
if (/<a/.test(user)) user = jQuery(user).text();
var robber = robbers_hash[user] || {
user: user,
cracks: 0,
total_size: 0,
languages: [],
};
++robber.cracks;
robber.total_size += size;
robber.languages.push({
language: language,
});
robbers_hash[user] = robber;
}
}
})

console.log(vulnerable);
console.log(cops);
console.log(robbers_hash);

vulnerable.sort(function (a, b) {
var aB = a.time_left,
bB = b.time_left;
return aB - bB
});

vulnerable.forEach(function (a) {
var time = a.time_left;
var time_string = "";
if (time == Infinity)
time_string = "Answer is not competing";
else if (time > 0) {
time_string += ((time / (1000 * 60 * 60 * 24))|0) + "d ";
time %= 1000 * 60 * 60 * 24;
time_string += ((time / (1000 * 60 * 60))|0) + "h ";
time %= 1000 * 60 * 60;
time_string += ((time / (1000 * 60))|0) + "m ";
time %= 1000 * 60;
time_string += ((time / (1000))|0) + "s";
}
else
time_string = "Cop may reveal language!";

.replace("{{SIZE}}", a.size)
.replace("{{TIME}}", time_string)
.replace("{{TIME}}", a.time_left)
.replace("{{HUE}}", a.time_left <= 0 ? 0 : a.time_left == Infinity ? 160 : a.time_left/MS_TILL_SAFE*80+40)

});

cops.sort(function (a, b) {
var aB = a.size,
bB = b.size;
return aB - bB
});

var place = 1;
var lastSize = null;
var lastPlace = 1;
cops.forEach(function (a) {
var size = a.size;
if (size != lastSize)
lastPlace = place;
lastSize = size;
++place;
.replace("{{NAME}}", a.user)
.replace("{{LANGUAGE}}", a.language)
.replace("{{SIZE}}", a.size)

});

var robbers = [];
for (var r in robbers_hash)
if (robbers_hash.hasOwnProperty(r))
robbers.push(robbers_hash[r]);

robbers.sort(function (a, b) {
var aB = a.cracks,
bB = b.cracks,
aC = a.total_size,
bC = b.total_size;
return (bB - aB) || (bC - aC);
});

place = 1;
var lastCracks = null;
lastSize = null;
lastPlace = 1;
robbers.forEach(function (a) {
var cracks = a.cracks;
var size = a.total_size;
if (size != lastSize || cracks != lastCracks)
lastPlace = place;
lastSize = size;
lastCracks = cracks;
++place;
var languages = "";
var first = true;
a.languages.forEach(function (l) {
if (!first) {
languages += ", ";
}
first = false;
var lang = l.language;
if (/<a/.test(lang)) lang = jQuery(l.language).text();
languages += '<a href="' + l.link + '">' + lang + '</a>';
});
.replace("{{NAME}}", a.user)
.replace("{{CRACKS}}", a.cracks)
.replace("{{TOTAL_SIZE}}", a.total_size)
.replace("{{LANGUAGES}}", languages);

});
}
body { text-align: left !important}

#vulnerable-cops {
width: 600px;
}

width: 600px;
}

width: 600px;
}

font-weight: bold;
}

table td {
}

.time-ms {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="vulnerable-cops">
<h2>Vulnerable Cops</h2>
<table class="vulnerable-cops">
<tr><td>User</td><td>Size</td><td>Time Left</td></tr>
<tbody id="vulnerable">

</tbody>
</table>
</div>
<tr><td></td><td>User</td><td>Language</td><td>Size</td></tr>
<tbody id="cops">

</tbody>
</table>
</div>
<tbody id="robbers">

</tbody>
</table>
</div>
<table style="display: none">
<tbody id="vulnerable-template">
</tbody>
</table>
<table style="display: none">
<tbody id="cops-template">
</tbody>
</table>
<table style="display: none">
<tbody id="robbers-template">
<tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{CRACKS}}</td><td>{{TOTAL_SIZE}}</td><td>{{LANGUAGES}}</td></tr>
</tbody>
</table>

• One minute of silence for those only capable of Piet programming. – user3819867 Aug 17 '15 at 8:20
• There goes my productivity! – Luke Aug 17 '15 at 20:30
• I think I might start debating whether or not I should start using Foo as a cuss word... "Oh, Foo! You little FOO!!" Yup, fits perfectly. – kirbyfan64sos Aug 26 '15 at 19:41

# Whenever, 30 bytes, cracked by Dennis

1 print("Hello, World"+U(33));

• This is Whenever. – Dennis Aug 27 '15 at 3:14
• @Dennis Whatever :| – TheNumberOne Aug 27 '15 at 4:40

# Fob, 371 bytes, cracked by Dennis

Helo, Wld!#&<>$$#<&$$::#<&$:####<&#<&$:#<=#<&$&//%<//<.++++++{+++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++.++++++++.>.+++.-------.--------.>+.>.&%<<<%%%%%.%<&>/////%<<%.<&.%<.%/////<&.%<<&/.%%<&>%<<</%<//////////////<&.%<<%%%%/<&.%%<&&&&&&&&&&&>/%//<&.%<</&.%%%<&>>/>>$<>>Hello, World!#&<>#<&=&$Hello, World!#<>$HELLO, WRRLLD!#$<>Helo, Wld!#&<>  • Is this L00P? – mbomb007 Aug 26 '15 at 20:52 • Nope, this is not L00P! – sweerpotato Aug 27 '15 at 5:16 • This is Fob. – Dennis Aug 27 '15 at 13:50 • Yes, indeed it is! – sweerpotato Aug 27 '15 at 13:52 # O, 21 bytes, cracked by kirbyfan64sos "Hello,"" World!"+p"?  • I believe this works in O. – kirbyfan64sos Aug 26 '15 at 20:15 • Just confirmed it. This is O. – kirbyfan64sos Aug 26 '15 at 20:19 • @kirbyfan64sos YAP (yet another polyglot). – Dennis Aug 26 '15 at 21:43 • This wasn't meant to work in O? I'm starting to have pity on you from all these polyglot answers... – kirbyfan64sos Aug 26 '15 at 21:45 • (And you forgot to say who cracked it. :) – kirbyfan64sos Aug 26 '15 at 21:45 # ISCOM, 22 bytes <"Hello,"" World!"|p"?  Now of infinite order. ### Verification The official interpreter was written for an older version of Lua. With modern versions, you have to comment out (or delete) the line that imports the bit module, which is built-in now. You also need to install the socket module or comment that import out as well; we don't need it for this particular program. Once we're all set, save the code as hello.iscom (or any other filename) and execute it like this: lua iscom.lua -f hello.iscom  ### How it works I split the greeting string in two and added the unclosed string at the end as general polyglot protection, the < as Finite Groups protection and a few more arbitrary chars for obfuscation. I tried very hard to make ISCOM look like a stack-based language. In fact, a previous attempt accidentally worked in O. The usual way of printing a character is assigning its code point to the variable @ and anything enclosed between double quotes gets transformed this way. Before it actually executes the code, the table of commands looks like this: 1 < 2 @=72 3 @=101 4 @=108 5 @=108 6 @=111 7 @=44 8 @=32 9 @=87 10 @=111 11 @=114 12 @=108 13 @=100 14 @=33 15 |p"?  The ISCOM interpreter parses the source code using regular expressions. Errors are possible, but can be easily avoided. Table entries 1 and 15 aren't recognized as commands, so they are simply ignored. Note that, e.g., introducing a space between | and p would cause a runtime error, since p can start a command but p"? is not the proper syntax. # Crystal, 45 bytes def not a "Hello, World!" end puts not "ruby"  Hello, World!  prog.rb:4: syntax error, unexpected tSTRING_BEG, expecting '(' puts not "ruby" ^  Crystal is a statically-typed Ruby variant. It's very similar to Ruby, but there are several differences, one of them being that many aliases were removed. That includes the removal of not. Therefore, it was easy to redefine it as a normal function that takes one argument amd discards it (Foo protection);. In Ruby, this is a syntax error. I don't even know why, but it is. • As there were only two answers posted shortly after the deadline (and because neither of them can win the cops competition anyway) I decided to move the cutoff date to include the two. – Martin Ender Sep 1 '15 at 16:41 • The seven days are over. What was the intended language? (My money is on unruby.) – Dennis Sep 9 '15 at 4:43 • @Dennis Crystal. :) – kirbyfan64sos Sep 9 '15 at 14:01 • Ah, and you even used the language on another question. – mbomb007 Sep 9 '15 at 16:41 • @mbomb007 Yup; I got scared because I thought I gave this answer away. – kirbyfan64sos Sep 9 '15 at 16:54 # Mouse-2002, 23 bytes "Hello, World"66 2*4/!'  this could be shorter and still be safe but eh. • Note that "Any new answers posted will not be eligible for winning and will not count towards the robbers' scores if cracked. However, you may still post new answers for the other users' enjoyment, so that there are still some puzzles available for future visitors. These new answers are are included in the "Vulnerable Cops" section of the leaderboard and their non-competing status is marked separately." – Martin Ender Dec 10 '15 at 12:03 • I'm aware; I just want to see if anyone will figure it out. – cat Dec 10 '15 at 12:05 # ???, 1628 bytes version=NotImplemented #7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 #Hello World, version 1. 25. 15 ["Hello, World!"] #Initialize output list. However, a weird quirk makes this at most 25% likely to actually output. ["Hello, World!"] #To increase the maximum probability, we can add more copies. This one increases the maximum to 34%. [''] #This clears the variable to be used in the future. exec("H='Hello, World!'"[52: 199: 1],globals()) #Create the variable we want to output (and make sure we get only the right characters). H = "Hello, World!"#Doing things in exec() statements isn't the best idea, so we should move it outside. backwards=" " #Erase the "backwards" variable to make sure our output isn't printed c=1,222, 222 #Every character (length-1 string) should be printed with as much certainty (probability as close to 1) as possible, so we want a big number here. B="@[" #Get bounds on uppercase letters b="{" #Get bounds on lowercase letters for char in H: assert ord(char) in range(ord(b[0])+ord(B[0])) #Make sure that the output is valid (i.e. each character is less than 124 and more than 52 - 25) assert char!=1 #The first character is invalid, and we don't want that! print(char,end=backwards) #At this point, the character must be valid, so it is printed. """ 50 ca 34 88 52 49 25 0a 52 38 b1 53 92 1a 43 76 43 99 34 34 25 25 52 52 44 a1 01 33 c0 b1 34 11 10 44 50 c1 44 34 1f 05 ff 44 99 35 89 53 88 01 55 75 f3 25 1e 0a d1 30 30 ab 40 d4 3c 20 04 5f e1 31 b5 1c 40 14 3e 0d 13 43 e2 e1 f0 20 27 40 3b""" #Hex dump included for future reference.  (Note that the entire code block is part of the code.) Try it online! (in the wrong language) • Is it Python 3? – Ari Aug 1 '20 at 14:47 • No, in Python 3 the output is H e l l o , W o r l d !  (because the backwards variable is a space, not the empty string). – Pizgenal Filegav Aug 1 '20 at 16:57 ## Whitespace, 241, cracked by ProgramFOX Maybe shoulda golfed this one down a bit more... Pastebin here might work better. 'g' 'h' 'o' 'e' 'o' 'l' 'd' 'l' 'b' 'o' 'y' 'e' "world" [ + v v ] goodbye->hello [ ^ - p ] % & ? print  • I guess it's Whitespace. – ProgramFOX Aug 17 '15 at 17:02 • Well dang, that was quick, nice work – Cain Aug 17 '15 at 17:06 • This actually prints Hello, world! (lowercase W). – Dennis Aug 23 '15 at 5:21 # STATA, 25 bytes, Cracked by jimmy23013 g a=3 dis "Hello, World!"  Edit - Added a comma because I forgot it the first time. Shouldn't affect any robber attempts. The first line generates a variable (think array) with no observations (elements), all of which are set to 3. Then it uses the display command (shortened to dis). The first line is to make sure it only works in STATA. Now the challenge is to find the interpreter. • Is it correct that there is no comma between "Hello" and "World!"? – ProgramFOX Aug 17 '15 at 14:37 • No, should I fix that? I guess I mistyped it. – bmarks Aug 17 '15 at 14:38 • I believe it's better if you fix that. – ProgramFOX Aug 17 '15 at 14:38 • The comma is there to offset a vocative. But the capital W is odd. – Peter Taylor Aug 17 '15 at 17:12 • It looks like Stata, but I don't think there is a free interpreter available. – jimmy23013 Aug 17 '15 at 17:57 # TI-BASIC, 23 bytes, cracked by Arcinde :"Hello, World!  The byte count is not incorrect. TI-BASIC uses a different code page than UTF-8 or ASCII. All lowercase letters take up 2 bytes. • I believe this is TI-BASIC. – jcai Aug 17 '15 at 20:39 # GolfScript, 33 bytes, cracked by Martin Büttner #include <cstdio> "Hello, World!"  Also works in PowerShell, which is what I was going for. • This works in GolfScript (whether that was your intention or not ;)). – Martin Ender Aug 17 '15 at 20:48 • See, I tried some of the easier ones that I could think to test, but apparently not enough of 'em. – AdmBorkBork Aug 17 '15 at 20:49 • where is the free powershell interpreter? – Jasen Aug 22 '15 at 10:28 • @Jasen In that instance, you can participate in an evaluation version of Windows, which, yes, can be downloaded for free and run in a virtualization environment of your choice. Requires registration to access the download. KB link is here, which has links and instructions. You used to be able to get up to 180 days evaluation -- I'm not sure what the time limits are currently. – AdmBorkBork Sep 2 '15 at 14:17 • @Jasen Thanks to another commentator on a different thread, I've just learned about Pash, so I'm passing that along here as well. – AdmBorkBork Sep 4 '15 at 12:40 # Postscript, 56 Bytes, cracked by vihan (Hello, World!) = %Hello, World!%; return Hello, World!;  Probably very easy to rob :-) • I'm going to guess PostScript? – Downgoat Aug 17 '15 at 22:26 • @vihan correct :) – MickyT Aug 17 '15 at 22:27 # Argh!, 33 bytes, cracked by Thomas Kwa #!Hello, World!# llPPPPPPPPPPPPPq  • Is this Argh!? – lirtosiast Aug 18 '15 at 0:15 • Argh! You got me. – Dennis Aug 18 '15 at 0:20 • In case you wonder how, I guessed that the q meant "quit", and then searched esolangs for "quit". – lirtosiast Aug 18 '15 at 0:21 # ActionScript 3.0, 23 bytes, cracked by Chirag64 trace("Hello, World!");  • Just to double check - does this language have a free interpreter/compiler? I'm not sure the one I have in mind does. – Sp3000 Aug 17 '15 at 12:21 • Is it GML? – absinthe Aug 17 '15 at 12:23 • Looks like ActionScript 3.0 – Chirag Bhatia - chirag64 Aug 17 '15 at 12:23 • @Sp3000 Flex SDK. – user42003 Aug 17 '15 at 13:59 • I hope you didn't just stop to the first example in c2.com/cgi/wiki?HelloWorldInManyProgrammingLanguages ;) – Aaron Aug 17 '15 at 16:03 # BASIC, 25 bytes, cracked by Kslkgh PRINT "Hello, World!" END  This shouldn't take long, but this guy has special meaning to me. • Looks like BASIC to me. – user42003 Aug 18 '15 at 11:50 • Pretty BASIC huh? – Luminous Aug 18 '15 at 11:55 ## A:;, 19 bytes, cracked by Sp3000 o:Hello, World!;p:o  • Would this be A:;? – Sp3000 Aug 18 '15 at 1:44 # Unlambda, 57 bytes, cracked by jimmy23013  #hello#  .H.e.l.l.o.,. .W.o.r.l.d.! return  • Is this Unlambda? – jimmy23013 Aug 18 '15 at 15:03 • Aww man, could you at least give me a minute? :p – aditsu quit because SE is EVIL Aug 18 '15 at 15:04 # rs, 26 bytes, cracked by Dennis print pr.nt/ World! Hello,  This lasted 56 seconds. Yay. :/ • Just guessing: rs? – Dennis Aug 18 '15 at 16:56 • @Dennis Damn, you're way too fast. That lasted a whole 56 seconds. :( – kirbyfan64sos Aug 18 '15 at 16:56 • Knowing you + the regexy look of line 2 were one hint too many. There's a reason I haven't posted a CJam answer yet. :) – Dennis Aug 18 '15 at 17:01 # Malbolge, 112 bytes, cracked by Martin Büttner ('&%:9]!~}|z2Vxwv-,POqponl$Hjihf|B@@>,=<M:9w6$GVV2TSn.Oe*c;(I&%$#"mCBA?zxxvuPb8qo42mZF.hIy*@dD'<;_?!\}}|z2VxSSQ

• This is Malbolge. – Martin Ender Aug 18 '15 at 18:45
• Darn, I was going to say the same thing... – ETHproductions Aug 18 '15 at 18:46

# Befunge-98, 59 bytes, cracked by Mauris

//"std_library::IO"200#evoke;
@_ #!,#:<"Hello, World!"<<;fi

• This is Befunge-98. (// would prompt the user for the result of division by 0 twice in Befunge-93, but it pushes 0 in Befunge-98 which is otherwise backwards-compatible -- see the docs.) – Lynn Aug 19 '15 at 0:37

# PHP, 179 bytes, cracked by Doorknob

Easy one for you

eval(chr(36).'a=array(69,99,104,111);'.chr(36).'b=chr('.chr(36).'a[0]).chr('.chr(36).'a[1]).chr('.chr(36).'a[2]).chr('.chr(36).'a[3]);eval('.chr(36).'b.\' "Hello, World!";\');');


Explanation:

Used eval() and an array of the ASCII values (mixed case) to disguise echo command. Should have mixed up the order of the array really and used a for loop and mathematical operators to hide the ASCII values better.

Used an outer eval() to try and hide the $ sigil by replacing it with ASCII value 36. Should have tried to hide that better really but couldn't think of a way. Once you know ASCII char 36 is $ it's obvious it's PHP and the full stop (period) operator for concatenation is another giveaway.

Trying to get it to parse with all the quotes and 2 evals() was hard work.

• This would be PHP, but you're missing a <?. – Doorknob Aug 17 '15 at 15:15
• No <? is missing if you run it from command line with php -r. (The tricky part is to pass it that code as parameter.) – manatwork Aug 17 '15 at 15:31
• @Doorknob That would have made it even easier! Good call @manatwork but as it happens I can't get it to parse outside of the browser, but I'm not surprised as with a nested eval() it's flakier than an 80's chocolate bar. I've got enough backslashes and quotes to send me insane! – Caltor Aug 17 '15 at 15:44
• <?="Hello, World!"?> would be hard to beat for size but anybody over the age of 5 should be able to guess it. – Caltor Aug 17 '15 at 15:52
• @Caltor When we are at it, Hello World works too, even in multiple languages ;-) – Paŭlo Ebermann Aug 22 '15 at 13:44

# Ruby, 30 bytes, cracked by jimmy23013

system("echo 'Hello, World!'")


Now just TRY to guess this one!

• Works in Ruby.. – jimmy23013 Aug 19 '15 at 10:05
• I tried my almost flawless trick that didn't work – ooransoy Aug 19 '15 at 10:07
• Were you trying to make it C++? – mbomb007 Aug 20 '15 at 1:58
• could be several dialects of basic too – Jasen Aug 22 '15 at 10:31
• It also works in R, just fyi. – Alex A. Aug 23 '15 at 5:57

# Foo, 34 bytes, cracked by Dennis

main = do
print "Hello, World!"


I hope this doesn't work in too many languages.

Remark (see meta ): some of the characters in the code are not valid Foo commands. The Foo spec does not define what to do with non-commands and the reference compiler chooses to simply ignore them and therefore produces vaild output.

• This is Haskell – Downgoat Aug 17 '15 at 22:40
• @kirbyfan64sos According to the question, you only get one guess per answer. – Dennis Aug 18 '15 at 0:30
• @LeifWillerts In haskell this prints the quotes also. – TheNumberOne Aug 18 '15 at 19:36
• This works in Foo. – Dennis Aug 19 '15 at 1:44
• I'm not particularly happy about this myself (Foo was used to crack on of my own answers), but you can't really expect a tight spec for an esolang... If your language accepts escapes (\n) or single quotes, do what I did and post a Foo-immune version. – Dennis Aug 19 '15 at 17:26

# Whitespace, 426 bytes, cracked by Dennis

#import  <studio.h>

#import <Foundation/Foundation.h>
#import <objc/Object.h>
@interface HelloWorld:  Object
-(void)hello;
@end

@implementation HelloWorld
-(void)hello:
println("Hello,\u20World!")
@end

//int
//main()

int main() {
HelloWorld
*hi=    [Hello new]
[hi
say]

[hi
free]

return(0)
}

//end


This is probably very easy

If the characters don't show up correctly. A pastebin is here.

This was designed to look like an old Objective-C at a first glance with some weird syntax errors.

• I'm pretty sure this is Whitespace. – Dennis Aug 20 '15 at 5:39
• @Dennis That lasted about 45 seconds :/ – Downgoat Aug 20 '15 at 5:39
• Well, there are only that many languages that mix tabs and spaces, and this doesn't really look like Python... :P – Dennis Aug 20 '15 at 5:45
• I've tested on WS2JS and it printed Hello, world! (lowercase W). – Dennis Aug 23 '15 at 5:22

# WTFZOMFG, 19 bytes, cracked by jimmy23013

'"'Hello, World!"'"


# Tcl, 102 bytes, cracked by jimmy23013

proc = main[] {
puts "Hello, World!" ;; return
}

= BEGIN

return ;; main["Hello, World!"]

= END

• It works in Tcl. – jimmy23013 Aug 20 '15 at 9:08
• Grr! All those nice = signs wasted. Yes, is Tcl. – manatwork Aug 20 '15 at 9:14

# Underload, 34 Bytes, cracked by Mauris

(l):*(He)~*(o):(, W)~***(rld!)*:!S

• I'm guessing it's Emoticon. – ProgramFOX Aug 19 '15 at 16:28
• @ProgramFOX Nope :) – Kade Aug 19 '15 at 16:30
• Is this Underload? – Lynn Aug 20 '15 at 4:02
• @Mauris Yes it is, well done :) – Kade Aug 20 '15 at 12:54

# JavaScript, 176 bytes, cracked by Dennis

_0x7ba8=["\x48\x65\x6C\x6C\x6F\x2C\x20\x57\x6F\x72\x6C\x64\x21","\x6C\x6F\x67"];_6d3521=_0x7ba8[0];_5s8452=_0x7ba8[1];_0x3242=[_6d3521,_5s8452];console[_0x3242[1]](_0x3242[0]);

• This is CoffeeScript. – Dennis Aug 20 '15 at 2:47
• Nope, this is not CS. – Grant Davis Aug 20 '15 at 13:54
• It might not have been the language you intended, but it does work in CoffeeScript. I've tried it here, by running it directly and by converting to JS and running it in NodeJS. – Dennis Aug 20 '15 at 14:00
• That's strange. I've tested it in Chrome as well; it prints the code, but doesn't execute it. If I remove the backticks, it works... – Dennis Aug 20 '15 at 16:39
• If you used the SE editor's shortcuts for formatting code, it might have inserted backticks instead of indenting by four spaces. The question forbids us to edit code, so just mark it as CoffeeScript. :) – Dennis Aug 20 '15 at 17:12

# Grocery List, 63 bytes, cracked by ETHproductions

#import <latter_stack.h>

V
H
p
v
e
p
v
l
c
c
p
p
v
o
c
p
n
p
n
p
V
W
p
p
v
r
p
p
w
p
N
p

• I'm 99.99% sure this is Grocery List. – ETHproductions Aug 20 '15 at 19:56
• You are correct – Grant Davis Aug 20 '15 at 20:24
• Where did you find an interpreter for Grocery List? – Dennis Aug 20 '15 at 20:26

# Mmmm(), 5646 bytes, cracked by Sp3000

MyVar mm=main[main.main()].main(main.main());
MyVar anAsymmetricalBrim=main[mm].main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();MyVar anAsymmetricalBrimmingDog=anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();main[anAsymmetricalBrimmingDog].main(anAsymmetricalBrim.main());
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();MyVar anAsymmetricalBrimmingDomesticApe=anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
MyVar anAsymmetricalBrimmingCommercialisticCommittee=anAsymmetricalBrim.main();
main[anAsymmetricalBrimmingDog].main(anAsymmetricalBrim.main());
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();MyVar anAsymmetricalBrimmingCommercialist=anAsymmetricalBrim.main();
main[anAsymmetricalBrimmingDog].main(anAsymmetricalBrimmingCommercialist);main[anAsymmetricalBrimmingDog].main(anAsymmetricalBrimmingCommercialist);
anAsymmetricalBrim.main();anAsymmetricalBrim.main();
MyVar anAsymmetricalBrimmingCommercialisticDomesticApe=anAsymmetricalBrim.main();
main[anAsymmetricalBrimmingDog].main(anAsymmetricalBrimmingCommercialisticDomesticApe);
anAsymmetricalBrim.main();anAsymmetricalBrim.main();
MyVar myAsymmetricalBrimmingCommercialisticCommittee=anAsymmetricalBrim.main();
MyVar anAsymmetricalBrim=main[mm].main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
MyVar asymmetricalBrimmingCommercialisticCommissionerCommittees=anAsymmetricalBrim.main();
MyVar asymmetricalBrimmingCommercialisticCommissionerCommitteeman=anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();anAsymmetricalBrim.main();
anAsymmetricalBrim.main();anAsymmetricalBrim.main();
main[anAsymmetricalBrimmingDog].main(anAsymmetricalBrim.main());
main[anAsymmetricalBrimmingDog].main(asymmetricalBrimmingCommercialisticCommissionerCommittees);
main[anAsymmetricalBrimmingDog].main(anAsymmetricalBrimmingDomesticApe);
main[anAsymmetricalBrimmingDog].main(anAsymmetricalBrimmingCommercialisticDomesticApe);
main[anAsymmetricalBrimmingDog].main(myAsymmetricalBrimmingCommercialisticCommittee);
main[anAsymmetricalBrimmingDog].main(anAsymmetricalBrimmingCommercialist);
main[anAsymmetricalBrimmingDog].main(anAsymmetricalBrimmingCommercialisticCommittee);
main[anAsymmetricalBrimmingDog].main(asymmetricalBrimmingCommercialisticCommissionerCommitteeman);


This one took a while to obfuscate.

# Explanation:

This is the "Hello, World!" program from the esolangs article padded with an insane number of dummy characters- the dummy characters represent about 70% of the length.

• Mmmm()? I see it's your language :) (although that's not how I found it) – Sp3000 Aug 20 '15 at 23:38
• @Sp3000: Yes indeed. – SuperJedi224 Aug 20 '15 at 23:43