Questions tagged «permutations»

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

7
用打乱的钥匙打字
您的朋友不太擅长使用计算机,所以有人打扰他键盘上的字母(az)成为一个恶作剧。当他坐下来尝试在键盘上键入自己的名字时,他意识到字母被打乱了,要求您的帮助。 您很聪明,所以您知道,如果他键入他的名字,然后重复输入屏幕上出现的内容而不是他的名字,他最终将成功输入他的名字。您也很友善并重新排列了按键,但想知道要成功旋转几圈。 您的任务是编写给定字母改组的程序或函数,而朋友的名字将计算转数。 输入详细信息: 以方便您的语言的结构形式输入了两个字符串作为输入。 第一个字符串是按照旧字母的字母顺序列出的新小写字母的列表。(第一个字符位于的位置a,最后一个字符位于的位置z。)字符串中总是会发生一些变化。 第二个字符串是名称。它可以包含任何可打印的ascii字符,但是只有大写和小写字母字符会被打乱。这个名字本身可能不会被改组。 输出详细信息: 输出是单个整数,最小所需匝数。换行符是可选的。 例子: 输入:( 'abcfdeghijklmnopqrstuvwxyz' 'Mr. John Doe'更改了d,e,f个位置) 输出:( 3显示的名称是:Mr. John Fod=> Mr. John Eof=> Mr. John Doe) 输入: 'nopqrstuvwxyzabcdefghijklm' 'Mr. John Doe'(ROT13密码) 输出:( 2任何包含字母的输入名称都会2四舍五入以产生原始名称。) 输入: 'aebcdjfghiqklmnopzrstuvwxy' 'John Doe' 输出: 140 这是代码高尔夫球,因此最短的条目将获胜。


4
使用ASCII艺术图可视化长除法
编写一个程序,以可视化方式用ASCII艺术进行长除法。使用您选择的输入格式,输入由两个整数组成:分子和分母。 例子: 1234÷56: 22 ---- 56|1234 112 --- 114 112 --- 2 1002012÷12: 83501 ------- 12|1002012 96 --- 42 36 -- 60 60 -- 12 12 -- 0÷35 0 - 35|0 规则: 编程语言的除法运算符的用途是允许的。 也允许使用大整数支持。 为了保持一致: 如果商为零,则在跳水板的末端打印一个零。 如果余数为零,请不要打印。 不要在任何数字上打印前导零。 末尾多余的换行符和右边的尾随空格是允许的。 字符最少的解决方案获胜。 限制: 0 <=分子<= 10 72 - 1 1 <=分母<= 9999999 …

5
狼和鸡
有一条河,河的一侧有狼和鸡。他们有木筏,都需要走到另一边。但是,木筏不能自行行驶。如果上面有两只以上的动物,木筏将沉没。没有动物要弄湿,因为这条河又冷又脏。没有动物可以在河上跳跃或飞行。同样,如果一侧有鸡,那一侧的狼就不会多于那一侧的鸡,然后狼会决定吃掉这些鸡。这意味着您不能将两只狼和一只鸡放在木筏上。 您的任务是制作一个程序/函数,将多头狼和多只鸡(大于或等于多头狼)作为输入,并找出木筏在河上移动的最少次数。如果无法完成任务,则程序/功能应输出/返回空字符串。然后它将以以下方式打印/返回一种有关如何完成此操作的方法: W if a wolf crosses the river on its own C if a chicken crosses the river on its own CW if a chicken and a wolf cross the river -- WC is also fine CC if two chickens cross the river WW if two wolves cross the …

