Titulky
=======
volani programu:
titulky.sh -d dict1 -d dict2 -d dictn file1 file2 file3
kde -d dict1 vašemu programu řekne, že textový soubor dict1 má načíst jako slovník, co je to později.
A zbytek soubory file1 ... fileN načíst jako titulky k filmu(ům). Ty jsou v tomto formátu:
{20758}{20930}HELLO WORLD, BILL IS A YELLOW EXCAVATOR FROM USA. BUT|OUR JANE IS TOO!
kde první dvě čísla, bez mezer uzavřená do { a } značí počáteční a konečný frame titulků, hned po nich
(bez mezery) následují slova titulků, která obsahují písmena anglické abecedy a znaky z
množiny ,!?.' (a možná nějaké další, neškodné).
Vaším úkolem je upravit soubory file1...filen tak, aby vypadaly takto:
{20758}{20930}Hello world, Bill is a yellow excavator from USA. But|our Jane is too!
Tedy udělat vše malými písmeny, až na začátky vět, vlastní jména(Jane) a zkratky (USA).
Má to ovšem háček - Billa. "bill" je totiž také účet, a tedy u slova "BILL" nemůžeme
rozhodnout jestli má být velkými nebo malými. V tomto případě má váš program do logu
nebo na výstup vypsat že na této řádce si nebyl jistý a nechat "Bill".
(Film o účetním Billovi je tedy tomuto skriptu pravým nepřítelem)
Máte k tomu dispozici slovníky, které jsou ve formátu
slovo s
slovo2 v
slovo3 sv
ZKRTKA
MUDr.
knife s knives
read v reads read read
Kde první sloupec je slovo v "holém" tvaru, druhý sloupec jsou všechny slovní druhy,
které může nabývat - substantivum, verbum, a další (tato jsou zajímavá).
Pokud je slovo nepravidelné a je to podstatné jméno, má uvedené ještě další slovo (knives),
což je tvar množného čísla.
Pro pravidelná podstatná jména používáme vždy koncovku -s nebo -es (pokud slovo
končí -s, -sh, -x) a nebo -ies, pokud slovo končí -y a před y je souhláska (spoluhláska SK).
Pokud je sloveso nepravidelné, má uvedené další tři tvary - 3.os - trpný rod - příčestí minulé
Jinak může nabývat koncovek -ied (opět y, viz výše), -d (pokud končí na -e) nebo -ed.
( anglické skloňování vysvětloval asi 15 minut, tohle je rychlý výcuc )
Zkratky jsou ve slovnících také, poznáme je tak, že neobsahují žádné další slovo na řádce.
(čili např. MUDr. nebo ZKRTKA)
Poznámky & požadavky:
=====================
1) program musí skončit ještě dnes
2) celý slovník se nám vejde do paměti... i dvakrát
3) ve slovnících se nevyskytují kolize (takové, že by jeden uváděl see - seed, a druhý see - saw)
4) ve slovnících se ale může jedno slovo vyskytovat vícekrát (protože může být zároveň nepravidelné
sloveso i nepravidelné podstatné jméno), potom bude na oddělených řádkách s přísl. druhým sloupcem (s/v)
// pro fajnšmekry 5) přemýšlejte, jaké je lepší řešení v závislosti velikostí slovníků a souborů s titulky
Řešení:
=======
1) shell běží pomalu, hodně pomalu, ale přinejhorším je možné psát program v shellu
2) lepší řešení je psát program v awk, použít jeho asociativní pole jako slovník
4) pozor, aby jste nevyrobili (až budete zkoušet všechny konverze na -ies apod.) z podstatného jména sloveso
nebo vice versa
5) slijte všechny slovníky do jednoho
6) pamatujte na to, že awk může mít pouze 10 souborů najednou otevřených, a zavírejte po sobě
7) já osobně jsem v awk psal celý program v BEGINu pomocí funkce getline (která není ve všech awk) a nebyl
s tím žádný problém
slovník můžete postavit jakkoli, vejde se do paměti a proto je jedno, jestli rovnou všechny tvary přidáte
jako slova nebo pro každé slovo koumáte všechny tvary a zkoušíte (zde je závislost rychlosti na
velikosti souborů dict a file z bodu číslo 5)
3) všeho bylo třeba s mírou, netrhal hlavy ani když člověk zapomněl, že větu neukončují jenom tečky
kterým se dostane speciální péče právě díky zkratkám jako MUDr. , které tečkou končí, ale také
vykřičníky a otazníky Takové a podobné rozumné nedostatky programu byly přehlédnuty a
dokonce ani nebránily jedničce
Úspěšnost na závěr: Forst říkal, že tato úloha byla techničtější, můžete posoudit sami,
z 22 lidí to přibližně: 6-7 udělalo na jedničku, 3-4 na dvojku, 3 na trojku, se 3 mluvil,
3 neudělali a 3 odešli během. (čísla jsou odhadnutá, ale odpovídají plus mínus)
11.6.2015 - titulky
Seznámení se základními principy operačního systému UNIX, převážně z uživatelského hlediska. Absolvent kurzu by měl být schopen napsat netriviální program v shellu.
Re: 11.6.2015 - titulky
Příspěvek od nikdo »
Ještě přihodím pár poznatků, který by se mohly někomu hodit:
1) Téměř celý program jsem psal v awk.
2) Používal jsem v awk i funkce tolower, toupper a close, které nejsou standardem. Nebyl s tím žádný problém.
3) Skript jsem nestihl dokončit (o cca 5-10 minut), ale v posledních pár vteřinách jsem na papír Forstovi vypsal, co konkrétně chybí a jak to zhruba udělat.
4) Zapomněl jsem na pár detailů (např. jsem vůbec neřešil apostrofy). Ani to Forstovi nevadilo.
Přes to všechno se mi podařilo získat jedničku.
1) Téměř celý program jsem psal v awk.
2) Používal jsem v awk i funkce tolower, toupper a close, které nejsou standardem. Nebyl s tím žádný problém.
3) Skript jsem nestihl dokončit (o cca 5-10 minut), ale v posledních pár vteřinách jsem na papír Forstovi vypsal, co konkrétně chybí a jak to zhruba udělat.
4) Zapomněl jsem na pár detailů (např. jsem vůbec neřešil apostrofy). Ani to Forstovi nevadilo.
Přes to všechno se mi podařilo získat jedničku.
Zpět na „SWI095 Úvod do UNIXu“
Přejít na
- Aktuální informace
- ↳ Studijní oddělení
- ↳ Knihovna
- ↳ Studentská komora Akademického senátu (SKAS)
- ↳ Volby na ak. rok 2013/2014
- Všichni
- ↳ Práce
- ↳ Klubovna
- ↳ Toto fórum
- ↳ Státní závěrečná zkouška
- ↳ Bakalářské SZZ
- ↳ Magisterské SZZ
- ↳ Info for foreign students
- ↳ Akce
- ↳ Fotbalový turnaj 2008
- Informatika ZS
- ↳ Výuka ZS 1. ročník
- ↳ DMI002 Diskrétní matematika
- ↳ 2007
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ MAI054 Matematická analýza I
- ↳ 2007
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ MAI057 Lineární algebra I
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ PRG030 Programování I
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ SWI120 Principy počítačů a operačních systémů
- ↳ SWI087 Principy počítačů
- ↳ Ostatní
- ↳ DMI051 Úvod do řešení problémů kombinatorických, mat. i jiných (IPS) II
- ↳ Výuka ZS 2. ročník
- ↳ MAI056 Matematická analýza III
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ OFY016 Fyzika pro nefyziky I - Svět kolem nás
- ↳ SWI089 Ochrana informace I
- ↳ SWI096 Internet
- ↳ TIN061 Algoritmy a datové struktury II
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ Ostatní
- ↳ Aplikační software
- ↳ NPRG035 Jazyk C# a platforma .NET
- ↳ NPRG041 Programování v C++
- ↳ AIL062 Výroková a predikátová logika
- ↳ 2007
- ↳ 2006
- ↳ 2005
- ↳ PGR013 Java
- ↳ MAI059 Pravděpodobnost a statistika
- ↳ Výuka ZS 3. ročník
- ↳ SWI099 Administrace Systemu Windows
- ↳ SWI015 Programování v Unixu
- ↳ SWI098 Principy překladačů
- ↳ 2006
- ↳ Ostatní
- ↳ DBI007 Organizace a zpracování dat I
- ↳ 2006
- ↳ MAI062 Algebra I
- ↳ PGR003 Počítačová grafika I
- ↳ SWI090 Počítačové sítě I
- ↳ Výuka ZS NMgr.
- ↳ TIN066 Datové struktury I
- ↳ TIN062 Složitost I
- ↳ TIN064 Vyčíslitelnost I
- ↳ MAI060 Pravděpodobnostní metody
- ↳ SWI004 Operační systémy
- ↳ SWI106 Administrace Unixu
- ↳ Ostatní
- ↳ NTIN090 Základy složitosti a vyčíslitelnosti
- ↳ OPT042 Programování s omezujícími podmínkami
- ↳ AIL002 Neuronové sítě
- ↳ AIL025 Evoluční algoritmy I
- ↳ AIL069 Umělá inteligence I
- ↳ NDBI001 Dotazovací jazyky I
- ↳ TIN070 Testování software
- ↳ NDBI027 Datové sklady a analytické metody pro Business Intelligence
- ↳ NDBI034 Vyhledávání multimediálního obsahu na webu
- ↳ NPRG023 Softwarový projekt
- Informatika LS
- ↳ Výuka LS 1. ročník
- ↳ MAI055 Matematická analýza II
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ MAI058 Lineární algebra II
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ PRG031 Programování II
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ TIN060 Algoritmy a datové struktury I
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ SWI095 Úvod do UNIXu
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ Ostatní
- ↳ Výuka LS 2. ročník
- ↳ SWI071 Ochrana informace II
- ↳ TIN071 Automaty a gramatiky
- ↳ PRG033 Ročníkový projekt - specifikace
- ↳ DMI011 Kombinatorika a grafy I
- ↳ DBI025 Databázové systémy
- ↳ Ostatní
- ↳ SWI036 Programování pro Windows I & II
- ↳ SWI096 Internet
- ↳ PRG005 Neprocedurální programování
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ NSWI143 Architektura počítačů
- ↳ Výuka LS 3. ročník
- ↳ Ostatní
- ↳ PGR004 Počítačová grafika II
- ↳ PRG036 Technologie XML
- ↳ SZZ026 Bakalářská práce
- ↳ PRG003 Metodika programování a filozofie programovacích jazyků
- ↳ MAI064 Matematické struktury
- ↳ MAI042 Numerická matematika
- ↳ SWI021 Počítačové sítě II
- ↳ SWI045 Rodina protokolů TCP/IP
- ↳ NPRG038 Pokročilé programování pro .NET
- ↳ Výuka LS NMgr.
- ↳ SWI109 Konstrukce překladačů
- ↳ NPRG042 Programování v paralelním prostředí
- ↳ SWI117 Technologie vývoje webových aplikací
- ↳ SWI026 Softwarové inženýrství
- ↳ MAI061 Metody matematické statistiky
- ↳ I1 Ostatní Teoretická informatika
- ↳ I2 Ostatní Softwarové systémy
- ↳ I3 Ostatní Matematická lingvistika
- ↳ I4 Ostatní Diskrétní modely a algoritmy
- ↳ AIL026 Evoluční algoritmy II
- ↳ AIL070 Umělá inteligence II
- ↳ NDBI010 Dokumentografické informační systémy
- ↳ NDBI023 Dobývání znalostí
- ↳ NDBI016 Transakce
- ↳ NDBI006 Dotazovací jazyky II
- ↳ NAIL029 Strojové učení
- Matematika
- ↳ Výuka LS 1. ročník
- ↳ Lineární algebra 2
- ↳ Programování 2
- ↳ Matematická analýza 1b
- ↳ Volitelné předměty
- ↳ Výuka LS 2. ročník
- ↳ Pravděpodobnost a statistika
- ↳ Teorie Míry a integrálu II
- ↳ Algebra II
- ↳ Matematická analýza 2b
- ↳ Ostatní
- ↳ Výuka LS 3. ročník
- ↳ Předměty numeriky
- ↳ Úvod do funcionální analýzy
- ↳ Funkcionální analýza I
- ↳ Vybrané partie z funkcionální analýzy
- ↳ Náhodné procesy 2
- ↳ Matematická statistika 2
- ↳ Teorie pravděpodobnosti 2
- ↳ Matematická ekonomie
- ↳ Ostatní
- ↳ LS - Předměty MMIB a pokročilé Algebry
- ↳ Všeobecná diskuse
- ↳ Počítačová algebra
- ↳ Teorie čísel a RSA
- ↳ Aplikovaná kryptografie II
- ↳ Standardy v kryptografii
- ↳ Kryptoanalytické útoky
- ↳ Aplikace bezpečnostních mechanismů
- ↳ Kvantové a DNA počítače
- ↳ Faktorizace velkých čísel
- ↳ Algebraická geometrie v kladné charakteristice
- ↳ Výuka ZS 1. ročník
- ↳ MAA001 Matematická analýza 1a
- ↳ PRM044 Programování I
- ↳ MAA079 Proseminář z kalkulu 1a
- ↳ DMA005 Diskrétní matematika
- ↳ ALG001 Lineární algebra a geometrie I
- ↳ Ostatní
- ↳ Volitelné předměty
- ↳ Výuka ZS 2. ročník
- ↳ MIB
- ↳ Matematická analýza 2a
- ↳ Teorie míry a integrálu
- ↳ Numerika
- ↳ Algebra
- ↳ Předměty finanční matematiky
- ↳ Ostatní
- ↳ Výuka ZS 3. ročník
- ↳ Matematická statistika
- ↳ Teorie pravděpodobnosti
- ↳ Náhodné procesy
- ↳ Optimalizace
- ↳ Předměty numeriky
- ↳ Předměty finanční matematiky
- ↳ Komplexní analýza
- ↳ Funcionální analýza
- ↳ Ostatní
- ↳ ZS - předměty MMIB a pokročilé Algebry
- ↳ Úvod do algebry
- ↳ Složitost pro kryptografii
- ↳ Samoopravné kódy
- ↳ Teoretická kryptografie
- ↳ Aplikovaná kryptografie I
- ↳ Datové a procesní modely
- ↳ Eliptické křivky
- ↳ Členění kryptografických standardů
- ↳ Kryptografické protokoly
- ↳ Úvod do teorie grup
- ↳ Právní aspekty zabezpečení dat
- ↳ Komutativní okruhy
- Fyzika ZS
- ↳ Výuka ZS 1. ročník
- ↳ OFY067 Fyzika v experimentech I
- ↳ MAF027 Lineární algebra I
- ↳ OFY021 Fyzika I (mechanika a molekulová fyzika)
- ↳ OFY056 Programování pro fyziky
- ↳ MAF033 Matematická analýza I
- Oborový mix aktuální
- ↳ Anglický jazyk
- ↳ Tělesná výchova
- ↳ Granty GAUK
- Odkazy
- ↳ Wiki
- ↳ SKAS
- ↳ Spolek Matfyzák
- Matematika Archiv
- ↳ Výuka LS 2006/2007 3. ročník
- ↳ Předměty numeriky
- ↳ Úvod do funcionální analýzy
- ↳ Náhodné procesy 2
- ↳ Matematická statistika 2
- ↳ Teorie pravděpodobnosti 2
- ↳ Matematická ekonomie
- ↳ Výuka LS 2006/2007 2. ročník
- ↳ Pravděpodobnost a statistika
- ↳ Teorie Míry a integrálu II
- ↳ Angličtina
- ↳ Algebra II
- ↳ Matematická analýza 2b
- ↳ Ostatní
- ↳ Výuka LS 2006/2007 1. ročník
- ↳ Volitelné předměty
- ↳ Lineární algebra 2
- ↳ Programování 2
- ↳ Matematická analýza 1b
- Zrušené předměty
- ↳ SWI087 Principy počítačů
- ↳ SWI120 Principy počítačů a operačních systémů
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ PRG029 Programování v C++
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ PRG032 Objektově orientované programování
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ SWI097 Základy operačních systémů
- ↳ NDBI003 Organizace a zpracování dat II
- Roztřídit (resty)
- ↳ Výuka ZS 2005/06 2. ročník
- ↳ Předměty informační bezpečnosti
- ↳ Předměty finanční matematiky
- ↳ Teorie míry a integrálu
- ↳ Numerika
- ↳ Algebra
- ↳ Analýza/kalkulus
- ↳ Matematika obecně
- ↳ Výuka LS 2005/06 2.ročník
- ↳ Základy matematického modelování
- ↳ Finanční management
- ↳ Úvod do optimalizace
- ↳ Numerika
- ↳ Kalkulus
- ↳ Angličtina
- ↳ Diferenciální geometrie
- ↳ Pravděpodobnost a statistika
- ↳ Teorie míry a integrálu II
- ↳ Algebra II
- ↳ Analýza 2b