Considere una secuencia / archivo con un entero por línea. Por ejemplo:
123
5
99
Su código debería generar la suma de estos números, es decir 227
.
El formato de entrada es estrictamente un entero por línea. No puede, por ejemplo, asumir que la entrada está en una línea como una matriz de enteros.
Puede recibir información de STDIN, en forma de un nombre de archivo o un archivo con el nombre que elija; Puedes elegir cuál. No se permiten otras formas de obtener información.
La entrada contendrá al menos un número entero. Puede suponer que todos los enteros no son negativos y que su suma total es menor que .232
code-golf
string
arithmetic
Dennis
fuente
fuente
Respuestas:
05AB1E , 2 bytes
Explicación:
Pruébalo en línea!
fuente
Bash + coreutils, 16 bytes
Pruébalo en línea!
Hay dos espacios después del
\
. Esto también funciona para números negativos.Explicación:
Quizás se pregunte por qué
tr \\n +|bc
no es mejor, ya que convierte las nuevas líneas directamente en '+'. Bueno, eso tiene 2 errores imprevistos:fuente
tr \\n +|bc
? Si es así, consulte la explicación actualizada. Buena pregunta.paste -s -d+|bc
es de 15 bytesxargs|tr \ +
en este caso no hace nada, y bc recibe el número y lo imprime de nuevo.MATL , 2 bytes
Esto espera la entrada en un archivo de texto llamado
defin
.Gif o no sucedió :
O pruébalo en línea! (¡ Gracias a Dennis por la configuración! )
Explicación
Cuando se ejecuta un programa MATL, si se encuentra un archivo llamado
defin
(el nombre se refiere a "entrada predeterminada"), su contenido se carga automáticamente como texto y se envía a la pila como una cadena antes de ejecutar el código.La función
U
evalúa la cadena para convertirla en un vector de columna de números ys
calcula la suma, que se muestra implícitamente.fuente
Japt , 2 bytes
Explicación
Pruébalo en línea!
fuente
Pegar + aC, 13 bytes
Explicación:
Otra respuesta de shell!
fuente
paste -s -d+|bc
y no me di cuenta de que podía consolidar los interruptores. ¡Ordenado!Perl 6 , 13 bytes
Intentalo
Explicación
lines()
devuelve una lista de líneas desde$*IN
o$*ARGFILES
un identificador de entrada de línea de comando "mágico".sum(…)
se agregó a Perl 6 para permitir[+] List
que se optimice para Posicionales que pueden calcular su suma sin generar todos sus valores como1..100000
(solo pensé que
sum
era demasiado lindo aquí para usar[+]
como lo haría normalmente)say(…)
llama al.gist
método en su entrada y lo imprime con una nueva línea adicional.fuente
$a+=$_ for <>;print $a
funciona en Perl 5, pero puede haber un camino más corto.C, 53 bytes
fuente
Python 3 , 28 bytes
Tomado de este consejo . Me han dicho que esto no funcionará en Windows.
Pruébalo en línea!
fuente
Retina ,
117 bytes-4 gracias a Martin Ender
Pruébalo en línea!
Convertir a unario:
Cuenta el número de
1
s:fuente
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.
fuente
Python 2, 40 bytes
fuente
R,11 bytes
scan
takes the input, one number per line. Andsum
, well, sums.fuente
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.fuente
)(
accolades
, apparently.Pure Bash,
3736 bytesThanks to @KevinCruijssen for a byte!
Try it online!
fuente
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:fuente
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.fuente
Awk, 19 bytes
Explanation:
fuente
{s+=$1}END{print s}
:)dc, 14 bytes
Try it online!
Explanation:
fuente
CJam, 5 bytes
Try it online!
How it works
fuente
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:fuente
Mathematica, 19 bytes
Assumes Mathematica's notebook environment.
Expects the input to be in a file
a
.fuente
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
fuente
F
could be aṖ
as well, for clarity.Brachylog, 4 bytes
Try it online!
Explanation
fuente
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.fuente
$[]
sección generará un error debido a un '+' final.read
descarta las nuevas líneas finales, a pesar de que el delimitador de línea se reemplaza por_
. Esta es quizás una advertenciaread
, pero funciona bien para esta situación.Vim, 16 bytes / pulsaciones de teclas
Como V es compatible con versiones anteriores, ¡puede probarlo en línea!
fuente
Pyth , 3 bytes
Pruébalo en línea!
fuente
jq , 5 bytes
add
, más el indicador de línea de comando-s
.Por ejemplo:
fuente
-sadd
no funcionará, cuente el espacio.add
(3 bytes) y tienes que agregar 2 bytes para la-s
bandera. El espacio no cuenta como el código o la bandera: es el separador de línea de comando utilizado por el idioma.-s
indicador es la abreviatura de " --slurp ", (lea toda la secuencia de entrada en una matriz grande y ejecute el filtro solo una vez), lo que cambia la forma en quejq
interpreta los datos de entrada y cómo ejecuta el código. No es como-e
en elsed
que simplemente dicesed
que la cadena posterior es código. El-s
es más como una parte deljq
lenguaje en sí, y por lo tanto ese espacio de 6to byte también lo sería.En realidad , 2 bytes
Pruébalo en línea!
Explicación:
fuente
dc, 22
Esto parece más largo de lo que debería ser, pero es difícil decidir cuándo se alcanza el final del archivo. La única forma en que se me ocurre hacer esto es verificar la longitud de la pila después del
?
comando.Pruébalo en línea .
Tenga en cuenta que la macro
m
se llama recursivamente. Moderndc
implementa la recursión de cola para este tipo de cosas, por lo que no debería preocuparse por desbordar la pila.fuente
Pyke , 4 bytes
Pruébalo en línea!
fuente