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