Questions tagged «code-golf»

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

10
具有不可区分项目的排列
给定一个整数列表,输出整数的排列数量,其中不可区分的排列计数一次。如果有n整数,并且每组不可区分的数字都有length n_i,则为n! / (n_1! * n_2! * ...) 规则 输入将以某种形式的列表作为具有1到12个非负整数的函数或程序的参数。 输出将是打印或返回如上所述的排列数量。 没有标准漏洞或内置函数(生成排列,组合等)。允许析因。 测试用例 输入: 1, 3000, 2, 2, 8 1, 1, 1 2, 4, 3, 2, 3, 4, 4, 4, 4, 4, 1, 1 输出: 60 1 83160

3
哪些开关打开?
介绍 您正与您的同事坐在一起,共进午餐,并向他/她吹嘘您正在从事的最新和据说最大的项目。他/她厌倦了不断展现的自我主义情绪,给您一个挑战,以至于您闭嘴。身为一个利己,乐于运气的人,您当然会接受(因为您必须接受每一个挑战)。的挑战,因为他/她解释是,给定一个输入含有1个或多个的每个字符的文本块的!@#$^&*,输出在任何合理的格式的开关(ES)是/的坐标是“开”。 根据您的同事,开关是$,并且仅当满足以下条件中的至少一个时,开关才被分类为“打开”: 它被所有人包围^。所以... ^^^ ^$^ ^^^ 导致“打开”开关。 它被所有人包围&。所以... &&& &$& &&& 导致“打开”开关。 它至少在两侧完全被覆盖*。例如, *** &$& *** 导致“打开”开关,但是 &*& &$& &*& 不会,因为开关没有完全用*s 覆盖任何两侧。 周围的任何角落至少有1个!和/或1个@。如果这两个都不在角落,则不算在内。所以... !&& ^$@ @&! 由于至少有1个!和/或@至少有一个拐角(在上述情况下,有2个有效!s和1个有效@的3个拐角),因此会导致“接通”开关。和... &!& ^$@ ^!& 确实不,虽然有2 !秒和1 @中,由于没有一个是在任何角部。 1个或多个#是不上任何周围的开关侧,除非至少1 &包围开关。换句话说,如果#一个边上至少存在1 个,则除非存在一个,否则它会覆盖所有其他规则&。因此: #&* *$* !** 会导致“ on”开关(尽管#存在),因为&该开关周围有a ,并且遵循上述规则中的至少一项。但是,如果没有这样的感叹号: #&* *$* *** 开关将关闭,因为它不遵循以上规则中的至少一项。因此,即使开关可能被a #和a 包围,&除非遵循这些规则中的一个或多个规则,否则它仍将处于关闭状态。同样,要使开关有效,s与s 之间必须始终有> …
12 code-golf  string 

2
做草编
Strawpolls很棒,我们一直在聊天中使用它们来获取对事物的意见。但是制作它们有点烦人,因为您需要使用网络浏览器来制作它们,而且每个人都知道我只能通过SE API和curl访问PPCG。因此,我希望您编写一些代码,这些代码使用Strawpoll的API通过给定的选项制作秸秆。 眼镜 输入任何合理格式的选项列表作为字符串,标题也为字符串作为输入。然后,使用API​​使用该标题和这些选项制作秸秆,然后输出网址。 不允许使用倍数,应该执行重复检查,并且不需要验证码。 例 "My Awesome Poll" ["option 1", "I like pies", "I also like cakes"] 输出:http : //strawpoll.me/7275997 这是代码高尔夫球,因此以字节为单位的最短代码胜出!

9
“逐步”字符串
您必须编写一个程序或函数来创建一个“阶梯式”字符串。这是您“逐步修饰”字符串的方法: 对于字符串中的每个字符: 如果字符是大写或小写的元音,不包括“ y”,则输出该字符,然后将字符串的其余部分向上移动一列。 如果字符是一个空格或制表符,其输出然后将字符串的其余部分向下一个科拉姆。 如果字符都不存在,则正常输出。 IO可以采用任何合理的格式。输入将不包含任何换行符。如果需要,可以删除任何尾随空格。 如果您选择返回字符串而不是打印字符串,还请包括一个简短的程序,该程序将打印您的字符串,以便使其可视化。这不是强制性的,也不会影响您的字节数。对于不了解高尔夫或esolangs(例如我)的用户来说,这只是一种方便,他们可以验证输出或修改代码。 样本IO: “ bcdef ghijkl”的输出: f jkl bcde ghi “编程难题和代码高尔夫球”的输出: lf -Go s nd de ng zzle A Co mmi Pu gra Pro “ Abcdefghijklmnopqrstuvwxyz”的输出: vwxyz pqrstu jklmno fghi bcde A 通常,这是代码高尔夫球,因此以字节为单位的最短答案会获胜。
12 code-golf  string 

