Bei diesem Codegolf müssen Sie die nächstgelegene Nummer von einer anderen in einer Liste abrufen.
Die Ausgabe kann die dem Eingang am nächsten liegende Zahl sein.
Beispiel:
value: (Input) 5 --- [1,2,3] --- 3
Und das Programm kann mit negativen Zahlen arbeiten.
Beispiel:
value: (Input) 0 --- [-1,3,5] --- -1
value: (Input) 2 --- [1, 5, 3] --- 1 (Because it gives priority to lower numbers)
REGELN:
Wie bereits erwähnt, muss es mit negativen Zahlen funktionieren.
Wenn es zwei Antworten gibt (Beispiel: 0 - [5, -5]), gibt das Programm der niedrigsten Nummer den Vorrang. (-5)
Dies ist Codegolf, also gewinnt der kürzeste Code!
code-golf
math
number
array-manipulation
AlexINF
quelle
quelle
Antworten:
Pyth, 6 Bytes
Testsuite
In der folgenden Form auf STDIN eingeben:
Erläuterung:
quelle
Ruby, 34 Bytes
quelle
->n,a{a.min_by{|x|(n-x).abs}}
Mathematica, 12 Bytes
Eingebaute FTW! Buettners Erklärung: "Mathematica hat eine eingebaute Funktion
Nearest
, die jedoch eine Liste aller verknüpften Zahlen zurückgibt. Daher müssen wir sie komponierenMin
, um das Band zu durchbrechen."quelle
Pyth, 8 Bytes
Erläuterung
Probieren Sie es online!
quelle
JavaScript ES6,
645654 BytesProbieren Sie es online aus
Vielen Dank an @Niel für das Speichern von zwei Bytes
Testschnipsel:
quelle
(i,a)=>a.sort((a,b)=>s(i-a)-s(i-b)||a-b,s=Math.abs)[0]
i=>a=>...
dannf(i)(a)
ist , wie Sie es nennen.input
und eine Liste / ein Array / ... als GanzzahlenGelee,
76 BytesProbieren Sie es online!
Wie es funktioniert
quelle
MATL , 10 Bytes
Probieren Sie es online!
quelle
Python 2, 56 Bytes
Erhält zuerst die Zielnummer
a=input()
- diese muss in einer Variablen gespeichert werden.Es sortiert dann die Eingabe mit der
lambda x:abs(a-x)
angewendeten Funktion (thinkmap(lambda x:abs(a-x), input())
)Bei doppelten Werten wird dann der Mindestwert verwendet
quelle
TeaScript, 10 Bytes
TeaScript unterstützt keine Array-Eingaben. Führen Sie daher in der Konsole
TeaScript("T#y-la)░", [[1, 2, 3], 1], {}, TEASCRIPT_PROPS)
Folgendes aus:Erläuterung
quelle
R, 42 Bytes
quelle
Haskell, 38 Bytes
Anwendungsbeispiel:
2 # [1,5,3]
->1
.Für jedes Element in der Eingabeliste
l
ein Paar der absoluten Differenz des Elements mit der Eingangsnummer machene
und das Elemente selbst, zum Beispiele=2
,l=[1,5,3]
->[(1,1),(3,5),(1,3)]
. Finden Sie das Minimum und verwerfen Sie die Differenz.quelle
zsh,
7573717067 BytesErwartet Eingaben als Befehlszeilenargumente.
Beachten Sie, dass die vier Leerzeichen im
echo
eigentlich eine Registerkarte sein sollen, Stack Exchange jedoch Tabulatoren in Leerzeichen in allen Posts konvertiert.Aufgrund der
for
Syntax nicht Bash-kompatibel .Danke an dev-null für 2 Bytes!
quelle
Perl 6 , 31 Bytes
Verwendung:
quelle