Questo fa parte di una sfida di poliziotti e ladri . Vai qui per la parte dei ladri.
La sfida della polizia
Dovresti scrivere un programma o una funzione in una lingua a tua scelta, che genera la stringa Haystack
. Tuttavia, deve essere possibile rimuovere alcuni sottoinsiemi di caratteri dal programma (senza riordinare il resto), in modo che la stringa risultante sia anche un programma valido nella stessa lingua, che stampa Needle
invece. Entrambi i programmi / funzioni possono opzionalmente stampare una nuova riga finale (indipendentemente l'una dall'altra), ma nient'altro. L'output fa distinzione tra maiuscole e minuscole e deve seguire il case esatto fornito.
Il tuo obiettivo, ovviamente, è nascondere molto bene l '"ago". Ma tieni presente che il tuo invio può essere decifrato con qualsiasi soluzione valida, non solo quella che volevi.
Si prega di includere nella risposta:
- La lingua (e la versione se pertinente) della tua richiesta.
- La dimensione del programma Haystack in byte.
- Il programma Haystack stesso.
- Il metodo di output se non è STDOUT.
- Se possibile, un collegamento a un interprete / compilatore online per la lingua scelta.
L'invio può essere un programma o una funzione, ma non uno snippet e non è necessario assumere un ambiente REPL. Non devi accettare alcun input e puoi emetterlo tramite STDOUT, valore di ritorno della funzione o parametro di funzione (out).
Entrambi i programmi / funzioni devono essere completati entro 5 secondi su una macchina desktop ragionevole e devono essere deterministici. Non è necessario utilizzare gli incorporamenti per hash, crittografia o generazione di numeri casuali (anche se si semina il generatore di numeri casuali su un valore fisso).
Nell'interesse dell'equità, ci deve essere un interprete o un compilatore liberamente disponibile per la lingua scelta.
Una risposta viene decifrata se viene trovato il programma Needle. Se la tua risposta non è stata decifrata per 7 giorni, potresti rivelare il programma Needle previsto nella tua risposta, il che rende la tua presentazione sicura. Fintanto che non rivelerai la tua soluzione, potrebbe essere comunque violata dai ladri, anche se i 7 giorni sono già passati. Vince il programma Haystack sicuro più breve (misurato in byte).
Esempi
Ecco un paio di semplici esempi in diverse lingue:
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]
Nota che il sottoinsieme di caratteri rimossi non deve essere contiguo.
Sottomissioni non crackate
<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>