Aufgabe
Geben Sie bei einer gegebenen Darstellung einer Linie die Anzahl der Quadranten aus , die diese Linie durchläuft.
Gültige Darstellungen einer Linie
Sie können eine Linie als darstellen
- Drei signierte ganze Zahlen
A
,B
undC
die teilen keinen gemeinsamen Faktor und woA
undB
nicht beide Null, die die LinieAx + By = C
, - Vier signierte ganze Zahlen , , , und , die die Linie durch die Punkte und oder
X1
Y1
X2
Y2
(X1, Y1)
(X2, Y2)
- Ein Datentyp, der eine Linie beschreibt, falls Ihre Sprache eine hat (vertikale Linien müssen unterstützt werden).
Sie dürfen keine Eingabe in einem Format vornehmen, das keine vertikale Linie zulässt (z. B. Steigungsschnittform). Wenn Sie sich für die Eingabe von Ganzzahlen entscheiden, können Sie davon ausgehen, dass diese im Inklusivbereich liegen [-127, 128]
.
Spezifikationen
- Die Ausgabe ist immer 0, 2 oder 3 (eine Linie kann niemals alle vier Quadranten oder nur einen einzigen Quadranten durchlaufen).
- Es wird davon ausgegangen, dass eine Linie auf einer Achse keine Quadranten durchläuft. Es wird angenommen, dass eine Linie durch den Ursprung nur durch zwei Quadranten verläuft.
- Sie müssen nicht zurückgeben, welche Quadranten durchlaufen werden (obwohl die Testfälle sie aus Gründen der Übersichtlichkeit enthalten).
- Das ist Code-Golf , also gewinnt die kürzeste gültige Antwort (gemessen in Bytes).
Testfälle
Sie müssen diese in ein geeignetes Format konvertieren, bevor Sie sie verwenden können.
1x + 1y = 1 -> 3 (quadrants I, II, and IV)
-2x + 3y = 1 -> 3 (quadrants I, II, and III)
2x + -3y = 0 -> 2 (quadrants III and I)
1x + 1y = 0 -> 2 (quadrants II and IV)
3x + 0y = 6 -> 2 (quadrants I and IV)
-3x + 0y = 5 -> 2 (quadrants II and III)
0x + -8y = 4 -> 2 (quadrants III and IV)
0x + 1y = 0 -> 0 (lies on the x-axis)
1x + 0y = 0 -> 0 (lies on the y-axis)
Antworten:
Python 3 , 24 Bytes
Probieren Sie es online!
quelle
'320'[a.count(0)]
es akzeptabel, den Wert in Stringform zu verwenden und zurückzugeben?Gelee , 5 Bytes
Probieren Sie es online!
Nicht länger von Leakys Antwort abhängig!
quelle
ċ0ị2,0,3
speichert ein ByteTL’ȧ$
. Weiß nicht, Jelly, so könnte dies Golf seinJavascript (ES6),
302422 BytesDies ist mein erster Versuch, in Javascript Golf zu spielen.
Es muss einen besseren Weg geben, um Nullen zu zählen ...-6 Bytes dank Herman Lauenstein, -2 Bytes, um die Operator-Prioritäten zu speichern.
Alternative 24-Byte-Lösung, um stattdessen eine Zeichenfolge zurückzugeben:
quelle
(a,b,c)=>3<<(!a+!b+!c)&3
05AB1E , 6 Bytes
Probieren Sie es online!
Basierend auf der Antwort von Leaky Nun.
quelle
SOGL V0.12 , 8 Bytes
Probieren Sie es hier aus!
Basierend auf der Antwort von Leaky Nun .
quelle
GolfScript ,
16 bis14 BytesProbieren Sie es online!
Dieses Programm verwendet ein Array von 3 Ganzzahlen, die die Koeffizienten in der Gleichung darstellen
Ax + By = C
Beispiel Eingabe / Ausgabe
Wie es funktioniert
Für mich war es zunächst etwas schwierig, einen mathematischen Weg zu finden, um dies zu berechnen. Es gibt jedoch nur 8 mögliche Konfigurationen, so dass
a != 0 & b != 0 & c != 0
Ich kam schließlich zu der folgenden Funktion.
und das Ganze kann zu einem einzigen mathematischen Problem zusammengefasst werden
quelle
{!!}%
anstelle von verwenden[{!!}/]
.{:!:!:+_1>*}
.:!
entspricht{!}%
), 2) Kurzform für das Reduzieren (:+
entspricht{+}*
), 3) das.
in_
(weil CJam Floats hat) geändert wird, und 4) dass CJam keine Eingabe hat Dies bedeutet, dass Sie den Code einschließen{}
, um ihn zu einer Funktion zu machen.Retina , 13 Bytes
Probieren Sie es online aus
Basiert auch auf der Antwort von Leaky Nun .
quelle
10
. Der erste Regex müsste sein\b0
.JavaScript, 25 Byte
Basierend auf der Antwort von Leaky Nun.
quelle
Haskell , 22 Bytes
Probieren Sie es online!
Punktfreie Lösung, 27 Bytes
Probieren Sie es online!
quelle
Perl 6, 18 Bytes
quelle
ABCR , 30 Bytes
Die Eingabe erfolgt in der Form,
A,B,C
in der die Kommas durch beliebige nicht numerische-
Zeichen ersetzt werden können.Noch kein Online-Dolmetscher, aber hier eine Erklärung:
quelle
APL (Dyalog Unicode) ,
1411 BytesProbieren Sie es online!
⎕IO
ist0
. Vielen Dank an @ Adám für -3 Bytes!quelle
0⌈3-×⍨+/0=⎕
Deorst , 12 Bytes
Probieren Sie es online!
Etwas basierend auf Leakys Antwort ; verwendet dieselbe Prämisse, jedoch eine andere Zuordnungsmethode.
Wie es funktioniert
Deorst verfügt über eine integrierte Anzahl von Vorkommen, hat jedoch (aus irgendeinem Grund) keinen Indizierungsbefehl, sodass ich das folgende Mapping erstellen musste, bei dem links
a.count(0)
und rechts das gewünschte Ergebnis istDas Programm selbst funktioniert so (Beispieleingabe von
[1,1,1]
)quelle
Add ++ , 23 Bytes
Probieren Sie es online!
Basierend auf meiner Deorst-Antwort und der Python-Antwort von Leaky
Wie es funktioniert
Ich glaube jedoch, dass ich Funktionen in Add ++ zu oft verwendet habe, anstatt den Haupttextkörper. Also habe ich versucht, dies mit beiden Funktionen und dem Code-Body zu tun und habe ein viel schöneres 50-Byte-Stück erhalten (ja, das ist die längste Antwort hier):
Probieren Sie es online!
quelle