199
\$\begingroup\$

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:

  • New answers should include a header like

    # ???, [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.

Every user only gets one guess per answer. You must not crack your own answer (obviously...).

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 ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
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 */

var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page;

function answersUrl(index) {
  // 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;
}

function commentUrl(index, answers) {
  return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER;
}

function getAnswers() {
  jQuery.ajax({
    url: answersUrl(answer_page++),
    method: "get",
    dataType: "jsonp",
    crossDomain: true,
    success: function (data) {
      answers.push.apply(answers, data.items);
      answers_hash = [];
      answer_ids = [];
      data.items.forEach(function(a) {
        a.comments = [];
        var id = +a.share_link.match(/\d+/);
        answer_ids.push(id);
        answers_hash[id] = a;
      });
      if (!data.has_more) more_answers = false;
      comment_page = 1;
      getComments();
    }
  });
}

function getComments() {
  jQuery.ajax({
    url: commentUrl(comment_page++, answer_ids),
    method: "get",
    dataType: "jsonp",
    crossDomain: true,
    success: function (data) {
      data.items.forEach(function(c) {
        if (c.owner.user_id === OVERRIDE_USER)
          answers_hash[c.post_id].comments.push(c);
      });
      if (data.has_more) getComments();
      else if (more_answers) getAnswers();
      else process();
    }
  });  
}

getAnswers();

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;
var OVERRIDE_REG = /^Override\s*header:\s*/i;

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

function process() {  
  console.log(answers);
  var vulnerable = [];
  var cops = [];
  var robbers_hash = {};
  
  var now = Date.now();
  
  answers.forEach(function (a) {
    var body = a.body;
    a.comments.forEach(function(c) {
      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),
        link: a.share_link,
      });
    } 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],
          link: a.share_link,
        });
      }
    } 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,
          link: a.share_link,
        });
        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 answer = jQuery("#vulnerable-template").html();
    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!";
    
    answer = answer.replace("{{NAME}}", a.user)
                   .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)
                   .replace("{{LINK}}", a.link);
    
    answer = jQuery(answer)
    
    jQuery("#vulnerable").append(answer);
  });
  
  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 answer = jQuery("#cops-template").html();
    var size = a.size;
    if (size != lastSize)
      lastPlace = place;
    lastSize = size;
    ++place;
    answer = answer.replace("{{PLACE}}", lastPlace + ".")
                   .replace("{{NAME}}", a.user)
                   .replace("{{LANGUAGE}}", a.language)
                   .replace("{{SIZE}}", a.size)
                   .replace("{{LINK}}", a.link);
    
    answer = jQuery(answer)
    
    jQuery("#cops").append(answer);
  });

  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 answer = jQuery("#robbers-template").html();
    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>';
    });
    answer = answer.replace("{{PLACE}}", lastPlace + ".")
                   .replace("{{NAME}}", a.user)
                   .replace("{{CRACKS}}", a.cracks)
                   .replace("{{TOTAL_SIZE}}", a.total_size)
                   .replace("{{LANGUAGES}}", languages);
    
    answer = jQuery(answer)
    
    jQuery("#robbers").append(answer);
  });
}
body { text-align: left !important}

#vulnerable-cops {
  padding: 10px;
  width: 600px;
}

#cops-leaderboard {
  padding: 10px;
  width: 600px;
}

#robbers-leaderboard {
  padding: 10px;
  width: 600px;
}

table thead {
  font-weight: bold;
}

table td {
  padding: 5px;
}

