Nazywam tę sekwencję „sekwencją Jezusa”, ponieważ jest to suma modów . </pun>
Dla tej sekwencji bierzesz wszystkie dodatnie liczby całkowite m mniejsze niż wejściowe n i sumę n modulo każdego m . Innymi słowy:
Na przykład weźmy termin 14 :
14 % 1 = 0
14 % 2 = 0
14 % 3 = 2
14 % 4 = 2
14 % 5 = 4
14 % 6 = 2
14 % 7 = 0
14 % 8 = 6
14 % 9 = 5
14 % 10 = 4
14 % 11 = 3
14 % 12 = 2
14 % 13 = 1
0+0+2+2+4+2+0+6+5+4+3+2+1=31
Twoim celem jest napisanie funkcji, która implementuje tę sekwencję. Powinieneś wziąć termin sekwencji (będzie to dodatnia liczba całkowita od 1 do 2 31 ) jako jedyne wejście i wyprowadzić wartość tego terminu. To jest OEIS A004125 .
Jak zawsze obowiązują standardowe luki i wygrywa najkrótsza odpowiedź w bajtach!
Rubin ,
282723 bajtów-4 bajty dzięki @daniero.
Wypróbuj online!
Rubinowy, 28 bajtów
Wypróbuj online!
źródło
Funky , 25 bajtów
Wydaje się, że tylko naiwna odpowiedź działa.
Wypróbuj online!
Desmos , 25 bajtów.
Wklej do Desmos, a następnie uruchom go, dzwoniąc
f
.Po wklejeniu do Desmos lateks wygląda tak
Wykres jednak wygląda
Chociaż wygląda to losowo i wszędzie, jest to wynik tylko obsługi liczb całkowitych.
RProgN 2 , 9 bajtów
Wyjaśnił
Wypróbuj online!
ReRegex , 71 bajtów
Wypróbuj online!
ARBLE , 19 bajtów
Wypróbuj online!
Może później 56 bajtów
Wypróbuj online!
źródło
Galaretka , 3 bajty
Wyjaśnienie
Wypróbuj online!
źródło
MATL , 4 bajty
Wypróbuj online!
Wyjaśnienie:
źródło
Ohm v2 , 4 bajty
Wypróbuj online!
źródło
R, 20 bajtów
Wypróbuj online!
źródło
Python 2 , 44 bajty
Wypróbuj online!
EDYCJA: Zmieniono zakres (0, n) na zakres (n)
źródło
range
domyślnie bierze pierwszy argument0
, więc możesz to skrócić o dwa bajty, robiącrange(n)
zamiast tego.map
38 bajtów: Wypróbuj online!JavaScript (ES6), 26 bajtów
Próbny
Pokaż fragment kodu
źródło
Python 3 , 37 bajtów
Wypróbuj online!
źródło
Węgiel , 9 bajtów
Wypróbuj online!
Link jest do pełnej wersji kodu:
źródło
Standardowy ML (MLton) ,
5351 bajtówWypróbuj online!
Nie golfowany:
Poprzednia 53 bajtowa wersja:
Wypróbuj online!
Wyjaśnienie:
List.tabulate
przyjmuje liczbę całkowitąx
i funkcjęf
i generuje listę[f 0, f 1, ..., f(x-1)]
. Biorąc pod uwagę pewną liczbęn
, wywołujemyList.tabulate
zn-1
i funkcję,fn i=>n mod(i+1)
aby uniknąć dzielenia przez zero. Wynikowa lista jest sumowanafoldl op+0
.źródło
Java (OpenJDK 8) , 45 bajtów
Wypróbuj online!
źródło
-->
operatora idzie do ( ).Mathematica , 18 bajtów
Wypróbuj online!
źródło
Tr[#~Mod~Range@#]&
APL (Dyalog) , 5 bajtów
Wypróbuj online!
W jaki sposób?
Pociąg monadyczny -
+/
- suma⊢
-n
|
- wektoryzowany moduł⍳
- zakresn
źródło
Japt ,
65 bajtówZaoszczędzono 1 bajt dzięki @Shaggy
Przetestuj online!
Jak to działa
źródło
05AB1E , 6 bajtów
Wypróbuj online!
Mój pierwszy program 05AB1E;)
Przy okazji dostałem dwa 39s, 1 dla JS6 i 1 dla Pythona, ale spóźniłem sięWyjaśnienie:
źródło
Rubinowy , 23 bajty
Wypróbuj online!
źródło
Julia 0,4, 15 bajtów
Wypróbuj online!
źródło
Dodaj ++ , 14 bajtów
Wypróbuj online!
Jak to działa
źródło
4 , 67 bajtów
4 nie ma wbudowanego żadnego modulo .
Wypróbuj online!
źródło
Windows Batch (CMD), 63 bajty
Poprzednia 64-bajtowa wersja:
źródło
T-SQL,
8079 bajtów-1 bajt dzięki @MickyT
Pobiera dane wejściowe z parametru o nazwie integer
@
, mniej więcej tak:Używa wspólnego wyrażenia tabelowego do generowania liczb od
1
don
. Następnie używa tego cte do podsumowania modułów.Uwaga: cte potrzebuje
;
między poprzednią instrukcją a cte. Większość kodu, który widziałem, umieszcza;
tuż przed deklaracją, ale w tym przypadku mogę zapisać bajt, umieszczając go w instrukcji wejściowej (ponieważ technicznie sam kod jest jedyną instrukcją).Wypróbuj (SEDE)
Mniej „SQL-y” to tylko 76 bajtów. Tym razem zmienna wejściowa jest
@i
zamiast@
(zapisuje jeden bajt). Ten po prostu wykonujewhile
pętlę.źródło
PHP , 61 bajtów
-2 bajty do usunięcia tagu zamykającego
Wypróbuj online!
źródło
Japt
-mx
, 3 bajtyWypróbuj online!
źródło
Brachylog , 9 bajtów
Wypróbuj online!
źródło
Łuska , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Perl 5 , 23 + 1 (
-p
) = 24 bajtyWypróbuj online!
źródło
Pyth , 5 bajtów
Wypróbuj online!
źródło