标签: logic

2048游戏的最佳算法是什么?

我最近偶然发现了2048游戏.您可以通过在四个方向中的任意一个方向上移动它们来合并类似的图块,以制作"更大" 每次移动后,新的图块会出现在随机空位置,其值为24.当所有框都被填充并且没有可以合并图块的移动时,或者您创建值为的图块时,游戏会终止2048.

一,我需要遵循明确的战略来实现目标.所以,我想为它编写一个程序.

我目前的算法:

while (!game_over) {
    for each possible move:
        count_no_of_merges_for_2-tiles and 4-tiles
    choose the move with a large number of merges
}
Run Code Online (Sandbox Code Playgroud)

我做的是在任何时候,我会尝试合并与价值观的瓷砖24,就是我努力24瓷砖,尽可能最小.如果我这样尝试,所有其他瓷砖自动合并,策略似乎很好.

但是,当我实际使用这个算法时,我只能在游戏结束前获得大约4000点.AFAIK的最高分数略高于20,000分,远高于我目前的分数.有比上面更好的算法吗?

algorithm logic artificial-intelligence 2048

1893
推荐指数
13
解决办法
91万
查看次数

是|| 而且!运营商是否有足够的逻辑表达式?

逻辑表达式( a && b ) (包括ab具有布尔值)可以写成像!(!a || !b),例如.这是不是意味着&&"不必要"?这是否意味着所有逻辑表达式只能使用||!

logic logical-operators

294
推荐指数
6
解决办法
2万
查看次数

以编程方式解决"谁拥有斑马"?

编辑:这个谜题也被称为"爱因斯坦的谜语"

谁拥有斑马(你可以试试这里的网络版)是一款经典的一套谜题的一个例子,我敢打赌,大多数人对堆栈溢出可以用纸笔解决它.但程序化解决方案会是什么样子?

基于下面列出的线索......

  • 有五个房子.
  • 每栋房屋都有自己独特的颜色.
  • 所有房主都是不同国籍的.
  • 他们都有不同的宠物.
  • 他们都喝不同的饮料.
  • 他们都抽不同的香烟.
  • 英国人住在红房子里.
  • 瑞典人有一只狗.
  • 丹麦人喝茶.
  • 温室位于白宫的左侧.
  • 他们在温室里喝咖啡.
  • 抽烟Pall Mall的男人有鸟.
  • 他们在黄屋里吸烟登喜路.
  • 在中间的房子里,他们喝牛奶.
  • 挪威人居住在第一所房子里.
  • 吸烟的男人住在房子旁边的房子里和猫咪住在一起.
  • 在房子旁边的房子里,他们有一匹马,他们吸烟登喜路.
  • 抽烟师傅的男人喝啤酒.
  • 德国人抽烟王子.
  • 挪威人住在蓝屋旁边.
  • 他们在房子旁边的房子里喝水,他们吸烟混合.

谁拥有斑马?

language-agnostic logic constraint-programming zebra-puzzle

124
推荐指数
10
解决办法
2万
查看次数

PHP中的类型 - 杂耍和(严格)大于/小于比较

PHP以其类型杂耍而闻名.我必须承认这让我很困惑,而且我很难在比较中找出基本的逻辑/基本事物.

例如:如果$a > $b是真实的,$b > $c是真实的,必须将它意味着$a > $c永远真实的吗?

遵循基本逻辑,我会说是的,但是我很困惑,我真的不相信PHP.也许某人可以提供一个不是这样的例子?

另外,我想知道严格的小于和严格的大于运算符(因为它们的含义被严格描述,我过去只从等式比较中知道)如果左右操作数交换时有任何区别严格不平等的价值观:

# Precondition:
if ($a === $b) {
    throw new Exception(
       'Both are strictly equal - can not compare strictly for greater or smaller'
    );
}

($a > $b) !== ($b > $a)
Run Code Online (Sandbox Code Playgroud)

对于大多数类型比较组合,这些更大/更小的比较运算符没有记录,因此在这种情况下阅读手册并不是真正有用.

