Questa è una sfida di poliziotti e ladri. Questo è il filo del poliziotto. Il filo del ladro è qui .
Come poliziotto, devi scegliere qualsiasi sequenza dall'OEIS e scrivere un programma p che stampa il primo intero da quella sequenza. È inoltre necessario trovare qualche stringa s . Se si inserisce s da qualche parte in p , questo programma deve stampare il secondo numero intero dalla sequenza. Se si inserisce s + s nella stessa posizione in p , questo programma deve stampare il terzo intero dalla sequenza. s + s + s nella stessa posizione stamperà il quarto, e così via e così via. Ecco un esempio:
Python 3, sequenza A000027
print(1)
La stringa nascosta è di due byte .
La stringa è +1
, poiché il programma print(1+1)
stamperà il secondo numero intero in A000027, il programma print(1+1+1)
stamperà il terzo numero intero, ecc.
I poliziotti devono rivelare la sequenza, il programma originale p e la lunghezza della stringa nascosta s . I ladri decifrano un invio trovando qualsiasi stringa fino a quella lunghezza e la posizione in cui inserirla per creare la sequenza. La stringa non deve necessariamente corrispondere alla soluzione prevista per essere un crack valido, né la posizione in cui è inserita.
Regole
La soluzione deve funzionare per qualsiasi numero nella sequenza, o almeno fino a un limite ragionevole in cui non riesce a limitare la memoria, overflow di interi / stack, ecc.
Il rapinatore vincente è l'utente che ha la maggior parte delle richieste, con il tiebreaker che ha raggiunto per primo quel numero di crepe.
Il poliziotto vincente è il poliziotto con la stringa più corta s che non è spezzata. Tiebreaker è il p più breve . Se non ci sono invii non crackati, il poliziotto che aveva una soluzione non crackata per le vittorie più lunghe.
Per essere dichiarata sicura, la soluzione deve rimanere senza crack per 1 settimana e quindi mostrare la stringa nascosta (e la posizione per inserirla).
s non può essere nidificato, deve essere concatenato end-to-end. Ad esempio, se s è stato
10
, ogni iterazione andrebbe10, 1010, 101010, 10101010...
piuttosto che10, 1100, 111000, 11110000...
È accettabile iniziare dal secondo termine della sequenza anziché dal primo.
Se la sequenza ha un numero finito di termini, andare oltre l'ultimo termine può comportare un comportamento indefinito.
Tutte le soluzioni crittografiche (ad esempio il controllo dell'hash della sottostringa) sono vietate.
Se s contiene caratteri non ASCII, è necessario specificare anche la codifica utilizzata.