aboutsummaryrefslogtreecommitdiff
path: root/challenge-081/roger-bell-west/python/ch-1.py
blob: 42f02ed19b6065b7b094585a458eed7429b4daf9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#! /usr/bin/python3

import unittest
from math import sqrt

def cbs(*strs):
    bss=map(bs,strs)
    r=set()
    f=False
    for bsa in bss:
        if (f):
            s=set(bsa)
            r=r & s
        else:
            r=set(bsa)
            f=True
    return sorted(r)

def bs(str):
    sl=len(str)
    f=dict()
    for n in range(1,int(sqrt(sl))+1):
        p=sl/n
        if (p == int(p)):
            f[n]=p
            f[p]=n
    out=list()
    for l in sorted(f.keys()):
        q=str[0:int(l)]
        if (q * int(f[l]) == str):
            out.append(q)
    return out

class TestCbs(unittest.TestCase):

    def test_bs1(self):
        self.assertEqual(bs('abcdabcd'),['abcd','abcdabcd'],'bs-only 1')

    def test_bs2(self):
        self.assertEqual(bs('aaa'),['a','aaa'],'bs-only 2')

    def test_ex1(self):
        self.assertEqual(cbs('abcdabcd','abcdabcdabcdabcd'),['abcd','abcdabcd'],'example 1')

    def test_ex2(self):
        self.assertEqual(cbs('aaa','aa'),['a',],'example 2')

unittest.main()