Jumlah maksimum substring yang berbeda

9

Deskripsi

Dengan panjang n, dan ukuran alfabet k>0, program Anda harus menentukan jumlah string dengan parameter yang memiliki jumlah maksimum substring unik. Dalam kasus k=2, ini menghasilkan OEIS A134457 .

Contoh

Misalnya, 2210memiliki substring , 2, 22, 221, 2210, 2, 21, 210, 1, 10, dan 0, untuk total 11. Namun, 2muncul dua kali, sehingga hanya memiliki 10 substring yang unik.

Hal ini sebanyak mungkin untuk panjang 4 string yang berisi 3 simbol yang berbeda, tetapi ikatan dengan 35 string lain untuk total 36 string tieing termasuk 0012, 2101, dan 0121. Karena itu, untuk n=4dan k=3, program Anda harus menampilkan 36.

Uji Kasus

n    k    output

0    5    1
1    3    3
5    1    1
9    2    40
2    3    6
5    5    120
pengguna1502040
sumber
3
Bisakah Anda memberikan beberapa contoh? Agak sulit untuk mengikuti tantangan dari deskripsi yang sangat singkat itu.
ETHproduksi
Jadi bukan n=2, k=3output 9 11,12,21,22,31,32,33,13,23:?
veganaiZe
@ veganaiZe Digit ganda memiliki substring berulang.
user1502040

Jawaban:

2

Jelly , 9 byte

ṗµẆQLµ€ML

Cobalah online!

Input dalam urutan terbalik. Kasar.

Biarawati Bocor
sumber
Simpan byte dengan menghindari rantai tiga atom dengan transpos dan ekor:ṗẆQ$€ZṪL
Jonathan Allan
3

Pyth, 12 byte

l.Ml{.:Z)^UE

Cobalah online.

Kekuatan kasar murni.

Penjelasan

  • Tersirat: tambahkan Qke program.
  • Tersirat: membaca dan mengevaluasi jalur input ( n) di Q.
  • E: membaca dan mengevaluasi jalur input ( k).
  • U: dapatkan rentang [0, ..., k-1].
  • ^: dapatkan semua npanjang string [0, ..., k-1].
  • .M: temukan yang memberikan fungsi maksimum f(Z):
    • .:Z: temukan substring dari Z
    • {: hapus duplikat
    • l: dapatkan jumlah substring unik
  • l: dapatkan jumlah string seperti itu
PurkkaKoodari
sumber
2

Mathematica, 96 byte

Last[Last/@Tally[Length@Union@Flatten[Table[Partition[#,i,1],{i,s}],1]&/@Tuples[Range@#2,s=#]]]&
J42161217
sumber
2

Haskell, 82 byte

import Data.Lists
l=length
n#k=l$argmaxes(l.nub.powerslice)$mapM id$[1..k]<$[1..n]

Contoh penggunaan: 9 # 2-> 40.

Bagaimana itu bekerja:

       [1..k]<$[1..n]  --  make a list of n copies of the list [1..k]
      mapM id          --  make a list of all combinations thereof, where
                       --  the 1st element is from the f1st list, 2nd from 2nd etc
  argmaxes             --  find all elements which give the maximum value for function:
     l.nub.powerslice  --    length of the list of unique sublists
l                      --  take the length of this list
nimi
sumber