Mój szef musi wiedzieć, ile czasu zajmuje sumowanie dwóch liczb całkowitych. Ale nie lubię pracować w weekendy i uważam za słuszne, że mój kod też nie. Problem polega na tym, że szef jest wymagającym facetem i uważa, że powinienem poświęcić czas, aby upewnić się, że czas ten pozostanie taki sam, i wiem, że sprawdzi, czy kod działa poprawnie.
Czy możesz napisać mi krótki program, który:
- Akceptuje dwie liczby całkowite i zwraca poprawny wynik dodawania oraz czas potrzebny na wykonanie dodawania - ten czas powinien być wiarygodny i oparty na środowisku uruchomieniowym kodu. Jeśli jednak musisz podkraść niektóre operacje między kodem czasowym, który powoduje, że działa on nieco dłużej niż powinien. Nie możesz jednak po prostu podać fałszywego czasu.
- Nie działa w weekendy w kodach czasu lokalnego (nie może po prostu zwrócić nieprawidłowego wyniku, kod musi się zepsuć, błąd lub w inny sposób nie wykonać)
- Nie wiadomo od razu, dlaczego nie działa w weekendy
Wiem, że pierwsze kryterium jest trochę dziwne, ale chciałem się upewnić, że ludzie będą mogli importować biblioteki daty / godziny, jeśli to konieczne, bez wzbudzania podejrzeń co do kryteriów 3. Jednak jestem pewien, że są sprytni ludzie, więc -10 znaków do każdy, kto może to zrobić, bez korzystania z funkcji kalendarza ze standardowych bibliotek dat
W odniesieniu do „standardowych bibliotek daty / godziny”
Przykłady standardowych bibliotek datetime obejmują pytony datetime
, date
bibliotekę obiektów javascript java.util.Date
i tym podobne. Funkcje obliczania timedeltas do wykonania, takie jak timeit
moduł pytonów , nie naruszyłyby tych kryteriów, ponieważ szef spodziewa się, że kod zostanie zsynchronizowany. W niektórych przypadkach biblioteki te będą musiały zostać zaimportowane, aby uzyskać dostęp do dowolnej funkcji czasu, więc dozwolone jest wywoływanie funkcji, które zwracają czas od początku bieżącej epoki jako liczby całkowitej, ale funkcje kalendarza zwracające ustrukturyzowane obiekty daty i godziny, które mogą dawać osobne godziny, dni itp. nie są dozwolone.
edycja: Jeśli chodzi o pytanie Dan04, kod musi spełniać te 4 kryteria dotyczące tego, kiedy zadziała, czy nie. Powinieneś także wyjaśnić, w jaki sposób Twój kod sprawdza czas, ponieważ luz w poniedziałek rano / piątek wieczorem powinien dać szansę na twórcze sposoby skrócenia kodu.
- nie wolno pracować od 00:00:00 w sobotę rano do 23:59:59 w niedzielę wieczorem
- musi zawsze działać od 06:00:00 w poniedziałek rano do 19:59:59 w piątek wieczorem
- może pracować albo nie pracować od 00:00:00 w poniedziałek rano do 5:59:59 w poniedziałek rano
- może pracować albo nie pracować od 20:00:00 w piątek wieczorem do 23:59:59 w piątek wieczorem rano
edit2: Od razu oczywiste, że musi spełniać następujące 3 kryteria:
- Nie wolno wywoływać funkcji, która wywołała
DayOfWeek
(lub podobną), bez użycia jej do obliczenia czasu funkcji. - Nie wolno używać soboty ani niedzieli ani ich skrótów w języku angielskim.
- Nie wolno używać Sat lub Sun (lub w ich alternatywnych literach) bez identycznej nazwanej zmiennej, która nie została użyta do ustalenia dnia tygodnia lub przy określaniu, czy kod powinien zostać uruchomiony.