Ispirato da questo commento ...
Grazie agli utenti Step Hen , Wheat-Wizard e Dennis per avermi aiutato a consolidare le specifiche di questa sfida prima di inviarla!
Questo è il filo del ladro! Per il thread della polizia, vai qui
In questa sfida , ti viene assegnato il compito di eseguire un codice che lo rende in modo che il tuo linguaggio non soddisfi più i nostri criteri di essere un linguaggio di programmazione. In quella sfida, ciò significa far sì che la lingua non possa più ...
Accetta input e output numerici
Aggiungi due numeri insieme
Verifica se un determinato numero è un numero primo o no.
Questa è una sfida di poliziotti e ladri , in cui ci sono due sfide diverse con due obiettivi diversi: i poliziotti proveranno a scrivere del codice che rende la lingua per lo più inutilizzabile, e i ladri cercheranno di trovare la soluzione alternativa nascosta che consente ai poliziotti per recuperare la loro lingua.
I poliziotti scriveranno due frammenti di codice:
Uno che rende la loro lingua per lo più inutilizzabile, ad esempio rimuovendo le funzioni integrate per eseguire input / output e operazioni numeriche. Questo codice non può bloccarsi o uscire. Dovrebbe essere possibile aggiungere il codice alla fine di questo frammento e quel codice verrà valutato . E
Uno snippet di codice che accetta due numeri come input, li somma e genera la loro somma. Questo snippet deve funzionare correttamente anche dopo aver eseguito il primo snippet. Quando i due frammenti sono combinati insieme, devono formare un programma completo che aggiunge due numeri o definire una funzione che aggiunge due numeri. Questo frammento probabilmente farà affidamento su comportamenti oscuri ed è difficile da trovare.
I poliziotti sceglieranno anche qualsiasi metodo standard di input e output . Tuttavia, devono rivelare esattamente quale formato (input e output) stanno utilizzando. Per decifrare la loro risposta, è necessario seguire lo stesso formato di input / output, altrimenti il crack non conta.
Una risposta della polizia rivelerà sempre
Il primo frammento (ovviamente non il secondo).
Lingua (inclusa la versione minore, poiché la maggior parte degli invii si baserà probabilmente su strani casi limite)
Formato IO, incluso se si tratta di una funzione o di un programma completo. I ladri devono usare lo stesso formato per essere un crack valido.
Eventuali strani casi limite necessari affinché la loro risposta funzioni. Ad esempio, funziona solo su Linux o richiede una connessione a Internet .
Nei panni di un ladro, devi guardare uno degli invii della polizia e tentare di decifrarlo. Puoi decifrarlo scrivendo qualsiasi snippet valido che possa funzionare come snippet 2 (sommando due numeri insieme dopo che la lingua è diventata per lo più inutilizzabile). Questo non deve essere lo stesso frammento che il poliziotto ha originariamente scritto. Dopo aver risolto una risposta, pubblica il tuo codice come risposta su questa discussione e pubblica un link alla tua risposta come commento sulla risposta del poliziotto. Quindi, quel post verrà modificato per indicare che è stato crackato.
Ecco un esempio Per il primo frammento, potresti vedere il seguente programma python 3 come risposta alla polizia:
Python 3
print=None
Riceve input da STDIN e output su STDOUT
Potrebbe essere un secondo frammento valido
import sys
a,b=int(input()),int(input())
sys.stdout.write(a+b)
Questo è valido perché prenderà due numeri come input e produrrà la loro somma anche se unisci i due frammenti insieme, ad es.
print=None
import sys
a,b=int(input()),int(input())
sys.stdout.write(a+b)
Questa è una crepa valida per la loro risposta.
Se la risposta di un poliziotto rimane senza crack per un'intera settimana, può modificare nel secondo frammento e indicare che la sua risposta è ora sicura . Una volta modificato per sicurezza, non è più possibile tentare di decifrarlo. Se non lo modificano come sicuro, puoi continuare a provare a romperlo fino a quando non lo fanno.
Il vincitore del thread del ladro è l'utente che ha decifrato il maggior numero di risposte, con il tie-breaker che ha raggiunto N volte . (quindi se due diversi utenti hanno ciascuno 5 crepe, ad esempio, l'utente che ha pubblicato per primo la sua 5a crepa è il vincitore) Dopo che è trascorso un tempo sufficiente, accetterò la risposta del vincitore con il maggior numero di voti.
Divertiti!
Chiarimenti sulle regole
Il primo frammento deve essere eseguito correttamente senza accettare alcun input . Potrebbe emettere qualsiasi cosa tu voglia, e questa uscita verrà ignorata. Finché il frammento è terminato, il secondo frammento viene eseguito correttamente.
Il secondo frammento deve essere effettivamente eseguito affinché la risposta sia valida. Questo significa una risposta come
import sys sys.exit()
non è valido perché non rompe la lingua. Si chiude semplicemente.
Dopo essere sicuro, il tuo punteggio è il conteggio dei byte di entrambi i frammenti .
Questo torna a Si prega di rivelare eventuali strani casi limite necessari affinché la tua risposta funzioni ... La tua presentazione deve contenere abbastanza informazioni prima di essere rivelata per essere riproducibile dopo essere stata rivelata. Ciò significa che se la tua risposta diventa sicura, e poi modifichi in: Ecco la mia risposta. Oh ya, a proposito questo funziona solo se lo esegui su Solaris, scherzi su di te! la tua risposta non è valida e verrà eliminata e non considerata idonea alla vincita.
Il secondo frammento può arrestarsi in modo anomalo dopo aver emesso la somma. Finché l'output è ancora corretto (ad esempio, se si sceglie di eseguire l'output su STDERR e quindi si ottengono un sacco di informazioni sull'arresto anomalo, questo non è valido)
Classifica
Ecco un elenco di ogni utente con almeno un crack, ordinato per punteggio e quindi nome (in ordine alfabetico). Se invii una crack, aggiorna il tuo punteggio di conseguenza.
#User #Score
Ilmari Karonen 8
Dennis 5
Olivier Grégoire 4
Sisyphus 3
Veedrac 3
Arnold Palmer 2
Bruce Forte 2
DJMcMayhem 2
Dom Hastings 2
ppperry 2
1bluston 1
2012rcampion 1
Ben 1
BlackCap 1
Christian Sievers 1
Cody Gray 1
HyperNeutrino 1
Joshua 1
Kaz 1
Mark 1
Mayube 1
Xnor 1
zbw 1
SecurityManager
che fosse nell'ambito ... Puoi anche leggere daSystem.in
questo punto, perché non è ancora chiuso.