Mari kita mendefinisikan fungsi pada bilangan , ditulis sebagai basis 10 digit , sebagai berikut:
Selama ada angka yang berdekatan yang sama , ganti dengan jumlah mereka dari kiri ke kanan. Jika ada angka seperti itu, ulangi prosedur yang sama.
Dengan kata lain, dalam setiap iterasi kami dengan rakus mengambil semua pasangan angka yang berdekatan yang sama dan menggantinya dengan jumlah mereka pada saat yang sama (menggunakan pasangan paling kiri jika tumpang tindih).
Contoh
Mari kita ambil misalnya:
- Digit berdekatan pertama yang sama adalah dua
- Jadi kita menggantinya dengan yang memberi kita
- Karena kita masih berada di traversal kiri-kanan pertama dan masih ada dua s kita harus terlebih dahulu menggantinya
- Jadi kami mendapatkan
- Sesuatu berubah, jadi kita perlu melakukan iterasi lain
- Tetapi tidak ada angka seperti itu, jadi kami berhenti
Oleh karena itu angka dalam urutan itu adalah .
Tantangan
200 istilah pertama adalah:
0,1,2,3,4,5,6,7,8,9,10,2,12,13,14,15,16,17,18,19,20,21,4,23,24,25,26,27,28,29,30,31,32,6,34,35,36,37,38,39,40,41,42,43,8,45,46,47,48,49,50,51,52,53,54,10,56,57,58,59,60,61,62,63,64,65,12,67,68,69,70,71,72,73,74,75,76,14,78,79,80,81,82,83,84,85,86,87,16,89,90,91,92,93,94,95,96,97,98,18,10,101,102,103,104,105,106,107,108,109,20,21,4,23,24,25,26,27,28,29,120,121,14,123,124,125,126,127,128,129,130,131,132,16,134,135,136,137,138,139,140,141,142,143,18,145,146,147,148,149,150,151,152,153,154,20,156,157,158,159,160,161,162,163,164,165,4,167,168,169,170,171,172,173,174,175,176,24,178,179,180,181,182,183,184,185,186,187,26,189,190,191,192,193,194,195,196,197,198,28
Tugas Anda adalah untuk menghasilkan urutan itu, baik
- diberikan , kembalikan nomor dalam urutan itu,
- diberikan , kembalikan nomor pertama dalam urutan itu
- atau menghasilkan urutan tanpa batas.
Anda dapat memilih kiriman Anda untuk menggunakan indeks - atau , tetapi harap tentukan yang mana.
Uji kasus
Anda dapat menggunakan ketentuan yang diberikan di atas, namun berikut adalah beberapa yang lebih besar:
222 -> 42
1633 -> 4
4488 -> 816
15519 -> 2019
19988 -> 2816
99999 -> 18189
119988 -> 21816
100001 -> 101
999999 -> 181818
Python 2 ,
979693 byteCobalah online!
Versi non regex:
Python 2 ,
133130122 12211298 byteCobalah online!
sumber
Jelly , 11 byte
Ini adalah program lengkap yang tidak perlu, lambat.
Cobalah online!
Versi alternatif, 12 byte
Satu byte lebih lama, tetapi jauh lebih cepat. Berfungsi sebagai program atau fungsi.
Cobalah online!
Bagaimana itu bekerja
Versi 11-byte melakukan hal yang sama, kecuali memanggil tautan n kali untuk input n , alih-alih memanggilnya sampai titik tetap tercapai.
sumber
Haskell, 70 byte
Input diambil sebagai string.
Cobalah online!
sumber
|x<-b:c=a:f x
atau bahkanf(a:c)=a:f c
, jika satu atau yang lain benar-benar dapat mengarah pada peningkatan :)JavaScript,
484746 byteInput dan output sebagai string. Mengembalikan
nth
istilah urutan.Cobalah online
sumber
x[0]*2
->x/5.5
Perl 6 , 37 byte
Cobalah online!
Ini adalah fungsi yang menghasilkan istilah ke-n dari urutan, diberikan n sebagai argumennya.
($_, { ... } ... * == *)
adalah urutan perubahan berurutan ke nomor input, yang dihasilkan oleh ekspresi kurung (substitusi regex sederhana) dan berhenti ketika* == *
, yaitu, ketika dua angka terakhir dalam urutan sama. Kemudian[*-1]
hanya mengambil elemen terakhir dari urutan itu sebagai nilai kembali.sumber
==*
dan mengganti*-1
dengan$_
, karena selalu ada kurang darin
penggantian untuk suatu angkan
. 33 byteRetina , 16 byte
Cobalah online! Tautan termasuk kasus uji. Penjelasan:
Ulangi sampai input berhenti berubah.
Ganti pasangan digit yang berdekatan ...
... dengan dua kali digit. (
$1*
Menghasilkan string$1
_
s,2*
duplikat itu, dan$.(
membutuhkan waktu lama. Sebenarnya, mesin Retina lebih pintar dari itu dan hanya berlipat ganda$1
.)sumber
C # (.NET Core) ,
231,203,200,196, 192 byteEDIT: Fungsi sekarang pada 185 byte plus 18 untuk
using System.Linq;
Terima kasih kepada BMO (untuk 1> 0 sama dengan penghapusan true plus newline) dan Mr. XCoder (untuk pernyataan f =! F)!
EDIT2: Turun ke 182 byte plus 18 untuk
using System.Linq
terima kasih atas dana karena berbagi beberapa tips golf!EDIT3: Terima kasih kepada Perwujudan Ketidaktahuan untuk int [] -> var, penghapusan korsleting && -> &, dan mengubah ToArray -> ToList! (178 byte + 18 menggunakan)
EDIT4: Perwujudan Ketidaktahuan turun 4 byte dengan mengubah tugas. Dummy saya harus dihitung! Terima kasih lagi: D
Cobalah online!
sumber
Perl 5
-p
, 21 byteCobalah online!
sumber
Japt v2.0a0
-h
,1514 byteMengembalikan
nth
istilah urutan.Cobalah
Ini harus bekerja selama 10 byte tetapi tampaknya ada bug dalam metode penggantian rekursif Japt.
sumber
Groovy , 63 byte
Cobalah online!
sumber
05AB1E , 11 byte
Cobalah online atau verifikasi semua kasus uji .
Penjelasan:
sumber
Bahasa Wolfram 108 byte
Penjelasan
IntegerDigits
mengubah nomor input menjadi daftar digitnya.Split
kelompok digit berulang berurutan.Partition[#, UpTo@2]&/@
memecah run dari digit seperti ke dalam daftar, paling banyak, panjang 2.Flatten[...,1]
menghilangkan kawat gigi yang terlalu sering tersarang - misalnya, {{2,2}} menjadi {2,2}Total/@
menjumlahkan total angka pasangan. Digit yang terisolasi tidak perlu dijumlahkan.ToString
mengubah total (dan angka yang terisolasi) menjadi string.""<>
bergabung dengan semua string dalam daftar.ToExpression
mengubah hasilnya menjadi bilangan bulat....~FixedPoint~#&
menerapkan fungsi sampai hasilnya berhenti berubah.sumber
C # (Visual C # Interactive Compiler) dengan flag
/u:System.Text.RegularExpressions.Regex
, 70 byteKeluaran dengan memodifikasi input. Mengambil dalam daftar yang berisi satu string untuk input.
Terima kasih kepada @dana untuk bermain golf sepanjang 23 byte!
Cobalah online!
sumber
Bersih , 118 byte
Cobalah online!
Mengambil nilai berulang pertama (
limit
) dari daftar aplikasi (iterate
) tak terbatas dari lambda yang melakukan satu langkah tunggal proses runtuh. Input diambil sebagai a[Char]
.sumber
Merah ,
848380 byteCobalah online!
Mengembalikan
nth
istilah urutan.Penjelasan:
sumber
Scala , 84 byte
Cobalah online!
sumber
C # (Visual C # Interactive Compiler) , 111 byte
Cobalah online!
Kredit besar untuk @ ASCIIHanya untuk golf ~ 30;) Awalnya kami berdua memposting pembaruan secara bersamaan, tetapi pada beberapa titik ia jelas pergi ke kota!
-2 Terima kasih kepada @EmbodimentOfIgnorance!
Lebih sedikit kode golf ...
sumber
(s[i++]-48)*2
=>s[i++]*2-96