Questions tagged «logic»

对于与数学逻辑和布尔代数有关的挑战。

30
反转布尔数组
一个不错的简单的 输入项 给定一个布尔数组(或可接受的替代方法),您可以假定该数组的长度永远不会超过32个元素。 [false, false, true, false, false] 输出量 反转数组的每个元素并将其输出。 [true, true, false, true, true] 规则 您可以编写完整的程序或仅编写函数 适用标准漏洞 每种语言以字节为单位的最短代码胜出! 测试用例 Input: [true, false] Output: [false, true] Input: //Example of acceptable alternative [0,1,1] Output: [1,0,0]

7
堆叠式数字楼梯
给定正整数和,如下所述输出列和行文本。^ h w ^ ^ hwwwHHhwwwHHh 第一行以11 0秒开始,第二行以10 1秒开始,第三行以9 2秒开始,依此类推,在第十行以2 9秒开始。在前十行中的每行上,在连续运行连续数字之后,第二个最低位出现两次,第二个最低位出现两次之后,此模式将永远重复。如果0出现s,则其后的数字始终为9s。 第十行下方的行与紧接在其上方的行相同,但向右移一行。如果新数字不位于其自身的另一个实例旁边,则它与最左上的数字相同。否则,它是下一个最高的数字(从9循环回0)。 前元素如下:11 × 1011×1011\times10 00000000000 11111111110 22222222211 33333333221 44444443322 55555544332 66666554433 77776655443 88877665544 99887766554 这是带有彩色文本的图像,以使图案更清晰。 如果您需要减少列数/行数,则只需裁剪以上文本即可。 如果您需要产生更多的列/行,则应扩展现有的楼梯。如果更多的列/行增加了连续数字的新阶梯,则应从整数中循环选择数字。因此对于输入,输出应为(15 ,13 )(15,13)(15,13) 000000000009988 111111111100998 222222222110099 333333332211009 444444433221100 555555443322110 666665544332211 777766554433221 888776655443322 998877665544332 099887766554433 009988776655443 100998877665544 这是带有颜色的文本图像: 规则 输出可以通过任何方便的方法给出。 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。 如果愿意,可以返回行列表。 您可以根据需要返回2D数字数组或数字列表。 不允许出现标准漏洞。 …

2
给定一个真值表,输出一个满足它的Stackylogic程序
Stackylogic是我在上一个挑战中提出的一种编程语言:运行Stackylogic。请阅读该帖子以获取完整的详细信息和示例,但是下面解释了它的工作方式: Stackylogic采用0和1来输入和输出单个0 或1完成时。 程序由仅包含字符01?以及其中一行<的末尾恰好包含一个字符的行组成。行不能为空,并与该行<必须至少有一个0,1或 ?之前。 这是一个示例程序,用于计算两位的NAND: 1 ?< 11 ? 0 程序中的每一行都被视为一个堆栈,其底部在左侧,顶部在右侧。隐式地,在程序的第一行之前和最后一行之后有一个空栈(即空行)。 在<运行程序时,称为光标,标记堆栈开始。执行过程如下: 将顶部字符从光标当前指向的堆栈中弹出。 如果该字符为?,则提示用户输入a 0或a,1并像该字符一样进行操作。 如果字符是0,则将光标向上移动一个堆栈(到当前行上方的行)。 如果字符是1,则将光标向下移动一个堆栈(到当前行下方的行)。 如果光标移动到的堆栈为空,则输出从堆栈弹出的最后一个值(始终为a 0或1),然后结束程序。 否则,如果光标移动到的堆栈不为空,请返回步骤1并重复该过程。 应对这一挑战的关键是,所有Stackylogic程序都等同于一个真值表。输入一些预定数量的布尔值,并确定性地输出一个布尔值。 因此,您的任务是生成一个满足或模拟的Stackylogic程序,即与任何给定的真值表具有相同的输出。但是Stackylogic 可以模拟任何真值表并不明显,因此这是归纳法的证明: 基本情况 两个0输入真值表是始终输出0或 的表1。这些表的Stackylogic等效项 分别为0<和1<。 归纳步 假设Stackylogic可以模拟任何N输入的真值表。令M = N + 1。 M输入表T可以表示为两个N输入表T 0和T 1以及附加输入位B。当B为0时,使用T 0的结果。当B为1时,将使用T 1的结果。 例如,对应于伪代码的3输入真值表 if B: result = x OR y else: result = …

