W 1984 r. Michael Crichton napisał program bezpieczeństwa w języku BASIC, który został opublikowany w magazynie Creative Computing. Program poprosi użytkownika o wpisanie wybranej frazy, zarejestruje interwały między naciśnięciami klawiszy, a następnie poprosi ją o ponowne wpisanie frazy. Jeśli czasy różnią się zbytnio, program zidentyfikuje użytkownika jako oszusta.
Twoje zadanie: stwórz wersję programu Crichtona w wybranym języku.
Zasady:
Zwroty do komunikacji z użytkownikiem („Wpisz frazę kluczową”, „Wpisz ponownie frazę kluczową” itp.) Liczą się jako jeden bajt bez względu na rzeczywistą długość. Służy to wyłącznie komunikacji użytkownika, nie próbuj ukrywać kodu programu w ciągach znaków.
Test pozytywny / negatywny powinien opierać się na średniej wartości bezwzględnej procentowych odchyleń od pierwotnych przedziałów. Jeśli ciągi nie pasują, albo zwróć błąd, albo pozwól użytkownikowi spróbować ponownie, według własnego uznania.
Fraza kluczowa nie powinna dopuszczać łańcucha zerowego. W przypadku, gdy fraza kluczowa jest za długa dla typu ciągu znaków, możesz ją obciąć lub zabronić i zacząć od nowa, według własnego uznania.
Czułość testu (próg testu pozytywnego / negatywnego) powinna być regulowana w kodzie źródłowym.
Pierwotnie zapewniłem premię w wysokości 20% całkowitej liczby bajtów, jeśli kod źródłowy można sformatować tak, aby przypominał dinozaura. Zwrócono uwagę, że jest to bardzo subiektywne i być może bardziej odpowiednie dla konkursu popularności, więc usunąłem ten bonus. Jednak nadal serdecznie zachęcam do formatowania dinozaurów, a jeśli sformatujesz swój kod, aby wyglądał jak dinozaur, możesz odjąć wszelkie czysto kosmetyczne komentarze, znaki podziału linii lub białe znaki od całkowitej liczby bajtów.
Wygrywa najkrótsza liczba bajtów, z zastrzeżeniem dostosowania długości łańcucha i formatowania dinozaura.
Zauważ, że moja powyższa specyfikacja nie do końca pasuje do działania kodu Crichtona, którego kopie można znaleźć w Internecie. Postępuj zgodnie ze specyfikacją, nie próbuj klonować oryginału.
"Please type the key phrase"liczy się jako 1 bajt, czy tylko fraza się liczy, a cytowana fraza liczy się jako 3 bajty ( ", fraza ")? Czy jest celowe, że znacznie dłuższy i znacznie krótszy interwał „skasuje się” i zrówna się? Czy program musi sprawdzić, czy oba kluczowe frazy są zgodne?