| author | Christian Urban <urbanc@in.tum.de> | 
| Wed, 08 Feb 2017 11:01:50 +0000 | |
| changeset 474 | 331b2c9e525f | 
| parent 420 | progs/catastrophic.py@25bc57b32efa | 
| permissions | -rwxr-xr-x | 
| 49 | 1 | #!/usr/bin/env python | 
| 2 | import re | |
| 3 | import sys | |
| 4 | ||
| 420 
25bc57b32efa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
411diff
changeset | 5 | # case of catastrophic backtracking in Python | 
| 
25bc57b32efa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
411diff
changeset | 6 | # | 
| 
25bc57b32efa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
411diff
changeset | 7 | # regex: (a?){n} a{n}
 | 
| 
25bc57b32efa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
411diff
changeset | 8 | # strings: aa... | 
| 
25bc57b32efa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
411diff
changeset | 9 | # | 
| 
25bc57b32efa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
411diff
changeset | 10 | # call with timing as: | 
| 
25bc57b32efa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
411diff
changeset | 11 | # | 
| 
25bc57b32efa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
411diff
changeset | 12 | # > time ./catastrophic.py 20 | 
| 
25bc57b32efa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
411diff
changeset | 13 | |
| 
25bc57b32efa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
411diff
changeset | 14 | # counter n given on the command line | 
| 49 | 15 | cn = sys.argv[1] | 
| 16 | ||
| 420 
25bc57b32efa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
411diff
changeset | 17 | # constructing the regex | 
| 474 | 18 | r = '(.*)a(.{%s})bc' % cn
 | 
| 49 | 19 | |
| 420 
25bc57b32efa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
411diff
changeset | 20 | # calling the matching function | 
| 474 | 21 | #m = re.match(r, "axaybzbc") | 
| 22 | m = re.match(r, "a" * 100 + "a" * int(cn) + "bc") | |
| 49 | 23 | |
| 24 | print m.group(0) |