Oldalak

2008. január 14., hétfő

Programozó a háznál

Az izgalom a tetőfokára hágott, amikor Jack Bauernek végre sikerült lefülelnie az elnököt. Minden veszni látszott, de talán majd a következő részben kiderül az igazság. Így néztük körömrágva a 24 című sorozat ötödik évadját, egészen a 22. részig, akkor ugyanis a megértést igencsak elősegítő felirat nem akart megjelenni. Á, csak rosszul van kiírva - nyugtattam meg kedvesemet, bár magam sem hittem el, hogy a videófájl tökéletesen megy, a feliratfájl meg nem. Amikor a következő kiírás sem hozott eredményt, újabb nyugtató szöveg következett: Biztosan csak el van benne írva egy karakter, és nem olvassa a kódokat. Ezt már ő sem hitte el, engem viszont komolyan foglalkoztatni kezdett a probléma, miért nem jó a 22. rész felirata DVD-n, amikor az előtte és utána lévő részek feliratozása tökéletesen olvasható, ennél meg egy betű nem sok, annyi sem jelenik meg, holott számítógépen minden tökéletesen látszik.

Késő este volt, így aztán nehezen tűnt fel, mi a különbség a két feliratfájl időzítési adatai között.

Ami működött:

1
00:00:10,426 --> 00:00:12,308
Az előző órák eseményeiből...

2
00:00:13,371 --> 00:00:17,861
Ha itt vetjük be a Sentoxot,
200 ezer ember hal meg.



És ami nem:

1
00:00:10:480 --> 00:00:12:600
Az előző órák eseményeiből...

2
00:00:14:200 --> 00:00:15:360
Itt Bauer.


Feltűnt egy idő után, hogy a működőképes verzió időzítőkódjában vesszőkkel vannak elválasztva a századmásodpercek, míg a nem működő változatnál ezt is kettőspontok választották el a másodperctől. Pillanatok alatt nyilallt belém a felismerés, hogy nekem most Pascal programot kell írnom a probléma megoldására. A karakterek megszámlálása után már csak annyi volt hátra, hogy a problémát (mely szerint minden 9. és 26. karaktert cseréljünk vesszőre, ha az kettőspont volt) algoritmizáljam és kódoljam, mintegy fél perc alatt. A következő, eszméletlenül bonyolult Pascal-kód született:

PROGRAM Bauer;

VAR f, g: text;

s: string;

BEGIN
Assign (F, 'C:\temp\22_bad.srt');
Assign (G, 'C:\temp\22_good.srt');
Reset(F);
Rewrite(G);
While not eof(F) DO begin
Readln (f, s);
IF s[9]=':' then s[9]:=',';
IF s[26]=':' then s[26]:=',';
Writeln (g, s);
end;
Close(F);
Close(g);
END.


Hát ennyi. A program lefutása során a másodperc töredéke alatt meg is született a jó felirat, a filmet meg tudtuk nézni. Az elnök meglakolt, Jacket viszont a kínai maffia elrabolta - izgalmas lesz a hatodik évad is!

Nincsenek megjegyzések: