From d72a208fa903fdf183c4e5e530831930d3de91f8 Mon Sep 17 00:00:00 2001 From: BohdanBakhlul Date: Wed, 4 Dec 2019 11:31:03 +0100 Subject: [PATCH] B00 added --- TaskB00/Makefile | 0 TaskB00/run | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 TaskB00/Makefile create mode 100644 TaskB00/run diff --git a/TaskB00/Makefile b/TaskB00/Makefile new file mode 100644 index 0000000..e69de29 diff --git a/TaskB00/run b/TaskB00/run new file mode 100644 index 0000000..0b0285e --- /dev/null +++ b/TaskB00/run @@ -0,0 +1,58 @@ +#!/usr/bin/python3 +import re, sys + +class automata: + def __init__(self): + self.states = [] + self.rules = [] + self.current = '0' + + def datainp(self, rls, wins): + for rule in rls: + self.rules += [(rule.split(' '))] + self.win_states = wins + self.states = [row[2] for row in self.rules] + + def check(self): + k = [row[::2] for row in self.rules] + if [x for x in k if k.count(x) > 1]: + return True + return False + + def play(self, word): + for l in list(word)[:-1]: + if (l not in self.states): + self.current = 'something' + break + res = 0 + for rule in self.rules: + if (rule[0] == self.current) and (rule[2] == l): + self.current = rule[1] + res = 1 + break + if (res == 0): + self.current = 'something' + break + if (self.current in self.win_states): + print ('YES ' + word[:-1]) + else: + print ('NO ' + word[:-1]) + self.current = '0' + +def search_rules(inp): + return re.findall(r'[0-9]* [0-9]* [a-z]', inp) +def search_states(inp): + return re.findall(r'([0-9]+)\n', inp) + + +file = '' +for line in sys.stdin: + file = file + line +z = automata() +z.datainp(search_rules(file), search_states(file)) +if (z.check()): + print('NONDETERMINISTIC') +else: + data = open(sys.argv[1], 'r') + for line in data: + z.play(line)