Questions tagged «expression-building»

对于重新安排一组数学运算符或数字以满足特定表达式的挑战。

2
数学表达式摊牌!
系统会为您提供6个数字:5个数字[0-9]和一个目标数字。您的目标是将运算符散布在数字之间,以尽可能接近目标。你必须使用每个数字恰好一次,可以使用下面的运营商 多达你想要的时间:+ - * / () ^ sqrt sin cos tan。例如,如果给出的话,8 2 4 7 2 65我可以输出82-(2*7)-4。评估结果为64,因此我的得分是1,因为我离目标1分。注意:不能在数字之间放置小数点。 我正在使用此StackOverflow答案中的代码来评估数学表达式。在该问题的底部,可以使用一些程序进行测试。 链接功能(更新!) @mdahmoune揭示了这一挑战的新高度。因此,我要添加一个新功能:链接一元函数。这适用于sin,cos,tan和sqrt。现在sin(sin(sin(sin(10))))您可以写作,而不是写作sin_4(10)。在评估器中试用! 输入值 200个行分隔的5位数字的测试用例和一个目标数字,以空格分隔。您可以使用问题底部的程序来制作示例测试用例,但是我将拥有自己的测试用例以进行官方评分。测试用例分为40个测试的5个部分,目标数量的范围如下: 第1节:[0,1](至5个小数点) 第2节:[0,10](至4个小数点) 第3节:[0,1000](至3个小数点) 第4节:[0,10 6 ](至1个小数点) 第5节:[0,10 9 ](至0个小数点) 输出量 200行分隔的数学表达式。例如,如果测试用例为5 6 7 8 9 25.807,则可能的输出为78-59+6 计分 每个回合的目标是比其他竞争计划更接近目标人数。我将使用Mario Kart 8得分,即:。如果多个答案获得相同的准确分数,则将分数平均分配,四舍五入到最接近的整数。例如,如果并列第5-8位的程序,则它们各自在该回合中获得(8 + 7 + 6 + 5)/ 4 = 6.5 …

10
最小运营至100
总览 给定一个数字列表,找到最少的运算使100 输入值 一串数字,可以是数字顺序,也可以不是数字顺序。数字的顺序不能更改,但是可以在每个数字之间加上加号(+)或减号(-),以便总和等于100。 输出量 添加的运算符数量,其后是数字和运算符的完整序列。两者可以用空格,制表符或换行符分隔。 例子 有效 输入:123456789 输出:3 123–45–67+89 无效的 输入:123456789 输出:( 6 1+2+34-5+67-8+9 有一些方法可以减少操作次数)

