Questions tagged «subsequence»

与更大序列中的序列有关的挑战

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
帮助pannenkoek数A印刷机
pannenkoek2012的目标是通过尽可能少地按A按钮来完成Super Mario 64,这会使Mario跳跃。每个“印刷机”都由三个部分组成: 按下按钮 持有任何时间 发布 请观看此视频(1:15-3:23),以获取包含上述图片的精彩说明。(但是,此挑战将不使用半按A术语,并且会提出需要释放A的障碍。) 任务: 给定一系列需要按下(P),按住(H)或释放(R)A按钮的障碍物,请按给定的顺序输出克服这些障碍物所需的最少按下次数。最初不按住A按钮。 正式表示:给定一个字符串S,将包含S PHR的形式的字符串(PH*R)*视为子序列,并P在这样的字符串中输出尽可能少的。或者,找到P?H*R?可以拆分为S 的形式的最小块数。 例 让我们看一下input RHRPHHHR。A按钮开始时没有保持R住,因此要克服初始障碍,需要先按下按钮,然后再松开(按#1)。接下来,我们需要按住按钮H,这又需要首先将其按下(按#2)。然后,可以随后将其释放以满足R其需求。最后,PHHHR只需按一下(按#3键),然后按住HHH并松开,即可满足其余条件R。因此,输出计数为3。 另一种查看方式是,我们可以将输入字符串分成3个形式的部分,PHH..HHR其中字母可以省略。 R HR PHHHR 输入格式 输入将是表示按下,按住和释放的元素的列表或字符串,以供您选择: P, H, R p, h, r 1, 2, 3 0, 1, 2 按照给定的顺序进行匹配。输入将不为空。 测试用例: P 1 H 1 R 1 HP 2 RHP 3 HHR 1 PHRH 2 RHRPHHHR …

20
可配对的字符串
如果字符串可以拆分为子字符串,则该字符串是可配对的,每个子字符串都是连续重复两次的字符串。例如,aabaaababbbaba可配对为: aaba aaba b b ba ba 给定一个非空字符串a“ s”和b“ s”,如果可以配对,则输出True值,如果不是,则输出Falsey值。 可配对: aa abaaba bbababbb aabaaababbbaba babababa bbbbbbbbbbbb aaababbabbabbbababbaabaabaababaaba aaaabaab 无法配对: a ba baab abaabaaba bbbbbbbbbbbbbbb baababbabaaaab aaaaabbaaaaa 我鼓励您提出非基于正则表达式的解决方案,即使您的语言中已经存在较短的正则表达式答案。您可以将它们标记为“ no regex”。正则表达式是指内置的字符串模式匹配子系统。 排行榜: 显示代码段 var QUESTION_ID=98252,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/98252/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&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&&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)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var …