2
逻辑门的格里曼德
多数函数是一个布尔函数,它接受三个布尔输入并返回最常用的。例如,如果maj(x,y,z)是多数功能并T表示true和Ffalse,则: maj(T,T,T) = T maj(T,T,F) = T maj(T,F,F) = F maj(F,F,F) = F 这个问题涉及将布尔函数编写为多数函数的组合。多数函数的5元组成的示例是(x1,x2,x3,x4,x5) => maj(x1,x2,maj(x3,x4,x5))。此函数在这些样本输入向量上返回以下输出: (T,T,F,F,F) => maj(T,T,maj(F,F,F)) = maj(T,T,F) = T (T,F,T,T,F) => maj(T,F,maj(T,T,F)) = maj(T,F,T) = T (T,F,T,F,F) => maj(T,F,maj(T,F,F)) = maj(T,F,F) = F (F,F,F,T,T) => maj(F,F,maj(F,T,T)) = maj(F,F,T) = F 任务 编写一个程序,该程序输入一个正整数n和一个长度为n的布尔向量列表,并输出一个多数门树,如果可能,则在所有给定向量上返回true。该函数可能会在约束列表之外的向量上返回true或false。 向量列表可以按您喜欢的任何格式输入。如果愿意,可以输入向量中真实位置的列表,而不输入向量。因此,例如[TTF,TFT,FTT]or [[T,T,F],[T,F,T],[F,T,T]]或[[1,2],[1,3],[2,3]](真实职位列表)都很好。 输出可以是任何有效的树格式。例如,maj(maj(x1,x2,x3),x4,x5)作品。您可能想要使用单个数字作为变量的替代品,如中所述[[1,2,3],4,5]。例如,反向抛光123m45m也可以。 如果没有起作用的函数,则您的程序应生成错误或输出错误值。 …

7
振荡平等
我们的对象在两个整数点之间[l, r]以每时间单位一个单位的速度从lon 开始振荡t=0。您可以假设l < r。例如,如果一个对象在上振荡[3, 6],则我们有: t=0 -> 3 t=1 -> 4 t=2 -> 5 t=3 -> 6 t=4 -> 5 t=6 -> 4 t=7 -> 3 t=8 -> 4 等等,但是物体不断振荡,所以我们还有t=0.5 -> 3.5和t=3.7 -> 5.3。 由于两个物体之间振荡[l1, r1],[l2, r2],确定是否存在过一段时间t,使得这两个对象共享相同的位置。您可以采用l1, r1, l2, r2任何方便的格式,并输出任何真实/错误值。 真实的输入: [[3, 6], [3, 6]] [[3, 6], [4, 8]] …
15 code-golf  array-manipulation  decision-problem  code-golf  math  number-theory  palindrome  integer-partitions  code-golf  math  decision-problem  geometry  code-golf  string  random  code-golf  ascii-art  code-golf  kolmogorov-complexity  primes  code-golf  kolmogorov-complexity  code-golf  graphical-output  code-golf  number-theory  primes  integer  factoring  code-golf  sequence  array-manipulation  integer  code-golf  array-manipulation  matrix  code-golf  sequence  binary  code-golf  game  cellular-automata  game-of-life  binary-matrix  code-golf  string  ascii-art  code-golf  random  generation  logic  code-golf  string  code-golf  code-golf  sequence  array-manipulation  random  apl  code-golf  code-golf  sequence  primes  code-golf  math  sequence  integer  code-golf  number  arithmetic  array-manipulation  decision-problem  code-golf  ascii-art  number  code-golf  restricted-source  quine  code-golf  chess  board-game  code-golf  math  sequence  code-golf  number  sequence  kolmogorov-complexity  code-golf  number  sequence  arithmetic  code-golf  math  number  alphabet  code-golf  ascii-art  classification  statistics  apl  code-golf  array-manipulation  matrix  code-golf  string  kolmogorov-complexity  code-golf  sequence  binary  base-conversion  binary-matrix  code-golf  string  classification  code-golf  tips  python  code-golf  combinatorics  binary  subsequence  restricted-time  code-golf  number  number-theory  code-golf  math  number  complex-numbers  code-golf  string  code-golf  string  code-golf  string  random  game  king-of-the-hill  python  code-golf  number  sequence  code-golf  number  sequence  code-golf  code-golf  math  number  array-manipulation  code-golf  array-manipulation  decision-problem  code-golf  string  code-golf  sequence  integer 

