Pertimbangkan aliran / file dengan satu bilangan bulat per baris. Sebagai contoh:
123
5
99
Kode Anda harus menampilkan jumlah angka-angka ini, yaitu 227
.
Format input hanya satu integer per baris. Anda tidak dapat, misalnya, menganggap input berada pada satu baris sebagai array bilangan bulat.
Anda dapat mengambil input dari STDIN, dalam bentuk nama file, atau file dengan nama pilihan Anda; Anda bisa memilih yang mana. Tidak ada cara lain untuk mendapatkan input yang diizinkan.
Input akan mengandung setidaknya satu bilangan bulat. Anda dapat menganggap semua bilangan bulat adalah non-negatif dan jumlah totalnya kurang dari .232
code-golf
string
arithmetic
Dennis
sumber
sumber
Jawaban:
05AB1E , 2 byte
Penjelasan:
Cobalah online!
sumber
Bash + coreutils, 16 byte
Cobalah online!
Ada dua ruang setelah
\
. Ini juga berfungsi untuk angka negatif.Penjelasan:
Anda mungkin bertanya-tanya mengapa
tr \\n +|bc
tidak lebih baik, karena langsung mengubah baris baru menjadi '+. Ya, itu memiliki 2 kesalahan tak terduga:sumber
tr \\n +|bc
? Jika demikian, silakan lihat penjelasan yang diperbarui. Pertanyaan bagus.paste -s -d+|bc
adalah 15 bytexargs|tr \ +
dalam hal ini tidak melakukan apa-apa, dan bc menerima nomor dan mencetaknya kembali.MATL , 2 byte
Ini mengharapkan input dalam file teks bernama
defin
.Gif atau tidak terjadi :
Atau coba online! ( terima kasih kepada Dennis untuk pengaturannya! )
Penjelasan
Ketika program MATL dijalankan, jika file yang dipanggil
defin
ditemukan (namanya mengacu pada "input default"), isinya secara otomatis dimuat sebagai teks dan didorong ke tumpukan sebagai string sebelum menjalankan kode.Fungsi
U
mengevaluasi string untuk mengubahnya menjadi vektor kolom angka, dans
menghitung jumlahnya, yang secara implisit ditampilkan.sumber
Japt , 2 byte
Penjelasan
Cobalah online!
sumber
Tempel + bc, 13 byte
Penjelasan:
Jawaban shell lain!
sumber
paste -s -d+|bc
dan tidak menyadari bahwa saya dapat mengkonsolidasikan sakelar. Rapi!Perl 6 , 13 byte
Cobalah
Penjelasan
lines()
mengembalikan daftar garis dari$*IN
atau$*ARGFILES
pegangan input baris perintah "ajaib".sum(…)
telah ditambahkan ke Perl 6 untuk memungkinkan[+] List
dioptimalkan untuk Posisi yang dapat menghitung jumlah mereka tanpa menghasilkan semua nilai mereka seperti1..100000
(saya hanya berpikir
sum
terlalu lucu di sini untuk digunakan[+]
seperti biasanya)say(…)
panggil.gist
metode pada inputnya, dan cetak dengan baris baru tambahan.sumber
$a+=$_ for <>;print $a
Bekerja dengan baik di Perl 5, tetapi mungkin ada cara yang lebih pendek.C, 53 byte
sumber
Python 3 , 28 byte
Diambil dari tip ini . Saya telah diberitahu ini tidak akan berfungsi pada Windows.
Cobalah online!
sumber
Retina ,
117 byte-4 Terima kasih kepada Martin Ender
Cobalah online!
Konversikan ke unary:
Hitung jumlah
1
s:sumber
Brain-Flak , 20 byte
Cobalah online!
Penjelasan
Ini adalah golf dari solusi yang dibuat oleh Riley dalam obrolan . Solusinya adalah:
Jika Anda terbiasa dengan Brain-Flak ini cukup jelas. Itu mendorong ketinggian tumpukan dan muncul satu nilai saat menghitung mundur, pada akhirnya mendorong jumlah semua berjalan.
Ini adalah golf yang cukup bagus tetapi dia nol keduanya
{}
dan([])
namun ini akan memiliki nilai yang hanya berbeda satu jadi jika kita menghapus topeng dan membuat salah satu dari dua negatif mereka harus hampir dibatalkan.Karena mereka selalu berbeda satu sama lain, kami memiliki keadaan yang tidak menguntungkan di mana jawaban kami selalu tidak sesuai dengan ketinggian tumpukan. Untuk memperbaiki ini, kami hanya memindahkan awal dari push untuk mencakup ketinggian tumpukan pertama.
sumber
Python 2, 40 byte
sumber
R, 11 byte
scan
mengambil input, satu nomor per baris. Dansum
, baiklah, jumlah.sumber
Perl 5 , 9 byte
8 byte kode +
-p
bendera.Cobalah online!
Dengan
-p
, input dibaca satu baris pada satu waktu, disimpan di$_
setiap waktu. Kami menggunakan$\
sebagai akumulator, karena berkat-p
flag, itu dicetak secara implisit pada akhirnya. Yang tak tertandingi}{
digunakan sehingga-p
flag hanya mencetak$\
sekali di akhir alih-alih mencetak$_
dan$\
pada setiap baris berbunyi seperti biasanya.sumber
)(
accolades
, rupanya.Pure Bash,
3736 byteTerima kasih kepada @KevinCruijssen untuk satu byte!
Cobalah online!
sumber
do ((
? The TIO tampaknya bekerja.Haskell, 32 byte
Cobalah online!.
interact
mengumpulkan seluruh input dari stdin, meneruskannya ke fungsi yang diberikan sebagai argumennya dan mencetak string yang didapatnya dari fungsi ini. Fungsinya adalah:sumber
lines.map(_.toInt)
karena jumlah mengharapkan semacam konversi implisit numerik dari String atau dalam hal ini yang eksplisit.PHP, 22 byte
Ini mengasumsikan ada file bernama "t" dengan daftar bilangan bulat.
file()
membuka file dan mengembalikan array dengan setiap baris menyimpan elemen terpisah dalam array.array_sum()
menjumlahkan semua elemen dalam array.sumber
Awk, 19 byte
Penjelasan:
sumber
{s+=$1}END{print s}
:)dc , 14 byte
Cobalah online!
Penjelasan:
sumber
CJam , 5 byte
Cobalah online!
Bagaimana itu bekerja
sumber
1b
menjumlahkan angka?[<x> <y> <z> <w>]<b>b
cukup menghitung b³x + b²y + bz + w . Ketika b = 1 , ini menghasilkan x + y + z + w .Python,
3830 byteDengan python, file dibuka oleh
open('filename')
(jelas). Mereka, bagaimanapun, iterables. Setiap kali Anda mengulang-ulang file tersebut, Anda mendapatkan baris berikutnya. Jadi peta iterate atas setiap daftar, memanggilnyaint
, dan kemudian menjumlahkan daftar yang dihasilkan.Panggil dengan nama file sebagai input. (yaitu
f('numbers.txt')
)8 byte disimpan dengan menggunakan
map(int, open(n))
alih-alih pemahaman daftar. Kode asli:sumber
Mathematica, 19 byte
Diasumsikan lingkungan notebook Mathematica.
Mengharapkan input berada dalam file
a
.sumber
Total @ Flatten @ Import @ "a"
atau bahkan"a" // Import // Flatten // Total
. ;)Tr[#&@@@Import@#]&
juga diizinkan?Jelly ,
98 byteSTDIN bukan benar-benar Jelly ...
Cobalah online!
Bagaimana itu bekerja
sumber
F
bisa menjadiṖ
juga, untuk kejelasan.Brachylog , 4 byte
Cobalah online!
Penjelasan
sumber
Bash murni, 30
Cobalah online.
read
s file input dalam satu masuk ke variabelb
.-d_
memberitahuread
bahwa garis pembatas_
bukannewline${b//'
newline'/+}
menggantikan baris barub
dengan+
echo $[ ... ]
secara aritmatika mengevaluasi ekspresi yang dihasilkan dan mengeluarkannya.sumber
$[]
bagian itu akan error karena trailing '+'.read
membuang baris akhir yang terakhir, meskipun pembatas baris ditimpa_
. Ini mungkin peringatanread
, tetapi berfungsi dengan baik untuk situasi ini.Vim, 16 byte / penekanan tombol
Karena V kompatibel dari belakang, Anda dapat mencobanya secara online!
sumber
Pyth , 3 byte
Cobalah online!
sumber
jq , 5 byte
add
, ditambah bendera baris perintah-s
.Sebagai contoh:
sumber
-sadd
tidak akan berfungsi, hitung ruangnya.add
(3 byte) dan Anda harus menambahkan 2 byte untuk-s
flag. Spasi tidak dihitung sebagai kode atau bendera: pemisah baris perintah yang digunakan oleh bahasa.-s
benderanya adalah kependekan dari " --slurp ", (baca seluruh aliran input ke dalam array besar dan jalankan filter hanya sekali), yang mengubah baik bagaimanajq
menginterpretasikan data input, dan bagaimana menjalankan kode. Ini tidak seperti-e
dised
mana hanya mengatakansed
bahwa string selanjutnya adalah kode. Ini-s
lebih seperti bagian darijq
bahasa itu sendiri, dan karena itu ruang byte ke-6 juga akan.Sebenarnya , 2 byte
Cobalah online!
Penjelasan:
sumber
dc, 22
Ini sepertinya lebih lama dari yang seharusnya, tetapi sulit untuk memutuskan kapan akhir file tercapai. Satu-satunya cara saya bisa memikirkan untuk melakukan ini adalah memeriksa panjang tumpukan setelah
?
perintah.Cobalah online .
Perhatikan makro
m
disebut secara rekursif. Moderndc
menerapkan rekursi ekor untuk hal semacam ini, jadi seharusnya tidak ada kekhawatiran meluap tumpukan.sumber
Pyke , 4 byte
Cobalah online!
sumber