3
左边四个步骤:毒蛇。右边的四个步骤:悬崖。不要死!
介绍 假设一下,如果在毒蛇和悬崖只有2步之遥,而不是三个。 o --- Hsss! | ';;' ___ /_\ ___ _ | 不幸的是,你是一个虐待狂酷刑者的俘虏。您必须每转一圈向左或向右迈出一步。如果您不这样做,他们会立即将您射杀。您可以事先计划好您的步骤,但是一旦您迈出第一步,就无法更改您的计划。(也不要涉足,他们会射击你的。) 突然想到一个聪明的主意... 啊! 我可以左右交替走!右移,左移,右移,左移,依此类推... 啊啊啊,没那么快。就像我说的那样,酷刑者是虐待狂。他们可以选择是否要执行每一步,第二步或第三步,依此类推。因此,如果您天真地选择顺序,RLRLRL...那么它们会迫使您采取第二步,即从开始LL。哦哦!你被毒蛇咬了!黑暗笼罩了你,其他一切都消失了。 实际上,您还没有死。您仍然必须提出您的计划。经过几分钟的思考,您意识到自己注定要失败。无法计划出一系列步骤来保证您的生存。你能想到的最好的就是RLLRLRRLLRR。1 11个安全步骤,仅此而已。如果第十二步是R,那么拷问者将使您迈出每一步,然后最后三步将您带离悬崖。如果第十二步是L,那么拷问者将使您每走第三步(LRLL),这将使您正确地进入毒蛇及其致命叮咬的怀抱。 您选择R第12步,希望能够尽可能长地延迟您的灭亡。随风在你的耳边咆哮,你自己想知道... 如果我有三个步骤怎么办? 扰流板警报! 你仍然会死。事实证明,无论您采取了多少步骤,无论您做出何种选择,都会有一点,您的折磨者可以选择一系列步骤来确保您满足致命的命运。2但是,如果毒蛇和悬崖距离酒店只有3步之遥,那么您总共可以采取1160个安全步骤;而如果距离它们又有4步之遥,则至少有13,000个安全步骤!3 挑战 给定一个整数n < 13000,n假设悬崖和毒蛇相距四个步骤,则输出一系列安全步骤。 规则 可以是完整程序或功能。 输入可以通过STDIN或等效输入,也可以作为函数参数。 输出必须有两个不同的字符(其可以是+/-,R/L,1/0,等等)。 输出中的任何空格都无关紧要。 不允许对解决方案进行硬编码。这将使这一挑战变得微不足道。 您的程序(理论上)应该在相当长的时间内完成。在这种情况下,n=13000可能需要一个月的时间,但不应该花一千年或更长时间。也就是说,没有蛮力。(嗯,至少要设法避免它。) 终身红利:提供一系列2000安全的步骤。如果您这样做,酷刑者将对您的坚韧,毅力和前瞻性印象深刻,以至于他们会让您活下去。这一次。(将此序列作为二进制数进行处理,并提供等效的十进制数进行验证。这是为了奖励很快就能完成的答案,因为答案需要很长时间。) 分数:字节,除非您有资格获得奖金-乘以0.75。 生存! 1 Numberphile的一位明星James Grime在他的YouTube频道上提供了关于此问题和“解决方案”的很好的解释,网址为:https : //www.youtube.com/watch?v= pFHsrCNtJu4 。 2特伦斯·陶(Terence Tao)最近证明了这个有80年历史的猜想,即鄂尔多斯的差异问题。这是《 Quanta杂志》上一篇非常不错的文章:https : //www.quantamagazine.org/20151001-tao-erdos-discrepancy-problem/。 3资料来源:鲍里斯·科涅夫(Boris …

9
收起反串
在此挑战中,将为您提供字母字符串作为输入。我们将给定输入的“反字符串”定义为所有字母都颠倒的字符串。例如 AaBbbUy -> aAbBBuY 您应该编写一个程序,该程序将字符串作为输入,并搜索最长的连续子字符串,该子字符串的反字符串也是连续子字符串。这两个子字符串不应重叠。 例如,如果给您字符串 fAbbAcGfaBBagF 粗体部分将是最长的字符串反字符串对。 一旦找到该对,您的程序应将它们分别折叠成一个字符。它应该通过删除每个子字符串的除第一个字符之外的所有字符来实现。例如上面的字符串 fAbbAcGfaBBagF 会成为 fAcGfagF 然后,您的程序应重复该过程,直到最长的字符串反字符串对为单个字符或更短。 例如,使用相同的字符串,折叠后的新最长对是 fAcGfagF 所以我们再次折叠字符串 fAcGag 现在该字符串无法再折叠,因此我们应将其输出。 如果候选对之间是平局(例如AvaVA),则您可以减少(AaA或AvV,但不能Aa)。 这是代码高尔夫球,因此答案将以字节计分,而字节数越少越好。 测试用例 fAbbAcGfaBBagF -> fAcGag AvaVA -> AaA / AvV QQQQQQQ -> QQQQQQQ fAbbAcQQQQaBBacqqqqA -> fAbcQBcq gaq -> gaq fAbbAcGfaBBagFaBBa -> fcGaBBag 动机 尽管这个问题似乎是任意的,但实际上是我在编写代码以处理基本面时遇到的问题。该过程可以用于将基本多边形减小为较小的n边。我试了一下之后,以为会打一点高尔夫球。

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 

28
让我变元
背景 对于此挑战,“元序列”将被定义为一系列数字,其中不仅数字本身会增加,而且增量也会增加,并且增量将增加值,依此类推。 例如,第3层元序列将从以下内容开始: 1 2 4 8 15 26 42 64 93 130 176 因为: 1 2 3 4 5 6 7 8 9 >-| ↓+↑ = 7 | Increases by the amount above each time 1 2 4 7 11 16 22 29 37 46 >-| <-| | Increases …

