Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lfa:2024:lab04 [2024/10/29 09:09]
cata_chiru
lfa:2024:lab04 [2024/10/29 09:27] (current)
cata_chiru
Line 152: Line 152:
         self.components = arg         self.components = arg
    
-    # TODO 3: Completati metodele __str__, gen, __len__ si eval_gen pentru clasa Union    ​+    # TODO 3: Completati metodele __str__, gen, __len__ si eval_gen pentru clasa Union 
 + 
 +    # Hint: Look at the str.join method to create (expr1|expr2|...)
     def __str__(self) -> str:     def __str__(self) -> str:
         pass         pass
Line 193: Line 195:
     def __init__(self,​ regex: Regex):     def __init__(self,​ regex: Regex):
         self.regex = regex         self.regex = regex
 +
 +        # To memorize the base words generated by the regex inside the star, we store them in a list
         self.base_words = [""​]         self.base_words = [""​]
-        self.base_gen() 
         self.words = []         self.words = []
    
Line 201: Line 204:
         pass         pass
    
-    def base_gen(self) -> [str]: 
-        '''​To memorize the base words generated by the regex inside the star, we store them in a list'''​ 
-        ​ 
-        # Exemplu de cum comparam tipul unui Obiect cu o clasa 
-        if type(self.regex) == Star: 
-            # Implement Star.gen with a limiting threshold 
-            pass 
- 
-        # Implement Regex.gen for the rest 
-        pass            ​ 
- 
     def gen(self, no_items = 10) -> [str]:     def gen(self, no_items = 10) -> [str]:
         pass         pass
Line 244: Line 236:
     last_expr = Concat(Star(Union(Symbol('​a'​),​ Symbol('​b'​))),​ Symbol('​b'​),​ Star(Symbol('​c'​)))     last_expr = Concat(Star(Union(Symbol('​a'​),​ Symbol('​b'​))),​ Symbol('​b'​),​ Star(Symbol('​c'​)))
     last_expr.eval_gen()     last_expr.eval_gen()
-    ​</​code>​+</​code>​
     ​     ​
 The output should be similar to: The output should be similar to:
 <​code>​ <​code>​
-Union (a | b) generates ['​a',​ '​b'​].+Union (a | b) has length 1 and generates ['​a',​ '​b'​].
  
-Concat (a(a | b | c)) generates ['​aa',​ '​ab',​ '​ac'​].+Concat (a(a | b | c)) has length 2 and generates ['​aa',​ '​ab',​ '​ac'​].
  
-Concat ((a | b | c)(a | b | c)b) generates ['​aab',​ '​abb',​ '​acb',​ '​bab',​ '​bbb',​ '​bcb',​ '​cab',​ '​cbb',​ '​ccb'​].+Concat ((a | b | c)(a | b | c)b) has length 3 and generates ['​aab',​ '​abb',​ '​acb',​ '​bab',​ '​bbb',​ '​bcb',​ '​cab',​ '​cbb',​ '​ccb'​].
  
-Star (a*) generates ['',​ '​a',​ '​aa',​ '​aaa',​ '​aaaa',​ '​aaaaa',​ '​aaaaaa',​ '​aaaaaaa',​ '​aaaaaaaa',​ '​aaaaaaaaa',​ '​aaaaaaaaaa',​ '​...'​].+Star (a*) has length 10000000 ​generates ['',​ '​a',​ '​aa',​ '​aaa',​ '​aaaa',​ '​aaaaa',​ '​aaaaaa',​ '​aaaaaaa',​ '​aaaaaaaa',​ '​aaaaaaaaa',​ '​aaaaaaaaaa',​ '​...'​].
  
-Concat ((a | b)(a*)) generates ['​a',​ '​b',​ '​aa',​ '​ba',​ '​aaa',​ '​baa',​ '​aaaa',​ '​baaa'​].+Concat ((a | b)(a*)) ​has length 10000001 and generates ['​a',​ '​b',​ '​aa',​ '​ba',​ '​aaa',​ '​baa',​ '​aaaa',​ 'baaa', '...'].
  
-Concat (((a | b)*)b(c*)) generates ['​b',​ '​ab',​ '​bb',​ '​bc',​ '​aab',​ '​abb',​ '​abc',​ '​bab',​ '​bbb',​ '​bbc',​ '​bcc',​ '​aaab',​ '​aabb',​ '​aabc',​ '​abab',​ '​abbb',​ '​abbc',​ '​abcc',​ '​baab',​ '​babb',​ '​babc',​ '​bbab',​ '​bbbb',​ '​bbbc',​ '​bbcc',​ 'bccc', '​aaaab',​ 'aaabb', '​...'​].+Concat (((a | b)*)b(c*)) ​has length 20000001 and generates ['​b',​ '​ab',​ '​bb',​ '​bc',​ '​aab',​ '​abb',​ '​abc',​ '​bab',​ '​bbb',​ '​bbc',​ '​bcc',​ '​aaab',​ '​aabb',​ '​aabc',​ '​abab',​ '​abbb',​ '​abbc',​ '​abcc',​ '​baab',​ '​babb',​ '​babc',​ '​bbab',​ '​bbbb',​ '​bbbc',​ '​bbcc',​ '​bccc',​ '​...'​].
  
 </​code>​ </​code>​