Masalah:
Diberikan satu set bilangan bulat, temukan jumlah semua bilangan bulat positif di dalamnya.
Memasukkan:
- t - jumlah kasus uji [ t <1000]
- Pada setiap baris t berikutnya , sebuah bilangan bulat N [-1000 ≤ N ≤ 1000]
Keluaran
Program harus menampilkan jumlah semua bilangan bulat positif.
Periksa kode Anda di juri online
Skor
Skor sama dengan ukuran kode sumber program Anda kecuali simbol dengan kode ASCII ≤ 32.
Berikut adalah daftar skor terbaik: Skor Terbaik Python ( Skor terbaik adalah 29)
code-challenge
gmunkhbaatarmn
sumber
sumber
T
(jumlah ... errr ... angka (?)) Bukan pilihan ... karena testcases melibatkan data tambahan setelahT
angka ... kode Anda akan gagal di SPOJ. Semua orang (3 jawaban di bawah) tampaknya telah dengan cerdik melewatkan bilangan bulat pertama.Jawaban:
Spasi, 0
Saya tidak bisa menolak.
S
= spasi,T
= tab,N
= baris baru, semua memiliki kode ASCII <= 32.Base64 disandikan untuk mudah disalin & tempel.
sumber
S
dalam pengkodean biner dari suatu angka. Ini semua dalam instruksi push-number-to-stack formulirSSSS...N
, di manaS
kode ke-4 memimpin 0. (Tentu saja ini tidak berpengaruh pada skor.)Elemen, 17 karakter plus 1 spasi
Ini adalah bahasa buatan saya yang pertama. Ini dirancang agar sangat kompak dan dapat dibaca manusia. Semua instruksi panjangnya satu karakter dan melakukan satu fungsi.
Elemen memiliki dua tumpukan dan hash sebagai struktur memori. Dua tumpukan disebut tumpukan utama dan tumpukan kontrol. Tumpukan utama adalah tempat aritmatika, I / O, dan manipulasi hash terjadi. Tumpukan kontrol adalah tempat operasi logika terjadi, dan tumpukan ini mengontrol while dan untuk loop.
Ide dasar di balik Elemen adalah bahwa ada hash yang menyimpan angka / string, sementara tumpukan digunakan untuk melakukan perhitungan pada angka-angka ini. Hasil perhitungan ini kemudian dapat menetapkan tempat tertentu dalam hash untuk digunakan di masa mendatang. Konten hash yang berbeda disebut elemen, sehingga mirip dengan array tetapi dapat memiliki nama non-numerik.
EDIT: Anda dapat menemukan penerjemah untuk Elemen (ditulis dalam Perl) di sini .
Berikut adalah daftar operator: Dalam beberapa contoh ini, m dan n mewakili angka yang sudah ada di tumpukan.
Berikut ini adalah panduan tentang cara kerja program:
sumber
Perl, 31
sumber
say
ini sedikit lebih pendek? Itu akan cocok dengan 29 karakter terbaik.say
tidak built-in dan (setidaknya) membutuhkan saklar baris perintah yang akan dihitung terhadap jumlah karakter.$\
alih-alih$i
:<>;$\+=$_*($_>0)while<>;print
Ruby 1.9.2, 37
Sebut seperti ruby scriptname file_with_ints.
sumber
Ruby, 52
sumber
s
.Haskell, 58
Hanya beroperasi dengan benar pada
t
bilangan bulat. Belum menjalankannya terhadap Spoj karena saya hanya tidak mau mendaftar di sana.sumber
t
bilangan bulat"?kode dalam C 89 karakter
Saya mencoba banyak untuk mengurangi kode saya kurang dari 63 byte, tetapi saya bisa menguranginya hanya menjadi 89 byte. Tolong bantu saya untuk menguranginya menjadi 63 byte atau bahkan kurang.
sumber
return 0;
tidak perlu,for
siklus dapat dikontrak untukfor(scanf(x,&t);t--;scanf(x,&a),a>0?b+=a:a);
== yang membuat 78 karakter ...error: initializer element is not computable at load time x="%d"
Perl, 33
Meskipun ruang itu diperlukan, jadi rasanya aneh untuk tidak menghitungnya. Oh well, aturannya adalah aturannya.
Hmm. Saya mungkin bisa lolos dengan menggunakan nama variabel yang tidak diperhitungkan total. Masalahnya, saya tidak yakin bagaimana saya akan menempelkan kode itu.
sumber
Clojure, 71
sumber
*in*
bukanjava.io.BufferedReader
, seperti yang disyaratkan olehline-seq
.In memoriam Dennis M. Ritchie
unix
57¹72:dengan asumsi saya adalah file, yang berisi int.
¹) salah, termasuk jumlah baris, dan menambahkan 1 baris terlalu sedikit.
echo $ (($ (cat i | head -n $ (head -n1 i) | grep -v "-" | tr '\ n' '+') 0))sumber
Haskell, 51
(ruang ekstra untuk kejelasan, karena tidak diperhitungkan)
Haskell menarik ..., karena Anda cenderung mendapatkan program dengan jumlah ruang yang signifikan.
sumber
filter (>0)
.C, 88
Setelah upaya besar lainnya, kode kurang satu karakter, tolong bantu saya untuk mengurangi lebih banyak.
sumber
return 0;
) dan ({}
untukfor
)b,x="%d";main(a,t){for(scanf(x,&t);t--&&scanf(x,&a);)b+=(a>0)*a;printf(x,b);}
<- 77 byteBefunge-98 (24)
(Pastikan Anda menggunakan juru bahasa yang bisa membaca angka negatif (sepertinya bug yang agak umum, tetapi RcFunge berfungsi))
Perl (25)
(Perl memungkinkan karakter kontrol dalam nama variabel, saya menamai variabel saya ^ B (ASCII 2) sehingga tidak dihitung ke arah tujuan.)
(Varian normal (27 karakter)):
sumber
APL (10)
Penjelasan:
⍳⎕
: baca baris, berikan daftar [1..N] untuk input pengguna N¨
: untuk setiap elemen dalam daftar ini ... (mis. lakukan N kali)0⌈⎕
: baca baris, kembalikan maksimal 0 dan masukkan N+/
memberikan jumlah daftar ini.sumber
Mathematica:
1816sumber
PowerShell, 44
sumber
Q, 12
penggunaan sampel
sumber
befunge,
3524dengan sedikit inspirasi dengan melihat jawaban marinus, saya juga sudah mengelola 24 karakter. tapi saya punya pendekatan yang sama sekali berbeda.
sumber
PYTHON 2.x, 50 karakter
sumber
C, 70
72karakterHasil di situs SPOJ jelas tampak tidak nyata - Saya tidak tahu cara mendapatkan ini hingga 63.
Namun, 68 karakter dapat dijangkau pada beberapa kompiler dengan menyalahgunakan perilaku yang tidak terdefinisi. Berikut ini berfungsi pada x86 Linux dengan 32-bit gcc, di mana semua argumen dilewatkan di stack.
sumber
excel, 27
hitung t dalam A1, sisa data a2 dan turun
sumber
Clojure, 108
Saya benar-benar berharap bisa menghindari
java.io.BufferedReader.
bagian itu, karena harganya 24 karakter itu sendiri. Tapi AFAIK tidak ada fasilitas untuk membaca baris dari STDIN tanpanya.sumber
Perl, 20
Saya tahu ini sudah lama dan sepele, tetapi jawaban Perl masih dapat ditingkatkan:
sumber
}{
artinya / lakukan?C ++:
115 karakter. Perlu mengoptimalkannya hingga 90. Ada saran?
sumber
return 0
dimain
. Dengan membuat variabel global, Anda dapat menghapus=0
inisialisasi. Akhirnya,for(;;)
jumlah karakter yang sama sepertiwhile()
tetapi Anda mendapatkan dua tempat tambahan untuk berekspresi.std::
sebelumcin
dancout
dan menyingkirkanusing namespace std;
dapat menyimpan 5 karakter lagi.PHP, 71
sumber
Python: (92 karakter)
sumber
a=raw_input
danr=range
menggunakana()
danr()
kemudian dapat menyimpan beberapa karakter.scala
5554:sumber
C
sumber
sum
dapat dikurangi menjadis
, string keluaran bisa saja"%d"
, dll.Ruby, 42
(berdasarkan jawaban david4dev)
Skor terbaik untuk Ruby di spoj: http://www.spoj.com/ranks/SIZECON/lang=RUBY
sumber
45 karakter dalam python
sumber