Questions tagged «permutations»

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

1
德州扑克还是德州扑克?
您的朋友在最后一刻邀请您参加一场高风险的扑克游戏,作为计算机科学家,您决定利用自己的技能在游戏中取得优势。给定2 cards(您的手)和0, 3, 4 or 5 cards(已发牌),您的任务将必须决定,您能得到的最佳手牌是什么。如果将所有7张卡都作为参数给出,答案很明确。如果给予较少,问题将变得更加复杂。但是,这还不足以为您提供所需的优势,您还必须从其余的牌中计算出最好的一手牌,以了解对手的实力。 Hold'em刷新器 如果您不了解Hold'em,则游戏中的每个玩家都以2张牌作为其“手牌”开始。在3个“回合”的过程中,所有其他玩家之间共享了额外的卡。第一轮,显示3张牌。第二张,另外一张,第三张显示最终的牌。先给出的两张牌代表您的手,而后者则表示连续转弯给出的0、3、4或5张牌。 可能的数字: [2,3,4,5,6,7,8,9,T(10),J,Q,K,A] 可能的西装: [S,C,H,D] 全甲板: [2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS, # Spades. 2C,3C,4C,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC, # Clubs. 2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH, # Hearts. 2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD] # Diamonds. 手牌排名: 1:Royal Flush (A-K-Q-J-10, all from the same suit). 2:Straight Flush (Sequential cards, all from the same suit). 3:Four-of-a-Kind (Self explanatory). 4:Full House (3-of-a-kind …

5
扭曲的句子
规则 该程序应接收一个字符串/单词数组作为输入。对于字符串/数组中的每个单词,它将通过从单词的正面和背面以交替方式获取字符来重建单词。 12345 678 9-> 15243 687 9。 然后,它将以字符串中最早出现的单词和最新出现的单词之间交替的方式重新排列单词。 15243 687 9-> 15243 9 687 最后,它将通过在输出结果之前将空格,制表符和换行符放置在它们最初所在的索引处来重建字符串。 12345 678 9-> 15243 687 9-> 15243 9687-> 15243 968 7 输出应与输入具有相同的数据类型。 禁止标准漏洞 例子 输入: 敏捷的棕色狐狸跳过了懒狗。 输出: Teh d.ogq kucil yaz bnrwo tehf xoo rvej supm 输入: 敏捷的棕色狐狸跳过 了懒狗。 输出: Teh d.ogq kucil yaz …

15
计算欧拉数
的欧拉数 A(n, m)是排列的数量[1, 2, ..., n]精确地在其中m元件是比以前的元件大。这些也称为上升。例如,如果,则为n = 33!= 6个排列[1, 2, 3] 1 2 3 < < 2 elements are greater than the previous 1 3 2 < > 1 ... 2 1 3 > < 1 ... 2 3 1 < > 1 ... 3 1 2 > < 1 …

13
逆排列索引
介绍 具有n个元素的列表的字典排列可以从0到n编号!-1.例如3!= 6个置换(1,2,3)将是(1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1)。 将排列应用于列表时,其元素的排列顺序与排列中的数字相同。例如,将置换(2,3,1)应用于l = (a,b,c)yield (l[2],l[3],l[1]) = (b,c,a)。 排列的逆定义为颠倒此操作的排列,即应用排列,然后其逆(反之亦然)不会修改数组。例如,(2,3,1)is 的逆(3,1,2),因为将其应用于(b,c,a)yields (a,b,c)。 同样,应用于排列本身的排列的逆值会产生整数1… n。例如,应用(3,1,2)到(2,3,1)产率(1,2,3)。 现在,我们将函数revind(x)定义为索引为x的排列的逆排列的索引。(如果您有兴趣,这是A056019。) 由于与指数置换我只修改了最后ķ列表中的项目当且仅当 0≤ 我 < ķ!,我们可以添加任意数量的元素到列表的开始,而不会影响revind(我)。因此,列表的长度不影响结果。 挑战 您的任务是实现revind(x)。您将编写一个完整的程序或函数,以单个非负整数x作为输入/参数,并以单个非负整数输出/返回结果。 输入和输出可以是0索引或1索引,但是它们之间必须保持一致。 禁止按索引生成排列,返回排列的索引或找到逆排列的内建函数。(允许生成所有排列或下一个排列的构建体。) 适用标准代码高尔夫球规则。 例子 下面的示例是0索引的。 Input Output 0 0 1 1 2 2 3 4 4 3 5 5 6 6 13 10 42 51 100 41 1000 …
17 code-golf  combinatorics  permutations  code-golf  image-processing  brainfuck  encode  steganography  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  ascii-art  fibonacci  code-golf  string  code-golf  sorting  popularity-contest  statistics  code-golf  ascii-art  kolmogorov-complexity  code-golf  code-golf  ascii-art  tic-tac-toe  code-golf  string  code-challenge  classification  test-battery  binary-matrix  code-golf  math  arithmetic  code-golf  ascii-art  random  code-golf  string  code-golf  number  binary  bitwise  code-golf  number  arithmetic  code-golf  math  ascii-art  code-golf  string  ascii-art  code-golf  string  ascii-art  code-golf  string  code-golf  counting  code-golf  number  binary  bitwise  decision-problem  code-golf  array-manipulation  code-golf  tips  brain-flak  code-challenge  quine  source-layout  code-generation  code-golf  linear-algebra  matrix  abstract-algebra  binary-matrix  code-golf  string  palindrome  code-golf  puzzle-solver  sudoku  code-golf  ascii-art  code-golf  graphical-output  internet  code-golf  ascii-art  kolmogorov-complexity  code-golf  math  code-golf  clock 

12
沙米尔的秘密分享
给定n(玩家数量),t(阈值)和s(秘密),输出n由Shamir的秘密共享算法生成的秘密。 算法 出于这一挑战的目的,将在GF(251)(size的有限域251,也称为整数mod 251)中进行计算。通常,将选择该字段,使其大小比的素数大得多n。为了简化挑战,字段大小将保持不变。251选择它是因为它是8位无符号整数可以表示的最大质数。 生成t-1(包括)范围内的随机整数[0, 250]。标明这些一个1通过一个T-1 。 构造一个t-1使用次多项式s为恒定值,并从步骤1中的功率的系数的随机整数x:F(X)= S + X *一个1 + X 2 * A 2 + ... + X 叔1 * a t-1。 (含)范围内(f(z) mod 251)每个输出。z[1, n] 参考实施 #!/usr/bin/env python from __future__ import print_function import random import sys # Shamir's Secret Sharing algorithm # Input is taken …
17 code-golf  number-theory  random  cryptography  polynomials  code-golf  number  code-golf  math  number  sequence  code-golf  quine  code-generation  code-golf  arithmetic  set-theory  code-golf  sequence  code-golf  code-golf  string  math  fastest-code  optimization  code-golf  code-golf  internet  stack-exchange-api  code-golf  array-manipulation  code-golf  string  internet  string  code-challenge  internet  test-battery  code-golf  math  pi  code-golf  arithmetic  primes  code-golf  array-manipulation  code-golf  string  code-golf  string  palindrome  code-golf  sequence  number-theory  fastest-algorithm  code-golf  math  number  base-conversion  code-golf  number-theory  sorting  subsequence  search  code-golf  permutations  code-challenge  popularity-contest  code-generation 

8
螺旋排列序列
我们可以将自然数汇总为矩形螺旋: 17--16--15--14--13 | | 18 5---4---3 12 | | | | 19 6 1---2 11 | | | 20 7---8---9--10 | 21--22--23--24--25 但是现在我们将它们放置在矩形网格上,我们可以按不同的顺序展开螺旋线,例如顺时针方向向北开始: 17 16--15--14--13 | | | 18 5 4---3 12 | | | | | 19 6 1 2 11 | | | | 20 7---8---9 10 | …

2
每日最佳高尔夫#6:掷出d20
关于系列 首先,您可以像对待其他任何代码高尔夫挑战赛一样对待它,并回答它而不必担心系列赛。但是,在所有挑战中都有排行榜。您可以在第一篇文章中找到排行榜以及有关该系列的更多信息。 尽管我在本系列中有很多想法,但未来的挑战还没有定下来。如果您有任何建议,请在相关的沙箱帖子上让我知道。 第6洞:滚动d20 桌面RPG中最常见的模具是二十面模具(二十面体,通常称为d20)。掷骰子是您的任务。但是,如果您只是返回1到20之间的随机数,那将是微不足道的。因此,您的任务是为给定的模具生成一个随机的网。 我们将使用以下网络: 这是一个三角形带,因此可以很容易地将其表示为整数列表。例如,如果得到输入: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] 那将对应于以下骰子(有趣的事实:这是魔术师使用的网:聚会生命计数器/旋转骰子)。 但是,这不是唯一代表此死的网络。根据我们展开脸部的方式,有60种不同的蚊帐。这里还有两个: [1, 8, 9, 10, 2, 3, 4, 5, 6, 7, 17, 18, 19, 11, 12, 13, 14, 15, 16, 20] [10, …

14
有趣的排列
谁不绝对喜欢排列,对吗?我知道,它们很棒-非常有趣! 好吧,为什么不把这个乐趣变得有趣呢? 这是挑战: 给定精确格式的输入:nPr,其中n是从中获取的池,r是从该池中选择的项的数量(and n和r是整数),输出/返回排列的确切数量。对于那些对术语有些生疏的人:排列,定义。2a。 但是,这是挑战发挥作用的地方(使其变得不太容易): 您不能将任何内置库,框架或方法用于您的置换功能。您可能不使用阶乘方法,置换方法或任何种类的方法;您必须自己编写所有内容。 如果需要进一步澄清,请随时在评论中告诉我,我将立即采取行动。 这是一个I / O示例: 样本函数为 permute(String) -> int 输入: permute("3P2") 输出: 6 这是代码高尔夫球,所以最短的代码胜出!

14
变相的排列
给定一个nnn维向量vvv与真正的条目,找到最接近的置换ppp的(1,2,...,n)(1,2,...,n)(1,2,...,n)相对于所述l1l1l_1 -distance。 细节 如果是更方便,你可以使用置换(0,1,...,n−1)(0,1,...,n−1)(0,1,...,n-1)代替。如果存在多个最接近的排列,则可以输出任何一个或全部替换。 两个向量u ,v之间的l1l1l_1距离定义为d (u ,v )= ∑ i | u i − v i | 。u,vu,vu,vd(u,v)=∑i|ui−vi|.d(u,v)=∑i|ui−vi|.d(u,v) = \sum_i \vert u_i-v_i\vert. 如果需要,可以假定输入仅由整数组成。 例子 [0.5 1] -> [1 2], [2 1] c*[1 1 ... 1] -> any permutation [1 4 2 6 2] -> [1 4 3 5 2], …

16
找到所有的字谜!
尽管有17个问题被标记 anagram的,我们仍然没有这个问题,所以就在这里。 你的任务 您必须编写一个程序或函数,该程序或函数在接收到字符串时会打印出所有可能的字谜。出于这个问题的目的,一个字谜是一个字符串,它包含与原始字符串相同的字符,但不是原始字符串的精确副本。字谜不必是或包含实际单词。 输入值 您可以通过任何标准输入法接受长度大于0的任何字符串。它可以包含任何ASCII字符。 输出量 您可以以任何标准方式输出输入字符串的所有可能的字谜。您不得输出相同的字符串两次,也不能输出与输入相等的字符串。 其他规定 不允许使用标准漏洞 计分 这是代码高尔夫球,最少字节获胜。

15
隐藏的倒置(Robbers的线程)
这是一个警察和强盗的难题,可以在此处找到警察的线索。 您的任务将是在警察的线程中查找提供的程序的字谜,并执行其左倒数。 一旦找到答案,请在下面将解决方案作为答案发布,并通知原始答案者。 您将获得第一个破解程序的分数。

20
分解一个数字!
您的任务是使用以下格式分解数字。 这与基本转换类似,不同之处在于digits,您列出了values,而不是在基本列表中列出,这样列表就加到了输入上。 如果给定的基为n,则列表中的每个数字都必须采用的形式k*(n**m),其中0<=k<n和m在整个列表中都是唯一的。 眼镜 任何合理的输入/输出格式。您的程序/功能需要2个输入并输出一个列表。 输出列表可以是任何顺序。 0 可以排除或包含。 0允许领导。 允许内置。 测试用例 number base converted list input1 input2 output 123456 10 [100000,20000,3000,400,50,6] or [6,50,400,3000,20000,100000] 11 2 [8,2,1] or [0,0,0,0,8,0,2,1] 727 20 [400,320,7] 101 10 [100,1] or [100,0,1] 计分 这是代码高尔夫球。以字节为单位的最短解决方案获胜。
16 code-golf  number  sequence  number-theory  base-conversion  code-golf  bitwise  hashing  code-golf  string  ascii-art  whitespace  code-golf  math  code-golf  code-golf  image-processing  counting  code-golf  math  arithmetic  checksum  code-golf  code-golf  math  arithmetic  number-theory  code-golf  array-manipulation  random  code-golf  string  code-golf  math  ascii-art  base-conversion  code-golf  graphical-output  geometry  3d  code-golf  math  linear-algebra  matrix  code-golf  math  number  sequence  code-golf  array-manipulation  code-golf  math  matrix  linear-algebra  code-golf  number  sequence  counting  code-golf  string  code-golf  string  restricted-source  quine  sorting  code-golf  string  geometry  code-golf  string  code-golf  networking  code-golf  base-conversion  code-golf  math  matrix  code-golf  arithmetic  linear-algebra  matrix  code-golf  number  arithmetic  grid  code-golf  number  source-layout  code-golf  string  bitwise  checksum  code-golf  array-manipulation  code-golf  string  probability-theory  code-golf  tips  code-golf  sequence  code-golf  string  math  sequence  calculus  code-golf  string  palindrome  bioinformatics  code-golf  math  combinatorics  counting  permutations  code-golf  parsing  logic-gates  code-golf  arithmetic  number-theory  combinatorics  code-golf  math  sequence  polynomials  integer  code-golf  string  ascii-art  chess  code-golf  string  code-golf  number  code-golf  string  ascii-art  parsing  code-golf  code-golf  number  natural-language  conversion  code-golf  arithmetic  code-golf  string  code-golf  ascii-art  decision-problem 

24
无重复的随机数组
我在这里回答一个挑战,这项任务是挑战的一部分。我在JavaScript中有73个字节的解决方案。但是我认为简单的事情太过分了。 挑战 给出两个整数作为输入: N 预期数组的长度 R的时间间隔的范围在开始一个:1..R,不0..R-1 在程序/函数的每次运行中,输出一个长度不同的数组,N其值之间的间隔1..R不超过一个。 您必须R-value在代码中使用。 限制条件 您可以假设:2 <= N <= R。 我真的很想看到比我的73个字节短的javascript解决方案。 但是,当然,它对所有语言都开放! 如果您的语言无法返回数组,则可以打印所有数字;)

