Wenn zwei ganze Zahlen A und B gegeben sind, wird A ausgegeben, wenn AB (A minus B) in AB (A bis B) ist, andernfalls wird B ausgegeben.
"A minus B" ist Standard-Subtraktion.
"A nach B" ist der Bereich von ganzen Zahlen, die bei A beginnen und bei B enden, einschließlich A und B. Zum Beispiel:
1 to 4: 1, 2, 3, 4
-2 to 5: -2, -1, 0, 1, 2, 3, 4, 5
3 to -1: 3, 2, 1, 0, -1
7 to 7: 7
Der kürzeste Code in Bytes gewinnt.
Testfälle
A B Output
1 4 4
-2 5 5
3 -1 -1
7 7 7
90 30 90
90 -30 -30
-90 30 30
-90 -30 -90
-2 -2 -2
-2 -1 -2
-2 0 -2
-2 1 1
-2 2 2
-1 -2 -2
-1 -1 -1
-1 0 -1
-1 1 1
-1 2 2
0 -2 -2
0 -1 -1
0 0 0
0 1 1
0 2 2
1 -2 -2
1 -1 -1
1 0 1
1 1 1
1 2 2
2 -2 -2
2 -1 -1
2 0 2
2 1 2
2 2 2
quelle
PHP, 58 Bytes
quelle
$b
Zuordnung benötigt keine Klammern.JavaScript (ES6), 24 Byte
Testfälle
quelle
Python 2, 37 Bytes
Aufrufen als
f(B, A)
.quelle
Python2,
555251 BytesProbieren Sie es online!
Behandelt jeden Testfall, den OP erwähnt hat (zum Zeitpunkt der Veröffentlichung), wie es die TIO vorschlägt.
quelle
JavaScript ES6,
4037 BytesErklärt:
3 Bytes dank Arnauld gespart.
quelle
Mathematica, 16 Bytes
Reine Funktion, die zwei Argumente in umgekehrter Reihenfolge wie das OP verwendet (z. B.
If[2#^2>1##,##]&[B,A]
). Eine Portierung der Python-Antwort von xnor .quelle
R
493028 BytesVerwendet die @ xnor-Logik, um festzustellen, ob sich ab in a befindet: b.
quelle
pryr::f(match(a-b,a:b,b))
Clojure,
7141 Bytes-30 Bytes mit
<=
undmin
/max
anstelle vonrange
s.Prüft, ob
(a - b)
im Bereich vona
bisb
, und sendet eine entsprechende Rücksendung.quelle
PHP (7.1), 55 Bytes
verwendet die neue Array-Destrukturierungssyntax:
Führen Sie mit aus
-r
, und geben Sie Zahlen als Befehlszeilenargumente an.quelle
PowerShell ,
373532 BytesProbieren Sie es online!
Wörtliche Übersetzung des Problems in PowerShell mithilfe des
-notin
Operators. Drei Bytes durch Mehrfachzuweisung und Kapselung eingespart. Dies funktioniert, weil-
der Operator eine höhere Priorität als-notin
hat und der( )
Teil des Codes zuerst ausgeführt und als Array zurückgegeben wird@($a,$b)
. Da dies jedoch nicht der$a,$b
Fall ist$b,$a
, müssen wir-notin
das Ausgabeergebnis mit Flip / Flop ändern.quelle
Batch, 107 Bytes
quelle
Pyth - 9 Bytes
Ich hatte gehofft, mehr implizite Eingaben zu verwenden ... :(
Probieren Sie es hier online aus .
quelle
Röda , 30 Bytes
Probieren Sie es online!
Es wird die Formel verwendet, die in der Antwort von xnor verwendet wird.
Eine andere Lösung (37 Bytes):
Probieren Sie es online!
quelle
> <> , 21 Bytes
Benutzt @ xnors Trick . Wir verwenden
-v B A
, um den Stapel vorab zu füllen. (-v A B
ist +1 Byte).Probieren Sie es online!
Erläuterung
quelle
Ruby ,
2722 BytesProbieren Sie es online!
Nichts innovatives hier. Die einfache Mathematik dahinter:
kann geschrieben werden als
das heißt: wenn A-2B das gleiche Vorzeichen wie B hat, sind wir im Bereich.
quelle
SpecBAS - 38 Bit
IIF
ist ein Inline-IF-THEN-ELSE, um den korrekten Wert zu drucken.quelle
Haskell, 21 Bytes
Probieren Sie es online!
Lesbar
Erläuterung
Verwendet die Formel von @ xnor, um zu überprüfen, ob sich ab im Bereich befindet. Sonst nichts Besonderes.
quelle
Haskell, 58 Bytes
Erst kürzlich habe ich mich wieder in Pfeile verliebt. Leider müssen wir statt mit Binärfunktionen mit Tupeln arbeiten. Und natürlich hat Haskell keine symmetrische
range
Funktion.quelle
PHP 7 - 45 Bytes
quelle
Oktave, 55 Bytes
Dies könnte wahrscheinlich weiter optimiert werden. Ich werde später eine Erklärung hinzufügen.
quelle
Nim, 60 Bytes
Probieren Sie es online!
Ziemlich normal, was die Antworten angeht, keine großen Tricks.
quelle
Schnell -
383022 Bytes8 Bytes dank @Matt eingespart
Probieren Sie es bei IBM Swift Sandbox online!
Oder 21 Bytes:
(dank @xnors Formel) und dank @Matt 8 Bytes gespart
Swift ist nicht die beste Sprache zum Golfen (es ist sehr starr). Wenn Sie also eine andere Möglichkeit zum Golfen sehen, werde ich die Antwort komplett überarbeiten.
quelle
Java 7,
846058 BytesJava 8, 37 Bytes
Erläuterung:
Testcode: Probieren Sie es hier aus.
quelle
Ti-Basic (TI-84 Plus CE),
26 2423 ByteTI-Basic ist eine Token-Sprache. Alle verwendeten Token sind Ein-Byte-Token .
Prompt
fordert Sie zur Eingabe der beiden Nummern auf.A-B≥A and A-B≤B
prüft, ob AB zwischen A und B (einschließlich) liegt; Dies gibt eine 1 wenn wahr und eine Null wenn falsch zurück, die in gespeichert wirdAns
.Da wir A zurückgeben, wenn AB zwischen A und B liegt, multiplizieren wir A mit Ans, was A ist, wenn wir A zurückgeben sollen, und andernfalls 0.
Als nächstes fügen wir
Bnot(Ans
es hinzu. Wenn Ans 1 (wahr) war, haben wirnot(
es und bekommen 0, also ist unsere Summe A. Wenn Ans 0 (falsch) war, haben wirnot(
es, um 1 zu bekommen, die wir mit B multiplizieren und zu 0 addieren, um B zu bekommen.Die letzte Auswertung in TI-Basic wird implizit zurückgegeben.
-2 Bytes dank Scott Milner
quelle
Y
und nur verwendenAns
.Pyt , 32 Bytes
Nimmt A und B von stdin als zwei separate Eingänge
Erläuterung:
AABB -> ABBA -> ABAB -> ABABB -> ABBBA -> ABBBA -> ABAABB -> ABABBA -> ABABC -> ABCBA -> ABCAB -> ABC [A, ..., B] -> ABD -> ABDD - > ADDB -> ADBD -> AD {B * (1-D)} -> {B * (1-D)} AD -> {B * (1-D)} + {A * D}
wobei: C = BA und D = C = [A, ..., B] (1 wenn wahr, 0 wenn falsch)
quelle
Ohm , 10 Byte (CP437)
Es gibt wahrscheinlich eine golferischere Möglichkeit, dies zu tun, aber die streng getippte Natur von Ruby macht dies schwierig.
quelle
Perl 6 ,
31 2924 BytesVersuch es
Versuch es
Versuch es
quelle