Herausforderung:
Nehmen Sie einen Vektor / eine Liste von Ganzzahlen als Eingabe und geben Sie die größte Zahl aus, die einer Null benachbart ist.
Spezifikationen:
- Wie immer optionales Eingabe- und Ausgabeformat
- Sie können davon ausgehen, dass es mindestens ein Null- und mindestens ein Nicht-Null-Element gibt.
Testfälle:
1 4 3 6 0 3 7 0
7
9 4 9 0 9 0 9 15 -2
9
-4 -6 -2 0 -9
-2
-11 0 0 0 0 0 -12 10
0
0 20
20
Viel Glück und viel Spaß beim Golfen!
Antworten:
Gelee , 8 Bytes
Probieren Sie es online!
quelle
MATL , 10 Bytes
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
Nehmen wir
[-4 -6 -2 0 -9]
als Beispiel die Eingabe .quelle
x(~~(dec2bin(5)-48))
. Wer wollte das umsetzen? Sehr clever und nützlich für logische Arrays! :) Gute Antwort!dec2bin()-'0'
hunderte Male in MATLAB gearbeitet, also wusste ich, dass man in MATL sein musste :-)05AB1E , 9 Bytes
Erläuterung
Funktioniert nicht im Online-Interpreter, funktioniert aber offline.
quelle
ü
erst gestern hinzugefügt :)0
wenn die tatsächliche Antwort negativ wäre? Sie müssen die Nullen wegwerfen, denke ich.˜
durchO
(sum) behoben werden .Haskell,
6343 BytesDanke an @MartinEnder für 4 Bytes!
quelle
a*b==0
anstelle der verwenden||
.Pyth,
121110 BytesBildet Paare, filtert nach Nullelement, sortiert nach Summe und gibt den größten Wert zurück.
quelle
,Vt
(implizitQQ
) liefert die gleichen Paare wie.:Q2
, jedoch mit umgedrehten Paaren. Sollte aber funktionieren.f}0T
is/#0
JavaScript (ES6),
595756 BytesEdit: dank Huntro 2 Byte gespeichert
Edit: dank ETHproductions 1 Byte gespeichert
quelle
==
anstelle von===
l=>l.map((n,i)=>m=l[i-1]*l[i+1]==0&n>m?n:m,m=-1/0)|m
JavaScript (ES6), 53 Byte
Weil ich gerne benutze
reduce
. Alternativlösung, auch 53 Bytes:quelle
Python, 49 Bytes
Tests sind bei ideone
Zippt durch die Paare, summiert die Nullen und gibt das Maximum zurück.
quelle
Ruby, 51 Bytes
Verwendung
quelle
a+b
.-3 -2 0
0
...?0:...
...?-1.0/0:...
PHP,
776871 Bytes-3 Bytes von anonym,-4 und -2 von MartinEnderrenn mit
php -r '<code>' '<space separated values>'
quelle
\K
, um das Match zu verwerfen, ist bisher kürzer als die Verwendung eines Rückblicks.\S+
, um eine Ganzzahl mit Vorzeichen abzugleichen. Sie müssen wahrscheinlich verwenden,\b0,
damit Sie das nicht voranstellen müssen,
.4 0 0 5
?\K
nicht mit Alternativen? Aus unbekannten Gründen kehrt die zweite Alternative zurück0 0
, so dass0
vor dem keine Übereinstimmungen mehr vorhanden sind5
. Behoben, danke.Java 7,
118105106 Bytes13 Bytes werden dank @cliffroot mithilfe eines arithmetischen Ansatzes eingespart . 1 zusätzliches Byte danke an @mrco, nachdem er einen Fehler entdeckt hatte (der hinzugefügte Testfall
2, 1, 0
würde zurückkehren2
anstatt1
).Ungolfed & Testcode:
Probieren Sie es hier aus.
Ausgabe:
quelle
int d(int[]a){int i,m=a[i=0],c;for(;++i<a.length;m=a[i]*a[i-1]==0&(c=a[i]+a[i-1])>m?c:m);return m;}
CJam , 16 Bytes
Probieren Sie es online! (Als Testsuite.)
Erläuterung
quelle
MATLAB mit Image Processing Toolbox, 32 Byte
Dies ist eine anonyme Funktion. Anwendungsbeispiel für die Testfälle:
quelle
Dyalog APL , 14 Bytes
⌈/
größte von∊
die Abgeflachten (" e nlisted")2(
...)/
paarweise+
Summe (Null plus etwas ist etwas)↑⍨
genommen wenn0
Null∊
ist ein Mitglied von,
das Paar (lit. die Verkettung der linken und der rechten Nummer)TryAPL online!
quelle
R,
4847 BytesBEARBEITEN: Ein Fehler wurde dank @Vlo behoben und so geändert, dass Eingaben aus stdins gelesen und ein Byte durch Zuweisen
w
und Überspringen von Klammern gespeichert wurden.Nicht verschachtelte Erklärung
v
die Werte 0 annimmt:w <- which(v == 0)
+-1
:w-1
undw+1
w-1
und übereinstimmenw+1
Beachten Sie, dass, wenn das letzte oder erste Element von
v
eine Null ist,w+-1
effektiv ein Index außerhalb der Länge des Vektors abgerufen wird, was impliziert, dass dieserv[length(v)+1]
zurückgibtNA
. Dies ist in der Regel kein Problem, aber diemax()
Funktionen geben unpraktisch zurück,NA
wenn der Vektor vorkommt, es sei denn, Sie geben die Option anna.rm=T
. So ist es 2 Bytes kürzer, das erste Element zu sortieren und zu extrahieren, als es zu verwenden istmax()
, zB:quelle
c(1, 4, 3, 6, 0, 10, 7, 0)
c((w<-which(v==0))-1,w+1)
auch ein bisschen kürzer mit Scansort((v<-scan())[c(w<-which(v==0)-1,w+1)],T)[1]
()
;). Der Code wurde aktualisiert undv
vor der Bearbeitung zugewiesen .Mathematica,
4643 Bytes3 Bytes aufgrund von @MartinEnder gespeichert .
Anonyme Funktion. Nimmt eine Liste von Ganzzahlen als Eingabe und gibt eine Ganzzahl als Ausgabe zurück. Basierend auf der Ruby-Lösung.
quelle
Perl, 42 Bytes
Beinhaltet +1 für
-p
Geben Sie die Zahlen online auf STDIN
largest0.pl
:quelle
Julia,
5655 BytesErstellen Sie Tupel für benachbarte Werte, nehmen Sie die Tupel mit 0, summieren Sie die Tupelwerte und finden Sie das Maximum
quelle
Python 2, 74 Bytes
Durchlaufen Sie jedes Element. Wenn sich
0
links oder rechts vom aktuellen Element ein befindet, fügen Sie es in den Generator ein und führen Sie es durchmax
. Wir müssen die Liste mit einer Nicht-0
Nummer auffüllen . Es wird niemals enthalten sein, da das Slice[-1:2:2]
nichts enthält.quelle
T-SQL, 182 Bytes
Golf gespielt:
Ungolfed:
Geige
quelle
PowerShell v3 +, 62 Byte
Ein bisschen länger als die anderen Antworten, aber ein geschickter Ansatz.
Übernimmt die Eingabe
$n
. Durchlaufen Sie dann die Indizes0..$n.count
, verwenden Sie dasWhere-Object
(|?{...}
), um die Indizes abzurufen, bei denen sich das vorherige oder nächste Element im Array befindet0
, und geben Sie diese zurück in den Array-Slice$n[...]
. Wir dann|sort
diese Elemente und nehmen die größten[-1]
.Beispiele
quelle
q, 38 Bytes
quelle
{}
, um eine Funktion daraus zu machen.J, 18 Bytes
Erläuterung
quelle
Perl 6 , 53 Bytes
Erweitert:
quelle
PHP, 66 Bytes
Ziemlich einfach. Durchläuft die Eingabe, und wenn eine Zahl vorhanden ist
0
, wird sie$m
auf die höchste Zahl der 2 benachbarten Zahlen und auf den vorherigen Wert von gesetzt$m
.Laufen Sie wie folgt (
-d
nur aus ästhetischen Gründen hinzugefügt):quelle
C #
7674 BytesErläuterung:
Verwenden Sie zip, um das Array mit sich selbst zu verbinden, aber überspringen Sie den ersten Wert in der zweiten Referenz, sodass Element Null mit Element Eins verbunden wird. Multiplizieren Sie a mit b. Wenn das Ergebnis Null ist, muss einer von ihnen Null sein und a + b ausgeben. Andernfalls geben Sie die minimal mögliche Ganzzahl in der Sprache aus. Unter der Annahme, dass wir immer eine Null und eine Nicht-Null haben, wird dieser Minimalwert niemals als der Maximalwert ausgegeben.
Verwendung:
quelle
int[]i) {
. Außerdem zähle ich 75 Bytes in Ihrem aktuellen Code (74, wenn Sie das Leerzeichen entfernen).a?b?i.Min()).Max():a:b
using System.Linq;
, nein?System.Linq;
ist Teil der neuen Standardklassenvorlage.using
Anweisung in IhreR,
4854 BytesLiest den Vektor von der Konsoleneingabe und nimmt dann das Maximum über alle Werte neben 0 an.
Edit: Fängt NAs ab, die an der Grenze produziert wurden, danke rturnbull!
quelle
20 0
, weils[w(s==0)+1]
RenditenNA
, undmax
ist der Standard - BehandlungNA
ist es zurückzukehren. Sie können das Problem beheben, indem Sie das Argument hinzufügenna.rm=T
oder den zu verwendenden Code überarbeitensort
(siehe die andere R-Antwort oben).Schläger 183 Bytes
Ausführliche Version:
Testen:
Ausgabe:
quelle
C 132 Bytes
Ausgaben mit dem Rückkehrcode von main:
Ich habe das Gefühl, dass ich in der Lage sein sollte, ein paar Bytes zu sparen, indem ich einen der atoi-Aufrufe speichere, aber ich konnte keinen effizienten Weg finden. (
,t
plust=
plus,
plust
zweimal ist zu lang). Auch dies verwendet technisch undefiniertes Verhalten (Setzen von _ [a] auf "1"), aber jeder mir bekannte Compiler erlaubt es standardmäßig.Strategie: Füllen Sie den Anfang und das Ende des Arrays mit 1 auf und durchlaufen Sie dann den internen Abschnitt, um jeden Nachbarn zu überprüfen.
quelle
PHP
6964 BytesEinige Bytes von Jörg Hülsermann und Titus. =
(-5)
Erfordert die Aktivierung von register_globals. Verwendung:
http://localhost/notnull.php?i[]=9&i[]=-5i[]=...
Golf gespielt:
quelle
-d register_globals=1
(oder geben Sie eine Version an, in der register_globals standardmäßig aktiviert ist)json_decode
aber eine nette Idee.?id[]=1&id[]=2&id[]=3
und$_GET["id"]
gibt dann ein Array zurück. Aus diesem Grund macht json_decode für mich keinen Sinn