Це частина виклику копів та грабіжників . Ідіть сюди за грабіжниками.
Виклик копів
Ви повинні написати програму або функцію на обраній вами мові, яка виводить рядок Haystack
. Однак повинно бути можливість видалити деяку підмножину символів із вашої програми (не упорядковуючи решту), так що результуюча рядок також є дійсною програмою на тій же мові, яка друкує Needle
замість цього. Обидві програми / функції необов'язково можуть надрукувати один зворотний рядок (незалежно один від одного), але нічого іншого. Вихідні дані залежать від регістру і повинні відповідати точному корпусу.
Ваша мета, звичайно, дуже добре сховати «голку». Але зауважте, що ваше подання може зламати будь-яке дійсне рішення, а не лише те, що ви задумали.
Будь ласка, включіть у свою відповідь:
- Мова (та версія, якщо вона доречна) вашої заявки.
- Розмір програми сіна в байтах.
- Сама програма сіна.
- Метод виводу, якщо він не є STDOUT.
- Якщо можливо, посилання на онлайн-перекладача / упорядника для обраної вами мови.
Ваше повідомлення може бути або програмою, або функцією, але не фрагментом, і ви не повинні приймати середовище REPL. Ви не повинні приймати жодного вводу, і ви можете виводити через STDOUT, значення повернення функції або параметр функції (out).
Обидві програми / функції повинні виконатись протягом 5 секунд на розумному настільному верстаті і потребують детермінованості. Ви не повинні використовувати вбудовані модулі для хешування, шифрування чи генерації випадкових чисел (навіть якщо ви встановите генератор випадкових чисел до фіксованого значення).
В інтересах справедливості має бути вільно доступний перекладач або упорядник для обраної вами мови.
Якщо буде знайдена програма Needle, відповідь зламається. Якщо ваша відповідь не була взломана 7 днів, ви можете виявити у своїй відповіді передбачувану програму Needle, яка зробить ваше подання безпечним. Поки ви не розкриєте своє рішення, воно може все-таки зламатись грабіжниками, навіть якщо 7 днів вже минуло. Виграє найкоротша безпечна програма з сіна (вимірюється в байтах).
Приклади
Ось кілька простих прикладів на різних мовах:
Ruby
Haystack: puts 1>0?"Haystack":"Needle"
Delete: XXXXXXXXXXXXXXX
Needle: puts "Needle"
Python 2
Haystack: print "kcatsyaHeldeeN"[-7::-1]
Delete: XXXXXXXX XX
Needle: print "eldeeN"[::-1]
Зауважте, що підмножина видалених символів не повинна бути суміжною.
Невикористані подання
<script>site = 'meta.codegolf'; postID = 5686; isAnswer = false; QUESTION_ID = 144600;</script><script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>jQuery(function(){var u='https://api.stackexchange.com/2.2/';if(isAnswer)u+='answers/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJeRCD';else u+='questions/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJO6t)';jQuery.get(u,function(b){function d(s){return jQuery('<textarea>').html(s).text()};function r(l){return new RegExp('<pre class="snippet-code-'+l+'\\b[^>]*><code>([\\s\\S]*?)</code></pre>')};b=b.items[0].body;var j=r('js').exec(b),c=r('css').exec(b),h=r('html').exec(b);if(c!==null)jQuery('head').append(jQuery('<style>').text(d(c[1])));if (h!==null)jQuery('body').append(d(h[1]));if(j!==null)jQuery('body').append(jQuery('<script>').text(d(j[1])))})})</script>