Wstęp do programowania / Ćwiczenia 3: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Linia 152: Linia 152:
Podaj gramatykę generującą liczby w zapisie binarnym, które są podzielne przez 3.
Podaj gramatykę generującą liczby w zapisie binarnym, które są podzielne przez 3.


{{rozwiazanie| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"> <div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie 1</span>
<div class="mw-collapsible-content" style="display:none">
S<sub>0</sub> → 0 | S<sub>0</sub>0 | S<sub>1</sub>1  
S<sub>0</sub> → 0 | S<sub>0</sub>0 | S<sub>1</sub>1  


Linia 165: Linia 167:
''Pełność'': Przez indukcję po długości liczby pokażemy, że każdą liczbę o reszcie z dzielenia przez 3 wynoszącej i da się wygenerować z symbolu S<sub>i</sub>. Istotnie, dla liczb jednocyfrowych jest to oczywiste. Dla pozostałych, postaci wb, wystarczy popatrzeć na ostatnią cyfrę b. Reszta z dzielenia wb przez 3 oraz wartość b determinują resztę z dzielenia w przez 3. Dla wszystkich sześciu przypadków w naszej gramatyce istnieje odpowiednia produkcja. Następnie wystarczy użyć założenia indukcyjnego, aby wygenerować w.
''Pełność'': Przez indukcję po długości liczby pokażemy, że każdą liczbę o reszcie z dzielenia przez 3 wynoszącej i da się wygenerować z symbolu S<sub>i</sub>. Istotnie, dla liczb jednocyfrowych jest to oczywiste. Dla pozostałych, postaci wb, wystarczy popatrzeć na ostatnią cyfrę b. Reszta z dzielenia wb przez 3 oraz wartość b determinują resztę z dzielenia w przez 3. Dla wszystkich sześciu przypadków w naszej gramatyce istnieje odpowiednia produkcja. Następnie wystarczy użyć założenia indukcyjnego, aby wygenerować w.
</div>
</div>
</div>}}
</div>


{{cwiczenie| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"> <div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Ćwiczenie 1</span>
<div class="mw-collapsible-content" style="display:none">
Jak należy zmodyfikować tę gramatykę, aby generowane liczby binarne nie mogły zaczynać się od 0 ?
Jak należy zmodyfikować tę gramatykę, aby generowane liczby binarne nie mogły zaczynać się od 0 ?
</div>
</div>
</div>}}
</div>
 
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
{{odpowiedz||<div class="mw-collapsible mw-made=collapsible mw-collapsed"> <div class="mw-collapsible-content" style="display:none">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Odpowiedź</span>
<div class="mw-collapsible-content" style="display:none">
S<sub>0</sub> → S<sub>0</sub>0 | S<sub>1</sub>1  
S<sub>0</sub> → S<sub>0</sub>0 | S<sub>1</sub>1  


Linia 183: Linia 188:
symbol startowy: S
symbol startowy: S
</div>
</div>
</div>}}
</div>


==Zadanie 7==
==Zadanie 7==

Wersja z 15:39, 28 maj 2020

<<< Powrót do modułu Gramatyki - definiowanie składni i semantyki wyrażeń

To są ćwiczenia z gramatyk bezkontekstowych.

Oglądaj wskazówki i rozwiązania __SHOWALL__
Ukryj wskazówki i rozwiązania __HIDEALL__


Zadanie 1 (palindromy)

Napisz gramatykę generującą wszystkie palindromy nad alfabetem {0,1}.

Rozwiązanie 1

Zadanie 2

Napisz gramatykę generującą język wszystkich słów nad alfabetem {0,1} postaci 0n1m0n+m.

Rozwiązanie 1

Zadanie 3 (wyrażenia nawiasowe)

Napisz gramatykę generującą wszystkie poprawne wyrażenia nawiasowe.

Rozwiązanie 1

Rozwiązanie 2

Zadanie 4

Podaj gramatykę języka słów w nad alfabetem {0,1} takich, że #0(w)=#1(w)

Rozwiązanie 1

Rozwiązanie 2

Zadanie 5

Podaj gramatykę języka słów w nad alfabetem {0,1} takich, że #0(w)=#1(w)+1

Rozwiązanie 1

Zadanie 6 (liczby podzielne przez 3)

Podaj gramatykę generującą liczby w zapisie binarnym, które są podzielne przez 3.

Rozwiązanie 1

Ćwiczenie 1

Odpowiedź

Zadanie 7

Podaj gramatykę generującą słowa nad alfabetem {0,1}, w których nie występuje podsłowo 000.

Rozwiązanie 1

S01

Rozwiązanie 2

S01

Rozwiązanie 3

0

Dla ciekawskich