Ein traditioneller westlicher Würfel ist ein Würfel, bei dem die ganzen Zahlen 1 bis 6 auf den Flächen markiert sind. Paare, die zu 7 addieren, werden auf gegenüberliegenden Seiten platziert.
Da es sich um einen Würfel handelt, können wir jeweils nur zwischen 1 und 3 Flächen (einschließlich) 1 sehen . Gegenüberliegende Gesichter sind niemals gleichzeitig zu sehen.
Ihre Aufgabe ist es, ein Programm oder eine Funktion zu schreiben, die anhand einer Liste von Ganzzahlen, die Seiten auf einem Würfel darstellen, bestimmt, ob es möglich ist, diese Gesichter gleichzeitig zu sehen.
1 Okay, vielleicht können Sie 4 oder 5 Gesichter mit zwei Augen sehen, aber zum Zweck dieser Herausforderung beobachten wir den Würfel von einem einzigen Punkt aus.
Regeln:
- Ihr Beitrag kann die Eingabeliste annehmen:
- Ist nicht leer.
- Enthält nur Werte, die erfüllen
1 ≤ n ≤ 6
. - Enthält keine doppelten Elemente.
- Sie können nicht davon ausgehen, dass die Eingabe sortiert ist.
- Ihr Beitrag sollte einen Wahrheits- / Falschwert ausgeben : Wahr ist, dass die Gesichter gleichzeitig zu sehen sind, ansonsten falsch.
- Das ist Code-Golf , also gewinnt die kürzeste Antwort (in Bytes)!
- Standardlücken sind standardmäßig verboten.
Testfälle
Wahrheit:
[6] (One face)
[6, 2] (Share a side)
[1, 3] (Share a side)
[2, 1, 3] (Share a vertex)
[3, 2, 6] (Share a vertex)
Falsch:
[1, 6] (1 and 6 are opposite)
[5, 4, 2] (2 and 5 are opposite)
[3, 1, 4] (3 and 4 are opposite)
[5, 4, 6, 2] (Cannot see 4 faces)
[1, 2, 3, 4, 5, 6] (Cannot see 6 faces)
quelle
Antworten:
Python 2 , 35 Bytes
Probieren Sie es online!
quelle
JavaScript (ES6),
38 34 30 2928 ByteÜbernimmt die Eingabe als eine beliebige Anzahl separater Parameter. Rückgabe
0
oder1
.Testfälle
Code-Snippet anzeigen
Wie?
Nachfolgend finden Sie vereinfachte Versionen des Hauptausdrucks gemäß der Anzahl der angegebenen Parameter, wobei undefinierte Variablen entweder auf 0 oder auf false erzwungen werden :
NB : Die Reihenfolge von (a, b, c) spielt keine Rolle, da sie immer zusammen XOR-verknüpft sind.
Der schwierigste Fall ist der dritte. Hier ist eine Tabelle mit allen möglichen Kombinationen:
Alt. Version # 1, 32 Bytes
Übernimmt die Eingabe als Array. Gibt einen Booleschen Wert zurück.
Testfälle
Code-Snippet anzeigen
Alt. Version 2, Chrome / Firefox, 34 Byte
Dieser missbraucht die Sortiermethoden von Chrome und Firefox. Bei Edge funktioniert das nicht.
Übernimmt die Eingabe als Array. Rückgabe
0
oder1
.Testfälle
Code-Snippet anzeigen
quelle
Haskell , 24 Bytes
-3 Bytes dank H.PWiz.
Probieren Sie es online!
Erläuterung
quelle
APL (Dyalog) , 7 Bytes
Probieren Sie es online!
∘.+⍨
- Additionstabelle (jedes Element mit jedem Element)7∊
- 7 existiert?~
- negierenAPL (Dyalog) , 7 Bytes
Probieren Sie es online!
7-⊢
- subtrahiere jedes Element von 7⊢∩
- schneide mit dem ursprünglichen Array⍬≡
- leer?quelle
R , 27 Bytes
Vielen Dank an Gregor für die Fehlerbehebung
Probieren Sie es online!
Antwort von Port of Chas Brown . Vektorisierte Operationen helfen, dies in R viel kürzer zu machen.
quelle
(7-d)
, andere habend%in%d
Vorrang.Mathematica, 20 Bytes
Das
ist\[Function]
-12 Bytes von Martin Ender
-7 Bytes von Misha Lavrov
Probieren Sie es online!
quelle
Haskell , 26 Bytes
Probieren Sie es online!
quelle
Pyth , 5 Bytes
Probieren Sie es hier aus.
quelle
Eigentlich 8 Bytes
Probieren Sie es online! (führt alle Testfälle aus)
Erläuterung:
quelle
Schale , 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
Netzhaut ,
21 bis20 BytesProbieren Sie es online! Link enthält Testfälle. Bearbeiten: 1 Byte dank @MartinEnder gespeichert. Erläuterung:
Sortieren Sie die Eingabe.
Suchen Sie nach zwei gegenüberliegenden Seiten (3 und 4 nebeneinander). Dies gibt 1 für einen ungültigen Würfel oder 0 für einen gültigen zurück.
Negieren Sie das Ergebnis logisch.
quelle
Gelee , 5 Bytes
Probieren Sie es online!
Antwort von Port of Chas Brown .
Erläuterung
quelle
Alice , 18 Bytes
Probieren Sie es online!
Druckt
Jabberwocky
für gültige Eingaben und sonst nichts.Erläuterung
Das Programm entfaltet den Zick-Zack-Kontrollfluss und ist wirklich einfach:
quelle
Pyth , 5 Bytes
Testsuite.
isaacg hat ein Byte gespeichert!
quelle
Ruby ,
36 31 2423 BytesProbieren Sie es online!
Es war so einfach, dass ich die ganze Zeit nach einer Lösung für das falsche Problem suchte.
quelle
05AB1E , 5 Bytes
Probieren Sie es online!
Erläuterung
Eine von mehreren Möglichkeiten, dies in 5 Bytes in 05AB1E zu tun
quelle
Perl 5 , 51 + 1 (
-a
) = 52 BytesProbieren Sie es online!
quelle
3 1 4
gibt wahr, was ist mitsay 1>grep{$x=$_;grep$_+$x==7,@F}@F
Netzhaut , 20 Bytes
Probieren Sie es online!
Eine Alternative zu Neils Ansatz.
Erläuterung
Drehen
6
,5
,4
in1
,2
,3
, respectively.Versuchen Sie, wiederholte Zeichen zu finden und die Anzahl der Übereinstimmungen zu zählen.
Stellen Sie sicher, dass das Ergebnis Null ist (praktisch eine logische Negation).
quelle
Java (OpenJDK 8) , 43 Byte
Probieren Sie es online!
quelle
GNU sed ,
3722 + 1 = 23 Bytes+1 Byte für
-r
Flag. Übernimmt die Eingabe als Ziffern; Gibt die Eingabe für wahr und0
falsch aus.-10 Bytes dank @MartinEnder.
Probieren Sie es online!
Erläuterung
Ähnlich wie bei @ MartinEnder Alice Antwort .
quelle
Perl 6 , 18 Bytes
Probieren Sie es online!
1 & 6 | 2 & 5 | 3 & 4
ist eine Junction bestehend aus den Nummern 1 und 6 ODER den Nummern 2 und 5 ODER den Nummern 3 und 4. Diese Junction ist ein Element von (∈
) der Eingabeliste,*
wenn sie 1 und 6 oder 2 und 5 oder 3 enthält und 4. Dieses Ergebnis wird dann negiert (!
), um den erforderlichen Booleschen Wert zu erhalten.quelle
Haskell,
46 4137 BytesNimmt das kartesische Produkt der Liste mit sich und prüft, ob alle resultierenden Listen nicht 7 ergeben irgendwelche tun ".)
quelle
J , 12 Bytes
Dies ist so ziemlich das Gleiche wie die erste APL-Lösung von Uriel
Probieren Sie es online!
quelle
IBM / Lotus Notes-Formel, 7 Byte
Übernimmt die Eingabe von einem mehrwertigen Zahlenfeld i.
Subtrahiert rekursiv jeden Wert von i von 7 und prüft, ob er in der ursprünglichen Liste enthalten ist. ! Ändert die 1, wenn sie eine 0 ist (Gesichter können nicht alle gesehen werden).
Testfälle (kein TIO für Notes Formula verfügbar)
quelle
Sauber , 49 Bytes
Probieren Sie es online!
quelle
Schnell , 46 Bytes
Übernimmt die Eingabe als
[Int]
(Integer-Array) und gibt einenBool
(Booleschen Wert) zurück.Kurze Erklärung (ungolfed)
quelle
Clojure ,
898072 Bytes-9 Bytes, weil mir klar wurde, dass die Verwendung von
reduced
unnötig ist-8 Bytes durch Ändern von using
reduce
zu usingsome
Ich habe versucht, dies zu schreiben, ohne auf die Tricks zu achten, die andere Antworten verwenden. Vielleicht kann ich das später verbessern.
Gibt
true
für echte Fälle zurück,false
wenn eine Seite 7nil
ergibt und die Anzahl der Seiten ungültig ist.quelle