.time-ms {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b">
<div id="vulnerable-cops">
  <h2>Vulnerable Cops</h2>
  <table class="vulnerable-cops">
    <thead>
      <tr><td>User</td><td>Size</td><td>Time Left</td></tr>
    </thead>
    <tbody id="vulnerable">

    </tbody>
  </table>
</div>
<div id="cops-leaderboard">
  <h2>Leaderboard of Safe Cops</h2>
  <table class="cops-leaderboard">
    <thead>
      <tr><td></td><td>User</td><td>Language</td><td>Size</td></tr>
    </thead>
    <tbody id="cops">

    </tbody>
  </table>
</div>
<div id="robbers-leaderboard">
  <h2>Leaderboard of Robbers</h2>
  <table class="robbers-leaderboard">
    <thead>
      <tr><td></td><td>User</td><td>Cracks</td><td>Total Size</td><td>Languages (link to answers)</td></tr>
    </thead>
    <tbody id="robbers">

    </tbody>
  </table>
</div>
<table style="display: none">
  <tbody id="vulnerable-template">
    <tr><td>{{NAME}}</td><td>{{SIZE}}</td><td style="background-color: hsl({{HUE}},100%,50%);">{{TIME}}</td><td><a href="{{LINK}}">Link</a></td><td class="time-ms">{{TIME_MS}}</td></tr>
  </tbody>
</table>
<table style="display: none">
  <tbody id="cops-template">
    <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
  </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>

\$\endgroup\$
3
  • 114
    \$\begingroup\$ One minute of silence for those only capable of Piet programming. \$\endgroup\$ Commented Aug 17, 2015 at 8:20
  • 22
    \$\begingroup\$ There goes my productivity! \$\endgroup\$
    – Luke
    Commented Aug 17, 2015 at 20:30
  • 14
    \$\begingroup\$ 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. \$\endgroup\$ Commented Aug 26, 2015 at 19:41

215 Answers 215

1
4
5
6 7 8
3
\$\begingroup\$

Whenever, 30 bytes, cracked by Dennis

1 print("Hello, World"+U(33));
\$\endgroup\$
2
  • 1
    \$\begingroup\$ This is Whenever. \$\endgroup\$
    – Dennis
    Commented Aug 27, 2015 at 3:14
  • \$\begingroup\$ @Dennis Whatever :| \$\endgroup\$ Commented Aug 27, 2015 at 4:40
3
\$\begingroup\$

Fob, 371 bytes, cracked by Dennis

Helo, Wld!#&<>$$$#<&$$::#<&$:####<&#<&$:#<=#<&$&//%<//<.++++++{+++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++.++++++++.>.+++.-------.--------.>+.>.&%<<<%%%%%.%<&>/////%<<%.<&.%<.%/////<&.%<<&/.%%<&>%<<</%<//////////////<&.%<<%%%%/<&.%%<&&&&&&&&&&&>/%//<&.%<</&.%%%<&>>/>>$<>>Hello, World!#&<>#<&=&$Hello, World!#<>$HELLO, WRRLLD!#$<>Helo, Wld!#&<>
\$\endgroup\$
4
  • \$\begingroup\$ Is this L00P? \$\endgroup\$
    – mbomb007
    Commented Aug 26, 2015 at 20:52
  • \$\begingroup\$ Nope, this is not L00P! \$\endgroup\$ Commented Aug 27, 2015 at 5:16
  • \$\begingroup\$ This is Fob. \$\endgroup\$
    – Dennis
    Commented Aug 27, 2015 at 13:50
  • \$\begingroup\$ Yes, indeed it is! \$\endgroup\$ Commented Aug 27, 2015 at 13:52
3
\$\begingroup\$

O, 21 bytes, cracked by kirbyfan64sos

"Hello,"" World!"+p"?
\$\endgroup\$
5
  • 1
    \$\begingroup\$ I believe this works in O. \$\endgroup\$ Commented Aug 26, 2015 at 20:15
  • \$\begingroup\$ Just confirmed it. This is O. \$\endgroup\$ Commented Aug 26, 2015 at 20:19
  • \$\begingroup\$ @kirbyfan64sos YAP (yet another polyglot). \$\endgroup\$
    – Dennis
    Commented Aug 26, 2015 at 21:43
  • \$\begingroup\$ This wasn't meant to work in O? I'm starting to have pity on you from all these polyglot answers... \$\endgroup\$ Commented Aug 26, 2015 at 21:45
  • \$\begingroup\$ (And you forgot to say who cracked it. :) \$\endgroup\$ Commented Aug 26, 2015 at 21:45
3
\$\begingroup\$

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.

\$\endgroup\$
3
\$\begingroup\$

Crystal, 45 bytes

def not a
"Hello, World!"
end
puts not "ruby"

Output under Crystal:

Hello, World!

Output under Ruby:

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.

\$\endgroup\$
5
  • \$\begingroup\$ 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. \$\endgroup\$ Commented Sep 1, 2015 at 16:41
  • \$\begingroup\$ The seven days are over. What was the intended language? (My money is on unruby.) \$\endgroup\$
    – Dennis
    Commented Sep 9, 2015 at 4:43
  • \$\begingroup\$ @Dennis Crystal. :) \$\endgroup\$ Commented Sep 9, 2015 at 14:01
  • \$\begingroup\$ Ah, and you even used the language on another question. \$\endgroup\$
    – mbomb007
    Commented Sep 9, 2015 at 16:41
  • \$\begingroup\$ @mbomb007 Yup; I got scared because I thought I gave this answer away. \$\endgroup\$ Commented Sep 9, 2015 at 16:54
