This commit is contained in:
Filip Gralinski 2021-01-08 11:10:55 +01:00
parent dc687cb1a4
commit 167aa579e0
2 changed files with 47 additions and 3 deletions

41
automata/Task200Test.py Executable file
View File

@ -0,0 +1,41 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
Zadanie 200
Napisz funkcję `abc_automaton()`, która
tworzy i zwraca automat, który akceptuje
napisy zaczynające się od a, kończące się na c i zawierające w środku
dowolną liczbę znaków b
NAME: abc_automaton
PARAMS: -
RETURN: DeterministicAutomaton
POINTS: 1
"""
import unittest
from Task200 import abc_automaton
class Task200Test(unittest.TestCase):
"""Testy do zadania 200"""
def test_simple(self):
"""Prosty test."""
automaton = abc_automaton()
self.assertTrue(automaton.accepts("ac"))
self.assertTrue(automaton.accepts("abc"))
self.assertTrue(automaton.accepts("abbbbbbbbbbc"))
self.assertFalse(automaton.accepts("a"))
self.assertFalse(automaton.accepts("c"))
self.assertFalse(automaton.accepts("bbbc"))
self.assertFalse(automaton.accepts("abcabc"))
self.assertFalse(automaton.accepts(""))
if __name__ == '__main__':
unittest.main()

View File

@ -105,6 +105,8 @@ class DeterministicAutomaton:
if __name__ == '__main__': if __name__ == '__main__':
# budowanie automatu
AUTOMATON = DeterministicAutomaton() AUTOMATON = DeterministicAutomaton()
INITIAL_STATE = AUTOMATON.add_state() INITIAL_STATE = AUTOMATON.add_state()
@ -114,6 +116,7 @@ if __name__ == '__main__':
AUTOMATON.mark_as_initial(INITIAL_STATE) AUTOMATON.mark_as_initial(INITIAL_STATE)
AUTOMATON.mark_as_final(FINAL_STATE) AUTOMATON.mark_as_final(FINAL_STATE)
print AUTOMATON.accepts("x") # wypisze True # uruchamianie automatu
print AUTOMATON.accepts("") # wypisze False print(AUTOMATON.accepts("x")) # wypisze True
print AUTOMATON.accepts("ab") # wypisze False print(AUTOMATON.accepts("")) # wypisze False
print(AUTOMATON.accepts("ab")) # wypisze False