Questions tagged «optimization»

对于那些侧重于优化其他标签未涵盖的方面的挑战。

4
设置我的微波炉[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 3年前关闭。 我很懒惰,所以我尽量总是用最少的按键来编程微波炉。我的微波炉有以下按钮: 一个“分钟加”按钮,只能先按一下,并表示“开始”。可能会多次按下它几分钟,但不会在手动输入的时间上增加一分钟。 输出量+ 一组0-9按钮。时间输入为MMSS(即“ 130”表示1分30秒)。秒的范围从0..99。因此,“ 130”和“ 90”是等效的条目。显然,即使输入的秒数部分超过59,每分钟也是60秒。 输出0..9 如果手动输入时间,则必须按下“开始”按钮才能启动微波炉。 输出量S 我的食品包装以MM:SS指定时间,因此程序必须接受该输入。 例子 1:00是+(记住“分钟加”表示开始) 1:01是61S(秒可以超过59,但是“分加”不能与数字结合使用-我认为这是我微波炉的设计缺陷) 9:00是900S(比短+++++++++)

2
Collat​​z风格的打蛋
受到伟大的API复活节彩蛋狩猎的启发! 摘要 您的任务是使用尽可能少的步骤在“ Collat​​z空间”(稍后说明)中搜索预定整数。 介绍 这项挑战基于著名的Collat​​z猜想,希望这里至少每个人都听说过。这是“ 打印超级Collat​​z编号”的摘要。 将在Collat​​z序列(也称为3X + 1的问题)是你用任意正整数开始,在这个例子中,我们将使用10和应用这一套步骤吧: if n is even: Divide it by 2 if n is odd: Multiply it by 3 and add 1 repeat until n = 1 的在Collat​​z距离C(m,n)的两个数字之间m和n,对于这一挑战的目的,是在两个数字之间的距离在Collat​​z图表(贷记@tsh告诉我关于这个概念),其被定义为如下:(使用21和13作为例子): 写下了在Collat​​z序列m(在这种情况下,21): 21, 64, 32, 16, 8, 4, 2, 1 写下了在Collat​​z序列n(在这种情况下,13): 13, 40, 20, 10, 5, …

1
Hadamard问题的优化版本
首先,一些定义。 甲Hadamard矩阵是方阵,其条目是+1或-1,并且其行是相互正交的。所述哈达玛猜想提出的顺序4k的Hadamard矩阵存在每一个正整数k。 甲循环矩阵是一类特殊的矩阵,其中每一行向量是一个旋转元件的相对前述行向量权。那就是矩阵是由它的第一行定义的。 据已知的是,除了4×4的矩阵,有没有循环Hadamard矩阵。 具有m行和n> = m列的矩阵是局部循环,如果是一些循环矩阵的第一m行。 任务 对于从2开始的每个偶数n,输出具有+ -1项和n列的最大部分循环矩阵的大小,该矩阵的所有行都相互正交。 得分了 您的分数是最高的n,因此k <= n,没有任何人比您发布的正确答案更高。显然,如果您拥有所有最佳答案,那么您将获得n您发布的最高分数。但是,即使您的答案不是最佳答案,如果没有其他人能打败它,您仍然可以获得分数。 语言和图书馆 您可以使用任何喜欢的语言和库。在可行的情况下,能够运行您的代码将是一件好事,因此,请尽可能提供有关如何在Linux中运行/编译代码的完整说明。 领先的作品 Mitch Schwartz在Python中撰写的64

4
近似方阵
背景 我有一堆相等大小的正方形盒子,由于我是个整洁的人,所以我想将它们全部排列成正方形。但是,它们的数量不一定是完美的正方形,因此我可能不得不近似正方形。我希望您找到我最美的安排-当然是通过编程。 输入值 您的输入是一个正整数k,代表盒子的数量。 输出量 您的程序应选择两个正整数m, n使之m*(n-1) < k ≤ m*n成立。它们代表了我们正在排列的大正方形形状的宽度和高度。由于我们正在寻找具有美学美感的形状,因此数量应尽可能少,以使形状接近正方形,并且面积接近。如果该对还有几个候选者,请选择宽度最大的那个。(m - n)2 + (m*n - k)2k(m, n)m 现在,您的实际输出将不是数字m和n。取而代之的是,您应使用字符#来表示框来打印框的排列。更具体地说,您应打印n-1行,每行包含m字符#,然后打印一行k - m*(n-1)字符#。请注意,输出中完全包含k字符#。 规则和计分 输出中不得包含任何前导或尾随空格,除非需要,最后一行可以用尾随空格填充,该尾随空格的长度应为length m。可能只有一个尾随的换行符,但没有前面的换行符。#如果需要,可以使用任何可打印的ASCII字符代替。 您可以编写完整的程序,或从函数返回字符串。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 这是一些输入值的正确输出。 1 # 2 ## 3 ## # 4 ## ## 8 ### ### ## 13 ##### ##### ### 17 ###### ###### ##### 18 …

4
5秒找到派
Pi乘以e(如果喜欢模棱两可的表示法,则用Pie表示)到100个小数位: 8.5397342226735670654635508695465744950348885357651149618796011301792286111573308075725638697104739439... (OIES A019609)(可能不合理的论点) 您的任务是编写一个程序,该程序采用正整数N,然后将Pi * e截断为N个小数位。例如,如果N = 2,则输出应为8.53。 这是一个优化问题,因此可以为N的最大值提供正确输出的提交将获胜。 为了确保使用相同的计算能力来判断所有提交,您的代码必须使用支持的任何语言在ideone上运行。根据ideone常见问题解答,未登录用户的运行时间限制为5秒。这5秒的限制是您必须使用的限制,而不是已登录用户的15秒的限制。(有关内存,代码大小等其他限制,请参见常见问题解答。) 具体来说,任何未登录ideone的人都应该能够在ideone上针对从1到某个最大Nmax的所有N值运行您的程序,并且几乎始终都能看到正确的输出。没有任何Time limit exceeded或Memory limit exceeded等错误。Nmax最大的提交者获胜。 (只要ideone不会出错,那么实际花费的时间是否超过5秒钟就无关紧要。“ 几乎所有的时间 ”都被定义为特定N的95%以上的时间。) 细节 您可以使用任何喜欢的数学方法来计算Pi * e,但是您不能对输出的硬编码超出Pi,e或Pi * e的前十二个数字。 给定无限的资源,您的程序应该可以工作于任何N个。 如果您的语言碰巧有Pi或e常量,则可以使用它们。 您可能无法访问代码外部的网站或资源(如果ideone允许的话)。 除了硬编码和访问外部资源之外,ideone允许的任何事情几乎都可以确定。 您的输入和输出必须(显然)必须与ideone提供的I / O一起使用(看起来只有stdin / stdout)。如果您需要在输入N周围加引号或输出类似的东西ans = ...,等等就可以了。 请提供一个以Nmax为输入的代码的ideone片段的链接。 如果碰巧出现平局(仅当多个提交都达到64kB输出字符限制时才有可能),以最高票数回答为准。

1
蛙人冠军
游戏 我们大多数人都知道Frogger,这是80年代的街机游戏,其目标是让青蛙安全地越过繁忙的高速公路和充满危险的池塘,安全地到达家中。 一个挑战是发行几个月前制定一个青蛙的克隆。但是,为什么可以在玩 Frogger 时克隆 Frogger?:) 考虑以下简化播放网格: XXXXXXXXXXXXXXXXXXXXXXX North Safe Zone ----------------------- | | <<<< Express Lane West (Lane 1) | | > Gridlock East (Lane 2) | | << Freeflowing Traffic West (Lane 3) | | < Gridlock West (Lane 4) | | >>>> Express Lane East (Lane 5) …

