Questions tagged «code-golf»

Code-golf是在最小的源代码字节中解决特定问题的竞赛。

8
共轭排列
大小为n的排列是对前n个正整数的重新排序。(意味着每个整数出现一次且恰好出现一次)。排列可以像更改大小为n的项列表的顺序的函数一样对待。例如 (4 1 2 3) ["a", "b", "c", "d"] = ["d", "a", "b", "c"] 因此,排列可以像函数一样构成。 (4 1 2 3)(2 1 3 4) = (4 2 1 3) 这带来了许多有趣的属性。今天,我们专注于共轭。如果存在置换g和g -1(也为n),则置换y和x(均为n)是共轭的。 x = gyg-1 和GG -1等于身份置换(第一Ñ以正确的顺序编号)。 您的任务是通过标准输入法获取大小相同的两个排列,然后确定它们是否为共轭形式。您应该输出两个一致值之一,如果它们是共轭,则输出一个,如果不是,则另一个。 这是代码高尔夫球,因此答案将以字节计分,而字节越少越好。 关于共轭置换,有许多定理可供您使用,祝您好运和高尔夫愉快。 您可以将输入作为表示上述排列的值的有序容器(1-n或0-n),也可以作为接受有序容器并执行排列的函数。如果选择采用函数,则应将其作为参数,而不要使用预定义的名称。 测试用例 (1) (1) -> True (1 2) (2 1) -> False (2 …

9
清洁高尔夫技巧
您在Clean中打高尔夫球有哪些一般秘诀?请仅发布可用于一般性编码高尔夫球问题的想法,至少应针对清洁运动。 如果您从未听说过Clean,可以在这里找到更多信息。 或者,您可以加入聊天室。
17 code-golf  tips 

27
快速重新整理清单
分组会得到一个列表,并将其拆分为相等的相邻元素的新列表。例如 [1,1,2,1,1] -> [[1,1],[2],[1,1]] 如果再用这些组的长度,则会得到一个新的整数列表 [1,1,2,1,1] -> [2,1,2] 您的任务是编写一个程序,该程序采用一个正整数列表,并在结果列表包含单个元素之前找到可以对其分组和加长的次数。例如,列表[1,2,3,3,2,1]可以重新组合4次 [1,2,3,3,2,1] [1,1,2,1,1] [2,1,2] [1,1,1] [3] 这是 代码高尔夫球,因此答案将以字节计分,而字节越少越好。 测试用例 [1,2,3,3,2,1] -> 4 [1,2,3,4,5,6,7] -> 2 [1,1,1,1,1,1] -> 1 [2] -> 0 [1,2,4] -> 2 [1,2,2,1,1,2] -> 4 [1,2,2,1,1,2,1,2,2] -> 5 [1] -> 0

23
从字符串中删除重复项
受到这个朴素的StackOverflow问题的启发。 这个想法很简单;给定一个String和一个String数组,请从输入String中移除除第一个字符串之外的所有单词实例(忽略大小写),以及可能会留下的其他空白。单词必须匹配输入字符串中的整个单词,而不是单词的一部分。 例如 "A cat called matt sat on a mat and wore a hat A cat called matt sat on a mat and wore a hat", ["cat", "mat"]应该输出"A cat called matt sat on a mat and wore a hat A called matt sat on a and wore a hat" …
17 code-golf  string 

1
数Mo环
循环是一个非常简单的代数结构。它是一个元组(G,+),其中G是一个集合,+是一个二元运算符G×G→G。即+从G中获取两个元素并返回一个新元素。还要求操作员满足两个属性 取消:对于每一个和b在ģ存在唯一的X和ÿ在ģ使得 a + x = b y + a = b 身份:有一个ê在摹使得对于每一个在摹 e + a = a a + e = a 如果您熟悉组的概念,您可能会注意到循环只是一个没有关联属性的组。 循环非常简单,因此人们喜欢添加更多规则以制作更有趣的新结构。一种这样的结构是穆方循环是一个循环,还满足以下四个标识的forall X,ÿ和ž在G ^ z + (x + (z + y)) = ((z + x) + z) + y ((y + z) + x) + z = …

15
帮助我的儿子找到他的信
背景 基于我四岁的孩子从他的拉比那里得到的游戏。 “目标”是按给定顺序(例如)“查找”字母aecdb。会给您一堆字母卡片,例如daceb。您只能按给定的顺序搜索堆栈,尽管是循环的。遇到需要的信件时,可以将其取出。 目的 给定一个顺序和一个堆栈(彼此无重复排列),找到在玩游戏时看到的最高堆栈字母的序列(都是可打印的ASCII)。 分步示例 aecdb给定堆栈,我们需要找到订单daceb: 栈顶d:不是我们想要的(a),因此我们将其添加到序列:中d并旋转以获取栈:acebd。 堆栈顶部a:是的!因此我们将其添加到序列中:da并将其从堆栈中删除:cebd。 栈顶c:不是我们想要的(e),因此我们将其添加到序列:中dac并旋转以获取栈:ebdc。 堆栈顶部e:是的!因此我们将其添加到序列中:dace并将其从堆栈中删除:bdc。 栈顶b:不是我们想要的(c),因此我们将其添加到序列:中daceb并旋转以获取栈:dcb。 栈顶d:不是我们想要的(c),因此我们将其添加到序列:中dacebd并旋转以获取栈:cbd。 堆栈顶部c:是的!因此我们将其添加到序列中:dacebdc并将其从堆栈中删除:bd。 栈顶b:不是我们想要的(d),因此我们将其添加到序列:中dacebdcb并旋转以获取栈:db。 堆栈顶部d:是的!因此我们将其添加到序列中:dacebdcbd并将其从堆栈中删除:b。 堆栈顶部b:是的!因此我们将其添加到序列中:dacebdcbdb并将其从堆栈中删除:。 我们完成了。结果是dacebdcbdb。 参考实施 def letters(target, stack): string = '' while stack: string += stack[0] if stack[0] == target[0]: stack.pop(0) target = target[1:] else: stack.append(stack.pop(0)) return string print letters('aecdb', list('daceb')) 在线尝试! 测试用例 try,yrt→yrtyry 1234,4321→4321432434 ABCDEFGHIJKLMNOPQRSTUVWXYZ,RUAHYKCLQZXEMPBWGDIOTVJNSF→RUAHYKCLQZXEMPBWGDIOTVJNSFRUHYKCLQZXEMPWGDIOTVJNSFRUHYKLQZXEMPWGIOTVJNSFRUHYKLQZXMPWGIOTVJNSRUHYKLQZXMPWIOTVJNSRUYKLQZXMPWOTVNSRUYQZXPWOTVSRUYQZXPWTVSRUYQZXWTVSRUYZXWTVSUYZXWTVUYZXWVYZXWYZXYZ …

23
二进制子串
受到BMO2 2009中第四个问题的启发。 给定正整数n作为输入或参数,请返回其整数表示形式作为正整数n的块形式出现的正整数的数量。 例如13-> 6,因为二进制中的13是1101并且它具有子字符串1101, 110, 101, 11, 10, 1。我们不计算以零开头的二进制数,本身也不计算零。 测试用例 13 -> 6 2008 -> 39 63 -> 6 65 -> 7 850 -> 24 459 -> 23 716 -> 22 425 -> 20 327 -> 16 您可以输入n作为以下任意一项: 一个整数 二进制表示形式的真假值列表 二进制表示形式的字符串 以10为基数的字符串(尽管我不确定为什么有人会这样做) 使您的代码越短越好。
17 code-golf  binary 

6
删除第一个数字
我们都知道,只要有理数以十进制表示,结果要么是终止的,要么是(最终)周期性的。例如,以十进制表示41/42时,结果为 0.9 761904 761904 761904 761904 761904 761904 761904 ... 初始数字序列,0.9然后是761904一遍又一遍的序列。(对此0.9(761904),一种方便的表示法是括号括在重复数字的块中。) 您在此挑战中的目标是采用正有理数,删除重复序列中的第一个数字,然后返回结果有理数。例如,如果对41/42执行此操作,则得到 0.9 61904 761904 761904 761904 761904 761904 761904 ... 或0.9(619047)简称为101/105。 如果有理数具有一个终止的十进制扩展,例如1/4 = 0.25,则什么也不会发生。您可以将1/4 0.250000000...或视为1/4 ,0.249999999...但无论哪种情况,删除重复部分的第一位数字都不会改变数字。 细节 输入是一个正有理数,可以是代表分子和分母的一对正整数,也可以是(如果您选择的语言允许并且想要)某种有理数对象。 输出也是有理数,也可以是两种形式。如果结果是整数,则可以返回整数而不是有理数。 如果以一对数字作为输入,您可能会认为它们是相对质数的。如果产生一对数字作为输出,则必须使它们相对质数。 请注意,您要找到开始重复块的第一个数字。例如,可以将41/42写为,0.97(619047)但不会使2041/2100(带小数点扩展名0.97(190476))成为有效答案。 您可以假设在输入中,第一个周期数字在小数点后,使120/11= 10.909090909...无效输入:(其第一个周期数字可以视为0in 10)。您可以在此类输入上执行任何您喜欢的操作。 这是代码高尔夫:最短的解决方案获胜。 测试用例 41/42 => 101/105 101/105 => 193/210 193/210 => 104/105 104/105 => 19/21 1/3 …

7
电子配置
在原子物理学和量子化学的电子组态是分布的电子的的原子中原子轨道。例如,氖原子的电子构型为1s 2 2s 2 2p 6。(来自维基百科) 挑战 您面临的挑战是获取一个表示元素原子序数的数字,并输出根据Aufbau原理定义的该元素的电子构型。 铁(26)具有电子构型。但是,上标是不必要的。26的输出应该沿着1s2 2s2 2p6 3s2 3p6 3d6 4s21s2 2s2 2p6 3s2 3p6 3d6 4s2。 规格 您不必处理超出范围的任何输入1 <= n <= 118。 你的输出应该是这个样子的测试用例,但你可以(从侧面使用任何非数字字符/字符s,p,d,和f)来分隔不同的轨道。 您必须返回/打印一个包含轨道名称/值/定界符的字符串;您不能简单地返回/打印数组。 您无需处理Aufbau原则的任何例外情况;在有例外的情况下,可以打印“不正确”的配置。 例子: Input -> Valid output -> Invalid output 16 -> 1s2 2s2 2p6 3s2 3p4 -> 1s22s22p63s23p4 16 -> 1s2, …

11
广义五十八序列
改编自这个五十八谜。 背景 检查以下无限序列: 3 3 3 2 3 3 3 2 3 3 3 2 3 3 2 3 3 3 2 ... 假设序列是1索引的。i序列中的th号确定3在ith 之前2和之后的2s 之前有多少个s。因此,由于序列以a开头,3因此序列必须开始,3 3 3 2并且由于序列的开头有3个3s,因此子序列3 3 3 2必须重复自身3次。之后,您会到达,3 3 2因为序列中的第四个数字是2。 FiveThirtyEight谜语要求限制三分之二的比率(在这里我不会破坏),但是您也可以询问index之后的累积比率i。例如在比i=4就是3/1 = 3,在i=15它的11/4 = 2.75。 让我们得到一般 给定数字n,k我们可以创建一个类似的序列,n就像描述的原始序列一样,索引处的数字i确定n在i第k一个之前和之后的第一个之后出现多少个ks。 例子: n=2, k=5 给出顺序 2 2 5 2 2 …

10
HSL到RGB值
RGB(红色绿色蓝色)颜色模型的主要目的是用于感测,表示和显示电子系统(例如电视和计算机)中的图像 HSL(色相饱和度亮度)是一种替代颜色模型,由计算机图形学研究人员在1970年代设计,可以更紧密地与人类视觉感知色彩属性的方式保持一致。 这是RGB和HSL的Wiki文章。图形程序通常在HSL中进行计算,然后转换为大多数屏幕的首选格式:RGB。 任务是编写一个将HSL作为输入并输出RGB的函数/程序。 您可以选择I / O的首选表示形式,只要它们之间是一致的即可。 例如,它们可以是具有3个元素的数组/元组,也可以是具有3个名为h,s和的属性的对象l,但是我将接受其他巧妙的变化,例如将hsl作为整数接收(丢失精度)并输出rgb整数。 可以认为输入的范围和格式是安全的,您都可以决定两者。我强烈建议该范围,0-1 0-1 0-1或者0-360 0-100 0-100对于hsl,0-1 0-1 0-1或者0-255 0-255 0-255对于rgb。 每个答案都必须同时指定以上两者,并且如果您对它们特别满意,请在答案中放入各种变化形式,即使它们的字符数少于其他变体形式也是如此。将最小的放在上面。 伪测试用例0-360 0-100 0-100→0-255 0-255 0-255 h s l → r g b 0 0 0 → 0 0 0 90 56 17 → 43 68 19 202 19 39 → 81 104 …

30
输出语言名称乘以字符数[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 2年前关闭。 挑战: 您的任务是使用任何一种语言来输出该语言的名称乘以其名称中字符的数量。 使用该语言的通用名称或缩写。 如果一种语言有多个版本,则无需包含版本号。 大写很重要。 例子: PHP -> PHPPHPPHP Java -> JavaJavaJavaJava C++ -> C++C++C++ Python 3 -> PythonPythonPythonPythonPythonPython JavaScript -> JavaScriptJavaScriptJavaScriptJavaScriptJavaScriptJavaScriptJavaScriptJavaScriptJavaScriptJavaScript

10
枚举带约束的所有可能的整数网格
问题 考虑非负整数的3×3正方形网格。对于每一行i,整数的总和设置为r_i。同样,对于每一列j,该列中的整数总和设置为c_j。 任务是编写代码,以在给定行和列总和约束的情况下枚举所有可能的不同整数分配给网格。您的代码应该一次输出一个分配。 输入项 您的代码应使用3个非负整数指定行约束,并使用3个非负整数指定列约束。您可以假设它们是有效的,即,总和或行约束等于列约束之和。您的代码可以通过任何方便的方式执行此操作。 输出量 您的代码应以您选择的任何人类可读格式输出其计算的不同2D网格。当然,越漂亮越好。输出中不得包含重复的网格。 例 如果所有行和列约束都完全相同1,则只有6不同的可能性。对于第一行,您可以1在前三列中的任何一列中输入a,对于第二行,现在有2替代方法,最后一行现在完全由前两行确定。网格中的其他所有内容都应设置为0。 说输入是2 1 0针对行还是1 1 1针对列。使用APL的可爱输出格式,可能的整数网格为: ┌─────┬─────┬─────┐ │0 1 1│1 0 1│1 1 0│ │1 0 0│0 1 0│0 0 1│ │0 0 0│0 0 0│0 0 0│ └─────┴─────┴─────┘ 现在说输入是1 2 3行和3 2 1列的。可能的整数网格为: ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ │0 0 1│0 0 1│0 0 1│0 …

9
纸张和信封尺寸
任务 给定字母(A,B,C)和数字(0-10),以格式输出以毫米为单位的匹配标准纸张尺寸(A和B系列)或匹配标准信封尺寸(C系列)的尺寸aaaa x bbbb其中aaaa和bbbb是根据ISO216(A和B系列)或ISO296(C系列)以毫米为单位的宽度和高度测量值 为了使事情变得更容易,我将引用维基百科的纸张尺寸表 ISO paper sizes in portrait view Format A series B series C series Size mm × mm mm × mm mm × mm 0 841 × 1189 1000 × 1414 917 × 1297 1 594 × 841 707 × 1000 648 × 917 2 420 …
17 code-golf 

3
画直到你掉落
在《龙与地下城》第5版(以及大多数其他版本)中,存在一个称为“ 许多东西的甲板”的魔术物品。这是一个令人难以置信的强大项目,因为所有卡牌都有很强的正面或负面影响。要使用套牌,一个角色先声明一个数字,然后抽取最多该数量的纸牌,并按顺序应用效果。如果角色没有绘制他们声明的所有卡牌,并且距离绘制最后一张卡牌至少有1个小时,则将自动为它们绘制其余卡牌并应用效果。抽出每张卡后,将其返回卡座,然后将卡座洗牌。 以下是绘制每张卡1的效果的列表: 平衡:您的思维遭受痛苦的改变,导致您的对齐方式发生变化。合法变成混乱,善变成邪恶,反之亦然。如果您确实是中立或不结盟,则此卡对您没有影响。 彗星:如果您单手击败遇到的下一个敌对怪物或一组怪物,您的经验值就足以获得一个等级。否则,该卡无效。 Donjon:您消失并陷入超维领域的悬浮动画状态。失踪时,您所穿着和携带的所有物品都会留在您所占据的空间中。您将一直被囚禁,直到被发现并从球体中移出为止。您无法通过任何占卜术来找到自己的位置,但是许愿咒语可以揭示您监狱的位置。您不再抽奖牌。 Euryale。卡的美杜莎般的容貌会诅咒您。以这种方式被诅咒时,豁免检定得-2减罚。只有神或命运卡的魔咒才能结束这个诅咒。 命运:现实的结构重新解开并旋转,使您可以避免或擦除一个事件,好像从未发生过一样。您可以在抽出卡片后或死亡前的任何其他时间使用卡片的魔力。 烈焰:强大的魔鬼成为你的敌人。魔鬼寻找你的废墟,困扰着你的生活,在试图杀死你之前先品尝一下痛苦。这种仇恨一直持续到你或魔鬼死亡为止。 愚人:您损失10,000 XP,丢弃此卡,然后再次从牌组中抽奖,并将两次抽奖都算作您声明的抽奖之一。如果失去那么多的XP会导致您失去一个等级,那么您损失的数量将使您只有足够的XP来维持您的等级。 宝石:二十五个珠宝,每个价值2,000 gp,五十个珠宝,每个价值1,000 gp,出现在您的脚下。 白痴:永久降低你的智力1d4 + 1(最低分数为1)。您可以在声明的抽奖之外再抽一张卡。 小丑(Jester):您获得10,000 XP,或者您可以在宣告的抽奖之外再抽两张牌。拔出后将其丢弃。 钥匙:熟练的稀有或稀有魔法武器会出现在您的手中。GM选择武器。 骑士:您将获得一名4级战斗机的服务,该战斗机出现在您选择的30英尺范围内的空间中。战斗机与您属于同一种族,忠实地为您服务直至死亡,并相信命运将他或她吸引了。您可以控制此角色。 月球:您被授予施放愿望咒语1d3次的能力。 盗贼:GM选择的非玩家角色对您产生敌意。在NPC或其他人透露身份之前,您不知道新敌人的身份。绝望的咒语或神圣的干预,无不可以结束NPC对您的敌意。 废墟:您拥有或拥有的所有形式的财富(魔术物品除外)都将丢失给您。便携式财产消失了。您所拥有的企业,建筑物和土地的损失方式至少会改变现实。任何证明您应拥有此卡遗失物品的文件也将消失。 骷髅。您召唤了一个死亡的化身-穿着破烂的黑色长袍的幽灵般人形骷髅,身上戴着光谱镰刀。它会出现在您选择的10英尺范围内的通用汽车选择的空间中并向您发起攻击,并警告所有其他人您必须独自赢得这场战斗。化身一直战斗直到死亡或它的生命值降低到0,然后消失。如果有人试图帮助您,则助手会召唤自己的死亡化身。被死亡的化身杀死的生物无法恢复生命。 星星:将一项能力得分提高2。得分可以超过20,但不能超过24。 太阳:您获得50,000 XP,一个奇妙的物品(由GM随机决定)出现在您的手中。 利爪:您穿戴或携带的每件魔术物品都会分解。您拥有的文物不会被破坏,但会消失。 王座:您会说服技能熟练,并且使用该技能进行的支票会为您的熟练度奖金加倍。此外,您还获得了世界上某个小地方的合法所有权。但是,当前要塞已由怪物掌握,您必须先清除该怪物,然后才能将其视为自己的要塞。 维齐尔(Vizier):您可以在选择这张卡的一年内的任何时候选择冥想中的一个问题,并在心理上得到该问题的真实答案。除了信息,答案还可以帮助您解决令人困惑的问题或其他难题。换句话说,知识带有如何应用知识的智慧。 虚空:这张黑牌表示灾难。您的灵魂是从您的身体中抽出来的,包含在通用汽车选择的地方的物体中。一个或多个强大的生物守护着这个地方。当您的灵魂以这种方式被困住时,您的身体就无法工作了。愿望咒语无法恢复您的灵魂,但该咒语揭示了持有该愿望的物体的位置。您不再抽奖牌。 (卡说明从D&D第5版SRD复制) 一些特别愚蠢的玩家会立即抽出大量纸牌,希望获得至少一个强大的恩赐来平衡有害的纸牌。如人们所料,这通常会导致角色死亡或无法继续抽牌。 挑战 模拟从22张卡片中的许多事物重复进行的抽奖,输出每张抽奖卡,仅在满足以下条件之一时停止: 角色死亡(通过绘制Skull或绘制Flames或Rogue之后绘制5张牌,而没有The Fates或Moon active 2的好处)。 该角色无法绘制更多的牌(通过Donjon,Talons,The Void 3的作用,或者该角色的智力得分通过白痴4降至3或更低)。 规则 角色的对齐方式,等级,XP和除甲板以外的所有物品均无关紧要。 角色的智力得分从10开始。 角色的智力或对愿望的储存没有最大限制。 命运的使用不会叠加。 该愿望法术有1个多3造成的字符永远无法使用的机会,希望再次法术,除了定期的效果。如果发生这种情况,角色将无法再使用该咒语来抵消Flames,Rogue或Skull- 命运的力量是他们唯一的手段。 …
17 code-golf  random  game 

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.