Sankt-Peterburgskie Olimpiady po Informatike

Zadachi mezhdunarodnoj olimpiady 1991 goda

Pervyj tur: Tablica
Vtoroj tur: S-termy

Zadacha "Tablica"

Pronumerovat' pozicii v matrice (tablice) razmerom 5x5 sledujuschim obrazom. Esli nomer i (1<=i<25) sootvetstvuet v matrice pozicii s koordinatami (x,y), to nomer i+1 mozhet sootvetstvovat' pozicii s koordinatami (z,w), vychisljaemymi po odnomu iz sledujuschih pravil:

  1. (z,w) = (x+-3,y);
  2. (z,w) = (x,y+-3); Vnimanie: pljus/minus
  3. (z,w) = (x+-2,y+-2).

Trebuetsja:

A. Napisat' programmu, kotoraja posledovatel'no numeruet pozicii matricy 5x5 pri zadannyh koordinatah pozicii, v kotoroj prostavlen nomer 1 (rezul'taty dolzhny byt' vyvedeny v vide zapolnennoj matricy);

B. Vychislit' chislo vseh vozmozhnyh rasstanovok nomerov dlja vseh nachal'nyh pozicij, raspolozhennyh v pravom verhnem treugol'nike matricy, vkljuchaja ee glavnuju diagonal'.

Primer. Esli v kachestve nachal'noj pozicii v matrice vybrana pozicija s koordinatami (2,2), to na dannom shage koordinaty pozicii s nomerom 2 v sootvetstvii s predstavlennymi pravilami mogut byt' (2,5), (5,2) ili (4,4).

Zadacha "S-termy"

S-term - jeto posledovatel'nost' simvolov S i skobok, opredeljaemaja rekursivno sledujuschim obrazom:

Primer S-terma: ((((SS)(SS))S)(SS)). Pravye skobki ne nesut informacii i mogut opuskat'sja. V jetom sluchae vysheprivedennyj S-term vygljadit tak: ((((SS)(SS))S)(SS.

Zadanie 1. Napishite proceduru "gensterm" dlja porozhdenija S-termov. Ona dolzhna dlja zadannogo n zapolnjat' n tekstovyh fajlov (n = dlina = chislo simvolov 'S'), kazhdyj iz kotoryh soderzhit vse S-termy dliny n = 1,2,...,n sootvetstvenno. Vnutri fajla S-termy razdeljajutsja simvolom ';'. V konce kazhdogo fajla dolzhen stojat' simvol '.' (tochka).

Napishite programmu, kotoraja po zadannomu celomu n (n <= 10) vypolnjaet opisannuju vyshe proceduru i vydaet na displej vse sgenerirovannye S-termy. Rassmotrim vychislenie S-termov. Edinstvennoe algebraicheskoe pravilo (S-pravilo), kotoroe mozhet byt' ispol'zovano, sostoit v sledujuschem: ljuboj podterm S-terma, imejuschij vid (((SA)B)C), gde A, B, C - takzhe S-termy, mozhet byt' perepisan kak ((AC)(BC)), to est' Context1(((SA)B)C)Context2 -> Context1((AC)(BC))Context2.

Primenenie jetogo pravila k S-termu nazyvaetsja redukciej S-terma. Vozmozhny raznye sposoby (strategii) vybora podtermov dlja primenenija S-pravila. Posledovatel'noe primenenie S-pravila k S-termu do teh por, poka jeto vozmozhno, nazyvaetsja normalizaciej.

Primer cepochki redukcii S-terma: ((((SS)(SS))S)(SS)) -> (((SS)((SS)((SS)S))(SS)) -> ((S(SS))(((SS)S)(SS))) -> ((S(SS))((S(SS))(S(SS)))).

Zadanie 2. Predlozhite jeffektivnuju strukturu dannyh dlja predstavlenija S-termov, oblegchajuschuju primenenie S-pravila. Napishite dve procedury: "readterm" i "printterm". Pervaja iz nih preobrazuet S-termy v Vashu strukturu dannyh iz formy, porozhdaemoj proceduroj "gensterm"; vtoraja preobrazuet S-termy iz Vashej struktury v formu, porozhdaemuju proceduroj "gensterm". Vasha programma dolzhna demonstrirovat' jeti preobrazovanija.

Zadanie 3. Napishite proceduru "reduce", vypolnjajuschuju odin shag redukcii v sootvetstvii s S-pravilom nad zadannym podtermom S-terma v Vashem predstavlenii. Programma dolzhna demonstrirovat' jeto.

Zadanie 4. Napishite proceduru "normalize", kotoraja v zadannom S-terme dolzhna posledovatel'no vybirat' podtermy i primenjat' S-pravilo do teh por, poka dal'nejshii redukcii stanut nevozmozhnymi, libo chislo shagov ne dostignet nekotorogo maksimuma, naprimer 30. Vasha programma dolzhna demonstrirovat' jeto.

Zadanie 5. Ob''edinite vse procedury v odnu programmu, kotoraja:

- zaprashivaet u pol'zovatelja dlinu n;
- porozhdaet s pomosch'ju procedury "gensterm" S-termy zadannoj dliny;
- preobrazuet vse S-termy v Vashe predstavlenie;
- normalizuet ih (esli jeto vozmozhno);
- vyvodit v kachestve rezul'tata normalizovannye S-termy;
- vyvodit posledovatel'no chislo shagov redukcii, sovershennyh nad kazhdym S-termom, libo soobschenie "not normalized", esli normalizacija trebuet bolee 30 shagov;
- vyvodit chislo nenormalizovannyh termov i obschee chislo vseh S-termov zadannoj dliny n.

Используются технологии uCoz