barvins
barvins 2009-04-07 14:07

Palindromi

"seimā jokojāmies" ir palindroms, t.i., no abām pusēm lasāms vienādi. Reku vēl: http://www.creativity.lv/share/palindromi.txt

P.S. Parēķināju, ka, lai sameklētu visus iespējamos palindromus ar trīs vārdiem, manam datoram būtu nepārtraukti jādarboas 350 gadus. Ja saņemšos, uztaisīšu kaut ko līdzīgu folding@home, lai tie, kam ir vēlme piedalīties, varētu atvēlēt savu datoru brīvos resursus palindromu meklēšanai - ķipa skrīnseiveris, kas pamazām kombinē kopā vārdus no vārdnīcas meklējot palindromus un ik pa laikam nosūta rezultātus uz serveri vispārējai apbrīnošanai.
barvins
barvins 2009-04-07 19:10

Virsraksts nolaizīts

Tas ir brute-force, jā - db serveris tāpat ir spiests salīdzināt visas iespējamās kombenes. Bet cerīgi ir tas, ka izskatās, ka trīsvārdīgo palindromu patiešām ir daudz.
By the way, kāpēc tu pārbaudi, vai tie vārdi nesakrīt? Tādā veidā izslēdz, piemēram, "aka aka aka", kas ir visnotaļ valīds palindroms.
Man vārdnīcā kopā ir ap 500000 vārdu - visos iespējamajos locījumos. Pie tāda apjoma brute-force vairs neiet cauri.
radars 2009-04-07 22:32

Virsraksts nolaizīts

Pa dienu nesanāk laika ne īsti padomāt, ne uzrakstīt. Tagad mierīgā atmosfērā izdomāju, kā ar 3 vārdu palindromiem tikt galā ļoti ātri:

1) Tā kā frāzei jābūt vienādai no abiem galiem, pa priekšu atrodam pirmo un trešo vārdu, atlasot no 500 tūkstošiem tos, kur pirmais vārds pilnībā ietilpst trešā vārda reversajā versijā;
2) Tālāk meklējam otro vārdu, kam jābūt vismaz x burtus garam, kur x ir starpība starp trešā un pirmā vārda garumiem (pirmais <= trešais). Pie kam, ja x > 0, tad ir zināma meklējamā otrā vārda galotne - tā ir trešā vārda sākuma reversā versija. Ja x=0, tad par otro vārdu der jebkurš vienvārda palindroms.

Es biju domājis, ka trīs vienādi vārdi frāzē nav nekāda frāze, tāpēc aplūkoju tikai dažādus vārdus. Bet nu pēc definīcijas laikam Tev taisnība.

Pamēģināšu augstāk aprakstīto paņēmienu ar 180 tūkstošiem vārdu, ko es atradu OpenOffice vārdnīcā, domāju ka līdz rītam visi trīsvārdu varianti būs atrasti.
barvins
barvins 2009-04-07 23:31

Virsraksts nolaizīts

Es, savukārt, pamēģināju salādēt vārdus pa vienam burtam divos kokos, vienā no vārda sākuma, otrā no beigām. Pēc tam vienlaicīgi caurstaigāju abus kokus, un, kad nonācu līdz viena vārda beigām, pārbaudīju, vai otra vārda atlikusī daļa ir palindroms. Šādi dabūju visus divvārdīgos palindromus 5 minūtēs. Zvērīgs uzlabojums - ar brute-force metodi vajadēja 12 stundas.
Tagad štukoju, kā to izmantot 3 vārdu palindromiem.