3
\$\begingroup\$

Mouse-2002, 23 bytes

"Hello, World"66 2*4/!'

this could be shorter and still be safe but eh.

\$\endgroup\$
2
  • 3
    \$\begingroup\$ 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." \$\endgroup\$ Commented Dec 10, 2015 at 12:03
  • 1
    \$\begingroup\$ I'm aware; I just want to see if anyone will figure it out. \$\endgroup\$
    – cat
    Commented Dec 10, 2015 at 12:05
3
\$\begingroup\$

???, 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)

\$\endgroup\$
2
  • \$\begingroup\$ Is it Python 3? \$\endgroup\$
    – Ari
    Commented Aug 1, 2020 at 14:47
  • \$\begingroup\$ 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). \$\endgroup\$ Commented Aug 1, 2020 at 16:57
3
\$\begingroup\$

???, 187 bytes

@>%>?!v(89*99*45*+\<</<<<<<<\+4*84*93*2+3*\<<</<<<<<//////////
/^<<<<<<<<\<<\<</<\:7+::3+92\\<\<<\<<\<<<\\:64*+:3+\\\\\\\\\\
.\..#/@.........."!"dlroW ,olleH'..()..]]<$+8:*:+19///////////

Probably too easy, but I think this is a funny looking program.

\$\endgroup\$
1
2
\$\begingroup\$

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
\$\endgroup\$
3
  • 2
    \$\begingroup\$ I guess it's Whitespace. \$\endgroup\$
    – ProgramFOX
    Commented Aug 17, 2015 at 17:02
  • \$\begingroup\$ Well dang, that was quick, nice work \$\endgroup\$
    – Cain
    Commented Aug 17, 2015 at 17:06
  • \$\begingroup\$ This actually prints Hello, world! (lowercase W). \$\endgroup\$
    – Dennis
    Commented Aug 23, 2015 at 5:21
2
\$\begingroup\$

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.

\$\endgroup\$
13
  • \$\begingroup\$ Is it correct that there is no comma between "Hello" and "World!"? \$\endgroup\$
    – ProgramFOX
    Commented Aug 17, 2015 at 14:37
  • \$\begingroup\$ No, should I fix that? I guess I mistyped it. \$\endgroup\$
    – bmarks
    Commented Aug 17, 2015 at 14:38
  • \$\begingroup\$ I believe it's better if you fix that. \$\endgroup\$
    – ProgramFOX
    Commented Aug 17, 2015 at 14:38
  • 1
    \$\begingroup\$ The comma is there to offset a vocative. But the capital W is odd. \$\endgroup\$ Commented Aug 17, 2015 at 17:12
  • 2
    \$\begingroup\$ It looks like Stata, but I don't think there is a free interpreter available. \$\endgroup\$
    – jimmy23013
    Commented Aug 17, 2015 at 17:57
2
\$\begingroup\$

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.

\$\endgroup\$
1
  • 1
    \$\begingroup\$ I believe this is TI-BASIC. \$\endgroup\$
    – jcai
    Commented Aug 17, 2015 at 20:39
2
\$\begingroup\$

GolfScript, 33 bytes, cracked by Martin Büttner

#include <cstdio>
"Hello, World!"

Also works in PowerShell, which is what I was going for.

\$\endgroup\$
11
  • 1
    \$\begingroup\$ This works in GolfScript (whether that was your intention or not ;)). \$\endgroup\$ Commented Aug 17, 2015 at 20:48
  • \$\begingroup\$ See, I tried some of the easier ones that I could think to test, but apparently not enough of 'em. \$\endgroup\$ Commented Aug 17, 2015 at 20:49
  • \$\begingroup\$ where is the free powershell interpreter? \$\endgroup\$
    – Jasen
    Commented Aug 22, 2015 at 10:28
  • 1
    \$\begingroup\$ @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. \$\endgroup\$ Commented Sep 2, 2015 at 14:17
  • 1
    \$\begingroup\$ @Jasen Thanks to another commentator on a different thread, I've just learned about Pash, so I'm passing that along here as well. \$\endgroup\$ Commented Sep 4, 2015 at 12:40
