Podnapisi

Osnovne informacije

Omejitve
  • Čas: 1 s
  • Spomin: 250 MB
Avtor:
  • Jure Slak
  • UPM 2018

Pošlji rešitev



Tvoji rezultati.
Nisi poslal še nobene rešitve.
Več »

Kolikokrat ste že prenesli podnapise, ki se niso ujemali s filmom, ki ste si ga sposodili z interneta? Danes boste rešili pol tega problema.

Naloga

Napišite program, ki sprejme (pozitiven) časovni zamik in vsebino datoteke s podnapisi, ter premakne vse podnapise za podan zamik naprej.

Format .srt datoteke s podnapisi je najlažje pokazati na primeru (Silicon Valley, 5. sezona, 1. del):

1
00:00:00,005 --> 00:00:01,047
Three, two, one, go.

2
00:00:01,047 --> 00:00:02,296
A... A new internet.

[ Izpuščenih približno 2000 vrstic. ]

559
00:28:02,772 --> 00:28:05,855
This is awesome. Gavin is
essentially doubling-down

560
00:28:05,855 --> 00:28:07,855
on the very thing
we are destroying.

Datoteka je sestavljena iz zaporedja sklopov, pri čemer so sklopi ločeni z natanko eno prazno vrstico. Vsak sklop se začne z zaporedno številko. V naslednji vrstici sledi opis časovnega razpona, ko naj bo podnapis prikazan na zaslonu. Ta je oblike HH:MM:SS,UUU --> HH:MM:SS,UUU, kjer HH, MM, SS in UUU predstavljajo ure, minute, sekunde in milisekunde, štete od začetka filma. Kot vidite iz primera, so števila vedno izpisana z vodilnimi ničlami. Nato sledi ena ali več vrstic besedila, ki predstavljajo dejanski podnapis.

Vhodni podatki

V prvi vrstici je podan časovni zamik v obliki SHIFT: HH:MM:SS,UUU. Sledijo vrstice z veljavno vsebino neke .srt datoteke, ki se konča z zadnjo vrstico besedila. Vrstice ne bodo daljše od 200 znakov, število vrstic pa ne bo preseglo 10\,000. Zamik bo nenegativen in dovolj majhen, da bo tudi največji nastopajoči čas manjši ali enak 23:59:59,999. Besedilo podnapisov bo sestavljeno iz naslednje podmnožice standardnih ASCII znakov:

0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"$%&\'()*+,-./:;<=>?@[\]^_{|}~ `

Izhodni podatki

Izpišite vse vrstice nove .srt datoteke (torej eno vrstico manj, kot jih je bilo na vhodu). Vrstice, ki opisujejo časovni razpon podnapisa, premaknite za dani zamik, ostale pa izpišite nespremenjene.

Primer

Vhod

SHIFT: 00:00:01,300
1
00:00:04,880 --> 00:00:06,630
In 2022, mankind finally

2
00:00:09,600 --> 00:00:11,590
built a full virtual environment

3
00:00:17,840 --> 00:00:21,270
All right, we're under way!
It's time for this week's MMO Stream.

Izhod

1
00:00:06,180 --> 00:00:07,930
In 2022, mankind finally

2
00:00:10,900 --> 00:00:12,890
built a full virtual environment

3
00:00:19,140 --> 00:00:22,570
All right, we're under way!
It's time for this week's MMO Stream.

Komentar

Primer je iz serije Sword Art Online (1. sezona, 1. del).

Testi na sodniškem sistemu vsebujejo dejanske podnapise filmov oz. serij Thor, Black Mirror (1. sezona, 1. del), The Big Bang Theory (11. sezona, 15. del), Blindspot (3. sezona, 9. del), Pulp Fiction in nekaj posebej zlobnih podnapisov sodniške ekipe.

Tip: Log in to
  • submit and test your solution
  • post or read questions and answers about this task