Zasady
Czas zbudować test szybkości pisania w wybranym języku!
1 . Udostępniasz plik z wybranym słownikiem (każde „słowo” musi być oddzielone znakiem nowej linii). Podaj go przez stdin
lub podaj jego nazwę jako argument wiersza poleceń.
za zdolny o powyżej brak ...
2 . Wybierz 10 losowych słów z pliku (duplikaty nie mogą być dozwolone) i wydrukuj je w następujący sposób:
-> bezpośrednie -> ziemia -> dalej -> pięć ...
3 . Zacznij mierzyć czas od teraz!
4 . Pozwól użytkownikowi wpisać wszystkie dziesięć słów tak szybko, jak to możliwe (zakończone znakiem powrotu karetki). Drukuj, OK
gdy masz dopasowanie, drukuj, WRONG
gdy mamy błąd w pisaniu (lub słowo zostało już pomyślnie wpisane w tym przebiegu).
5 . Zatrzymaj zegary! Teraz wydrukować CPM (caracters na minutę) odniesienia, która jest obliczana w następujący sposób: (sum of the characters of the chosen words / time spent typing (seconds)) * 60
. Zaokrąglij do najbliższej liczby całkowitej i odtwórz następujące (przykładowe) wyjście:
-> Zdobyłeś 344 CPM!
Przykładowy przebieg
-> osiedlić się -> strona -> otwórz -> minister -> ryzyko -> kolor -> statek -> takie same -> rozmiar -> miecz rozstrzygać dobrze bok dobrze otwarty dobrze # ...................... niektóre linie zostały przycięte ...................... słowo ŹLE miecz dobrze -> Zdobyłeś 298 CPM!
Zwycięzca
To jest colf, wygrywa najkrótszy wpis (w liczbie znaków kodu źródłowego), baw się dobrze!
Odpowiedzi:
K, 146
Zakłada plik słownika o nazwie „d” w bieżącym katalogu roboczym.
źródło
K
którym widziałem (tutaj na codegolf.se) ...Bash -
217212199196 znakówNie wygra, ale było fajnie
Poniżej 200 znaków!
Pobiera plik listy słów jako argumentTeraz pobiera listę słów na standardowe wejście. Wklej go w terminalu i naciśnij ^ DWdrożono sugestię z manatwork
źródło
$SECONDS
zmiennej powłoki, aby uprościć obliczanie upływającego czasu.:
w domyślnym rozszerzeniu parametru wartości; 2)$
przedSECONDS
obliczeniem arytmetycznym. W rzeczywistości jest inny dodatkowy znak, nowa linia na końcu pliku.Rubin (
189178171168)Całkiem proste, jestem pewien, że należy wprowadzić ulepszenia. Pobiera nazwę pliku słownika jako argument wiersza polecenia.
EDYCJA : Kilka drobnych poprawek, głównie dotyczących zachowania nowych wierszy ze słownika. W rezultacie plik będzie wymagał końcowego znaku nowej linii, aby działać poprawnie.
źródło
C, 305
309347znakówDzięki @ugoren za wskazówki dotyczące ulepszeń. Używanie „jedenastego słowa” do odrzucania przychodzących wpisów słownika było dużą wygraną w porównaniu z moim poprzednim podejściem strcpy-if-selected.
Oto źródło bez golfa:
źródło
main(n,v)char**v;{...
. 2.stdin
może byćchar *
.fgets(buf,len,stdin)
=gets(buf)
(nie wspominając o przepełnieniu bufora). 3. Co jest nie takrand()%i
?RAND_MAX
nie jest potrzebne. 4. Dlaczegolong
?t=time(0)
->time(&t)
. 2)n*60/(time(0)-t)
ma nawiasów, że musi iść -*60
mogą zostać przeniesione don+=60*printf
, a następnien/=time(0)-t
. 3) Zamieńb
na dodatkowy element ww
, zamień nastrcpy
wczytany bezpośrednio dow
.fgets()
zgets()
potrzeby dodatkowego kodu do czynienia z nowymi liniami w słowniku; to skończyło się na krótszym czasie.rand()%i
nie wystarcza; faktyczne obliczenia to(double)i*rand()/RAND_MAX
. Przeniesienie*60
do printf oznacza również zmianę na,-4
aby-240
ostatecznie zakończyć się stratą. Twoje pozostałe punkty są jednak ważne (uważam). Aha,long
ponieważ czas tradycyjnie jest długi. To, że gramy w golfa, nie oznacza, że nie możemy być przenośni.4
->240
... Przenośność i golf nie idą w parze. Ale zdefiniowaniei,t;
(domyślnie int) jest OK doMAX_INT
kilku sekund (jeśli nie używasztime(&t)
). Dziękirand()
wszystko, czego potrzebujesz, to10/i
szansa irand()%i<10
to robi.rand()%10>10
, co daje jej 100%.rand()%(i+1)>9
jest lepszy (ale zamiast tego, jeśli%(i+1)
taki++>9?
. Przenieś*stdin
się też jako pierwszy i oszczędzaj miejsce.C # 401
Uruchomiona wersja tutaj: http://ideone.com/Nt6Id
źródło
Python (
256235)To jest w python 2.x, w 3.x mogę ogolić 4 dodatkowe znaki, używając funkcji drukowania.
Zawiera nowe linie
źródło
z=lambda x:
nadef z(x):
.len(x)
idef z(x):return
jest jeszcze 5 postaci: /input()
zamiastsys.argv[1].read()
PHP 187 bajtów
Dla jasności dodano nowe linie:
Akceptuje nazwę pliku słownika jako argument wiersza poleceń. Plik słownika musi kończyć się nową linią.
źródło
Scala (
319306304302)źródło