Ini adalah masalah dari NCPC 2005 . Roy memiliki apartemen dengan hanya satu outlet listrik, tetapi ia memiliki banyak colokan listrik. Hitung jumlah outlet maksimum yang dapat ia miliki dengan menggunakan soket ekstensi yang ia miliki. Jumlah outlet per strip daya diberikan sebagai input.
Ternyata jika jumlah outlet masing-masing strip
maka jumlah outlet adalah ,
atau
.
Input ke program atau fungsi adalah serangkaian bilangan bulat positif yang tidak kosong.
Contohnya
2 3 4
> 7
2 4 6
> 10
1 1 1 1 1 1 1 1
> 1
100 1000 10000
> 11098
code-golf
number
arithmetic
Pål GD
sumber
sumber
Jawaban:
Jelly, 3 byte
Pengurangan (semua), jumlah, kenaikan. Coba di sini.
sumber
Retina , 3 byte
Linefeed tambahan sangat penting.
Input adalah daftar angka unary yang dipisahkan oleh spasi .
Cobalah online!
Penjelasan
Kode hanya menghapus semua spasi dan juga
1
setelah mereka dari string. Inilah mengapa itu bekerja:Penambahan di unary sederhana: hanya menggabungkan angka-angka yang sama dengan menghapus pembatas. Mengurangkan dengan 1 juga sederhana: cukup hapus a
1
dari setiap angka. Kami menginginkan 1 lebih dari jumlah input yang dikurangi, jadi kami hanya menghapus yang1
kami temukan setelah spasi, sehingga mengurangi semua kecuali input pertama.sumber
Hexagony ,
1814 byteDibuka:
Cobalah online!
Saya tidak berpikir panjang sisi 2 adalah mungkin, tetapi
harusada solusi sisi panjang 3 yang lebih efisien.Ini adalah pendekatan "decrement all, sum, increment" yang biasa, tetapi saya harus menambahkan diagram nanti untuk menunjukkan cara kerjanya di Hexagony.
sumber
Python, 24 byte
Cobalah online
sumber
Mathematica, 9 byte
sumber
Haskell,
1715 byteContoh penggunaan:
( foldl1$(+).pred ) [2,4,6]
->10
.Versi lama, pendekatan yang berbeda, 17 byte:
succ.sum.map pred
.sumber
J, 6 byte
Jumlah plus satu panjang minus. Kuras dan terapkan, seperti:
sumber
Labirin , 9 byte
Cobalah online!
Primer yang biasa:
Di sini kita mulai dari kiri atas
"
, no-op, menuju ke kanan. Selanjutnya adalah?
, yang membaca int dari STDIN (membuang karakter yang tidak dapat diurai sebagai bilangan bulat, misalnya spasi). Sekarang kami memiliki dua kasus:Jika input positif, kami belok kanan, melakukan:
Jika inputnya nol (yang terjadi pada EOF), kami langsung melanjutkan, melakukan:
sumber
Pyth, 5 byte
increment (jumlah (peta (decrement, input)))
sumber
ES6, 25 byte
sumber
l=>l.reduce((a,b)=>a+b-1)
.(,b)
ini mahal, tapi saya suka versi itu juga.MATL, 3 byte
Cobalah online.
Penjelasan
sumber
05AB1E , 4 byte
Kode:
Penjelasan:
Mengambil input seperti array (mis
[3, 4, 5]
.).sumber
Starry ,
2624 byteMengharapkan bilangan bulat yang dipisahkan oleh baris. Cobalah online!
Terima kasih kepada @ MartinBüttner untuk -2 byte.
Loop tidak dibuka sehingga angka pertama tidak dikurangi, meniadakan kebutuhan untuk bertambah. Mendorong angka itu mahal di Starry ...
sumber
Utilitas Bash + GNU, 16
Jika ada
N
strip daya, maka harus adaN-1
pemisah dalam daftar input yang dipisahkan koma. Yang perlu kita lakukan adalah mengganti separator dengan- 1 +
dan mengevaluasi secara hitung:Atau menggunakan trik yang sama:
Bash Murni (tanpa utilitas eksternal), 19
sumber
APL (NARS 2000),
1310 byte{1+(+/⍵)-⍴∊⍵}
Sunting: Down to 10 with Lynn's (better) approach.
{1++/1-⍨⍵}
sumber
gs2, 5 byte
(Di-encode CP437.)
Itu
read-nums dec m1 sum inc
.sumber
CJam, 7 byte
Uji di sini.
Pendekatan yang sama dengan Lynn (decrement all, sum, increment). Ini juga berfungsi untuk 8 byte (dan mungkin sedikit lebih menarik):
Ini melipat "decrement, add" di atas daftar. Dengan melakukan itu, pengurangan hanya diterapkan ke semua elemen kecuali yang pertama, sehingga kita tidak perlu mengurus kenaikan secara terpisah.
sumber
C,
605955 bytesumber
Perl 6, 14 byte
pemakaian
sumber
{.sum-$_+1}
Serius, 7 byte
Cobalah online!
Penjelasan:
sumber
Perl 6 , 20 byte
(Anda bisa menggunakan
<<
bukan«
)Pemakaian:
sumber
@arraya »+« @arrayb
++«@array
@array».method
@array»++
« a 'space separated' list of words »
Beberapa dari mereka adalah apa yang dikenal sebagai operator Meta, di mana mereka bergabung dengan operator lain. (Perl 5 tidak memiliki operator tersebut saat ini.)Perl 5 23 + 2 = 25 atau 19 + 2 = 21
Membutuhkan
-ap
bendera:Disimpan dalam file dan jalankan sebagai
EDIT: Jawaban lain, lebih kecil (19 + 2) tetapi pada dasarnya disalin dari dev-null answer:
sumber
F #, 25 byte
Ini adalah fungsi yang mengambil dalam array / daftar / urutan bilangan bulat dan mengembalikan hasil yang diperlukan.
Bagaimana itu bekerja:
Seq.fold
memungkinkan Anda untuk menerapkan fungsi ke setiap elemen berurutan sambil membawa beberapa keadaan sekitar saat itu melakukannya. Hasil dari fungsi sebagaimana diterapkan pada elemen pertama akan memberikan status yang akan dimasukkan ke dalam fungsi untuk elemen kedua, dan seterusnya. Misalnya, untuk meringkas daftar[1; 3; 4; 10]
, Anda akan menulisnya seperti ini:Yang akan diterapkan seperti ini:
Dengan status terakhir menjadi nilai pengembalian
Seq.fold
.sumber
𝔼𝕊𝕄𝕚𝕟, 5 karakter / 7 byte
Try it here (Firefox only).
Menggunakan penyandian khusus dengan karakter 10-bit (thx @Dennis!). Jalankan
encode('ï⒭+‡_')
di konsol JS untuk mendapatkan formulir yang disandikan, dandecode(/*ENCODED TEXT HERE*/)
mendekodekan formulir yang disandikan.Penjelasan
Diterjemahkan ke Javascript ES6 sebagai:
sumber
Mornington Crescent ,
1909 18731839 byteCobalah online!
sumber
Python 3, 79 byte
sumber
Ruby, 30 byte
Cukup sederhana - mulai dari 1, tambahkan angka yang disediakan, masing-masing -1 (arg baris perintah ada di
$*
). Rasa maluinject
adalah kata yang panjang.sumber
PowerShell, 19 byte
Catatan yang
1 + p1-1 + p2-1 + ... + pn-1
setara denganp1-1 + p2-1 + ... + pn
.Mengambil input sebagai argumen baris perintah terpisah dengan
$args
. Kami-join
yang bersama dengan-1+
pembatas untuk membuat string, seperti2-1+3-1+4
. String kemudian disalurkan keInvoke-Expression
(mirip denganeval
), dan menampilkan hasilnya.sumber
Perl, 21 + 2 = 23 byte
Membutuhkan
-a
dan-E
:sumber
-a
bendera untuk mendapatkan@F
variabel dengan elemen yang sudah terpecah, dan ganti -n dengan -p sehingga Anda tidak perlusay
, menguranginya menjadi 21 + 2:$a+=$_-1for@F;$_=++$a
-p
bukannyasay
sama karena saya harus$_=
tetap menggunakan .-a
adalah ide bagus!Brainfuck, 15 byte
Asumsi: The, operator mengembalikan 0 setelah semua input telah habis, dan tidak ada kabel ekstensi dengan 0 colokan. Juga, IO harus dalam nilai byte, bukan kode karakter ASCII.
Penjelasan: Ini menggunakan 2 register. Daftar akumulator "Nilai", mewakili jumlah perangkat yang dapat dicolokkan, dan register "kabel saat ini" yang melacak nilai kabel saat ini. Dimulai dengan menambah nilainya dengan 1, untuk outlet yang ada. Kemudian, untuk setiap kabel ekstensi, itu mengurangi satu dari nilai karena plug diambil, kemudian menambah nilainya dengan jumlah plug.
Kebanyakan penerjemah online tidak beroperasi dalam mode input byte mentah. Untuk mengujinya secara online, gunakan kode ini:
sumber