Es gibt eine großartige Geschichte über reguläre Sechsecke, die zum Beispiel in Waben gefunden werden. Aber diese beschäftigte Biene braucht Ihre Hilfe, um ihm zu sagen, welcher Punkt innerhalb oder außerhalb seines Honigtopfs liegt. Bestimmen Sie also bei einem regelmäßigen Sechseck wie unten abgebildet, zentriert am Ursprung und mit der Kantengröße l, ob sich ein Satz von Koordinaten (x, y) innerhalb, genau am Rand oder außerhalb meines regulären Sechsecks befindet.
Eingabe, Ausgabe und Regeln
Die Regeln sind:
- Eingabe- und Ausgabemethoden folgen den Standardregeln .
- Die Eingabe besteht aus drei Ganzzahlen :
x,y,l
. x
undy
haben ein beliebiges geeignetes vorzeichenbehaftetes Ganzzahlformat.l
ist positiv (niemals 0).- Ihr Programm muss a ausgeben / zurückgeben,
1
wenn sich der Punkt(x,y)
innerhalb des regulären Sechsecks befindet,-1
wenn er außerhalb liegt oder0
wenn er genau am Rand liegt. - Dies ist ein Code-Golf, also gewinnt der kürzeste Code. Bei einem Unentschieden gewinnt der früheste Beitrag.
- Für die Ausgabe an stdout: führende / nachfolgende Leerzeichen oder Zeilenumbrüche in der Ausgabe sind zulässig.
- Es gelten Standardlücken.
Testfälle
Hier einige Testfälle:
0,0,1 --> 1
0,1,1 --> -1
0,-1,1 --> -1
1,0,1 --> 0
-1,0,1 --> 0
-1,-1,1 --> -1
1,1,1 --> -1
-2,-3,4 --> 1
32,45,58 --> 1
99,97,155 --> -1
123,135,201 --> 1
Antworten:
JavaScript (ES6) 77
83Prüfung
quelle
Ruby,
1501451371271251068876 76 Bytes76 Bytes
Dreifacher Vergleich mit einer Rakete geändert.
88 Bytes
Entfernen Sie das y gleich dem Apothem-Test für Punkte auf dem Sechseck, da dies für ganze Zahlen niemals wahr sein kann.
106 Bytes:
Das Poster schlug vor, kein Epsilon zu verwenden, ersetzte also Epsilon durch Null und ordnete es neu, entfernte eine Bauchmuskulatur usw.
125 Bytes:
Integrieren Sie y in die Definition von z und entfernen Sie einige Klammern.
127 Bytes:
Neu angeordnete Begriffe, um die Notwendigkeit einer Besetzung zu vermeiden. Verwenden Sie d (doppeltes Apothem) anstelle von a (Apothem). Kombinieren Sie mehrere Aufgaben.
137 Bytes:
Inline 'c'.
150 Bytes:
Dies funktioniert für ganze Zahlen oder Gleitkommazahlen! Der Epsilon-Test ist so, dass Punkte innerhalb des Rundungsfehlers am Rand korrekt identifiziert werden.
Die absoluten Werte verschieben alles in den ersten Quadranten.
Der Wert 'a' ist der Apothemabstand (der y-Achsenabschnitt des Sechsecks).
Der Wert 'c' ist der x-Wert der oberen rechten Ecke des Sechsecks.
Der Wert 'z' gibt an, ob der Punkt über oder unter der schrägen Linie von der Ecke zum x-Achsenabschnitt liegt.
Ungolfed:
Prüfung
quelle
MATL ,
2925 BytesDie Eingänge sind
y
,x
,l
in dieser Reihenfolge.Probieren Sie es online aus!
quelle
Julia,
6558 Bytesx
ist ein Zeilenvektor[x y]
. Rufen Sie so an :f([0 0],1)
.quelle
Python 2, 89 Bytes
Fast die gleiche Lösung wie Julia, aber wir können die Operation für Vektoren ohne Numpy verwenden
Ergebnisse
quelle
Pyth, 41 Bytes
Testen Sie es hier
quelle
JavaScript (ES6), 67 Byte
Hinweis: Um dies einer Variablen zuzuweisen, damit Sie sie aufrufen können, setzen Sie das
f=
nachwith(Math)
.Ich verwenden
l*l
undb*b
im ersten Parameter zumin
vermeiden Anrufeabs
undsqrt
aber ich konnte nicht herausfinden, ob ich einen ähnlichen Trick mit dem zweiten Parameter tun könnte.quelle