Questions tagged «fastest-algorithm»

渐近时间复杂度最小的答案将赢得最快的算法竞赛。对于基于实际运行时的挑战,请改用[最快的代码]。

30
聪明人的海市age楼
从前,我在阅读有关Quora的问题/答案 真的有没有计算机科学学位的程序员无法通过FizzBu​​zz测试 此代码是显而易见的答案 for i in range(1, 100): if i % 3 == 0 and i % 5 == 0: print "FizzBuzz" elif i % 3 == 0: print "Fizz" elif i % 5 == 0: print "Buzz" else: print i 当然,FizzBu​​zz已经被打死了,但这并不是这个问题的实质。您会在评论中看到有人提到该答案很不错,因为很容易添加额外条件,例如将“ Jazz”打印为4的倍数。(我不同意。扩展此方案需要O(2 ** n )代码行。) 您的挑战是编写由同行判断的最漂亮的FizzJazzBuzz版本。 选民需要考虑的一些事项: 干 除法/模运算的效率 …
29 popularity-contest  code-challenge  word  popularity-contest  string  grid  language-design  code-golf  source-layout  math  fastest-algorithm  assembly  code-golf  json  code-golf  arithmetic  array-manipulation  code-golf  ascii-art  code-golf  crossword  code-golf  string  restricted-complexity  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  decision-problem  balanced-string  syntax  code-golf  grid  puzzle-solver  hexagonal-grid  code-golf  math  number  sequence  code-golf  string  decision-problem  code-golf  cryptography  king-of-the-hill  code-challenge  fastest-code  code-golf  number  code-golf  code-golf  string  code-golf  cryptography  king-of-the-hill  java  code-golf  number-theory  base-conversion  code-golf  code-golf  array-manipulation  code-golf  array-manipulation  sorting  code-challenge  restricted-source  quine  code-golf  tips  python  king-of-the-hill  code-golf  source-layout  fractal  code-golf  tips  game  king-of-the-hill  path-finding  grid  code-golf  kolmogorov-complexity  natural-language  code-golf  tips  python  code-golf  number  arithmetic  sequence  array-manipulation  code-golf  number  combinatorics  random  integer-partitions  code-golf  string  code-golf  vim  comment  code-golf  combinatorics  counting  code-challenge  rosetta-stone  code-golf  combinatorics  sequence  subsequence  code-golf  code-challenge  restricted-source  primes  printable-ascii  popularity-contest  graphical-output  image-processing 

15
半回文之谜
回文是一个本身相反的词。 现在有些单词看起来像回文,但看起来却不然。例如,考虑单词 sheesh, sheesh不是回文,因为它的反向是hseehs不同的,但是如果我们认为sh是单个字母,那么它的反向是sheesh。我们将这种词称为半回文。 具体来说,如果我们可以将单词拆分成一定数量的块,则该单词为半回文,这样当块的顺序颠倒时,便形成了原始单词。(因为sheesh这些块是sh e e sh),我们也将不要求任何块包含两个单词的字母(否则每个单词都是半回文)。例如rear,不是半回文,因为它r ea r具有一个块(ea),其中包含来自原始单词两边的字母。我们认为奇数长度的单词的中心字符不在单词的两侧,因此对于奇数长度的单词,中心字符必须始终位于其自己的块中。 您的任务是获取正整数列表,并确定它们是否为半回文。您的代码应输出两个一致的不相等值,如果输入是半回文,则应输出一个,否则将输出另一个。但是,代码的字节序列本身必须是半回文。 答案将以字节计分,而字节数越少越好。 测试用例 [] -> True [1] -> True [2,1,2] -> True [3,4,2,2,3,4] -> True [3,5,1,3,5] -> True [1,2,3,1] -> False [1,2,3,3,4,1] -> False [11,44,1,1] -> False [1,3,2,4,1,2,3] -> False 程序生成更多的测试用例。 borrible指出,这些与广义Smarandache回文相似。因此,如果您想做进一步的阅读,那是一个开始的地方。

23
倒置的金字塔加法…反转!
倒置金字塔加法是获取一个数字列表并将其连续加在一起直到达到一个数字的过程。 给出数字后,2, 1, 1将发生以下过​​程: 2 1 1 3 2 5 这以数字结尾5。 你的任务 给定“颠倒金字塔”(升序)的右侧,编写将返回原始列表的程序或函数。 新的额外挑战:尝试在小于O(n ^ 2)的范围内进行操作 例 f([5, 2, 1]) => [2, 1, 1] f([84,42,21,10,2]) => [4,7,3,8,2] 注意:倒置金字塔永远不会为空,并且将始终仅由正整数组成。

