Derzeit sind wir bei meiner Arbeit in ein neues Gebäude umgezogen. Es soll auf dem neuesten Stand der Technik sein und verfügt über automatische Lichter, automatische Rollläden und ist heute als das umweltfreundlichste Gebäude in dieser Stadt bekannt.
Es funktioniert jedoch nicht wirklich gut. Die Rollläden gehen manchmal an bewölkten Tagen herunter und steigen auf, wenn die Sonne scheint, und die Lichter verursachen manchmal Disco-Effekte, indem sie alle 5-10 abwechselnd ein- und ausgeschaltet werden Protokoll. Wir haben auch keine manuelle Möglichkeit, diese Rollläden oder die Temperatur zu steuern, ABER wir haben eine Fernbedienung für die Lichter.
Diese Fernbedienungen wurden jedoch ohne Bedienungsanleitung geliefert und enthalten etwas mehr als 20 Tasten, die alle möglichen Dinge erledigen, außer dem, was Sie zu wollen scheinen.
PS: Ich habe diese Herausforderung vor 1,5 Monaten in der Sandbox geschrieben. Momentan wissen wir, wie die Fernbedienungen funktionieren.
Ein großer Vorteil dieses Gebäudes ist, dass es außen über 30 Grad Celsius hat, innen aber immer die gleiche Raumtemperatur von 21 Grad hat.
Das war also das Intro, und die Fernbedienung für die Lichter inspirierte diese Herausforderung.
Herausforderung:
Nehmen wir an, wir haben zunächst eine Lampe ausgeschaltet:
L
Dann drücken wir alle Arten von Tasten und geben anschließend den Zustand der Lampe aus.
Wir verwenden die folgenden Nummern für die verschiedenen Funktionen der Fernbedienung für die Lampe. Wenn sich vor dieser Zahl ein Minuszeichen befindet, machen wir das Gegenteil.
1
= EIN;-1
= AUS.2
= Festigkeit um 25% erhöhen;-2
= Verringern Sie die (schwache) Festigkeit um 25%.3
= Spread um 50% erhöhen;-3
= Spread um 50% verringern.4
= Umschalten der Lichtart.
Das ist alles ziemlich vage, also gehen wir etwas genauer darauf ein, was jedes Ding bedeutet:
Also, -1
(AUS) ist ziemlich offensichtlich und 1
geht in den anfänglichen EIN-Zustand (50% für 2
und 50% für 3
):
//
//
L ====
\\
\\
2
und -2
ist, wie weit sich das Licht bewegt ( ==
wird alle 25% angehängt):
0% (equal to a light bulb that is OFF)
L
25%
L ==
50%
L ====
75%
L ======
100%
L ========
3
und -3
wie weit verbreitet sich das Licht:
0%:
L ====
50%:
//
//
L ====
\\
\\
100%:
|| //
||//
L ====
||\\
|| \\
(HINWEIS: Wenn 2
und 3
beide zu 100% sind, haben Sie diesen Status:
|| //
|| //
|| //
||//
L ========
||\\
|| \\
|| \\
|| \\
4
ist die Art des Lichts umzuschalten.
Default:
//
L ==
\\
After toggling (note the single space before '/' instead of two):
/
L --
\
Eingang:
Sie erhalten eine Eingabe mit den möglichen Tastendrücken. Beispielsweise:
12-34
Ausgabe:
Der Status der Lichtlampe, nachdem alle Tasten des Eingangs nacheinander gedrückt wurden. Mit der obigen Beispieleingabe haben wir also die folgende Ausgabe:
L ------
Herausforderungsregeln:
- Die Eingabe enthält nur
1234-
(und niemals ein-
vorheriges4
). - Sie können niemals unter 0% oder über 100% gehen. Wenn eine Zahl über diese Grenzen hinaus zunehmen / abnehmen würde, können Sie sie ignorieren.
- Wenn die Lampe ausgeschaltet ist, können Sie alle Aktionen ignorieren. Wenn sie wieder eingeschaltet wird, wird sie wieder in den ursprünglichen EIN-Zustand zurückgesetzt (50% für beide
2
und3
, und Standard4
). Beispiel:12-1-341
Druckt nur den oben genannten anfänglichen EIN-Zustand. (TIPP: Sie können alles vor dem Ende1
der Eingabe ignorieren - ausgenommen-1
.) - Leerzeichen, die der Länge des Lichts oder einer einzelnen neuen Zeile entsprechen, sind nicht gesperrt. Das Hinzufügen zusätzlicher unnötiger neuer Zeilen ist jedoch nicht möglich.
- Sie können die Eingabe als Liste von Ganzzahlen anstelle einer einzelnen Zeichenfolge verwenden. Anstelle von
12-34
können Sie also[1,2,-3,4]
als Eingabe haben.
Allgemeine Regeln:
- Dies ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich nicht von Code-Golf-Sprachen davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, eine möglichst kurze Antwort für "jede" Programmiersprache zu finden. - Für Ihre Antwort gelten Standardregeln , sodass Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme verwenden dürfen. Ihr Anruf.
- Standardschlupflöcher sind verboten.
- Wenn möglich, fügen Sie bitte einen Link mit einem Test für Ihren Code hinzu.
- Fügen Sie bei Bedarf auch eine Erklärung hinzu.
Testfälle:
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 ----
4
). Danke für die Frage.
1
gedrückt wird, werden die Parameter zurückgesetzt?
134
?