Bei einer Eingabe einer ganzen Zahl n und einer Liste positiver ganzer Zahlen m 1 , m 2 , ... wird eine Liste ganzer Zahlen m 1 ' , m 2 ' , ... ausgegeben , wobei m x ' als Durchschnitt von m definiert ist xn bis m x + n .
Ignorieren Sie bei der Berechnung dieser Durchschnittswerte Indizes, die außerhalb der Grenzen liegen (und passen Sie an, durch was Sie die Summe entsprechend dividieren). n ist immer ≥ 1, aber niemals die Hälfte der Länge von m (abgerundet) oder mehr. Dies bedeutet, dass die Mindestlänge von m 4 beträgt. Die Elemente in m sind positive ganze Zahlen, die Ausgabe muss jedoch auf mindestens 3 Dezimalstellen genau sein.
Die Eingabe- / Ausgabeelemente, die Listen sind, können entweder durch Leerzeichen / Kommas getrennte Zeichenfolgen oder Arrays / Listen / etc. Sein. Wenn Ihre Lösung eine Funktion ist, können Sie als Eingabe zusätzlich ein erstes Argument von n und zusätzliche Argumente als m x verwenden (dies gilt auch für Befehlszeilenargumente).
Hier ist eine visuelle Darstellung von n=1
:
1 4 5 7 10
__/ | | |
L avg(1,4) = 2.5
| | |
\___/ | |
L avg(1,4,5) = 3.333
| |
\___/ |
L avg(4,5,7) = 5.333
|
\___/
L avg(5,7,10) = 7.333
\___
L avg(7,10) = 8.5
Final output: 2.5 3.333 5.333 7.333 8.5
Da es sich um Code-Golf , der kürzeste Code in Bytes gewinnt.
Testfälle ( diese wurden manuell durchgeführt; bitte benachrichtigen Sie mich über eventuelle Fehler ):
In Out
----------------------------------------------------------------------
n=1, m=12 6 3 9 9 7 6 6
n=1, m=1 4 5 7 10 2.5 3.333 5.333 7.333 8.5
n=1, m=1 3 3 7 4 2 4 2 2 2.333 4.333 4.666 4.333 3.333 2.666 3
n=2, m=1 3 5 9 10 14 15 16 23 3 4.5 5.6 8.2 10.6 12.8 15.6 17 18
n=3, m=1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
n=3, m=1 2 3 4 5 6 7 8 2.5 3 3.5 4 5 5.5 6 6.5
quelle
avg(0,1,2)
nicht das gleiche wieavg(1,2)
. Für die "Randfälle" (ha) sollten Sie nicht so viele Elemente der Eingabeliste mitteln.m_i
positiv sind.Antworten:
Pyth, 20 Bytes
Testsuite
Ziemlich einfach, schneiden Sie einfach den entsprechenden Abschnitt aus der Liste, dann durchschnittlich.
quelle
E
außerhalb der Karte speichern, da immer wieder versucht wird, einen neuen Wert zu lesen, wenn er sich in der Karte befindet. Dadurch wird die gleiche Anzahl von Bytes benötigt.MATL ,
30282624 BytesGetestet mit Matlab und Octave. Verwendet die aktuelle Version (9.1.0) der Sprache / des Compilers.
Die Eingabe ist: zuerst die Nummer, die die Fensterlänge steuert, dann das Array mit dem Format
[1 4 5 7 10]
.EDIT (20. Mai 2016): Probieren Sie es online! Der Code im Link wurde
X+
durch ersetztY+
, um der Version 18.0.0 der Sprache zu entsprechen.Beispiel
Erläuterung
Der äquivalente Matlab-Code wäre
Der MATL-Code nutzt die kürzlich hinzugefügten Funktionen der impliziten Eingabe und der Zwischenablage für die automatische Funktionseingabe:
quelle
CJam,
3130 BytesEingabeformat ist
n [m1 m2 ... mx]
.Führen Sie alle Testfälle aus. (Konvertiert die Testsuite automatisch in das erforderliche Eingabeformat.)
Dies funktioniert, indem
n
Leerzeichen vor- und angehängt , dann alle Teilzeichenfolgen mit der Länge genommen2n+1
und die Leerzeichen wieder entfernt werden, bevor ihre Mittelwerte berechnet werden.quelle
Julia, 57 Bytes
Dies ist eine Funktion, die zwei Ganzzahlen akzeptiert und ein Array von Gleitkommazahlen zurückgibt.
Der Ansatz ist hier sehr einfach. Wir konstruieren ein neues Array, indem wir den Mittelwert von Abschnitten des Eingabearrays nehmen und vorne und hinten abschneiden.
quelle
Haskell,
97 bis95 BytesAnwendungsbeispiel:
2 # [1,3,5,9,10,14,15,16,23]
->[3.0,4.5,5.6,8.2,10.6,12.8,15.6,17.0,18.0]
.Wie es funktioniert:
quelle
Pyth, 22 Bytes
Erläuterung:
Probieren Sie es hier aus .
quelle
JavaScript (ES6), 104
Laufende Summe / laufende Stichprobengröße. Wenn Sie in JavaScript einen Wert außerhalb der Grenzen eines Arrays lesen, erhalten Sie undefined, das mit ~~ in 0 konvertiert werden kann
Ungolfed
Prüfung
quelle
JavaScript (ES6), 82 Byte
Code:
Prüfung:
quelle