Feladat: S.12 Korcsoport: - Nehézségi fok: -
Füzet: 2005/november, 489. oldal  PDF  |  MathML 
Témakör(ök): Nehezebb feladat

A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre.

Gyakran előfordul, hogy egy szöveg gépelése közben egy billentyű helyett véletlenül két, egymás mellettit ütünk le. Írjunk programot az ilyen gépelési hibák automatikus javítására szótár és egy billentyűzet-kiosztást tartalmazó táblázat alapján.
A szöveg kizárólag az angol ábécé kisbetűiből áll, maximális hossza 1 000 000 szó. A szavakat szóközök választják el egymástól, sortörés nincs. Egy szó maximális hossza 30 karakter (hibák nélkül), és egy szóban legfeljebb 5 hiba szerepelhet. A hibáknál a jó és a véletlenül leütött betűk sorrendje nincs meghatározva, de mindenképpen egymás mellett szerepelnek. Szóközt nem üt félre a gépelő. Ha egy szót többféleképpen is ki lehet javítani, akkor azt válasszuk, ami a legkevesebb betű elhagyását igényli; ha ezek után is több lehetőségünk van, akkor a betűrendben legelső helyes szót válasszuk.
A szótárat és a billentyűzetkiosztást egyetlen fájl tartalmazza. A  fájl elején a billentyűzetkiosztás szerepel. Minden sor első betűjét a klaviatúrán vele szomszédos billentyűk követik, szóközzel elválasztva. A kiosztást egy üres sor zárja. Ezt követi a szótár, melynek minden sorában 1 szó található, ábécé sorrendbe szedve. A szavak maximális száma 1 000 000.
A program a parancssorban kapja a bemeneti fájlok nevét, először a szövegét, utána a szótárét. A kimenetet is egy fájlba írja, melynek neve a program harmadik paramétere.
Példa: s11.exe szoveg.txt szotar.txt javitott.txt

 
szotar.txtszoveg.txtjavitott.txtq w aawsw aqqwwsas ssaqqasw qqwas ssaqw q a sa q w ss w a   aswssaqqqwas