﻿<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xml" href="/cjs/examples.screen.xsl" media="screen"?>
<examples chapter="L-systémy" directory="tdd/x">

  <!--use-math/-->

  <note>
      Příklady slouží pro výuku základů programování, proto se nejdříve kreslí již spočítané předpisy.
  </note>

  <theory>
      Pokud zatím ponecháme stranou <a href="/materialy/techs/L-systems/overview.xml">teorii L-systémů</a> a smíříme se s tím, že nám prostě někdo dodal již hotové předpisy pro jejich kreslení, stačí nám pro úspěšné vyprodukování kreseb vědět poměrně málo. Pokud budeme brát řetězec předpisu znak po znaku jako jednotlivé příklady pro želví grafiku, platí následující:
      <ul>
          <li>
              na velká písmena želva udělá předem zvolený počet kroků směrem, kterým je natočená, a přitom kreslí;
          </li>
          <li>
              na malá písmena želva udělá předem zvolený počet kroků směrem, kterým je natočená, ale přitom nekreslí;
          </li>
          <li>
              znaménko <code>+</code>, resp. <code>-</code>, značí otočení želvy o předem zadaný (na problému závislý) úhel proti směru, reps. ve směru, hodinových ručiček (tedy stejně jako v matematice);
          </li>
          <li>
              závorka <code>[</code>, resp. <code>]</code>, značí uložení aktuálního stavu želvy (tj. pozice a natočení) na (pomocný) zásobník, resp. naopak načtení (a změna) stavu želvy ze zásobníku; při změně stavu želvy na základě poslední hodnoty v zásobníku se nekreslí – želva se na uvedené souřadnice „teleportuje“.
          </li>
      </ul>
      Délka kroku je celkem volně volitelná, víceméně souvisí s tím, jak velká či hustá bude výsledná kresba. Podobně striktní rozdělení, na které písmenka se kreslí a na která ne, si také můžete upravit – úpravou pravidel (např. kreslí se i na malá písmenka, kreslí se pouze na některá z velkých písmenek) mohou vzniknout zajímavé obrazce.
  </theory>

<!--
  <example>
    <text>
        …
        <pre lang="python">
        </pre>
        …
        <pre lang="python" src="X/x.py" />
        …
    </text>
    <hint>
    </hint>
    <tests src="X/.py" lang="python" />
    <solution src="X/.py" lang="python" />
  </example>
-->


  <example>
    <text>
        <em>Sierpińského fraktál</em>: krok 10, úhel 60
        <br/>
        <code>B-A-B+A+B+A+B-A-B-A+B+A-B-A-B-A+B+A-B-A-B+A+B+A+B-A-B+A+B+A-B-A-B-A+B+A+B-A-B+A+B+A+B-A-B+A+B+A-B-A-B-A+B+A+B-A-B+A+B+A+B-A-B-A+B+A-B-A-B-A+B+A-B-A-B+A+B+A+B-A-B-A+B+A-B-A-B-A+B+A+B-A-B+A+B+A+B-A-B+A+B+A-B-A-B-A+B+A-B-A-B+A+B+A+B-A-B-A+B+A-B-A-B-A+B+A-B-A-B+A+B+A+B-A-B-A+B+A-B-A-B-A+B+A+B-A-B+A+B+A+B-A-B+A+B+A-B-A-B-A+B+A-B-A-B+A+B+A+B-A-B-A+B+A-B-A-B-A+B+A-B-A-B+A+B+A+B-A-B+A+B+A-B-A-B-A+B+A+B-A-B+A+B+A+B-A-B+A+B+A-B-A-B-A+B+A+B-A-B+A+B+A+B-A-B-A+B+A-B-A-B-A+B+A-B-A-B+A+B+A+B-A-B</code>
    </text>
  </example>

  <example>
    <text>
        <em>Kochův čtverec</em>: krok 10, úhel 90
        <br/>
        <code>FF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-FFF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-F-FF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-F--FF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-F-FF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-F-FF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-FFF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-F-FF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-F--FF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-F-FF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-F-FF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-FFF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-F-FF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-F--FF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-F-FF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-F-FF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-FFF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-F-FF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-F--FF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-F-FF-F--F-FFF-F--F-F-FF-F--F-F--FF-F--F-F-FF-F--F-F</code>
    </text>
  </example>

  <example>
    <text>
        Jiný <em>Kochův čtverec</em>: krok 10, úhel 90
        <br/>
        <code>FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FFFF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF-FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FFFF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FFFF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF-FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FFFF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FFFF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF-FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FFFF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FFFF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF-FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FFFF+F-F+F+FFFF+F-F+F+FF+FF+F-F+F+FF-FF+F-F+F+FF+FF+F-F+F+FF+FF+F-F+F+FFFF+F-F+F+FF</code>
    </text>
  </example>

  <example>
    <text>
        <em>Ostrovy a jezera</em>: krok 10, úhel 90
        <br/>
        <code>F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+ffffff-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFffffff+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF-ffffff+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFffffff-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+ffffff-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFffffff+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF-ffffff+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFffffff-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+ffffff-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFffffff+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF-ffffff+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFffffff-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+ffffff-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFffffff+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF-ffffff+F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFffffff-F+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFFF+f-FF+F+FF+Ff+FF-f+FF-F-FF-Ff-FFF</code>
    </text>
    <hint>
        Malá písmenka se tedy nekreslí, pouze se na ně pochoduje směrem dopředu. Když na ně kreslit budete, dostane jinak vypadající výsledný obrazec – 
          místo ostrovů a jezer
          <img src="_files/l-systems/F-f.jpg" width="300" alt="malá písmena nekreslí" align="middle" />
          to bude hromada vlaječek
          <img src="_files/l-systems/F+f.jpg" width="300" alt="malá písmena kreslí" align="middle" />
        <!-- 963x964 -->
    </hint>
  </example>

<!--
  <example>
    <text>
    </text>
    <hint>
    </hint>
    <tests src="X/.py" lang="python" />
    <solution src="X/.py" lang="python" />
  </example>
-->


</examples>
