progs/catastrophic/catastrophic.py
changeset 1027 dadb5a94728d
parent 984 be2d568644f6
equal deleted inserted replaced
1026:ee39fd6df150 1027:dadb5a94728d
       
     1 #!/usr/bin/env python3
       
     2 import re
       
     3 import sys
       
     4 
       
     5 # case of catastrophic backtracking in Python
       
     6 #
       
     7 # regex: (a*)*b
       
     8 # strings: aa...a
       
     9 #
       
    10 # call with timing as:
       
    11 #
       
    12 #    time ./catastrophic2.py 20
       
    13 
       
    14 # counter n given on the command line
       
    15 cn = sys.argv[1]
       
    16 
       
    17 # calling the matching function
       
    18 s = ("a" * int(cn))
       
    19 m = re.fullmatch('(a*)*b' , s) 
       
    20 
       
    21 print(s)
       
    22 print(bool(m))