Tampaknya setiap Modifikasi Sederhana dari delta menggunakan fungsi yang konsisten hampir selalu dapat dilakukan dengan cara lain yang lebih singkat , Dennis . Dengan demikian, satu-satunya solusi yang dapat saya bayangkan untuk membuat ini lebih sulit, adalah dengan memperkenalkan semacam fungsi yang tidak konsisten.
Penyortiran.
Tugas Anda adalah mengambil array bilangan bulat, mengurutkan delta-delta mereka, dan mengkompilasi ulangnya untuk memberikan array bilangan bulat baru.
MISALNYA.
Untuk input:
1 5 -3 2 9
Dapatkan Delta berikut:
4 -8 5 7
Kemudian, urutkan Delta ini, Menghasilkan:
-8 4 5 7
Dan aplikasikan kembali, yang memberi:
1 -7 -3 2 9
Input output
Anda akan diberikan daftar / array / tabel / tuple / stack / dll. bilangan bulat yang ditandatangani sebagai input melalui metode input standar apa pun.
Anda harus mengeluarkan data yang dimodifikasi sekali lagi dalam bentuk apa pun yang dapat diterima, mengikuti metode pengurutan delta di atas.
Anda akan menerima input N di 0 < N < 10
mana setiap angka berada dalam kisaran-1000 < X < 1000
Uji Kasus
1 5 -3 2 9 -> 1 -7 -3 2 9
-5 -1 -6 5 8 -> -5 -10 -7 -3 8
-8 1 -7 1 1 -> -8 -16 -16 -8 1
8 -9 3 0 -2 -> 8 -9 -12 -14 -2
-5 -2 -5 5 0 -> -5 -10 -13 -10 0
-1 9 -1 -7 9 -> -1 -11 -17 -7 9
Catatan
- Seperti yang dinyatakan di atas, Anda akan selalu menerima setidaknya 1 input, dan tidak lebih dari 9.
- Angka pertama dan terakhir dari output Anda, akan selalu cocok dengan input.
- Hanya Output Input Standar yang diterima
- Celah standar berlaku
- Ini adalah kode-golf , jadi byte-count terendah menang!
- Selamat bersenang-senang!
Jawaban:
Jelly , 7 byte
Cobalah online!
Bagaimana itu bekerja
sumber
MATL , 8 byte
Cobalah online!
sumber
Mathematica, 40 byte
Fungsi murni mengambil daftar (anythings) sebagai input dan mengembalikan daftar.
FoldList[Plus
dimulai dengan angka (dalam hal ini,,#&@@#
elemen pertama dari input) dan berulang kali menambahkan elemen dari daftar penjelasan sendiriSort@Differences@#
. Ini meniru perilaku built-inAccumulate
, tetapi angka pertama harus ditambahkan ke daftar perbedaan dengan tangan, yang membuat byte-count lebih tinggi (sejauh yang saya tahu).sumber
05AB1E , 9 byte
-4 Terima kasih kepada Emigna
Cobalah online!
sumber
¬=s¥{vy+=
Python 2, 92 byte
sumber
Haskell, 59 Bytes
Kerusakan:
sumber
scanl(+)a$sort...
JavaScript (ES6), 68 byte
Dalam JavaScript ternyata menjadi pemain golf untuk menghitung Delta Inverse dari sebuah array . Ini kemudian disortir dalam urutan menurun dan secara kumulatif dikurangi dari elemen pertama.
sumber
Python 2 ,
90 byte84 byte
Disimpan 6 byte menggunakan lambda. Terima kasih untuk ovs!
Cobalah online!
Memecah kode,
Selamat Coding!
sumber
lambda x:[sum(sorted(map(int.__sub__,x[1:],x[:-1]))[:i])+x[0]for i in range(len(x))]
JavaScript (ES6), 93 byte
sumber
Python 2 , 97 byte
Cobalah online!
sumber
[p[i+1]-p[i]for i in range(len(p)-1)]
Pyth, 11 byte
Ini hanya melakukan hal yang jelas dijelaskan dalam pernyataan.
Cobalah secara Online
Saran untuk sambutan golf lebih lanjut.
sumber
Julia 0,5 , 30 byte
Cobalah online!
sumber
PHP, 89 byte
Jalankan seperti ini:
Penjelasan
sumber
Python 2 dengan numpy,
6756 byteBiarkan numpy menghitung delta, mengurutkannya, menambahkan elemen pertama, dan biarkan numpy menghitung jumlah kumulatif. Cukup murah?
sumber
from numpy import*
dann.cumsum
kecumsum
dann.diff
kediff
Perl 6 , 31 byte
Cobalah
Diperluas:
sumber
Batch, 197 byte
sort
tidak mengurutkan secara numerik, jadi saya bias semua perbedaan dengan 5.000.sumber
bash + sort, 102 byte
sh + sort + expr, 106 bytes
sumber
Clojure, 46 byte
Suatu hari saya akan membuat bahasa Cljr yang memiliki nama fungsi lebih pendek dari Clojure.
sumber