La sfida
Una semplice sfida "spia contro spia".
Scrivi un programma con le seguenti specifiche:
- Il programma può essere scritto in qualsiasi lingua ma non deve superare i 512 caratteri (come rappresentato in un blocco di codice su questo sito).
- Il programma deve accettare 5 numeri interi a 32 bit con segno come input. Può assumere la forma di una funzione che accetta 5 argomenti, una funzione che accetta un singolo array di 5 elementi o un programma completo che legge 5 numeri interi da qualsiasi input standard.
- Il programma deve emettere un numero intero a 32 bit con segno.
- Il programma deve restituire 1 se e solo se i cinque ingressi, interpretati come una sequenza, corrispondono a una specifica sequenza aritmetica a scelta del programmatore, chiamata "chiave". La funzione deve restituire 0 per tutti gli altri ingressi.
Una sequenza aritmetica ha la proprietà che ogni elemento successivo della sequenza è uguale al suo predecessore più una costante fissa a
.
Ad esempio, 25 30 35 40 45
è una sequenza aritmetica poiché ogni elemento della sequenza è uguale al suo predecessore più 5. Allo stesso modo, 17 10 3 -4 -11
è una sequenza aritmetica poiché ogni elemento è uguale al suo predecessore più -7.
Le sequenze 1 2 4 8 16
e 3 9 15 6 12
non sono sequenze aritmetiche.
Una chiave può essere qualsiasi sequenza aritmetica di tua scelta, con la sola limitazione che le sequenze che comportano un overflow di numeri interi non sono consentite. Cioè, la sequenza deve essere rigorosamente crescente, rigorosamente decrescente o avere tutti gli elementi uguali.
Ad esempio, supponiamo di scegliere la chiave 98021 93880 89739 85598 81457
. Il programma deve restituire 1 se gli ingressi (in sequenza) corrispondono a questi cinque numeri e 0 in caso contrario.
Si noti che i mezzi per proteggere la chiave dovrebbero essere del proprio nuovo design. Inoltre, non sono consentite soluzioni probabilistiche che potrebbero restituire falsi positivi con qualsiasi probabilità diversa da zero. In particolare, non utilizzare hash crittografici standard, incluse le funzioni di libreria per hash crittografici standard.
Il punteggio
Il numero / i invii più brevi non crackati per numero di personaggi saranno dichiarati vincitori.
In caso di confusione, non esitare a chiedere o commentare.
La contro-sfida
Tutti i lettori, compresi quelli che hanno presentato i propri programmi, sono incoraggiati a "infrangere" i contributi. Un invio viene decifrato quando la sua chiave viene pubblicata nella sezione commenti associati. Se un invio persiste per 72 ore senza essere modificato o crackato, viene considerato "sicuro" e qualsiasi successivo successo nel cracking verrà ignorato per motivi di contest.
Vedi "Disclaimer" di seguito per i dettagli sulla politica aggiornata del punteggio di cracking.
Gli invii incrinati vengono eliminati dalla contesa (a condizione che non siano "sicuri"). Non dovrebbero essere modificati. Se un lettore desidera presentare un nuovo programma, deve farlo in una risposta separata.
I cracker con il punteggio più alto saranno dichiarati vincitori insieme agli sviluppatori dei programmi vincenti.
Si prega di non crackare la propria richiesta.
Buona fortuna. :)
Classifica
Penultima classifica (in attesa della sicurezza della presentazione di Dennis 'CJam 49).
Armadietti sicuri
- CJam 49, Dennis
- CJam 62, Dennis al sicuro
- CJam 91, Dennis al sicuro
- Python 156, Maarten Baert al sicuro
- Perl 256, sicuro Cile
- Java 468, Geobits sicuro
Crackers inarrestabili
- Peter Taylor [Ruby 130, Java 342, Mathematica 146 *, Mathematica 72 *, CJam 37]
- Dennis [Pyth 13, Python 86 *, Lua 105 *, GolfScript 116, C 239 *]
- Martin Büttner [Javascript 125, Python 128 *, Ruby 175 *, Ruby 249 *]
- Tyilo [C 459, Javascript 958 *]
- freddieknets [Mathematica 67 *]
- Ilmari Karonen [Python27 182 *]
- nitroso [C 212 *]
* invio non conforme
Dichiarazione di non responsabilità (aggiornata alle 23:15 EST, il 26 agosto)
Con i problemi di punteggio che finalmente raggiungono la massa critica (dato che due terzi degli invii crackati sono finora non conformi), ho classificato i migliori cracker in termini di numero di invii crackati (primario) e numero totale di personaggi in invii crackati conformi (secondario).
Come in precedenza, le richieste esatte sono state violate, la lunghezza delle comunicazioni e il loro stato conforme / non conforme sono tutti contrassegnati in modo che i lettori possano dedurre le proprie classifiche se ritengono che le nuove classifiche ufficiali siano inique.
Mi scuso per aver modificato le regole così tardi nel gioco.