Tugas
Tugasnya sangat sederhana. Diberikan string yang tidak kosong yang berisi angka , huruf besar dan huruf kecil , menampilkan jumlah angka yang tersisa. Sebagai contoh:
a1wAD5qw45REs5Fw4eRQR33wqe4WE
Memfilter semua surat akan menghasilkan:
1 5 45 5 4 33 4
Jumlah dari angka-angka ini adalah 1 + 5 + 45 + 5 + 4 + 33 + 4 = 97
. Jadi hasilnya akan97
.
Uji Kasus
a > 0
0 > 0
5 > 5
10 > 10
a0A > 0
1a1 > 2
11a1 > 12
4dasQWE65asAs5dAa5dWD > 79
a1wAD5qw45REs5Fw4eRQR33wqe4WE > 97
Ini adalah kode-golf , jadi pengiriman dengan jumlah byte paling sedikit menang!
Jawaban:
GS2, 2 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Labirin , 8 byte
Ambil itu, Pyth ...
Cobalah online!
Penjelasan
Primer biasa (dicuri dari Sp3000):
Apa yang sangat berguna di sini adalah bahwa Labyrinth memiliki dua perintah input yang berbeda,
,
dan?
. Yang pertama membaca byte tunggal dari STDIN, atau-1
di EOF. Yang terakhir membaca bilangan bulat dari STDIN. Ia melewatkan semua yang bukan angka dan kemudian membaca angka desimal pertama yang ditemukannya. Yang ini kembali0
di EOF, jadi kami tidak bisa menggunakannya untuk memeriksa EOF dengan andal di sini.Loop utama program adalah bit yang ringkas ini:
Dengan
?
kami membaca integer (mengabaikan semua huruf), dengan+
kami menambahkannya ke total berjalan (yang dimulai sebagai salah satu nol tersirat di tumpukan bawah). Kemudian kita membaca karakter lain dengan,
untuk memeriksa EOF. Selama kita tidak berada di EOF, karakter yang dibaca akan menjadi huruf yang memiliki kode karakter positif, sehingga IP berbelok ke kanan (dari sudut pandangnya; yaitu barat).;
membuang karakter karena kita tidak membutuhkannya dan kemudian kita masukkan loop lagi.Setelah kita berada di EOF,
,
tekan a-1
sehingga IP berbelok ke kiri (timur).;
sekali lagi membuangnya-1
,!
mencetak total yang berjalan sebagai bilangan bulat dan@
mengakhiri program.sumber
CJam, 13 byte
Tetap bekerja dengan input tanpa angka berkat Dennis! Juga menyimpan byte dengan mengganti array surat dengan array ASCII di atas titik kode 64. Dan kemudian byte lain disimpan oleh Dennis!
Transliterasi sederhana dari huruf ke spasi, lalu eval dan jumlah. Cobalah online .
sumber
MATL , 8 byte
Cobalah online!
sumber
Retina ,
2211Cobalah online!
11 byte (!) Disimpan berkat Martin!
Pada dasarnya hanya desimal ke unary lalu hitung
1
s.sumber
$0
implisit jika substitusi dimulai$*
. Ini adalah pola yang sangat umum dan akan membiarkan Anda mengalahkan Pyth. ;)Japt, 2 byte
Uji secara online!
Bagaimana itu bekerja
sumber
JavaScript ES6, 35 byte
Bagaimana itu bekerja
Pertama, kami mengganti setiap string yang bukan digit
"+"
. Pada dasarnya ada empat cara berbeda yang bisa berakhir:Kasus 1 dan 2 sudah diurus. Tetapi kita harus memperbaiki yang terakhir
+
agar tidak menyebabkan kesalahan. Kita bisa menghapusnya dengan.replace(/\+$,"")
, tapi itu terlalu mahal. Kita dapat menambahkan a0
hingga akhir, tetapi itu akan memengaruhi angka terakhir jika string tidak diakhiri dengan a+
. Kompromi adalah menambahkan.0
, yang merupakan angka yang valid sendiri dan tidak mempengaruhi nilai bilangan bulat lainnya.Berikut beberapa nilai lain yang juga berfungsi:
Versi alternatif, juga 35 byte
Versi alternatif lain, 36 byte
sumber
Pyth,
121110 byteUntungnya,
s
(convert to int) kembali0
ketika diterapkan ke string kosong, jadi saya tidak perlu khawatir tentang fakta yangsplit("a1b", "\D+")
kembali["", "1", ""]
. Demikian pula,split("a", "\D+")
pengembalian["", ""]
.Ini bahkan memungkinkan saya untuk membagi setiap non-digit satu per satu, karena
1 + 0 + 0 + 0 + 0 + 2
hal yang sama1 + 2
.Terima kasih kepada Thomas Kwa untuk satu byte!
sumber
Gol> <> , 4 byte
Begitu pendeknya aku butuh teks tiruan ...
sumber
Perl 6 , 18 byte
Pemakaian:
sumber
Jelly, 6 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Perl, 21 + 1 = 22 byte
Membutuhkan
-p
bendera:sumber
a
?0
;-)Julia, 35 byte
Ini adalah fungsi anonim yang menerima string dan mengembalikan integer. Untuk menyebutnya, tetapkan ke variabel.
Kami menggunakan
matchall
untuk mendapatkan array yang terdiri dari kecocokan dari ekspresi reguler\d+
, yang hanya bilangan bulat dalam string. Kita harus menempelkan 0 ke depan string, jika tidak untuk kasus seperti"a"
, kita akan menjumlahkan array kosong, yang menyebabkan kesalahan. Kami kemudian menerapkanparse
ke setiap kecocokan string, yang mengonversi menjadi bilangan bulat, dan mengambil jumlahnya.sumber
parse
bisa menjadiint
jika Anda tidak keberatan dengan peringatan penghinaan.PHP, 64 byte
Jalankan sebagai
https://eval.in/517817
sumber
<?
bukan<?php
?Javascript,
3239 byteTampilkan cuplikan kode
sumber
Mathematica, 51 byte
Menangkap ujung yang salah dari builtin verbose Mathematica. 1 Byte off dengan bantuan @DavidC
sumber
DigitCharacter ..
akan menghemat 1 byteDigitCharacter
tidak berfungsi seperti yang tertulis karena menghapus semua digit sedangkan kami ingin menghapus semua huruf ...Total@ ToExpression@StringCases[#, DigitCharacter ..] &
R,
4643 bytePenjelasan
Contoh dijalankan
Sunting: Diganti
[^0-9]
dengan\\D
.sumber
PowerShell,
2826 byteMengambil input
$args
kemudian melakukan regex-replace
untuk menukar huruf dengan+0
, lalu pipa itu keiex
(kependekanInvoke-Expression
dan mirip denganeval
).kalau tidak
Jika Anda OK dengan beberapa output asing, Anda dapat melakukan hal berikut, juga pada
2826 byte:Ini akan mengambil string input
$args
dan-split
itu menjadi array-of-string pada non-angka (menghapusnya dalam proses). Misalnya1a2b33
akan berubah menjadi['1','2','33']
. Kami menyalurkannya keMeasure-Object
dengan-Sum
parameter. Output akan seperti di bawah ini:Sunting - durr, tidak perlu
[ ]
di regex karena saya tidak lagi menentukan daftar kemungkinan yang cocok ...sumber
Gema, 39 karakter
Contoh dijalankan:
sumber
Serius, 13 byte
Cobalah online!
Penjelasan:
sumber
a
. Seharusnya berupa perbaikan satu byte.Java, 70 byte
sumber
TI-Basic, 106 byte
Bekerja pada kalkulator TI-83/84!
sumber
Clojure / ClojureScript, 35 byte
sumber
R, 50 byte
Perlu
gsubfn
diinstalMenggunakan
strtoi
untuk memaksa ke numeriksumber
Ruby 45 byte
(Upaya pertama di tempat kerja, akan mengunjungi kembali ini)
sumber
POSIX sh + tr + dc,
2725 byteMengubah konversi non-digit (termasuk baris baru yang berhenti) ke
+
operator, mendorong dua nol ke tumpukan (jika input dimulai dengan non-digit), tambahkan semuanya dan cetak hasilnya. Mungkin ada tambahan nol tersisa di bagian bawah tumpukan, tetapi kami tidak peduli tentang itu.sumber
Lua, 51 Bytes
Cukup singkat untuk sekali! Bahkan lebih pendek dari Jawa! Input harus berupa argumen baris perintah agar dapat berfungsi.
Tidak disatukan
sumber
Utilitas Bash + GNU, 29
Jika diperlukan untuk mendukung input tanpa nomor (mis
a
), maka kita dapat melakukan ini:Utilitas Bash + GNU, 38
1 byte disimpan berkat @TobySpeight.
sumber
a
. Kami sedang mendiskusikan apakah itu valid atau tidak.;
daripada||
selalu menambahkan nol, tanpa membahayakan.Python 2, 70 byte
Saya memberikan jawaban Python hanya untuk bersenang-senang.
Sangat sederhana dan menggunakan regex untuk menemukan semua angka dalam input. Cobalah online!
sumber
raw_input
atau beralih ke python3. Sebuah versi yang lebih kecil (py3, 56 bytes):import re;print(sum(map(int,re.findall('\d+',input()))))
.Oracle SQL 11.2, 105 byte
Regex mengonversi karakter alfa ke ','
XMLTABLE membuat satu baris per item dalam string menggunakan ',' sebagai pemisah.
SUM baris untuk mendapatkan hasilnya.
NVL diperlukan untuk menjelaskan string tanpa digit.
sumber