Nel 1984, Michael Crichton scrisse un programma di sicurezza in BASIC che fu pubblicato sulla rivista Creative Computing. Il programma chiederebbe all'utente di digitare una frase di sua scelta, registrare gli intervalli tra i tasti, quindi chiederle di digitare nuovamente la frase. Se i tempi differissero eccessivamente, il programma identificherebbe l'utente come impostore.
Il tuo compito: crea una versione del programma di Crichton nella lingua che preferisci.
Regole:
Le frasi per comunicare con l'utente ("Digitare la frase chiave", "Digitare nuovamente la frase chiave", ecc.) Contano come un byte ciascuna indipendentemente dalla lunghezza effettiva. Questo è solo per la comunicazione dell'utente, non tentare di nascondere il codice del programma nelle stringhe.
Il test di superamento / superamento dovrebbe basarsi sul valore assoluto medio delle variazioni percentuali rispetto agli intervalli originali. Se le stringhe non corrispondono, restituire non riesce o consentire all'utente di riprovare, a propria discrezione.
La frase chiave non deve consentire una stringa nulla. Nel caso in cui la frase chiave sia troppo lunga per il tipo di dati della stringa, troncare o non consentire e ricominciare, a propria discrezione.
La sensibilità del test (la soglia per il test pass / fail) dovrebbe essere regolabile nel codice sorgente.
Inizialmente ho fornito un bonus del 20% del numero totale di byte se il tuo codice sorgente può essere formattato in modo da assomigliare in modo riconoscibile a un dinosauro. È stato sottolineato che questo è altamente soggettivo e forse più appropriato per un concorso di popolarità, quindi ho rimosso questo bonus. però incoraggio ancora di cuore la formattazione dei dinosauri e, se formatti il tuo codice per sembrare un dinosauro, puoi dedurre qualsiasi commento puramente cosmetico, interruzione di riga o caratteri di spazi bianchi dal totale dei byte.
Vince il conteggio dei byte più corto, soggetto a regolazioni della lunghezza della stringa e della formattazione dei dinosauri.
Nota che le mie specifiche di cui sopra non corrispondono esattamente al funzionamento del codice di Crichton, le cui copie possono essere trovate online. Segui le specifiche, non provare a clonare l'originale.
"Please type the key phrase"conta come 1 byte o conta solo la frase e la frase citata conta come 3 byte ( ", frase, ")? È intenzionale che un intervallo molto più lungo e un intervallo molto più breve si "annullino" e diventino ancora una volta? Il programma deve verificare che le due frasi chiave corrispondano?