Ini adalah tindak lanjut ke Count array yang membuat set unik . Perbedaan yang signifikan adalah definisi keunikan.
Pertimbangkan Apanjang array n. Array hanya berisi bilangan bulat positif. Sebagai contoh A = (1,1,2,2). Mari kita definisikan f(A)sebagai himpunan jumlah semua sub-susunan berdekatan yang tidak kosong A. Dalam hal ini f(A) = {1,2,3,4,5,6}. Langkah-langkah untuk menghasilkan f(A) adalah sebagai berikut:
Subarrays dari Aadalah (1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2). Jumlah masing-masing adalah 1,1,2,2,2,3,4,4,5,6. Karenanya, set yang Anda dapatkan dari daftar ini {1,2,3,4,5,6}.
Kami memanggil array A unik jika tidak ada array lain Bdengan panjang yang sama sehingga f(A) = f(B), kecuali untuk array Aterbalik. Sebagai contoh, f((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}tetapi tidak ada array panjang 3yang menghasilkan jumlah penjumlahan yang sama.
Tugas
Tugas, untuk yang diberikan ndan suntuk menghitung jumlah array unik dengan panjang itu. Anda dapat berasumsi bahwa itu sadalah antara 1dan 9. Anda hanya perlu menghitung array di mana elemen-elemennya adalah bilangan bulat yang diberikan satau s+1. Misal jika s=1array yang Anda hitung hanya berisi 1dan 2. Namun, definisi keunikan adalah sehubungan dengan array lain dengan panjang yang sama. Sebagai contoh konkret [1, 2, 2, 2]adalah tidak unik karena memberikan set yang sama jumlah sebagai [1, 1, 2, 3].
Anda harus menghitung kebalikan dari array serta array itu sendiri (selama array bukan palindrome tentu saja).
Contohnya
s = 1, jawaban untuk n = 2,3,4,5,6,7,8,9 adalah:
4, 3, 3, 4, 4, 5, 5, 6
Sebab s = 1, susunan unik panjang 4 adalah
(1, 1, 1, 1)
(2, 1, 1, 2)
(2, 2, 2, 2)
s = 2, jawaban untuk n = 2,3,4,5,6,7,8,9 adalah:
4, 8, 16, 32, 46, 69, 121, 177
Contoh array yang tidak unik s = 2adalah:
(3, 2, 2, 3, 3, 3).
Ini memiliki jumlah penjumlahan yang sama dengan: (3, 2, 2, 2, 4, 3)dan (3, 2, 2, 4, 2, 3).
s = 8, jawaban untuk n = 2,3,4,5,6,7,8,9 adalah:
4, 8, 16, 32, 64, 120, 244, 472
Skor
Untuk yang diberikan n, kode Anda harus menampilkan jawaban untuk semua nilai smulai dari 1hingga 9. Skor Anda adalah nilai tertinggi nyang menyelesaikannya dalam satu menit.
Pengujian
Saya perlu menjalankan kode Anda di mesin ubuntu saya, jadi harap sertakan instruksi sedetail mungkin untuk cara mengkompilasi dan menjalankan kode Anda.
Papan peringkat
- n = 13 oleh Christian Sievers di Haskell (42 detik)
s? Apa yang diwakilinya?