30
从原动力中恢复原动力
定义:素数幂是自然数,可以以p n的形式表示,其中p是素数,n是自然数。 任务:给定素数p n > 1,返回素数p。 测试用例: input output 9 3 16 2 343 7 2687 2687 59049 3 计分:这是代码高尔夫球。以字节为单位的最短答案将获胜。
13 code-golf  arithmetic  primes  king-of-the-hill  python  board-game  code-golf  number  subsequence  code-golf  ascii-art  code-golf  array-manipulation  decision-problem  grid  fastest-algorithm  logic-gates  logic  code-golf  cards  code-golf  rational-numbers  code-golf  math  number  sequence  code-golf  array-manipulation  integer  code-golf  number  array-manipulation  code-golf  number  sequence  decision-problem  code-golf  ascii-art  number  code-challenge  sequence  arithmetic  sorting  code-golf  date  fastest-algorithm  code-golf  string  number  random  combinatorics  code-golf  combinatorics  code-golf  ascii-art  base-conversion  code-golf  array-manipulation  code-golf  string  code-golf  string  number  arithmetic  code-golf  kolmogorov-complexity  code-golf  string  array-manipulation  json  code-golf  puzzle-solver  code-golf  binary  graph-theory  code-golf  arithmetic  haskell  code-golf  string  cipher  code-golf  code-golf  string  parsing  alphabet  code-golf  string  code-golf  ascii-art  code-golf  string  number  code-golf  string  balanced-string 