2
用最少的火柴进行数学
元背景 这是关于Puzzling的一个问题,即时反应是“嗯,有人会用计算机解决这个问题”。对于要解决这个问题的程序到底有多复杂,存在争议。好吧,“这个程序必须有多复杂”几乎就是代码高尔夫的定义,所以也许PPCG可以解决这个问题? 背景 甲火柴方程基本上是一个正常的数学方程,但是其中数字和运营商通过将火柴到表物理构造。(这里的火柴棒的主要相关特征是它们相当坚固并且具有恒定的长度;有时人们会改用其他物体,例如棉签。) 对于这个挑战,我们不需要为火柴的排列方式定义特定的规则(就像链接的挑战一样)。相反,我们只关心表示一个计算为给定数字的表达式所需的火柴棍数量。 任务 这是您可以使用的数字字母和数学运算符,每个运算符的成本都包含在火柴棒中: 0,花费6条火柴 1,花费2个火柴棍 2,花费5条火柴 3,花费5条火柴 4,花费4个火柴棍 5,花费5条火柴 6,花费6条火柴 7,花费3个火柴棍 8,花费7根火柴 9,花费6条火柴 +,花费2个火柴棍 -,花费1个火柴棍 ×,花费2个火柴棍 (为了避免使用非ASCII字符,可以×根据需要*在程序的输出中表示为。在大多数编码中,×字节占用的字节数大于*,因此我想大多数程序都希望利用此余地) 您需要编写一个程序,该程序将非负整数作为输入(通过任何合理的方法),并生成一个计算结果为该整数作为输出的表达式(同样通过任何合理的方法)。此外,该表达式必须是平凡的:它必须包含至少一个运营商+,-或×。最后,就所有火柴棍成本而言,您输出的表达式在所有符合规范的输出中必须是最便宜的(或与最便宜的捆绑)。 澄清说明 您可以通过在一行中输出多个数字来形成多个数字(例如,11-1要产生的有效输出10)。完全准确地说,所得数字将以十进制表示。这种级联不是对中间结果起作用的操作;仅针对原始表达式中出现的文字数字。 为了这个挑战的目的。+,-和×是中缀运算符;他们需要左右左右有一个论点。不允许在前缀位置(例如+5或)中使用它们-8。 您没有可用的括号(或任何其他控制优先级的方法)。该表达式根据典型的默认优先级规则进行求值(首先进行乘法运算,然后从左至右对加法和减法求值)。 除上面列出的数学运算符或常量外,您无权访问任何数学运算符或常量;Puzzling经常接受“横向思考”解决方案,但是要求计算机自己提出这些解决方案是没有意义的,在PPCG上,我们希望客观地找到解决方案是否正确。 通常的整数溢出规则适用:您的解决方案必须能够在语言的假设(或实际)版本中使用任意大整数,默认情况下所有整数都是无界的,但是如果您的程序由于实现而在实践中失败不支持那么大的整数,这不会使解决方案无效。 如果您多次使用相同的数字或运算符,则每次使用时都要支付其火柴成本(因为,显然,您无法在桌子上的两个不同位置重复使用相同的物理火柴)。 没有时间限制;蛮力解决方案是可以接受的。(尽管您拥有比暴力破解还要快的解决方案,但即使更长,也可以随意发布;查看其他方法的比较总是很有趣的。) 尽管从不需要编写代码说明,但这可能是个好主意。代码高尔夫球解决方案通常很难阅读(尤其是对于不熟悉其编写语言的人),并且除非您了解其工作原理,否则很难评估(并对其投票)。 胜利条件 作为代码高尔夫球挑战,认为字节数更少的答案更好。但是,像往常一样,即使它们比某些其他语言更冗长,也可以用不同的方法或特定的语言发布答案。高尔夫的目标实际上是看您可以优化某个特定程序的程度,以这种方式进行操作可以为我们提供许多潜在的程序来优化。因此,如果有人使用完全不同的方法或完全不同的语言提交解决方案并获得更短的答案,不要气disc。很可能是您的答案得到了更好的优化,并且显示了更多的技巧,PPCG的投票者经常对此表示赞赏。

3
标记基于堆栈的语言
我一直在研究另一种称为Stackgoat的基于堆栈的高尔夫语言。在这个挑战中,您将为Stackgoat(或实际上是任何通用的基于堆栈的语言)编写Tokenizer。 例子 "PPCG"23+ ["PPCG", '23', '+'] 'a "bc" + ['"a"', '"bc"', '+'] 12 34+-"abc\"de'fg\\" ['12', '34', '+', '-', '"abc\"de'fg\\"'] "foo ['"foo"'] (empty input) [] ' "" ['" "', '""'] 规格 您需要处理的三种类型是: 弦乐,什么内"" 数字,任何数字序列 运算符,除空格外的任何其他单个字符 除非将其留在字符串中或将两个数字分隔开,否则实际上将忽略空格。 字符串/字符规范: 字符串以分隔",当\遇到时,下一个字符应转义。 字符前面加a ',后面的字符'应转换为字符串文字。'a->"a" ' 后面总会有一个角色 右引号应自动插入 规则: 没有形式eval允许 输入输出: 可以通过STDIN,函数参数或您的语言等效输入。 输出应为数组或您的语言最接近的等效数组。
15 code-golf  parsing  code-golf  hexagonal-grid  code-golf  string  code-golf  string  code-golf  combinatorics  code-golf  ascii-art  code-golf  string  game  counting  code-golf  arithmetic  complex-numbers  code-golf  string  code-golf  decision-problem  hexagonal-grid  code-golf  string  sequence  code-golf  number  arithmetic  code-golf  ascii-art  code-golf  ascii-art  code-golf  string  arithmetic  code-golf  number  simulation  code-golf  number  arithmetic  code-golf  string  sequence  unicode  code-golf  string  ascii-art  balanced-string  code-golf  number  clock  code-golf  ascii-art  number  code-golf  math  number  sequence  code-golf  string  ascii-art  balanced-string  code-golf  math  string  popularity-contest  graphical-output  image-processing  code-golf  string  permutations  code-golf  string  code-golf  random  code-golf  string  cryptography  palindrome  code-golf  chess  code-golf  math  array-manipulation  topology  code-golf  math  sequence  code-golf  keyboard  classification  code-golf  string  sequence  code-golf  natural-language  code-golf  math  number  sequence  sorting  code-golf  sequence  combinatorics  grid  tic-tac-toe  code-golf  geometry  code-golf  number  restricted-source  new-years  expression-building 