12
查找原始字符串,不重复,中间不重复
有时会发生这样的情况:在输入句子时,我会分心,最终两次连续输入相同的单词两次。 为了确保其他人不会对此感到烦恼,您的任务是编写一个解决此问题的程序! 任务 给定一个输入字符串(如果对您的语言而言很重要,则可以假定不包含换行符的仅ASCII输入。)str,在其中间某处包含一个子字符串,该子字符串立即连续出现两次,并返回带有此字符串的一个实例的字符串子字符串已删除。 如果存在多种可能性,则返回可能的最短答案(即,选择最长的连续重复子串并删除该子串)。 如果有多个等长的连续重复子字符串,请删除第一个(即从前向后读取该字符串时遇到的第一个)。 您可以假设输入正确(即始终包含一个连续的重复子字符串),这可能有助于降低它的负担。 例子 输入:hello hello world->输出:hello world。 输入:foofoo->输出:foo。(因此:是的,字符串可能只包含两次重复部分)。 输入:aaaaa->输出:aaa,因为最长的重复连续子字符串在此处aa。 输入:Slartibartfast->这不是有效的输入,因为它不包含连续的重复子字符串,因此您无需处理这种情况。 输入:the few the bar->这是另一个无效的输入,因为重复部分应立即跟随原始部分。在这种情况下,the并且the之间用其他分隔符隔开,因此此输入无效。 输入:ababcbc->输出:abcbc。两个可能最长的连续重复子串是ab和bc。如ab字符串前面所述,这是正确的答案。 输入:Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo。输出:Buffalo buffalo buffalo buffalo Buffalo buffalo。(执行的替换应区分大小写)。 输入:Sometimes it happens that while typing a sentence, I am distracted and I end up typing the …

22
递归字符串替换
任务 编写一个程序或函数,给出给定的三个字符串A, B, C会生成一个输出字符串,其中Bin的每个实例A都已用递归替换C。递归替换表示重复替换,其中在每一步中Bin的所有不重叠实例A(从左到右贪婪地选择)都替换为,C直到B不再包含在中A。 输入输出 您可以对I / O使用任何默认方法。 字符串将仅包含可打印的ASCII字符(并且可以包含任何一个)。 B永远不会是一个空字符串,而A并且C可能是。 字符串应被视为纯文本,例如,您不能将其B视为Regex模式。 输入的某些组合永远不会终止。在这种情况下,您的程序可以执行任何操作。 测试用例 这些格式为: A/B/C\nOutput Hello, world!/world!/PPCG Hello, PPCG Uppercase is up/up/down Uppercase is down ababababa/aba/ccc cccbcccba delete/e/{empty string} dlt {empty string}/no/effect {empty string} llllrrrr/lr/rl rrrrllll +-+-+-+/+-+/+ + ababababa/aba/bada badabbadbada abaaba/aba/ab abb ((())())())/()/{empty string} ) 不会终止的示例: grow/ow/oow loop/lo/lo
25 code-golf  string  substitution  code-golf  math  code-golf  string  set-theory  code-golf  code-golf  compile-time  code-golf  kolmogorov-complexity  binary  code-golf  sequence  cops-and-robbers  code-golf  subsequence  card-games  code-golf  sequence  primes  code-golf  code-golf  number  graphical-output  music  code-golf  ascii-art  code-golf  string  lambda-calculus  code-golf  string  code-generation  code-golf  unicode  code-golf  math  combinatorics  code-golf  balanced-string  code-golf  sequence  cops-and-robbers  code-golf  sequence  cops-and-robbers  code-challenge  fastest-code  chess  code-golf  math  graphical-output  code-golf  string  hello-world  animation  code-golf  number  arithmetic  code-golf  integer  code-golf  code-golf  combinatorics  code-golf  kolmogorov-complexity  graphical-output  code-golf  string  code-golf  code-golf  game  code-golf  math  combinatorics  code-golf  ascii-art  popularity-contest  random  code-golf  arithmetic  number-theory  integer  code-golf  tips  underload  code-golf  math  sequence  primes  code-golf  math  path-finding  code-golf  ascii-art  primes  code-golf  kolmogorov-complexity  alphabet 


30
寻找“亚回文”。
查找字符串的所有唯一 “子回文” 的最短代码,即:任何长度大于1的子字符串都是回文。 例如1 input: "12131331" output: "33", "121", "131", "313", "1331" 例如2 input: "3333" output: "33", "333", "3333"

