Pertimbangkan susunan bilangan bulat positif:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ...
Kemudian, gabungkan mereka:
1234567891011121314151617181920212223242526...
Dan kemudian membaginya menjadi potongan-potongan panjang variabel, masing-masing panjang sama dengan bilangan bulat positif N :
[1][23][456][7891][01112][131415][1617181][92021222][324252627][2829303132] ...
---------------------------------------------------------------------------
1 2 3 4 5 6 7 8 9 10 ...
Tugas
Diberikan integer N (positif untuk pengindeksan 1 atau non-negatif untuk pengindeksan 0), tugas Anda adalah menampilkan jumlah dari delta digit dalam bungkusan ke- N (perbedaan antara digit berurutan).
Berlaku celah hukum terlarang .
Metode Input dan Output Standar berlaku.
Anda dapat memilih baik 0 atau 1-pengindeksan untuk N .
Urutan harus dimulai dengan 1 .
Ini adalah kode-golf , kode terpendek dalam byte yang menang.
Contoh & Uji kasus
Kasus uji 1-diindeks. Jika Anda ingin yang 0-diindeks, cukup kurangi N.
N, Chunk, Deltas, Sum
1 -> 1 -> [] -> 0
2 -> 23 -> [1] -> 1
3 -> 456 -> [1, 1] -> 2
4 -> 7891 -> [1, 1, -8] -> -6
5 -> 01112 -> [1, 0, 0,1] -> 2
6 -> 131415 -> [2, -2, 3, -3, 4] -> 4
7 -> 1617181 -> [5, -5, 6, -6, 7, -7] -> 0
8 -> 92021222 -> [-7, -2, 2, -1, 1, 0, 0] -> -7
9 -> 324252627 -> [-1, 2, -2, 3, -3, 4, -4, 5] -> 4
10 -> 2829303132 -> [6, -6, 7, -6, -3, 3, -2, 2, -1] -> 0
Teka-teki 2 tentang CodeGolf-Hackathon (saya juga penulis asli di sana, jadi saya diizinkan untuk mengirim ulang). Terkait, Inspirasi . Terkait .
sumber
Jawaban:
JavaScript (ES6),
54535150 byteDisimpan 1 byte berkat @tsh
Diindeks 0.
Uji kasus
Tampilkan cuplikan kode
sumber
k=>-(n=1,g=s=>s[x=k*-~k/2]-s[x+k]-n||g(s+n++))""-n
APL (Dyalog) , 32 byte
Cobalah online!
Bagaimana?
+/⍳⍵
- jumlah dari1
hinggan
⍳
- buat kisaran itu' '~⍨⍕
- ke dalam string, tanpa spasi(+/⍳⍵-1)↓
- drop dulu (jumlah1
ken-1
) karakter⍵↑
- simpann
karakter selanjutnya⍎¨
- membuat setiap char menjadi integer2-⍨/
- daftar perbedaan (pengurangan ke belakang untuk setiap 2 item)+/
- jumlahkan.sumber
Sekam , 9 byte
Cobalah online!
Solusi saya untuk Hackathon.
Penjelasan:
sumber
Haskell ,
6160 byteCobalah online!
Penjelasan:
Jumlah dari delta daftar adalah sama dengan perbedaan antara elemen terakhir dan elemen pertama.
Unsur terakhir (zero-diindeks) adalah
t
,triangle(n)-1 = sum[2..n]
. Elemen pertama, adalaht-n+1
, karena daftar memilikin
elemen.sumber
Python 2 , 80 byte
Cobalah online!
2**n
memang cara yang berlebihan, tentu saja, tapi satu byte lebih pendek dari sesuatu sepertin*n+1
.sumber
Mathematica, 71 byte
Cobalah online!
sumber
JavaScript (ES6),
605753 byte1-diindeks. Versi non-rekursif 60 byte sebelumnya:
sumber
05AB1E , 8 byte
Diindeks 0.
Cobalah online!
sumber
Python 2 , 87 byte
Cobalah online!
sumber
Python 2 , 104 byte
Cobalah online!
sumber
Perl 6 ,
5855 byteMenguji
Menguji
Diperluas:
sumber
PHP ,
163147 byteCobalah online!
Upaya pertama saya di kode golf ... punya perasaan bahwa ini bisa lebih pendek
Sunting: disimpan 16 byte dengan menghapus beberapa instantiations
sumber
Perl 5 , 79 + 1 (
-p
) = 80 byteCobalah online!
sumber
Pyth ,
2927 byteDisimpan 2 byte berkat @ Mr.Xcoder.
Cobalah online!
sumber
Jelly , 14 byte
Cobalah online!
Penjelasan
Saya awalnya mulai dengan mengambil rentang (n (n + 1) / 2) tetapi karena Anda dapat memiliki angka tambahan di akhir daftar sebelum mengirisnya, saya mengubahnya ke kisaran (n ^ 2). Anda memiliki angka tambahan setelah 1-9.
sumber
+²HRDFṫЀ³ḶḣЀRS€‘¤ṪðḣIS
upaya asli (berhasil tetapi panjang)