1
算术... to ... tick ...…
我喜欢在长时间的电话会议中玩的游戏带给您这个问题。 给定24小时制(从00:00到23:59)中的任意两次,仅使用基本算术运算之间的所有时间可以生成多少个有效的数学方程式? 输入:两个四数字串(无结肠)表示在24小时循环有效时间。 例子: 输入= 0000,1300 03:26 produces: "0+3*2=6" and "03*2=6" etc. 11:10 produces quite a few, including: "1*1=1+0" and "1=1=1^0" and "1=11^0" etc. 12:24 produces: "1/2=2/4" and "1=(2*2)/4" etc. 有效的操作是: 加成 减法 乘法 除法(浮点数) 求幂 阶乘 其他允许的符号 括号 等号 最短的代码获胜。 笔记 我们的目标是找到数的两倍,那几次都不数量之间有效的表达式包含一个有效的表达。 输入的两次时间包含在时​​间范围内。 您可以采用任何可能的方式对数字进行分组,因此“ 1223”可以是“ 12 23”或“ 1 2 …

11
案例匹配查找替换
以三个输入,文本串T; 一串要替换的字符F;以及用替换它们的字符串R。对于每个T具有相同(不区分大小写)字符的子字符串F,请将其替换为中的字符R。但是,请保持与原始文本相同的大小写。 如果输入的字符R多于个F,则多余的字符应与输入的大小写相同R。如果其中包含数字或符号F,则其中的相应字符R应保持其大小写R。F不一定会出现在中T。 您可以假设所有文本都在可打印的ASCII范围内。 例子 "Text input", "text", "test" -> "Test input" "tHiS Is a PiEcE oF tExT", "is", "abcde" -> "tHaBcde Abcde a PiEcE oF tExT" "The birch canoe slid on the smooth planks", "o", " OH MY " -> "The birch can OH MY e slid OH MY …
14 code-golf  string  code-golf  string  ascii-art  alphabet  code-golf  number  sequence  counting  code-golf  sequence  counting  code-golf  quine  source-layout  code-golf  string  code-golf  decision-problem  game  code-golf  string  quine  source-layout  subsequence  code-golf  quine  code-golf  array-manipulation  integer  code-golf  ascii-art  code-golf  sequence  integer  code-golf  kolmogorov-complexity  code-golf  array-manipulation  integer  code-golf  number  array-manipulation  integer  code-golf  string  number  integer  code-golf  string  ascii-art  code-challenge  test-battery  expression-building  source-layout  printable-ascii  code-bowling  code-golf  number  code-golf  number  string  binary  code-golf  matrix  conversion  code-golf  number  arithmetic 

