Obfuscated Hello World

  • Create the shortest possible obfuscated program that displays the text "Hello World".

    In order to be considered an obfuscated program, it must meet at least two of the following requirements:

    • Does not contain the characters: h, l, w and d in any case

    • Does not contain the characters: e, o, r, 0, and 1 in any case

    • Does not contain the characters: 2 or 7




    Hello World


    Here is a Stack Snippet to generate both a regular leaderboard and an overview of winners by language.

    /* Configuration */

    var QUESTION_ID = 307; // Obtain this from the url
    // It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
    var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
    var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
    var OVERRIDE_USER = 48934; // This should be the user ID of the challenge author.

    /* App */

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

    function answersUrl(index) {
    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() {
    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+/);
    answers_hash[id] = a;
    if (!data.has_more) more_answers = false;
    comment_page = 1;

    function getComments() {
    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)
    if (data.has_more) getComments();
    else if (more_answers) getAnswers();
    else process();


    var SCORE_REG = /<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;

    var OVERRIDE_REG = /^Override\s*header:\s*/i;

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

    function process() {
    var valid = [];

    answers.forEach(function(a) {
    var body = a.body;
    a.comments.forEach(function(c) {
    body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>';

    var match = body.match(SCORE_REG);
    if (match)
    user: getAuthorName(a),
    size: +match[2],
    language: match[1],
    link: a.share_link,


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

    var languages = {};
    var place = 1;
    var lastSize = null;
    var lastPlace = 1;
    valid.forEach(function (a) {
    if (a.size != lastSize)
    lastPlace = place;
    lastSize = a.size;

    var answer = jQuery("#answer-template").html();
    answer = answer.replace("{{PLACE}}", lastPlace + ".")
    .replace("{{NAME}}", a.user)
    .replace("{{LANGUAGE}}", a.language)
    .replace("{{SIZE}}", a.size)
    .replace("{{LINK}}", a.link);
    answer = jQuery(answer);

    var lang = a.language;
    if (/<a/.test(lang)) lang = jQuery(lang).text();

    languages[lang] = languages[lang] || {lang: a.language, user: a.user, size: a.size, link: a.link};

    var langs = [];
    for (var lang in languages)
    if (languages.hasOwnProperty(lang))

    langs.sort(function (a, b) {
    if (a.lang > b.lang) return 1;
    if (a.lang < b.lang) return -1;
    return 0;

    for (var i = 0; i < langs.length; ++i)
    var language = jQuery("#language-template").html();
    var lang = langs[i];
    language = language.replace("{{LANGUAGE}}", lang.lang)
    .replace("{{NAME}}", lang.user)
    .replace("{{SIZE}}", lang.size)
    .replace("{{LINK}}", lang.link);
    language = jQuery(language);


    body { text-align: left !important}

    #answer-list {
    padding: 10px;
    width: 290px;
    float: left;

    #language-list {
    padding: 10px;
    width: 290px;
    float: left;

    table thead {
    font-weight: bold;

    table td {
    padding: 5px;

    <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="answer-list">
    <table class="answer-list">
    <tbody id="answers">

    <div id="language-list">
    <h2>Winners by Language</h2>
    <table class="language-list">
    <tbody id="languages">

    <table style="display: none">
    <tbody id="answer-template">
    <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
    <table style="display: none">
    <tbody id="language-template">
    <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>

    I guess `import` in python is not permitted.

    What is the difference between `letters`, `characters` and `numbers`.

    @Alexandru: Just consider them all to be characters, and you'll be fine.

    @Alexandru: I don't see why not. Just keep in mind that you'll have to satisfy the first and third requirements, as you're already including `"r"`

    Does these rules apply to language keywords as well?

    @hallvabo: I guess so, since the task description states »In order to be considered an obfuscated *program*«, meaning the rules apply to the program as a whole, not just a subset.

    Are the numbers 2 and 7 allowed?

    @muntoo: Only if the code doesn't contain: h, l, w, r, d, o, e, 1, or 0

    are those case insensitive restrictions?

    Could someone explain why 2 and 7 are not allowed? I'm just curious as I don't see why those were chosen in particular.

    @trinithis, and others, ASCII character `72` is `"H"` which is why I chose those two

    Is use of external files allowed?

    :( Can't make a VBA solution because of `End Sub` or `End Function`

    Ah, no `o` means I can't print in IPEL...

  • GolfScript, 17 chars


    When testing this submission, please save the file as straight binary, not UTF-8. Having trouble recreating the file? Here's the hexdump of it:

    00000000  27 b7 9a 93 93 90 df a8  90 8d 93 9b 27 7b 7e 7d  |'...........'{~}|
    00000010 25 |%|

    Although I'd like to think it's an obvious solution, if you're at all unclear about how this entry works, you can read this spoiler: http://chat.stackexchange.com/transcript/message/442257#442257 :-)

    It's not ISO-8859-1, it's actually Windows-1252.

    @GlitchMr: I'm actually pretty certain the submission contains characters that are outside of Windows-1252 too. ;-)

    @xfix It really isn't Windows-1252 either. Although Windows-1252 has more valid characters than ISO-8859-1, my entry contains characters, such as 0x8D and 0x90, that aren't valid in Windows-1252 either.

    Fair enough, forgot that some characters are disallowed in Windows-1252.

License under CC-BY-SA with attribution

Content dated before 7/24/2021 11:53 AM