Questions tagged «sorting»

此挑战旨在通过排序,排序或以其他方式组织一些数据集来解决。

25
排序字符串
如果对字符串进行排序,通常会得到类似以下内容的信息: ':Iaaceeefggghiiiiklllllmnnooooprrssstttttuuyyyy 是的,那是第一句话。 正如你所看到的,有很多重复的字符,aa,eee,ttttt,9位等。 如果我们将128第一个重复项的ASCII值相加,256将第二个重复项的ASCII值相加384,依此类推,依此类推,再次对其进行排序并输出新的字符串(取模128以返回相同的字符),我们将得到以下字符串: ':Iacefghiklmnoprstuy aegilnorstuy egilosty iloty lt (请注意单个前导空格和四个尾随空格)。 该字符串“依次排序” <space>':I....uy,<space>aeg....uy,<space>egi....ty,<space>iloty,<space>lt,<space>,<space>,<space>,<space>。 如果我们使用带数字的字符串,可能会更容易形象化。该字符串111222334在“排序”后将为:123412312。 挑战: 毫不奇怪,挑战在于编写根据以上描述对字符串进行排序的代码。 您可以假定输入字符串将仅包含32-126(空格到波浪号)范围内的可打印ASCII字符。 测试用例: **Test cases:** *:Tacest*es*s* If you sort a string you'll typically get something like: ':Iacefghiklmnoprstuy aegilnorstuy egilosty iloty lt Hello, World! !,HWdelorlol #MATLAB, 114 bytes #,14ABLMTbesty 1A f=@(s)[mod(sort(cell2mat(cellfun(@(c)c+128*(0:nnz(c)-1),mat2cell(sort(s),1,histc(s,unique(s))),'un',0))),128),'']; '()*+,-0128:;=@[]acdefhilmnoqrstuz'(),0128@acefilmnorstu'(),12celmnostu'(),12celnstu(),clnst(),cls(),cs(),()()()() 这是代码高尔夫球,因此每种语言中以字节数计的最短代码将赢得ref。

28
计算超级对数
这应该是一个简单的挑战。 给定一个数字n >= 0,输出的超级对数(或log *,log-star或迭代对数,它们是等效的,因为n对于该挑战永远不会为负。)n。 这是四官能的两个反函数之一。另一个是超级根,这是一个相关的问题。 例子 Input Output 0 0 1 0 2 1 3 2 4 2 ... 15 2 16 3 ... 3814279 3 3814280 4 规则 您可能不需要支持小数。 您需要至少支持输入3814280 = ceiling(e^e^e)。 您可能不对值进行硬编码3814280。(理论上,您的程序必须支持更高的数字。)我希望实现一种算法。 最短的代码胜出。 相关OEIS
29 code-golf  math  code-golf  array-manipulation  sorting  code-golf  math  arithmetic  matrix  code-golf  string  kolmogorov-complexity  code-golf  string  code-golf  math  sequence  arithmetic  recursion  code-golf  math  ascii-art  sequence  code-golf  math  array-manipulation  code-golf  code-golf  kolmogorov-complexity  code-golf  string  code-golf  string  decision-problem  code-golf  array-manipulation  tips  javascript  json  code-golf  math  string  number  number-theory  code-golf  math  sequence  fibonacci  number  arithmetic  fastest-code  integer  code-golf  math  sequence  code-golf  string  file-system  tips  golfscript  code-golf  string  code-golf  string  natural-language  code-golf  string  file-system  code-golf  math  array-manipulation  code-challenge  image-processing  compression  code-golf  math  number  sequence  code-golf  math  combinatorics  regular-expression  code-golf  sequence  pi  code-golf  ascii-art  code-golf  string  array-manipulation  sorting  code-golf  string  graph-theory  code-golf  string  code-golf  string  ascii-art  code-challenge  compression  code-golf  code-golf  math  sequence  number-theory  code-golf  maze  graph-theory  code-golf  math  sequence 

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 

30
实施Bogosort
为解决数独太辛苦?甚至是蛮力版本?这是一个编码练习,要容易一些。我希望。:-P 编写最短的函数来实现bogosort。具体来说,您的功能应: 以数组(或您的语言的等效形式)作为输入 检查其元素是否按顺序排列;如果是这样,返回数组 如果不是,请重新排列元素,然后重新开始 入围时间最短者获胜。在平局的情况下,支持自定义比较器(和/或伪随机数生成器)的函数会受到青睐。通过支持较早的提交,可以解决任何剩余的联系。 说明:当然,您可以使用所需的任何元素类型,只要可以通过某种方式订购它们即可。而且,改组必须是统一的;这与“我将快速排序并改组”无关。:-)