6
在除数关系中找到最大匹配
您会得到一组正整数。您必须将它们成对布置,以便: 每对包含2个数字,其中一个是另一个的倍数。例如,8是4的倍数,而9是9的倍数。 如果在初始集中多次出现相同的数字,则可以成对使用多次。一个数字甚至可以与另一个相同数字出现 获得最大可能的对数。 输出必须是对数。最短的代码获胜。 样本数据 2,3,4,8,9,18 -> 3 7,14,28,42,56 -> 2 7,1,9,9,4,9,9,1,3,9,8,5 -> 6 8,88,888,8888,88888,888888 -> 3 2,6,7,17,16,35,15,9,83,7 -> 2

3
重构排列
介绍 假设您获得了n对象的随机排列。排列被密封在一个盒子中,因此您不知道n!它是哪种。如果设法将置换应用于n不同的对象,则可以立即推断出其身份。但是,只允许将置换应用于长度n二进制矢量,这意味着您必须多次应用置换才能识别它。显然,仅将其应用于n向量1就可以完成工作,但是如果您很聪明,则可以使用log(n)应用程序来完成。但是,该方法的代码将更长。 这是一项实验性挑战,您的分数是代码长度和查询复杂度的组合,这意味着对辅助过程的调用次数。规格有点长,请耐心等待。 任务 您的任务是编写一个命名函数(或最接近的对等函数) f,该函数使用基于0或基于1的索引作为输入n,并使用正整数和p前n整数的排列作为输入。其输出是排列p。但是,不允许您p直接访问排列。您唯一可以做的就是将其应用于任何n位向量。为此,您应该使用一个辅助函数P,该函数接受一个置换p和一个bits向量v,并返回其p[i]th坐标包含bit 的置换向量v[i]。例如: P([1,2,3,4,0], [1,1,0,0,0]) == [0,1,1,0,0] 您可以将“位”替换为任意两个不同的值,例如3和-4,或'a'和'b',并且它们不需要固定,因此可以P在[-4,3,3,-4]和[2,2,2,1]的同一调用中使用两者进行调用f。的定义P不会计入您的分数。 计分 解决方案在给定输入上的查询复杂度是它对辅助函数进行的调用次数P。为了使此度量明确,您的解决方案必须是确定性的。您可以使用伪随机生成的数字,但随后还必须为生成器确定初始种子。 在此存储库中,您将找到一个名为的文件permutations.txt,该文件包含505个排列,使用从0开始的索引(在从1开始的情况下,增加每个数字),每个长度在5到50之间(含150和150)之间。每个排列都在其自己的行上,并且其编号由空格分隔。您的分数是这些输入的字节数f+平均查询复杂度。最低分获胜。 额外规则 最好使用带说明的代码,并且不允许出现标准漏洞。特别是,各个位是无法区分的(因此,您不能给Integer对象提供矢量P并比较它们的身份),并且该函数P始终返回一个新矢量,而不是重新安排其输入。您可以自由更改和的名称f以及P它们接受参数的顺序。 如果您是第一个使用您的编程语言回答的人,我们强烈建议您包括一个测试工具,其中包括该函数的实现,该实现P还计算调用它的次数。例如,这是Python 3的工具。 def f(n,p): pass # Your submission goes here num_calls = 0 def P(permutation, bit_vector): global num_calls num_calls += 1 permuted_vector = [0]*len(bit_vector) for i in range(len(bit_vector)): permuted_vector[permutation[i]] = bit_vector[i] return permuted_vector …

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.