Questions tagged «algorithm»

对于与创建或实现算法有关的挑战。

22
自然派#0-摇滚
目标 创建一个接受输入的程序/函数N,检查N随机整数对是否相对质数,然后返回sqrt(6 * N / #coprime)。 TL; DR 这些挑战是仅需要自然和大脑(也许还有一些可重复使用的资源)才能逼近Pi的算法模拟。如果您在僵尸启示录期间确实需要Pi,那么这些方法不会浪费弹药!还有另外八个挑战。检出沙盒帖子以提出建议。 模拟 我们在模拟什么?好吧,两个随机整数是相对质数(即coprime或gcd == 1)的概率是6/Pi/Pi,因此计算Pi的自然方法是挖出两个桶(或少数几个)的岩石。数他们;看看他们的gcd是否为1;重复。这样做后,一对夫妇很多次,sqrt(6.0 * total / num_coprimes)会趋向Pi。如果计算世界末日后的平方根使您感到紧张,请不要担心!有牛顿法。 我们如何模拟这一点? 接受输入 N 请执行以下N次数: 均匀生成随机正整数,i并且j 用 1 <= i , j <= 10^6 如果gcd(i , j) == 1:result = 1 其他: result = 0 取N结果的总和,S 返回 sqrt(6 * N / S) 规格 输入值 …
39 code-golf  math  random  pi  approximation  popularity-contest  code-golf  sequence  number-theory  binary  coding-theory  code-golf  math  3d  code-golf  code-golf  math  number  code-golf  kolmogorov-complexity  code-golf  ascii-art  graphical-output  binary-tree  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation  hexadecimal  code-golf  math  number  set-theory  code-golf  math  arithmetic  number-theory  integer  code-golf  string  kolmogorov-complexity  code-golf  math  sequence  arithmetic  decision-problem  code-golf  code-golf  ascii-art  code-golf  array-manipulation  parsing  code-golf  string  ascii-art  kolmogorov-complexity  code-challenge  code-golf  sequence  code-golf  number  array-manipulation  sorting  code-golf  string  function  code-golf  arithmetic  code-golf  math  sequence  number-theory  primes  restricted-source  javascript  code-challenge  polyglot  rosetta-stone  code-golf  code-golf  regular-expression  code-golf  math  code-golf  math  primes  code-golf  ascii-art  kolmogorov-complexity  binary  code-golf  math  sequence  code-golf  sequence  subsequence  code-golf  string  code-golf  parsing  music  code-golf  grid  game  path-finding  board-game  code-golf  string  binary  code-golf  array-manipulation  balanced-string  code-golf  code-golf  algorithm  code-golf  string  number  arithmetic  array-manipulation  code-golf  array-manipulation  binary-tree  tree-traversal  code-golf  code-golf  tips  code-golf  string  base-conversion  code-golf  tips  s.i.l.o.s  code-golf  string  ascii-art  code-golf  code-challenge  code-golf  game 

21
原始号码
指导方针 情境 约翰有一个重要的数字,他不希望其他人看到它。 他决定使用以下步骤对数字进行加密: 他的号码始终是一个不递减的序列(即"1123") 他将每个数字都转换成英语单词。(即"123" -> "ONETWOTHREE") 然后,随机重新排列字母。(即"ONETWOTHREE" -> "ENOWTOHEETR") 约翰觉得这样做很安全。实际上,这样的加密很容易解密:( 任务 给定加密的字符串s,您的任务是解密它并返回原始数字。 规则 这是代码高尔夫,所以最短答案以字节为单位 您可以假设输入字符串始终有效 输入字符串仅包含大写字母 原始编号始终按升序排列 您可以以字符串或整数格式返回数字 字母将仅在一个单词之间而不是在整个字符串之间随机播放。 这些数字只能是1到9(含)之间的数字(ONE至NINE) 可能的未加密字符串 在将字符串从数字转换为字符串之后,下面是这些字符串的列表: 1 -> ONE 2 -> TWO 3 -> THREE 4 -> FOUR 5 -> FIVE 6 -> SIX 7 -> SEVEN 8 -> EIGHT 9 -> …

11
我的数组中有回声…我的数组中有回声…我的数组
救命!我的某些数组中似乎有一个令人讨厌的回声,我想摆脱它。发生这种情况时,原始数组会在中间的某个位置重复自身,从而使这些值彼此相加。 例如,数组[ 422, 375, 527, 375, 859, 451, 754, 451 ]包含自身的回声,如下所示: [ 422, 375, 527, 375, 859, 451, 754, 451 ] <-- array with echo (input) [ 422, 375, 105, 0, 754, 451 ] <-- original array (output) [ 422, 375, 105, 0, 754, 451 ] <-- echo of original …

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回文相似。因此,如果您想做进一步的阅读,那是一个开始的地方。

6
128年?假想的leap年改革
根据此视频,太阳年是365天,5小时,48分钟,45秒和138毫秒。在当前的公历中,leap年的规则如下: if year is divisible by 400, LEAP YEAR else if year is divisible by 100, COMMON YEAR else if year is divisible by 4, LEAP YEAR else, COMMON YEAR 不幸的是,这种方法每3216年关闭一天。 修改日历的一种可能方法是以下规则: if year is divisible by 128, COMMON YEAR else if year is divisible by 4, LEAP YEAR else, …

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] 注意:倒置金字塔永远不会为空,并且将始终仅由正整数组成。

8
最快的数独求解器
找到优胜者 好像我们有赢家!除非有人计划与世界上最快的数独求解器竞争,否则用户53x15会以惊人的快速解算器Tdoku获胜。对于仍在使用其求解器的任何人,我将在有时间的时候仍然对新提交的内容进行基准测试。 挑战 数独游戏的目标是用数字1-9填满棋盘,每个单元格中填入一个数字,这样每一行,每一列和每个盒子只包含一个数字。数独难题的一个非常重要的方面是应该只有一个有效的解决方案。 挑战的目标很简单,您应该尽快解决数独难题。但是,您不仅会解决任何旧的Sudoku问题,而且还将解决存在的最困难的Sudoku难题,即17线索Sudokus。这是一个例子: 规则 语言 您可以自由使用任何语言。如果我没有使用您的语言安装的编译器,则应该能够提供安装在Linux上可以运行脚本的环境所需的一组命令行说明。 标杆机 该基准测试将在Dell XPS 9560、2.8GHz Intel Core i7-7700HQ(3.8GHz增强)4核,8线程,16GB RAM上运行。GTX 1050 4GB。该机器运行Ubuntu 19.04。这是uname输出,任何有兴趣的人。 Linux 5.0.0-25-generic #26-Ubuntu SMP Thu Aug 1 12:04:58 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux 输入项 输入将作为文件给出。可以在这里找到。该文件包含49151个数独难题。文件的第一行是拼图的数量,其后每行长81个字符,代表一个拼图。未知细胞是0,已知细胞是1-9。 您的程序应该能够将文件名作为参数,或者具有来自STDIN的文件输入,以便于手动检查解决方案。请提供有关程序如何输入的说明。 时间/计分 通过评论中的讨论和一些反思,评分标准已更改为您整个程序的时间。即使在官方评分中,您的程序也应生成具有正确哈希值的输出文件。这不会干扰任何现有解决方案,也不会改变目前的排名。对计分系统的任何想法都将受到赞赏。 如果两个解决方案的单次运行得分相似,则我将运行多个基准测试,平均时间为最终得分。如果平均分数相差不到2%,我会认为这是平局。 如果您的解决方案运行时间超过一个小时,则不会获得正式评分。在这种情况下,您有责任报告其运行所在的计算机以及您的分数。对于优化的求解器,这应该不是问题。 编辑:引起我注意的是,尽管困难重重,但摆在眼前的问题并不是最困难的。如果有时间,我将尝试将此处介绍的解决方案与较难的难题组合进行基准测试,并将分数添加到每个提交的内容中。但是,这并非官方评分,只是为了好玩。 验证 您的解决方案将通过MD5 / SHA256校验和进行验证。您的脚本应该能够生成包含所有难题及其解决方案的文件。但是,该文件也将被手动检查,因此请勿尝试获取哈希冲突。您的输出文件应匹配: MD5:41704fd7d8fd0723a45ffbb2dbbfa488 SHA256:0bc8dda364db7b99f389b42383e37b411d9fa022204d124cb3c8959eba252f05 该文件将采用以下格式: <num_puzzles> <unsolved_puzzle#1>,<solved_puzzle#1> …

27
为*写翻译
任务很简单。为*语言编写口译员。 这是Wiki的更大链接。 只有三个有效的*程序: * 打印“ Hello World” * 打印0到2,147,483,647之间的随机数 *+* 永远运行。 根据此问题的规范,第三种情况必须是无限循环 输入: 可以通过我们的标准I / O规则通过任何可接受的输入方法进行输入 它将永远是以上程序之一 输出: 第一种情况应打印准确Hello World,带有或不带有尾行。 对于第二种情况,如果您的语言的整数最大值小于2,147,483,647,请使用您的语言的整数最大值 根据我们的标准I / O规则,第一种情况和第二种情况可以打印到任何可接受的输出。 第三种情况不应给出任何输出。 得分: 因为这是代码高尔夫球,所以最短的答案(以字节为单位)获胜。
20 code-golf  interpreter  code-golf  array-manipulation  sorting  code-golf  halting-problem  code-golf  javascript  code-golf  algorithm  code-golf  arithmetic  code-golf  math  counting  code-golf  math  code-golf  decision-problem  radiation-hardening  code-golf  conversion  bitwise  code-golf  number  decision-problem  code-golf  string  decision-problem  code-golf  random  game  code-golf  ascii-art  graphical-output  code-golf  decision-problem  binary-tree  tree-traversal  code-challenge  array-manipulation  code-challenge  graphical-output  path-finding  test-battery  algorithm  code-golf  integer  factorial  code-golf  binary-tree  code-golf  grid  graph-theory  code-golf  regular-expression  quine  code-golf  encoding  code-golf  king-of-the-hill  javascript 

11
埃塞俄比亚乘法
这个问题的灵感来自这个答案。碰巧的是,我小时候曾经使用埃塞俄比亚乘法,但直到最近才知道该方法的名称。 埃塞俄比亚乘法是仅使用加法,加倍和减半对整数进行乘法的方法。 方法: 取两个数字相乘,然后将其写下两列的顶部。 在左列中,将最后一个数字重复减半,舍弃所有余数,然后将结果写在同一列中的最后一个下面,直到写入值1。 在右侧栏中,重复将最后一个数字加倍,然后将结果写在下面。将结果添加到与左列显示1相同的行时停止。 检查生成的表,并丢弃左列中的值是偶数的任何行。将右侧列中的值相加,得出将原始两个数字相乘得到的结果。 例如:17 x 34 17 34 将第一列减半: 17 34 8 4 2 1 将第二列加倍: 17 34 8 68 4 136 2 272 1 544 删除第一个单元格为偶数的行,我们将这些数字放在方括号中的右边,以实现此目的: 17 34 8 [68] 4 [136] 2 [272] 1 544 将右侧栏中的剩余数字相加: 17 34 8 [68] 4 [136] 2 [272] …

3
弥合差距
给定具有白色背景和一组黑点的黑白图像,将一组白色像素绘制为红色,以便每对黑色像素之间都有一条路径。 细节 路径是一组连接的像素(8邻域连通性)。黑色像素可以用作路径的一部分。目标是在上述条件下尽量减少红色像素的集合,并输出相应的图像。 你不必须找到最佳的解决方案。 一个平凡而又最糟糕的解决方案就是将所有白色像素都涂成红色。 示例(为可视性将像素放大): 细节 给定一个像素图像(采用任何合适的格式),则返回另一个图像,该图像具有如上所述连接的点以及一个整数,该整数指示使用了多少个红色像素。 分数是14个测试用例的每一个的乘积((1 +红色像素的数量))。 目标是得分最低。 测试用例 14个测试用例如下所示。可以在此处找到用于验证输出连接性的python程序。 元 感谢@ Veskah,@ Fatalize,@ wizzwizz4和@trichoplax的各种建议。

14
递归级联[N]的累积和与M次迭代
取两个正整数N,M并[N]通过M迭代创建的串联累积和。输出最后一次迭代的结果。 串联累积和的定义: 以数字开头N并定义顺序X = [N] 追加到X的累积和X 重复步骤2 M次。 向量的累加和X = [x1, x2, x3, x4]为:[x1, x1+x2, x1+x2+x3, x1+x2+x3+x4]。 N = 1和的示例M = 4: P =累积和函数。 M = 0: [1] M = 1: [1, 1] - X = [1, P(1)] = [[1], [1]] M = 2: [1, 1, 1, 2] - X …
14 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 

11
解释松散范围
解释松散范围 ListSharp是一种解释型编程语言,具有许多功能,其中一个功能是基于1索引的范围创建器,其工作方式如下: 您可以将范围定义为(INT) TO (INT)或仅定义(INT)两个int可以从min到max int32值的范围 然后,您可以使用这些范围来提取数组的元素,而不必担心会超出其边界 因此: 1 TO 5 产生: {1,2,3,4,5} 3 产生: {3} 范围可以使用AND运算符相加 1 TO 5 AND 3 TO 6 产生: {1,2,3,4,5,3,4,5,6} 记住这也适用于负数 3 TO -3 产生: {3,2,1,0,-1,-2,-3} 挑战如下: 输入值 字符数组和先前定义的range子句作为字符串 输出量 范围中基于1索引位置的元素(不存在/负索引会转换为空字符) 如何取胜 作为代码高尔夫球挑战,您应该创建具有最少字节数的程序以获胜 有人指出不存在空字符,因此您应该忽略它们(我仅在此处显示它们是为了使它们更易于理解,但却使人感到困惑) 测试用例: input array is: {'H','e','l','l','o',' ','W','o','r','l','d'} range clause: "1 TO …
13 code-golf  array-manipulation  parsing  code-golf  string  ascii-art  kolmogorov-complexity  code-challenge  code-golf  sequence  code-golf  number  array-manipulation  sorting  code-golf  string  function  code-golf  arithmetic  code-golf  math  sequence  number-theory  primes  restricted-source  javascript  code-challenge  polyglot  rosetta-stone  code-golf  code-golf  regular-expression  code-golf  math  code-golf  math  primes  code-golf  ascii-art  kolmogorov-complexity  binary  code-golf  math  sequence  code-golf  sequence  subsequence  code-golf  string  code-golf  parsing  music  code-golf  grid  game  path-finding  board-game  code-golf  string  binary  code-golf  array-manipulation  balanced-string  code-golf  code-golf  algorithm  code-golf  string  number  arithmetic  array-manipulation  code-golf  array-manipulation  binary-tree  tree-traversal  code-golf  code-golf  tips  code-golf  string  base-conversion  code-golf  tips  s.i.l.o.s  code-golf  string  ascii-art  code-golf  code-challenge  code-golf  game 

5
通过…布雷森纳姆(Bresenham)的线栅格化,可跟踪任何矩阵
灵感来自此。 大二的阿加莎·斯蒂芬代尔(Agatha Stephendale)确实很喜欢栅格图形,他学习了线性代数课程。现在,她将矩阵想象为矩形,但是在她的艺术思想中,她将对角线附加到这些矩形上,并尝试计算沿它们的迹线。实际上,她想计算所有矩阵的迹线,而不仅仅是正方形。 由于Agatha是一位艺术家,她知道如何在自己喜欢的图像编辑器中绘制线条,而后者使用Bresenham的算法绘制线条。她甚至检查了维基百科,并找到了伪代码: function line(x0, y0, x1, y1) real deltax := x1 - x0 real deltay := y1 - y0 real deltaerr := abs(deltay / deltax) // Assume deltax != 0 (line is not vertical), // note that this division needs to be done in a way that preserves …

2
数论解释器,模n
一个句子数论(我们的目的)的是下列符号序列: 0和'(后继) -后继手段+1,所以0'''' = 0 + 1 + 1 + 1 + 1 = 4 +(加法)和*(乘法) = (等于) (和)(括号) 逻辑运算符nand(a nand b是not (a and b)) forall (通用量词) v0,v1,v2等。(变量) 这是一个句子的示例: forall v1 (forall v2 (forall v3 (not (v1*v1*v1 + v2*v2*v2 = v3*v3*v3)))) 这not x是简写x nand x-实际的句子会用到(v1*v1*v1 + v2*v2*v2 = v3*v3*v3) nand …
12 code-golf  number-theory  parsing  code-golf  kolmogorov-complexity  code-golf  code-golf  array-manipulation  matrix  code-golf  array-manipulation  code-golf  string  code-challenge  graphical-output  compression  code-golf  kolmogorov-complexity  code-golf  sequence  array-manipulation  code-golf  number  base-conversion  code-golf  string  decision-problem  code-golf  string  ascii-art  code-golf  string  random  code-challenge  brainfuck  code-generation  code-golf  code-golf  quine  code-golf  interpreter  code-golf  interpreter  code-golf  array-manipulation  sorting  code-golf  halting-problem  code-golf  javascript  code-golf  algorithm  code-golf  arithmetic  code-golf  math  counting  code-golf  math  code-golf  decision-problem  radiation-hardening  code-golf  conversion  bitwise  code-golf  number  decision-problem  code-golf  string  decision-problem  code-golf  random  game  code-golf  ascii-art  graphical-output  code-golf  decision-problem  binary-tree  tree-traversal  code-challenge  array-manipulation  code-challenge  graphical-output  path-finding  test-battery  algorithm  code-golf  integer  factorial  code-golf  binary-tree  code-golf  grid  graph-theory  code-golf  regular-expression  quine  code-golf  encoding  code-golf  king-of-the-hill  javascript 

8
数字三角形
信用 我感谢Rand Al'Thor提出的基于字母的问题,感谢他提出了此代码高尔夫挑战赛的灵感。 背景 挑战的本质基于兰德在他的“由三个字母组成的三角形”中提到的算法: 以10个字母开头,每个字母分别是X,Y或Z。 在每一行的下面,构造下一行,如下所示。如果两个相邻的字母相同,请在它们下面写下相同的字母;如果它们不同,则在它们下面写下第三个字母。 然后,您将重复上一步,直到第十行中有一个字母为止。 挑战 我们将对上述算法进行数学上的旋转: 让我们从一个10位数字的序列开始,每个数字用空格隔开,每个数字分别为1、2或3。 在每一行的下面,构造下一行,如下所示。如果两个相邻的数字相同,请在它们下面写下相同的数字;如果它们不同,则在它们下面写下第三位数字。 重复上一步,直到获得一个最终编号。 因此,遵循此算法,1 2 3 3 1 3 1 3 1 2例如,如果从row开始,则会生成以下三角形: Input: 1 2 3 3 1 3 1 3 1 2 Output: 1 2 3 3 1 3 1 3 1 2 3 1 3 2 2 …

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.