To część wyzwania gliniarzy i rabusiów . Idź tutaj po część rabusiów.
Wyzwanie gliniarzy
Powinieneś napisać program lub funkcję w wybranym języku, który wypisze ciąg znaków Haystack
. Jednak musi być możliwe usunięcie niektórych podzbiorów znaków z programu (bez zmiany kolejności pozostałych), tak aby wynikowy łańcuch był również poprawnym programem w tym samym języku, który Needle
zamiast tego drukuje . Oba programy / funkcje mogą opcjonalnie wydrukować pojedynczy znak nowej linii (niezależnie od siebie), ale nic więcej. W danych wyjściowych rozróżniana jest wielkość liter i musi być zgodna z dostarczoną dokładną obudową.
Twoim celem jest oczywiście bardzo dobre ukrycie „igły”. Pamiętaj jednak, że zgłoszenie może zostać złamane za pomocą dowolnego ważnego rozwiązania, nie tylko tego, które zamierzałeś.
Podaj w swojej odpowiedzi:
- Język (i wersja, jeśli dotyczy) Twojego zgłoszenia.
- Rozmiar programu Haystack w bajtach.
- Sam program Haystack.
- Metoda wyjściowa, jeśli nie jest to STDOUT.
- Jeśli to możliwe, link do tłumacza / kompilatora online dla wybranego języka.
Twoje zgłoszenie może być programem lub funkcją, ale nie fragmentem kodu i nie możesz zakładać środowiska REPL. Nie możesz przyjmować żadnych danych wejściowych i możesz generować dane wyjściowe za pomocą STDOUT, wartości zwracanej przez funkcję lub parametru funkcji (wyjściowej).
Oba programy / funkcje muszą zakończyć się w ciągu 5 sekund na rozsądnym komputerze stacjonarnym i muszą być deterministyczne. Nie wolno używać wbudowanych funkcji do mieszania, szyfrowania lub generowania liczb losowych (nawet jeśli generator liczb losowych zostanie ustawiony na stałą wartość).
W trosce o sprawiedliwość musi istnieć darmowy tłumacz lub kompilator dla wybranego przez ciebie języka.
Odpowiedź zostanie złamana, jeśli program Needle zostanie znaleziony. Jeśli twoja odpowiedź nie została złamana przez 7 dni, możesz ujawnić zamierzony program Needle w swojej odpowiedzi, co sprawia, że przesyłanie jest bezpieczne. Dopóki nie ujawnisz swojego rozwiązania, może ono zostać złamane przez rabusiów, nawet jeśli minęło już 7 dni. Najkrótszy bezpieczny program Haystack (mierzony w bajtach) wygrywa.
Przykłady
Oto kilka prostych przykładów w różnych językach:
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]
Zauważ, że podzbiór usuniętych znaków nie musi być ciągły.
Nieprzetworzone zgłoszenia
<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>