WSWZ — Laboratorium – perl

Transkrypt

WSWZ — Laboratorium – perl
WSWZ — Laboratorium – perl
Jarosław Piersa
2014-01-14
Zadanie 1 (tradycyjne)
Napisz skrypt, który się przywita z użytkownikiem (Hello World, print).
Zadanie 2
Napisz skrypt, wczyta dwie liczby całkowite a i b, i obliczy sumę kwadratów liczb pomiędzy a i b (do wykorzystania: for).
Zadanie 3
Napisz skrypt, który czyta plik ./dane.txt i wypisuje jego zawartość (do wykorzystania: uchwyty plików).
Zadanie 4
Napisz skrypt, który do pliku ./wynik.txt zapisuje kopię zawartości pliku ./dane.txt.
Zadanie 5
Napisz skrypt, który tworzy plik ./obrazek.svg i renderuje w nim dziesięć prostokątów stycznych wierzchołkami.
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
width="800px" height="600px" >
<!-- tu definicje prostokatow, jeden po drugim -->
<rect width="200" height="100" x="50" y="20"
fill="rgb(0,0,255)" stroke-width="1" stroke="rgb(0,0,0)"/>
<!-- koniec definicji prostokatow -->
</svg>
Zadanie 7 (patrz kolokwium)
Robot startuje w puncie (0,0), czyta instrukcje z pliku (zadane jako argument wywołania) i zgodnie z nimi podąża w lewo,
w prawo, do góry lub do dołu poruszając się o określoną liczbę kroków. Napisz skrypt, który czyta plik z instrukcjami i
generuje plik svg z narysowaną trasą ruchu robota.
http://www.w3.org/TR/SVG11/
Zadanie 8
Napisz skrypt, który sprawdzi czy podane argumenty programu są plikami w systemie (do wykorzystania: ARGV).
1
Zadanie 9
Napisz skrypt, który przeczyta plik tekstowy policzy ile w pliku jest różnych wystąpień słów. Na koniec skrypt powinien
wyświetlić słowa wraz z liczbą wystąpień (do wykorzystania: tablice hashowane).
Zadanie 10
Napisz skrypt, który na podstawie pliku z logami (lub na ultrze60: last) wygeneruje raport: dla każdego użytkownika ile
razy dany użytkownik logował się danego dnia tygodnia (poniedziałek, wtorek, środa...).
Zadanie Domowe — translator
Napisz skrypt w perlu, który będzie prostym (by nie rzec: prymitywnym) tłumaczem tekstu z języka polskiego na angielski
(lub w drugą stronę, wybór języka jest dowolny, ale wskazane aby składał się przede wszystkim z liter łacińskich). Słownik
wg którego dokonywane jest tłumaczenie jest przechowywany w pliku ./slownik.txt i zawiera linia po linii słowo w języku
polskim, spację, słowo w języku angielskim (wskazane dołączyć swój własny słownik). Skrypt przetwarza plik tekstowy
podany jako pierwszy argument wywołania, tłumaczy go prostym zastępowaniem słów przez ich odpowiedniki i wypisuje
rezultat na ekran. (można dołączyć własne pliki tekstowe). Proszę przewidzieć sytuację gdy słowa nie ma w słowniku.
Zadanie Domowe — Prawie trójkąt Pascala
Napisz skrypt w perlu, który wykona następujący algorytm:
1. rozważmy tablicę dwuwymiarową max na max elementów tab
2. pierwszy wiersz tab wygląda: (1, 0, ..., 0)
3. dla wierszy i = 2..max obliczamy i-ty wiersz tab:
• pierwszy element wiersza jest równy jeden
• dla pozostałych j: niech s jest sumą elementów j-tego i (j − 1)-go wiersza poprzedniego (tzn.: (ten, co stoi nad
nim + ten, co stoi nad nim i na lewo) )
• j-ty element = s mod 2
• Zauważ, że bez dodania „mod 2” byłby to tradycyjny trójkąt Pascala. Zauważ, że w tablicy są tylko zera i jedynki
4. skrypt wyrenderuje plik svg rozmiarze (max + 1) × (max + 1) i nazwie ./WSWZ zad18 Nazwisko Imie.svg
5. jeżeli na współrzędnych (i, j) w tablicy stoi wartość 1, to wydrukuje w danym miejscu mały prostokąt 1 × 1 (lub dla
lepszego efektu — trójkąt prostokątny), jeżeli stoi wartość 0, to nie wydrukuje nic.
6. zadanie da się wykonać wykorzystując tylko dwie tablice 1 × max (zamiast max × max), a nawet jedną tablicę 1 × max
(a nawet i bez tablic, ale wtedy jest trochę trudniej...)
i − 1, j − 1
i − 1, j
i, j − 1
i, j
2