8
仅用0-9和四个运算符来表示数字
说明 Befunge是使用stack的二维程序。 这就是说,做5 + 6,你写56+,意思是: 56+ 5 push 5 into stack 6 push 6 into stack + pop the first two items in the stack and add them up, and push the result into stack (to those of you who do not know stacks, "push" just means add and "pop" …

4
是时候做数学了
介绍 这是我最喜欢的数学难题之一。 给定一个数字(例如3)和使用该数字的次数(例如5),请生成10个表达式,仅使用+即可得出1、2、3、4、5、6、7、8、9和10 -,×,÷,^和√(根)(允许使用括号将操作分组)。 例如: (3^3 + 3)/(3 + 3) = (33 - 3)/(3 + 3) = 3 + 3/3 + 3/3 = 5 请注意,以上所有方法均使用5个3和数学运算并将结果求和为5。您也可以在√之前使用3表示立方根。对于在√之前使用4表示第四个根,也是如此。 另请注意,可以使用两个3来形成33,或者可以使用三个3来形成333,依此类推。 挑战 您将获得两个数字(范围从1到5)作为函数参数,STDIN或命令行参数。 第一个数字表示要使用哪个数字,第二个数字表示要在表达式中使用该数字的次数。 您的程序应输出大小为10(或10个以空格分隔的数字)的数组,其中每个元素表示是否(index + 1)可以使用真/假值来计算(仅使用允许的运算符)得出该数字的数学表达式。 例如,如果输入是 1 3 然后输出应该是 [1, 1, 1, 0, 0, 0, 0, 0, 0, 1] 因为只能使用三个1来表示1、2、3和10。 得分了 这是一个代码高尔夫球,因此以字节为单位的最小代码长度为准。 奖金 …

4
获取吸气剂
任务 我想每个人都喜欢自动代码生成并节省工作时间。您白天必须创建许多类和成员,而又不想getters手动创建所有这些类和成员。 任务是编写一个程序或函数,该程序或函数getters将为您自动为所有类成员生成。 输入 在我们的语言中,对象非常简单。类和成员的名称必须以字符开头,[a-zA-Z]并且只能包含字符[a-zA-Z0-9]。这是一个例子: class Stack { public overflow; protected trace; private errorReport; } 输出 这是基于给定示例的有效输出: class Stack { public overflow; protected trace; private errorReport; public function getOverflow() { return this->overflow; } public function getTrace() { return this->trace; } public function getErrorReport() { return this->errorReport; } } 吸气剂 getter方法的要求是: …
13 code-golf  string  syntax  code-golf  math  primes  rational-numbers  code-golf  graphical-output  image-processing  code-golf  kolmogorov-complexity  music  audio  code-golf  string  code-golf  math  geometry  code-golf  math  sequence  combinatorics  code-golf  game  grid  board-game  code-golf  restricted-source  array-manipulation  source-layout  code-golf  base-conversion  binary  code-golf  math  physics  code-golf  math  number  date  expression-building  code-golf  array-manipulation  graph-theory  decision-problem  popularity-contest  error-correction  code-golf  kolmogorov-complexity  geometry  grid  code-challenge  arithmetic  combinatorics  set-partitions  code-golf  kolmogorov-complexity  sequence  fibonacci  code-golf  restricted-source  pristine-programming  code-golf  code-golf  string  kolmogorov-complexity  code-golf  arithmetic  code-golf  string  parsing  code-golf  code-golf  sorting  counting  permutations  3d  code-golf  code-golf  ascii-art  music  code-golf  string  code-golf  string  ascii-art  code-golf  string  code-golf  quine  polyglot  code-golf  math  string  code-golf  internet 

1
二零一五难题
背景 这个难题是四个四分之一难题的变体(本身就是上一个问题的主题)。像这个难题一样,目标是仅使用四位数字和某些数学运算符来查找不同整数的数学表达式。但是,在这种情况下,允许的数字仅为2、0、1和5。每个解决方案必须以正确的顺序准确地出现一次。令人惊讶的是,可以用这种方式表示许多整数。鼓励求解器首先尝试手动解决问题,因为它很有趣。 规则 常数可以由一个或多个数字构成: 整数:例如2、0、15等 小数:例如.2,.01、1.5等。 重复小数点:例如.2〜(= 0.222 ...)、. 15〜(= 0.1555 ...),20.15 ~~(= 20.1515 ...) 允许以下一元运算: 一元否定:-x 平方根:sqrt(x) 整数阶乘:x! 允许以下二进制操作: 标准算术运算符:x + y,xy,x * y和x / y 任意幂:x ^ y 任意根:rt [x](y)(= y的第x个根) 任务 您的程序应打印出尽可能多的0到100之间的整数的表达式,然后输出产生的表达式数量。 解决方案必须按顺序打印,格式为n = [expr]。 表达式必须依次使用所有数字2、0、1、5。 表达式必须使用上述符号打印。允许但不需要括号,空格也是如此。运算符的优先级顺序为一元否定,阶乘,乘幂,乘/除和加/减。 该程序无需返回所有数字的解决方案。因此,仅输出0的程序有效。但是,请参阅下面的评分部分。 该程序应在不到15分钟的现代计算机上运行。 您可以编写程序或函数。表达式应打印到STDOUT(或最接近的替代项)。表达式的数量可以打印到STDOUT或作为整数返回。适用标准代码的高尔夫限制。 输出示例 0=2*0*1*5 10=20*1*.5 42=((2+0!)!+1)!/5! 100=20*1*5 4 计分 …

6
找出有理生成函数的系数
如果我们写一个数字序列作为幂级数的系数,则该幂级数称为该序列的(普通)生成函数(或Gf)。也就是说,如果对于某些函数F(x)和整数系列,a(n)我们有: a(0) + a(1)x + a(2)x^2 + a(3)x^3 + a(4)x^4 + ... = F(x) 然后F(x)是的生成函数a。例如,几何级数告诉我们: 1 + x + x^2 + x^3 + x^4 + ... = 1/(1-x) 因此,的生成函数1, 1, 1, ...为1/(1-x)。如果我们对上面方程的两边求和并乘以x得到以下等式: x + 2x^2 + 3x^3 + 4x^4 + ... = x/(1-x)^2 因此,的生成函数1, 2, 3, ...为x/(1-x)^2。生成函数是一个非常强大的工具,您可以使用它们来做很多有用的事情。在这里可以找到简短的介绍,但是要获得真正彻底的解释,请参见惊人的图书生成功能学。 在此挑战中,您将有理函数(两个具有整数系数的多项式的商)作为两个整数系数数组的输入作为输入,首先是分子,然后是分母。例如,功能f(x) = x …
12 code-golf  math  integer  polynomials  code-golf  math  abstract-algebra  restricted-time  code-golf  math  primes  code-golf  math  number  arithmetic  code-golf  quine  code-golf  number  sequence  code-golf  string  number  code-golf  array-manipulation  code-golf  number  code-golf  string  code-golf  arithmetic  code-golf  string  array-manipulation  rubiks-cube  code-golf  math  number  code-golf  tips  bash  code-golf  ascii-art  music  code-golf  arithmetic  code-golf  math  number  arithmetic  integer  code-golf  number  array-manipulation  code-golf  geometry  grid  set-partitions  code-golf  math  number  code-golf  combinatorics  code-golf  regular-expression  code-golf  permutations  code-golf  ascii-art  code-golf  number  array-manipulation  matrix  code-golf  kolmogorov-complexity  compile-time  cops-and-robbers  polyglot  cops-and-robbers  polyglot  code-golf  string  code-golf  string  ascii-art  matrix  animation  code-golf  ascii-art  code-golf  string  balanced-string  code-golf  integer  integer-partitions  expression-building 

22
10 9 8 7 6 5 4 3 2 1…打印2016
为了解决我在Puzzling遇到的挑战,您的目标是输出2016。 规则: 您必须10 9 8 7 6 5 4 3 2 1按该顺序包括数字。它们可以用作单独的整数,也可以串联在一起(例如1098),但是它们10不能分隔为1和0-数字之间不能存在任何字符。请注意,在某些语言中,10可能实际上并不表示整数文字10,这是可以接受的。 您的代码不得包含任何其他数字或预定义的数字变量或常量(因此T,不允许使用Pyth,因为它是数字常量)。 您必须使用数字进行计算 2016。2016不允许简单地输出而不对所需的数字执行任何操作(例如,通过解码仅包含字母字符的编码字符串)。也不允许分段输出2016(例如20,16则为);您必须具有由数值组成的单个输出2016。 字节最少的有效答案将获胜。

1
通过整数操作实现IEEE 754 64位二进制浮点数
(我暂时将问题标记为“ C”,但是如果您知道另一种支持联合的语言,则也可以使用它。) 您的任务是+ - * /为以下结构构建四个标准数学运算符: union intfloat{ double f; uint8_t h[8]; uint16_t i[4]; uint32_t j[2]; uint64_t k; intfloat(double g){f = g;} intfloat(){k = 0;} } 这样操作本身就只能操纵或访问整数部分(因此也不能在操作过程中的任何时候都与double进行比较),并且结果是完全相同的(对于非数字结果,例如,功能上是等效的NaN)好像相应的数学运算已直接应用于double。 您可以选择要操作的整数部分,甚至可以在不同的运算符之间使用不同的整数部分。(尽管我不确定您是否要这样做,您也可以选择从联合中的任何字段中删除“未签名”。) 您的分数是四个运算符中每个字符的代码长度总和。最低分获胜。 对于不熟悉IEEE 754规范的我们来说,这是一篇有关Wikipedia的文章。 编辑: 03-06 08:47在intfloat结构中添加了构造函数。您可以使用它们进行测试,而不必手动设置double /etc。

1
不只是一个四肢难题
在该方案中的4个4困扰你应该使用最多x x's(并且没有其他号码),并定义了一组操作的从0达到每号为100。如果x = 4那么你可以使用多达四个4s,这问题就变成经典的4个4拼图(除非您最多可以使用四个4,而不必只使用四个)。我们假设1 < x <= 9。 在此版本中,仅允许以下运算符: 加法(+),减法(-),乘法(*),除法(/)。请注意,这是实数除法,因此5/2 = 2.5。 求幂(例如4 ^ 4),因为如果用手工正常书写,将不涉及任何多余的符号。 您可以通过串联创建新的整数xs。例如,您可以使整数4, 44, 444, 4444。 您也可以仅使用括号将数字分组,以控制运算符的求值顺序。例如,您不能像那样将括号与串联结合在一起(4/4)(4/4) = (1)(1) = 11。 不得使用其他符号,并且适用标准的操作顺序。 如果输入x在定义的范围内且n介于两者之间0(100包括两端),则程序应为该输入生成正确的解决方案(如果存在)。否则,您的代码必须输出某些内容以指示不存在此类解决方案。 您必须能够在允许范围内的任何输入值下x,n在计算机上运行提交以完成操作。这就是代码高尔夫,因此最短的解决方案将获胜。 这个古老的相关问题使用更多的运算符(只有4s),因此从0到100的所有数字都是可解的,因此对于此挑战而言并非如此。 输入输出 您的代码需要两个整数x并n作为输入和输出应该解决(或者指示没有解决)在您方便的任何人类可读的格式。例如,输入4 6将意味着“使用最多四个4,使数字为6”。因此,如果输入为4 6输出,则可能为(4+4)/4+4。

1
通过使用给定的数字和算术运算符列表生成数字
系统会为您提供数字列表L = [17, 5, 9, 17, 59, 14],一包运算符O = {+:7, -:3, *:5, /:1}和一个数字N = 569。 任务 输出一个方程式,该方程式L的左侧使用所有数字,而右侧使用仅数字N。如果不可能,则输出False。解决方案示例: 59*(17-5)-9*17+14 = 569 局限和澄清 您不能连接数字([13,37]不能用作1337) 只会出现自然数和零L。 顺序L无关紧要。 您必须使用中的所有数字L。 只有运营商+,-,*,/会出现O。 O可以拥有比您所需更多的运算符,但至少|L|-1运算符 您最多可以多次使用每个运算符,直到的值O。 其中的所有四个运算O都是标准的数学运算;特别/是具有精确分数的正态除法。 点数 点越少越好 代码的每个字符都给你一点 您必须提供易于阅读的非公开版本。 背景 一个类似的问题,有人问堆栈溢出。我认为这可能是一个有趣的代码高尔夫挑战。 计算复杂度 就像彼得·泰勒(Peter Taylor)在评论中说的那样,您可以使用以下方法求解子集和: 您有一个子集总和的实例(因此,有一组S和一个整数x) L:= S + [0,...,0](| S |乘以零),N:= x,O:= {+:| S | -1,*:| …

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.