2
\$\begingroup\$

Postscript, 56 Bytes, cracked by vihan

(Hello, World!) = %Hello, World!%; return Hello, World!;

Probably very easy to rob :-)

\$\endgroup\$
2
  • 1
    \$\begingroup\$ I'm going to guess PostScript? \$\endgroup\$
    – Downgoat
    Commented Aug 17, 2015 at 22:26
  • \$\begingroup\$ @vihan correct :) \$\endgroup\$
    – MickyT
    Commented Aug 17, 2015 at 22:27
2
\$\begingroup\$

Argh!, 33 bytes, cracked by Thomas Kwa

#!Hello, World!#
llPPPPPPPPPPPPPq
\$\endgroup\$
3
  • 1
    \$\begingroup\$ Is this Argh!? \$\endgroup\$
    – lirtosiast
    Commented Aug 18, 2015 at 0:15
  • 7
    \$\begingroup\$ Argh! You got me. \$\endgroup\$
    – Dennis
    Commented Aug 18, 2015 at 0:20
  • 6
    \$\begingroup\$ In case you wonder how, I guessed that the q meant "quit", and then searched esolangs for "quit". \$\endgroup\$
    – lirtosiast
    Commented Aug 18, 2015 at 0:21
2
\$\begingroup\$

ActionScript 3.0, 23 bytes, cracked by Chirag64

trace("Hello, World!");
\$\endgroup\$
7
  • 2
    \$\begingroup\$ Just to double check - does this language have a free interpreter/compiler? I'm not sure the one I have in mind does. \$\endgroup\$
    – Sp3000
    Commented Aug 17, 2015 at 12:21
  • \$\begingroup\$ Is it GML? \$\endgroup\$
    – absinthe
    Commented Aug 17, 2015 at 12:23
  • 4
    \$\begingroup\$ Looks like ActionScript 3.0 \$\endgroup\$ Commented Aug 17, 2015 at 12:23
  • \$\begingroup\$ @Sp3000 Flex SDK. \$\endgroup\$
    – user42003
    Commented Aug 17, 2015 at 13:59
  • 3
    \$\begingroup\$ I hope you didn't just stop to the first example in c2.com/cgi/wiki?HelloWorldInManyProgrammingLanguages ;) \$\endgroup\$
    – Aaron
    Commented Aug 17, 2015 at 16:03
2
\$\begingroup\$

BASIC, 25 bytes, cracked by Kslkgh

PRINT "Hello, World!"
END