3
组合难题!
简介:组合逻辑 组合逻辑(CL)基于称为组合器的东西,它们基本上是函数。有两个基本的“内置”组合器S和K,稍后将进行说明。 左联想 CL是左关联的,这意味着可以删除包含花药的另一对花括号中最左边的花括号,并将其放开。例如,如下所示: ((a b) c) 可以减少到 (a b c) 在(a b)大括号的最左边的位置((a b) c),因此可以将其删除。 左关联的一个更大的例子(方括号是解释): ((a b) c ((d e) f (((g h) i) j))) = (a b c ((d e) f (((g h) i) j))) [((a b) c...) = (a b c...)] = (a b c (d e …

2
解释基普尔!
介绍 Kipple是Rune Berg于2003年3月发明的基于堆栈的深奥编程语言。 Kipple有27个堆栈,4个运算符和一个控制结构。 堆栈 堆栈被命名为a- z并包含32位带符号整数。还有一个特殊的堆栈,@使输出数字更加方便。当将数字压入时@,实际上将压入该数字的ASCII值。(例如,如果您将12推到@,它将推49,然后推50。@) i在执行程序之前,将输入压入输入堆栈。解释器将i在执行之前要求存储值。执行完成后,输出堆栈上的所有内容o都会弹出以ASCII字符形式输出。由于这是Kipple唯一的IO机制,因此无法与Kipple程序进行交互。 经营者 操作数可以是堆栈标识符或带符号的32位整数。 推送:>或< 语法:Operand>StackIndentifier或StackIndentifier<Operand Push运算符将操作数向左移并将其推入指定的堆栈。例如,12>a将值12推入stack a。a>b将从堆栈中弹出最高值a并将其推入堆栈b。弹出空堆栈总是返回0 a<b相当于b>a。a<b>c从弹出最高值,b并同时推入c和a。 加: + 句法: StackIndentifier+Operand Add运算符将堆栈上最顶层项目和操作数之和压入堆栈。如果操作数是堆栈,则从中弹出值。例如,如果堆栈的最高值为a1,a+2则将3压入堆栈。如果a为空,a+2则将2推入。如果堆叠的最值a和b是1和2,然后a+b将从栈中弹出的值2 b和3推入堆栈a。 减去: - 句法: StackIndentifier-Operand 减法运算符的工作方式与加法运算符完全相同,只是它减去而不是加法。 明确: ? 句法: StackIndentifier? 如果最上面的项目为0,则Clear运算符将清空堆栈。 解释器将忽略操作符旁边不存在的所有内容,因此以下程序将起作用:a+2 this will be ignored c<i。但是,添加注释的正确方法是使用#字符。#执行前,a 和行尾字符之间的所有内容都将被删除。ASCII字符#10在Kipple中定义为行尾。 操作数可以由两个运算符共享,例如a>b c>b c?可以写为a>b<c?。 该程序1>a<2 a+a将导致a包含值[1 4](从下到上),而不是[1 3]。对于-操作员也是如此。 控制结构 Kipple中只有一种控制结构:循环。 句法: (StackIndentifier code …
12 code-golf  interpreter  code-golf  string  code-golf  math  string  code-golf  ascii-art  path-finding  code-golf  string  ascii-art  code-golf  interpreter  binary  logic-gates  logic  code-golf  ascii-art  code-golf  graph-theory  code-golf  string  code-golf  number  sorting  code-golf  number-theory  random  cryptography  polynomials  code-golf  number  code-golf  math  number  sequence  code-golf  quine  code-generation  code-golf  arithmetic  set-theory  code-golf  sequence  code-golf  code-golf  string  math  fastest-code  optimization  code-golf  code-golf  internet  stack-exchange-api  code-golf  array-manipulation  code-golf  string  internet  string  code-challenge  internet  test-battery  code-golf  math  pi  code-golf  arithmetic  primes  code-golf  array-manipulation  code-golf  string  code-golf  string  palindrome  code-golf  sequence  number-theory  fastest-algorithm  code-golf  math  number  base-conversion  code-golf  number-theory  sorting  subsequence  search  code-golf  permutations  code-challenge  popularity-contest  code-generation 

3
将逻辑表达式转换为合取范式
目标: 编写一个完整的程序或函数,该程序或函数接受命题逻辑中的一个公式(以下称为逻辑表达式或表达式),并以合并正规形式输出该公式。有两个常量,⊤并⊥代表真假,一元运算符¬代表否定,和二元运算⇒,⇔,∧,和∨代表暗示,对等,协同和脱节,其分别遵守所有常见的逻辑运算(德·摩根定律,双重否定消除等)。 合并范式定义如下: 任何原子表达式(包括⊤和⊥)都是合取范式。 任何先前构建的表达式的取反是合取范式。 先前构造的任何两个表达式的析取为合取范式。 任何两个先前构造的表达式的合取为合取范式。 其他任何表达式都不是合取范式。 任何逻辑表达式都可以以合取范式形式(非唯一)转换为逻辑等效表达式(请参见此算法)。您无需使用该特定算法。 输入: 您可以采用任何方便的格式输入;例如,符号逻辑表达式(如果您的语言支持),字符串,其他某种数据结构。您不需要像我在此处那样对true,false和逻辑运算符使用相同的符号,但是您的选择应保持一致,如果不清楚,则应在答案中说明您的选择。您可能不接受任何其他输入或以您的输入格式对任何其他信息进行编码。您应该有一些表达任意数量的原子表达式的方法;例如整数,字符,字符串等。 输出: 公式可以是合取范式,也可以是任何方便的格式。它的格式不必与您输入的格式相同,但是您应该解释是否存在任何差异。 测试用例: P ∧ (P ⇒ R) -> P ∧ R P ⇔ (¬ P) -> ⊥ (¬ P) ∨ (Q ⇔ (P ∧ R)) -> ((¬ P) ∨ ((¬ Q) ∨ R)) ∧ ((¬ P) ∨ (Q …
10 code-golf  math  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.