Considere um fluxo / arquivo com um número inteiro por linha. Por exemplo:
123
5
99
Seu código deve gerar a soma desses números, ou seja 227
.
O formato de entrada é estritamente um número inteiro por linha. Você não pode, por exemplo, supor que a entrada esteja em uma linha como uma matriz de números inteiros.
Você pode receber entradas do STDIN, na forma de um nome de arquivo ou de um arquivo com o nome de sua escolha; você pode escolher qual. Nenhuma outra maneira de obter entrada é permitida.
A entrada conterá pelo menos um número inteiro. Você pode assumir que todos os números inteiros não são negativos e que a soma total é menor que .232
code-golf
string
arithmetic
Dennis
fonte
fonte
Respostas:
05AB1E , 2 bytes
Explicação:
Experimente online!
fonte
Bash + coreutils, 16 bytes
Experimente online!
Existem dois espaços após o
\
. Isso funciona para números negativos também.Explicação:
Você pode se perguntar por que
tr \\n +|bc
não é melhor, pois transforma novas linhas diretamente em '+' s. Bem, isso tem 2 erros imprevistos:fonte
tr \\n +|bc
? Nesse caso, consulte a explicação atualizada. Boa pergunta.paste -s -d+|bc
é 15 bytesxargs|tr \ +
nesse caso, não faz nada e bc recebe o número e o imprime novamente.MATL , 2 bytes
Isso espera a entrada em um arquivo de texto chamado
defin
.Gif ou não aconteceu :
Ou experimente online! ( graças a Dennis pela instalação! )
Explicação
Quando um programa MATL é executado, se um arquivo chamado
defin
for encontrado (o nome se refere a "entrada padrão"), seu conteúdo é automaticamente carregado como texto e enviado para a pilha como uma string antes de executar o código.A função
U
avalia a string para convertê-la em um vetor de coluna de números es
calcula a soma, que é exibida implicitamente.fonte
Japonês , 2 bytes
Explicação
Experimente online!
fonte
Colar + bc, 13 bytes
Explicação:
Outra resposta shell!
fonte
paste -s -d+|bc
e não sabia que poderia consolidar as opções. Arrumado!Perl 6 , 13 bytes
Tente
Explicação
lines()
retorna uma lista de linhas de$*IN
ou$*ARGFILES
um identificador de entrada de linha de comando "mágico".sum(…)
was added to Perl 6 to allow[+] List
to be optimized for Positionals that can calculate their sum without generating all of their values like1..100000
(I just thought
sum
was just too cute here to use[+]
like I normally would)say(…)
call the.gist
method on its input, and prints it with an additional newline.fonte
$a+=$_ for <>;print $a
works in Perl 5, but there may be a shorter way.C, 53 bytes
fonte
Python 3, 28 bytes
Taken from this tip. I've been told this won't work on Windows.
Try it online!
fonte
Retina,
117 bytes-4 thanks to Martin Ender
Try it online!
Convert to unary:
Count the number of
1
s:fonte
Brain-Flak, 20 bytes
Try it online!
Explanation
This is a golf off of a solution made by Riley in chat. His solution was:
If your familiar with Brain-Flak this is pretty self-explanatory. It pushes the stack height and pops one value as it counts down, at the end it pushes the sum of all the runs.
It is a pretty good golf but he zeros both
{}
and([])
however these will have a values that only differ by one so if instead we remove the masks and make one of the two negative they should nearly cancel out.Since they always differ by one we have the unfortunate circumstance where our answer is always off by the stack height. In order to remedy this we simply move the beginning of the push to encompass the first stack height.
fonte
Python 2, 40 bytes
fonte
R,11 bytes
scan
takes the input, one number per line. Andsum
, well, sums.fonte
Perl 5, 9 bytes
8 bytes of code +
-p
flag.Try it online!
With
-p
, the input is read one line at a time, stored in$_
each time. We use$\
as accumulator, because thanks to-p
flag, it's implicitly printed at the end. The unmatched}{
are used so-p
flag only prints$\
once at the end instead of printing$_
and$\
at each line it reads like it normally does.fonte
)(
accolades
, apparently.Pure Bash,
3736 bytesThanks to @KevinCruijssen for a byte!
Try it online!
fonte
do ((
? The TIO seems to work.Haskell, 32 bytes
Try it online!.
interact
collects the whole input from stdin, passes it to the function given as its argument and prints the string it gets back from this function. The function is:fonte
lines.map(_.toInt)
because sum expects some sort of numeric implicit conversion from String or in this case an explicit one.PHP, 22 bytes
This assumes there is a file named "t" with a list of integers.
file()
opens a file and returns an array with each line stored a separate element in the array.array_sum()
sums all the elements in an array.fonte
Awk, 19 bytes
Explanation:
fonte
{s+=$1}END{print s}
:)dc, 14 bytes
Try it online!
Explanation:
fonte
CJam, 5 bytes
Try it online!
How it works
fonte
1b
sum numbers?[<x> <y> <z> <w>]<b>b
simply computes b³x + b²y + bz + w. When b = 1, this gives x + y + z + w.Python,
3830 bytesIn python, files are opened by
open('filename')
(obviously). They are, however, iterables. Each time you iterate through the file, you get the next line. So map iterates over each list, callingint
on it, and then sums the resulting list.Call with the filename as input. (i.e.
f('numbers.txt')
)8 bytes saved by using
map(int, open(n))
instead of a list comprehension. Original code:fonte
Mathematica, 19 bytes
Assumes Mathematica's notebook environment.
Expects the input to be in a file
a
.fonte
Total @ Flatten @ Import @ "a"
or even"a" // Import // Flatten // Total
. ;)Tr[#&@@@Import@#]&
also be allowed?Jelly,
98 bytesSTDIN isn't really Jelly's thing...
Try it online!
How it works
fonte
F
could be aṖ
as well, for clarity.Brachylog, 4 bytes
Try it online!
Explanation
fonte
Pure bash, 30
Try it online.
read
s the input file in one go into the variableb
.-d_
tellsread
that the line delimiter is_
instead of newline${b//'
newline'/+}
replaces the newlines inb
with+
echo $[ ... ]
arithmetically evaluates the resulting expression and outputs it.fonte
$[]
section will error due to a trailing '+'.read
discards final trailing newlines, even though the line delimiter is overridden to_
. This is perhaps a caveat ofread
, but it works well for this situation.Vim, 16 bytes/keystrokes
Since V is backwards compatible, you can Try it online!
fonte
Pyth, 3 bytes
Try it online!
fonte
jq, 5 bytes
add
, plus the command line flag-s
.For example:
fonte
-sadd
won't work, count the space.add
(3 bytes) and you have to add 2 bytes for the-s
flag. The space doesn't count as the code or the flag: it's the command line separator used by the language.-s
flag is short for "--slurp", (read the entire input stream into a large array and run the filter just once), which changes both howjq
interprets the input data, and how it runs the code. It's not like the-e
insed
which merely tellssed
that the subsequent string is code. The-s
is more like a part of thejq
language itself, and therefore that 6th byte space would be too.Actually, 2 bytes
Try it online!
Explanation:
fonte
dc, 22
This seems rather longer than it should be, but it is tricky to decide when the end of the file is reached. The only way I can think of to do this is check the stack length after the
?
command.Try it online.
Note the macro
m
is called recursively. Moderndc
implements tail recursion for this sort of thing, so there should be no worries about overflowing the stack.fonte
Pyke, 4 bytes
Try it online!
fonte