Questions tagged «code-golf»

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

3
二维平面上的最长路径
为您提供了一组任意的,任意的2d整数笛卡尔坐标:例如[[(0,0),(0,1),(1,0)] 从这组坐标中找到可能的最长路径,并限制只能“访问”一次坐标。(而且您不会“回到”开始时的坐标)。 重要: 您不能“越过”坐标或其周围。例如,在最后一个音符示例(矩形)中,您不能不访问C就从D移到A (这可能是重新访问,从而使找到的长度无效)。@FryAmTheEggman指出了这一点。 函数输入:二维笛卡尔坐标数组 函数输出:仅最大长度 获胜者: 最短代码获胜,没有保留被禁止(不是时空效率最高的) 例子 1:在上面所示的情况下,没有两次“访问”坐标的最长路径是A-> B-> O(或OBA或BAO),并且路径长度是sqrt(2)+ 1 = 2.414 2:在上述情况下,两次没有坐标“访问”的最长路径是ABOC(显然是COBA,OCAB等),对于所示的单位平方,它计算为sqrt(2)+ sqrt(2)+ 1 = 3.828。 注意:这是一个额外的测试用例,它不如前两个示例那么简单。这是由6个坐标组成的矩形: 在这里,最长的路径是:A-> E-> C-> O-> D-> B,即8.7147 (最大可能的对角线走过且没有横越任何边)

6
缩写的泛化
给定单词列表及其缩写的输入,输出可以形成缩写的模式。 让我们以输入的示例为例 potato ptao puzzle pzze 作为一个例子(即,缩写potatoIS ptao,和缩写puzzle是pzze)。 考虑到所有可能的方法来获得ptao从potato。一种可能的方法是采用第一,第三,第四和第六个字母,我们将其称为 1346。但自从t和o这个词出现多次,还有其他多种可能的方式来产生ptao由potato:1546,1342,和1542。 同样,该说明pzze可从产生puzzle任何的1336, 1346,1436,1446。这两个缩写唯一的共同之处是1346; 因此,该输入必须是此输入的输出。如果有多种可能的模式,则可以输出其中的任何一个,一些或全部(至少一个)。 您可以假设: 输入的单词和缩写仅包含小写字母。 输入中至少有一个单词/缩写对。 每个缩写都有可能由其对应的单词构成。 总是会有至少一个模式构成每个缩写。 每个单词的最大长度为9个字符。 输入可以视为以下任意一项: 二维数组/列表/元组数组等 [[word, abbr], [word, abbr], ...] 平面一维数组/列表 [word, abbr, word, abbr, ...] 单个字符串,由非小写字母的任何单个字符分隔 "word abbr word abbr" 哈希/关联数组/等 {word => abbr, word => abbr, ...} 在这些输入选项中的任何一个中,也都可以交换单词/缩写的顺序(请在您的帖子中完整描述输入格式)。 输出可以是单个数字,由非数字分隔的字符串或数组/列表/元组/等。数字。 由于这是code-golf,因此以字节为单位的最短代码将获胜。 测试用例(请记住,如果多个模式都能工作,则仅需要输出≥1个结果): In …
14 code-golf  string 

5
找到海岸线
您的任务是找到ASCII地图中提供的岛屿地图的海岸线长度。输入地图将由1个或多个#表示土地的字符以及一些表示水的空间组成。海岸线被认为是水陆之间的任何边缘,包括内陆湖泊和岛屿。 您的解决方案应该是一个完整的程序,该程序可以读取文件,字符串或字符串数​​组,并向屏幕或stdout输出单个整数。每条输入行可以具有前导或尾随空格,以及零个或多个散列字符。假定地图的边界是空间(水)。 线的长度可以不同。 例子: Input: ## ## Output: 8 Input: ### ### ##### # ## Output: 26 Input: ##### # # # # # # # ##### Output: 36 这是代码高尔夫球,因此最小的字节数获胜。

2
杂货店微管理
您是一家时尚的新杂货店Half Foods的员工,这是感恩节 圣诞节复活节的前一天。由于商店将挤满顾客争抢食物,因此商店需要交通管理人员将每个人都送到适当的生产线。懒惰,您想使它自动化,以便您可以在所有人都吃掉所有火鸡 火腿之前就去熟食店。但是,随身携带的只是手机,在手机上编写长程序确实是一件很痛苦的事-因此您需要淘汰忍者代码高尔夫技能。 挑战 让我们在二维网格上可视化杂货店。这是要剖析的示例网格: e s s s Y # # #s # #s # #s # #s # #s # #s #s #s # #3 #1 #4 # x x x x 网格以开头e,代表商店其余部分的“插座”。每一代,网格中的所有出口都在s下面直接产生一个购物者()。购物者每一代都向下移动,直到他们到达您(Y)。当购物者到达与您相同的行时,您必须将其传送到购物者最少的行的开头。购物者将与一起进入行时,立即移动到行中Y,两者之间没有生成。这些行由#s 表示-s之后的列#是一行。购物者下到行尾(由exit表示x),然后变成介于1和之间的随机数5。每一代,您都必须减少购物者的数量1-当购物者到达时0,他们已经完成结帐并离开商店。 给定这样的网格输入,输出下一代杂货店(同时将所有购物者放下,将购物者重定向,并在完成后让他们离开)。 样本 输入: e Y # # # # # # # # …
14 code-golf  string  grid 

11
正整数的严格分区
OEIS A000009计算整数的严格分区数。甲严格分区一个非负整数的n是一组正整数(因此没有重复是允许的,并且顺序无关紧要),其总和n。 例如,5有三个严格分区:5,4,1,和3,2。 10有十个分区: 10 9,1 8,2 7,3 6,4 7,2,1 6,3,1 5,4,1 5,3,2 4,3,2,1 挑战 给定一个非负整数n<1000,输出其具有的严格分区数。 测试用例: 0 -> 1 42 -> 1426 这是OEIS中从0到55的严格分区号的列表: [1,1,1,2,2,3,4,5,6,8,10,12,15,18,22,27,32,38,46,54,64,76,89,104,122,142,165,192,222,256,296,340,390,448,512,585,668,760,864,982,1113,1260,1426,1610,1816,2048,2304,2590,2910,3264,3658,4097,4582,5120,5718,6378] 这是代码高尔夫球,因此以字节为单位的最短解决方案为准。


10
将英语转换为没有内置或库的数字
这个挑战与其他挑战相似,但是我提出了一个限制(请参阅下面的黑体字),我认为这会造成很大的差异,并且(我希望)也很有趣。 挑战 以任何编程语言编写一个程序或函数,该程序或函数采用n不超过正整数的英语名称作为输入作为100返回n值。 禁止使用标准漏洞,并且您不能使用已经执行此操作的任何内置函数,外部工具或库。 以字节为单位的最短源代码获胜。 测试 在所有input->output情况下: one -> 1 two -> 2 three -> 3 four -> 4 five -> 5 six -> 6 seven -> 7 eight -> 8 nine -> 9 ten -> 10 eleven -> 11 twelve -> 12 thirteen -> 13 fourteen -> 14 fifteen …

18
字符串的十进制乘法
给定2个输入(一个字符串和一个十进制数字),输出字符串乘以该数字。 问题是数字可以是浮点数或整数。 您应该先输出字符串floor(n)时间,然后再输出前floor((n-floor(n))*len(string))几个字母。 其他说明: 输入并不总是浮点数,可能是整数。因此1.5、1和1.0都是可能的。不过,它将始终以10为底,如果您希望例外,请发表评论。 输入的字符串可能包含空格,引号和其他字符。没有换行符或控制字符。 没有内置的直接字符串重复功能,甚至'a'*5不允许像python这样的字符串乘法。但是,允许添加字符串。 测试用例: 逗号和空格分隔输入。 test case, 1 -> test case case, 2.5 -> casecaseca (will add more later), 0.3333 -> (will(space) cats >= dogs, 0.5 -> cats > 最后说明: 我看到许多使用内置字符串乘法或重复功能的答案。这不是允许的。@VTC的答案是有效的,因为它不会乘以字符串,而只是乘以浮点输入。因此,最终的规则是:如果直接将字符串相乘,则无法执行。
14 code-golf  string 

9
可索引的奎因
这项挑战的目标是制作一个程序,输出其源代码的第n个字母,其中n作为程序的输入。像大多数quine挑战一样,不允许您将源代码读取为文件或使用任何内置的quine函数。 输入值 整数0 <= n <len(程序)。 输出量 程序的第n个字符(不是字节)。 获奖 像大多数代码高尔夫问题一样,您可以使用最少的字节数来解决挑战,从而赢得挑战。 奖金 -5%如果您的程序支持负索引python样式(例如-1将是程序的最后一个字符)。如果与以下奖金一起使用,您的范围必须支持负指数。 -20%如果您的程序除了上述要求之外,还支持范围作为输入(任何格式)。 -25%如果您的程序同时完成了两个奖励。 排行榜 这是一个堆栈片段,用于按语言生成常规排行榜和获胜者概述。 为了确保您的答案显示出来,请使用以下Markdown模板以标题开头。 # Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,可以将旧分数保留在标题中,方法是将它们打掉。例如: # Ruby, <s>104</s> <s>101</s> 96 bytes 如果您想在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: # Perl, 43 + 2 (-p flag) = 45 bytes 您还可以将语言名称设置为链接,然后该链接将显示在页首横幅代码段中: # [><>](http://esolangs.org/wiki/Fish), 121 bytes 显示代码段 var QUESTION_ID=70727,OVERRIDE_USER=32700;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/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 …
14 code-golf  quine 

6
时钟(纸牌游戏)
时钟是一种有趣的纸牌游戏,因为它不需要任何技巧。它是单人游戏,并且相同的纸牌配置总是会导致获胜或失败。在这一挑战中,您需要确定给定的卡配置是赢还是输。您可以在这里玩游戏。 游戏的玩法如下: 十三张纸牌面朝下发出。每堆从0到12编号。 我们将第0个桩设为当前桩 我们将当前牌堆的最高牌面朝上。 我们将面朝上卡移动到其各自堆叠的底部(4张卡片位于第4列下方)。该卡仍面朝上。该桩成为当前桩。 如果当前筹码完全朝上,则游戏结束。否则,请返回步骤3。 提示:游戏将永远在第0堆结束 如果所有牌面朝上都将赢得比赛,如果剩下的牌面朝下则将输掉比赛。 输入输出 包含每个桩的2D阵列。卡用0到12的数字表示(西装无关紧要,没有给出)。每堆的顶牌是每个阵列的第一个元素。 您可以假设输入格式正确:它将包含52张0到12(含)之间的卡,并且每个数字恰好包含4次。 如果游戏可以获胜,则必须返回真实值;如果不能获胜,则必须返回虚假值。 测试用例 真相: [[11, 11, 7, 7], [8, 6, 5, 0], [2, 10, 9, 1], [12, 3, 0, 6], [8, 7, 4, 8], [3, 10, 5, 12], [11, 7, 1, 10], [3, 1, 6, 0], [2, 3, 0, …

4
制作一个简单的漂亮评论工具
挑战: 某些ascii技术很难制造,但使代码注释更易于阅读,尤其是在代码密集时。面临的挑战是制作一个简单的工具,以将带有箭头的注释转换为简单的ascii-art。要修改的注释由空注释分隔。 例如,假设Haskell注释语法,请转换为: -- -- Here's a thing -- Here's another thing -- The most important thing -- * * * -- f x=x+1*x*1*1*0 对此: -- /------------< Here's a thing -- | /-------< Here's another thing -- | | /-< The most important thing -- | | | -- v …

4
童话棋“游刃有余”的运动模式
甲弹跳是仙女棋子,其通过移动的类别“跳跃”。普通骑士是(1,2)剑,这意味着每次移动都涉及在正交方向上移动1平方和在垂直方向上移动2平方的距离。 .o.o. o...o ..N.. o...o .o.o. 有许多不同的跨越。(1,3)叶片称为长骑士或骆驼。其移动模式如下所示: ..o.o.. ....... o.....o ...L... o.....o ....... ..o.o.. 还有(2,2)Alfil ... o...o ..... ..A.. ..... o...o ...甚至(0,1)Wazir。 .o. oWo .o. 挑战 给定一对数字作为输入,输出相应的运动图。您可以编写程序或函数,其输入通过STDIN /命令行提供或作为参数,而输出通过STDOUT或返回值提供。这是代码高尔夫球。 输入值 输入将是两个整数和一个大写字母的逗号分隔列表。这两个整数将在范围内0-7(包括端值)并且以非降序排列。输入和输出的尾随换行符是可选的。 以下是上述四个示例的输入: 1,2,N 1,3,L 2,2,A 0,1,W 输出量 输出将是一个方形的多行字符串。大写字母将放置在中间,以表示作品的当前位置。移动位置将以4或8个小写字母表示o s表示。广场上的所有其他空间都将填充句点。 如果移动方式为0,0,则仅输出大写字母。 提示一下,如果第二个整数(较大的整数)的值为N,则该正方形将始终具有边长2N + 1。该o旨意永远是正方形的周长。 其他测试用例 1,1,F o.o .F. o.o 5,7,Q ..o.........o.. ............... …

13
海盗世界的发行规则
现有的“游戏”中,海盗会根据某些规则合理地分割金币。引用维基百科: 有5个有理性的海盗,A,B,C,D和E。他们找到100个金币。他们必须决定如何分发它们。 海盗有严格的资历等级:A胜过B,B胜过C,C胜过D,E胜过E。 因此,海盗世界的分配规则是:最高级的海盗应建议分配硬币。然后,包括提议者在内的海盗就是否接受这种分配进行投票。在平局的情况下,提议者将投决定票。如果接受分配,则分配硬币并结束游戏。如果不是,则将提议者从海盗船上扔下并死亡,然后下一个最高级的海盗提出新提议,以重新启动系统。 海盗的决定基于三个因素。首先,每个海盗都想生存。其次,给定生存能力,每个海盗都希望最大限度地增加各自获得的金币数量。第三,如果其他所有结果均相同,则每个海盗都倾向于投掷另一艘船。海盗彼此不信任,并且除了提议的分配计划之外,海盗之间不会做出任何承诺,也不会兑现任何承诺,海盗计划将给每个海盗大量的金币。 挑战 输入一个整数n1 <= n <= 99,其中n是海盗数-并从第一个海盗开始输出硬币的分布。 测试用例(第一行是输入;第二行是输出): 1 100 2 100 0 3 99 0 1 5 98 0 1 0 1 这是代码高尔夫球,因此以字节为单位的最短解决方案为准。
14 code-golf 

30
去生成一些Java
您的老板希望您编写如下代码: public static boolean isPowerOfTen(long input) { return input == 1L || input == 10L || input == 100L || input == 1000L || input == 10000L || input == 100000L || input == 1000000L || input == 10000000L || input == 100000000L || input == 1000000000L || input == …

6
来信,动起来!铂 2
首字母,动起来!非常受欢迎,但参与度有限。这个问题将更容易解决,但希望在打高尔夫球时能有一些技巧。 只给您提供一串小写字母。对于每个字母,在字母表中的位置m,将其移动,使其从末尾成为第m个字母。如果m的值比字符串的长度长,请将其移到最前面。仅输出完全转换的字符串。 例子: “长颈鹿” 'g'是字母表中的第7个字母,它已经是背面的第7个字母,因此请保留。 “ i”是第9个字母,由于9大于单词的长度,因此它位于最前面,因此字符串变为 igraffe “ r”是第18个字母,就像“ i”一样,它位于前面: rigaffe “ a”是第一个字母,它一直到最后: rigffea “ f”是第6个字母,从背面变成第6个字母: rfigfea 下一个'f'也是第6个字母,因此它也从后面移到第6个字母: rffigea “ e”是第5个字母,从背面到第5个字母: rfefiga “花” 'f'(6)=> flower 'l'(12)=> lfower 'o'(15)=> olfwer 'w'(23)=> wolfer 'e'(5)=> weolfr 'r'(18)=> rweolf “菠萝” 'p'(16)=> pineapple 'i'(9)=> ipneapple 'n'(14)=> nipeapple 'e'(5)=> nipaepple 'a'(1)=> nipepplea 'p'(16)=> pnipeplea 'p'(16)=> …

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.