Piton
ŠKOLSKO NATJECANJE 2015./ Srednja škola, I. podskupina (1. i 2. razred) - 3. zadatak
Piton je strukturirani programski jezik sintaksom donekle sličan popularnom Pythonu.
Ovaj jednostavni jezik ima samo dvije naredbe:
- Px gdje je x malo slovo engleske abecede: ova naredba ispisuje slovo x.
- Fk gdje je k prirodni broj manji ili jednak od 20 zapisan bez vodećih nula: ova naredba ponavlja točno k puta blok naredbi koji slijedi.
Blokovi naredbi se specificiraju uvlačenjem naredbi, ali se koristi znak ‘.’ (točka) umjesto uobičajenih razmaka.
Točnije, blokovi i programi u Pitonu se definiraju na sljedeći način:
Za nenegativni cijeli broj N definiramo N-uvučeni blok kao niz linija koji se sastoji od jedne ili više:
- Naredbe P uvučene s N točaka.
- Naredbe F uvučene s N točaka nakon koje slijedi točno jedan M-uvučeni blok gdje je M cijeli broj veći od N.
Jedan blok može sadržavati proizvoljan broj P i F naredbi proizvoljnim redoslijedom.
Kao što je gore definirano, nakon svake F naredbe slijedi blok koji mora biti više uvučen nego sama naredba, ti blokovi također mogu sadržavati druge blokove itd.
Program u Pitonu je jedan 0-uvučeni blok (dakle blok koji nije uopće uvučen pa prva linija ne sadrži točku).
U sljedećoj tablici dan je jedan program u Pitonu te njemu ekvivalentni programi u C++-u i u Pascal-u.
Napišite program koji će, za zadani program u Pitonu, pronaći koliko kojih malih slova zadani program ispisuje.
Ulazni podaci
U prvom redu nalazi se prirodni broj, L (L ≤ 100) - broj linija u zadanom programu.
Svaki od sljedećih L redova sadrži niz od najviše 80 znakova - jednu liniju zadanog programa.
Jedini znakovi koji se pojavljuju su točke, mala slova engleske abecede, velika slova ‘F’ i ‘P’ te znamenke ‘0’ do ‘9’.
Ulaz je ispravan program u Pitonu prema pravilima iz teksta zadatka koji ispisuje ukupno najviše 10000 znakova.
Izlazni podaci
Potrebno je ispisati koliko se kojih slova pojavljuje u izlazu zadanog programa.
Točnije, potrebno je ispisati onoliko redova koliko se različitih malih slova pojavljuje u izlazu zadanog programa.
Za svako slovo x koje se pojavljuje u izlazu potrebno je ispisati jedan red oblika 'x k', gdje je k ukupan broj pojavljivanja tog slova u izlazu.
Slova trebaju biti ispisana abecednim redoslijedom.
Primjeri test podataka
Ulaz
5
Px
Py
F3
..Px
..Pz
Izlaz
x 4
y 1
z 3
Ulaz
9
F3
..Pa
..Pb
..F4
...Pc
..F2
.....Pd
.....Pe
..Pa
Izlaz
a 6
b 3
c 12
d 6
e 6
Ulaz
8
Pa
F3
.F12
..Px
..F20
...F2
....F3
.....Pa
Izlaz
a 4321
x 36
Comments