12
翻转煎饼
在煎饼分类中,唯一允许的操作是反转序列中某些前缀的元素。或者,考虑一下一叠煎饼:我们将锅铲插入堆栈中的某个位置,然后将所有煎饼翻转到锅铲上方。 例如,6 5 4 1 2 3可以通过首先翻转第一个6元素(整个序列),产生中间结果3 2 1 4 5 6,然后翻转第一个3元素,得出来对序列进行排序1 2 3 4 5 6。 由于只有一个操作,因此整个排序过程可以由一系列整数描述,其中每个整数都是要包含pr flip的元素/煎饼的数量。对于上面的示例,排序顺序为6 3。 另一个例子:4 2 3 1可以用排序4 2 3 2。这是中间结果: 4 2 3 1 flip 4: 1 3 2 4 flip 2: 3 1 2 4 flip 3: 2 1 3 4 flip …

30
就地枚举每个相同编号的序列
给定一个严格的正整数列表,遍历每个不同的数字,并用新系列的连续索引(从零或一个开始)替换所有出现的数字。 例子 []→ []/[] [42]→ [0]/[1] [7,7,7]→ [0,1,2]/[1,2,3] [10,20,30]→ [0,0,0]/[1,1,1] [5,12,10,12,12,10]→ [0,0,0,1,2,1]/[1,1,1,2,3,2] [2,7,1,8,2,8,1,8,2,8]→ [0,0,0,0,1,1,1,2,2,3]/[1,1,1,1,2,2,2,3,3,4] [3,1,4,1,5,9,2,6,5,3,5,9]→ [0,0,0,1,0,0,0,0,1,1,2,1]/[1,1,1,2,1,1,1,1,2,2,3,2]

18
旋转对称数
给定一个整数,如果它是相同的上下颠倒(旋转180°),则输出真实值,否则输出虚假值。 0,1并且8具有旋转对称性。6成为9,反之亦然。 产生真实结果的数字序列:OEIS A000787 0, 1, 8, 11, 69, 88, 96, 101, 111, 181, 609, 619, 689, 808, 818, 888, 906, 916, 986, 1001, 1111, 1691, 1881, 1961, 6009, 6119, 6699, 6889, 6969, 8008, 8118, 8698, 8888, 8968, 9006, 9116, 9696, 9886, 9966, 10001, 10101, 10801, 11011, 11111, 11811, 16091, …
27 code-golf  number  sequence  decision-problem  code-golf  string  parsing  c  code-golf  sorting  integer  code-golf  number  sequence  rational-numbers  graphical-output  atomic-code-golf  assembly  box-256  code-golf  geometry  tips  python  code-golf  number  sequence  arithmetic  number-theory  code-golf  ascii-art  kolmogorov-complexity  geometry  code-golf  graphical-output  code-golf  math  code-golf  grid  cellular-automata  game-of-life  code-golf  string  subsequence  code-golf  arithmetic  rational-numbers  code-golf  tips  dc  code-golf  ascii-art  kolmogorov-complexity  date  code-golf  string  primes  code-golf  string  natural-language  conversion  code-golf  sequence  code-golf  number-theory  primes  base-conversion  code-golf  math  primes  base-conversion  code-golf  ascii-art  fractal  code-golf  matrix  code-golf  math  tips  geometry  python  string  code-challenge  keyboard  code-golf  graphical-output  code-golf  string  code-golf  number  sequence  cops-and-robbers  number  sequence  cops-and-robbers 

