Autograma.
La forma més habitual és un recompte de les lletres que conté, utilitzant els noms sencers per descriure cada número.
Si es busca recursivament, s'obté bastant ràpidament aquesta, després de gairebé 10000 iteracions (més o menys mig minut):
També és possible trobar aquesta, però requereix milions d'iteracions (uns 20 minuts):
I ja està. Pot semblar una tasca senzilla, però no n'he trobat cap més en català a les xarxes ni he estat capaç de crear-ne cap altre exemple, ni tampoc cap de les variants.
A més, cal esmentar que a part de les possibles formes de descriure la frase, també existeixen altres variants com múltiples frases que es referencien l'una a l'altra, o reflexicons, és a dir, recomptes de lletres però sense una frase inicial. Tampoc se'n coneix cap en català.
Podeu veure més informació i exemples en altres idiomes aquí: Autograms: Self-Enumerating Sentences
Totes les possibles requereixen un temps computacional massa elevat. Si en comptes de buscar-les recursivament es fa de forma exhaustiva tal com descriu breument l'article, el temps computacional és encara molt pitjor.
Convindria buscar alternatives, com adaptar algun codi anglès que ja estigui optimitzat, de forma que funcioni amb frases en català.
Animo a qui vulgui a intentar-ho!
Un autograma és una frase que s'autodescriu. Vegeu-ho a la Viquipèdia: La forma més habitual és un recompte de les lletres que conté, utilitzant els noms sencers per descriure cada número.
Si es busca recursivament, s'obté bastant ràpidament aquesta, després de gairebé 10000 iteracions (més o menys mig minut):
Aquesta frase té cinc As, cinc Cs, tres Ds, quinze Es, dues Fs, nou Is, sis Ns, dues Os, quatre Qs, set Rs, vint-i-set Ss, tretze Ts, vuit Us, tres Vs i tres Zs.
També és possible trobar aquesta, però requereix milions d'iteracions (uns 20 minuts):
Aquesta oració té set As, quatre Cs, quatre Ds, dotze Es, nou Is, quatre Ns, sis Os, cinc Qs, sis Rs, vint-i-sis Ss, dotze Ts, set Us, dues Vs i tres Zs.
I ja està. Pot semblar una tasca senzilla, però no n'he trobat cap més en català a les xarxes ni he estat capaç de crear-ne cap altre exemple, ni tampoc cap de les variants.
A més, cal esmentar que a part de les possibles formes de descriure la frase, també existeixen altres variants com múltiples frases que es referencien l'una a l'altra, o reflexicons, és a dir, recomptes de lletres però sense una frase inicial. Tampoc se'n coneix cap en català.
Podeu veure més informació i exemples en altres idiomes aquí: Autograms: Self-Enumerating Sentences
Totes les possibles requereixen un temps computacional massa elevat. Si en comptes de buscar-les recursivament es fa de forma exhaustiva tal com descriu breument l'article, el temps computacional és encara molt pitjor.
Aclaració sobre la recursivitat :
A cada iteració s'ha de guardar l'estat actual per poder-lo comparar amb els anteriors i truncar el recompte en cas de repetició, per evitar bucles infinits: això implica un cost computacional proper a O(n2), contra un cost de O(n) en cas que això no fos necessari. Dit d'una altra manera, a mesura que necessita més iteracions, aquestes també són cada cop més lentes. El mètode de la recursivitat també té altres desavantatges: Generalment només trobarà un punt estable, és a dir, una possibilitat; si se segueix truncant per evitar repeticions a partir d'allà, no hi ha manera de saber si ja els ha trobat tots i s'executarà ad infinitum.
Per això una altra opció és comprovar cada possible permutació de forma indexada, indicant un mínim i màxim possibles per cada lletra. Això troba totes les possibilitats, però és probable que trigui molt més a trobar-ne cap. El mètode és O(n) però el nombre d'iteracions és molt més alt. Per això, calen mètodes més complexos per optimitzar-ho, reduint significativament aquests rangs.
Per això una altra opció és comprovar cada possible permutació de forma indexada, indicant un mínim i màxim possibles per cada lletra. Això troba totes les possibilitats, però és probable que trigui molt més a trobar-ne cap. El mètode és O(n) però el nombre d'iteracions és molt més alt. Per això, calen mètodes més complexos per optimitzar-ho, reduint significativament aquests rangs.
Convindria buscar alternatives, com adaptar algun codi anglès que ja estigui optimitzat, de forma que funcioni amb frases en català.
Altres idees :
Si interessa intentar trobar només una solució a una possible frase inicial sense importar que te'n puguis deixar en limitar els rangs, hi ha diverses maneres de definir-ho diferent: per exemple es podria fer un híbrid: fer N iteracions recursives i després mirar el màxim i mínim obtingut per cada lletra en aquell interval, i fer una cerca exhaustiva dins d'aquells rangs.
Una altra idea per limitar molt més i de manera diferent els rangs és fent una predicció fent servir la freqüència de les lletres en la frase inicial, cada número i cada lletra escrita, i després pel rang descriure un interval de confiança. (Més sobre això al següent post.)
Una altra idea per limitar molt més i de manera diferent els rangs és fent una predicció fent servir la freqüència de les lletres en la frase inicial, cada número i cada lletra escrita, i després pel rang descriure un interval de confiança. (Més sobre això al següent post.)
Animo a qui vulgui a intentar-ho!