Twoim zadaniem dzisiaj jest zastosowanie fali do szeregu liczb. Fala wygląda następująco: [1, 0, -1, 0, 1, 0, -1, 0, 1...]
zastosowanie jej do danej tablicy oznacza zsumowanie pierwszych elementów, drugich elementów itp.
Dokładniej:
Twój program lub funkcja otrzyma tablicę liczb całkowitych. Musi wydrukować lub zwrócić tablicę o równej wielkości z 1
dodanym do pierwszego, piątego, dziewiątego itd. Elementu oryginalnej tablicy, -1
dodanym do trzeciego, siódmego, 11., itd. Elementu oryginalnej tablicy i pozostałych elementów powinny pozostać nietknięte.
Tablica wejściowa ma co najmniej jeden element.
Przypadki testowe:
Input | Output
[0] | [1]
[-1] | [0]
[-4, 3, 0, 1, 7, 9, 8, -2, 11, -88] | [-3, 3, -1, 1, 8, 9, 7, -2, 12, -88]
[0, 0, 0, 0, 0] | [1 ,0 ,-1 ,0 ,1]
[1, 1] | [2, 1]
To jest golf golfowy , wygrywa najkrótszy kod!
Odpowiedzi:
Galaretka , 5 bajtów
Wypróbuj online!
Jak to działa
źródło
1, 2, 3 ...
czy1, 0, -1, 0 ...
?LOGO , 18 bajtów
Nie ma „Wypróbuj online!” link, ponieważ wszystkie internetowe interpretery LOGO nie obsługują listy szablonów.
To jest lista szablonów (odpowiednik funkcji lambda w innych językach).
Stosowanie:
(
invoke
wywołuje funkcję,pr
drukuje wynik)odciski
[-3 3 -1 1 8 9 7 -2 12 -88]
.Objaśnienie (już dość zrozumiałe):
źródło
Haskell , 26 bajtów
Wypróbuj online! (uruchamia wszystkie przypadki testowe)
Wyjaśnienie:
źródło
JavaScript (ES6), 28 bajtów
Obliczenia wyglądają następująco:
Ostatni bit wykorzystujący fakt, że w JS liczba ujemna po zmodulowaniu zachowuje swój znak ujemny (tj.
-5 % 3 -> -2
Zamiast1
jak w Pythonie).źródło
Mathematica,
262322 bajtówWypróbuj online! (Matematyka)
Uwaga: Łącze TIO dotyczy wersji 23-bajtowej, wersja 22-bajtowa nie jest kompatybilna z Mathics.
źródło
Python 2 , 40 bajtów
Wypróbuj online!
źródło
MATL ,
118 bajtówWypróbuj w MATL Online!
Wyjaśnienie
źródło
+
wyjaśnieniaGalaretka , 16 bajtów
Wypróbuj online!
heh jestem pewien, że to za długo
Edytować
Wiem, że możliwe jest rozwiązanie 5-bajtowe, ale moje Wi-Fi zaczyna mnie odcinać, więc jutro zagram w golfa. Jeśli ktoś opublikuje krótkie rozwiązanie Jelly, zanim będę mógł zagrać w golfa, nie mam nic przeciwko; Zatrzymam to tutaj w celach informacyjnych,
jak źle jestem w Jelly lol,inny sposób na zrobienie tego. To znaczy, ja mógł tylko patrzeć na link Phoenix pisał w komentarzach, ale ponieważ wciąż się uczę, nie chcę patrzeć na rozwiązania, dopóki nie zorientowaliśmy się sam. Może to kosztować mnie reputację, ale po to tu jestem :)))źródło
R ,
2924 bajtówWypróbuj online!
źródło
Python 2 ,
5042 bajtówZaoszczędź 8 bajtów dzięki @Sisyphus!
Wypróbuj online!
53 bajty
Wypróbuj online!
źródło
lambda l:map(sum,zip(l,[1,0,-1,0]*len(l)))
dla Pythona 2Haskell , 26 bajtów
@Mego pobiło mnie do tego rozwiązania
Wypróbuj online!
W tym Haskell jest świetny. To deklaruje funkcję bez punktów, która zamyka wejście nieskończoną listą.
Haskell , 56 bajtów
Oto rozwiązanie wykorzystujące liczby zespolone. Nie bardzo konkurencyjny ze względu na import, ale nigdy nie mniej fajny.
Wypróbuj online!
źródło
Mathematica, 19 bajtów
Wyjaśnienie
Uwaga:
i=1
pojawia się poza funkcją, co jest zgodne z tym meta konsensusem .źródło
i
ma wartość inną niż 1)J, 12 bajtów
Wypróbuj online!
Ponieważ operator kształtu J
$
wypełnia się cyklicznie, kiedy kształtujemy go do długości#
danych wejściowych, robi dokładnie to, co chcemy, i możemy po prostu dodać go do danych wejściowych]
źródło
C ++,
93858363 bajty-8 bajtów, dzięki tej odpowiedzi odkryłem, że parametry lambda mogą być
auto
i możesz podać poprawny parametr, zadziała-2 bajty dzięki Nevay
-2 bajty dzięki Zacharýowi
Usunąłem
vector
dołączenie. Musisz podać jako argument, aby kontener spełniający następujące warunki:size
bez argumentówKontenery STL, które przestrzegają następujących warunków
array
,vector
,string
,map
,unordered_map
, a może inniJeśli wyprowadzanie przez modyfikację argumentów nie jest dozwolone, wówczas:
C ++,
112110 bajtówźródło
j%4
aby zapisać 2 bajty.j%4
.Pari / GP , 30 bajtów
Wypróbuj online!
źródło
Dyalog APL, 13 bajtów
Wypróbuj online!
W jaki sposób?
1 0 ¯1 0
- tablica [1, 0, -1, 0]⍴⍨≢
- zmienić kształt na długość wejścia, cyklicznie⊢+
- wektoryzowana suma z danymi wejściowymiźródło
Perl 6 , 28 bajtów
Wypróbuj online!
1+0i, * × i ... *
tworzy nieskończoną listę liczb1, i, -1, -i
powtarzanych w cyklu. Liczby te są spakowane za pomocą funkcji add (Z+
) za pomocą listy danych wejściowych ($_
), a następnie wyodrębniane są rzeczywiste składniki wynikowych liczb zespolonych (».re
).źródło
D, 56 bajtów
Wypróbuj online!
To jest port odpowiedzi C ++ HatsuPointerKun , więc nie zapomnij o nich!
źródło
Japt ,
1110 bajtówKorzysta z owijania indeksu Japt.
Sprawdź to
Wyjaśnienie
Domniemane wejście tablicy
U
.Odwzoruj na tablicy.
Do bieżącego elementu dodaj ...
Element o bieżącym indeksie (
E
) ...W tablicy
[1,0,-1,0]
.źródło
Właściwie 11 bajtów
Wypróbuj online! (uruchamia wszystkie przypadki testowe)
Wyjaśnienie:
źródło
Pyth , 11 bajtów
Wypróbuj online!
źródło
.e+b@[1Z_1Z
ss
ze
o 1..e+be^.j)k
nie wydawało się działać, gdy próbowałem.CJam , 15 bajtów
Wypróbuj online!
źródło
Math.JS , 34 bajty
Wyjaśnił
Wypróbuj online!
źródło
8th ,
9663 bajtówKod
Ten kod pozostawia wynikową tablicę w TOS
Zastosowanie i przykłady
Wyjaśnienie
Używamy cos (x), aby uzyskać odpowiednią sekwencję [1,0, -1,0]. Indeks każdego elementu tablicy jest mnożony przez 90 stopni, a następnie przekazywany do funkcji cos () w celu uzyskania żądanego „współczynnika fali”, który zostanie dodany do odpowiedniego elementu.
źródło
C # (.NET Core) , 50 bajtów
Wypróbuj online!
Używa prostej lambda. Modyfikuje oryginalną tablicę i zwraca dane wyjściowe przez odniesienie.
źródło
05AB1E , 16 bajtów
Wypróbuj online!
3L2.SR0¸«
jest najkrótszą rzeczą, o której mogę myślećsin(x % 4)
w 05AB1E.źródło
Rubinowy , 38 bajtów
Wypróbuj online!
źródło