Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Dialogues by mortonfox
VOWELS = "aeiou"
class Chat:
def __init__(self):
self.mesgs = []
def connect_human(self, human):
self.human = human
human.setup_chat(self)
def connect_robot(self, robot):
self.robot = robot
robot.setup_chat(self)
def add_mesg(self, speaker, mesg):
self.mesgs.append((speaker, mesg))
def show_dialogue(self, convfunc):
return "\n".join('%s said: %s' % (speaker.name, convfunc(mesg)) for speaker, mesg in self.mesgs)
def show_human_dialogue(self):
return self.show_dialogue(lambda s: s)
def show_robot_dialogue(self):
return self.show_dialogue(lambda s: ''.join('0' if c in VOWELS else '1' for c in s.lower()))
class Interlocutor:
def __init__(self, name):
self.name = name
def setup_chat(self, chat):
self.chat = chat
def send(self, mesg):
self.chat.add_mesg(self, mesg)
class Human(Interlocutor):
pass
class Robot(Interlocutor):
pass
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
chat = Chat()
karl = Human("Karl")
bot = Robot("R2D2")
chat.connect_human(karl)
chat.connect_robot(bot)
karl.send("Hi! What's new?")
bot.send("Hello, human. Could we speak later about it?")
assert chat.show_human_dialogue() == """Karl said: Hi! What's new?
R2D2 said: Hello, human. Could we speak later about it?"""
assert chat.show_robot_dialogue() == """Karl said: 101111011111011
R2D2 said: 10110111010111100111101110011101011010011011"""
print("Coding complete? Let's try tests!")
Aug. 4, 2018