4
解线性方程
这个挑战,但具有更好的规格。 规格 您的程序将采用包含单个变量的线性方程式,x并输出的值x。 输入/解析 输入将仅包含数字,运算符,括号(())x,和一个=符号(这意味着没有空格)。 括号将始终保持平衡。 总会有至少1个x。一个x可以通过许多之前。 所有方程式都会精确地得到一个结果。 甲数可以通过以下步骤来定义。可以用正则表达式定义一个数字:-?(\d+(\.\d+)?|\.\d+)。 如果您不讲正则表达式:将数字定义为 0-9 它可能-在开始时有一个表示否定 然后可能会有一些数字。如果没有任何数字,将有一个小数点 如果存在小数点,则至少要跟一位数字 最大的数字/值将取决于您的语言能力。 一个运营商是任何的:+-*/,他们将永远数字之间出现,或括号 (5)(5)为了简单起见,这意味着不是有效的输入。 括号内始终始终包含有效的表达式(数字和/或运算符的有效组合)。“平衡”括号的定义是,每个括号(都会有一个关联的结尾) 评价 应该遵循操作顺序,并且优先级从高到低依次为: 括号(最深嵌套) 乘法与除法 加减法 如果出现两个具有相同优先级的运算符,则您应该选择向左->向右移动 输出量 您应该以某种方式输出结果。如果您不只是输出数字结果,请在答案中阐明输出的输出方式。您的输出格式应该一致。输出可能是十进制,但始终是有理数,精度受限于您语言的精度。仅当您的语言不支持浮点算术时,才不需要支持它。 规则 允许琐碎处理此任务的内置函数,但是您必须清楚[uses built-in]地在答案的标题中添加清楚。这使您的答案免于获胜 “使该任务变得琐碎的内置程序”是以下任何一种: 吸收方程式并输出a /变量值的东西 可以完全简化方程式的东西 使用eval或相关功能进行大量解析。eval如果函数和相关函数用于(只需对输入进行最少的修改)求解线性方程,则不允许使用和相关函数。 如有疑问,请在评论中提问。 允许解析方程式的内置程序 例子 3+4=x 7 4+x=5 1 3+3*3=x 12 3x-4=7+2x 11 3--1=x 4 3*(2+4x)=7x-4 -2 1.2+2.3x=5.8 …

