% -*- coding: iso-8859-2 -*-
\documentclass[a4paper]{article}
\usepackage{progm}
\analpacks
\analoldal{3. feladatsor, 2. feladat}
\def\Ch{\text{Ch}}
\begin{document}
\noindent
\emph{Feladat:} Adott két vektorban egy angol--latin szótár: az egyik
vektor $i$-edik eleme tartalmazza a másik vektor $i$-edik elemének a
jelentését.  Válasszuk ki egy sorozatba azokat az angol szavakat,
amelyek szóalakja nem egyezik meg a latin megfelelőjével.

\emph{Specifikáció:}\\
$\V = \vect(\Z,\seq^+(\Ch))$\\
$\S = \seq(\seq^+(\Ch))$ \\
$A = \alatt{\V}{a} \times \alatt{\V}{l} \times \alatt{\S}{y}$\\
$B = \alatt{\V}{a'} \times \alatt{\V}{l'}$\\
$Q = ( a=a' \es l=l' \es a.\lob=l.\lob \es a.\hib=l.\hib )$\\
$R = ( Q \es y=f(a',l') )$, ahol $f\colon \V\times\V\to\S$ és $f$
elemenként feldolgozható, az egy elemet feldolgozó függvény:
$$
f((\{a\},\{l\})) =
\begin{cases}
  \emptyset, &\text{ha } a=l, \\
  \{a\}, &\text{ha } a\ne l.
\end{cases}
$$

Ez egy egyváltozós-egyértékű elemenkénti feldolgozás, melynek
programja halmazokra:

\begin{stuki}[6cm]
  \stm{y:=\varnothing}
  \begin{WHILE}{3}{\stm{a\ne\varnothing}}
    \stm{e:\in a}
    \stm{y:=y\Tilde{\cup}f(\{e\})}
    \stm{a:=a\Tilde- e}
  \end{WHILE}
\end{stuki}

Írjuk át ezt a tételt az ismert koordináta-transzformációkkal bemenő vektorokra és kimenő sorozatra:
\begin{stuki}[6cm]
  \stm{y:=<>}
  \stm{i:=a.\lob-1}
  \begin{WHILE}{2}{\stm{i\ne a.\hib}}
    \stm{y:hiext(f(\{a_{i+1}, l_{i+1}\}))}
    \stm{i:=i+1}
  \end{WHILE}
\end{stuki}

Az esetszétválasztással definiált függvény kiszámításának tételét felhasználva:
\begin{stuki}[6cm]
  \stm{y:=<>}
  \stm{i:=a.\lob-1}
  \begin{WHILE}{3}{\stm{i\ne a.\hib}}
    \begin{IF}{1}{\stm{a_{i+1}\ne l_{i+1}}}
      \stm{y:hiext(a_{i+1})}
      \ELSE
      \SKIP
    \end{IF}
    \stm{i:=i+1}
  \end{WHILE}
\end{stuki}

\end{document}