2
X大于3,且X和Y之间至少相差2
我试图打败一些C ++。是否可以使这种情况更短? X > 3 & X - Y > 1 (当然,除了删除空白。) 所以,X至少4,但X >= Y + 2。 X和Y是[0,5]间隔中的整数。 我试图找到一些按位公式,但失败了。
11 code-golf  number  tips  c++  code-golf  popularity-contest  obfuscation  code-golf  c  code-golf  board-game  hexagonal-grid  code-golf  game  grid  code-golf  number  permutations  popularity-contest  math  graphical-output  number-theory  king-of-the-hill  code-challenge  compression  code-challenge  fastest-code  code-golf  math  ascii-art  animation  code-golf  popularity-contest  generation  counting  fastest-code  fastest-code  popularity-contest  image-processing  king-of-the-hill  code-golf  conversion  binary-tree  code-golf  math  number  rational-numbers  division  code-golf  restricted-source  hashing  atomic-code-golf  logic-gates  code-golf  function  code-challenge  puzzle-solver  ai-player  test-battery  popularity-contest  music  compression  code-golf  number  stack  atomic-code-golf  logic-gates  ascii-art  popularity-contest  code-golf  date  grid  code-challenge  game  code-golf  parsing  code-golf  math  geometry  sequence  popularity-contest  code-trolling  code-golf  string  restricted-source  code-golf  quine  king-of-the-hill  code-golf  math  code-golf  simulation  code-golf  ascii-art  code-challenge  sorting  optimization 

