Задание »

Teksts latviski

ID: latv
Grūtība: 1/5
Laika limits: 1


Uzdevums

Sensenos laikos, kad vēl nebija ne Microsoft, ne Word, ne Excel, latvieši burtu ar diakritiskajām zīmēm pierakstīšanai datorā izmantoja sekojošus principus:

  • patskaņus ā,ē,ī,ū apzīmēja attiecīgo īso patskani dubultojot (aa,ee,ii,uu),
  • līdzskaņus ģ,ļ,ķ,ņ apzīmēja aiz attiecīgā nemīkstinātā līdzskaņa liekot burtu ‘j’ (gj,lj,kj,nj),
  • līdzskaņus (č,š,ž) apzīmēja aiz attiecīgā līdzskaņa liekot burtu ‘h’ (ch,sh,zh).

Visi citi burti datorā tika pierakstīti tāpat kā jebkurā tekstā.
Piemēram, teksts «pļavā nekad neēd svešas puķītes» datorā tika pierakstīts kā «pljavaa nekad neeed sveshas pukjiites».

Tiesa, atpakaļ atkodēt varēja ne visus tekstus.
Piemēram, nepārzinot latviešu valodu, nevar noteikt, ka vārdam «neeed» atbilstošais vārds nav «nēed».
Bet par šādiem īpašiem gadījumiem Jums nav jāuztraucas.

Uzrakstiet programmu, kas dotam datorā pierakstītajam tekstam (pēc iepriekšaprakstītajiem noteikumiem) nosaka, kāds mazākais burtu skaits varēja būt oriģinālajā tekstā!

Ievaddati

Teksta faila latv.in vienīgajā rindā dota simbolu virkne, kas sastāv no latviešu valodas mazajiem burtiem bez diakritiskajām zīmēm ar tukšumsimboliem kā vārdu atdalītājiem.
Virknes kopgarums nepārsniedz 250 simbolus.
Zināms arī, ka ievadītajā virknē ir vismaz viens burts un starp blakus esošiem vārdiem ir viens vai vairāki tukšumsimboli.

Izvaddati

Teksta faila latv.out vienīgajā rindā jāizvada naturāls skaitlis – mazākais iespējamais burtu skaits oriģinālajā tekstā.

Piemērs

latv.in latv.out
pljavaa nekad neeed sveshas pukjiites
27

Atsauces

Uzdevums izmantots Latvijas 15.informātikas olimpiādes II (rajona) kārtā.
Autors: M.Opmanis


© 2001-2002 olimps! http://www.lio.lv/olimps/

Решение »

var r:string;
l,i:integer;
f:text;
begin
Assign(f,'latv.in');
Reset(f);
read(f,r);
Close(f);

l:=0;
i:=1;
while i<=length(r) do begin
case r[i] of
  'a': begin if r[i+1]='a' then begin i:=i+2; inc(l); end else inc(i);  end;
  'e': begin if r[i+1]='e' then begin i:=i+2; inc(l); end else inc(i);  end;
  'i': begin if r[i+1]='i' then begin i:=i+2; inc(l); end else inc(i);  end;
  'u': begin if r[i+1]='u' then begin i:=i+2; inc(l); end else inc(i);  end;
  'g': begin if r[i+1]='j' then begin i:=i+2; inc(l); end else inc(i);  end;
  'l': begin if r[i+1]='j' then begin i:=i+2; inc(l); end else inc(i);  end;
  'k': begin if r[i+1]='j' then begin i:=i+2; inc(l); end else inc(i);  end;
  'n': begin if r[i+1]='j' then begin i:=i+2; inc(l); end else inc(i);  end;
  'c': begin if r[i+1]='h' then begin i:=i+2; inc(l); end else inc(i);  end;
  's': begin if r[i+1]='h' then begin i:=i+2; inc(l); end else inc(i);  end;
  'z': begin if r[i+1]='h' then begin i:=i+2; inc(l); end else inc(i);  end;
  ' ': begin inc(l); inc(i); end;
  else inc(i);
end;
end;

Assign(f,'latv.out');
Rewrite(f);
write(f,length(r)-l);
Close(f);
end.

Результат: 10/10

Добавить комментарий