From 38967552febfe03106e55bb92290f61122a22b0c Mon Sep 17 00:00:00 2001 From: Polevara Veronika Date: Sun, 29 Oct 2023 16:43:39 +0100 Subject: [PATCH] wykonane zadania z tasku B --- TaskB00/run.py | 58 ++++++++++++ TaskB02/fsa_description.arg | 15 +++ TaskB02/run.py | 58 ++++++++++++ TaskB05/fsa_description.arg | 58 ++++++++++++ TaskB05/run.py | 58 ++++++++++++ TaskB08/fsa_description.arg | 184 ++++++++++++++++++++++++++++++++++++ TaskB08/run.py | 58 ++++++++++++ TaskX02/run.py | 7 ++ 8 files changed, 496 insertions(+) create mode 100644 TaskB00/run.py create mode 100644 TaskB02/fsa_description.arg create mode 100644 TaskB02/run.py create mode 100644 TaskB05/fsa_description.arg create mode 100644 TaskB05/run.py create mode 100644 TaskB08/fsa_description.arg create mode 100644 TaskB08/run.py create mode 100644 TaskX02/run.py diff --git a/TaskB00/run.py b/TaskB00/run.py new file mode 100644 index 0000000..05fbf52 --- /dev/null +++ b/TaskB00/run.py @@ -0,0 +1,58 @@ +import sys + + +class FSA: + + def __init__(self): + self.initial_state = '0' + self.final_states = set() + + self.transitions = dict() + self.alphabet = set() + + def add_transition(self, state_from, state_to, symbol): + + if state_from in self.transitions.keys(): + self.transitions[state_from][symbol] = state_to + else: + self.transitions[state_from] = dict() + self.transitions[state_from][symbol] = state_to + + def add_final_state(self, state): + self.final_states.add(state) + + def get_final_state(self, string): + + current_state = self.initial_state + for symbol in string: + current_state = self.transitions[current_state][symbol] + return current_state + + def accepts(self, string): + + if self.get_final_state(string) in self.final_states: + return True + else: + return False + + +fsa = FSA() + +table = open(sys.argv[1]) +for line in table: + line = line.rstrip('\n') + if len(line.split('\t')) == 3: + a, b, c = line.split('\t') + fsa.add_transition(a, b, c) + fsa.alphabet.add(c) + elif len(line.split('\t')) == 1: + fsa.add_final_state(line) + else: + assert False + +for line in sys.stdin: + word = line.strip() + if fsa.accepts(word): + print("YES") + else: + print("NO") \ No newline at end of file diff --git a/TaskB02/fsa_description.arg b/TaskB02/fsa_description.arg new file mode 100644 index 0000000..6816125 --- /dev/null +++ b/TaskB02/fsa_description.arg @@ -0,0 +1,15 @@ +0 1 1 +1 5 0 +0 6 0 +1 6 1 +6 6 1 +6 6 0 +2 3 1 +3 4 1 +4 5 0 +2 2 0 +3 5 0 +4 4 1 +5 3 1 +5 2 0 +5 \ No newline at end of file diff --git a/TaskB02/run.py b/TaskB02/run.py new file mode 100644 index 0000000..05fbf52 --- /dev/null +++ b/TaskB02/run.py @@ -0,0 +1,58 @@ +import sys + + +class FSA: + + def __init__(self): + self.initial_state = '0' + self.final_states = set() + + self.transitions = dict() + self.alphabet = set() + + def add_transition(self, state_from, state_to, symbol): + + if state_from in self.transitions.keys(): + self.transitions[state_from][symbol] = state_to + else: + self.transitions[state_from] = dict() + self.transitions[state_from][symbol] = state_to + + def add_final_state(self, state): + self.final_states.add(state) + + def get_final_state(self, string): + + current_state = self.initial_state + for symbol in string: + current_state = self.transitions[current_state][symbol] + return current_state + + def accepts(self, string): + + if self.get_final_state(string) in self.final_states: + return True + else: + return False + + +fsa = FSA() + +table = open(sys.argv[1]) +for line in table: + line = line.rstrip('\n') + if len(line.split('\t')) == 3: + a, b, c = line.split('\t') + fsa.add_transition(a, b, c) + fsa.alphabet.add(c) + elif len(line.split('\t')) == 1: + fsa.add_final_state(line) + else: + assert False + +for line in sys.stdin: + word = line.strip() + if fsa.accepts(word): + print("YES") + else: + print("NO") \ No newline at end of file diff --git a/TaskB05/fsa_description.arg b/TaskB05/fsa_description.arg new file mode 100644 index 0000000..5e7b84a --- /dev/null +++ b/TaskB05/fsa_description.arg @@ -0,0 +1,58 @@ +0 1 1 +1 2 9 +2 3 1 +2 3 2 +2 3 3 +2 3 4 +2 3 5 +2 3 6 +2 3 7 +2 3 8 +2 3 9 +2 3 0 +3 4 1 +3 4 2 +3 4 3 +3 4 4 +3 4 6 +3 4 5 +3 4 7 +3 4 8 +3 4 9 +3 4 0 +2 0 x +3 0 x +0 0 0 +0 0 x +0 0 2 +0 0 3 +0 0 4 +0 0 5 +0 0 6 +0 0 7 +0 0 8 +0 0 9 +1 0 0 +1 0 x +1 0 1 +1 0 2 +1 0 3 +1 0 4 +1 0 5 +1 0 6 +1 0 7 +1 0 8 +4 4 0 +4 4 x +4 4 1 +4 4 2 +4 4 3 +4 4 4 +4 4 5 +4 4 6 +4 4 7 +4 4 8 +4 4 9 +4 + + diff --git a/TaskB05/run.py b/TaskB05/run.py new file mode 100644 index 0000000..05fbf52 --- /dev/null +++ b/TaskB05/run.py @@ -0,0 +1,58 @@ +import sys + + +class FSA: + + def __init__(self): + self.initial_state = '0' + self.final_states = set() + + self.transitions = dict() + self.alphabet = set() + + def add_transition(self, state_from, state_to, symbol): + + if state_from in self.transitions.keys(): + self.transitions[state_from][symbol] = state_to + else: + self.transitions[state_from] = dict() + self.transitions[state_from][symbol] = state_to + + def add_final_state(self, state): + self.final_states.add(state) + + def get_final_state(self, string): + + current_state = self.initial_state + for symbol in string: + current_state = self.transitions[current_state][symbol] + return current_state + + def accepts(self, string): + + if self.get_final_state(string) in self.final_states: + return True + else: + return False + + +fsa = FSA() + +table = open(sys.argv[1]) +for line in table: + line = line.rstrip('\n') + if len(line.split('\t')) == 3: + a, b, c = line.split('\t') + fsa.add_transition(a, b, c) + fsa.alphabet.add(c) + elif len(line.split('\t')) == 1: + fsa.add_final_state(line) + else: + assert False + +for line in sys.stdin: + word = line.strip() + if fsa.accepts(word): + print("YES") + else: + print("NO") \ No newline at end of file diff --git a/TaskB08/fsa_description.arg b/TaskB08/fsa_description.arg new file mode 100644 index 0000000..17f8f18 --- /dev/null +++ b/TaskB08/fsa_description.arg @@ -0,0 +1,184 @@ +0 1 j +1 2 u +2 3 l +3 4 i +4 5 e +5 6 t +6 6 q +6 6 w +6 6 e +6 6 r +6 6 t +6 6 y +6 6 u +6 6 i +6 6 o +6 6 p +6 6 a +6 6 s +6 6 d +6 6 f +6 6 g +6 6 h +6 6 j +6 6 k +6 6 l +6 6 z +6 6 x +6 6 c +6 6 v +6 6 b +6 6 n +6 6 m +0 0 q +0 0 w +0 0 e +0 0 r +0 0 t +0 0 y +0 0 u +0 0 i +0 0 o +0 0 p +0 0 a +0 0 s +0 0 d +0 0 f +0 0 g +0 0 h +0 0 k +0 0 l +0 0 z +0 0 x +0 0 c +0 0 v +0 0 b +0 0 n +0 0 m +1 0 q +1 0 w +1 0 e +1 0 r +1 0 t +1 0 y +1 0 i +1 0 o +1 0 p +1 0 a +1 0 s +1 0 d +1 0 f +1 0 g +1 0 h +1 0 j +1 0 k +1 0 l +1 0 z +1 0 x +1 0 c +1 0 v +1 0 b +1 0 n +1 0 m +2 0 q +2 0 w +2 0 e +2 0 r +2 0 t +2 0 y +2 0 i +2 0 o +2 0 p +2 0 a +2 0 s +2 0 d +2 0 f +2 0 g +2 0 h +2 0 j +2 0 k +2 0 u +2 0 z +2 0 x +2 0 c +2 0 v +2 0 b +2 0 n +2 0 m +3 0 q +3 0 w +3 0 e +3 0 r +3 0 t +3 0 y +3 0 u +3 0 o +3 0 p +3 0 a +3 0 s +3 0 d +3 0 f +3 0 g +3 0 h +3 0 j +3 0 k +3 0 l +3 0 z +3 0 x +3 0 c +3 0 v +3 0 b +3 0 n +3 0 m +4 0 q +4 0 w +4 0 u +4 0 r +4 0 t +4 0 y +4 0 i +4 0 o +4 0 p +4 0 a +4 0 s +4 0 d +4 0 f +4 0 g +4 0 h +4 0 j +4 0 k +4 0 l +4 0 z +4 0 x +4 0 c +4 0 v +4 0 b +4 0 n +4 0 m +5 0 q +5 0 w +5 0 e +5 0 r +5 0 u +5 0 y +5 0 i +5 0 o +5 0 p +5 0 a +5 0 s +5 0 d +5 0 f +5 0 g +5 0 h +5 0 j +5 0 k +5 0 l +5 0 z +5 0 x +5 0 c +5 0 v +5 0 b +5 0 n +5 0 m +6 + diff --git a/TaskB08/run.py b/TaskB08/run.py new file mode 100644 index 0000000..fe03aa2 --- /dev/null +++ b/TaskB08/run.py @@ -0,0 +1,58 @@ +import sys + + +class FSA: + + def __init__(self): + self.initial_state = '0' # zak�adamy dla uproszczenia, �e initial state = 0 + self.final_states = set() + + self.transitions = dict() + self.alphabet = set() + + def add_transition(self, state_from, state_to, symbol): + + if state_from in self.transitions.keys(): + self.transitions[state_from][symbol] = state_to + else: + self.transitions[state_from] = dict() + self.transitions[state_from][symbol] = state_to + + def add_final_state(self, state): + self.final_states.add(state) + + def get_final_state(self, string): + + current_state = self.initial_state + for symbol in string: + current_state = self.transitions[current_state][symbol] + return current_state + + def accepts(self, string): + + if self.get_final_state(string) in self.final_states: + return True + else: + return False + + +fsa = FSA() + +table = open(sys.argv[1]) +for line in table: + line = line.rstrip('\n') + if len(line.split('\t')) == 3: + a, b, c = line.split('\t') + fsa.add_transition(a, b, c) + fsa.alphabet.add(c) + elif len(line.split('\t')) == 1: + fsa.add_final_state(line) + else: + assert False + +for line in sys.stdin: + word = line.strip() + if fsa.accepts(word): + print("YES") + else: + print("NO") \ No newline at end of file diff --git a/TaskX02/run.py b/TaskX02/run.py new file mode 100644 index 0000000..cdbdfbe --- /dev/null +++ b/TaskX02/run.py @@ -0,0 +1,7 @@ +import sys + +count = 0 +for line in sys.stdin: + count += 1 + +print(count)