2
实施超级优化器进行添加
任务是编写可为位和找到小的逻辑公式的代码。 总体挑战是您的代码要找到最小的命题逻辑公式,以检查y二进制0/1变量的总和是否等于某个值x。让我们将变量称为x1,x2,x3,x4等。您的表达式应等于和。也就是说,当且仅当和等于x时,逻辑公式才应为真。 这是一个幼稚的方法。假设y = 15且x =5。选择所有3003种不同的方式来选择5个变量,并为每个变量创建一个新子句,其中包含这些变量的AND和其余变量的否定AND。您最终得到3003个子句,每个子句的长度恰好为15,总费用为45054。 例如,您的答案应该是可以粘贴到python中的那种逻辑表达式,以便我可以对其进行测试。如果两个人得到相同大小的表达式,则运行速度最快的代码将获胜。 您可以在解决方案中引入新变量。因此,在这种情况下,您的逻辑公式由y个二进制变量,x和一些新变量组成。当且仅当y变量的总和等于x时,整个公式才是可满足的。 首先,有些人可能想从y = 5变量加到x = 2开始。天真的方法将产生50的成本。 该代码应将两个值y和x作为输入,并输出公式及其大小作为输出。解决方案的成本只是其输出中变量的原始计数。所以(a or b) and (!a or c) 算作4只允许运营商and,or和not。 更新事实证明,至少在理论上,当x = 1时,有一个聪明的方法可以解决这个问题。

