Moje liceum i wielu innych wdraża pewien rodzaj harmonogramu zwanego harmonogramem rotacyjnego bloku. Jest to sposób, w jaki ludzie mają 8 klas, ale mają 6 okresów w dzień szkolny.
W harmonogramie blokowym są cztery dni, które powtarzają się w kółko i nie mają nic wspólnego z faktycznymi dniami tygodnia. Każdy ma przypisany numer [1-4]
.
Sposób harmonogram działa jest to, że lista wszystkich klasach rano, okresy 1-4
: [1, 2, 3, 4]
. To jest Twój plan na pierwszy dzień, czy Dzień 1. Reszta dni po prostu obrócić listę: [2, 3, 4, 1]
, [3, 4, 1, 2]
, [4, 1, 2, 3]
.
Jednak ostatni okres rano jest „porzucony” i tego dnia nie widzisz tego nauczyciela. Stąd dni to: [1, 2, 3]
, [2, 3, 4]
, [3, 4, 1]
, [4, 1, 2]
.
Popołudnie jest taka sama, chyba że wykorzystuje okresy 5-8
zamiast: [5, 6, 7]
, [6, 7, 8]
, [7, 8, 5]
, [8, 5, 6]
.
Twoje zadanie
Trudno jest śledzić to wszystko, więc musisz napisać program, który wydrukuje mój harmonogram, biorąc pod uwagę dzień, w którym jest on wprowadzany. Twój kod musi umieścić Homeroom i Lunch we właściwych miejscach. Oto dokładne dane wyjściowe, które Twój kod musi mieć dla danych wejściowych 1-4
:
Homeroom Homeroom Homeroom Homeroom
Period 1 Period 2 Period 3 Period 4
Period 2 Period 3 Period 4 Period 1
Period 3 Period 4 Period 1 Period 2
Lunch Lunch Lunch Lunch
Period 5 Period 6 Period 7 Period 8
Period 6 Period 7 Period 8 Period 5
Period 7 Period 8 Period 5 Period 6
Ale czekaj - jeszcze jedno!
Czasami, pierwszego dnia szkoły lub w inne specjalne dni, moja szkoła ma „Dzień 0”. Oznacza to po prostu, że będę miał wszystkie moje zajęcia tego samego dnia, razem z kolacją i obiadem. Twój kod będzie musiał obsługiwać Dzień 0. Oto wynik dla dnia 0:
Homeroom
Period 1
Period 2
Period 3
Period 4
Lunch
Period 5
Period 6
Period 7
Period 8
To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach !
1, 2, 3, 5, 6, 7
?Odpowiedzi:
Snowman 1.0.2 , 190 bajtów
Ta kolumna z lewej strony wygląda całkiem ładnie, prawda?
...
... kogo żartuję, wolałbym programować w PHP niż to.
Wersja „czytelna”:
Myśli i rozważania:
Po pierwsze, zdecydowanie muszę wdrożyć ładniejszy sposób drukowania nowych linii. Ponieważ ciągi z nowymi liniami w wciętym bloku są bardzo brzydkie.
Podoba mi się moja sztuczka z
ae
- rzadko widujeszae
operatora bez użyciaE
prawdziwego kodu Snowman. (Rzadko widuje się też kod Snowmana, który nie jest napisany przeze mnie, ale poza tym jest o co chodzi).Dla niewtajemniczonych Snowman ma dwa sposoby dzwonienia do operatorów. Tryb „konsumpcji” i tryb „nieużywania”. Tryb „Zużycie” wywoła operatora wymaganymi zmiennymi, a następnie odrzuci zmienne. Tryb nieużywania wywoła operatora i nadal pozostawi zmienne nienaruszone.
Co zwykle nie jest tym, czego chcesz
ae
(tablica-każdy), ponieważ blok, który wywołujesz dla każdego elementu, pozostanie tam i stanie ci na drodze, wykorzystując cenną jedną z ośmiu zmiennych.Jest to jednak rzadka sytuacja, w której
ae
tak naprawdę chcemy (zobacz komentarze w kodzie, aby uzyskać dodatkowe wyjaśnienia).Naprawdę, naprawdę zaczynam myśleć, że Bałwan potrzebuje więcej niż dwóch trybów, oprócz „konsumpcji” i „nie konsumpcji”. Na przykład dzięki
aa
(w zasadzie indeksowaniu tablic) masz tylko dwa sposoby, aby to nazwać:(Bałwan nie używa struktury stosu / tablicy, ale tutaj jest to po prostu używane dla zachowania przejrzystości.)
Jest to dość powszechne, że chcesz
["foo" "f"]
(tj. Zużywają zmienną indeksu, ale nie oryginalną). Jest to bardzo skomplikowany proces, aby pozbyć się tego irytującego,0
jeśli używasz trybu „nie zużywaj”.Podobnie dzieje się, gdy wywołasz „tablicę każdego” w trybie „nie zużywaj”, tak jak to tutaj zrobiono. Tablica i blok trzymają się, nawet podczas wykonywania wspomnianego bloku . Co jest ... naprawdę, naprawdę dziwne.
Z drugiej strony, celem projektu Snowman jest jak najbardziej zagmatwane, więc nie jestem pewien, czy to w ogóle problem.
źródło
CJam,
6555 bajtówWypróbuj online w interpretatorze CJam .
źródło
Python 3,
193192182168165 bajtówPo prostu szybkie rozwiązanie.
Python 2, 161 bajtów
źródło
"\n".join
Pyth, 51 bajtów
źródło