Mój problem
W moim obecnym miejscu pracy samotnie (ok dwuręcznie, bo brakuje mi kończyn) utrzymuję około 700 laptopów. Ze względu na charakter i częstotliwość ich używania często stwierdzam, że są zwracane z niewielkimi obrażeniami. W przypadku tego problemu moim głównym problemem jest zwrot laptopa z uszkodzoną lub niedziałającą klawiaturą. Gdy mechanik naprawi uszkodzone klawiatury, konieczne będzie ich przetestowanie. Test obejmuje użycie każdego ... i ... każdego ... pojedynczego ... klucza. Co za trud, prawda? Problem polega na tym, że czasami tracę orientację, czy wpisałem klucz, czy nie.
Rozwiązanie?
Napisz program / skrypt, który:
- Pobiera dane od użytkownika
- Po przesłaniu (w dowolny sposób, który uznasz za odpowiedni), określa, czy naciśnięto każdy klawisz.
- Zwraca tak lub nie lub w jakikolwiek sposób wskazujący, że albo udało mi się nacisnąć wszystkie klawisze, albo nie. (Podaj w swojej odpowiedzi dwa możliwe wyniki, jeśli nie jest to oczywiste).
Założenia:
- Wielkie, małe litery, oba? Niezależnie od tego, co uznasz za stosowne. O ile jest to [AZ], [az] lub [A-Za-z]. To samo dotyczy liczb i innych symboli. (Więc jeśli =został wpisany, +nie ma znaczenia). Twój wybór, jeśli chcesz uwzględnić przesunięte znaki, czy nie.
- Nie musisz się martwić o tabulatory lub spacje
- Nie ma potrzeby używania klawiszy funkcyjnych, CTRL, ALT, Esc ani żadnych innych klawiszy, które nie wyświetlają czegoś na ekranie
- Zakłada się klawiaturę EN-US, a laptopy nie zawierają klawiatury numerycznej.
- Niezależnie od systemu operacyjnego, niezależnie od preferowanego języka
- Nie ma znaczenia, czy klawisz został naciśnięty wiele razy (na przykład, gdy tester staje się leniwy i zaczyna pękać przyciskami, jakby to był Mortal Kombat)
Oto potencjalny zestaw danych wejściowych, który zwróciłby wartość true (lub tak lub „Zrobiłeś to!”)
`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./
Zwycięzca jest określany przez najmniejszą liczbę znaków.
Odpowiedzi:
GolfScript, 6 bajtów
Jeśli wszystkie znaki ASCII o kodach od 33 do 127 są obecne, drukuje 1. W przeciwnym razie drukuje 0.
To podejście zakończy się niepowodzeniem, jeśli dane wejściowe zawierają inne znaki (w tym końcowy nowy wiersz), co zostało dozwolone przez OP i jest prawdą również w przypadku istniejącego rozwiązania GolfScript.
Stosowanie
Jak to działa
źródło
GolfScript, 11
ASCII do wydruku nie jest aż tak interesujące…
Ruby, 68
Z flagą
-rset
na 4 znaki.i
Python 3, 76
źródło
JavaScript - 62
70I nieco krótszy:
źródło
CJam - 9
Sprawdza również „przesunięte” znaki (w tym wielkie litery).
Wypróbuj na http://cjam.aditsu.net/
Uwaga: po apostrofie znajduje się niewidoczny znak (z kodem 127).
źródło
PHP
$_GET['i']
jest wejściemźródło
$_GET
aby zapisać 1 znak, jeśli jest to dopuszczalne.!==false
aby zapisać 8 znaków, a następnie nawiasy klamrowe na 4 kolejne.register_globals
sprawia to"é$i"
.die(NO)
jest również możliwe.Python 72:
źródło
Haskell, 41 (dwa rozwiązania)
lub (styl bez punktów)
Musisz wprowadzić przynajmniej następujące znaki:
w dowolnej kolejności, dowolną liczbę razy. Dodatkowe znaki są dozwolone. Uruchom tłumacza. Musisz nacisnąć Enter, gdy skończysz, ale jeśli naciśniesz Enter przed zakończeniem, możesz nadal wprowadzać znaki i ponownie nacisnąć Enter. Wydrukuje,
True
jeśli trafisz każdą postać, w przeciwnym razie nic nie wydrukuje.źródło
Perl, 70 znaków
Stosowanie:
Drukuje 1, jeśli wszystkie klawisze są obecne, w przeciwnym razie nic nie drukuje.
źródło
C, 97 znaków
Musisz wywołać program z argumentem zawierającym co najmniej litery:
i uzyskaj odpowiedź 1 (prawda). Zestaw znaków można zmienić, zmieniając wartość inicjalizacji a.
źródło