\documentclass[a4paper]{article}
\usepackage{progm}
\analpacks
\analoldal{2. feladatsor, 51. feladat}
\begin{document}
\noindent
\emph{Feladat:} Adott egy $x$ vektor, amely színeket tartalmaz sötétedő
sorrendben.  (A színeken van értelmezve egy ún. sötétségi reláció, amely
teljes rendezés.)  Keressük meg az $x$ vektorban a világoskéket!

\emph{Specifikáció:}\\
$\S = \text{A színek típusa}$ \\
$\V = \vect(\Z, \S)$ \\
$A = \alatt{\V}{x} \times \alatt{\Z}{i} \times \alatt{\L}{l}$\\
$B = \alatt{\V}{x'}$\\
$Q = ( x=x' \es \forall i\in[x.lob,x.hib-1]: x[i+1]\text{ sötétebb }x[i])$\\
$R = ( Q \es l=(\exists i\in[x.lob,x.hib]: x[i]=\text{világoskék}) \es l\nyil(i\in[x.lob, x.hib] \es x[i]=\text{világoskék}))$\\

Visszavezetés a logaritmikus keresésre, a $h$-t konstanssal (a világoskékkel) helyettesítjük:

\begin{tabular}{ccc}
  feladat &  & log. ker. \\
  \hline
  $x.lob$ & \knyil & $m$ \\
  $x.hib$ & \knyil & $n$ \\
  $\text{világoskék}$ & \knyil & $h$ \\
  $x[i]$ & \knyil & $f(i)$ \\
  $x[i]\text{ sötétebb világoskék}$ & \knyil & $x[i]>\text{világoskék}$ \\
  $x[i]\text{ világosabb világoskék}$ & \knyil & $x[i]<\text{világoskék}$
\end{tabular}

\begin{stuki}[14cm]
  \stm{u,v,l:=x.lob,x.hib,\hamis}
  \begin{WHILE}{3}{\stm{\nem l \es u \le v}}
    \stm{i:=\lceil(u+v)/2\rceil}
    \begin{CASE}{1}{3}
      \WHEN{\stm{x[i]\text{ világosabb világoskék}}}
      \stm{u:=i+1}
      \WHEN{\stm{x[i]=\text{világoskék}}}
      \stm{l:=\igaz}
      \WHEN{\stm{x[i]\text{ sötétebb világoskék}}}
      \stm{v:=i-1}
    \end{CASE}
  \end{WHILE}
\end{stuki}

Megjegyzés: $x[i] \text{ világosabb világoskék} \knyil (x[i]\ne\text{világoskék} \es \nem x[i]\text{ sötétebb világoskék})$.
\end{document}
