示例#1
0
 def test_powerset_full(self):
     test_in = '123,456,789'
     expected_result = """123\n456\n789\n123,456\n123,789\n456,789\n123,456,789"""
     parsed_input = parse_input(test_in)
     powerset_out = powerset_pythonic(parsed_input)
     formatted_out = '\n'.join(format_output(powerset_out))
     self.assertMultiLineEqual(formatted_out, expected_result)
def main():
    try:
        inline = sys.stdin.readlines()[0][:-1]
        elements = parse_input(inline)
    except IndexError:
        logger.error('No argument was provided. Exit.')
        sys.exit(
            """Input argument is missing. Please provide a string complaint to the following regular expression: '\w+(\,\w+)*'"""
        )
    except ValueError:
        logger.error(
            'The passed input does not respect the following regular expression: \w+(\,\w+)*'
        )
        sys.exit(
            'Your input does not respect this regular expression: \w+(\,\w+)*')

    try:
        iter_powerset = powerset_pythonic(elements)
        print(*format_output(iter_powerset), sep='\n')
    except MemoryError as e:
        exception_name = e.__class__.__name__
        logger.error('The program has exited due to {} exception'.format(
            exception_name))
        sys.exit(
            '{}: It is an O(n*2^n) algorithm in memory and space. Watch out for the input length. Try with less input elements.'
            .format(str(exception_name)))
示例#3
0
 def test_parse_input(self):
     test_in = '1,2,3'
     expected_result = ['1', '2', '3']
     self.assertEqual(parse_input(test_in), expected_result,
                      'Input parser test failed!')