2
用神经网络找到多项式的最大根
挑战 找到最小的前馈神经网络,以便在给定具有整数项的任何3维输入向量,网络输出最大前馈神经网络(即,“最正”)的根多项式,其误差严格小于。(a,b,c)(a,b,c)(a,b,c)[−10,10][−10,10][-10,10]x3+ax2+bx+cx3+ax2+bx+cx^3+ax^2+bx+c0.10.10.1 可接纳性 在我之前的神经网络高尔夫挑战赛中,可接纳性的概念似乎有些局限,因此对于这一挑战,我们使用了更为宽松的前馈神经网络定义: 甲神经元是一个函数,其由向量所指定的权重,一个偏压和激活函数的方式如下:ν:Rn→Rν:Rn→R\nu\colon\mathbf{R}^n\to\mathbf{R}w∈Rnw∈Rnw\in\mathbf{R}^{n} b∈Rb∈Rb\in\mathbf{R} f:R→Rf:R→Rf\colon\mathbf{R}\to\mathbf{R} ν(x):=f(w⊤x+b),x∈Rn.ν(x):=f(w⊤x+b),x∈Rn. \nu(x) := f(w^\top x+b), \qquad x\in\mathbf{R}^n. 具有输入节点 的前馈神经网络是,可以根据序列个神经元,其中每个从并输出标量。鉴于一些指定的一组的输出节点,则所述神经网络的输出是向量。{1,…,n}{1,…,n}\{1,\ldots,n\}(x1,…,xn)∈Rn(x1,…,xn)∈Rn(x_1,\ldots,x_n)\in\mathbf{R}^n(νk)Nk=n+1(νk)k=n+1N(\nu_k)_{k=n+1}^Nνk:Rk−1→Rνk:Rk−1→R\nu_k\colon\mathbf{R}^{k-1}\to\mathbf{R}(x1,…,xk−1)(x1,…,xk−1)(x_1,\ldots,x_{k-1})xkxkx_kS⊆{1,…,N}S⊆{1,…,N}S\subseteq\{1,\ldots,N\}(xk)k∈S(xk)k∈S(x_k)_{k\in S} 由于可以针对任何给定任务调整激活功能,因此我们需要限制激活功能的类别,以使这一挑战变得有趣。允许以下激活功能: 身份。 f(t)=tf(t)=tf(t)=t ReLU。 f(t)=max(t,0)f(t)=max⁡(t,0)f(t)=\operatorname{max}(t,0) SoftPlus。 f(t)=ln(et+1)f(t)=ln⁡(et+1)f(t)=\ln(e^t+1) 乙状结肠。 f(t)=etet+1f(t)=etet+1f(t)=\frac{e^t}{e^t+1} 正弦曲线。 f(t)=sintf(t)=sin⁡tf(t)=\sin t 总体而言,可允许的神经网络由输入节点,神经元序列和输出节点指定,而每个神经元由权重,偏差和激活函数(由上表列出)指定。例如,以下神经网络是可以接受的,尽管它不能满足此挑战的性能目标: 输入节点: {1,2}{1,2}\{1,2\} 神经元: forνk(x1,…,xk−1):=xk−2+xk−1νk(x1,…,xk−1):=xk−2+xk−1\nu_k(x_1,\ldots,x_{k-1}):=x_{k-2}+x_{k-1}k∈{3,…,10}k∈{3,…,10}k\in\{3,\ldots,10\} 输出节点: {5,9,10}{5,9,10}\{5,9,10\} 该网络由8个神经元组成,每个神经元具有零偏倚和身份激活。换句话说,该网络计算由和生成的广义斐波纳契数列,然后以该顺序输出该数列的第5,第9和第10个数。x1x1x_1x2x2x_2 计分 给定的实数与十进制扩展,让是最小的非负整数为其中,并且让是最小的非负整数为其中是整数。然后我们说是精密的。xxxp(x)p(x)p(x)ppp10−p⋅|x|&lt;110−p⋅|x|&lt;110^{-p}\cdot |x|<1q(x)q(x)q(x)qqq10q⋅x10q⋅x10^q \cdot xp(x)+q(x)p(x)+q(x)p(x)+q(x)xxx 例如,的精度为,而的精度为。x=1.001x=1.001x=1.001444x=0x=0x=0000 您的分数是神经网络中权重和偏差的精度之和。 (例如,上面的示例得分为16。) 验证 虽然可以用三次公式来表示根,但是最大的根也许最容易通过数值手段获得。继@ XNOR的建议下,我计算出的最大根整数的每一次选择,并且结果可以在这里找到。此文本文件的每一行都是形式。例如,第一行报告的最大根大约为。a,b,c∈[−10,10]a,b,c∈[−10,10]a,b,c\in[-10,10]a,b,c,rootx3−10x2−10x−10x3−10x2−10x−10x^3-10x^2-10x-1010.9924714044544910.9924714044544910.99247140445449 编辑:如果多项式具有多个根,我发布的原始文件将出错。当前版本应该没有此类错误。

