Поздравляем Денниса, который выиграл соревнование как у полицейских, так и у грабителей! Хобби Келвина уже выполнили свое обещание и написали этот вызов для Денниса за победу в конкурсе грабителей.
Примечание. Эта задача закрыта для дальнейших ответов полицейских по состоянию на 2015-09-01 02:00:00 UTC. Любые новые опубликованные ответы не будут иметь права на победу и не будут засчитаны в баллы грабителей в случае взлома. Тем не менее, вы все равно можете публиковать новые ответы для удовольствия других пользователей, так что для будущих посетителей есть еще несколько головоломок. Эти новые ответы включены в раздел «Уязвимые копы» в таблице лидеров, и их неконкурентный статус отмечен отдельно.
Добро пожаловать в издание The Hello World Quiz от Cops-and-Robbers ! (Если вы никогда не играли в викторину, не стесняйтесь пробовать ее в течение минуты или 30. Тем не менее, вам не нужно играть в нее для этого испытания.)
Вызов ментов
- Выберите язык программирования. Допустимые языки должны иметь либо статью английской Википедии , в esolangs статью или статью Rosetta код в то время эта проблема была размещена (обратите внимание , что связанные списки не обязательно являются полными , поскольку они курируются вручную). Они также должны соответствовать нашим обычным стандартам для языков программирования , поэтому такие вещи, как HQ9 +, отсутствуют. Наконец, для языка должен быть доступен бесплатный (как в пиве) интерпретатор или компилятор (на момент публикации этого запроса).
Напишите программу Hello World. То есть, напишите полную программу на выбранном языке, которая печатает Hello, World!
(точно так же, как этот, точный поток байтов) и, возможно, один завершающий перевод строки в STDOUT или ближайшую альтернативу.
Вы не должны принимать среду REPL, существующий шаблонный код или нестандартные флаги компилятора / интерпретатора. Программа должна быть в форме одного или нескольких исходных файлов (чтобы исключить причудливые языки, такие как папки ) и должна полностью соответствовать вашему ответу (поэтому он не должен быть длиннее 30 000 символов) - это не должно быть проблемой для любая серьезная подача.
Если ваш код содержит байты за пределами диапазона печати ASCII, пожалуйста, включите в него вставку или шестнадцатеричный дамп, чтобы убедиться, что ваш код действительно тестируемый.
Программа должна завершиться в течение 1 минуты на обычном настольном ПК.
Вот и все. Загвоздка в том, что вы хотите запутать свой код так, чтобы не было ясно, какой язык вы выбрали. Также обратите внимание, что вы не хотите, чтобы ваш код случайно был действительной программой Hello World на любом другом языке, хотя я ожидаю, что это будет маловероятно для достаточно запутанных программ.
Вы не должны ни при каких обстоятельствах редактировать исходный код вашего представления после публикации (так как это может сделать недействительными активные попытки грабителей взломать ваш ответ). Поэтому убедитесь, что вы играете в гольф так же хорошо, как вы можете (или осмелитесь) перед публикацией. Если вы понимаете, что ваш ответ не работает после публикации, просто удалите свой ответ и, если хотите, опубликуйте фиксированную версию.
Если никто не найдет язык, на котором ваш код действителен в течение 7 дней, вы можете раскрыть выбранный язык (в идеале с объяснением вашего обфусцированного кода), что сделает ваш ответ безопасным . Обратите внимание, что ваше представление может быть взломано до тех пор, пока вы не раскроете язык.
Самая короткая безопасная передача (в байтах) выигрывает.
форматирование
(Не стесняйтесь пропустить этот раздел и прочитать «The Robbers 'Challenge», если вы не планируете участвовать в качестве полицейского прямо сейчас.)
Внизу этого поста вы найдете фрагмент стека, который генерирует списки лидеров, а также список представлений, которые все еще можно взломать. Для работы фрагмента важно, чтобы вы включили в свой ответ определенный заголовок:
Новые ответы должны включать заголовок, как
# ???, [N] bytes
где [N]
размер вашего кода в байтах и ???
должен отображаться буквально.
Если ответ не был взломан в течение 7 дней, и вы хотите обезопасить свой ответ, раскрыв язык, просто замените ???
, например,
# Ruby, [N] bytes
Не стесняйтесь иметь ссылку на название языка на соответствующий веб-сайт, такой как страница esolangs или репозиторий GitHub. Ссылка будет отображаться в списке лидеров.
Если другой пользователь успешно взломал вашу заявку (см. Ниже), пожалуйста, добавьте язык вместе с уведомлением:
# Ruby, [N] bytes, cracked by [user]
где [user]
имя пользователя, отправившего первый действительный кряк. Если используемый в крэке язык отличается от того, который вы намеревались, я бы порекомендовал использовать предположение грабителей и упомянуть в ответе, что вы хотели, чтобы это было что-то другое. Не стесняйтесь сделать имя пользователя ссылкой на страницу своего профиля.
Вызов грабителей
- Найдите уязвимый ответ. Это ответ, который еще не взломан и еще не является безопасным .
Взломать его, выяснив его язык. То есть найдите любой язык, на котором данная программа является допустимой программой Hello World (с учетом правил, изложенных в «Вызове ментов» выше). Неважно, что это был язык, который задумал полицейский.
Если вы нашли такой язык, оставьте комментарий с названием языка. Если возможно, вы должны включить ссылку на онлайн-переводчика, показывающую, что код действительно работает на этом языке, как требуется.
Каждый пользователь получает только одно предположение за ответ. Вы не должны взламывать свой собственный ответ (очевидно ...).
Пользователь, взломавший наибольшее количество ответов, выигрывает вызов грабителей. Связи разбиваются по сумме байтов взломанных ответов (чем больше, тем лучше).
Поскольку задача грабителей содержится исключительно в комментариях, у грабителей не будет стимула для репутации. Тем не менее, Великий Магистр Письменности Вызова, Хобби Кальвина , любезно предложил написать запрос о пользователе, который выигрывает соревнование грабителей!
Панель задач
Приведенный ниже фрагмент стека генерирует списки лидеров для полицейских и грабителей, а также перечисляет все ответы, которые еще можно взломать. Дайте мне знать, если что-то не работает должным образом, и я постараюсь исправить это как можно скорее. Если вы можете подумать о дополнительных функциях, которые сделают панель более полезной, оставьте комментарий.
/* 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>
Ответы:
Пробуждение , 17 байт
Согласно официальному сайту ,
Wake был создан Shinh и может быть протестирован на его гольф-сервере Anarchy Golf .
Код состоит из одной строки, содержащей цель / метку и действие. Поскольку действие является строковым литералом, оно печатается в STDOUT.
Использование
"
для цели служило двум целям:Обеспечивает защиту полиглота.
Клип и фу печать
:
; GolfScript и CJam вызывают синтаксическую ошибку из-за незавершенной строки.Это обеспечивает небольшую неопределенность в отношении того, как должен работать код.
источник
":
это допустимый префикс строки, и который обрабатывает строковый литерал сам по себе в фактической строке как выходную команду. Или 2: что это подстановка строк, и<foo>:<bar>
удаляет<foo>
из<bar>
. Ectoforte на вики-странице esolangs вроде удовлетворяет 1, но связанный интерпретатор разрывается с двойной кавычкой в метке, и я не знаю, считается ли он языком.TinyBF , 708 байт, взломанный kirbyfan64sos
Это было безумно весело. Все знают, что я могу писать только на одном языке;)
объяснение
Прежде всего, это заняло много-много часов, поэтому я в восторге от всех положительных реакций и попыток взломать его!
Как отмечается в комментариях, при компиляции в C код печатается
Gotcha!
с новой строкой , но при TinyBF он печатает нужныйHello, World!
. TinyBF является простой производной BrainF ** к , заменяющего его 8 команд с помощью всего 4:+ > | =
. Поскольку все остальные символы игнорируются, я с радостью мог бы написать программу на C со многими ненужными операторами, чтобы попытаться направить людей в неправильном направлении (что, к моему удивлению, сработало довольно хорошо). Вот чистый код TinyBF:Вот та же программа, написанная на обычном BF:
Вы можете использовать этот интерпретатор для преобразования из BF в TinyBF и для запуска кода.
источник
main()
. Может ли это быть C? http://codepad.org/pj9mQgyQ (Примечание:Gotcha!
I,c,o,d,e,C;i;main()
них будет проигнорировано (кроме,;
но это не кажется важным), и большое количество!
которых используется для вывода символов ASCII, может быть признаком того, что это так. Я не могу скачать переводчик Fission и проверить прямо сейчас.зло , 658 байт, взломано Sp3000
зло - это старый эсоланг, немного похожий на БФ. Все команды состоят из строчных букв, а другие символы просто игнорируются.
Во-первых, я сгенерировал короткую привет программу мирового зла, используя Python:
Затем, снова используя Python, я преобразовал его в строку base64:
Это декодирует в чисто строчные буквы:
Я добавил несколько других вещей в строку base64, а затем записал их как программу Python выше.
Шебанг действительно важен в программе. Команда The
s
beforeb
insbin
пропуститb
команду. Затемf
infortran
будет сканировать вперед до следующегоm
символа, который находится в строке base64.источник
aeeeaeee...
смешиваются со случайными символами, так что результирующая строка является допустимой строкой base64. Я выбрал случайные символы так, чтобы полученная строка расшифровывалась с помощью base64 в строчные буквы, но декодированная строка на самом деле не имеет значения - это просто отвлечение. Единственное, что имеет значение, это то, что зло выполнит строку base64, но проигнорирует прописные буквы и несколько строчных букв, поскольку они не являются командами, оставляя программу hello world.Луа,
29202865 байт, взломанный jimmy23013Я только выучил этот язык вчера, так что простите за любые синтаксические ошибки.
Предупреждение: на нем напечатано «Привет, мир!» а затем выходит с ошибкой
Объяснение:
В Lua - [[означает многострочный комментарий, - означает однострочный комментарий, а [[- многострочная строка.
Если вы прокрутите всю строку до первой строки, вы увидите очень подозрительный p = [[. Это определение многострочной строки, которая начинается от «Ромео, молодой человек» до «Позвольте им]]», на которую большинство людей смотрит, но фактически заканчивает многострочную строку. Затем у нас есть print, которая является функцией печати, а затем «-» делает оставшуюся часть комментария. Нам нужно поместить некоторое пространство между печатным изданием и Hello World, чтобы мы не отдавали его, поэтому у нас есть многострочный комментарий: «- [[Ромео рыдает, испытывает отвращение к его жизни) - Ты такой же резкий, как зловоние козла. Выскажи свой разум! [[Exeunt Romeo]] "The]] в конце заканчивает многострочный комментарий, а после строки" Hello, World! " а затем остальная часть строки закомментирована с -.
источник
Hello, world!
, а неHello, World!
.ТРАНСКРИПТ , 39 байт
Вот хороший и простой.
Первый безопасный полицейский! Я удивлен, что это длилось до конца - я пытался выбрать язык, который было бы трудно найти напрямую, но было бы легче взломать, если бы вы могли угадать тему.
TRANSCRIPT - это esolang, основанный на интерактивных игровых играх. У него есть NPC (строки) и объекты (целые числа). Вот
End
имя NPC.Первая строка объявляет NPC с синтаксисом
<name> is here.
. Затем вторая строка назначает NPC строку"Hello, World!"
, а третья строка печатает строку с помощьюX / EXAMINE
команды. Здесь не так много места для запутывания, поэтому все, что я сделал, это выбрал что-то, что обычно не является названием для NPC.Чтобы доказать, что TRANSCRIPT является допустимым языком для этой задачи, вот программа, которая проверяет, является ли входное натуральное число простым или нет:
Как примечание, я на самом деле нервничал с момента предположения @ aditsu, которое было очень близко. Inform 7 - это язык для создания интерактивных игровых игр, которых я даже не знал.
В знак признательности за попытку aditsu, я дал Inform 7 попытку:
А вот пример прогона:
источник
Headsecks , 637 байт, взломанные Денисом
Headsecks - это кодирование в BF через кодовые точки по модулю 8. Приведенная выше программа при преобразовании дает
Там много бесполезных пар, таких как
+-
или<>
там, и удаление их даетВы можете заметить, что в нескольких циклах есть
,
(входные данные) - эти циклы никогда не запускаются и служат просто для добавленияe
s в программу, которая в противном случае подозрительно имела бы толькоa
s иi
s в качестве своих единственных гласных.Синтаксис, backticks, посторонние
)
и т. Д. Все были красные сельди.источник
herrings are red
??? , 344 байта, взломан jimmy23013
Вот hexdump файла:
Я начал с программы Piet, которая печатает
Hello, world!
. Само изображение содержало несколько действительных ??? инструкции (,,,!;
), но недостаточно, чтобы вызвать проблемы.Последующий ??? Программа производит желаемый вывод и заканчивается инструкциями на изображении:
Чтобы скрыть его внутри изображения, я увеличил количество цветов в глобальной палитре с 32 до 64 (это то, что указывает байт 0x85 в первой строке) и заменил первые 110 байтов неиспользуемых цветов в палитре на первые 110 байты ??? программа.
Результатом является первый в истории Piet / ??? полиглот.
источник
w
и, зная Денниса, это, вероятно, будет не так просто: P??? , 1052 байта, взломано Алексеем А.
источник
Treehugger , 284 байта, взломан Sp3000
Эта программа будет работать как минимум на 4 языках. Однако только один из них дает правильный результат ...
Объяснение:
После того, как вы удалите все игнорируемые символы, вы получите это:
Удаление некоторых безоперационных комбинаций символов дает это:
Что по сути является переводом Brainf *** "Hello World!" но с некоторым дополнительным кодом (
<++++++++++++++++++++++++++++++++++++++++++++.^
), чтобы добавить запятую.источник
HelloHelloHello
in Thue^
приходилось думать о варианте BF, где он был значительным, и по какой-то причине он не был отнесен к категории производных BF.Звездный , 3039 байт, взломан Sp3000
Вот кое-что, чтобы вы начали.
Во-первых, Starry игнорирует все, кроме пробелов и
+*.,`'
. Итак, давайте избавимся от всего этого барахла:Теперь каждая строка пробелов, за которой следует не пробел, является одной командой. Семантика команды определяется количеством пробелов и тем, какой не пробел используется. Для начала обратные пометки создают только метки, к которым мы никогда не переходим, поэтому мы можем избавиться от них:
На данный момент это почти точно пример Hello World на странице esolangs , за исключением того, что мне пришлось изменить его, чтобы получить заглавные буквы
W
.Таким образом, чтобы запутать это, я сначала добавил в обратные галочки, потому что они не вызывали никаких проблем (я не мог добавить
,
или'
, потому что они - ввод и переходы, соответственно). А потом я просто добавил случайные символы, отличные от зарезервированных, так что частота всех непробельных символов примерно одинакова.источник
Brainfuck , 2545 байт, взломанный Sp3000
Просто для удовольствия.
источник
Деление , 67 байт, взломано BrainSteel
Вот еще один, который должен быть немного проще.
источник
R
в методеwrite
прописной?Q , 64 байта, взломанные Mauris
Объяснение:
KDB + имеет свой собственный протокол сообщений / формат сериализации , который можно применять к строкам как таковым:
Это дает нам длинную шестнадцатеричную строку выше. Конверсия, если вы еще не догадались, это
-9!
.Чтобы распечатать его
Hello, World!
точно так же, я должен использовать-1
это. Немного досадно, но и сам номер будет напечатан, поэтому;
для его подавления используется завершающий символ.( это был хороший пробег чуть более 2 дней! )
источник
Логотип , 14292 байта, взломан Гаретом МакКоаном
Объяснение:
make
присваивает значение переменной. В данном случаеmake 'clean
это просто запутывание, присвоение переменной списка в квадратных скобках,clean
а затем ничего с ней не делать.type char count
используется для распечатки символа на основе количества элементов в списке в квадратных скобках, который следует за ним.type
печатает значение,char
возвращает символ на основе значения ASCII иcount
возвращает количество элементов в списке. Так, например,type char count [ a b c d e f g h i j ]
будет напечатан символ новой строки (значение ASCII 10).Попробуйте это онлайн здесь (вырезать и вставить источник требуется)
источник
Hello, world!
. +1Английский пересмотрен , 36 байт
Этот ответ содержит защиту от SPSS, Foo и Tiny. вздохи
Четыре попытки и еще один ответ на одном языке , но мое представление окончательно безопасно!
объяснение
~ Английский разработан так, чтобы выглядеть как обычный текст, поэтому, вероятно, во втором выпуске добавлен не 2, а пересмотрено название языка.
К счастью, есть псевдонимы функций
Display
иStop
, которые делают английский не похожим на английский.Из этих псевдонимов я выбрал
Echo
иEnd
, который вместе с ключевым словомand
делает исходный код похожим на многословный язык сценариев, а не на esolang.Приговор
приветствует мир и
останавливает выполнение, поэтому последующая защита Foo просто игнорируется интерпретатором.
Вы можете скачать официальный переводчик с GitHub (ссылка на странице Esolang).
источник
Карма , 67 байт
Первая строка помещает все символы в стек, используя очередь для сохранения нескольких байтов. Вторая строка появляется и печатается до 0, который является первым символом в строке 1.
источник
gs2, 3 байта, взломан feersum
В
gs2
:e
или\x65
находитсяproduct
в списках (например, пустой список символов, представляющих STDIN), поэтому он выдвигает int1
.|
или\x7c
естьpower-of-2
, что меняет его на 2 1 = 2.h
или\x68
этоhello
, что это смешно команда. История такова: при разработкеgs2
я ставил перед собой задачу обыграть все языки кода в коде на сервере гольфа Shinh, ноgoruby
у меня есть команда «пасхальное яйцо»,h
которая печатаетHello, world!
(обратите внимание на строчную букву w), что позволяет ему занять первое место в мире приветствия. таблицы лидеров соревнований . Я хотел добавить goruby вверх, поэтому я добавил свою собственную команду «пасхальное яйцо»,h
которая помещаетHello, world!
в стек, но позволяет настраивать заглавные буквы и знаки препинания, помещая перед ним целое число:Как вы можете видеть, глядя на
s2 =
линии, если есть число2
на вершине стека, он будет получать заменены с изменением верхнего регистра-W:Hello, World!
.источник
U+2062 INVISIBLE TIMES
, что это символы, которые невидимы, но не являются пробелами, поэтому они дополняют длину сообщения до 30+ символов.maurisvh authored 5 days ago
я все равно угадаю.)> <>, 353 байта, взломан Sp3000
Как обнаружил Sp3000, это программа> <>. Все неиспользуемые пробелы и символы заменены на. символ для читабельности.
источник
MarioLANG , 549 байт, взломан Sp3000
Мне очень понравилось это. Вот краткий обзор того, как я создал код:
Я начал с Brainfuck "Привет, мир!" на есолангах:
Мне пришлось немного изменить его, чтобы добавить запятую, но давайте проигнорируем детали ...
BF можно довольно легко преобразовать в ML: изменить
>
и<
на)
и(
соответственно. Добавьте основной этаж под программой. Затем реализуйте петли через вспомогательные полы и лифты. Это превращает вышеуказанную программу в:Это рабочий "Hello World!" программа в мариоланге. (Этот код соответствует неправильному «Hello World!» На esolangs, а не обфусцированному коду ML выше.)
К этому моменту мы можем немного поиграть в код, фактически переместив часть кода цикла на вспомогательный этаж. Теперь я перехожу к фактическому коду из этого ответа:
А теперь фактическое запутывание: я подумал, что
=
это будет мертвая распродажа для Sp3000, который знал язык (он использовал его в Evolution of OEIS). Но у MarioLANG также есть «стены» вместо «этажей», представленные|
. Хотя они функционально идентичны, поэтому я использовал менее общий символ. Я также полагал, что свисающий пол будет выглядеть подозрительно, поэтому я добавил две строки с другими персонажами. Для большей ясности я снова добавил первую строку в конец и сделал отступы в средней строке противоположными символами первой строки. Я также добавил соответствующие квадратные скобки (которые игнорируются MarioLANG), потому что я подумал, что непревзойденный[
может быть еще одним сильным намеком. Наконец, я написал сценарий CJam, чтобы разбить ровно 13=
на случайные позиции пола (13, потому что этоHello, World!
) и изменил символы дополнения в четвертом ряду, чтобыHelo, Wrd!
они выглядели так, как будто я читаю символы из исходного кода, как в ответе Befunge. Вуаля, запутанный MarioLANG! :)источник
ULDR
чтобы вообще инициировать любой поток управления. Так что нет. ;)UNBABTIZED , 77 байт
верификация
Вы можете найти официальный сайт и переводчика здесь .
Как отмечалось на сайте, интерпретатор был написан для Python 2.2, который допускал использование символов не-ASCII в исходном коде. Вы можете скачать Python 2.2.3 1 или исправить его для Python 2.7, вставив следующую строку в начале интерпретатора:
Как это устроено
Прежде всего, пробел не должен быть разрешен в исходном коде в соответствии с веб-сайтом, но пробел после пробела после полной инструкции, похоже, не вызывает проблем.
Команда
$0,0
выполняетсяmemory[0] = memory[0] == memory[0]
, что никак не помогает приветствию Мира. Я добавил эту команду исключительно для отвлечения от того факта, что.
действует разделитель операторов.Остальная часть кода состоит из тринадцати
:x
команд, которые записывают символ с кодовой точкой x в STDOUT.Необъясненная версия исходного кода будет выглядеть так:
1 Компиляция Python 2.2.3 была на удивление беспрецедентной для openSUSE 13.2.
make
,make install
И полученный исполняемый файл все напечатали много предупреждений, но UNBABTIZED работал , как предполагалось.источник
FUEUE: UNKNOWN , OP
14 раз, затемHHeelllloo,, WWoorrlldd!!
, не выходя из программы.$
начинает литерал Python, что приводит к синтаксической ошибке.Более высокий Subleq , 52 байта, взломанный Джоном У. Смитом
На самом деле это не похоже на esolang, но ни один здравый C-производный не будет реализован
puts
без неявного перевода строки.источник
Маскарпоне, 30 байт, взломанный Sp3000
Стек на основе? Может быть...
[!dlroW ,olleH]
помещает все эти символы в стек (да, включая разделители);$
всплывает]
; а затем.
каждый из них печатает один символ. Программа завершает работу с[
персонажем, все еще находящимся в стеке.Я бы сделал вывод использовать цикл, но я не могу понять, как они работают ...
источник
$
выдает его,]
который по какой-то причине получаетВихрь , 12302 байта, взломанный Артёмом
Whirl игнорирует все, кроме 1 и 0. Я также изменил другие цифры случайным образом, но они не имеют значения. Когда вы сохраняете только 1 и 0, вы получаете «Привет, мир!» пример :)
источник
GNU bc, 36 байт
Foo -immune версия моей предыдущей попытки .
Для этого требуется версия GNU (или любая другая версия с
print
функцией) bc. Первая строка предназначена для обфускации: в bc переменные не должны объявляться и инициализируются с помощью0
, поэтому у нас бесполезное присваивание, но с допустимым синтаксисом. Вторая строка просто печатаетсяHello, World!
.источник
module
илиpackage
, так что, думаю, оно не скомпилируется. Может быть, это работает в REPL, но это не разрешено.main = do:
).Шеф-повар, 1943 байт, взломанный Angew
источник
APL, 39 байт, взломанный Mauris
Эффективность это все.
Это работает в демоверсии ngn-apl .
Запутывание APL - непростая задача, если мы хотим, чтобы оно выглядело не так, как APL.
Вот чего я добился:
Двойные кавычки не работают на всех диалектах. Дьялог, например, их не поддерживает.
ngn / apl - единственный известный мне диалект, который по умолчанию использует индексацию с нуля.
Запятых там не должно быть.
Векторные элементы обычно разделяются пробелами при написании APL. Тем не менее,
,
объединяет, поэтому код в скобках объединяет 13 одиночных.(Немного) несложная и более портативная версия кода будет выглядеть
который работает в TryAPL , GNU APL.js и демоверсии ngn / apl .
источник
ngn-apl
, по крайней мере)Мышь , 105 байт
Вы можете получить переводчика для Mouse, написанного на C, здесь .
Мышь использует обратную польскую запись, поэтому операторы следуют за операндами. (Подумайте о Лиспе в обратном направлении.) Присвоение переменной выполняется с использованием,
<variable>:
а вызов значения переменной выполняется как<variable>.
. Все значения в Mouse являются целыми числами.!
выводит целое число и!'
выводит символ ASCII, связанный с целым числом. Весь вывод идет в STDOUT.По любой причине все действующие программы должны заканчиваться
$
.источник
Haskell , 637 байт
Видео деобфускации
источник
Wordfuck , 1063 байта, взломанный Мартином Бюттнером
Обратите внимание, что окончания строк должны быть в стиле Unix.
источник
Многословный , 3279 байт
Как я намекал в комментариях, этот стог сена в основном игольный.
Мы можем приветствовать Мир, выполняя следующие инструкции:
Wordy кодирует все инструкции как предложения, где часть слов, которые длиннее и короче округленного среднего, выбирает команду.
Самые короткие предложения, которые я мог найти для использованных инструкций:
Но как можно скрыть тот факт, что длина слова является единственной важной вещью в исходном коде?
Ни порядок слов, ни выбранные символы слов не имеют значения, если они буквенно-цифровые, поэтому я решил добавить случайные не алфавитно-цифровые символы к каждому слову, чтобы дополнить их все до одинаковой длины. Я также добавил несколько не-слов (без буквенно-цифровых символов), чтобы придать исходному коду приятную прямоугольную форму.
Я сгенерировал окончательный исходный код, используя эту программу CJam .
источник