25
计算宽限期的编辑次数
当您在SE上编辑帖子时,在5分钟宽限期内的所有进一步编辑都会合并到其中。给定您编辑帖子的次数列表,请在宽限期内不算编辑次数。 假设您在几分钟内进行编辑[0,3,4,7,9,10,11,12]。有时会导致3次修改,[0,7,12]其余的会在其宽限期内发生。 0: [3,4] 7: [9,10,11] 12: [] 第一次编辑是在第0分钟。第3和第4分钟的编辑在其5分钟宽限期内,因此不计算在内。 第二个编辑在第7分钟进行。第9、10、11分钟的编辑处于其宽限期内。 第12分钟的第三个编辑正好从第7分钟开始经过5分钟宽限期的边缘。 因此,输出为3。 以分钟为单位的时间列表将是一个递增的整数列表。对于首次发布,第一个数字将始终为0,我们将其视为编辑。 测试用例: [0] [0,3,5,7] [0,3,4,7,9,10,11,12] [0,30,120] [0,4,8,12,16] [0,4,8,12,16,20] [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19] [0,5,10,15,20] [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] [0,1,4,5,9,11,12,14,16,18,23,24,26,28,29,30] 输出: 1 2 3 3 3 3 4 5 5 6 为了便于复制,以下是输入,输出和输入/输出对: [[0], [0, 3, 5, 7], [0, 3, 4, 7, 9, 10, 11, 12], [0, …

11
不断增长的图
考虑固定范围内的一维数字序列,即 [1, 2, 4, 6, 8, 0, 2, 7, 3] in range [0, 10⟩ 不断增长的图形* **是一条线,该线从左到右连接此序列中的所有点,并且始终向上或保持水平。如有必要,该线从上到下环绕,并从那里继续向上到达下一个点。 这项挑战的目标是将序列分成所有不递减的不同子序列,以便与有限的垂直轴一起绘制时,它们将形成一个不断增加的图。这是通过在一个子序列的末尾和下一个子序列的末尾添加一个点来完成的,以便与顶部边界相交的线的角度与与底部边界相交的线的角度对齐,并且两个交叉点具有相同的水平坐标。上面的示例将给出以下输出: [1, 2, 4, 6, 8, 10] [-2, 0, 2, 7, 13] [-3, 3] 相应的图将如下所示: 并延伸轴以获得更好的视图: 所需的输出是构成“不断增加的图”各部分的子序列的列表。进行绘图不是必需的,但是会为您赢得积分;)。输出必须以某种方式清楚地分隔子序列。 笔记 范围的左边界(包括边界)始终为零,右边界为整数N。 该序列将永远不会包含不在范围内的值。 第一个子序列在开始时没有附加点。 最后一个子序列在末尾没有额外的点。 不需要提供绘制子序列所需的起始索引。 测试用例 Input: [0, 2, 4, 6, 1, 3, 5, 0], 7 …

19
重建算术序列
给定一个正整数的有限算术序列,其中一些项从中间删除,请重构整个序列。 任务 考虑一个算术序列:一个正整数列表,其中两个连续元素之间的差是相同的。 2 5 8 11 14 17 现在,假设受以下约束,从序列中删除一个或多个整数: 删除的整数将是该序列的连续项。 序列中的第一个和最后一个整数将不会被删除。 序列中至少保留三个整数。 对于上述顺序,可能的删除包括: 2 5 8 14 17 (removed 11) 2 5 17 (removed 8 11 14) 2 14 17 (removed 5 8 11) 您的任务:给定这些部分序列之一,重建原始的完整序列。 细节 您可能会认为输入有效(有解决方案)并且至少缺少一个术语。序列中的所有数字均为正(> 0)整数。序列在项之间可以具有正或负差(即,可以增加或减少)。它不是一个恒定的序列(例如5 5 5)。 您的解决方案可能是完整程序或功能。任何默认的输入和输出方法都是可以接受的。 您的输入和输出可以是字符串(带有任何合理的定界符),字符串列表或数字列表。您可以使用方便的语言来代表数字。 请在您的提交中提及任何异常的I / O方法/格式,以便其他人能够更轻松地测试您的代码。 测试用例 In: 2 5 …

20
测试一个字符串是否可以用子字符串组成!
给定一个字符串s和一个数组/列表l,请确定是否s可以使用中的零件制成l。 例如,如果字符串为"Hello, world!"且列表为[' world!', 'Hello,'],则程序/函数应返回真实值,因为您可以排列列表以形成字符串。以下列表也将返回真实值:['l', 'He', 'o, wor', 'd!']。试想一下'l',在字符串中需要填充的地方。所以可以,您可以重复列表中的元素以形成字符串。如果不能形成字符串,则应返回假值。IO的标准方法和标准漏洞适用。 测试用例: Input (In the form of s, l) Output (1 if possible, 0 if impossible) "Hello, world!", ["l", "He", "o, wor", "d!"] 1 "la lal al ", ["la", " l", "al "] 1 "this is a string", ["this should return falsy"] …

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.