Questions tagged «balanced-string»

在平衡字符串中,某些字符或子字符串对始终以相同的数量出现。通常,还存在必须限制这些对的附加限制。最常见的示例是带有正确括号的字符串。另请参见[回文]和[语法]标记。

8
自动数组
每个人都喜欢嵌套列表!但是,有时很难创建嵌套列表。您必须决定是否要将其嵌套得更深,或者是否需要将其嵌套得更浅。因此,对于您的挑战,您必须“自动”列表。要自动列出列表,请比较列表中的每对项目。 如果第二个元素较小,则通过在两个元素之间插入闭合和打开括号来分隔这两个元素,如下所示: } { {2 , 1} 例如,{2, 1}变为{2}, {1},并且{3, 2, 1}变为{3}, {2}, {1} 如果第二项相同,则保持不变。例如,{1, 1, 1}保持不变,{2, 1, 1, 1}将变为{2}, {1, 1, 1}。 如果第二个项目较大,则将每个后续项目嵌套更深一层。例如,{1, 2}将成为{1, {2}}并且{1, 2, 3}将成为{1, {2, {3}}} 挑战 您必须编写一个接受数字列表的程序或函数,并在自动嵌套后返回相同的列表。以您的语言本机列表格式(或最接近的替代格式)或字符串形式输入此输入。您不必像我在示例中那样使用花括号。您可以使用语言中最自然的括号类型,只要这是一致的即可。您可以放心地假设列表将仅包含整数。您也可以假设列表中至少包含2个数字。这是一些示例IO: {1, 3, 2} --> {1, {3}, {2}} {1, 2, 3, 4, 5, 6} --> {1, {2, {3, {4, …

1
是否有变相括号?
有人给了我们一个字符串,但所有类似方括号的字符都已更改为普通字符,我们不知道是哪一个,甚至不知道有多少个。我们所知道的是,如果L1,L2,L3,...,LN是不同种类的左括号和R1,R2,R3,...,RN不同种类的相应右括号,它们都是不同的(2N个不同的括号字符),则字符串是有效的,前提是它是其中的一个(+是普通字符串串联): L1+X+R1,,L2+X+R2...,,LN+X+RN哪里X是有效的字符串, X+Y,其中X和Y是有效字符串, 不是方括号字符的任何单个字符。 空字符串 我们知道,在更改括号之前,它们以有效的字符串开头,并且没有将其更改为字符串中已经存在的任何字符。每个支架也至少存在一对。您可以重构哪些字符最初是左括号和右括号对(找到Li和Ri遵循给定条件)? 输出括号内的字符对。例如,如果(){}[]实际上是方括号字符,则可能输出(){}[]或{}[]()或[](){}等。对于字符串,可能有多种方式执行此操作,您只需要返回一个,这样就不会有带有更多对的方括号分配(请参见示例)。请注意,输出字符串应始终具有偶数长度。 例子: abcc- c不能为方括号,因为没有其他字符出现两次,但ab可以为方括号对,因此您将精确输出ab。 fffff -任何最多包含一个字符的字符串都不能带有方括号,因此您将返回空字符串或不输出任何内容。 aedbedebdcecdec -该字符串不能有任何括号,因为有1 a,2 bs,3 cs,4 ds和5 es,因此两个字符不会出现相同的次数,这是必须有括号的。 abcd-可能的分配是ab,cd,abcd,cdab,adbc,bcad,ac,ad,bc和bd,(以及空分配,其中所有的人都有),但你必须返回最长的任务之一,所以你必须返回abcd,cdab,adbc,或bcad。 aabbcc,abc-这些都有ab,ac和bc为有效对。您必须返回这些对中的一个,无论哪一个都没有关系。 abbac-a和b具有相同的字符数,但是它们实际上不能工作,因为其中一个出现在所有其他出现的左侧和右侧。什么也没返回。 aabcdb- cd和ab是精确的两个括号对,因此输出cdab或abcd。 abcdacbd-只有一对可以立即实现,但是ab,ac,bd,cd,和ad都可能对你可以退货。无论选择哪个对,都有一个实例,其中有一个其他字符,它禁止任何其他对,除非是的情况下ad,其中的其他对bc和cb也不能单独出现,因此不可能与ad。 这是代码高尔夫,因此以字节为单位的最短代码获胜。如果可能的话,来自STDIN的输入。如果不可能,请在答案中指出输入法。

1
通过整数操作实现IEEE 754 64位二进制浮点数
(我暂时将问题标记为“ C”,但是如果您知道另一种支持联合的语言,则也可以使用它。) 您的任务是+ - * /为以下结构构建四个标准数学运算符: union intfloat{ double f; uint8_t h[8]; uint16_t i[4]; uint32_t j[2]; uint64_t k; intfloat(double g){f = g;} intfloat(){k = 0;} } 这样操作本身就只能操纵或访问整数部分(因此也不能在操作过程中的任何时候都与double进行比较),并且结果是完全相同的(对于非数字结果,例如,功能上是等效的NaN)好像相应的数学运算已直接应用于double。 您可以选择要操作的整数部分,甚至可以在不同的运算符之间使用不同的整数部分。(尽管我不确定您是否要这样做,您也可以选择从联合中的任何字段中删除“未签名”。) 您的分数是四个运算符中每个字符的代码长度总和。最低分获胜。 对于不熟悉IEEE 754规范的我们来说,这是一篇有关Wikipedia的文章。 编辑: 03-06 08:47在intfloat结构中添加了构造函数。您可以使用它们进行测试,而不必手动设置double /etc。

4
解码因子树
如果您错过了编码因子树,这是因子树的定义: 空字符串为1。 串联表示乘法。 括号(或任何成对的字符)中包含的数字n表示第n个质数,其中2是第一个质数。 请注意,这是递归完成的:第n个素数是括号中n的因数树。 数量的因数应按从小到大的顺序排列。 例如,以下是2到10的因子树: () (()) ()() ((())) ()(()) (()()) ()()() (())(()) ()((())) 这个挑战使用了类似的格式。然而,这个挑战是对这些结构进行解码。 测试用例 无耻地被盗 改变用途从上个挑战。 除了上面的9个之外…… ()()((()))((())) => 100 (()(()(()))) => 101 (()())(((())))(()(())) => 1001 (((((((()))))))) => 5381 (()())((((()))))(()()(())(())) => 32767 ()()()()()()()()()()()()()()() => 32768 规则 输入中的成对字符是您选择的括号,方括号,大括号或尖括号。如果要求,我可以允许其他格式(例如XML标记)。 您应该能够处理2到2 15或32768中任何数字的因子树。 由于这是代码高尔夫球,因此以字节为单位的最短答案会获胜。

2
完整的括号表达式
今天,您面临的挑战是生成表达式的所有可能的完整括号。 您的输入是一行可打印的ASCII一行,其中包含一个或多个用运算符分隔的术语。输入中可能还包含空格-您必须忽略它们。术语是[a-zA-Z0-9],运算符是[^ ()a-zA-Z0-9]。您可以假设输入始终有效。 输出所有可能的方式以完全括住给定表达式,并用可选的尾随换行符将新行分隔开。 难道不是: 括号中的术语-仅在运算符周围加上括号。 重新排列条款。 输出任何空格。 输入/输出示例: N N a * b (a*b) x_x_0 (x_(x_0)) ((x_x)_0) a * b|c|d (a*(b|(c|d))) (a*((b|c)|d)) ((a*b)|(c|d)) ((a*(b|c))|d) (((a*b)|c)|d) 以字节为单位的最小代码获胜。

1
找到一个平衡的邻居
您的任务将是获取一个平衡的字符串和一个代表Levenshtein距离的整数(必须将其插入,删除或更改的字符数才能将一个字符串转换为另一个字符串),并且您必须找到具有该距离的平衡字符串的数量从原始字符串(即该字符串的邻域)开始。 规定 平衡的字符串将仅包含字符 ()<>[]{} 您只会被要求寻找正距离均匀的邻域 输入和输出是灵活的。只要您输入所有正确的数据并输出正确的答案,而不会出现任何漏洞,我会对您的答案感到满意。 您可以选择将所有整数输入除以2。 这是代码高尔夫球,因此目标是最小化答案中的字节数 这是受此CMC和此答案的启发 测试用例 Case | Distance | Size of Neighborhood -------------------------------------------- () | 2 | 18 ({}) | 2 | 33 (()) | 2 | 32 <> | 4 | 186 [][] | 4 | 688 <(){}> | 4 | 1379 {} | …

3
计算匹配任何一组掩码的平衡二进制字符串
一个二进制字符串是只包含绘制字符的字符串01。甲平衡二进制串是包含完全一样多一个二进制串0 S作为1秒。 您会得到一个正整数n和任意数量的掩码,每个掩码的长度为2n个字符,并且仅包含从012绘制的字符。如果二进制字符串和掩码的长度相同,并且在掩码没有2的每个位置上的字符都相同,则匹配该字符串。例如掩模011022比赛的二进制串011000,011001,011010,011011。 给定n和掩码作为输入(用换行符分隔),您必须输出与一个或多个掩码匹配的不同平衡二进制字符串的数量。 例子 输入值 3 111222 000112 122020 122210 102120 推理 唯一匹配111222的平衡二进制字符串是111000。 唯一匹配000112的平衡二进制字符串是000111。 匹配122020的平衡二进制字符串为111000(已计数),110010和101010。 匹配122210的平衡二进制串是110010(已经计数),101010(已经计数)和100110。 匹配的平衡二进制字符串102120是101100和100110(已计数)。 所以输出应该是 6 输入值 10 22222222222222222222 推理 有20个选择10个长度为20的平衡二进制字符串。 输出量 184756 优胜者 获胜者将是计算比赛输入最快的人,当然会像对待其他输入一样对待它。(我使用确定的代码来获得明确的获胜者,并避免出现不同的输入将给不同的获胜者的情况。如果您想找到一种找到最快代码的更好方法,请告诉我。) 比赛输入 http://pastebin.com/2Dg7gbfV

4
前奏语法检查器
Prelude是一种深奥的编程语言,对构成有效程序的内容几乎没有限制,但有不同寻常的限制。只要满足以下条件,任何可打印的ASCII文本块(“块”表示可打印的ASCII行用换行符-0x0A分隔)都是有效的: 文本的每个(垂直)列最多包含(和之一)。 忽略它们的垂直位置,the (和and )是平衡的,也就是说,每个(和恰好)在其右侧配对,反之亦然。 编写一个程序或函数,给定包含可打印ASCII和换行符的字符串,确定该程序或函数是否构成有效的Prelude程序。您可以通过STDIN(或最接近的替代品),命令行参数或函数参数进行输入。可以使用您选择的任何两个固定的 真假值将结果返回或打印到STDOUT 。 您不得假定输入为矩形。 这是代码高尔夫球,因此最短的提交(以字节为单位)获胜。 例子 以下是有效的 Prelude程序(实际上,它们甚至是真正的 Prelude程序): ?1-(v #1)- 1 0v ^(# 0)(1+0)#)! (#) ^#1-(0 # 1(# 1) v # - 1+) vv (##^v^+ ? v-(0 # ^ #) ? 1+ 1-! 这是一些输入,所有输入都是无效的: #(#(##)##)##( )##(##(##)#)# #(#) )### #(## (##) (##) (#)# (##) (### …

14
括号顺序按字典顺序
挑战来自这里也是在这里 一个ñ括号序列由ñ ( S和ñ )秒。 有效的括号序列定义如下: 您可以找到一种方法来重复擦除相邻的一对括号“()”,直到其变为空为止。 例如,如果(())是有效的括号,则可以在第二和第三位置删除该对(),然后将其变为,然后将其设为空。 )()(不是有效的括号,则在第二和第三位置删除该对后,它将变为)(并且您无法再删除 任务 给定数字n,您需要按字典顺序生成所有正确的括号序列 输出可以是数组,列表或字符串(在这种情况下,每行一个序列) 您可以使用不同的一对括号如{},[],()或开闭标志 例 n = 3 ((())) (()()) (())() ()(()) ()()() n = 2 (()) ()()

1
收集垃圾
您正在寻找一条大道,有人把垃圾扔掉了!您需要编写一个程序来帮助解决此问题,方法是将垃圾放入垃圾桶。 任务 途径由一串可打印的ASCII字符组成,例如: [[](dust)[]] car ((paper)vomit) (broken(glass)) [[] (rotten) fence (dirty) 这里的某些括号是无法比拟的;这些只是诱饵。我们关心的是匹配的括号。 一个垃圾桶是一个字符串开头[和结尾],并与内部匹配括号和括号。例如,[]和[[](dust)[]]是上面字符串中的垃圾桶。 一个垃圾袋是一个字符串开头(和结尾),并与内部匹配括号和括号。例如,(dust)上面的字符串中是垃圾袋。 有些垃圾袋可能已经在垃圾桶中了。但是,至少将一个人遗漏在外,我们需要移动垃圾袋,以便它们全部位于垃圾桶中。具体来说,对于当前不在垃圾桶内的每个垃圾袋(即该垃圾桶的子串),我们需要将其从字符串中的当前位置移除,然后插入到垃圾桶内的位置。 这里还有一条附加规则。因为我们不想在垃圾收集器上花费太多的钱,并且它们的路线将它们沿着从右到左的方向走,所以我们想将每个垃圾袋向左移动(最重要的标准,假设我们必须将其移动到全部)和最短距离(只要将其向左移动)。因此,例如,唯一正确的输出 [can1](bag)[can2] 是 [can1(bag)][can2] (将包仅向左移动一个字符)。此外,袋子必须保持相同的相对顺序: [can](bag1)(bag2) 必须成为 [can(bag1)(bag2)] (即,您不能放在(bag2)的左侧(bag1)。) 澄清说明 最左边的垃圾箱的左边没有任何垃圾袋。始终可以通过将其向左移动来清除所有垃圾。 总会有至少一个袋子可以移动。可能不止一个。 垃圾袋内永远不会有垃圾桶(罐子太贵了而不能扔掉)。 如果罐子里已经有袋子,那就别管它了。 输入和输出的尾随空格(包括换行符)也可以不同。 例子: 输入: [[](dust)[]] car ((paper)vomit) (broken(glass)) [[] (rotten) fence (dirty) 输出: [[](dust)[]((paper)vomit)(broken(glass))] car [[(rotten)(dirty)] fence 输入: []] (unusable) door (filthy) …

4
等距括号类型
基于 这个问题。 给定一个字符串,将每个括号替换()[]{}<>为适当类型的括号,以使括号匹配,并且嵌套括号循环如下: 最外面的是 () 直接的内()应[] 直接的内[]应{} 直接的内{}应<> 直接在内<>将()再次出现(周期) 所有非括号字符必须保持原样。开括号只能用某种类型的开括号替换,而闭括号则要用闭括号替换。 输入将始终使之成为可能。这意味着如果忽略其类型,则其括号正确匹配。所以,{ab<)c]是一个有效的输入,但ab)(cd还是ab((cd没有。 例子: 2#jd {¤>. = 2#jd (¤). abcdef = abcdef (3×5+(4-1)) = (3×5+[4-1]) <<<>><<>><<<<<<>>>>>>> = ([{}][{}][{<([{}])>}]) 不允许使用这种方式对输入进行本机转换(语言的自动语法)。 与往常一样:最短的代码获胜。

16
两组相等吗
{}是空集。您可以使用,()也[]可以选择使用。 我们不会严格定义“集合”,但是集合都满足以下属性: 集合遵循通常的数学结构。以下是一些要点: 集不排序。 没有集合包含自身。 元素是否在集合中,这是布尔值。因此,集合元素不能具有多重性(即,一个元素不能多次出现在集合中。) 集合的元素也是集合,并且{}是唯一的原始元素。 任务 编写确定两个集合是否相等的程序/函数。 输入项 通过stdin或function参数的两个有效集合。输入格式不合理。 一些有效的输入是: {} {{}} {{},{{}}} {{{{{},{{}}}}}} {{},{{},{{}}}} {{{},{{}}},{{{{{},{{}}}}}}} 输入无效: {{} {} Brackets will always be balanced. {{},{}} {} Set contains the same element twice 输出量 如果输入相等,则为真实值,否则为假。 测试用例 您的提交应正确回答所有有效输入,而不仅仅是测试用例。这些可以随时更新。 真相: {} {} {{},{{}}} {{{}},{}} {{},{{},{{{}},{}}}} {{{{},{{}}},{}},{}} 虚假: {} {{}} {{},{{},{{{}},{}}}} {{{{}}},{},{{}}} …
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.