Chi non sapesse come si scrive un algoritmo in PHP e nulla di sintassi delle query SQL, potrebbe trovare qualche difficoltà a decodificare quanto segue; si tratta infatti della prosecuzione ed espansione di CADENS, utilizzando strumenti che consentano la gestione di un maggior numero di endecasillabi; usando quindi una banca dati costituita da un database MySQL (si dovrebbe pronunciare
maisìquel) e un linguaggio di programmazione che sarebbe il PHP (si dovrebbe pronunciare pieic'pì, con la c dolce, oppure starnutire che è la stessa cosa).
Il nome - provvisorio - potrebbe essere
ARIOSTO: Automatica Riconnessione In Ottave STOcasticheL'idea sarebbe di accumulare un milioncino di endecasillabi in una tabella MySql, con indice costituito dall'ultima parola di ogni verso rovesciata, in modo da avere un ordinamento per rima.
Al momento ho i 38.000 endecasillabi dell'Orlando Furioso per i test, ma si fa presto a incrementarlo.
La tabella ha queste caratteristiche:
upr varchar(26) (ultima parola del verso, rovesciata e riempita fino a 26 caratteri con spazi)
verso varchar (60)
id (numero autoincrementante univoco)Esempio:
CODICE
---------------------------------------------------------------------------------------------------
abmobmir grande è 'l rumore, e fin al ciel rimbomba. 31596
abmoloc secondo che sarà corvo o colomba. 11339
abmort sin ch'oda il suon de l'angelica tromba 11337
abmort nel mover loro al primo suon di tromba. 24925
abmort altri a suon di tamburo, altri di tromba: 31595
abmot udir potrai da la marmorea tomba, 11341
abre pascano o stiansi rominando l'erba; 13357
abre Erifilla giacea tra' fiori e l'erba. 13883
abre gli saria stato o tronco o svelto in erba. 14158
abre Legar lo fanno, e non tra' fiori e l'erba, 23390
abre Afflitto e stanco al fin cade ne l'erba, 28613
abre e vede Brigliador pascer per l'erba, 29043
abre quando di ber più desïosa è l'erba, 36470
abre quel che fa con la falce il villan d'erba. 40194
abreca senza pigliarne altra vendetta acerba. 13885
abreca al cui saggio parere, o lieve o acerba, 23394
abreca Di crescer non cessò la pena acerba, 28617
abrecasid non si sfoga il fellon né disacerba, 40190
abrepus e cervi con la fronte alta e superba, 13355
abrepus venía a levarne la testa superba: 13881
abrepus così, poi che difesa sì superba 36474
abres che tiepida aura freschi ognora serba, 13353
abres che tra' l'uom del sepulcro e in vita il serba, 14157
abres Senza cibo e dormir così si serba, 28615
abres che dall'arcion pendente il freno serba. 29044
abres di tutto quell'umor ch'in vita il serba, 36472
abresir Orrigille captiva si riserba 23392
abresir né più l'una de l'altra ci riserba; 40192
Preso un endecasillabo a caso, dobbiamo determinare qual è la rima migliore disponibile per la parola finale del verso, che chiameremo A.
L'algoritmo dovrebbe avere le seguenti caratteristiche:
- scartare tutti i versi che finiscono con la stessa parola A
- esplorare la tabella "attorno" al verso scelto e scegliere il verso più vicino (nell'indice) che abbia un numero di lettere il più possibile uguali al verso scelto
- se A è una parola di 4 o più lettere, scartare anche i versi con terminano con parole che contengono *completamente* la parola Al'algoritmo dovrebbe essere in PHP, avere come input l'identificativo univoco di un verso ($id) e la parola A ($A) e restituire altri due versi con la miglior rima possibile, in due variabil ($verso1, $verso2).
Meglio ancora, gestire come parametro il numero di versi in rima richiesti.
Anche qualche suggerimento, non necessariamente tecnico, per migliorare la qualità della rima, sarebbe gradito; e pure eventuali cazzeggiamenti e prese per il culo per i tecnicismi che infarciscono il post...