7
根据依赖性对项目进行排序
目标 对项目列表进行排序,确保每个项目都在指定的依赖项之后列出。 输入值 整数数组的数组,其中每个整数指定该项目必须紧随其后的另一个项目的从0开始或从1开始的索引。输入可以是数组或字符串或任何其他人类可读的内容。 例如,基于0的输入: [ [ 2 ], // item 0 comes after item 2 [ 0, 3 ], // item 1 comes after item 0 and 3 [ ], // item 2 comes anywhere [ 2 ] // item 3 comes after item 2 ] 假设没有循环依赖关系,则始终至少有一个有效顺序。 输出量 依依依顺序排列的数字。模棱两可的顺序不必是确定性的。输出可以是数组或文本或其他任何人类可读的内容。 …

2
单词搜索助手
我一直在做词搜索最近,我认为这将是如此,如果所有的单词阅读更容易从左向右。但是重写所有行都需要很大的精力!因此,我正在邀请代码高尔夫球手提供帮助。 (免责声明:以上报道可能不太准确。) 您的代码将采用一个矩形网格,并在两个方向上输出通过它的所有线。 输出必须包含网格的所有8个旋转(基数和主对角线),从上到下,从左到右“读取”。(这意味着每个“行”都将重复-一次向前,一次向后。) 行分隔可以是空格或换行符。如果选择空格,则网格旋转分隔必须是换行符;否则,网格旋转分割必须是两个换行符。 输入示例(以字符,多行字符串或其他合理格式组成的数组) ABCDE FGHIJ KLMNO PQRST 输出示例(将第一个选项用于除法) ABCDE FGHIJ KLMNO PQRST E DJ CIO BHNT AGMS FLR KQ P EJOT DINS CHMR BGLQ AFKP T OS JNR EIMQ DHLP CGK BF A TSRQP ONMLK JIHGF EDBCA P QK RLF SMGA TNHB OIC JD E PKFA QLGB …

7
在超立方体的边缘
您的工作将是编写一个函数或程序,该函数或程序将使用整数n>0作为输入并输出n三维超立方体的边缘列表。在图论中,边定义为连接的两个顶点(或顶点,如果愿意)。 例子1 一维超立方体是一条线,具有两个顶点,我们将其称为a和b。 因此,输出将是: [[a, b]] 例子2 4维超立方体(或tesseract)由32条边组成,其图形如下所示 和输出看起来像这样 [[a, b], [a, c], [a, e], [a, i], [b, d], [b, f], [b, j], [c, d], [c, g], [c, k], [d, h], [d, l], [e, f], [e, g], [e, m], [f, h], [f, n], [g, h], [g, o], [h, p], [i, …

3
半反转二进制字符串
这是我的Puzzling.SE问题的后续问题:我问是否有一个函数f将布尔字符串映射到布尔字符串,以便所有输入字符串b的f(f(b))= reverse(b)。(通过reverse,我的意思是反转位顺序的函数。) 上面的链接包含一个很好的肯定答案,并有一个很好的f''证明,但是您可能想在看之前自己考虑一下问题。 用尽可能少的字节实现这种功能f。 您可以从STDIN读取输入,也可以采用函数参数。并将结果字符串写入STDOUT或将其返回。 无论哪种方式,您都可以使用两个不同字节的实际字符串或您选择的字符(例如0和1,或\x00和\x01),或使用true和falsy值的数组/列表。选择两个值并坚持使用。 单个应用f 的结果必须是二进制字符串本身:没有像b -> if b starts with 'x' then reverse(b[1:]) else 'x' + b... 这样的愚蠢答案。 你的功能应该是合计的 ; 特别是,输入可以是空字符串,也可以是一比特长,等等。字符串的长度没有上限。 它也应该是纯净的:在函数调用之间不要保留任何全局状态。输入字符串必须完全确定输出字符串。
12 code-golf  string 

1
这个单词有多少个字母?
受项目Euler#17的启发,这是您的挑战。编写一个完整的程序或函数,以数字作为输入,然后打印或返回用英语计算该数字(包括该数字在内)需要多少个字母(从一个开始)。您不能包含空格,逗号或连字符,但应包含单词and。例如。342拼写为:Three Hundred and Forty-Two。这是23个字母长的字母。 您的输入将是一个正整数。您不必处理无效的输入。不允许将数字转换为英语的内置程序或库。 这是有关如何拼写数字的所有规则。(注意:我意识到有些人对数字的拼写使用了不同的规则。这只是本次挑战的官方规则) 1至20 一,二,三,四,五,六,七,八,九,十,十一,十二,十三,十四,十五,十六,十七,十八,十九,二十 21至99 加入这些: 二十,三十,四十,五十,六十,七十,八十,九十 这些: -一,-二,-三,-四,-五,-六,-七,-八,-九, 请注意,四个有一个u,但四十个没有! 例子: 53: Fifty-three 60: sixty 72: seventy-two 99: ninety-nine 100至999 写出几百个(一百个,两百个,三百个,等等),一个“ 和 ”,以及上面其余的数字。该和不计入您的来信得分。 例子: 101: One hundred and one 116: One hundred and sixteen 144: One hundred and forty-four 212: Two hundred and twelve 621: Six …
12 code-golf  math  number 

3
骑士和小刀
这是代码高尔夫球。 在这个挑战中,我们将编写解决“ 骑士与刀 ”难题的程序/功能。 背景 您发现自己在一个岛上……等等。岛上除您以外的每个人都是骑士或is 夫。 骑士只能发表真实的声明。 刀只能做出虚假陈述。 我不想严格定义“语句”,但是我们要说一个语句是“ true”或“ false”的任何内容。请注意,这不包括矛盾的句子。 为了这个挑战,您将遇到一群岛民。他们会向您陈述。 您的任务是确定谁是骑士和谁是K夫。 输入: 您将(以任何合理的格式)获得以下信息: 在场人员清单。它们将以大写字母字符“ AZ”命名。由此所施加的人数限制不会被超过。 每个人的陈述。有关此的重要详细信息,请参见下文。 输出量 然后,您将输出(以任何合理的格式)每个人的身份。例如,如果有玩家A B C D并且A是骑士,而其他人是骑士,则可以输出 A: 1 B: 0 C: 0 D: 0 重要细节: 大写字母字符AZ表示岛民。 字符0(零)和1(一)分别表示“刀”和“骑士”。(您可以指定任意两个其他非AZ字符) 在场的每个岛民都可以发表任何自然数的陈述,或者可以选择不说话。 普通逻辑运算符可以在语句(IS *,AND,OR,NOT)中使用。最重要的是,可以使用De Morgan的法律和条件。下面是如何在口语难题中呈现它们的示例,然后是如何将其输入到程序中的示例。 (*在更多技术说明上。“ IS”运算符实际上用作遏制(这不是逻辑运算符)。当我说“ A是骑士”时,我的意思是“ A是该集合的成员。 Knights”。使用的真正运算符为'ϵ'。为简单起见,我们将改用'='。) 我使用以下方法(只要合理且一致,您可以使用任何方法): ^ 和 v 要么 = …
12 code-golf 

6
二进制搜索的步骤数
给定正整数输入,输出通过从1开始的二进制搜索找到输入所需的步数。 我们正在模拟对作为输入的整数的二进制搜索,其中模拟的搜索者可以反复猜测一个整数,并告知该整数是太高,太低还是正确。查找整数的策略如下: 令n为我们要查找的输入整数。 从1的猜测开始。(对于每个猜测,请增加步数(无论是否正确),如果猜测正确,则立即停止并输出总步数。) 反复将猜测加倍,直到猜测大于n(目标数字)。(或者,如果它是正确的,但是上面已经提到的我们的正确猜测规则已经涵盖了这一点。) 现在,设置大于n的2的幂的上限(即,刚猜到的数字),并在其正下方设置2的幂的下限。 反复猜测上限和下限的平均值(四舍五入)。如果它太高,则将其设置为上限。如果它太低,则将其设置为下限。此过程可确保最终导致正确的猜测。 这是一个示例,输入n = 21: 1 -> 2 -> 4 -> 8 -> 16 -> 32 -> 24 -> 20 -> 22 -> 21 \__________________________/ repeated doubling \________________________/ repeated averaging 由于这是code-golf,因此以字节为单位的最短代码将获胜。 以下是从n = 1到n = 100的所有输出: 1 2 4 3 6 5 6 4 8 …

21
顺序乘法
您的目标是编写一个接受输入的程序,并在将其链接在一起时N执行“顺序乘法”。您可能会问,什么是顺序乘法?这是一个序列,其种子a定义如下: f(0) = a f(n+1) = f(n)*(f(n)-1) 因此,让a = 5。因此,f(0) = 5,f(1) = f(0)*(f(0)-1) = 5*4 = 20,和f(2) = f(1)*(f(1)-1) = 20*19 = 380。 如果您的程序是ABC,则ABC应该接受输入a和输出f(1)。程序ABCABC应该输出f(2),等等。您的程序系列应该只输入一次,只输出一次。 这是一个代码高尔夫球,因此以字节为单位的最短程序获胜。禁止出现标准漏洞。

4
帮助重新计算您的代表!
几个月前,我们在meta上进行了讨论,讨论如何提高因问题投票而获得的声誉。这是我们目前的投票信誉系统的基础:1 问题投票U值得5个声望。 回答投票u值得10个声誉。 问题或答案不满意d的人值得-2声望。 对于新系统,已经有许多不同的建议,但是当前最受欢迎的与上面的相同,但是问题投票的比例扩大到+10个代表。这项挑战是要计算出安装该系统后您将获得多少代表。 让我们来看一个例子。如果投票活动为UUUUuuuuUUUUUduuudUU,则在当前系统下,您的收入为121: U x 4 x 5 = 20 = 20 u x 4 x 10 = 40 = 60 U x 5 x 5 = 25 = 85 d x 1 x -2 = -2 = 83 u x 3 x 10 = 30 = …

4
所有适合字符串的数字
编写一个使用正整数N的程序或函数。输出所有可以使用数字(),小数点()和负号()精确写成N个字符的十进制数的列表。0123456789.- 例如,一些数字,这将是在N = 4输出列表是1337,3.14,.999,-789,-2.7,和-.09。 数字应以正常方式书写,但应尽可能短。这表示: 如果数字不是整数,则仅应包括小数点。 例如45.0,45.应该写成普通的45 -45.00 应该写成 -45 小数点左边不应有前导零。 03并003应为书面3,但30并300都很好,因为它们是 0.3并且00.3应该写成刚.3 -03 应该写成 -3 -0.3 应该写成 -.3 小数点右边不应有尾随零 .50并且.500应写为.5 900.090 应该写成 900.09 最后两个规则的例外是零本身,应始终将其写为plain0。 +请勿使用正号(),因为它们会不必要地加长数字。 另请注意,负号(-)不应用作减号。它只能作为小于零的数字的第一个字符出现。 格式化 数字输出列表的顺序无关紧要。它可以是上升,下降或完全混合。仅存在所有可以用N个字符写入的不同数字的问题。 列表可以使用空格,换行符,逗号或数字之间的其他某种形式的合理格式设置,只要条件保持一致即可。前括号和后括号(或类似的括号)都可以,但数字引号之类的东西却不是。(即,不要在输出中明显混淆字符串和整数/浮点数。) 例如,当N = 1时,一些有效输出将是: 0 1 2 3 4 5 6 7 8 9 [1, 2, 3, 4, 5, 6, 7, …

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.