Natürlich weiß das SE-Netzwerk sehr genau, wie man auf der Toilette respektvoll ist, aber für diejenigen unter Ihnen, die eine Zusammenfassung benötigen, bedeutet Respekt, die Toilette zu spülen usw. Am wichtigsten ist jedoch, dass der Stand so weit weg benutzt wird von anderen wie möglich.
Die Herausforderung
Angesichts eines Entwurfs für eine Reihe von Ständen mit Hinweisen darauf, welche als Zeichenfolge verwendet werden, müssen Sie von einer Funktion oder einem Programm zurückkehren oder drucken, bei der der respektvollste Ort für Ihre Geschäftstätigkeit ist.
Die Eingabe
0 1 2 3 4 5 <- The stall number which is not actually visible in the input.
| | |-| |-|-| <- the stalls
Die Stände sind von links nach rechts aufsteigend nummeriert. Es wird immer mindestens einen freien Stand geben. Ein Eingang kann bis zu 50 Boxen enthalten. Sie können die Eingabe auch als Array oder als Zeichenfolge von 0
s und 1
s oder als Boolesche Werte verwenden, wenn Sie dies vorziehen.
Stände in Gebrauch haben -
(zwischen den Rohren).
Die Ausgabe
Der respektvollste Stand ist derjenige, der im Durchschnitt am weitesten von den genutzten entfernt ist. Der Abstand zwischen zwei Boxen ist der absolute Wert der Differenz der darüber liegenden Zahlen.
Um es klar auszudrücken: Sie ermitteln die durchschnittliche Entfernung zu allen Ständen - nicht nur zu den benachbarten.
Sie müssen die niedrigste Nummer des respektvollsten Standes ausgeben, um dorthin zu gelangen , der leer ist .
Beispiele
Input:
|-| |-| OR 101
Output:
1
Input:
| | |-| |-|-| OR 001011
Output:
0
Input:
|-| |-| | | | |-|-| OR 101000011
Output:
1
Input:
|-| | | | | |-|-| | | | | OR 100000110000
Output:
11
Input:
|-|-|-|-| | | | | | |-| OR 11110000001
Output:
9
Input:
|-| | OR 10
Output:
1
Input:
|-| | |-| OR 1001
Output:
1
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
Sie können in Ihrer Antwort eine auf 0 oder 1 basierende Indexierung verwenden - je nachdem, was Sie bevorzugen. Wenn Sie 1-basierte Indizierung verwenden, müssen Sie dies in Ihrer Antwort explizit angeben.
[1,0,0,1]
als Testfall hinzufügen . Keiner der aktuellen Testfälle überprüft, ob die Krawatten korrekt gebrochen sind.101000011
1 zurückgegeben (anstelle von 4 oder 5)?Antworten:
Gelee ,
109 BytesVerwendet 1-basierte Indizierung. Probieren Sie es online! oder überprüfen Sie alle Testfälle .
Wie es funktioniert
quelle
Schnell,
158, 157, 128,100 BytesÜbernimmt die Eingabe von der
Array<Bool>
Variableni
und gibt die Antwort vom letzten Ausdruck zurück.Bearbeiten 1:
Ein Byte wurde gespeichert, indem es über einen Zeichenfolgenvergleich in Bools konvertiert wurde
Bearbeiten 2:
Überarbeitete meinen Algorithmus:
Edit 3:
Nutzte die neue Regel, mit der Eingaben direkt von einem booleschen Array übernommen werden können.
Ungolfed:
quelle
Jelly , 13 Bytes
1-indiziert.
Probieren Sie es online!
Algorithmus
Naive Umsetzung der Frage.
quelle
Java "nur"
270 200 196 187 196 138 148146 Bytes!sparte
4 13unzählige Bytes dank Leaky Nun!1 Byte dank MichealGolfedUngolfed
Eingabe als boolesches Array, wobei true eine Unterbrechung impliziert.
quelle
a
.Ruby,
797876 +n
Flag = 77 BytesDie Ausgabe ist eine 0-basierte Indizierung. Der Eingang ist die STDIN-Zeile mit den Nullen und Einsen.
quelle
0...~/$/
ist ein schöner Trick. 👍🏻MATL , 14 Bytes
Probieren Sie es online!
Die Ausgabe ist 1-basiert.
Erläuterung
quelle
Perl 84 + 3 (
-alp
Flags) = 87 BytesBenötigt
-alp
Flags zum Laufen. Nimmt eine durch Leerzeichen getrennte Zeichenfolge von 1 und 0 als Eingabe. Zum Beispiel :Beachten Sie, dass ich
$m=0
am Anfang hinzugefügt habe , aber das ist nur, um es an mehreren Einträgen zu testen.quelle
+7
:F'' alp
.-
s werden nicht gezählt.Matlab, 87 Bytes
Nimmt eine Reihe von Einsen und Nullen; verwendet 1-basierte Indizierung.
Wie bei einigen anderen Antworten wird die durchschnittliche Gesamtentfernung nicht maximiert.
Möglicherweise gibt es noch mehr Möglichkeiten zum Golfen ...
quelle
JavaScript (ES6),
87868275 ByteNimmt ein boolesches Array (true / false oder 1/0). Es macht keinen Sinn, die durchschnittliche Entfernung zu berechnen, da alle denselben gemeinsamen Faktor verwenden. Berechnen Sie also einfach die Gesamtentfernung für jeden Stand und suchen Sie den ersten Index des höchsten. Bearbeiten: 1 Byte mit
*
anstelle von gespeichert&&
. 5 Bytes gespart, indem die höchste Entfernung manuell anhand eines Kommentars von @Dendrobium ermittelt wurde. 7 Bytes durch Wiederverwendungu
als Pseudoreduzierungsakkumulator auf der Grundlage eines Kommentars von @ edc65 eingespart.quelle
a=>(x=0,a.map((o,i)=>x<(t=a.reduce((r,u,j)=>r+(b=i-j)*b*u*!o,0))&&(x=t,r=i)),r)
reduce
anstelle vonmap
- mmmms=>s.map((u,i)=>u||(s.map((w,j)=>u-=w*Math.abs(j-i)),u<x&&(x=u,r=i)),x=0)|r
1100011101
bei2
und8
bei Verwendung von Absolut,8
bei Verwendung von Quadrat) Es scheint, dass die Regeln geklärt wurden und die Krawatten jetzt mit dem am weitesten links stehenden Stand gelöst sind ...J, 27 Bytes
Online-Dolmetscher .
quelle
Rubin,
8776 BytesWarf diesen ersten Entwurf schnell zusammen, aber in der Zwischenzeit Value Ink bereits eine 80-Byte-Ruby-Antwort veröffentlicht ...
edit: hat mit Hilfe von Value Ink ein paar Bytes entfernt:
Es ist eine anonyme Funktion, die eine Reihe wahrer / falscher Werte annimmt, wie zum Beispiel:
quelle
(r=0...a.size)
und dann auf die Karte statt mitwith_index
:r.map{|j|a[j]?(i-j).abs: 0}
. Dies sollte Ihnen 78 Bytes bringen.Mathematica, 53 Bytes
Verwendet 1-basierte Indizierung und nimmt Eingaben als Liste von 0s und 1s entgegen.
quelle
Javascript ES6 -
989591868488 BytesBearbeiten: Scheint, dass der Stall ganz links im Falle eines Unentschieden verwendet werden sollte. Quadratische Abstände funktionieren nicht mehr, zurückgesetzt auf absolute Distanz.
Ungolfed:
Testläufe:
quelle
Lua,
165150 ByesDies schummelt ein wenig, weil lua im Allgemeinen eine Tabelle mit dem Namen arg übergibt, die alle Kommandozeilen-Eingaben enthält.
Ich bin ein bisschen enttäuscht, dass ich eine for-in-Schleife verwendet habe, aber ich konnte mir keinen kleineren Weg vorstellen, um das zu schaffen.
Da lua auch 1-basierte Indizierung verwendet wurde.
Edit Snipped 15 Bytes von einem verschwenderischen gsub.
quelle
C #, 127 Bytes
Prüfstand
quelle