Ihre heutige Herausforderung besteht darin, ein Array zu nehmen, es in Blöcke aufzuteilen und diese Blöcke hinzuzufügen.
So funktioniert das: Ihr Programm oder Ihre Funktion erhält ein Array von Ganzzahlen a
und eine Blockgröße L
. Das Array sollte in Arrays der Größe aufgeteilt L
werden. Wenn die Länge des Arrays durch nicht teilbar ist, sollten an L
das Array Nullen angehängt werden, damit es gleichmäßig teilbar ist. Sobald das Array aufgeteilt ist, müssen alle Blöcke elementweise addiert werden. Das resultierende Array wird dann ausgegeben.
Sie können davon ausgehen, dass L
es größer als 0 ist, und das a
ist nicht leer. Sie können nicht davon ausgehen, dass a
der Inhalt positiv ist.
Hier ist ein Beispiel:
[1,2,3,4,5,6,7,8], 3 => [1,2,3]+[4,5,6]+[7,8,0] => [1+4+7,2+5+8,3+6+0] => [12,15,9]
Testfälle:
Array Length Output
[1] 1 [1]
[1] 3 [1,0,0]
[0] 3 [0,0,0]
[1,2] 3 [1,2,0]
[1,2] 1 [3]
[-1,1] 2 [-1,1]
[-7,4,-12,1,5,-3,12,0,14,-2] 4 [12,-1,0,1]
[1,2,3,4,5,6,7,8,9] 3 [12,15,18]
Das ist Code-Golf , die wenigsten Bytes gewinnen!
Antworten:
MATL , 4 Bytes
Probieren Sie es online!
Das erste bisschen MATL-Code, das ich geschrieben habe! Nimmt zwei Eingaben
a
als Zeilenvektor (durch Kommas getrennt) undl
als Zahl entgegen. Funktioniert zu seinquelle
Python 3 ,
676542 BytesVerwendet die Tatsache, dass die Summe eines leeren Arrays 0 ist
Probieren Sie es online!
quelle
Gelee ,
76 Bytes1 Byte danke an Dennis.
Probieren Sie es online!
quelle
Ż¡sS
(äquivalent zu0;$¡sS
).Java 7, 86 Bytes
Keine ausgefallenen Falten oder Matrizen, nur eine gute altmodische
for
Schleife :)Probieren Sie es auf Ideone
Gefüttert:
quelle
Python 2 , 49 Bytes
Probieren Sie es online!
quelle
JavaScript (ES6), 51 Byte
Nimmt die Eingabe in currying Syntax:
f([1,2])(3)
.Testfälle
Code-Snippet anzeigen
quelle
(a,n,o=[])=>a.map((v,i)=>o[i%n]=~~o[i%n]+v)&&o
a=>n=>a.map((v,i)=>o[i%=n]=~~o[i]+v,o=[])&&o
fügt jedoch nicht die erforderliche Auffüllung hinzu.f=
sollte ein Teil Ihrer Zeichenanzahl sein.f=
nicht verwende, ist dies nicht erforderlich. Hier ist ein Beitrag auf Meta zu diesem Thema .Mathematica, 27 Bytes
Mathematica hatte dafür fast eine eingebauteProbieren Sie es auf Wolfram Sandbox
Verwendung
Erläuterung
quelle
Mathematica, 58 Bytes
Eingang
Ausgabe
quelle
Perl 6 , 36 Bytes
Probier es aus
Erweitert:
quelle
APL (Dyalog) , 22 Bytes
Nimmt
l
als linkes Argument unda
als rechtes Argument.Probieren Sie es online!
{
…}
Anonyme Funktion, bei der⍺
das linke Argument (l
) und⍵
das rechte Argument (a
) steht.≢⍵
Tally (Länge) vona
⍺÷⍨
Teilen durchl
⌈
Decke (aufrunden)⍺,⍨
anhängenl
s←
speichern ins
(für s hape)×/
Produkt davon (dh wie viele ganze Zahlen benötigt werden)⍵↑⍨
nimm so viele ganze Zahlen vona
(Auffüllen mit Nullen)s⍴
r eshape zu Forms
(Zeilen, Spalten)+⌿
Spaltensummenquelle
Haskell ,
5949 BytesProbieren Sie es online!
quelle
Perl 6 , 40 Bytes
Probieren Sie es online!
Wenn dir die Nummer 42 gefällt, kannst du die
*
gegen eine tauschen∞
. Das ergibt 42 Bytes: -).Erklärung :
Die Magie hinter dem letzten "Add-Up" ist, dass der Operator ein "Reduzieren mit Reißverschluss mit +" ist. Übrigens würde dies zusammenbrechen, wenn wir es nur für eine Liste mit 1 Liste verwenden würden, aber das passiert nie, wenn die ursprüngliche Liste nicht leer war (aufgrund der vorletzten Zeile). Beachten Sie auch, dass wir am Ende nicht nur Artikel
@a
, sondern auch@a * $l
Gegenstände nehmen. Glücklicherweise haben wir nur Nullen hinzugefügt, die das Endergebnis nicht beeinflussen.quelle
Schale , 9 Bytes
Probieren Sie es online!
Erläuterung
quelle
Pyth , 8 Bytes
Probieren Sie es hier aus!
Pyth , 10 Bytes
Probieren Sie es hier aus!
Erläuterung
Erklärung # 1
Erklärung # 2
quelle
sM.TcEQ
[1], 3
, was[1]
statt geben würde[1, 0, 0]
.J ,
1512 BytesProbieren Sie es online!
Erläuterung
quelle
[:+/-@[[\]
?05AB1E , 8 Bytes
Probieren Sie es online!
quelle
05AB1E , 8 Bytes
Probieren Sie es online!
quelle
¹
vs²
)SOGL V0.12 , 14 Bytes
Probieren Sie es hier aus! oder Probieren Sie alle Testfälle aus. Dies wird als unbenannte Funktion geschrieben und erwartet
chunk length; array
auf dem Stapel.Erläuterung:
quelle
F
von Ihnen verlinkte Code "Try it Here"?f=a=>a+2
dasf=
Teil nicht gezählt - in SOGLF\n
wird es nicht gezählt.05AB1E , 12 Bytes
Probieren Sie es online!
Erläuterung
quelle
Mathematica, 43 Bytes
quelle
Clojure , 42 Bytes
Probieren Sie es online!
quelle
R ,
6257 Bytes-5 Bytes dank user2390246
Probieren Sie es online!
Aktualisiert, da der leere Fall nicht mehr verarbeitet werden muss.
Füllt
a
mit Nullen auf, erstellt eine Matrix ausl
Zeilen und berechnet und gibt die Zeilensummen zurück.quelle
Gestapelt , 24 Bytes
Probieren Sie es online!
Erläuterung
quelle
Java (OpenJDK 8) , 64 Byte
Probieren Sie es online!
quelle
Japt , 7 Bytes
Mann, ich habe viel zu lange mit der falschen Japt-Methode gekämpft und versucht, sie für den
[1], 3
Testfall in einer vernünftigen Menge von Bytes zum Laufen zu bringen !Versuch es
Erläuterung
Implizite Eingabe von Array
U
und GanzzahlV
.Generieren Sie ein Array von Ganzzahlen von
0
bisV-1
und durchlaufen Sie jeweils eine Funktion, wobeiX
es sich um das aktuelle Element handelt.Ergreifen Sie jedes
V
Element vonU
, beginnend mit dem IndexX
.Reduzieren Sie dieses Array durch Hinzufügen.
quelle
C, (GCC)
10186 BytesProbieren Sie es online!
Verwendung
Beachten Sie, dass Sie die Länge des Arrays (s) und ein neues dynamisches Array auf dem Heap (m) übergeben müssen.
quelle
PowerShell , 62 Byte
Probieren Sie es online!
Wir nehmen Input
$a
Ray und$l
Ength. Dann Schleife von1
bis$l
. Bei jeder Iteration setzen wir helper$y
auf eins weniger als die aktuelle Zahl (dies liegt daran, dass PowerShell 0-Indizes, die$l
Länge jedoch 1-indiziert). Dann setzen wir unseren$o
utput auf0
und wiederholen die Schleife auf$l
. Jede innere Iteration wird einfach in$o
dem entsprechend indizierten$a
Strahlenelement akkumuliert. Dies nutzt die Tatsache, dass die Indizierung nach dem Ende des Arrays$null
und zurückgibt0 + $null = 0
.Sobald die innere Schleife fertig ist, geben wir aus
$o
und fahren mit dem nächsten Block fort. Die verschiedenen Ausgaben verbleiben in der Pipeline und werden implizitWrite-Output
nach Abschluss des Programms ausgegeben .quelle
Perl 5 , 44 + 1 (-a) = 45 Bytes
Probieren Sie es online!
Bearbeiten: Der Fall, dass die angeforderte Länge kleiner als das Eingabearray war, wurde behoben
quelle
Schale , 10 Bytes
Probieren Sie es online!
Ungolfed / Erklärung
quelle
Scala 2.12.2 , 80 Bytes
Es ist etwas kürzer als die Java-Lösung.
quelle