php comparison logic if-statement ieee-754

114
推荐指数
3
解决办法
1万
查看次数

为什么带有赋值和等式检查的if语句的计算结果为false?

Java if语句如何在具有赋值和相等性检查时OR一起工作?

public static void test() {
    boolean test1 = true; 
    if (test1 = false || test1 == false) {
        System.out.println("TRUE");
    } else {
        System.out.println("FALSE");
    }       
}
Run Code Online (Sandbox Code Playgroud)

为什么这个打印错误?

java logic if-statement

104
推荐指数
2
解决办法
5985
查看次数

Python简单if或逻辑语句

你会怎么写,在python中:

if key < 1 or key > 34:
Run Code Online (Sandbox Code Playgroud)

我已经尝试过各种我能想到的方式,并且发现它非常令人沮丧.

python logic if-statement

99
推荐指数
2
解决办法
61万
查看次数

((a +(b&255))&255)是否与((a + b)&255)相同?

我正在浏览一些C++代码,发现这样的东西:

(a + (b & 255)) & 255
Run Code Online (Sandbox Code Playgroud)

双重和我生气,所以我想到:

(a + b) & 255
Run Code Online (Sandbox Code Playgroud)

(a并且b是32位无符号整数)

我很快写了一个测试脚本(JS)来证实我的理论:

for (var i = 0; i < 100; i++) {
    var a = Math.ceil(Math.random() * 0xFFFF),
        b = Math.ceil(Math.random() * 0xFFFF);

    var expr1 = (a + (b & 255)) & 255,
        expr2 = (a + b) & 255;

    if (expr1 != expr2) {
        console.log("Numbers " + a + " and " + b + " mismatch!");
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然剧本证实了我的假设(两个操作都是平等的),但我仍然不相信它,因为1) …

c++ binary logic

92
推荐指数
6
解决办法
7665
查看次数

什么是直觉型理论的组合逻辑等价物?

我最近完成了一个大学课程,其中包括Haskell和Agda(一种依赖类型的函数式编程语言),并且想知道是否有可能用组合逻辑替换这些中的lambda演算.使用Haskell,这似乎可以使用S和K组合器,从而使其无点.我想知道Agda的等价物是什么.即,可以在不使用任何变量的情况下制作与Agda等效的依赖类型的函数式编程语言吗?

此外,是否有可能以某种方式用组合器取代量化?我不知道这是巧合,但通用量化例如使类型签名看起来像lambda表达式.有没有办法从类型签名中删除通用量化而不改变其含义?例如:

forall a : Int -> a < 0 -> a + a < a
Run Code Online (Sandbox Code Playgroud)

如果不使用forall可以表达同样的事情吗?

logic haskell types functional-programming agda

86
推荐指数
2
解决办法
4168
查看次数

84
推荐指数
4
解决办法
5575
查看次数

JQuery .hasClass用于if语句中的多个值

我有一个简单的if语句:

if ($('html').hasClass('m320')) {

// do stuff 

}
Run Code Online (Sandbox Code Playgroud)

这按预期工作.但是,我想添加更多类来if statement检查<html>标记中是否存在任何类.我需要它所以它不是全部而是只有至少一个类的存在但它可以更多.

我使用的情况是,我有类(例如m320,m768),增加了对各种视口的宽度,所以我只想执行某些jQuery的,如果它是一个特定的宽度(类).

这是我到目前为止所尝试的:

1.

if ($('html').hasClass('m320', 'm768')) {

// do stuff 

}
Run Code Online (Sandbox Code Playgroud)

2.

if ($('html').hasClass('m320')) || ($('html').hasClass('m768')) {

 // do stuff 

}
Run Code Online (Sandbox Code Playgroud)

3.

 if ($('html').hasClass(['m320', 'm768'])) {

 // do stuff 

    }
Run Code Online (Sandbox Code Playgroud)

这些似乎都不起作用.不确定我做错了什么,但很可能是我的语法或结构.

javascript syntax jquery logic

78
推荐指数
5
解决办法
9万
查看次数