Buat program yang menjumlahkan semua bilangan bulat yang ditemukan dalam string yang ditetapkan sebagai variabel dalam program (dengan demikian, program tidak harus menangani input apa pun). Angka integer dipisahkan oleh non-numerik (selain 0, 1, 2, 3 ... 9).
Contoh:
e7rde f ,fe 43 jfj 54f4sD
= 7 + 43 + 54 + 4 = 1085
= 564 545,5445-32JIFk0ddk
= 64 + 545 + 5445 + 32 + 0 = 60860ab0
= 0 + 0 = 0
Catatan tambahan:
- Dukungan Unicode tidak diperlukan, tetapi diizinkan
-n
(Dimanan
bilangan bulat) tidak dihitung sebagai negatifn
, tetapi sebagai tanda hubung diikuti olehn
.
Jawabannya dapat dicetak di layar (tetapi tidak diperlukan).
Jawaban terpendek (dalam karakter) menang.
5a-3
(kode saya akan melompati-
jika mengikuti nomor segera, tetapi tidak jika ada non-angka sebelumnya).Jawaban:
Perl, 15
Masukkan
$_
, jumlahkan$c
:sumber
Ruby 1.9, 21 karakter
Untuk mencetak solusi ke stdout, diperlukan 2 karakter tambahan:
Dan untuk membaca dari stdin daripada menggunakan variabel yang telah ditentukan, 3 karakter lain harus digunakan:
Untuk Ruby 1.8, ganti
?+
dengan"+"
untuk mendapatkan solusi yang berfungsi dalam 22 karakter.sumber
scan
lebih pendek darisplit
. Jadi solusi Anda menjadieval s.scan(/\d+/)*?+
- 21 karakter.scan
, terima kasih!eval
dan* '+'
Python (60)
sumber
Ruby -
3634 karakter36 karakter jika Anda ingin hasilnya dicetak.
Mengasumsikan input hadir sebagai string dalam s.
sumber
JavaScript (ES6), 30
Versi beranotasi:
sumber
Windows PowerShell, 23
252931Dengan output.
Faktanya, tanpa output persis sama, Anda hanya perlu menyalurkannya di tempat lain di mana ia dibutuhkan.
sumber
J -
4038 karakterVersi malas. Membutuhkan perpustakaan string.
sumber
Jawa
keluar dari kontes;)
sumber
JavaScript [30 byte]
sumber
Labyrinth ,
2921 byte(Penafian: Labirin lebih baru dari tantangan ini.)
Juga, Labyrinth tidak memiliki variabel, jadi saya pergi dengan program input / output normal.
Ini cukup sederhana karena cara input perintah Labyrinth bekerja.
?
mencoba membaca bilangan bulat yang ditandatangani dari STDIN dan berhenti di non-digit pertama. Jika tidak dapat membaca bilangan bulat (karena karakter berikutnya adalah-
tidak diikuti oleh digit, atau non-digit lainnya, atau kami telah mencapai EOF), ia akan kembali0
sebagai gantinya.,
di sisi lain membaca byte berikutnya dan mendorong nilai byte. Jika yang ini disebut di EOF itu akan kembali-1
sebagai gantinya.Jadi, inilah beberapa kodesemu untuk solusinya:
Berurusan dengan angka negatif cukup merumitkan solusi ini. Jika bukan karena itu, saya akan memiliki solusi 8 byte ini:
sumber
PHP - 37
Tanpa cetak;
Dengan pencetakan (38):
sumber
Perl, 16 karakter
Membawa input masuk
$_
, output terus berjalan$r
. Titik koma terakhir tidak berguna, tetapi mungkin akan diperlukan ketika program melakukan lebih banyak hal. Tambahkansay$r
untuk keluaran.sumber
wc -c
.J - 23 char
Bukan pemenang, tetapi kita bisa melihat primitif yang cukup langka dalam aksi.
Dijelaskan:
_"."0 y
- Untuk setiap karakter dalam string inputy
, cobalah membacanya sebagai angka. Jika Anda tidak bisa, gunakan nilai default_
(tak terhingga) sebagai gantinya.,_=
- Periksa setiap hasil untuk kesetaraan_
, dan kemudian jalankan array akhir 0s dan 1s menjadi vektor. ("."0
selalu menambahkan satu dimensi terlalu banyak ke hasilnya, jadi kami memperbaikinya di sini.)y,:' '
- Tambahkan baris spasi di bawah string input.}
- Digunakan sebagaimana adanya di sini,}
disebut Item Amend , dan ia menggunakan daftar 0s dan 1s di sebelah kiri sebagai indeks untuk memilih baris yang akan diambil dari argumen yang benar. Jadi yang terjadi adalah, untuk setiap kolom di sisi kanan, kami mengambil karakter asli jika dapat dibaca sebagai angka, dan jika tidak, kami mengambil ruang di bawahnya. Karenanya, kami menutupi setiap karakter non-numerik dengan spasi.+/".
- Sekarang konversi seluruh string ini menjadi daftar angka, dan jumlahkan.sumber
gs2, 4 byte
Dikodekan dalam CP437 ; byte ketiga adalah
E9
.W
membaca semua angka/-?\d+/
dari string,#Θ
memetakan nilai absolut,d
jumlah(GS2 juga lebih baru dari tantangan ini, tetapi
read-nums
perintahnya adalah suatu kebetulan total.)sumber
Smalltalk (Smalltalk / X) (51 karakter)
menggunakan regex pakage:
dengan regex:
masukan dalam s
sumber
R, 30
Di sini,
x
adalah nama variabel.Contoh:
sumber
Javascript - 43 karakter
Saya tahu ini panjang, tapi tidak ada solusi JS jadi :)
a
adalah string.c
berisi jawaban.sumber
Tcl, 30
Diasumsikan bahwa input ada dalam variabel
$a
(secara formal, dalama
) dan menyimpan jawaban dalam hasil penerjemah. I / O dibiarkan sebagai latihan.sumber
C99 (dengan peringatan) 85
Untuk benar-benar menggunakan program ini, Anda perlu menetapkan variabel seperti:
Jika Anda menggunakan gcc, Anda harus mengompilasinya sebagai C99 seperti:
sumber
APL, 16 byte
⎕d
adalah built-in yang berisi digit (0-9).b
ditugaskan ke vektor 0/1 di mana 1 diberikan ke karakter yang merupakan digit.b
digunakan untuk mengompresi array karakter yang diberikan dan kemudian digunakan kembali untuk memperluasnya, yang memasukkan kosong.⍎
adalah APL eval yang mengubah string ke vektor bilangan bulat, dalam hal ini.+/
menghitung jumlahnya.sumber
+/2⊃⍞⎕VFI⍨⎕AV~⎕D
Swift 3, 78
dimana
s
senarnyasumber
Perl - 24 karakter
Input dalam $ _
sumber
Sebenarnya, 14 byte (tidak bersaing)
Cobalah online!
Kiriman ini tidak bersaing karena Sebenarnya sedikit lebih baru dari tantangan ini.
Program ini mendukung halaman kode CP437 untuk input.
Penjelasan:
sumber