*La stringa è costruita per passi, “prendendo” ad ogni passo una stringa da “v”.
*Il numero totale di passi sarà pari a “k”.
*Al primo “passo” si seleziona da v la stringa in prima posizione (posizione “zero”).
*Ad ogni passo successivo al primo, si seleziona da “v” la stringa presente “k” posizioni in avanti rispetto alla stringa selezionata al passo precedente. Si noti che “v” deve essere considerata come “circolare”, ovvero l’ultima posizione ha come posizione successiva la prima."
Io avrei risolto così:
- Codice:
def stringa (v, k):
ris=''
mat=[]
cont= 0
for i in range (k*k):
for j in v:
mat.append (j)
for i in range (len (mat)):
if i%k==0:
ris+= mat[i]
cont+=1
if cont==k:
return ris
Questo metodo funziona, solo che impiega un numero, maggiore di k*k, di passi, che per k che cresce diventa piuttosto grande, e mi stavo chiedendo se esiste un metodo più diretto e meno "costoso" (non so se il termine è corretto), per esempio attraverso qualche generalizzazione per quanto riguarda gli indici della lista v.