Добавить в цитаты Настройки чтения

Страница 9 из 16



                    for x21 in digits - set([x11, x12, x13, x14]):

                        for x22 in digits - set([x11, x12, x13, x14, x21]):

                    for x23 in digits - set([x11, x12, x13, x14, x21, x22]):

                        x24 = s - x21 - x22 - x23

                        if x24 <= 0 or x24 in [x11, x12, x13, x14, x21, x22, x23]: continue

                    for x31 in digits - set([x11, x12, x13, x14, x21, x22, x23, x24]):

                        for x32 in digits - set([x11, x12, x13, x14, x21, x22, x23, x24, x31]):

                            for x33 in digits - set([x11, x12, x13, x14, x21, x22, x23, x24, x31, x32]):

                                x34 = s - x31 - x32 - x33

                                x41 = s - x11 - x21 - x31

                                x42 = s - x12 - x22 - x32

                                x43 = s - x13 - x23 - x33





                                x44 = s - x14 - x24 - x34

                                if x34 <= 0 or x41 <= 0 or x42 <= 0 or x43 <= 0 or x44 <= 0: continue

                                data = [x11, x12, x13, x14, x21, x22, x23, x24, x31, x32, x33, x34, x41, x42, x43, x44]

                                if len(data) != len(set(data)): continue

                                if is_magic(data, 4):

                                    print data

                                    cnt += 1

print cnt

В результате, программа проработала всего лишь около часа (вместо 3-х лет!), всего было выведено 7040 квадратов размерностью 4х4. Разумеется, большинство из них являются поворотами или отражениями друг друга, было доказано что уникальных квадратов всего 880.

Вспомним магический квадрат Дюрера, в нижнем его столбце есть цифры 1514, соответствующие году создания гравюры. С помощью программы можно решить еще одну задачу: посмотреть сколько всего возможно квадратов с такими цифрами. Здесь число вариантов перебора еще меньше, т. к. еще 2 цифры фиксированы. Оказывается, помимо «авторского», возможны всего 32 варианта, например: