Questions tagged «permutations»

排列是某些对象列表的特定顺序。用置换标记的问题通常涉及查找或生成置换,包括文本的字谜。

29
输出一个字谜!不,不是那个!
给定一个彼此为字谜的唯一字符串的列表,请输出与列表中每个单词都不同的那些单词的字谜。 字符串将为字母数字,并且保证有一个有效的字谜。 程序或函数可以但不一定是不确定的,这意味着在给定相同输入的情况下,只要每个可能的输出都是有效的,多次运行该代码即可产生不同的输出。 测试用例 [Input] -> Possible output ----------------- [ab] -> ba [aba, aab] -> baa [123, 132, 231, 312, 321] -> 213 [hq999, 9h9q9, 9qh99] -> 999hq [abcde123, ab3e1cd2, 321edbac, bcda1e23] -> ba213ecd

27
位反转排列
您的目标是创建一个函数或程序来反转给定整数n的整数范围内的位。换句话说,您想要找到2 n项范围(零索引)的位反转排列。这也是OEIS序列A030109。此过程通常用于计算快速傅立叶变换,例如用于FFT的就地Cooley-Tukey算法。计算长度为2的幂的序列的FFT 也是一个挑战。 此过程要求您迭代[0,2 n -1] 范围,并将每个值转换为二进制值并反转该值中的位。您会将每个值都视为以2为底的n位数字,这意味着反转只会在最后n位之间发生。 例如,如果n = 3,则整数范围为[0, 1, 2, 3, 4, 5, 6, 7]。这些是 i Regular Bit-Reversed j 0 000 000 0 1 001 100 4 2 010 010 2 3 011 110 6 4 100 001 1 5 101 101 5 6 110 011 3 7 …

5
鼓泡括号!
这里有几个问题,在这个网站如何去平衡支架,并检查是否括号是平衡的。我建议现在是时候将那些平衡的括号用于某些东西了! 在数学和程序设计中,方括号就像气泡,将内部的所有事物与外部的所有事物隔离开,以便内部的任何事物都可以安心地做它的事情,而外部的任何事物只能看到一个对象。但是,一串括号是一维的,而气泡通常至少是二维的。这意味着只要气泡从不相互接触或在任何其他气泡的内部和外部之间交叉,它们就可以自由地在彼此之间移动。 挑战 输入是一串匹配的单一类型的括号,可以是圆形(),正方形[],卷曲{}或尖角<>。取决于您希望程序接受哪种类型,是否接受仅接受一种括号的程序。(如果您的程序可以处理其中的任何一个,则有虚构的奖励;如果它可以在同一个输入中处理所有的它们,则有虚构的奖励点。)尽管括号中可以包含空格,但输入不能包含任何括号。 输出是那些括号的所有可能的重组(以任意顺序,包括原始输入),产生相同的气泡配置,没有两个相同的字符串。这意味着,输入()()为时()(),即使从技术上讲可以交换位置的两个气泡,其输出也只是。对于巨大的想象中的奖金,{}[]()意志的输入当然会导致输出6个不同的元素/字符串/行。 如果您可以通过在周围移动气泡而不让任何气泡从另一个气泡内部到外部或从外部到内部交叉而使另一个气泡相互“形成”,则两种气泡是“相同的”。如果您将嵌套括号比作树(每个匹配对都是一个节点,并且每个匹配对都是一个子节点,并且每个匹配对中又有一个子节点,依此类推),那么给定节点的子节点是有序的,那么气泡的单个配置就是一棵树,其中的节点是无序的。 任何合理的输出格式都可以,例如返回字符串列表或单个字符列表或带有某种空白的单个字符串列表,或者在两者之间使用stdout或stderr以某种形式的可见空白字符(最常见的是换行符或空格)进行打印每个重组。 每次重组的尾随空格以及在实际输出之前和之后的尾随和换行符/空列表元素的位置。您应该在输出中使用与输入相同的括号。除了此处指定的方括号,换行符和空格以及您使用的任何分隔符,均不应打印任何内容(包括不可见/零宽度字符)。 分数是代码中的字节数。每种语言的最低计数获胜。您可能会注意到您是否获得了想象中的奖励,无论是常规奖励还是巨额奖励,但这都不会影响您的分数。实际的奖金太难平衡了。 输入输出示例 范例1: 输入: ()(()) 输出: ()(()) (())() 范例2: 输入: (()())()() 输出: (()())()() ()(()())() ()()(()()) 范例3: 输入: (()(()))() 输出: ((())())() ()((())()) (()(()))() ()(()(()))

29
按字母顺序排列字符串
任务 您的目标(应该选择接受)是编写一个程序,给定输入字符串(或字符数组),输出该字符串中字母的所有可能排列。我对自己的输出不满意,因此应按字母顺序排序,没有重复。 例: 输入: buzz 输出: buzz bzuz bzzu ubzz uzbz uzzb zbuz zbzu zubz zuzb zzbu zzub 规则 这是代码高尔夫球,因此最短的代码获胜。 每行上的尾随空格都可以 最后一行之后可以有一个换行符(但不能再有其他换行符)

30
无效的Invali无效
这个想法大致基于@TùxCräftîñg的聊天消息。 看一下下面的示例序列: INVALID0,INVALID1,INVALID2 INVALID3,INVALID4...INVALID9 之后INVALID9,它像这样继续: INVALI0,INVALI1,INVALI2,INVALI3...INVALI9 之后INVALI9,是这样的: INVAL0,INVAL1,INVAL2,INVAL3...INVAL9 之后,INVAL9是这样的: INVA0,INVA1,INVA2,INVA3,...INVA9 注意我们如何INVALID每次都从单词中删除字母。 您将不断重复此操作,直到到达单个字母,即字母I: I0,I1,I2,I3,I4...I9 现在,您的任务是,像上例一样,输入一个单词,并从中产生一个序列。您的代码还必须使用单个字母,在这种情况下,结果序列将更短。 您可以选择自己喜欢的任何输入和输出格式(根据需要选择带或不带分隔符),但是必须指定选择的格式。 顺序必须严格按照指定的顺序进行。 成功完成此挑战的最短代码(以字节为单位)将赢得挑战。 上例中的完整序列: INVALID0, INVALID1, INVALID2, INVALID3, INVALID4, INVALID5, INVALID6, INVALID7, INVALID8, INVALID9, INVALI0, INVALI1, INVALI2, INVALI3, INVALI4, INVALI5, INVALI6, INVALI7, INVALI8, INVALI9, INVAL0, INVAL1, INVAL2, INVAL3, INVAL4, INVAL5, INVAL6, INVAL7, INVAL8, INVAL9, INVA0, INVA1, …

13
超排列
介绍 您是窃取新技术创业公司Dejavu的一些秘密计划的罪犯。您潜入后墙,但发现一扇需要用别针打开的门。您可以识别出锁的型号,并且知道它需要使用5位数的密码,并且使用从0到4的所有数字。在输入每个数字之后,锁会检查输入的最后5位数,并在密码正确的情况下打开。您必须快速通过此锁定。 简而言之,超置换 排列是一组特定数字的所有可能组合。例如,数字0、1、2的所有排列为: 012、021、102、120、201和210。 如果将所有这些置换连接在一起,则会得到一个超置换: 012021102120201210 此超置换包含0、1、2的所有置换,但可以使该置换短一些。我将在这里略过一些,但是这些数字的最短置换是: 012010210 就我们的意图和目的而言,这实际上是最短的数字字符串,其中包含这些数字的所有可能排列,即超排列。 任务 您的任务比上面的超级置换示例要难一些,因为您还有两个数字需要担心。-如果您还没有阅读有关超置换的文章,或者我上面的例子不清楚,我强烈建议您阅读Patrick Honner撰写的有关该主题的出色文章(这一挑战受到他的文章的启发很大,因此对他表示敬意):https://www.quantamagazine.org/unscrambling-the-hidden-secrets-of-superpermutations-20190116/。您的目标是编写尽可能最短的程序,以产生数字0到4的超排列。 计分 您的程序不接受任何形式的任何输入,并且产生从0到4的数字的超置换。此超置换必须打印到控制台或以您选择的语言提供的可视化方式显示给用户。这不必是最短的排列,而必须是有效的超排列。因此,目标是编写具有最短超置换的最短程序,因此您应该像这样计算分数: 文件大小(字节)*生成的超置换长度(数字) 例如,如果我有一个40字节的程序,并且我的超置换长度为153位数字,那么我的分数将是: 40 * 153 = 6120 与往常一样,目标是使该分数尽可能低。 模板 这是发布答案的方法: 语言| 得分 链接到工作环境中的代码(如果可能) code snippet 代码说明等 结局 这是我对此网站的第一个问题。因此,请告诉我是否遗漏了任何东西,或者尚不清楚我的挑战的一部分。谢谢,打高尔夫愉快!

11
Anagram Quines(警察的线)
这是警察和强盗的挑战,可以在此处找到强盗的线索 您面临的挑战是编写一个程序,该程序输出其源代码的字谜,而不输出原始源代码本身。 例如以下Python程序, print`'print*2``'*2` 版画 'print*2``print*2``' 与原始来源具有相同的字符,但顺序不同。 找到这样的程序后,将其输出作为答案包括在内,而忽略生成它的程序。正如您可能已经猜到的那样,强盗会试图发现您隐藏的程序或任何符合规范的程序。您的目标是制作最强盗无法破解的程序。 规则 与大多数警察和强盗的挑战一样,如果您的答案一周都保持不变,则可以在答案中添加预期的解决方案并将其标记为“ 安全”。一旦安全,抢劫者就无法破解答案。 您不需要包括预期解决方案的语言,但是如果您不包括语言,强盗可以在挑战之前以任何一种语言破解它,而如果您指定语言,则他们只能在提供的一种语言中破解它。 适用Quines的标准规则。

21
镜子中的镜子
二维编程语言通常具有镜像命令,例如/和,\以重定向网格上的指令指针: >>>>\ v v <<<</ 在此挑战中,您将获得一个传入方向和一个镜像,并且需要确定传出方向。 规则 传入方向将被指定为字符之一,NESW而镜像将被指定为/或\。您可以按任何顺序收到这些。您必须使用大写字母。 您可以采用任何方便的格式输入,包括两个字符的字符串,在字符之间使用一些分隔符的字符串,列表中的一对字符,甚至一对单例字符串。如果确实使用带分隔符的字符串,则分隔符不能使用任何字符NWSE\/。 输出应为一个字符NESW或单个字符的字符串。 您可以编写程序或函数,并使用我们的任何标准方法来接收输入和提供输出。 您可以使用任何编程语言,但是请注意,默认情况下,这些漏洞是禁止的。 这是代码高尔夫球,因此以字节为单位的最短有效答案为准。 测试用例 您只需要处理8种可能的输入,因此没有理由不对所有代码进行测试: N / --> W N \ --> E E / --> S E \ --> N S / --> E S \ --> W W / --> N W \ --> S

8
排列鸽洞原理
在数独游戏中,许多玩家喜欢“铅笔”每个方格中可能出现的数字: 上面的行可以表示为数组: [[1,2,9], [6], [5], [7], [1,2,9], [1,2,9], [3], [1,2,4], [8]] 现在,请注意只有一个地方4可以去。这有效地使我们将上面的列表简化为: [[1,2,9], [6], [5], [7], [1,2,9], [1,2,9], [3], [4], [8]] 这项挑战的目的是列出排列中可能的数字,并推断出可以消除的可能性。 再举一个例子,假设您具有以下可能性: [[0,1,3], [0,2,3], [1,2], [1,2]] 最后两个位置必须用1和2填充。因此,我们可以从数组的前两个元素中删除那些可能性: [[0,3], [0,3], [1,2], [1,2]] 再举一个例子: [[0,1,2,3], [0,2], [0,2], [0,2]] 它不可能从上述可能性构造排列,因为只有1两个位置1和3,和你想返回一个空数组。 您需要输入可能性列表,并在消除最大可能性之后输出其余可能性。 如果不可能使用特定的数组,则需要返回一个空数组,或者返回其中一个子数组为空的数组。 您可能会假设数组的格式正确,并且至少包含1个元素。 给定大小数组N,您可以假设子数组中的数字始终在范围内[0:N),并且N <= 10 您可能无法假设从0到的每个数字N-1都会出现 您可以假设单个子数组中的数字是唯一的。 如果子数组仅包含一个可能性,则可以在数组中或单独表示该可能性。 [[1],[2],[0]],[1,2,0],[[1,2],0,[1,2]]都是有效的。 您可以以合理的字符串格式或列表/数组格式接受数组。 子数组可以按任何顺序排列。 …

24
Deranged!Combinatorics:计算子因子
次因子或rencontres数字(A000166)是一个数字序列,类似于排列组合中显示的因子阶数字。特别是ñ个subfactorial N!给出的数量紊乱一套的ñ元素。排列是一种排列,其中没有元素保持在相同位置。可以通过以下递归关系定义子因子: !n = (n-1) (!(n-1) + !(n-2)) 实际上,相同的递归关系也适用于阶乘,但是对于子阶,我们从以下内容开始: !0 = 1 !1 = 0 (对于阶乘,我们当然有1!= 1。) 给定n,您的任务是计算!n。 规则 像阶乘一样,子阶数增长非常快。如果您的程序只能处理输入n以便可以用您的语言的本机数字类型表示!n,那是很好的。但是,理论上,您的算法必须对任意n有效。这意味着,您可以假设积分结果和中间值可以用您的语言准确表示。请注意,如果常数e以有限精度存储或计算,则排除常数e。 结果必须是一个精确的整数(尤其是您不能用科学计数法近似结果)。 您可以编写程序或函数,并使用接收输入和提供输出的任何标准方法。 您可以使用任何编程语言,但是请注意,默认情况下,这些漏洞是禁止的。 这是代码高尔夫球,因此以字节为单位的最短有效答案为准。 测试用例 n !n 0 1 1 0 2 1 3 2 4 9 5 44 6 265 10 1334961 12 176214841 13 2290792932 14 32071101049 20 …

3
实施简化字距调整
介绍 字距调整是指调整文本字母之间的间距。例如,考虑Top用以下三个字形写的单词: ##### ..... ..... ..#.. ..... ..... ..#.. ..##. .###. ..#.. .#..# .#..# ..#.. .#..# .#..# ..#.. ..##. .###. ..... ..... .#... ..... ..... .#... 我们可以用点填充字形之间的间隙并完成它,但是间隙看起来太宽了。相反,我们将字形滑动到左侧,以便它们几乎可以接触: #####........ ..#.......... ..#..##..###. ..#.#..#.#..# ..#.#..#.#..# ..#..##..###. .........#... .........#... 看起来好多了!请注意,的条形图T在的左边框上方o。在此挑战中,您的任务是为此类矩形字形实现一个简单的字距调整程序。 字距调整过程 考虑具有.和#形状相同的两个矩形2D字符数组。在简单的字距调整过程中,我们首先将数组并排放置,中间放置一列.s。然后,我们将#右阵列中的每一个向左移动一步,直到#左右阵列中的s正交或对角相邻。字距调整的结果是引入相邻s 之前的步骤#。您的任务是实施此过程。 让我们举个例子: Inputs: ..### #.... #.... ..##. ...#. ...## ..### ....# Process: …
24 code-golf  grid  code-challenge  atomic-code-golf  code-golf  combinatorics  probability-theory  card-games  code-golf  number  geometry  code-golf  decision-problem  chess  code-golf  math  number  sequence  code-golf  string  regular-expression  code-golf  arithmetic  integer  code-golf  math  array-manipulation  code-golf  number  decision-problem  integer  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  decision-problem  graph-theory  binary-matrix  code-golf  string  parsing  code-golf  string  code-golf  morse  code-golf  code-golf  string  code-golf  ascii-art  cellular-automata  code-golf  binary  base-conversion  code-golf  arithmetic  decision-problem  integer  checksum  code-golf  matrix  linear-algebra  code-golf  code-golf  game  code-golf  sequence  binary  code-golf  combinatorics  optimization  code-golf  decision-problem  quine  code-golf  rational-numbers  bitwise  code-golf  string  permutations  code-golf  kolmogorov-complexity  unicode  code-golf  ascii-art  number  code-golf  number  integer  binary  base-conversion  code-golf  array-manipulation  code-golf  chemistry  code-golf  number  sequence  fibonacci  code-golf  matrix  optimization  code-golf  number  code-golf  math  number  sequence  code-golf  math  array-manipulation  matrix  linear-algebra  code-golf  kolmogorov-complexity  cops-and-robbers  cops-and-robbers  code-golf  tips  basic  code-golf  decision-problem  binary  tiling  game  king-of-the-hill  python  code-golf  c  code-golf  ascii-art  code-golf  string  kolmogorov-complexity  alphabet  code-golf  number  code-golf  string  code-golf  number  sequence  integer  code-golf  number  permutations  restricted-complexity  restricted-time 

30
Anagram Quine高尔夫
在这个问题中,我要求您根据其输出猜出一个七巧板奎因。但是,看来我们没有要打高尔夫球七字谜的问题。因此,您的任务将是制作最短的字谜奎因。 什么是七巧板奎因? anagram quine是一个非空程序,会打印其原始源代码以外的源代码的anagram。 这是Python 2中的字谜奎纳的示例: print`'`print`*2'*2` 您不应该阅读自己的资料来应对这一挑战。

20
模仿订购
给定两个数字列表,一个源和一个模式,对源重新排序以匹配模式的相对顺序。重新排序的源中的任何两个条目应与模式在相同位置的条目进行比较。 例如,输入 s = [-5, 9, 4, 13, 11, -6, 0] p = [7, -4, 1, -8, 4, -3, 12] 应该产生结果 [11, -5, 4, -6, 9, 0, 13] 比较第一个和最后一个位置,结果有11<13,7<12在模式中匹配。 输入:两个等长的非空整数列表。每个列表都不会重复。是否首先给出源或模式由您决定。 输出:重新排列源编号以使其与图案编号具有相同相对顺序的列表。 排行榜: 显示代码段 var QUESTION_ID=62587,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/62587/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 …

23
编码-随机播放-解码
挑战 您的任务是将整数编码为ASCII字符的字符串,然后在所述字符串被随机混洗后成功解码。 您将编写两个程序/函数,分别称为Encoder和Decoder。 编码器 输入:在范围内的整数。ññn[ 0 ,231− 1 ][0,231-1个][0,2^{31}-1] 输出:一个字符串sss的ASCII字符(不一定打印)。 解码器 输入:字符串s的随机排列s′s′s'。sss 输出:整数ññn。 计分 令一种一种A为s在所有可能值n上的最大长度。如果编码器不确定地起作用(允许,请参见下文),则A将是s可能出现的最大长度(可能为∞)。sssññn一种一种Asss∞∞\infty 令大号Ë大号ËL_E为编码器的长度(以字节为单位),大号d大号dL_D为解码器的长度(以字节为单位)。 然后你的分数是甲⋅ (大号Ë+ Ld)一种⋅(大号Ë+大号d)A\cdot(L_E+L_D)。 提交的分数最低的是胜利。 时限 对于单个测试用例(即n的单个值),编码器和解码器的执行时间都存在1分钟的任意时间限制。ññn 目的是避免通过枚举具有某些属性的所有序列来发现强行编码的解决方案。如果您的解决方案做的比这更聪明,那么它很可能会符合时间限制,并被认为是有效的。同样,如果它在TIO上对ññn一些随机选择值起作用,则将其视为有效。否则,我将在我的机器上对其进行测试,但是请注意,如果您的解决方案是纯蛮力的,则几乎肯定会失败。 规则 该编码器和解码器必须写在同一语言。 对于编码器返回的字符串s的每个可能的排列s ',解码器必须输出正确的整数ññn。s′s′s'sss 该编码器和解码器都不会允许共享信息(通过全局变量或文件的方式,比如)以任何方式。 所述的输出编码器不需要不是确定性的(即,相同的输入ññn如果可以产生不同的输出串的编码器被运行多次),但解码器必须始终猜测正确的整数ññn。 的编码器和解码器可以采取,并返回整数ññn在任何方便的方式(例如,如果n = 14ñ=14n=14是细的输入是14,"14"或[1,4])。 所述编码器可输出的串sss由任一印刷其上stdout 或通过返回一个字符串,一个列表/字符数组或范围内的整数列表/阵列[ 0 ,127 ][0,127][0,127] ; 请注意,解码器将接收输入的置换sss被返回的编码器,所以它应该接受字符串s′s′s'在相同的格式为sss。 禁止出现标准漏洞。 如果可能,请说明您的代码如何工作以及您要求的分数为什么正确。 例 假设n = 14ñ=14n=14。 所述编码器接收14作为输入。它可能输出"qwerty"。 该解码器接收的置换"qwerty"作为输入,例如"tweyqr"。它必须输出14(以任何方便的格式)。 该编码器可能返回[113,119,101,114,116,121],以及,在这种情况下,解码器将已收到(例如)[116,119,101,121,113,114]。 请注意,编码器返回的字符串也可能包含不可打印的ASCII字符(但始终在范围内[0x00, ..., …

26
找出单词的等级
定义 单词的等级定义为当单词的所有可能排列(或排列)按字母顺序排列(例如在字典中)时的位置,无论单词是否有意义。 让我们考虑这两个词-“蓝色”和“可见”。首先,我们将按字母顺序写出这些单词的字母的所有可能排列: "blue": "belu","beul","bleu","blue","buel","bule","eblu","ebul","elub","elbu","eubl", "eulb","lbeu","lbue","lebu","leub","lube","lueb","ubel","uble","uebl","uelb", "ulbe","uleb" "seen": "eens","eesn","enes","ense","esen","esne","nees","nese","nsee","seen", "sene","snee" 现在让我们从左边看,找到所需单词的位置。我们看到单词“ blue”在第4位,“ seen”在第10位。因此,单词“ blue”的等级为4,“ seen”的等级为10。这是计算单词等级的一般方法。确保仅从1开始计数。 任务 您的任务是编写代码,以将任何单词作为输入并显示其排名。排名应该是输出。小心包含重复字母的单词。 例子 "prime" -> 94 "super" -> 93 "bless" -> 4 "speech" -> 354 "earth" -> 28 "a" -> 1 "abcd" -> 1 "baa" -> 3 您可以假定输入完全是小写,并且输入将仅包含字母字符。另外,如果输入空格或无效字符串,则可能返回任何内容。 计分 这是代码高尔夫球,因此最短的代码获胜!

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.