24
快速排序!
好吧...有59个(现在有60个)标记为sorting的问题,但没有简单的quicksorts。 必须解决。 对于那些不熟悉quicksort的人,以下是细分,由Wikipedia提供: 从数组中选择一个元素,称为数据透视。 对数组重新排序,以使所有值小于枢轴的元素都位于枢轴之前,而所有值大于枢轴的元素都位于枢轴之后(相等的值可以任意选择)。分割之后,枢轴处于其最终位置。这称为分区操作。 将上述步骤递归应用于值较小的元素的子数组,并分别应用于值较大的元素的子数组。 规则 规则很简单: 用您选择的编程语言实现数字快速排序。 支点应随机选择,或选择三个中间值(第一个,最后一个和中间元素)。 您的程序可以是完整的程序或功能。 您可以使用STDIN,命令行参数或函数参数获取输入。如果使用字符串输入,则输入以空格分隔。 输入中可能包含十进制和负值。但是,不会重复。 您可以输出到STDOUT或从函数返回。 没有内置的排序功能(或与排序相关的功能)或标准漏洞。 该列表可以是任意长度。 奖金#1:在长度<= 5的列表或子列表上,使用插入排序可以稍微加快速度。奖励:-15%。 奖金2:如果您的语言支持并发,则可以对列表进行并行排序。如果在子列表上使用插入排序,则最终的插入排序不需要并行。内置线程池/线程调度是允许的。奖励:-15%。 注意:中位数3使某些人感到困惑,因此(再次)由Wikipedia提供以下说明: 选择枢轴分区的第一个,中间和最后一个元素的中位数 计分 这是代码高尔夫球。基本分数以字节为单位。如果您获得一笔红利,请从该数字中扣除15%。如果两者兼得,则可享30%的折扣。听起来确实像是推销。 这并不是要找到总体上最短的答案,而是要找到每种语言中最短的答案。 现在,这是排行榜片段的无耻复制。 排行榜 这篇文章底部的Stack Snippet从答案a)生成目录,答案是每种语言的最短解决方案列表,b)则是总体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes 其中N是您提交的文件的大小。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: ## Ruby, <s>104</s> <s>101</s> 96 bytes 如果要在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: ## Perl, 43 + 2 (-p flag) = …

30
实施惰性删除排序
这个挑战已经描述了dropsort。但是,我有点懒,我真的只需要对数组进行比以前更多的排序,就不必一直对它进行排序了。 在“丢弃排序”中,我们将每个元素丢弃的数量要少于之前的任何元素。在“延迟删除排序”中,我们删除的每个元素都小于严格位于其前面的元素。 这是一个例子。考虑以下数组: 8 6 9 9 7 2 3 8 1 3 让我们标记每个元素少于之前的元素。 8 6 9 9 7 2 3 8 1 3 ^ ^ ^ ^ 注意,既没有3标记,也没有标记8。它们都比它们左侧的单个元素大。 完成算法,除去标记的元素,我们得到: 8 9 9 3 8 3 这基本上看起来更加排序。金田 我很懒。 您可能已经推断出,您的任务是实现此算法。 输入是1到9之间的至少1个正整数的数组,因此您也可以使用数字字符串。 这是代码高尔夫球,最少字节获胜! 其他测试用例: 1 1 1 2 3 1 2 3 …

29
订购清单
摘要 给定一个整数列表,返回每个整数在排序时以其结尾的索引。 例如,如果列表为[0,8,-1,5,8],则应返回[1,3,0,2,4]。请注意,两个8保持彼此相对的顺序(排序是稳定的)。 换句话说,对于列表中的每个元素,返回列表中的元素数量:小于所选元素OR(等于元素AND出现在所选元素之前) 索引必须以0(而不是1)开头。编辑:给定较大的回推,我将允许基于1的索引。 测试用例: 0 -> 0 23 -> 0 2,3 -> 0,1 3,2 -> 1,0 2,2 -> 0,1 8,10,4,-1,-1,8 -> 3,5,2,0,1,4 0,1,2,3,4,5,6,7 -> 0,1,2,3,4,5,6,7 7,6,5,4,3,2,1,0 -> 7,6,5,4,3,2,1,0 4,4,0,1,1,2,0,1 -> 6,7,0,2,3,5,1,4 1,1,1,1,1,1,1,1 -> 0,1,2,3,4,5,6,7 1,1,1,1,1,1,1,0 -> 1,2,3,4,5,6,7,0

24
后置数组排序
输入: 包含三个整数的数组:0,1并且2以任意顺序(即[2, 0, 1]) 长度大于等于2的字符串仅包含字母(大写和小写)和数字(即a1B2c3) 输出: 基于数组,我们对字符串进行排序并输出。 这是如何运作的? 该阵列表示的顺序的优先级a-z,A-Z并且0-9,所述第一感0; 第二存在1; 第三是2。 然后可以根据该字符串对字符串的各个字符进行排序。 例: 数组: [2, 0, 1] 串: a1B2c3 基于数组,我们知道我们的顺序优先级是0-9a-zA-Z。 基于此,我们可以转换并输出字符串:123acB。 挑战规则: 对于数组,您可以选择使用0索引或1索引输入,[3, 1, 2]如果您更喜欢使用1索引的数组,那么也可以使用有效输入。 字符串(输入和输出)仅包含有效字符:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789。 如果你的语言不支持数组(或者,如果你选择),您可以自由使用字符串而非数组的第一个参数(即012,[0,1,2]等)。 一般规则: 这是代码高尔夫球,因此最短答案以字节为单位。 不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能简短的答案。 标准规则适用于您的答案,因此允许您使用STDIN / STDOUT,具有适当参数的函数/方法,完整程序。你的来电。 默认漏洞是禁止的。 如果可能的话,请添加一个带有测试代码的链接。 另外,如有必要,请添加说明。 测试用例: [2, 0, 1] & a1B2c3 -> 123acB [2, 1, 0] & aAaA909UuHWw9gh2 -> …

