Questions tagged «logic»

逻辑是指代码的最终流程以及如何获得所需的解决方案。问题应该与找到针对给定问题的编码解决方案(或改进现有的编码逻辑)有关。请使用适当的语言标签,对逻辑的全面描述以及正在使用的相关代码。一般逻辑问题是题外话。如果您只需要代码审查,请考虑https://codereview.stackexchange.com

14
2048游戏的最佳算法是什么?
我最近偶然发现了2048游戏。您可以通过在四个方向上任意移动相似的图块来合并它们,以制作“更大”的图块。每次移动后,新的图块都会出现在随机的空白位置,其值为2或4。当所有方框都已填满且没有可合并磁贴的移动,或者您创建的值为时,游戏终止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 } 我做的是在任何时候,我会尽量与值合并瓷砖2和4,就是我努力2和4瓷砖,尽可能最小。如果以这种方式尝试,所有其他磁贴将自动合并,并且该策略看起来不错。 但是,当我实际使用此算法时,在游戏终止前我只能得到4000点。最高分数AFAIK略高于20,000点,这比我目前的分数还大。是否有比以上更好的算法?


14
以编程方式解决“谁拥有斑马线”?
编辑:这个难题也被称为“爱因斯坦之谜” 该谁拥有斑马(你可以试试这里的网络版)是一款经典的一套谜题的一个例子,我敢打赌,大多数人对堆栈溢出可以用纸笔解决它。但是程序化解决方案会是什么样子? 根据下面列出的线索... 有五个房子。 每个房子都有自己独特的颜色。 所有房主都来自不同国籍。 他们都有不同的宠物。 他们都喝不同的饮料。 他们都抽不同的香烟。 英国人住在红房子里。 瑞典人有一只狗。 丹麦人喝茶。 温室在白宫的左侧。 他们在温室里喝咖啡。 抽颇尔购物中心的人有鸟。 他们在黄色的房子里抽烟登喜路。 他们在中间房子里喝牛奶。 挪威人住在第一所房子。 抽Blend的人住在有猫的房子旁边的房子里。 在他们有一匹马的房子旁边的房子里,他们抽着邓希尔。 抽蓝大师的男人喝啤酒。 德国人抽王子。 挪威人住在蓝房子旁边。 他们在抽烟的房子旁边的房子里喝水。 ...谁拥有斑马线?

3
PHP中的类型变戏法和(严格)大于/小于
PHP以其类型杂耍而闻名。我必须承认,这使我感到困惑,而且我很难在比较中找出基本的逻辑/基础知识。 例如:如果$a > $b为true并且$b > $c为true,是否还必须意味着$a > $c也始终为 true? 按照基本逻辑,我会说是,但是我对此感到困惑,因为我并不真的相信PHP。也许有人可以提供一个例子,而事实并非如此? 我也想知道使用严格的小于运算符和严格大于运算符(因为它们的含义被描述为严格的,我过去仅从相等性比较中知道),如果左右运算符与之互换,是否会有所不同严格不相等的值: # Precondition: if ($a === $b) { throw new Exception( 'Both are strictly equal - can not compare strictly for greater or smaller' ); } ($a > $b) !== ($b > $a) 对于大多数类型比较组合,大多数较大/较小的比较运算符均未记录在文档中,因此在这种情况下阅读手册并没有真正的帮助。

2
Python中的简单“ if”或逻辑语句
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 4个月前关闭。 改善这个问题 您将如何在Python中编写以下内容? if key < 1 or key > 34: 我已经尝试了所有可以想到的方法,并且发现它非常令人沮丧。


