Deskripsi
Kurangi angka P berikutnya dari angka N. Angka N berikutnya adalah N +1.
Lihatlah contoh-contoh untuk mendapatkan apa yang saya maksud.
Contoh:
Input: N=2,P=3
Calculate: n - (n+1) - (n+2) - (n+3) //Ending with 3, because P=3
Calculate: 2 - 2+1 - 2+2 - 2+3 //Replacing N with 2 from Input
Calculate: 2 - 3 - 4 - 5
Output: -10
Input: N=100,P=5
Calculate: n - (n+1) - (n+2) - (n+3) - (n+4) - (n+5)
Calculate: 100- 101 - 102 - 103 - 104 - 105
Output: -415
Input: N=42,P=0
Calculate: n
Calculate: 42
Output: 42
Input: N=0,P=3
Calculate: n - (n+1) - (n+2) - (n+3)
Calculate: 0 - 1 - 2 - 3
Output: -6
Input: N=0,P=0
Calulate: n
Calculate: 0
Output: 0
Memasukkan:
N : Integer, positif, negatif atau 0
P : Integer, positif atau 0, tidak negatif
Keluaran:
Integer atau String, memimpin 0 diizinkan, mengikuti baris baru diizinkan
Aturan:
- Tidak ada celah
- Ini adalah kode-golf, jadi kode terpendek dalam byte menang
- Input dan Output harus seperti yang dijelaskan
code-golf
math
arithmetic
Paul Schmitz
sumber
sumber
Input: N=0,P=3
contoh, ekspansi Anda memiliki beberapa negatif gandaN * (P-1)
. Itu hampir definisi dari sepele .Jawaban:
05AB1E ,
53 byteDisimpan 2 byte berkat Adnan
Penjelasan
Mengambil P lalu N sebagai input.
sumber
Ý+Æ
:).P
masuk dulu)Ý
... Saya pikir hanya ada rentang 1 berbasis.Python 2,
26 2423 byte-2 byte terima kasih kepada @Adnan (ganti
p*(p+1)/2
denganp*-~p/2
)-1 byte terima kasih ke @MartinEnder (ganti
-p*-~p/2
dengan+p*~p/2
Tes ada di ideone
sumber
CJam, 8 byte
Suite uji.
Sayang sekali bahwa solusi bentuk tertutup lebih lama. : |
Penjelasan
sumber
Haskell, 21 byte
sumber
Javascript (ES6),
201918 byteDisimpan 1 byte oleh currying, seperti yang disarankan oleh Zwei
1 byte Disimpan berkat pengguna81655
Uji
sumber
n=>p=>...
dan memanggil fungsi denganf(n)(p)
(n,p)=>n-p*(++p/2+n)
juga akan bekerja di C #.n-p*(++p/2+n)
setara dengann+p*(~p/2-n)
.Jelly , 4 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Haskell,
1918 byteSolusi 19 byte sebelumnya
sumber
C #,
2120 byteSunting: Disimpan satu byte berkat TheLethalCoder
Cobalah online!
Sumber lengkap, termasuk uji kasus:
sumber
N=>P=>
alih-alih(N,P)=>
menyimpan 1 byteMathematica, 15 byte
Fungsi tanpa nama yang menerima
P
dann
sebagai parameternya dalam urutan itu.Menggunakan solusi bentuk tertutup
n - n*p - p(p+1)/2
.sumber
Perl,
2322 byteTermasuk +1 untuk
-p
Berikan n dan p (dalam urutan itu) pada baris STDIN yang terpisah:
subtract.pl
:(menggunakan
''
tanda kutip untuk menyimpan\
faktur penalti 2 byte karena tidak dapat digabungkan dengan-e
)Ide dan panjang yang sama:
Anehnya melakukan perhitungan sebenarnya lebih pendek daripada menggunakan rumus langsung (ini
$
benar-benar menyakitkan untuk aritmatika)sumber
C ++,
5451 byte[] (int N, int P) {int F; untuk (F = N; P; F - = ++ N, P -); return F;}Uji:
sumber
f;g(n,p){f=n;while(p--)f-=++n;return f;}
menggunakan algoritme Andaint
Pyke, 6 byte
Coba di sini!
sumber
Brachylog ,
1917 bytePenjelasan
sumber
MATL , 5 byte
Inputnya
P
laluN
.Cobalah di MATL Online!
Penjelasan
sumber
Batch, 30 byte
Mengambil
n
danp
sebagai parameter baris perintah dan mencetak hasilnya tanpa baris baru.sumber
SILOS , 80 byte
Cobalah secara online dengan test case:
2,3
100,5
42,0
0,3
0,0
sumber
R,
1714 byteTerima kasih kepada billywob untuk bermain golf 3 byte. Jawaban sebelumnya:
Perhatikan bahwa 1: 0 meluas ke vektor (1,0) sehingga kita memerlukan kondisi if (P) (atau menggunakan
seq_len
, tetapi itu lebih banyak byte). Tanpa syarat, kita akan mendapatkan output yang salah jika P = 0.Jika P adalah nol, maka penjumlahannya menjadi
sum(N+NULL)
, kemudian kesum(numeric(0))
, yaitu nol.sumber
n-n*p-sum(0:p)
akan lebih pendek lagi :)function(N,P){...}
atauN=scan();P=scan();...
PHP, 33 Bytes
sumber
<?php
atau kependekan<?
dari PHP-Code. Harap edit jawaban Anda.Jelly , 7 byte
Argumen mengujinya
P, N
di TryItOnline
Bagaimana?
sumber
Pyth - 6 byte
Test Suite .
sumber
Keempat, 36 byte
Perhitungan sederhana
n - (p*n + (p^2+p) / 2)
Cobalah online
sumber
Java,
67, 63 byteGolf:
Tidak Disatukan:
Pada dasarnya saya melakukan beberapa matematika pada formula. Bagian
n - p*n
menangani semuan
dalam formula. Kemudian saya menggunakan properti super menyenangkan untuk menjumlahkan secara bersamaan peningkatan himpunan bilangan bulat (seri aritmatika): Saya menggunakan jumlah bilangan bulat pertama dan terakhir dan kemudian mengalikannya denganset.length / 2
(saya juga memeriksa paritas dan menanganinya dengan tepat).Cobalah: https://ideone.com/DEd85A
sumber
int n,int p
untuk menyimpan byte. Anda juga dapat mengubahp%2==0
kep%2<1
untuk menyimpan byte lain. - Saya tidak tahu Anda sudah memposting jawaban Java ketika saya memposting varian pendek saya dengan for-loop . Saya suka rumus matematika Anda, jadi +1 dari saya. :)p%2>0
dan mengubah urutan di ternary Anda dapat menyimpan karakter.p/2 *(p+2)
sama denganp*p/2+p
Java 7,
4340 byteJava 8, 19 byte
Tanpa malu-malu dicuri dari formula Python 2 @JonathanAllan yang menakjubkan .
Jawaban asli (
6160 byte):Kasus yang tidak disatukan & uji:
Coba di sini.
Keluaran:
sumber
int c(int n,int p){...}
. Jika itu adalah Java 8 (atau 9) itu bisa saja(n,p)->n-p*n+p*~p/2
( 19 byte )Fourier , 34 byte
Cobalah online!
sumber
Labirin , 15 byte
atau
Menggunakan solusi bentuk tertutup
n - n*P - P*(P+1)/2
.sumber
php, 38 byte
sumber
Pyth, 11 byte
Fungsi
g
yang mengambil input darin
danp
melalui argumen dan mencetak hasilnya. Itu bisa disebut dalam bentukgn p
.Cobalah online
Bagaimana itu bekerja
sumber
C89,
38,35, 33 byteUji di Coliru .
sumber
Maple, 19 byte
Pemakaian:
sumber
Perl 6 , 21 byte
Penjelasan:
sumber