9
隐藏建筑物
摩天大楼挑战赛的短版 任务 给定建筑物高度的数组和正整数k,找到高度的所有排列(无重复),以使k建筑物完全可见。 任何建筑物都会在其后隐藏所有较短或等高的建筑物。 输入和输出的任何格式均有效。 输入数组永远不会为空。 如果看不到那么多建筑物,请输出任何不能回答但没有错误的内容。 例子: (对于很长的输出,显示了输出长度,但是您的输出应该是所有可能的排列) input:[1,2,3,4,5],2 output: 50 input:[5,5,5,5,5,5,5,5],2 output: [] input:[1,2,2],2 output:[(1,2,2)] Seeing from the left, exactly 2 buildings are visible. input:[1,7,4],2 output:[(4, 7, 1), (1, 7, 4), (4, 1, 7)] input:[1,2,3,4,5,6,7,8,9],4 output:67284 input:[34,55,11,22],1 output:[(55, 34, 11, 22), (55, 22, 34, 11), (55, 34, 22, …

30
创建一个鹦鹉程序
给定输入,输出该输入,然后不断地换行。 输入将是仅由可打印的ASCII字符(0x20-0x7E)和换行符(0x0A)组成的字符串。 如果输入长度为0,则不断输出换行符。 这是代码高尔夫球,因此每种语言中最少的字节会获胜!
15 code-golf  string  sequence  combinatorics  fastest-code  number  code-challenge  restricted-source  rosetta-stone  code-golf  arithmetic  decision-problem  integer  factorial  code-golf  arithmetic  decision-problem  integer  bitwise  code-golf  kolmogorov-complexity  code-golf  tips  vim  code-golf  quine  code-generation  code-golf  string  restricted-source  code-golf  string  random  unicode  code-golf  audio  code-golf  ascii-art  code-golf  decision-problem  code-golf  puzzle-solver  code-golf  restricted-source  code-golf  kolmogorov-complexity  permutations  hexagonal-grid  code-golf  string  math  combinatorics  fastest-code  code-golf  restricted-source  code-golf  string  code-golf  arithmetic  code-golf  math  number  code-golf  string  decision-problem  balanced-string  code-golf  binary  code-golf  string  number  code-challenge  restricted-source  code-golf  ascii-art  printable-ascii  interactive  code-golf  string  ascii-art  code-challenge  restricted-source  source-layout  code-golf  arithmetic  tips  functional-programming  golfing-language  code-golf  binary  encryption 

15
Cheapo Enigma机(警察)
对于强盗帖子,Cheapo Enigma机器(Robbers) 警察的提交将包含一个程序/函数,该程序/函数接受一个字节的数据并返回一个字节的数据。每个可能的输入都必须产生唯一的输出。(换句话说,您的函数必须是双射的) 强盗将尝试使用尽可能短的代码来创建您的逆函数。因此,您的目标是使函数难以反转。 您不能使用仅用于哈希或加密目的的内置程序。 您的字节数不能超过64个字节。0字节的解决方案不符合获胜条件。 输入/输出格式 8位(0或1),或1-256、0-255或-128至127范围内的10进制整数。可以使用标准I / O或文件I / O。函数也可以返回一个值作为输出。输入和输出应属于同一范围(二进制,1-256、0-255或-128至127)。强盗也将需要使用此范围进行输入和输出。 计分 您的字节数与最强盗对您的尝试次数之比。最低分获胜。 仅当强盗试图击败您时,您才有资格赢得(作为警察)。(这个强盗可能是你) 例 C ++,使用0-255范围,31个字节 int x; cin>>x; cout<<(x+1)%256; C ++中可能的强盗提交,32字节 int f(int x) {return x?x-1:255;} 不需要使用相同的语言或类似的算法 这给警察和强盗的得分都是31/32 = 0.97。

2
匹配排列!
您的挑战是创建一个正则表达式,使其匹配自身的每个字符串排列,而不是其他任何内容。匹配项还必须区分大小写。 因此,例如,如果您的正则表达式为: ABC 它应该匹配(并且仅匹配)以下字符串: ABC ACB BAC BCA CAB CBA 它不应该匹配以下内容: AABC (contains an extra A) ABCD (contains an extra D) AC (no B) AAA (no B and C, extra 2 A's) abc (case-sensitive) 规则: 您可以使用任何喜欢的正则表达式。 有标准漏洞。 您的代码中必须至少包含两个不同的字符。这意味着类似1的解决方案是无效的。 正则表达式应仅包含可打印的ASCII,而不能包含其他任何内容。

3
标记基于堆栈的语言
我一直在研究另一种称为Stackgoat的基于堆栈的高尔夫语言。在这个挑战中,您将为Stackgoat(或实际上是任何通用的基于堆栈的语言)编写Tokenizer。 例子 "PPCG"23+ ["PPCG", '23', '+'] 'a "bc" + ['"a"', '"bc"', '+'] 12 34+-"abc\"de'fg\\" ['12', '34', '+', '-', '"abc\"de'fg\\"'] "foo ['"foo"'] (empty input) [] ' "" ['" "', '""'] 规格 您需要处理的三种类型是: 弦乐,什么内"" 数字,任何数字序列 运算符,除空格外的任何其他单个字符 除非将其留在字符串中或将两个数字分隔开,否则实际上将忽略空格。 字符串/字符规范: 字符串以分隔",当\遇到时,下一个字符应转义。 字符前面加a ',后面的字符'应转换为字符串文字。'a->"a" ' 后面总会有一个角色 右引号应自动插入 规则: 没有形式eval允许 输入输出: 可以通过STDIN,函数参数或您的语言等效输入。 输出应为数组或您的语言最接近的等效数组。
15 code-golf  parsing  code-golf  hexagonal-grid  code-golf  string  code-golf  string  code-golf  combinatorics  code-golf  ascii-art  code-golf  string  game  counting  code-golf  arithmetic  complex-numbers  code-golf  string  code-golf  decision-problem  hexagonal-grid  code-golf  string  sequence  code-golf  number  arithmetic  code-golf  ascii-art  code-golf  ascii-art  code-golf  string  arithmetic  code-golf  number  simulation  code-golf  number  arithmetic  code-golf  string  sequence  unicode  code-golf  string  ascii-art  balanced-string  code-golf  number  clock  code-golf  ascii-art  number  code-golf  math  number  sequence  code-golf  string  ascii-art  balanced-string  code-golf  math  string  popularity-contest  graphical-output  image-processing  code-golf  string  permutations  code-golf  string  code-golf  random  code-golf  string  cryptography  palindrome  code-golf  chess  code-golf  math  array-manipulation  topology  code-golf  math  sequence  code-golf  keyboard  classification  code-golf  string  sequence  code-golf  natural-language  code-golf  math  number  sequence  sorting  code-golf  sequence  combinatorics  grid  tic-tac-toe  code-golf  geometry  code-golf  number  restricted-source  new-years  expression-building 

2
阵列可以改组吗?
背景 非常熟练的卡处理人员能够运用这样的技术:将卡座完美地切成两半,然后完美地插入卡。如果他们从已排序的牌组开始并连续52次完美执行此技术,则牌组将恢复为已排序的顺序。您面临的挑战是将一副纸牌组成一个整数数组,并确定是否只能使用Faro随机排序对其进行排序。 定义 从数学上来说,法鲁混洗是对2 n个元素(对于任何正整数n)的置换,它将位置i(1索引)中的元素移到位置2 i(mod 2 n +1)。我们还希望能够处理奇数长度的列表,因此在这种情况下,只需将一个元素添加到列表的末尾(如果您有一个方便的话,一个小丑即可),然后Faro像上面那样洗净新列表,但是忽略检查列表顺序时添加的虚拟元素。 目标 编写程序或函数,该程序或函数接受整数列表,如果一定数量的Faro混洗会导致该列表以不降序排列(即使该数字为零-小列表也应显示真值),则返回或输出真值。否则,返回或输出错误。 例子 [1,1,2,3,5,8,13,21] => True [5,1,8,1,13,2,21,3] => True [9,36,5,34,2,10,1] => True [1,0] => True [0] => True [] => True [3,2,1] => True [3,1,2] => False [9,8,7,6,5,4,3,2,1,0] => True [9,8,7,6,5,4,3,2,0,1] => False [3,1,4,1,5,9,2,6,9] => False [-1,-1,-1,-2] => True 计分 这是代码高尔夫球,因此以字节为单位的最短源代码获胜。

4
订购40条
我们有40条相同宽度但不同高度的棍棒。有多少种布置可以将它们彼此相邻放置,以便当我们从右边看时看到10条,而当我们从左边看时又看到10条? 例如,这样的排序是: 黑棒是隐藏的,红色棒是从左看时可以看到的棒,蓝色棒是从右眼看时可以看到的棒,紫色的棒(即最长的棒)是可以看到的棒从双方。 作为测试用例: 如果我们有3个棍棒,那么从左边看2个,从右边看2个的订购数量是2 如果我们有5个棍棒,那么从左边看3个,从右边看3个的订购数量是6 如果我们有10个棍棒,那么从左边看4个从右边看4个的订购数量是90720

6
将置换分解为周期
有一个众所周知的定理,任何置换都可以分解为一组循环。您的工作是编写最短的程序。 输入: 两行。第一个包含数字N,第二个包含以空格分隔N的范围内的不同整数[0,N-1]。这些整数表示N元素的排列。 输出: 排列中每个循环一行。每行应是按循环顺序用空格分隔的整数列表。 循环可以以任何顺序输出,并且每个循环可以从任意位置开始输出。 范例1: 8 2 3 4 5 6 7 0 1 此输入编码排列0-> 2、1-> 3、2-> 4、3-> 5、4-> 6、5-> 7、6-> 0、7-> 1。这分解成如下循环: 0 2 4 6 1 3 5 7 同样有效的输出将是 5 7 1 3 2 4 6 0 范例2: 8 0 1 3 4 5 6 …

5
二进制卷积
二进制卷积由数字描述M,并应用于数字N。对于的二进制表示形式中的每个位M,如果将该位设置为(1),则通过将与相应位中的相应位相邻的两个位进行XOR N(在必要时进行环绕)来给出输出中的相应位。如果未设置该位(0),则输出中的相应位由中的相应位给出N。 一个有效的示例(具有8位值): 让N = 150,M = 59。它们的二进制表示形式分别为10010110和00111011。 根据M的二进制表示形式,卷积0、1、3、4和5。 位0的结果由对位1和7进行XOR运算得出(因为我们进行了环绕),得出1。 位1的结果由位0和2的XOR运算得出0。 位2的结果由原始位2给出,即1。 第3位的结果由第2位和第4位的XOR运算得出0。 位4的结果由位3和5的XOR运算得出0。 第5位的结果由第4位和第6位的XOR运算得出1。 位6和7的结果由原始位6和7给出,得出0和1。 因此,输出为10100110(166)。 挑战 给定N和M,输出执行Mon上描述的二进制卷积的结果N。输入和输出可以采用任何方便,一致且明确的格式。N并且M将始终在(包括)范围内[0, 255](8位无符号整数),并且应将其二进制表示形式填充为8位以执行二进制卷积。 测试用例 150 59 -> 166 242 209 -> 178 1 17 -> 0 189 139 -> 181 215 104 -> 215 79 214 -> 25 190 207 -> 50 61 …
15 code-golf  binary  integer  bitwise  code-golf  rational-numbers  code-golf  string  palindrome  code-golf  ascii-art  code-golf  code-golf  string  fibonacci  code-golf  math  sequence  code-golf  code-golf  string  palindrome  code-golf  string  code-golf  math  primes  source-layout  code-golf  sequence  binary  integer  code-golf  math  arithmetic  game  code-golf  restricted-source  palindrome  code-golf  restricted-source  palindrome  code-golf  combinatorics  binary  code-golf  string  math  code-golf  ascii-art  number  code-golf  cipher  code-golf  base-conversion  counting  code-golf  sequence  random  classification  code-golf  string  subsequence  code-golf  permutations  code-golf  string  code-golf  string  cipher  code-golf  kolmogorov-complexity  arithmetic  integer  code-golf  quine  markov-chain  code-golf  string  code-golf  code-golf  ascii-art  maze 

3
排列组运算
在n个元素的排列与数字0到n!-1之间存在众所周知的双射,使得排列与相应数字的字典顺序相同。例如,n = 3: 0 <-> (0, 1, 2) 1 <-> (0, 2, 1) 2 <-> (1, 0, 2) 3 <-> (1, 2, 0) 4 <-> (2, 0, 1) 5 <-> (2, 1, 0) 还众所周知,n个元素的排列形成一个组(阶为n!的对称组)-因此,尤其是,将n个元素的一个排列应用于n个元素的第二个排列将产生n个元素的排列。 例如,将(1、0、2)应用于(a,b,c)收益率(b,a,c),因此将(1、0、2)应用于(2、1、0)收益率(1、2 ,0)。 编写一个使用三个整数参数的程序:n,p1和p2;将p1和p2解释为n个元素的排列;将第一个应用于第二个;并输出相应的整数。例如: $ ./perm.sh 3 2 5 3

16
具有自定义标签的二面体D4组组成
二面体组D4D4D_4是正方形的对称组,即通过旋转和反射将正方形变换为自身的移动。它由8个元素组成:旋转0、90、180和270度,以及在水平,垂直和两个对角线上的反射。 图片全部来自Larry Riddle的可爱页面。 挑战在于如何构成这些动作:给定两个动作,输出的动作等同于一个接一个地执行它们。例如,先执行第7步再执行第4步,与执行第5步相同。 请注意,将顺序切换为移动4然后移动7将产生移动6。 结果列于下表;这是D 4组的Cayley表。因此,例如,输入端7 ,4应该产生输出5。D4D4D_47,47,47, 4555 1234567812345678123456782341786534126587412387565867134267583124758624138675423112345678123456781234567823418756341265874123786557681324685731427685421385762431\begin{array}{*{20}{c}} {} & {\begin{array}{*{20}{c}} 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 \\ \end{array} } \\ {\begin{array}{*{20}{c}} 1 \\ 2 \\ 3 \\ 4 \\ 5 \\ 6 \\ 7 \\ 8 \\ \end{array} …

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.