python进阶练习题:8个方块益智【难度:2级】:

在下面的方块:

安排数字1至8中的平方,从而使得没有两个连续的整数彼此接触在其一侧或角落.

例如:


[_],[A],[B],[_],
[C],[d],[E],[F],
[_],[G],[H],[_]

如果我们设置单元格A 是** 2 .小区B,C,d * 和 E不能是* 3 **.

如果我们设置单元格d 是** 4 .小区A,B,C,E,G * 和 H不能* 5 **.

没有数字可以重复.

有4个答案了这个难题.你必须找到它们中的至少一个.

功能** ** puzzle_answer应返回一个元组* * 有* 大小8 * 和数字应该在顺序*(A,B,C,d,E,F,G,H)*.

提示:你应该能够堆叠8范围(1,9)来回答这个问题,但会占用大量的内存.你怎么能减少内存使用情况?

模板功能只是给一个良好的开端,你可以在任何你喜欢的形式解决这个问题.如果可能的话没有谷歌的答案,或者返回一个硬编码的答案,告诉你如何来到这个答案.

编程目标:

def check_if_valid(a, b, c, d, e, f, g, h):
    if a == 1:
        if b == 2:
            return False
    if d == 4:
        if a  == 5 or b == 5 or c == 5 or g == 5 or h == 5:
            return False
    # happy coding
def puzzle_answer():
    answer = ()
    for A in range(1, 9):
                for D in range(1, 9):
                    for E in range(1, 9):
                        for F in range(1, 9):
                            for G in range(1, 9):
                                for H in range(1, 9):
                                    if check_if_valid(A, B, C, D, E, F, G, H):
                                        answer = (A, B, C, D, E, F, G, H)


测试样例:

# TODO: Replace examples and use TDD development by writing your own tests
# These are some of the methods available:
#   test.expect(boolean, [optional] message)
#   test.assert_equals(actual, expected, [optional] message)
#   test.assert_not_equals(actual, expected, [optional] message)
# You can use Test.describe and Test.it to write BDD style test groupings


最佳答案(多种解法):

点击查看答案

更多关联题目:

python基础练习题:年龄天数【难度:1级】–景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
python进阶练习题:数组和相关值的排列【难度:2级】–景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
python基础练习题:reverseIt【难度:1级】–景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶

免责申明

本博客所有编程题目及答案均收集自互联网,主要用于供网友学习参考,如有侵犯你的权益请联系管理员及时删除,谢谢
题目收集至https://www.codewars/
https://www.codewars/kata/8-squares-puzzle

更多推荐

python进阶练习题:8个方块益智【难度:2级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