Dla tych, którzy nie wiedzieli, Sigma jest grecką literą, która jest powszechnie używana w matematyce jako znak sumowania. Biorąc pod uwagę ciąg reprezentujący wyrażenie w zależności od , które oznaczymy , oblicz sumę wyników dla dla każdego . W skrócie, powinieneś znaleźć takie, że:E ( k ) E ( k ) k ∈ { 1 , 2 , 3 , 4 , 5 } S
Przykład wyrażenia:
Okular
- Masz gwarancję:
- że wyrażenie jest poprawne, więc nie zawiera błędów, i że zależy od wybranej składni (np .: jeśli tylko obsługujesz
2*k
, nie będzie2k
) - tylko zdefiniowaniu wartości wśród wyników, więc nie ma wartości podoba
1/0
,inf
czynan
pojawi się
- że wyrażenie jest poprawne, więc nie zawiera błędów, i że zależy od wybranej składni (np .: jeśli tylko obsługujesz
- Możesz założyć, że powyższe wyrażenie pasuje do ograniczeń wybranego języka programowania, więc nie spowoduje to przepełnienia ani żadnych innych błędów związanych z limitami
- Zamiast tego
k
można wybrać dowolny inny znak ASCII niebiałej spacji - Twój program musi obsługiwać następujące operacje:
- dodawanie (
+
,plus()
,add()
,sum()
) - odejmowanie (
-
,minus()
,subtract()
) - potęgowanie (
**
,^
,pow()
lub inne, należy podać) o wsparcie dla negatywnej podstawy i wykładników - pierwiastek kwadratowy w formie
sqrt(k)
,k^0.5
,k**0.5
, lub jakkolwiek inaczej chcesz - mnożenie i dzielenie
- dodawanie (
- Zgłoszenie może być pełnym programem lub funkcją, jednocześnie wspominając o jego użyciu
- Dowolne końcowe / białe spacje są dozwolone podczas wysyłania
- Minimalna precyzja: 2 miejsca po przecinku
Przypadki testowe (z k
)
+---------------+--------------+
| Input = E(k) | Output |
|---------------+--------------|
|2*k | 30 |
|---------------+--------------|
|sqrt(k) | 8.38 | (* with minimum decimal precision)
|---------------+--------------|
|k+k/2+k**2 | 77.5 |
|---------------+--------------|
|k**2 | 55 |
+---------------+--------------+
Wynik będzie liczbą bajtów (flag źródłowych + kompilatora). Zwycięskie zgłoszenie o najniższej wartości wygrywa, przy czym należy pamiętać, że te luki są surowo zabronione. Oto pseudo-kod Pythona, aby wszystko było bardziej zrozumiałe.
code-golf
math
number
arithmetic
Pan Xcoder
źródło
źródło
plus()
zamiast+
? (Te same pytania również dla wszystkich innych operatorów)plus()
,add()
,sum()
i ich ekwiwalenty są dozwolone. Zobacz edycję.N N2/+N2**+
.E(x)
@ComradeSparklePonyOdpowiedzi:
Galaretka , 5 bajtów
Wypróbuj online!
Wprowadź prawidłowy łańcuch monadyczny galaretki (grałem w golfa w swoim linku).
Jak to działa
źródło
Mathematica,
171413 bajtówPodziękowania dla Iana Millera za oszczędność 3 bajtów.
Dzięki LegionMammal978 za zapisanie 1 bajtu.
Dane wejściowe powinny być rzeczywistym wyrażeniem zawierającym
k
np .:źródło
1,
tegoSum
.N@#~Sum~{k,5}&
Python 3 ,
4037 bajtów3 bajty dzięki Arnauldowi.
Sztuczki z zakresu Eval \ o /
Wypróbuj online!
Używa
k**0.5
zamiastsqrt(k)
.źródło
JavaScript (ES7),
3130 bajtówWykorzystuje
k**0.5
dosqrt(k)
.Wypróbuj online!
źródło
05AB1E ,
876 bajtówWypróbuj online!
Wejście jest w notacji postfix i używa zmiennej n . 05AB1E jest językiem stosowym, więc działa tylko notacja postfiksowa.
Format
E(N)
: wpisz liczby, z którymi chcesz wykonać operację, a następnie napisz znak operacji. Na przykład3+4
byłoby3 4+
,3*4+2*3
byłoby3 4* 2 3* +
. Zauważ też, że to używat
zamiastsqrt
, am
zamiast tego**
, taksqrt(N)
byłobyNt
.Wyjaśnienie:
źródło
Oktawa ,
50463129 bajtówWypróbuj online!
Potęgowanie jest oznaczone karetką,
.^
a mnożenie jest oznaczone.*
.To deklaruje anonimową funkcję, która przyjmuje argument
d
. Ustawia sięk
na równy zakresowi1:5
i sumuje oszacowanyd
i zwraca go.źródło
Japt , 10 bajtów
Łańcuch wejściowy powinien mieć zmienną jako wielkie litery
K
.sqrt(K)
należy wpisać jakoK**0.5
.Wypróbuj online!
Wyjaśnienie
eval
zakres nie działał na moją korzyść; musiał przedefiniować zmienną liczącąX
jako globalnąK
.źródło
Ox
bezpośrednia transpozycjaeval(
pomogłaby w tym ...Oktawa,
2523 bajtówWypróbuj online!
Potęgowanie jest oznaczone jako
.^
źródło
APL (Dyalog) , 9 bajtów
Wypróbuj online!
Dodawanie to
+
, odejmowanie-
, mnożenie×
, dzielenie to÷
potęgowanie*
i wykonywanie jest wykonywane od prawej do lewej, więc używaj()
do grupowania wyrażeń.Dane wejściowe dotyczą
k
.Wyjaśnienie
A oto rozwiązanie, które zajmuje pociągi jako wejście (jak odpowiedź Jelly)
+/(⍎⎕)¨⍳5
.źródło
Common Lisp, 55 bajtów
Wypróbuj online
inna, dłuższa (58 bajtów) wersja - zaczyna się skracać, jeśli sumujesz od 1 do 7.
jeszcze inna i dłuższa metoda (
6564 bajtów) - nie definiuje funkcji - po prostu wstawia wyrażenie do pętli. Powinien być krótszy dla większych kwot.źródło
Szybki,
202184 bajtówZ jakiegoś powodu będzie to działać tylko lokalnie :(.
Oto wyjaśnienie tego, co robię:
Dzięki @Mr. Xcoder do zapisywania 15 bajtów!
źródło
TI-Basic, 12 bajtów
Zadzwoń z
"string":prgmNAME
, gdziestring
jest dowolne prawidłowe wyrażenie TI-Basic dlaK
.źródło
Ans->u:sum(u(1,5
Skumulowane , 16 bajtów
Wypróbuj online!
5~>
jest w zakresie od 1 do 5 włącznie.2/
powoduje, że func jest dyadyczny,"
jest parami i!
jest wykonywany. W ten sposób mapuje się zakres[1, 5]
za pomocą danych wejściowych, które są następnie oceniane po zdefiniowaniu elementu zakresu, który ma byćk
. Następnie wyniki są sumowane.źródło
dc ,
3124 bajtówDane wejściowe należy podać w odwrotnej notacji polskiej (znanej również jako notacja postfiksowa) i ująć w nawiasy kwadratowe (
[]
):K
zastępująck
jako parametr;+
reprezentujący dodatek;-
reprezentujący odejmowanie,_
po którym następuje dowolna liczba reprezentująca liczbę ujemną;*
reprezentujący mnożenie;/
reprezentowanie podziału;^
reprezentujący potęgowanie;v
reprezentujący pierwiastek kwadratowy.Na przykład
-2*k+k+3*k**2+k**0.5-k/2
można wprowadzić jako[_2K*K+K2^3*+Kv+K2/-]
. Wykorzystuje to należycie fakt, żeK
jest todc
polecenie zwracające bieżącą precyzję (początkowo ustawione na1
). Dlatego do końca zwraca wynik z dokładnością do6
.Wypróbuj online!
źródło
R , 35 bajtów
Wypróbuj online!
Łącze TIO zawiera również rozwiązanie funkcyjne (38 bajtów)
źródło
Tcl , 58 bajtów
Wypróbuj online!
Gdyby działało tylko z liczbami całkowitymi, mógłbym grać w golfa więcej!
źródło