Rozważ strumień / plik z jedną liczbą całkowitą w wierszu. Na przykład:
123
5
99
Twój kod powinien wypisać sumę tych liczb, to znaczy 227
.
Format wejściowy jest ściśle jedną liczbą całkowitą na wiersz. Nie można na przykład założyć, że dane wejściowe znajdują się w jednym wierszu jako tablica liczb całkowitych.
Możesz pobrać dane wejściowe ze STDIN, w postaci nazwy pliku lub pliku o wybranej nazwie; możesz wybrać który. Żadne inne sposoby uzyskania danych wejściowych są niedozwolone.
Dane wejściowe będą zawierać co najmniej jedną liczbę całkowitą. Możesz założyć, że wszystkie liczby całkowite są nieujemne, a ich całkowita suma jest mniejsza niż .232
code-golf
string
arithmetic
Dennis
źródło
źródło
Odpowiedzi:
05AB1E , 2 bajty
Wyjaśnienie:
Wypróbuj online!
źródło
Bash + coreutils, 16 bajtów
Wypróbuj online!
Istnieją dwie spacje po
\
. Działa to również w przypadku liczb ujemnych.Wyjaśnienie:
Możesz się zastanawiać, dlaczego
tr \\n +|bc
nie jest lepiej, ponieważ zamienia on nowe linie bezpośrednio w „+”. Cóż, ma 2 nieprzewidziane błędy:źródło
tr \\n +|bc
? Jeśli tak, zapoznaj się ze zaktualizowanym wyjaśnieniem. Dobre pytanie.paste -s -d+|bc
ma 15 bajtówxargs|tr \ +
w tym przypadku nic nie robi, a bc otrzymuje numer i drukuje go z powrotem.MATL , 2 bajty
To oczekuje danych wejściowych w pliku tekstowym o nazwie
defin
.Gif lub tak się nie stało :
Lub wypróbuj online! ( dzięki Dennis za konfigurację! )
Wyjaśnienie
Po uruchomieniu programu MATL, jeśli
defin
znaleziono nazwany plik (nazwa odnosi się do „domyślnego wejścia”), jego zawartość jest automatycznie ładowana jako tekst i przekazywana do stosu jako ciąg przed wykonaniem kodu.Funkcja
U
ocenia ciąg, aby przekonwertować go na wektor kolumnowy liczb is
oblicza sumę, która jest domyślnie wyświetlana.źródło
Japt , 2 bajty
Wyjaśnienie
Wypróbuj online!
źródło
Wklej + BC, 13 bajtów
Wyjaśnienie:
Kolejna odpowiedź powłoki!
źródło
paste -s -d+|bc
i nie zdawałem sobie sprawy, że mogę skonsolidować przełączniki. Schludny!Perl 6 , 13 bajtów
Spróbuj
Wyjaśnienie
lines()
zwraca listę wierszy$*IN
lub$*ARGFILES
„magiczny” uchwyt wprowadzania wiersza poleceń.sum(…)
został dodany do Perla 6, aby umożliwić[+] List
optymalizację pod kątem Pozycjonerów, które mogą obliczyć swoją sumę bez generowania wszystkich swoich wartości, takich jak1..100000
(myślałem, że
sum
jest tu po prostu zbyt słodki, by używać go[+]
tak, jak normalnie)say(…)
wywołaj.gist
metodę na jej wejściu i wypisze ją z dodatkową nową linią.źródło
$a+=$_ for <>;print $a
działa w Perlu 5, ale może być krótsza droga.C, 53 bajty
źródło
Python 3 , 28 bajtów
Zaczerpnięte z tej wskazówki . Powiedziano mi, że to nie będzie działać w systemie Windows.
Wypróbuj online!
źródło
Siatkówka ,
117 bajtów-4 dzięki Martinowi Enderowi
Wypróbuj online!
Konwertuj na unary:
Policz liczbę
1
s:źródło
Brain-Flak , 20 bajtów
Wypróbuj online!
Wyjaśnienie
To gra golfowa od rozwiązania wykonanego przez Riley na czacie . Jego rozwiązaniem było:
Jeśli znasz Brain-Flak, jest to dość oczywiste. Przesuwa wysokość stosu i zlicza jedną wartość podczas odliczania, a na koniec przesuwa sumę wszystkich przebiegów.
Jest to całkiem niezły golf, ale zeruje oba,
{}
a([])
jednak będą miały wartości, które różnią się tylko o jeden, więc jeśli zamiast tego usuniemy maski i zrobimy jedną z dwóch ujemnych, prawie powinni się anulować.Ponieważ zawsze różnią się one o jeden, mamy niefortunną okoliczność, w której nasza odpowiedź zawsze zależy od wysokości stosu. Aby temu zaradzić, wystarczy przesunąć początek pchnięcia, aby objąć pierwszą wysokość stosu.
źródło
Python 2, 40 bajtów
źródło
R 11 bajtów
scan
pobiera dane wejściowe, po jednym numerze w wierszu. Isum
cóż, sumy.źródło
Perl 5 , 9 bajtów
8 bajtów kodu +
-p
flaga.Wypróbuj online!
Za pomocą
-p
, wejście jest odczytywane po jednym wierszu na raz, zapisywane za$_
każdym razem. Używamy$\
jako akumulatora, ponieważ dzięki-p
fladze jest ona domyślnie drukowana na końcu. Niedopasowane}{
są używane, więc-p
flaga drukuje tylko$\
raz na końcu zamiast drukowania,$_
a$\
przy każdej linii czyta jak zwykle.źródło
)(
accolades
, najwyraźniej.Pure Bash,
3736 bajtówDzięki @KevinCruijssen za bajt!
Wypróbuj online!
źródło
do ((
? TIO wydaje się działać.Haskell, 32 bajty
Wypróbuj online! .
interact
zbiera całe dane wejściowe ze standardowego wejścia, przekazuje je do funkcji podanej jako argument i wypisuje ciąg znaków, który odzyskuje z tej funkcji. Funkcja to:źródło
lines.map(_.toInt)
ponieważ sum oczekuje jakiejś domniemanej konwersji numerycznej z String lub w tym przypadku jawnej.PHP, 22 bajty
Zakłada się, że istnieje plik o nazwie „t” z listą liczb całkowitych.
file()
otwiera plik i zwraca tablicę z każdą linią zapisaną w tablicy osobnym elementem.array_sum()
sumuje wszystkie elementy w tablicy.źródło
Awk, 19 bajtów
Wyjaśnienie:
źródło
{s+=$1}END{print s}
:)dc , 14 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
CJam , 5 bajtów
Wypróbuj online!
Jak to działa
źródło
1b
sumuje się liczby?[<x> <y> <z> <w>]<b>b
po prostu oblicza b³x + b²y + bz + w . Gdy b = 1 , daje to x + y + z + w .Python,
3830 bajtówW Pythonie pliki są otwierane przez
open('filename')
(oczywiście). Są jednak iterowalne. Za każdym razem, gdy iterujesz przez plik, pojawia się następny wiersz. Tak więc mapa iteruje każdą listę, wywołującint
ją, a następnie sumuje wynikową listę.Zadzwoń z nazwą pliku jako wejściem. (tj.
f('numbers.txt')
)8 bajtów zapisanych przy użyciu
map(int, open(n))
zamiast zrozumienia listy. Oryginalny kod:źródło
Mathematica, 19 bajtów
Zakłada środowisko notebooka Mathematica.
Oczekuje, że dane wejściowe znajdą się w pliku
a
.źródło
Total @ Flatten @ Import @ "a"
a nawet"a" // Import // Flatten // Total
. ;)Tr[#&@@@Import@#]&
również dozwolone?Galaretka ,
98 bajtówSTDIN tak naprawdę nie jest rzeczą Jelly ...
Wypróbuj online!
Jak to działa
źródło
F
może byćṖ
również dla jasności.Brachylog , 4 bajty
Wypróbuj online!
Wyjaśnienie
źródło
Pure Bash, 30
Wypróbuj online.
read
s plik wejściowy za jednym razem przechodzi do zmiennejb
.-d_
informuje,read
że separatorem wiersza jest_
zamiastnewline${b//'
newline'/+}
zastępuje nowymi liniami wb
z+
echo $[ ... ]
arytmetycznie ocenia wynikowe wyrażenie i wysyła je.źródło
$[]
sekcja będzie błąd z powodu końcowego „+”.read
odrzuca końcowe końcowe znaki nowej linii, nawet jeśli ogranicznik linii jest przesłonięty_
. Jest to być może zastrzeżenieread
, ale działa dobrze w tej sytuacji.Vim, 16 bajtów / naciśnięć klawiszy
Ponieważ V jest wstecznie kompatybilny, możesz wypróbować online!
źródło
Pyth , 3 bajty
Wypróbuj online!
źródło
jq , 5 bajtów
add
, plus flaga wiersza poleceń-s
.Na przykład:
źródło
-sadd
nie zadziała, policz przestrzeń.add
(3 bajty) i musisz dodać 2 bajty dla-s
flagi. Spacja nie jest liczona jako kod ani flaga: jest to separator wiersza poleceń używany przez język.-s
flaga jest skrótem od „ --slurp ” (odczytaj cały strumień wejściowy do dużej tablicy i uruchom filtr tylko raz), co zmienia zarówno sposóbjq
interpretacji danych wejściowych, jak i sposób uruchamiania kodu. To nie jest tak, że-e
posed
prostu mówi,sed
że kolejnym ciągiem jest kod. Jest-s
to bardziej część samegojq
języka, dlatego też byłaby to również przestrzeń 6-bajtowa.Właściwie 2 bajty
Wypróbuj online!
Wyjaśnienie:
źródło
dc, 22
Wydaje się to raczej dłuższe niż powinno, ale trudno jest zdecydować, kiedy osiągnięty zostanie koniec pliku. Jedynym sposobem, w jaki mogę to zrobić, jest sprawdzenie długości stosu po
?
poleceniu.Wypróbuj online .
Uwaga: makro
m
nazywa się rekurencyjnie. Nowoczesnedc
implementują rekurencję ogona dla tego rodzaju rzeczy, więc nie powinno być obaw o przepełnienie stosu.źródło
Pyke , 4 bajty
Wypróbuj online!
źródło