Zadania

Transkrypt

Zadania
Pod latarniami
Stolarzowi zlecono wykonanie drewnianych podestów pod szeregiem latarni wzdłuż głównej alei w
parku. Każda latarnia ma mieć osobny podest o kształcie koła i znajdować się w jego środku.
Wartość zamówienia zależy od sumarycznej długości obwodów podestów. Pomóż stolarzowi tak
zaprojektować podesty, aby sumaryczna długość ich obwodów była jak największa.
Dane wejściowe
W pierwszej linii liczba całkowita n (1<n<100) oznaczająca liczbę latarni, pod którymi należy
zbudować podesty. W kolejnej linii n liczb całkowitych z zakresu <0, 108> oznaczające
współrzędne latarni (zakładamy, że są one ustawione w linii prostej wzdłuż alejki).
Dane wyjściowe
Jedna liczba zmiennoprzecinkowa oznaczająca sumaryczną długość obwodów podestów. Wynik
należy podać z dokładnością do dwóch miejsc po przecinku.
Przykład:
Dane wejściowe
4
19 23 4 0
Dane wyjściowe
50.27
Gra à la GTA
W pewnej grze komputerowej gracze wcielają się w złodzieja kradnącego auta. Złodziej ma do
dyspozycji lawetę o określonej długości, która jest w stanie pomieścić sporo aut, ale
zleceniodawców kradzieży interesują oczywiście tylko te najcenniejsze. Jeśli uda Ci się napisać
program, który pozwoli wybrać, które z aut spotkanych na ulicach wirtualnego miasta najbardziej
się opłaca zabrać na lawetę – zostaniesz mistrzem rozgrywki... i może nie pójdziesz za to za kratki.
Dane wejściowe
W pierwszej linii długość lawety 1<n<50 (wyrażona w metrach), w kolejnych liniach znajdują się
opisy kolejnych aut: marka oraz dwie liczby całkowite 200<d<1000 i 1<w<1000 oznaczające
odpowiednio długość (w centymetrach) i wartość auta (w tysiącach dolarów) oddzielone od siebie
pojedynczą spacją.
Dane wyjściowe
Program powinien wypisać na ekranie listę aut umieszczonych na lawecie w formacie takim, jak w
danych wejściowych. Jeśli istnieje więcej aut, które mają identyczną wartość i długość, to należy
wybrać te, które pojawiają się możliwie najwcześniej na liście wejściowej. Lista wyjściowa
powinna zostać posortowana według malejącej wartości aut (w przypadku równej wartości,
najpierw należy wypisać auto krótsze, a gdy długość również jest taka sama – obowiązuje kolejność
alfabetyczna). Ostatnia linia powinna zawierać sumaryczną długość wybranych aut (w
centymetrach) oraz ich łączną wartość.
Przykład:
Dane wejściowe
11
Ford 510 190
Mercedes 350 200
Jaguar 400 230
Toyota 340 70
Mercedes 295 150
Pontiac 390 100
Dane wyjściowe
Jaguar 400 230
Mercedes 350 200
Mercedes 295 150
1045 580
Pe Kin
Henio, informatyk w firmie Pe-Kin sprzedającej różne atrakcyjne wyroby prosto z Chin, ma bardzo
nieufnego szefa, pana Pe Kin. Szef wszędzie widzi osoby próbujące go oszukać, nie ufa nawet
swojej sekretarce i jednocześnie małżonce, pani Kant Uj, a co dopiero pracownikom. Pan Pe zlecił
Heniowi napisanie skryptu, który będzie wykonywał backup najważniejszych, według pana Pe,
plików. Są one ukryte w podkatalogach katalogu domowego komputera firmowego, ale pan Pe nie
chce nikomu zdradzić, które to pliki i w jakich podkatalogach. Dodatkowo użył jakiegoś szyfru –
zawartość plików jest niezrozumiała, jakieś ciągi znaków i liter. Pan Pe dał Heniowi kilka
wskazówek, jak wykonać taki backup. Po pierwsze – najważniejsze pliki znajdują się w
podkatalogu, w którym jest najwięcej plików zawierających słowo-hasło, które ma być podawane
jako parametr do skryptu. Zawartość takiego podkatalogu należy spakować do pliku o nazwie
PeKinFile-yyyy-mm-dd.tar.gz (standardowe opcje, a yyyy-mm-dd – aktualna data) umieszczonym w
katalogu /backup. Ponieważ pan Pe jest też oszczędnym człowiekiem, to pliki backupu przechowuje
przez 2 tygodnie. Skrypt ma usuwać wszystkie pliki z katalogu /backup, które w nazwie pliku mają
datę o dokładnie 14 dni starszą. I jeszcze jeden test – należy obliczyć sumy kontrolne: sha1 na pliku
z backupem z dnia wczorajszego, md5 na każdym pliku w katalogu, który jest poddawany aktualnie
backupowi i wszystkie sumy zapisać w pliku wynik.txt w katalogu /backup. Następnie obliczyć
sha256 na pliku wynik.txt i przesłać na standardowe wyjście.
UWAGA:
1. Maszyna wirtualna do zadania do pobrania ze strony RKI
2. Proszę używać tylko poleceń, które są osiągalne na maszynie – nie doinstalowywać niczego
3. Polecenia wykonywać z uprawnieniami zwykłego użytkownika
4. Należy założyć, że tylko jeden katalog ma największą liczbę plików ze słowem-hasłem
Do testów przygotowane są podkatalogi (od aaa do hhh) oraz katalog /backup i jego zawartość.
Słowo-hasło: Bar-Man
Przykład użycia skryptu:
$./nazwa_skryptu Bar-Man
Rozwiązanie, które należy przesłać: plik skryptu.
Katalog
Pewien wytrawny Informatyk z Polski, Podróżnik z zamiłowania, odkrył nową Krainę. Jej
Mieszkańcy, których według ich Wodza było nie więcej niż 10000, mówili dziwnym (według
Podróżnika) językiem. Mieli dziwne imiona i nazwiska. Każde imię składało się ze słówka ALA ,
po którym był jakiś numer. Każde nazwisko składało się ze słówka KASSA, po którym był ten sam
numer, który był w imieniu. Na szczęście Mieszkańcy używali zrozumiałych cyfr. Tenże
Informatyk, a jakże, miał ze sobą komputer. Postanowił stworzyć katalog ludności, w którym chciał
zawrzeć jak najwięcej informacji o Mieszkańcach. Ale udało mu się zrozumieć tylko imiona i
nazwiska, daty urodzenia (i znowu szczęście, gdyż Mieszkańcy używali tego samego kalendarza
jakiego używał Informatyk) i pewne numery, które, o dziwo, okazały się peselami, które znał z
Polski. Po numerach zawartych w imionach wywnioskował, że kobiety mają numery nieparzyste, a
mężczyźni parzyste. Informatyk utworzył więc katalog w kształcie
<katalog>
<osoba>
<imie>ALA7778</imie>
<nazwisko>KASSA7778</nazwisko>
<plec>mezczyzna</plec>
<pesel>63072303318</pesel>
<data_urodzenia dzien="23" miesiac="7" rok="1963"/>
</osoba>
<osoba>
<imie>ALA43</imie>
<nazwisko>KASSA43</nazwisko>
<plec>kobieta</plec>
<pesel>01310520909</pesel>
<data_urodzenia dzien="5" miesiac="11" rok="2001"/>
</osoba>
</katalog>
O każdym mieszkańcu wprowadził (chciał wprowadzić !!!) wszystkie dane. Fajnie, fajnie, ale sam
wiesz, że o błąd przy wprowadzaniu danych nie trudno. Napisz program, który sprawdzi
poprawność stworzonego przez Informatyka katalogu.
Wejście
Katalog zawierający dane o co najmniej jednym Mieszkańcu. Można założyć, że w katalogu
wszystkie otwarte nawiasy (tagi) są zamknięte oraz występują wszystkie cudzysłowy, które są w
przykładzie wyżej i tylko tam. Zapis numerów przy imionach nie przekracza 10000 znaków.
Wyjście
Lista pozycji osób w katalogu, których dane zawierają jakikolwiek błąd. Numery mają być zapisane
w jednej linii i być rozdzielone pojedynczą spacją. W przypadku, gdy nie ma żadnych błędów
należy wypisać liczbę kobiet, które są w katalogu.
Przykład na drugiej stronie.
Przykład (nie zawiera wszystkich możliwych błędów do popełnienia)
Wejście
<katalog>
<osoba>
<imie>ALA7778</imie>
<nazwisko>KASSA7778</nazwisko>
<plec>mezczyzna</plec>
<pesel>63072303318</pesel>
<data_urodzenia dzien="23" miesiac="7"
</osoba>
<osoba>
<imie>ALA43</imie>
<nazwisko>KASSA43</nazwisko>
<pesel>01310520909</pesel>
<data_urodzenia dzien="5" miesiac="11"
</osoba>
<osoba>
<imie>ALA2</imie>
<nazwisko></nazwisko>
<plec>mezczyzna</plec>
<pesel>63072303318</pesel>
<data_urodzenia dzien="23" miesiac="7"
</osoba>
<osoba>
<imie>ALA243</imie>
<nazwisko>KASSA243</nazwisko>
<plec>kobieta</plec>
<pesel>013105209009</pesel>
<data_urodzenia dzien="5" miesiac="11"
</osoba>
<osoba>
<imie>ALA4833</imie>
<nazwisko>KASSA4833</nazwisko>
<plec>kobieta</plec>
<pesel>02291099442</pesel>
<data_urodzenia dzien="10" miesiac="9"
</osoba>
</katalog>
Wyjście
1 2 3 4 5
rok="Z"/>
rok="2001"/>
rok="1963"/>
rok="2001"/>
rok="2002"/>
Dz iu ra wy ba se n
Konstruktor rzeczy ulotnych i dziwnych został poproszony o zaprojektowanie basenu, którego dno
będzie częścią kwadratowej platformy o wymiarach 100x100 metrów. Problem w tym, że platforma
jest zbudowana z materiału, w którym w regularnych odstępach jednego metra (przypominających
przecięcia linii na kartce w kratkę) występują mikroskopijne dziury, tak małe, że trudno je dostrzec,
ale przez które zadziwiająco szybko ucieka woda. Konstruktor stanął na rogu platformy, znalazł
najbliższą dziurę, nadał jej numer 1, a następnie ponumerował kolejne dziury wewnątrz platformy
idąc do końca w prawo (do numeru 99), później o krok do przodu (numer 100), następnie w lewo
do końca platformy, znów krok do przodu, w prawo itd. Powstałe numery dziur od 1 do 9801
wykorzystał do oznaczenia punktów, w których będą się mieściły narożniki ścian basenu o kształcie
wielokąta, gdyż wolno mu budować tylko bezwzględnie proste ściany basenu i w dodatku ich końce
muszą się znajdować w miejscu dziur. Po zbudowaniu ultracienkiej ściany na miejscu wystąpienia
dziury, woda już tamtędy nie ucieka. Teraz pozostaje już tylko zatkać dziury znajdujące się
wewnątrz dna ograniczonego ścianami, żeby basen można było napełnić wodą.
Dane wejściowe
W pierwszej linii znajdują się numery dziur stanowiących kolejne (idąc po jego obwodzie)
wierzchołki wielokątnego basenu oddzielone od siebie pojedynczymi spacjami (basen ma nie
więcej niż 100 wierzchołków).
W drugiej linii znajduje się liczba całkowita oznaczająca wysokość ścian basenu wyrażona w
metrach.
W trzeciej linii znajduje się liczba rzeczywista będąca objętością wody wyrażoną w metrach
sześciennych, którą można wlać do basenu napełniając go aż do wysokości ścian.
Dane wyjściowe
Program powinien wypisać liczbę ultracienkich korków potrzebnych do zatkania wszystkich dziur
wewnątrz dna basenu, przez które może uciekać woda.
Przykład:
Dane wejściowe
3 202 199
4
12.0
Dane wyjściowe
1