1
将阵列和程序一分为二
介绍 您的任务是编写一个程序,将矩形整数数组平均分成两半(无论出于何种原因)。该任务需要大量计算,但是幸运的是您有一台双核计算机来执行计算。为了最大限度地提高并行性的好处,您决定将程序平均分成两半,并让每个内核独立地运行一个部分。 输入输出 您的输入是大小为1×1的非负整数的矩形2D数组,采用任何合理格式。甲分裂这种阵列的被分割的每个水平行所获得成前缀和后缀(其中任一个可能是空的)。为了使拆分有效,必须在相同索引或相邻索引处拆分两个相邻行。例如,考虑数组 2 4 5 5 6 3 9 7 1 7 7 0 0 0 3 6 7 8 1 2 4 7 6 1 6 6 8 2 0 0 这是有效的拆分: 2;4 5 5 6 3 ;9 7 1 7 7 0 ;0 0 3 6 …

3
最小成本流问题
甲流网络是一个有向图G = (V, E)具有源顶点s ϵ V和宿顶点t ϵ V,并且其中每一个边缘(u, v) ϵ E上的曲线图(连接节点u ϵ V和v ϵ V)具有与其相关联的2个量: c(u, v) &gt;= 0,边缘的能力 a(u, v) &gt;= 0,通过边缘发送一个单位的成本 我们定义一个函数0 &lt;= f(u, v) &lt;= c(u, v)为通过给定边的单位数量(u, v)。因此,对于一个给定边缘的成本(u, v)是a(u, v) * f(u, v)。的最小代价流问题被定义为在最小化对于给定的流量所有边缘的总成本d,由下面的量给出: 以下约束适用于该问题: 容量要求:通过给定边的流量不得超过该边的容量(f(u, v) &lt;= c(u, v))。 倾斜对称:当方向相反时,通过给定边缘的流动必须是反对称的f(u, v) = -f(v, u)。 流保护:净流量到任何非汇聚非源节点必须为0(对于每个u ∉ {s, …

1
+-背包问题
给定一组项目,每个项目都有一个权重和一个值,请确定要包含在集合中的每个项目的数量,以使总重量小于或等于给定的限制,并且总值尽可能大。 维基百科获取更多信息 例如,您可以得到最大权重为15的对象,值/质量为的对象,[5,2], [7,4] [1,1]然后输出[7,0,1]7个[5 &lt;value&gt;, 2 &lt;mass&gt;]对象和1个[1 &lt;value&gt;, 1 &lt;mass&gt;]对象,得分为36。 规则 输入可以采用任何合理的格式 输出也是灵活的格式, 您不得使用非标准的库。如果必须安装或下载任何库使用它从初始设置则分离不容许 物体可能具有负质量和负值(即-1,-1) 需要最佳答案 获奖 最短的代码胜出 负数和价值? 这是这一挑战的关键部分。假设您有一个对象(物品,质量,值),例如[4,3],[-1,-1]一个容量为15的袋子。您可以放置​​第一个对象中的3个,得分为9,或者放置第一个对象中的4个和-1,-1中的一个对象得分为11。

13
扩大比较链
与大多数语言不同,Python a&lt;b&lt;c会像在数学中一样进行评估,实际上是比较三个数字,而不是将布尔值a&lt;b与进行比较c。用C(以及许多其他语言)编写此代码的正确方法是a&lt;b &amp;&amp; b&lt;c。 在这个挑战中,您的任务是将这样任意长度的比较链从Python /直观表示扩展到如何用其他语言编写。 技术指标 您的程序必须要处理运算符:==, !=, &lt;, &gt;, &lt;=, &gt;=。 输入将具有仅使用整数的比较链。 不用担心一路比较的真实性,这纯粹是语法/语法上的挑战。 输入将没有任何空格,以防止答案因分割空格而使解析变得琐碎。 但是,您的输出可能只有一个空格,要么仅包含&amp;&amp;,要么包含比较运算符和&amp;&amp;,或者两者都不包含,但是要保持一致。 测试用例 Input Output --------------------------------------------------------------- 3&lt;4&lt;5 3&lt;4 &amp;&amp; 4&lt;5 3&lt;4&lt;5&lt;6&lt;7&lt;8&lt;9 3&lt;4 &amp;&amp; 4&lt;5 &amp;&amp; 5&lt;6 &amp;&amp; 6&lt;7 &amp;&amp; 7&lt;8 &amp;&amp; 8&lt;9 3&lt;5==6&lt;19 3&lt;5 &amp;&amp; 5==6 &amp;&amp; 6&lt;19 10&gt;=5&lt;7!=20 10&gt;=5 &amp;&amp; 5&lt;7 &amp;&amp; 7!=20 15==15==15==15==15 …
9 code-golf  parsing  conversion  syntax  code-golf  sequence  primes  code-challenge  geometry  optimization  code-golf  graph-theory  code-golf  number-theory  primes  integer  code-golf  source-layout  cops-and-robbers  code-golf  source-layout  cops-and-robbers  code-golf  sequence  primes  integer  code-golf  math  number-theory  primes  rational-numbers  code-golf  math  sequence  number-theory  primes  code-golf  string  code-golf  math  combinatorics  permutations  restricted-complexity  code-golf  array-manipulation  code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

30
给定int输入n,输出n * reversed(n)
给定一个整数n,打印输出n * reversed(n) reversed(n)是当您reverse的数字为时得到的数字n。 reverse(512) = 215 reverse(1) = 1 reverse(101) = 101 &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; func(5) = 5*5 = 25 func(12) = 12*21 = 252 func(11) = 11*11 = 121 func(659) = 659*956 = 630004 最短的代码胜出! 排行榜 显示代码段 var QUESTION_ID=144816,OVERRIDE_USER=71625;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&amp;pagesize=100&amp;order=desc&amp;sort=creation&amp;site=codegolf&amp;filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&amp;pagesize=100&amp;order=desc&amp;sort=creation&amp;site=codegolf&amp;filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&amp;&amp;answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&amp;&amp;(r="&lt;h1&gt;"+e.body.replace(OVERRIDE_REG,"")+"&lt;/h1&gt;")});var a=r.match(SCORE_REG);a&amp;&amp;e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var …
9 code-golf  math  arithmetic  code-golf  math  integer  code-golf  arithmetic  integer  code-golf  sequence  base-conversion  palindrome  code-golf  math  primes  integer  code-golf  parsing  conversion  syntax  code-golf  sequence  primes  code-challenge  geometry  optimization  code-golf  graph-theory  code-golf  number-theory  primes  integer  code-golf  source-layout  cops-and-robbers  code-golf  source-layout  cops-and-robbers  code-golf  sequence  primes  integer  code-golf  math  number-theory  primes  rational-numbers  code-golf  math  sequence  number-theory  primes  code-golf  string  code-golf  math  combinatorics  permutations  restricted-complexity  code-golf  array-manipulation  code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

3
受限内存优化
两个字符串之间的编辑(或Levenshtein)距离是将一个字符串转换为另一个字符串所需的最小单字符插入,删除和替换次数。如果两个字符串的长度均为n,则众所周知可以通过动态编程在O(n ^ 2)时间内完成。以下Python代码针对两个字符串s1和进行此计算s2。 def edit_distance(s1, s2): l1 = len(s1) l2 = len(s2) matrix = [range(l1 + 1)] * (l2 + 1) for zz in range(l2 + 1): matrix[zz] = range(zz,zz + l1 + 1) for zz in range(0,l2): for sz in range(0,l1): if s1[sz] == s2[zz]: matrix[zz+1][sz+1] = min(matrix[zz+1][sz] + …

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.