16
还有一个程序,我出去了!
给定一个正整数嵌套级n和字符串s的打印的ASCII字符(到~,输出一个。方案,其中,以相同的语言运行时,输出一个程序,其输出程序输出该串s。 总计 n应该生成程序,所有程序都应以与您的答案相同的语言运行。 注意:您可以输出程序或函数-默认情况下,您可以将任何内容作为提交提交。 您可以s使用转义字符输入,以您的语言编写的程序或函数通常会如何输入字符串。 例 例如,给定n=1和s="recursion",Python 2程序可能输出: print "recursion" 运行此命令将输出: recursion 给定n=2和s =“ PPCG”,Python 2程序可能输出: print "print \"PPCG\" " 运行此输出: print "PPCG" 运行此输出: PPCG 相关(+标题灵感):还有一个LUL,我出门了 也相关(在沙箱中-现在已删除,但仍然可以以足够的信誉查看):源代码递归 测试用例 确保您的代码适用于以下测试用例(每行一个): n s 2 PPCG 4 Robert'); DROP TABLE Students;-- 17 Deep 2 Spaces In Here 3 "Don't forget quotes!" 5 'Backt`cks …
21 code-golf  recursion  code-golf  kolmogorov-complexity  board-game  code-golf  number-theory  polynomials  code-golf  code-golf  array-manipulation  polyglot  alphabet  answer-chaining  code-golf  sequence  math  atomic-code-golf  abstract-algebra  proof-golf  code-golf  internet  code-golf  internet  code-golf  ascii-art  kolmogorov-complexity  code-golf  math  ascii-art  number  integer  code-golf  decision-problem  binary-matrix  code-golf  number  sequence  number-theory  code-golf  math  decision-problem  matrix  abstract-algebra  code-golf  string  keyboard  code-golf  fractal  code-golf  math  sequence  combinatorics  hello-world  vim  code-golf  sequence  code-golf  graphical-output  image-processing  code-golf  decision-problem  matrix  linear-algebra  code-golf  ascii-art  code-golf  math  code-golf  ascii-art  graphical-output  code-golf  string  code-golf  string  substitution  code-golf  string  ascii-art  code-golf  arithmetic  code-golf  number  array-manipulation  decision-problem  code-golf  kolmogorov-complexity  code-generation  fractal  code-golf  ascii-art  kolmogorov-complexity  code-golf  ascii-art  code-golf  string  array-manipulation  code-golf  music  code-golf  array-manipulation  code-golf  internet  stack-exchange-api  math  fastest-algorithm  code-golf  binary  bitwise  code-golf  date  code-golf  string  code-golf  sequence  integer  code-golf  arithmetic  number-theory  code-golf  string  random 

12
沙米尔的秘密分享
给定n(玩家数量),t(阈值)和s(秘密),输出n由Shamir的秘密共享算法生成的秘密。 算法 出于这一挑战的目的,将在GF(251)(size的有限域251,也称为整数mod 251)中进行计算。通常,将选择该字段,使其大小比的素数大得多n。为了简化挑战,字段大小将保持不变。251选择它是因为它是8位无符号整数可以表示的最大质数。 生成t-1(包括)范围内的随机整数[0, 250]。标明这些一个1通过一个T-1 。 构造一个t-1使用次多项式s为恒定值,并从步骤1中的功率的系数的随机整数x:F(X)= S + X *一个1 + X 2 * A 2 + ... + X 叔1 * a t-1。 (含)范围内(f(z) mod 251)每个输出。z[1, n] 参考实施 #!/usr/bin/env python from __future__ import print_function import random import sys # Shamir's Secret Sharing algorithm # Input is taken …
17 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 

1
正则表达式验证正则表达式[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 2年前关闭。 构建一个将接受正则表达式字符串作为输入的正则表达式,并检查其是否有效。基本上,您的正则表达式应该能够验证自己。(任何无效的正则表达式都不应进行验证,因此您不能使用.*。;)) 您的风味必须得到众所周知的实现(Perl,sed,grep,gawk等)的完全支持,并且必须完全支持那些实现所支持的功能。[不用担心律师说话;我只是想消除所有可能导致智能***的漏洞。] 我会对此进行编码,但是我担心它会给那些知道和使用非功能丰富的风味的人带来优势。还是我的担心没有根据?
17 code-challenge  code-golf  code-golf  game  sudoku  code-challenge  math  ai-player  code-challenge  sorting  rosetta-stone  code-challenge  code-challenge  programming-puzzle  code-golf  number  code-golf  maze  code-golf  math  regular-expression  code-golf  sequence  code-golf  graph-theory  code-golf  string  word-puzzle  natural-language  brainfuck  metagolf  optimized-output  fastest-algorithm  code-golf  game-of-life  cellular-automata  code-golf  puzzle-solver  grid  code-golf  combinatorics  binary-tree  popularity-contest  code-challenge  code-golf  ascii-art  kolmogorov-complexity  brainfuck  metagolf  code-golf  c  date  code-golf  word-puzzle  crossword  word-search  code-golf  code-golf  quine  code-golf  string  random 

6
计算2个数字之间的小数位数
假设我们有一个非负整数,如果其平均数字值大于7,则该整数为“重”(即“重”)。 数字6959是“沉重的”,因为: (6 + 9 + 5 + 9)/ 4 = 7.5 数字1234不是,因为: (1 + 2 + 3 + 4)/ 4 = 2.5 用任何语言编写一个函数, HeftyDecimalCount(a, b) 当提供两个正整数a和b时,它返回一个整数,该整数指示在[a..b](含)区间内有多少个“重”整数。 例如,给定a = 9480和b = 9489: 9480 (9+4+8+0)/4 21/4 = 5.25 9481 (9+4+8+1)/4 22/4 = 5.5 9482 (9+4+8+2)/4 23/4 = 5.75 9483 (9+4+8+3)/4 24/4 …

16
无重复的阵列合并
我最近在StackOverflow上看到了以下Javascript代码,用于合并两个数组,并删除重复项: Array.prototype.unique = function() { var a = this.concat(); for(var i=0; i<a.length; ++i) { for(var j=i+1; j<a.length; ++j) { if(a[i] === a[j]) a.splice(j--, 1); } } return a; }; var array1 = ["Vijendra","Singh"]; var array2 = ["Singh", "Shakya"]; var array3 = array1.concat(array2).unique(); 尽管此代码有效,但效率极低(O(n^2))。您的挑战是使算法复杂度降低。 获胜标准是具有最低复杂度的解决方案,但领带会因字符长度最短而中断。 要求: 将所有代码打包到一个满足以下“正确性”要求的函数中: 输入:两个数组 输出:一个数组 将两个数组的元素合并在一起-任何一个输入数组中的任何元素都必须在输出数组中。 输出的数组不应有重复项。 …

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
从数组中删除条目以对其进行排序并最大程度地增加元素总数
这个挑战是从入学考试到封闭数字网络安全课程。无论如何,它与网络安全无关,只是为了测试学生的逻辑和编码技能。 任务 编写一个程序,该程序从数组中删除条目,以便以严格的降序对其余值进行排序,并且在所有其他可能的降序中将其总和最大化。 输入输出 输入将是整数值的数组严格地大于0和所有彼此不同。您可以自由选择是从文件,命令行还是标准输入中读取输入。 输出将是输入之一的降序子数组,其总和大于任何其他可能的降序子数组。 注意: [5, 4, 3, 2]是的子数组[5, 4, 1, 3, 2],即使4和3不相邻。只是因为1弹出了。 暴力解决方案 当然,最简单的解决方案是在给定数组的所有可能组合中进行迭代,并搜索具有最大和的排序后的数组,即在Python中: import itertools def best_sum_desc_subarray(ary): best_sum_so_far = 0 best_subarray_so_far = [] for k in range(1, len(ary)): for comb in itertools.combinations(ary, k): if sum(comb) > best_sum_so_far and all(comb[j] > comb[j+1] for j in range(len(comb)-1)): best_subarray_so_far …

5
释放二叉树
因此,在阅读一些基本的计算机科学概念之前。 二进制树是动态分配的结构(通常用于有序存储)。 由于其性质,对二叉树的遍历通常是递归的。 这是因为当有两种循环方式时,线性遍历(通过循环)是不自然的。 递归:这意味着将调用自身的函数。 在老式语言中,内存管理需要手动进行内存管理。 手册:意味着您必须自己做。 当您执行手动内存管理时,您需要实际要求底层系统释放树的每个成员。 释放:将内存恢复到全局状态,以便可以重复使用,并且不会耗尽内存。 释放:这是通过调用函数free()并将要恢复的指针传递给函数来完成的。 指针:它像一个虚拟的棍子。最后是记忆。当您请求内存时,您会得到一个具有内存的指针(虚拟棒)。完成后,您将归还指针(虚拟棒)。 递归解决方案: freeTree(Node* node) { freeTree(node->left); freeTree(node->right); free(node); } 然后问题是递归意味着您要重复调用同一函数。这会增加堆栈。增加堆栈会占用更多内存。释放树的原因是,您希望使用更多的内存来回存是适得其反的(即使您确实收回了内存的两个位)。 最后的问题是: 因此,问题集中在将上述递归版本转换为线性解决方案(这样您就不必使用内存了)。 给出节点类型 typedef struct Node Node; struct Node { Node* left; Node* right; }; 编写函数以释放这些节点的树。 限制条件: 无法使用递归(甚至不能间接使用) 无法分配任何动态空间进行跟踪。 注意有一个O(n)解 优胜者: 最佳复杂性。 抢七局:首先提交 抢七局:最少的字符。

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 

2
在x86程序集中计算数量级的最快方法
任务很简单:编写汇编程序,使用尽可能少的时钟周期来计算整数的数量级。 数量级定义为log10,不是log2。 有效输入的范围是0到(包括)。未定义超出该范围的输入行为。1012 值应四舍五入为最接近的整数,但给定输入0的输出应为0。(您可以认为这是无符号整数中负无穷大的最佳表示形式)。 必须是x86汇编。 该整数必须是运行时值,而不是静态/内联整数。因此,我们在编译时不知道它是什么。 假设您已经将一个整数加载到寄存器中。(但为了清楚起见,请在答案中包括在寄存器中设置值)。 无法调用任何外部库或函数。 免费使用英特尔文档中的任何可用说明。 没有C 可接受〜7种Intel Core架构中的任何一种(在第10页上列出)。理想情况下为Nehalem(Intel Core i7)。 胜出的答案是使用尽可能少的时钟周期的答案。也就是说,它每秒可以进行最多的操作。大概的时钟周期摘要在这里:http : //www.agner.org/optimize/instruction_tables.pdf。发布答案后,可能会计算时钟周期。

1
Tatamibari求解器
背景 Tatamibari是由Nikoli设计的逻辑难题。 Tatamibari拼图游戏在带有三种不同符号的矩形网格上播放:+,-。和|。求解器必须根据以下规则将网格划分为矩形或正方形区域: 每个分区中必须只包含一个符号。 一个+符号必须包含在一个正方形。 甲|符号必须被包含在具有比宽度更大的高度的矩形。 甲-符号必须被包含在具有比高度较大的宽度的矩形。 四个片段可能永远不会共享相同的角落。(这是日本榻榻米瓷砖通常的放置方式。) 以下是一个示例难题,并提供了解决方案: 任务 解决给定的Tatamibari难题。 输入输出 输入是一个2D网格,代表给定的Tatamibari拼图。每个单元包含四个字符之一:+,-,|,和您所选择的字符来表示一个非线索细胞。在测试用例中,使用星号*。 您可以选择任何合适的输出格式,这些输出格式可以明确表示Tatamibari拼图的任何有效解决方案。这包括但不限于:(如有疑问,请在评论中提问。) 4元组的列表,其中每个元组包括矩形的顶部索引,左侧索引,宽度和高度(或任何等效表示形式) 与输入形状相同的数字网格,其中每个数字代表一个矩形 坐标集列表,每个坐标集包括矩形中单元格的所有坐标 如果难题有多个解决方案,则可以输出任意数量(一个或多个)的有效解决方案。输入保证至少有一个解决方案。 测试用例 Puzzle: |-* *+| *-* Solution: 122 134 554 ===== Puzzle: +*** **|* *+** ***- Solution: 1122 1122 3322 3344 ====== Puzzle: |*+*+ ***** ****- ***+| +**** Solution: 12233 12233 44444 55667 …

7
高尔夫代码:弗雷序列(I)
挑战 在此任务中,您将得到一个整数N(小于10 ^ 5),输出N阶的Farey序列。 输入N在单行中给出,输入由EOF终止。 输入项 4 3 1 2 输出量 F4 = {0/1, 1/4, 1/3, 1/2, 2/3, 3/4, 1/1} F3 = {0/1, 1/3, 1/2, 2/3, 1/1} F1 = {0/1, 1/1} F2 = {0/1, 1/2, 1/1} 约束条件 输入数量不会超过10 ^ 6个值 您可以使用任何选择的语言 最短的解决方案获胜!
10 code-golf  math  code-golf  math  code-golf  number  number-theory  code-golf  math  arithmetic  repeated-transformation  code-golf  geometry  popularity-contest  code-golf  code-golf  tips  haskell  math  fastest-algorithm  code-golf  combinatorics  code-golf  math  polynomials  rational-numbers  code-golf  code-golf  popularity-contest  javascript  code-golf  kolmogorov-complexity  code-golf  code-golf  math  combinatorics  permutations  code-challenge  restricted-source  random  array-manipulation  code-challenge  generation  code-golf  code-golf  ascii-art  arithmetic  division  code-challenge  number  code-golf  math  number  binary  code-golf  ascii-art  code-golf  interpreter  stack  code-golf  internet  networking  code-golf  math  code-golf  ascii-art  code-golf  math  sequence  code-golf  hello-world  restricted-source  code-golf  ascii-art  code-golf  geometry  code-golf  kolmogorov-complexity  pi  code-golf  math  combinatorics  permutations  code-golf  math  code-challenge  ascii-art  code-golf  string  code-golf  quine  code-golf  math  floating-point  golfscript  code-golf  string  code-golf  sliding-puzzle  code-challenge  arithmetic  code-golf  math  code-golf  geometry  optimized-output 

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.