30
漂移排序数组
Driftsort是“排序”数组的一种简单方法。它通过“滑动”或“旋转”数组中的元素来工作,直到对数组进行排序或对数组进行排序失败为止。 让我们来看两个例子。首先,考虑array [10, 2, 3, 4, 7]。由于数组未排序,因此将其旋转一次。(这可以在任何方向上发生,只要它保持相同的方向即可。)然后,数组变为: [7, 10, 2, 3, 4] 这没有排序,因此我们再次旋转。 [4, 7, 10, 2, 3] 然后再次: [3, 4, 7, 10, 2] 最后一次: [2, 3, 4, 7, 10] 并排序!因此,该数组[10, 2, 3, 4, 7]是可漂移排序的。为了清楚起见,这是数组的所有旋转: [10, 2, 3, 4, 7] [7, 10, 2, 3, 4] [4, 7, 10, 2, 3] …

30
对数字列表进行排序[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 关于代码保龄球: 在高尔夫中,您尝试获得最低的分数(最小的应用程序,最优雅的应用程序等)。在保龄球中,您尝试获得最高分。因此,如果您遵循此规则,那么进行代码保龄球挑战的目标是使最大,最混搭,最难维护的代码片段仍然能够满足挑战的要求。但是,仅出于此目的而延长源代码是没有意义的。看起来增加的长度似乎来自设计,而不仅仅是填充。 挑战: 创建一个程序,以升序对数字列表进行排序。 例: 输入: 1,4,7,2,5 输出: 1,2,4,5,7 代码:显然,这不是一个好答案,因为那里没有很多WTF。 function doSort(array $input) { sort($input); return $input; } 规则: 没有真正的规则。只要程序起作用,就可以了! 切记:这是保龄球,而不是高尔夫。目的是制作最糟糕,最混蛋的代码!看起来不错但实际上看似邪恶的代码的加分点...

18
发音排序™
我们都知道不同的花式排序算法,但是这些算法都没有以易于发音的方式为我们提供数字。为了解决这个问题,我建议使用VoiceSort™,这是对数字列表进行排序的最自然的方法。 发音 发出数字的正式规则(在此挑战中)是数字被一个一个地发音,并且结果字符串按字典顺序排序。例如,这意味着该数字845是发音的"eight four five",应进行相应的排序。 负数 负数是通过在单词前面加上字母来发音的"minus"。因此,-23发音为"minus two three"。请注意,这会导致负数最终出现在输出的中间,正好在以4(4)和9(9)开头的数字之间。 作为指导,ForeignSort™的正式词序为: 八 五 四 减去 九 一 七 六 三 二 零 那是, 8, 5, 4, -, 9, 1, 7, 6, 3, 2, 0 输入项 范围为的整数列表,最多包含100个元素。不允许输入为字符串列表。如果您的语言不支持输入为列表,则可以将输入作为单独的整数输入。[ - 999 ,999 ][-999,999][-999, 999] 输入将不包含任何无效数字或任何以0开头的数字(数字本身除外)。输入通常不会排序,可以按任何顺序给出。 输出量 相同的整数,以VoiceSort™顺序排列。请注意,仅应将数字转换为其发音以进行排序,输出不应包含任何字符串。 例子 对于示例,中间步骤(用括号括起来)仅用作指导,而不是输出的一部分。 [1, 2, 3] -> (['one', …

30
查找数组中最长的单词
您面临的挑战是获取一个字符串数组并输出该数组中最长的字符串。因此对于 ["tiny", "small", "bigger", "biggest"] 输出将是biggest。 如果数组的两个元素的长度相同,则应选择在数组中最先出现的元素。这意味着如果数组看起来像这样: ["one", "two", "no"] 输出为one,但如果数组如下所示: ["two", "one", "no"] 输出是two。 因为这是code-golf,所以以字节为单位的最短代码获胜。

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.