Membalikkan Delta dari Array
Kelanjutan dari Invers Delta dari sebuah Array
Tugas Anda adalah untuk mengambil array integer 32 bit yang ditandatangani, kompilasi ulang dengan delta yang dibalik.
Contoh
Daftar,
18 19 17 20 16
memiliki delta:
1 -2 3 -4
yang, ketika dibalik, menghasilkan:
-4 3 -2 1
lalu saat dikompilasi ulang, menggunakan hasil:
18 14 17 15 16
yang seharusnya menjadi nilai pengembalian Anda.
Kompilasi ulang terdiri dari mengambil C
, yang merupakan nilai pertama array. Dalam hal ini,,, 18
dan menerapkan delta secara berurutan. Jadi 18 + -4
memberi 14
, 14 + 3
memberi 17
, dan sebagainya.
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 pembalikan delta di atas.
Anda akan menerima input N di 0 < N < 10
mana setiap angka berada dalam kisaran-1000 < X < 1000
Uji Kasus
1 2 3 4 5 -> 1 2 3 4 5
18 19 17 20 16 -> 18 14 17 15 16
5 9 1 3 8 7 8 -> 5 6 5 10 12 4 8
6 5 4 1 2 3 -> 6 7 8 5 4 3
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!
Dan pemenangnya adalah...
Dennis! Yang pertama mengambil tempat pertama, lalu memukul dirinya sendiri dengan solusi yang lebih pendek, memberikan dirinya tempat pertama dan kedua!
Sebutan terhormat untuk ais523 dengan Jelly mereka, bahwa jika bukan karena Dennis masuk tepat sebelum mereka, akan menempati posisi kedua.
Jawaban:
Jelly , 5 byte
Ini menggunakan algoritma dari jawaban Glen O Julia .
Cobalah online!
Bagaimana itu bekerja
sumber
Jelly , 6 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Ṛ
tempat saya milikiU
). Saya tidak tahu apakah itu membuat mereka cukup berbeda untuk tidak mempertimbangkan duplikat.U
vectorizes sementaraṚ
tidak, tetapi perilaku mereka untuk array datar adalah identik.Ḣ
0x1e22 danṚ
0x1e5a, yang masing-masing memerlukan 3 byte.Julia, 24 byte
Ini adalah cara "pintar" untuk menyelesaikan masalah. Pembalikan negatif dari array memiliki "delta" terbalik, dan kemudian Anda hanya perlu memperbaiki fakta bahwa ia mulai / berakhir di tempat yang salah.
sumber
Snowman 1.0.2, 72 byte
Cobalah online!
Ini adalah subrutin yang mengambil input dari dan output ke permavar saat ini.
sumber
JavaScript (ES6),
4537 bytePort of @ JHM's Mathematica menjawab. (Saya yakin saya bisa membuatnya sendiri, tetapi tidak pada waktu malam ini.) Edit: Disimpan 8 byte berkat @ edc65.
sumber
[...
dan]
?a
, yang digunakan kemudian dalam programa=>a.reverse(z=a[0]).map(e=>z+a[0]-e)
z=a[0]
, tapi saya lupa untuk menghapus[...]
dan(,i,b)
.Mathematica, 23 byte
Fungsi yang tidak disebutkan namanya. Hasilnya sederhana: membalikkan ((elemen pertama) + (elemen terakhir) - (setiap elemen)).
sumber
Python 2,
96745444 byteInput diberikan sebagai array yang dikelilingi oleh tanda kurung siku. Output dalam format yang sama.
Terima kasih kepada @Kade untuk menghemat
2242 byte dengan menggunakan metode yang jauh lebih sederhana daripada apa pun yang saya lakukan sebelumnya!Terima kasih kepada @ Sherlock9 untuk menghemat 10 byte dengan menghilangkan penghitung indeks dari pemahaman daftar!
Hebat, sekarang jika saya bermain golf lagi saya akan mendapatkan masalah "dicoret 44 masih 44". ; _;
sumber
lambda l:[l[0]+l[-1]-l[i]for i in range(len(l))][::-1]
54 byte? :) (Kredit ke Glen O. untuk perhitungan)l[i]for i in range(len(l))
, Anda dapat menggunakanj for j in l
untuk menyimpan 14 byte.05AB1E , 8 byte
Cobalah online!
Terjemahan jawaban MATL saya, pendekatan kedua.
sumber
¬s¥Rvy)}
R,
3730 byteSunting: Sekarang menggunakan pendekatan dalam jawaban Julia O Glen
Tua:
Membaca input, menghitung delta, menyatukan dengan elemen pertama dan menghitung jumlah kumulatif.
sumber
MATL , 8 byte
Cobalah online!
Ini adalah aplikasi langsung dari definisi tersebut. Pertimbangkan input
[18 19 17 20 16]
sebagai contoh.Pendekatan berbeda, jumlah byte yang sama:
Coba saja!
Array terbalik dan dinegasi ditambah entri pertama dan terakhir dari array asli.
sumber
Japt, 8 byte
Jalankan secara online
sumber
Pyth - 10 byte
Test Suite .
sumber
아희 (Aheui) , 3 * 21 karakter + 2 "\ n" = 65 byte
Mengasumsikan input dalam tumpukan 아. Keluaran akan disimpan dalam tumpukan 안.
Jika Anda ingin mencoba kode ini:
Di akhir baris pertama kode ini, tambahkan
벙
panjang karakter (n) -kali (yaitu jika inputnya 7 bilangan bulat, masukkan 7 kali). Untuk setiap prompt, ketik satu bilangan bulat:Coba di sini! (salin dan tempel kode)
Contoh
Untuk
1, 2, 3, 4, 5
:dan kemudian ketik
1
,2
,3
,4
, dan5
(akan ada 5 petunjuknya).Versi Alternatif (65 byte)
sumber
65 bytes in UTF-8
atau sesuatu?C # 42 byte
Mengambil
int[]
dan mengembalikan sebuahIEnumerable<int>
.(Ini sebenarnya hanya versi porting dari versi JHM ..)
sumber
TSQL, 200 byte
Variabel tabel digunakan sebagai input
Cobalah
sumber
PHP,
605652 byte-4 byte terima kasih ke @ user59178
beroperasi pada argumen baris perintah, menggunakan garis bawah sebagai pemisah. Jalankan dengan
php -r '<code>' <space separated numbers>
sumber
$n
sebagai variabel kontrol? Saya mencoba versi seperti itu dan itu 4 byte lebih pendek dan sepertinya berhasil.Perl 6 ,
48 3330 byteCobalah
Diperluas:
Ini
*-1
juga merupakan ekspresi lambda dari jenis Apapun, yang*
merupakan satu-satunya parameter posisi.sumber
[\+]
dari contoh pertama, adalah segitiga mengurangi[\+] 3,-1,1,-5
→(3,2,3,-2)
dan[\,] 3,-1,1,-5
→((3,), (3,-1), (3,-1,1), (3,-1,1,-5))
Julia 0,4 , 32 byte
Cobalah online!
sumber
BASH, 71 byte
sumber
C ++ 14, 103 byte
Sebagai lambda tidak disebutkan namanya, yang membutuhkan input untuk memiliki
rbegin
,rend
,back
danpush_back
seperti kontainervector
,deque
ataulist
.Menggunakan pendekatan dari jawaban Glen O Julia
Tidak digabungkan dan digunakan:
sumber
Haskell, 33 byte
Menggunakan logika yang sama dengan JHM:
Cukup mudah dibaca juga.
sumber
(!!0)
untukhead
dan menggunakan(<$>)
untukmap
: Cobalah online!Cembung , 10 byte
Cobalah online!
sumber
Clojure, 101 byte
Cukup banyak mengikuti deskripsi:
sumber
Java 7, 96 byte
Penjelasan:
Kode uji:
Coba di sini.
Keluaran:
sumber
APL (Dyalog Unicode) , 11 byte SBCS
Fungsi awalan diam-diam anonim.
Cobalah online!
+\
jumlah kumulatif⊃
elemen pertama dari argumen,
diikuti∘
oleh⌽
pembalikan2-⍨/
perbedaan berpasangan dari⊢
argumensumber