Simplifying Failures
# # Finish the delta debug function ddmin # import re def test(s): print s, len(s),repr(s) if re.search("<SELECT[^>]*>", s) >= 0: print (s, len(s),"FAIL") return "FAIL" else: return "PASS" def ddmin(s): assert test(s) == "FAIL" n = 2 # Initial granularity while len(s) >= 2: start = 0 subset_length = len(s) / n some_complement_is_failing = False while start < len(s): complement = s[:start] + s[start + subset_length:] if test(complement) == "FAIL": s = complement n = max(n - 1, 2) some_complement_is_failing = True break start += subset_length if not some_complement_is_failing: # YOUR CODE HERE if len(s) == n: break n = min(n * 2, len(s)) return s # UNCOMMENT TO TEST html_input = '<SELECT>foo</SELECT>' print ddmin(html_input)