ottobit |
|
| CODICE ; Nei componimenti poetici in 'Terza Rima' è riconoscibile una struttura ; matematica precisa. ; Preso un qualsiasi canto della Divina Commedia, è possibile associare ; alla rima di ciascun verso un numero intero nel seguente modo: ; ; * Se le ultime tre lettere dell'ultima parola del verso sono ripetute ; in altri versi, allora si associa a questi versi uno stesso numero; ; ; * Se nel verso seguente è presente una nuova terna di lettere, allora ; si associa un nuovo numero ottenuto incrementando di un'unità il ; numero assegnato precedentemente. ; ; NEL MEZZO DEL CAMMIN DI NOSTRA VITA 1 ; MI RITROVAI PER UNA SELVA OSCURA 2 ; CHE LA DIRITTA VIA ERA SMARRITA 1 ; ; AHI QUANTO A DIR QUAL ERA E' COSA DURA 2 ; ESTA SELVA SELVAGGIA E ASPRA E FORTE 3 ; CHE NEL PENSIER RINNOVA LA PAURA 2 ; ; TANT' E' AMARA CHE POCO E' PIU' MORTE 3 ; MA PER TRATTAR DEL BEN CH'I' VI TROVAI 4 ; DIRO' DE L'ALTRE COSE CH'I' V'HO SCORTE 3 ; ; IO NON SO BEN RIDIR COM'I' V'ENTRAI 4 ; TANT'ERA PIEN DI SONNO A QUEL PUNTO 5 ; CHE LA VERACE VIA ABBANDONAI 4 ; ; Si noti che ad eccezione del primo verso (la cui rima è presente solo ; due volte), ogni rima si presenta tre volte ed il numero ad essa as- ; sociato si alterna una volta con il numero precedente e una volta col ; numero successivo. ; ; Pertanto è possibile determinare un algoritmo che rappresenti la co- ; struzione metrica dei versi... ;
Dim $verso[12] $verso[0]="Nel mezzo del cammin di nostra vita" $verso[1]="mi ritrovai per una selva oscura" $verso[2]="che la diritta via era smarrita" $verso[3]="Ahi quanto a dir qual era è cosa dura" $verso[4]="esta selva selvaggia e aspra e forte" $verso[5]="che nel pensier rinnova la paura" $verso[6]="Tant'è amara che poco è più morte" $verso[7]="ma per trattar del ben ch'i vi trovai" $verso[8]="dirò de l'altre cose ch'i v'ho scorte" $verso[9]="Io non so ben ridir com'i v'entrai" $verso[10]="tant'era pien di sonno a quel punto" $verso[11]="che la verace via abbandonai"
For $a = 0 To UBound($verso)-1 MsgBox(0, "", $verso[$a]) ; visualizza uno per uno gli elementi (le righe) $separa = StringSplit($verso[$a], " ") MsgBox(0, "", $separa[$separa[0]]) ; visualizza l'ultima parola di ciascuna riga $des = StringRight($separa[$separa[0]], 3) MsgBox(0, "", $des) ; visualizza le ultime 3 lettere di ciascuna ultima parola Next
#cs For $i = 0 To UBound($verso)-1 If StringInStr($verso[$i], StringRight($verso[0], 3)) Then $n = 1 MsgBox(0, "", StringRight($verso[$i], 3) & " = " & $n) Else $n = $n + 1 MsgBox(0, "", StringRight($verso[$i], 3) & " = " & $n) EndIf Next
#ce Non riesco ad andare oltre... Un aiutino?
|
| |