This shouldn't take long, but this guy has special meaning to me.

\$\endgroup\$
2
  • 1
    \$\begingroup\$ Looks like BASIC to me. \$\endgroup\$
    – user42003
    Commented Aug 18, 2015 at 11:50
  • 3
    \$\begingroup\$ Pretty BASIC huh? \$\endgroup\$
    – Luminous
    Commented Aug 18, 2015 at 11:55
2
\$\begingroup\$

A:;, 19 bytes, cracked by Sp3000

o:Hello, World!;p:o
\$\endgroup\$
1
  • 6
    \$\begingroup\$ Would this be A:;? \$\endgroup\$
    – Sp3000
    Commented Aug 18, 2015 at 1:44
2
\$\begingroup\$

Unlambda, 57 bytes, cracked by jimmy23013

```````
#hello#
```````
.H.e.l.l.o.,. .W.o.r.l.d.!
return
\$\endgroup\$
2
  • 4
    \$\begingroup\$ Is this Unlambda? \$\endgroup\$
    – jimmy23013
    Commented Aug 18, 2015 at 15:03
  • 1
    \$\begingroup\$ Aww man, could you at least give me a minute? :p \$\endgroup\$ Commented Aug 18, 2015 at 15:04
2
\$\begingroup\$

rs, 26 bytes, cracked by Dennis

print
pr.nt/ World!
Hello,

This lasted 56 seconds. Yay. :/

\$\endgroup\$
3
  • 2
    \$\begingroup\$ Just guessing: rs? \$\endgroup\$
    – Dennis
    Commented Aug 18, 2015 at 16:56
  • \$\begingroup\$ @Dennis Damn, you're way too fast. That lasted a whole 56 seconds. :( \$\endgroup\$ Commented Aug 18, 2015 at 16:56
  • 1
    \$\begingroup\$ 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. :) \$\endgroup\$
    – Dennis
    Commented Aug 18, 2015 at 17:01
2
\$\begingroup\$

Malbolge, 112 bytes, cracked by Martin Büttner

('&%:9]!~}|z2Vxwv-,POqponl$Hjihf|B@@>,=<M:9w6$GVV2TSn.Oe*c;(I&%$#"mCBA?zxxvuPb8`qo42mZF.hIy*@dD'<;_?!\}}|z2VxSSQ
\$\endgroup\$
2
  • \$\begingroup\$ This is Malbolge. \$\endgroup\$ Commented Aug 18, 2015 at 18:45
  • 1
    \$\begingroup\$ Darn, I was going to say the same thing... \$\endgroup\$ Commented Aug 18, 2015 at 18:46
2
\$\begingroup\$

Befunge-98, 59 bytes, cracked by Mauris

//"std_library::IO"200#evoke;
@_ #!,#:<"Hello, World!"<<;fi
\$\endgroup\$
1
  • \$\begingroup\$ 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.) \$\endgroup\$
    – lynn
    Commented Aug 19, 2015 at 0:37
2
\$\begingroup\$

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.

\$\endgroup\$
5
  • 2
    \$\begingroup\$ This would be PHP, but you're missing a <?. \$\endgroup\$
    – Doorknob
    Commented Aug 17, 2015 at 15:15
  • 1
    \$\begingroup\$ No <? is missing if you run it from command line with php -r. (The tricky part is to pass it that code as parameter.) \$\endgroup\$
    – manatwork
    Commented Aug 17, 2015 at 15:31
  • \$\begingroup\$ @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! \$\endgroup\$
    – Caltor
    Commented Aug 17, 2015 at 15:44
  • 4
    \$\begingroup\$ <?="Hello, World!"?> would be hard to beat for size but anybody over the age of 5 should be able to guess it. \$\endgroup\$
    – Caltor
    Commented Aug 17, 2015 at 15:52
  • \$\begingroup\$ @Caltor When we are at it, Hello World works too, even in multiple languages ;-) \$\endgroup\$ Commented Aug 22, 2015 at 13:44
