Questo è il filo della polizia. Per il thread dei ladri, vai qui .
introduzione
Per questa sfida di Cops / Robbers, i poliziotti scriveranno programmi che producono output e li intrecciano insieme. È compito del ladro separare i programmi della polizia per produrre gli output desiderati.
Regole della polizia
I poliziotti possono usare fino a 256 byte in totale per scrivere tra 2 e 8 programmi (inclusi), tutti i quali devono produrre un output. Tutti i programmi scritti devono essere nella stessa lingua. Gli sbirri "intrecciano" i loro programmi insieme per rendere più difficile per i ladri capire quali sono i programmi.
Ora per una descrizione dell'intreccio. Considera le stringhe che rappresentano i diversi programmi. Il processo di intreccio è la ripetuta estrazione del primo carattere di uno qualsiasi dei programmi e la sua concatenazione fino alla fine di una nuova stringa fino a quando non rimangono più caratteri in nessuno dei programmi. Ad esempio, se due programmi sono lione TIGER, un possibile intreccio è TIliGoEnR. Tuttavia, i programmi non possono essere confusi in alcun modo, quindi RoITEnlGinon è accettabile.
Va notato che quando i caratteri di tutti i programmi tranne uno vengono rimossi dai risultati di un intreccio, il programma rimanente viene mostrato intatto. Rimozione delle lettere TIGERdai TIliGoEnRrisultati in lion.
Tutti i programmi e gli output dei poliziotti devono contenere solo caratteri ASCII stampabili (20-7E) e righe. I programmi non devono contenere errori e devono essere eseguiti in 10 secondi su una macchina ragionevole. Per qualsiasi invio, ci deve essere un interprete gratuito della lingua da qualche parte. Non è consentito aggiungere commenti agli invii, così come l'hashing e altre forme di crittografia. Non sono consentiti programmi vuoti (Siamo spiacenti, bloccato ).
Il poliziotto pubblicherà il codice intrecciato, la lingua, il numero di diversi programmi utilizzati e l'output per ciascun programma. Un grande ringraziamento a Martin per aver scritto questo script CJam per intrecciare automaticamente i tuoi programmi.
I programmi sono considerati sicuri dopo che è trascorsa una settimana dal momento della pubblicazione. A quel punto, i poliziotti devono pubblicare i singoli programmi per ricevere punti.
punteggio
Esistono due componenti che vengono sommati durante il punteggio di un invio sicuro.
- 256 diviso per la quantità 2 elevata alla potenza del numero di programmi utilizzati.
- Arrotondare il numero di byte nell'intreccio fino alla potenza più vicina di 2 e dividerlo in 256.
Ad esempio, se la voce TIliGoEnR(9 byte) fosse sicura, riceverà 256/2 ^ 2 + 256/16 = 80 punti.
Quando la presentazione di un poliziotto viene violata, il poliziotto perde 16 punti. Il poliziotto deve indicare che la sua presentazione è stata violata.
Il vincitore della sfida degli sbirri sarà la persona con il maggior numero di punti dopo un periodo di tempo sufficiente per consentire alle persone di partecipare.
Classifica
Questo è un lavoro in corso che è stato adattato da intrepidcoder da questa domanda .
Per assicurarti che la tua risposta venga visualizzata, inizia la tua risposta con un titolo, usando il modello Markdown esatto :
# Language Name, N programs, M bytes; Score ###/### (if safe/cracked)
Qualsiasi cosa dopo un punto e virgola verrà ignorata, quindi puoi inserire il tuo punteggio lì.
Se l'invio è sicuro, inserisci un'intestazione come questa:
# Language Name, safe, N programs, M bytes; Score ###
Se è rotto, metti un'intestazione come questa:
# Language Name, [cracked](link-to-crack), N programs, M bytes; Score -16
|||esempio) e quindi sostituire il Nnel codice con una stringa contenente il delimitatore, ad es "|||". (@Eridan sentiti libero di includerlo nella sfida.)