Einführung:
Im Allgemeinen sprechen wir in der Regel von vier Dimensionen: drei Raumdimensionen für x
, y
und z
; und einmalige Dimension. Aber für die Zwecke dieser Herausforderung werden wir die Zeitdimension in drei geteilt auch: past
, present
, und future
.
Eingang:
Zwei Eingabelisten. Eine mit ganzzahligen x,y,z
Koordinaten und eine mit ganzzahligen Jahren.
Ausgabe:
Eine von vier unterschiedlichen und konstanten Ausgaben Ihrer Wahl. Eine, um die Ausgabe anzuzeigen space
; eine, um die Ausgabe anzuzeigen time
; eine, um die Ausgabe anzuzeigen both space and time
; und eine, um die Ausgabe anzuzeigen neither space nor time
.
Wir werden angeben, dass wir zu allen drei Raumdimensionen gegangen sind, wenn die Unterschiede der ganzzahligen Tupel nicht für alle drei Dimensionen 0 sind.
Wir werden angeben, dass wir zu allen drei Zeitdimensionen gegangen sind, wenn es in der Vergangenheit mindestens ein Jahr, in der Zukunft mindestens ein Jahr und mindestens ein Jahr gibt, das dem aktuellen Jahr entspricht (also in der Gegenwart).
Beispiel:
Eingabe:
Koordinatenliste: [{5,7,2}, {5,3,8}, {-6,3,8}, {5,7,2}]
Jahresliste:[2039, 2019, 2018, 2039, 2222]
Ausgabe:
Konstante fürspace
Warum?
Die x
Koordinaten sind [5,5,-6,5]
. Da sie nicht alle gleich sind, haben wir die x
Raumdimension durchlaufen .
Die y
Koordinaten sind [7,3,3,7]
. Da sie nicht alle gleich sind, haben wir auch die y
Raumdimension durchlaufen .
Die z
Koordinaten sind [2,8,8,2]
. Da sie nicht alle gleich sind, haben wir auch die z
Raumdimension durchlaufen .
Das laufende Jahr ist 2018
. Es gibt keine Jahre davor, also haben wir die past
Zeitdimension nicht besucht .
Da die Jahresliste ein 2018
Geschenk enthält, haben wir die present
Zeitdimension besucht.
Es gibt mehrere Jahre über 2018
( [2039, 2019, 2039, 2222]
), daher haben wir auch die future
Zeitdimension besucht.
Da wir alle drei space
Dimensionen besucht haben, aber nur zwei der drei time
Dimensionen, ist die Ausgabe nur (die Konstante für) space
.
Herausforderungsregeln:
- Sie können vier verschiedene und konstante Ausgänge für die vier möglichen Zustände verwenden.
- Die Eingabe kann in jedem vernünftigen Format erfolgen. Die Koordinatenliste kann Tupel, innere Listen / Arrays der Größe 3, Zeichenfolgen, Objekte usw. sein. Die Liste der Jahre kann auch eine Liste von Datumsobjekten anstelle von Ganzzahlen sein, wenn dies Ihrer Byteanzahl zugute kommt.
- Sie können davon ausgehen, dass die
x,y,z
Koordinaten Ganzzahlen sind, sodass keine Gleitkomma-Dezimalstellen verarbeitet werden müssen. Jede derx
,y
und / oderz
Koordinaten können negative Werte sein, though. - Sie können die vorbestellten Eingabelisten nicht übernehmen. Die Eingabelisten sollten in der Reihenfolge sein, die in den Testfällen angezeigt wird.
- Sie können davon ausgehen, dass alle Jahreswerte im Bereich liegen
[0,9999]
. und Sie können davon ausgehen, dass alle Koordinaten im Bereich liegen[-9999,9999]
. - Wenn Ihre Sprache KEINE Möglichkeit hat, das aktuelle Jahr abzurufen, Sie diese Herausforderung dennoch ausführen möchten, können Sie sie als zusätzliche Eingabe verwenden und Ihre Antwort als (nicht konkurrierend) markieren .
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 mit Standard-E / A-Regeln . Sie können also STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp verwenden. Ihr Anruf.
- Standardschlupflöcher sind verboten.
- Wenn möglich, fügen Sie bitte einen Link mit einem Test für Ihren Code (dh TIO ) hinzu.
- Es wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Testfälle:
Coordinates-input: [{5,7,2}, {5,3,8}, {-6,3,8}, {5,7,2}]
Years-input: [2039, 2019, 2018, 2039, 2222]
Output: space
Coordinates-input: [{0,0,0}, {-4,-4,0}, {-4,2,0}]
Years-input: [2016, 2019, 2018, 2000]
Output: time
Coordinates-input: [{-2,-2,-2}, {-3,-3,-3}]
Years-input: [2020, 1991, 2014, 2018]
Output: both
Coordinates-input: [{5,4,2}, {3,4,0}, {1,4,2}, {9,4,4}]
Years-input: [2020, 1991, 2014, 2017, 2019, 1850]
Output: neither
[0,9999]
ist in Ordnung (und[-9999,9999]
für die Koordinaten ist auch in Ordnung.Antworten:
05AB1E , 15 Bytes
Ausgabe ist eine Liste,
[space, time]
in der 1 fürx
und 0 für stehtno x
Probieren Sie es online aus!
Erläuterung
quelle
-.±
anstelle von.S
(daher das +1 Byte ..) und‚
(Paar) anstelle von)
Ùg3Q
, der sich wie der größte Byte-Dieb anfühlt, aber ich bin nicht sicher, ob es möglich ist: /ê
einer bitweisen Operation oder Deltas oder so etwas zu tun , aber ich kann keine 3-Byte-Alternativen finden.Python 2 ,
111109 BytesProbieren Sie es online aus!
quelle
Perl 6 ,
4746 Bytes-1 Byte dank Nwellnhof
Probieren Sie es online aus!
Anonymer Codeblock, der zwei Listen verwendet und ein Tupel von Booleschen Werten zurückgibt, wobei das erste Element angibt, ob Sie in der Zeit gereist sind, und das zweite, ob Sie nicht im Raum gereist sind.
Erläuterung
quelle
Japt, 22 Bytes
Nimmt die Eingabe als 2D-Array von Ganzzahlen für die Raumdimensionen und als 1D-Array von Ganzzahlen für die Jahre auf. Ausgaben nur
2
für Raum, nur1
für Zeit,3
für beide und0
für keine.Versuch es
quelle
Japt , 25 Bytes
Ich bin mir zu 100% sicher, dass dies nicht der beste Ansatz ist, und suche immer noch nach einem kürzeren Weg, dies zu tun: c
Gibt ein Tupel Boolescher Werte zurück. Das erste ist, wenn Sie im Weltraum gereist sind und das zweite, wenn Sie in der Zeit gereist sind
Probieren Sie es online aus!
quelle
yâ
transponiert, nimmt einzigartige Gegenstände und transponiert zurück , so dass Sie wahrscheinlichUy e_â ʦ1Ã
stattdessen tun möchten )â
diee
Methode auch bei meinem ersten Versuch, bevory
ich sie aus einer Laune heraus verschob, um zu sehen, ob sie funktionieren würde.q
im zugeordneten transponierten Arraytypeof q instanceof Array
... was für ein praktischer Fehler: P Ich schätze, ich kann ihn jetzt nicht beheben, bis 1.4.6 veröffentlicht wird ...JavaScript (ES6),
104100 Byte(space)(time)
24% des Codes werden ausgegeben, um herauszufinden, in welchem Jahr wir ... \ o /
Probieren Sie es online aus!
Kommentiert
quelle
console.log(f([[5,4,2], [3,4,0], [1,4,2], [9,4,4]])([2020])) // neither
R ,
106, 105 BytesProbieren Sie es online aus!
Eingabe:
Geben Sie einen ganzzahligen Wert aus, der gleich ist:
quelle
Stapel, 353 Bytes
Hinweis: Da Kommas in Batch Argumenttrennzeichen sind, müssen Sie zur Eingabe der Raumkoordinaten z
Explantation:
Schalten Sie unerwünschte Ausgaben aus.
Richten Sie zwei Bitmasken ein und extrahieren Sie auch das aktuelle Jahr. (In JJJJ-MM-TT-Gebietsschemas wird
%date:~,4%
dieselbe Byteanzahl verwendet.)Schleife über alle Argumente. Dies
~
bewirkt, dass Koordinatenwerte in separate Parameter aufgeteilt werden.Überprüfen Sie, ob die Bitmasken vollständig gesetzt sind, und geben Sie das entsprechende Ergebnis aus.
Überprüfen Sie, ob dies ein Koordinatenpaar oder eine Koordinate und ein Jahr ist.
Wenn es sich um eine Koordinate handelt, aktualisieren Sie die Raumbitmaske entsprechend der Frage, ob die relevante räumliche Dimension besucht wurde.
Wenn es ein Jahr ist, aktualisieren Sie die Zeitbitmaske entsprechend der Frage, ob die relevante Zeitdimension besucht wurde.
quelle
Java 10, 154 Bytes
Gibt
1
für Raum ,2
für Zeit ,3
für beide ,0
für keine zurück . Probieren Sie es hier online aus .Ungolfed:
quelle