Numero massimo di sottostringhe distinte


9

Descrizione

Data una lunghezza ne una dimensione dell'alfabeto k>0, il programma deve determinare il numero di stringhe con quei parametri che hanno un numero massimo di sottostringhe univoche. In caso dik=2 , questo genera OEIS A134457 .

Esempio

Ad esempio, 2210ha la sottostringhe , 2, 22, 221, 2210, 2, 21, 210, 1, 10, e0 , per un totale di 11. Tuttavia, 2appare due volte, quindi ha solo 10 sottostringhe unici.

Questo è il maggior numero possibile di 4 corde lunghezza contenente 3 simboli diversi, ma si lega con 35 altre stringhe per un totale di 36 corde tieing compresi 0012, 2101e 0121. Pertanto, per n=4e k=3, il programma dovrebbe generare 36.

Casi test

n    k    output

0    5    1
1    3    3
5    1    1
9    2    40
2    3    6
5    5    120

3
Potresti per favore fare qualche esempio? È un po 'difficile seguire la sfida da quella breve descrizione.
ETHproductions

Quindi no n=2, k=3output 9 11,12,21,22,31,32,33,13,23:?
veganaiZe

@veganaiZe Le doppie cifre hanno una sottostringa ripetuta.
user1502040

Risposte:



3

Pyth, 12 byte

l.Ml{.:Z)^UE

Provalo online.

Pura forza bruta.

Spiegazione

  • Implicito: aggiungere Qal programma.
  • Implicito: leggere e valutare una riga di input ( n) in Q.
  • E: leggi e valuta una riga di input (k ).
  • U: ottieni un intervallo [0, ..., k-1] .
  • ^: ottiene tutte le nstringhe di lunghezza[0, ..., k-1] .
  • .M: trova quelli che danno il massimo per la funzione f(Z) :
    • .:Z: trova le sottostringhe di Z
    • {: rimuove i duplicati
    • l: ottiene il numero di sottostringhe univoche
  • l: ottieni il numero di tali stringhe

2

Mathematica, 96 byte

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

2

Haskell, 82 byte

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

Esempio di utilizzo: 9 # 2-> 40.

Come funziona:

       [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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.