引言

这两天班级聚会,喝酒时玩起了拍七令的游戏,输了就罚喝酒。基本上谁输的越多喝的越多就越容易输。于是写个程序,生成数字表,给大家做个参考。同时也给已经喝醉的朋友们一点提示 页面链接

Python 版本

两个条件:

  • 可迭代对象 not_mod 中任一数与当前数字的取余不为 0
  • not_in 中的任一数不在当前数字中
1
2
3
4
5
6
def seven_shots(start, end, not_mod, not_in):
    for i in range(int(start), int(end)):
        if any(map(lambda x: i % int(x) == 0, not_mod)) or any(map(lambda x: str(x) in str(i), not_in)):
            yield '拍手'
        else:
            yield str(i)

JavaScript 版本

  • 首先实现 Python 中的 any
  • 函数与 Python 版本类似。区别是返回值为 Array
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function any(iter) {
    for (var index = 0; index < iter.length; ++index) {
        if (iter[index]) return true;
    }
    return false;
}

function seven_shots(start, end, not_mod, not_in) {
    var list = [];
    for (var i = parseInt(start); i < parseInt(end); i++) {
        if (any(not_mod.map(function (x) {
                return i % parseInt(x) === 0;
            })) || any(not_in.map(function (x) {
                return i.toString().indexOf(x.toString()) > -1;
            }))) {
            list.push('拍手');
        }
        else {
            list.push(i.toString());
        }
    }
    return list;
}

实现后的页面

页面链接