9
(((a +(b&255))&255)与((a + b)&255)是否相同?
我在浏览一些C ++代码,发现了以下内容: (a + (b & 255)) & 255 双重AND惹恼了我,所以我想到了: (a + b) & 255 (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 = …
92 c++  binary  logic 

2
直觉类型理论的组合逻辑等效是什么?
我最近完成了一门以Haskell和Agda(依赖型函数式编程语言)为特色的大学课程,并且想知道是否有可能用组合逻辑代替lambda微积分。使用Haskell,使用S和K组合器似乎可以实现这一点,从而使其变得毫无意义。我想知道阿格达相当于什么。即,是否可以在不使用任何变量的情况下使等效类型化的函数式编程语言等效于Agda? 另外,是否有可能用合并器代替量化?我不知道这是否是巧合,但是例如通用量化会使类型签名看起来像lambda表达式。有没有办法从类型签名中删除通用量化而不改变其含义?例如: forall a : Int -> a < 0 -> a + a < a 可以不花大价钱表达同一件事吗?


10
jQuery .hasClass在if语句中用于多个值
我有一个简单的if语句: if ($('html').hasClass('m320')) { // do stuff } 这按预期工作。但是,我想向中添加更多类,if statement以检查<html>标记中是否存在任何类。我需要它,所以它不是全部,而是至少存在一个类,但可以更多。 我使用的情况是,我有类(例如m320,m768添加各种视口宽度),所以我只是想执行某些jQuery的,如果它是一个特定的宽度(类)。 到目前为止,这是我尝试过的: 1。 if ($('html').hasClass('m320', 'm768')) { // do stuff } 2。 if ($('html').hasClass('m320')) || ($('html').hasClass('m768')) { // do stuff } 3。 if ($('html').hasClass(['m320', 'm768'])) { // do stuff } 这些似乎都不起作用。不知道我在做什么错,但很可能是我的语法或结构。

5
为什么javascript在if语句中接受逗号?
我偶然发现了一些JavaScript语法,似乎它应该产生某种解析错误,但不会: if (true, true) {console.log('splendid')} else {console.log('horrid')} // splendid if (true, false) {console.log('splendid')} else {console.log('horrid')} // horrid 尽管所有表达式都已执行,但似乎只有最后一个表达式会影响逻辑: if (console.log('super'), true) {console.log('splendid')} // super splendid 有人知道为什么这是有效的JavaScript语法吗?有实际用途吗?

15
在.NET中寻找简单的规则引擎库
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 谁知道一个好的.NET库规则库(理想情况下是开源的)?我需要一些可以执行嵌套逻辑表达式的东西,例如(A AND B)AND(B OR C OR D)。我需要比较对象属性,例如A.P1和B.P1。(理想情况下,我可以比较任何属性-A.P1和B.P2)。 它应该将规则存储在数据库中(我有很多简单的可配置逻辑)。并且它应该具有规则创建/管理API。管理工具将必须检查实例以确定哪些属性可用以及存在哪些约束。 谢谢! 哦,还有一件事。作为规则引擎,我需要包括“动作(命令)”的概念。这些是表达式返回时执行的内容: If (expression.Evaluation) { actions.Execute(); } 因此,我将规则视为: class Rule { Expression Exp; Actions[] Actions; Run() { if(Exp.Evaluate()) { foreach(action in Actions) { action.Execute(); } } } }

8
简化SQL语句的一般规则
我正在寻找一些“推理规则”(类似于设置操作规则或逻辑规则),可以用来减少SQL查询的复杂性或大小。是否存在类似的东西?有论文,有工具吗?您自己发现的任何对等物吗?它在某种程度上类似于查询优化,但在性能方面却不一样。 换种说法:使用JOIN,SUBSELECT和UNION进行(复杂)查询是否有可能(或不能)通过使用一些转换规则将其简化为更简单的等效SQL语句,从而产生相同的结果? 因此,我正在寻找SQL语句的等效转换,例如大多数SUBSELECT都可以重写为JOIN的事实。


4
从自然语言到C ++表达式
分配: 将以下自然语言表达式转换为C ++表达式。假定所有变量都是非负数或布尔值(值为true或false)。 自然语言: a和b都为假,或者c为真,但不是两个都为真。 我的解决方案: (a==0 && b==0)xor(c==1) 教授的解决方案: (!a && !b) != c 问题: 我认为我稍微理解了第一个括号,通过说“ not-a”和“ not-b”,我认为a和b一定是错误的,只要ab在开始时就假定为非零。对? 但是说“不等于c”的部分呢? 我不了解教授的解决方案,有人可以为我分解一下吗? 感谢您的帮助!
9 c++  logic 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.