2
\$\begingroup\$

Ruby, 30 bytes, cracked by jimmy23013

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

Now just TRY to guess this one!

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

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.

\$\endgroup\$
13
  • 2
    \$\begingroup\$ This is Haskell \$\endgroup\$
    – Downgoat
    Commented Aug 17, 2015 at 22:40
  • 2
    \$\begingroup\$ @kirbyfan64sos According to the question, you only get one guess per answer. \$\endgroup\$
    – Dennis
    Commented Aug 18, 2015 at 0:30
  • 1
    \$\begingroup\$ @LeifWillerts In haskell this prints the quotes also. \$\endgroup\$ Commented Aug 18, 2015 at 19:36
  • 3
    \$\begingroup\$ This works in Foo. \$\endgroup\$
    – Dennis
    Commented Aug 19, 2015 at 1:44
  • 1
    \$\begingroup\$ 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. \$\endgroup\$
    – Dennis
    Commented Aug 19, 2015 at 17:26
2
\$\begingroup\$

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.

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

WTFZOMFG, 19 bytes, cracked by jimmy23013

'"'Hello, World!"'"
\$\endgroup\$
1
  • \$\begingroup\$ Is this WTFZOMFG? \$\endgroup\$
    – jimmy23013
    Commented Aug 20, 2015 at 8:25
2
\$\begingroup\$

Tcl, 102 bytes, cracked by jimmy23013

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

= BEGIN

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

= END
\$\endgroup\$
2
  • \$\begingroup\$ It works in Tcl. \$\endgroup\$
    – jimmy23013
    Commented Aug 20, 2015 at 9:08
  • \$\begingroup\$ Grr! All those nice = signs wasted. Yes, is Tcl. \$\endgroup\$
    – manatwork
    Commented Aug 20, 2015 at 9:14
2
\$\begingroup\$

Underload, 34 Bytes, cracked by Mauris

(l):*(He)~*(o):(, W)~***(rld!)*:!S
\$\endgroup\$
4
  • \$\begingroup\$ I'm guessing it's Emoticon. \$\endgroup\$
    – ProgramFOX
    Commented Aug 19, 2015 at 16:28
  • \$\begingroup\$ @ProgramFOX Nope :) \$\endgroup\$
    – Kade
    Commented Aug 19, 2015 at 16:30
  • \$\begingroup\$ Is this Underload? \$\endgroup\$
    – lynn
    Commented Aug 20, 2015 at 4:02
  • \$\begingroup\$ @Mauris Yes it is, well done :) \$\endgroup\$
    – Kade
    Commented Aug 20, 2015 at 12:54
2
\$\begingroup\$

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]);
\$\endgroup\$
9
  • \$\begingroup\$ This is CoffeeScript. \$\endgroup\$
    – Dennis
    Commented Aug 20, 2015 at 2:47
  • \$\begingroup\$ Nope, this is not CS. \$\endgroup\$ Commented Aug 20, 2015 at 13:54
  • \$\begingroup\$ 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. \$\endgroup\$
    – Dennis
    Commented Aug 20, 2015 at 14:00
  • 2
    \$\begingroup\$ 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... \$\endgroup\$
    – Dennis
    Commented Aug 20, 2015 at 16:39
  • 2
    \$\begingroup\$ 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. :) \$\endgroup\$
    – Dennis
    Commented Aug 20, 2015 at 17:12
2
\$\begingroup\$

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
\$\endgroup\$
3
  • 1
    \$\begingroup\$ I'm 99.99% sure this is Grocery List. \$\endgroup\$ Commented Aug 20, 2015 at 19:56
  • \$\begingroup\$ You are correct \$\endgroup\$ Commented Aug 20, 2015 at 20:24
  • 7
    \$\begingroup\$ Where did you find an interpreter for Grocery List? \$\endgroup\$
    – Dennis
    Commented Aug 20, 2015 at 20:26
1
4
5
6 7 8

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.