Op het moment zoek ik een efficiente manier om een soort van vertaal tabel te maken (in Java). De bedoeling is dat er entries in komen waarbij karakteroffsets vertaald worden van het ene systeem naar het andere.
De gegevensstructuur is ongeveer als volgt:
Nu moet op het moment dat de waarde 11 vertaald moet worden daar het getal 9 uitkomen. Op 10 waren er namelijk 8 echte characters weggeschreven, plus het verschil tussen de 10 en 11.
Elke keer als er een verschil geintroduceerd wordt kan er namelijk een waardepaar toegevoegd worden. Ik zat zelf te denken aan het maken van een simpele twee dimensionale array of Vector en die elke keer maar te doorlopen. Hij gaat dan op zoek naar de hoogst mogelijke waarde die de gezochte waarde nog niet overschrijdt en telt dan het verschil erbij op.
Dat lijkt me echter niet zo'n efficiente implementatie. Bij vrijwel alle datastructuren loop ik tegen het probleem aan dat de waarde die ik zoek niet persé direct in de vertaaltabel hoeft te staan.
Alternatief zou zijn om voor elk teken een offset waarde in te voegen. Dit zorgt wel voor een hele snelle lookup, maar het geheugenverbruik schiet waarschijnlijk wel de pan uit. Het gaat om teksten van enkele honderden KB's tot wel enkele MB's. Geheugengebruik van enkele MB's is in ieder geval niet de bedoeling.
Zijn er betere ideeën, of een goede voor of tegen van een van de twee aanpakken?
De gegevensstructuur is ongeveer als volgt:
code:
1
2
3
| 0, 0 10, 8 15, 12 |
Nu moet op het moment dat de waarde 11 vertaald moet worden daar het getal 9 uitkomen. Op 10 waren er namelijk 8 echte characters weggeschreven, plus het verschil tussen de 10 en 11.
Elke keer als er een verschil geintroduceerd wordt kan er namelijk een waardepaar toegevoegd worden. Ik zat zelf te denken aan het maken van een simpele twee dimensionale array of Vector en die elke keer maar te doorlopen. Hij gaat dan op zoek naar de hoogst mogelijke waarde die de gezochte waarde nog niet overschrijdt en telt dan het verschil erbij op.
Dat lijkt me echter niet zo'n efficiente implementatie. Bij vrijwel alle datastructuren loop ik tegen het probleem aan dat de waarde die ik zoek niet persé direct in de vertaaltabel hoeft te staan.
Alternatief zou zijn om voor elk teken een offset waarde in te voegen. Dit zorgt wel voor een hele snelle lookup, maar het geheugenverbruik schiet waarschijnlijk wel de pan uit. Het gaat om teksten van enkele honderden KB's tot wel enkele MB's. Geheugengebruik van enkele MB's is in ieder geval niet de bedoeling.
Zijn er betere ideeën, of een goede voor of tegen van een van de twee aanpakken?
You can't have everything. Where would you put it?