Obecnie w mojej pracy przeprowadziliśmy się do nowego budynku. Ma być najnowocześniejszy i ma automatyczne światła, automatyczne rolety, a teraz jest znany jako najbardziej ekologiczny budynek w tym mieście.
Jednak tak naprawdę to nie działa tak dobrze. Rolety opuszczają się czasami w pochmurne dni i wznoszą się, gdy słońce zaczyna świecić, a światła czasami wywołują efekt dyskoteki, naprzemiennie włączając i wyłączając co 5-10 minuty. Ponadto, nie mamy żadnego ręcznego sposobu kontrolowania tych rolet, ani temperatury, ALE mamy pilota do świateł.
Te piloty były jednak dostarczane bez instrukcji obsługi i zawierają niewiele ponad 20 przycisków do robienia różnych rzeczy oprócz tego, czego się wydaje.
PS: Wyzwanie napisałem 1,5 miesiąca temu w piaskownicy. Obecnie wiemy, jak działają piloty.
Jedną wielką zaletą tego budynku jest to, że na zewnątrz jest ponad 30 stopni Celsjusza, ale w środku przez cały czas pozostaje taka sama temperatura pokojowa.
To było wprowadzenie, a pilot do świateł zainspirował to wyzwanie.
Wyzwanie:
Powiedzmy, że początkowo mamy wyłączoną lampę:
L
Następnie wciskamy wszelkiego rodzaju przyciski i następnie wyprowadzamy stan lampy.
Używamy następujących liczb do różnych funkcji pilota do lampy. Kiedy przed tym numerem znajduje się symbol minus, robimy odwrotnie.
1
= ON;-1
= WYŁ.2
= Zwiększ siłę o 25%;-2
= Zmniejsz (przyciemnij) wytrzymałość o 25%.3
= Zwiększ spread o 50%;-3
= Zmniejsz spread o 50%.4
= Przełączanie rodzaju światła.
Wszystko to jest dość niejasne, więc przejdźmy bardziej szczegółowo, co oznacza każda rzecz:
Tak więc -1
(WYŁ.) Jest dość oczywiste i 1
przejdzie do początkowego stanu WŁĄCZENIA (50% dla 2
i 50% dla 3
):
//
//
L ====
\\
\\
2
i -2
określa, jak daleko podróżuje światło ( ==
jest dodawane co 25%):
0% (equal to a light bulb that is OFF)
L
25%
L ==
50%
L ====
75%
L ======
100%
L ========
3
i -3
jak daleko rozprzestrzenia się światło:
0%:
L ====
50%:
//
//
L ====
\\
\\
100%:
|| //
||//
L ====
||\\
|| \\
(UWAGA: Kiedy 2
i 3
to zarówno na poziomie 100%, trzeba ten stan:
|| //
|| //
|| //
||//
L ========
||\\
|| \\
|| \\
|| \\
4
jest przełączanie rodzaju światła.
Default:
//
L ==
\\
After toggling (note the single space before '/' instead of two):
/
L --
\
Wejście:
Otrzymasz dane wejściowe zawierające możliwe naciśnięcia przycisków. Na przykład:
12-34
Wynik:
Stan lampy świetlnej po naciśnięciu wszystkich przycisków wejścia jest podsekwencyjny. Tak więc z powyższym przykładem przykładowym otrzymujemy następujące dane wyjściowe:
L ------
Zasady konkursu:
- Dane wejściowe zawierają tylko
1234-
(i nigdy-
wcześniej4
). - Nigdy nie możesz zejść poniżej 0% lub powyżej 100%. Jeśli liczba wzrośnie / spadnie poza te granice, możesz ją zignorować.
- Gdy lampa jest wyłączona, możesz zignorować wszelkie działania, a po ponownym włączeniu resetuje się z powrotem do początkowego stanu WŁĄCZENIA (50% dla obu
2
i3
, i domyślnie4
). Na przykład:12-1-341
wydrukuje tylko wspomniany powyżej początkowy stan włączenia. (WSKAZÓWKA: Możesz zignorować wszystko przed końcem1
danych wejściowych - z wyłączeniem-1
.) - Końcowe spacje równe długości światła lub pojedynczej nowej linii nie są hamowane. Dodanie dodatkowych niepotrzebnych nowych wierszy nie jest jednak możliwe.
- Możesz wziąć dane wejściowe jako listę liczb całkowitych zamiast pojedynczego ciągu. Zamiast tego
12-34
możesz mieć[1,2,-3,4]
jako dane wejściowe.
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki kod-golfowe zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi odnoszą się standardowe reguły , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem swojego kodu.
- W razie potrzeby dodaj również wyjaśnienie.
Przypadki testowe:
12-34
L ------
12-1-341
//
//
L ====
\\
\\
14-3224333-2
|| //
|| //
||//
L ======
||\\
|| \\
|| \\
142-1-314-3-322
L --------
1324-2-3
/
/
L ----
\
\
134
| /
|/
L ----
|\
| \
1-2-2-214-3-3-3
L ----
134
?4
). Dzięki, że pytasz.1
naciśnięta, czy parametry są resetowane?Odpowiedzi:
Python 2, 221 bajtów
To skończyło się dłużej niż się spodziewałem. Pierwszy wiersz oblicza stan lampy, reszta wdraża drukowanie.
Dane wejściowe są podawane przez STDIN w formie tablicy.
Zobacz przypadki testowe na ideone
źródło
R,
323320 bajtówNie golfowany:
odczytuje linię wejściową (liczby całkowite oddzielone spacjami)
inicjuje zmienne a (on-ness), b (jasność), c (szerokość), d (typ wiązki).
d
ma wartość zero lub dwa, co oznacza, że możemy wywołać if (d) później niż dłużej, jeśli (d> 1) lub podobny i zapisać kilka bajtów.Golfowy sposób pisania, w
while(length(z))
którym z jest wektorem całkowitym.Reszta pierwszego wiersza obsługuje dane wejściowe za pomocą
switch
instrukcji. Druga linia zostanie wydrukowana.Możliwe, że niektóre z nich
<-
można zastąpić=
, ale myślę, że zostajesz zjedzony żywym przez leksykalne określenie zakresu ...Zauważ również, że w R, odwrotne ukośniki muszą zostać usunięte.
c*(c>0)
to golfowy sposób pisania,max(c,0)
który ratuje postać.Jeśli światło nie jest włączone, to ponieważ
*
ma niższy priorytet niż:
,for(i in a*b:-b)
pętla tylko się iteruje0:0
.Aktualizacja; zapisano 3 bajty, zastępując pętlę w pierwszym wierszu znakiem for (zamiast while). Pamiętaj, że
1:sum(1|z)
jest mniej znaków niż1:length(z)
lubseq_along(z)
.seq(z)
działałoby w większości przypadków, ale nie, gdyz
ma długość jeden. Podane rozwiązanie nie będzie działać dla danych wejściowych o długości zero, ale mam nadzieję, że jest to poza zakresem konkursu.źródło
Kotlin , 445 bajtów
Mój pierwszy golf Kotlin, 38 bajtów mniej niż Java :)
Z białą przestrzenią i testami:
Co ciekawe, zamiast określenia funkcji normalnie i
print
czyreturn
utworzony ciąg, było krótsze do przypisania funkcji Użyj (fun f() =
o ocenianym lambda. (Czy to opis ma sens?)Chciałbym tylko, żeby SE miał właściwe wyróżnianie składni Kotlin
źródło
Java 8,
484483452446440 bajtówWreszcie .. Ok, moje własne wyzwanie jest trochę trudniejsze niż się spodziewałem ..; P
Można to bez wątpienia pograć w golfa, stosując zupełnie inne podejście. Teraz najpierw określam, co robić, a następnie drukuję. Druk jest w rzeczywistości najtrudniejszy z tego wyzwania, imho.
-6 bajtów dzięki @ceilingcat .
Wyjaśnienie:
Wypróbuj tutaj.
źródło
Partia, 552 bajtów
Uwaga:
set v=
zawiera jedno końcowe miejsce iset s=
zawiera trzy. To było naprawdę niezręczne, ponieważ nie można łatwo wydrukować zmiennej liczby|
wsadowej w partii, więc musisz użyć symbolu zastępczego i zastąpić go w instrukcji echo.źródło
05AB1E , 106 bajtów
Wprowadź jako listę liczb całkowitych.
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
Mamy teraz ciąg:
Następnie będziemy:
Zobacz ten 05AB1E końcówki kopalni (sekcje Jak skompresować dużych liczb całkowitych? I jak skompresować list całkowitych? ) , Aby zrozumieć, dlaczego
•Wθ¨S9ƒTª»þúÙ•6в
jest[5,3,2,2,2,2,2,2,2,2,4,1,1,0,0,4,1,1,3,0,0,4,1,1,3,3,0,0,4,1,1,3,3,3,0,0]
; iŽ8Ã
jest2234
.źródło