Twoim wyzwaniem dzisiaj jest zabranie tablicy, podzielenie jej na części i dodanie tych części.
Oto jak to działa: Twój program lub funkcja otrzyma tablicę liczb całkowitych a
i wielkość porcji L
. Tablica powinna być podzielona na tablice o rozmiarze L
, jeśli długość tablicy nie jest podzielna, L
wówczas tablica powinna mieć do niej dołączone zera, aby była równomiernie podzielna. Gdy tablica zostanie podzielona na fragmenty, wszystkie fragmenty należy dodać razem pod względem elementów. Powstała tablica jest następnie wyprowadzana.
Możesz założyć, że L
jest większa niż 0, a to nie a
jest puste. Nie można założyć, że a
zawartość jest dodatnia.
Oto przykład:
[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]
Przypadki testowe:
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]
To jest golf golfowy , wygrywa najmniej bajtów!
Odpowiedzi:
MATL , 4 bajty
Wypróbuj online!
Pierwszy kawałek kodu MATL, który napisałem! Przyjmuje dwa dane wejściowe,
a
jako wektor wiersza (oddzielony przecinkami) il
jako liczba. Działaźródło
Python 3 ,
676542 bajtówWykorzystuje fakt, że suma pustej tablicy wynosi 0
Wypróbuj online!
źródło
Galaretka ,
76 bajtów1 bajt dzięki Dennisowi.
Wypróbuj online!
źródło
Ż¡sS
(odpowiednik0;$¡sS
).Java 7, 86 bajtów
Żadnych fantazyjnych fałd ani matryc, po prostu dobra, staroświecka
for
pętla :)Wypróbuj na Ideone
Prążkowany:
źródło
Python 2 , 49 bajtów
Wypróbuj online!
źródło
JavaScript (ES6), 51 bajtów
Trwa wejście w składni currying:
f([1,2])(3)
.Przypadki testowe
Pokaż fragment kodu
źródło
(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
ale nie dodaje wymaganego dopełniania zera.f=
powinno być częścią twojej liczby postaci.f=
nie jest potrzebne. Oto jeden post na meta na ten temat.Mathematica, 27 bajtów
Mathematica prawie do tego ma wbudowaną funkcjęWypróbuj na Wolfram Sandbox
Stosowanie
Wyjaśnienie
źródło
Mathematica, 58 bajtów
Wkład
Wydajność
źródło
Perl 6 , 36 bajtów
Sprawdź to
Rozszerzony:
źródło
APL (Dyalog) , 22 bajty
Przyjmuje
l
jako lewy argument ia
prawy argument.Wypróbuj online!
{
…}
Anonimowa funkcja gdzie⍺
lewy argument (l
) i⍵
prawy argument (a
).≢⍵
tally (długość) za
⍺÷⍨
podzielić przezl
⌈
sufit (zaokrąglony w górę)⍺,⍨
dodaćl
s←
przechowywać ws
(dla s hape)×/
iloczyn tego (tj. ile liczb całkowitych jest potrzebnych)⍵↑⍨
weź tyle liczb całkowitycha
(wypełnienie zerami)s⍴
R eshape kształtus
(wiersze, kolumny)+⌿
sumy kolumnoweźródło
Haskell ,
5949 bajtówWypróbuj online!
źródło
Perl 6 , 40 bajtów
Wypróbuj online!
Jeśli podoba Ci się liczba 42, możesz zamienić na
*
na∞
. To sprawi, że będzie to 42 bajty :—).Objaśnienie :
Magia kryjąca się za ostatnim „dodaniem” polega na tym, że operator „redukuje za pomocą zip za pomocą +”. Nawiasem mówiąc, to by się zepsuło, gdybyśmy użyli go tylko na liście z 1 listą w środku, ale to się nigdy nie zdarzy, jeśli oryginalna lista nie będzie pusta (z powodu drugiego do ostatniego wiersza). Zauważ też, że ostatecznie zabieramy nie tylko przedmioty
@a
, ale także@a * $l
przedmioty. Na szczęście dodaliśmy tylko zera, które nie wpłyną na końcowy wynik.źródło
Łuska , 9 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Pyth , 8 bajtów
Wypróbuj tutaj!
Pyth , 10 bajtów
Wypróbuj tutaj!
Wyjaśnienie
Wyjaśnienie nr 1
Wyjaśnienie nr 2
źródło
sM.TcEQ
[1], 3
, co dałoby[1]
zamiast[1, 0, 0]
.J ,
1512 bajtówWypróbuj online!
Wyjaśnienie
źródło
[:+/-@[[\]
:?05AB1E , 8 bajtów
Wypróbuj online!
źródło
05AB1E , 8 bajtów
Wypróbuj online!
źródło
¹
vs²
)SOGL V0.12 , 14 bajtów
Wypróbuj tutaj! lub Wypróbuj wszystkie przypadki testowe. jest to zapisane jako funkcja bez nazwy i oczekuje
chunk length; array
na stosie.Wyjaśnienie:
źródło
F
służy połączony kod Wypróbuj tutaj?f=a=>a+2
f=
F\n
05AB1E , 12 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Mathematica, 43 bajty
źródło
Clojure , 42 bajty
Wypróbuj online!
źródło
R ,
6257 bajtów-5 bajtów dzięki user2390246
Wypróbuj online!
Zaktualizowano, ponieważ nie musi już obsługiwać pustej skrzynki.
wstawia
a
zera, konstruuje macierzl
wierszy oraz oblicza i zwraca sumy wierszy.źródło
Ułożone , 24 bajty
Wypróbuj online!
Wyjaśnienie
źródło
Java (OpenJDK 8) , 64 bajty
Wypróbuj online!
źródło
Japt , 7 bajtów
Człowieku, zbyt długo walczyłem z niewłaściwą metodą Japt, próbując zmusić ją do działania w
[1], 3
przypadku testowym w rozsądnej ilości bajtów!Spróbuj
Wyjaśnienie
Domniemane wprowadzanie tablicy
U
i liczby całkowitejV
.Wygeneruj tablicę liczb całkowitych od
0
doV-1
i przepuść każdą przez funkcjęX
będącą bieżącym elementem.Chwyć każdy
V
elementU
, zaczynając od indeksuX
.Zmniejsz tę tablicę poprzez dodanie.
źródło
C, (GCC)
10186 bajtówWypróbuj online!
Stosowanie
Pamiętaj, że musisz podać długość tablicy (-ów) i nową tablicę dynamiczną na stercie (m).
źródło
PowerShell , 62 bajty
Wypróbuj online!
Bierzemy
$a
tablicę wejściową i ength$l
. Następnie zapętlić od1
do$l
. Każda iteracja ustawiamy helpera$y
o jeden mniej niż bieżąca liczba (dzieje się tak, ponieważ PowerShell 0-indeksuje, ale$l
ength ma 1-indeksowanie). Następnie ustawiamy nasz$o
utput na0
i ponownie zapętlamy do$l
. Każda wewnętrzna iteracja po prostu kumulujemy w$o
odpowiednio indeksowanym$a
elemencie tablicy. Wykorzystuje to fakt, że indeksowanie poza końcem tablicy zwraca$null
i0 + $null = 0
.Po zakończeniu pętli wewnętrznej wysyłamy dane
$o
i przechodzimy do następnej porcji. Różne wyniki są pozostawione w potoku, a dane wyjściowe za pośrednictwem niejawnego mająWrite-Output
miejsce po zakończeniu programu.źródło
Perl 5 , 44 + 1 (-a) = 45 bajtów
Wypróbuj online!
Edycja: naprawiono przypadek, w którym żądana długość była mniejsza niż tablica wejściowa
źródło
Łuska , 10 bajtów
Wypróbuj online!
Niegolfowane / Wyjaśnienie
źródło
Scala 2.12.2 , 80 bajtów
Jest nieco krótszy niż rozwiązanie Java.
źródło