Questions tagged «code-golf»

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

9
N选择列表
给定一个integers列表L和一个integer N,输出L分成N相等长度的子列表。 不可分割的长度 如果N不除的长度L,则不可能所有子列表都具有相等的长度。 无论如何,输出的最后一个子列表是调整其长度以包含列表其余部分的子列表。 这意味着L除最后一个列表外的所有子列表都应为length length(L) // N,其中//为楼底分隔(例如3//2 = 1)。 一些规则 L 可以为空。 N >= 1。 您可以使用任何所需的内置函数。 您可以通过接受输入STDIN,作为函数参数,或类似的东西。 您可以将输出打印到STDOUT,从函数返回它或类似的东西。 您可以为列表和整数选择任何格式,只要它是您语言中最自然的列表和整数表示形式即可。 测试用例 Input: [1,2,3,4], 2 Output: [[1,2],[3,4]] Input: [-1,-2,3,4,-5], 2 Output: [[-1,-2],[3,4,-5]] Input: [1,2,3,4], 1 Output: [[1,2,3,4]] Input: [4,8,15,16,23,42], 5 Output: [[4],[8],[15],[16],[23,42]] Input: [4,8,15,16,23,42], 7 Output: [[],[],[],[],[],[],[4,8,15,16,23,42]] Input: [2,3,5,7,11,13,17,19,23], 3 …

30
到处都是蛇
挑战 挑战很简单:打印一条蛇。 您将获得蛇的长度作为输入。 长度为2的蛇看起来像这样: ==(:)- 长度为7的蛇看起来像这样: =======(:)- 换句话说,一条蛇的长度等于头部前有多少等号。 用法 假设我做了一个C ++实现并将其编译为./getsnake。 我可以这样运行: $ ./getsnake 10 ==========(:)- 澄清说明 不允许出现标准漏洞。 您可以以任何可接受的方式获取输入和输出。 您可以假设所有给定的输入均为正整数。 您可以编写函数而不是常规程序。

3
自指代多项式
对于每个给定的度数n,都可以构造(至少一个)整数多项式p,使得p(k)(p对求值k)是x^k所有多项式中项的系数0 <= k <= n。为了使它们唯一,我们要求前导系数(的系数x^n)为正且最小。 这些多项式具有一些有趣的属性,您可以在线程中找到一些启发我进行此挑战的参考。您还可以在https://oeis.org/A103423中找到这些多项式 先验的意外属性之一是根的行为取决于n: 来源(通过/ u / zorngov和/ u / EpicSauceSc2) 任务 给定一个非负整数n输出,自相关积分多项式的度数n具有最小正超前系数。 细节 输出可以是任何人类可读的形式,可以是字符串x^2-x-1,也可以是系数列表[1,-1,-1]。(系数的顺序也可以相反,只需保持一致即可。) 前几个输出 n=0: 1 n=1: x n=2: x^2-x-1 n=3: 10*x^3-29*x^2-6*x+19 n=4: 57*x^4-325*x^3+287*x^2+423*x-19 n=5: 12813*x^5-120862*x^4+291323*x^3+44088*x^2-355855*x-227362

5
显示ASCII的纸屑分数
纸牌游戏是一个有趣的游戏,因为您需要一个特定的棋盘来为您的游戏打分。写字板看起来像这样: 注意第一列在上升时在左边,然后在下降时在右边,然后在上升时回到左边。 这是纸牌上绘制不良的ASCII艺术作品的样子: * * * ----------- ------- / * \ |*|*|*| /* * *\ |*|*|*| / * * * \ |*|*|*| | * * | |*|*|*| |* * * * * *| |*|*|*| ------- ------- ------- |*|*|*| |*|*|*| |*|*|*| |*|*|*| |*|*|*| |*|*|*| |*|*|*| |*|*|*| |*|*|*| |*|*|*| |*|*|*| |*|*|*| |*|*|*| …

4
三个无法区分的骰子
给定三个骰子掷骰(1-6的整数值)(以便无法区分),将它们转换为两个具有相同分布的公平骰子的总和。 三对一的答案是将它们全部取模6。最终结果是一个完美的平坦分布,六个数字中的每个数字均具有相同的可能性(就像一个骰子一样)。 通过将它们全部取模为6,可以很容易地做到三对一。最终结果是一个完全平坦的分布,六个数字中的每个数字均具有相同的可能性(就像一个骰子一样)。您的挑战是三对二做同样的事情。 受到Standupmath的“三个难以区分的骰子之谜”的启发。还发布了后续的“解决方案”视频,但是争论一种或另一种方式的“优雅”有点主观。计数字符不是。:D 使用说明 编写一个程序或函数,该程序或函数接受三个排序的整数/数字1-6,并输出或返回单个整数2-12,这样,对于216种可能的输入,输出的分布为: 222222 333333333333 444444444444444444 555555555555555555555555 666666666666666666666666666666 777777777777777777777777777777777777 888888888888888888888888888888 999999999999999999999999 AAAAAAAAAAAAAAAAAA BBBBBBBBBBBB CCCCCC (我使用十六进制来保留单个字符;十进制输出是可以的) 因为骰子是无法区分的,所以它们没有内在的顺序,因此没有排序的输入。您不能简单地“丢掉第三个”,因为那样会模棱两可。 细节 分数是程序的长度(以字节为单位) 该程序可以是一个以某种方式调用的函数,也可以是从stdin读取的可执行脚本,也可以是任何方便的方法。 不会通过从其他来源获取熵来“重新滚动” 示例(和测试) 无需进行任何形式的概率测试,就很容易探究所有三个骰子的216(6³)个情况,并断言您的函数将每个值返回应有的次数。它将使用相同的参数进行调用(例如,假定case 1, 2, 3和3, 2, 1...无法区分并且(任意)转换为1, 2, 3)。 下面的Python中提供了示例答案(极端暴力且效率低下)和测试套件。希望测试位足够清晰,可以移植到您选择的语言,尽管执行stdin / stdout会有所不同。测试代码仅用于测试,不会打分(尽管如果您想为您的语言或I / O方法的其他用户提供它,可能会很有用)。 # 6x6 lists of numbers with digits sorted LUT = [ [[124], [133, …
12 code-golf  number 

3
我有机会赢得大奖吗?
我在当地的ACM分会向参加会议的人员颁发奖品。但是,如果您解决了编程难题,您获胜的机会就会增加(但是我总是会解决难题)。因此,有些人只有1个条目,而其他人只有2个条目。抽奖程序的工作方式不是在有人解决难题时添加其他条目。取而代之的是,它跟踪一个人拥有的“生命”数量,从而减少了在该随机抽样算法的每遍操作中是否选择了该人。所以它是这样的: Doorknob: 1. xnor: 2. Justin: 2. Alex: 1. Dennis: 2. 然后程序随机选择之一[Doorknob, xnor, Justin, Alex, Dennis],递减数字(例如选择Justin): Doorknob: 1. xnor: 2. Justin: 1. Alex: 1. Dennis: 2. 并重复。如果某人的“生命”数量达到0(让我们Justin再次选择),那么他们将从列表中删除: Doorknob: 1. xnor: 2. Alex: 1. Dennis: 2. 这一直持续到剩下一个人为止。那个人就是赢家。 现在真正的问题是,我赢了的概率是多少? 您将获得两个输入: n。这是参加挑战的人数 k。这是n指拥有2条生命的人数。此号码始终包含您。 因此,如果我有一个函数p叫p(10, 5),这就是赢得奖金的概率,总共有10个人,其中5个人只有1人生,而5(包括您)有2人生。 您应该输出准确或十进制形式获胜的概率。无论如何,答案必须精确到小数点后第四位,包括小数点后第四位。是否舍入到该数字取决于您。 您的解决方案可以是随机化的溶液,其输出的答案为4 个与小数位高概率。您可能会假设您使用的内置RNG确实是随机的,并且它必须以至少90%的概率输出正确的答案。 此外,您的代码只需要用于n, k <= 1000,尽管我确实提供了比那些好奇的用户更大的测试用例。 测试用例 …

1
有多少个正方形?
这种挑战是由经常漫游在Facebook上一样,看起来画面灵感此。除了我们的基本广场看起来像这样: ┌─┬───┬─┐ ├─┼─┬─┼─┤ ├─┼─┴─┼─┤ ├─┼─┬─┼─┤ └─┴─┴─┴─┘ 该正方形由n x m1x1正方形组成,您必须计算该正方形内可以容纳多少个子正方形(1x1、2x2、3x3、4x4、5x5等)。正方形可能会丢失一些网格线(例如上例),也可能像下面的例子中那样完整。这意味着数学分析是没有可能(据我所知)。 输入: n建立正方形的输入的线数(); 由以下字符组成的正方形:─ ┐ ┌ └ ┴ ┘ ┬ ├ ┤ ┼ |跨n输入行。 输出: 可以容纳在输入正方形内的任何大小的正方形数量(我们在这里只需要一个数字,而每个大小都不需要一个数字)。 获奖标准: 最小的答案(字节数)获胜。 测试用例: 在: 5 ┌─┬─┬─┬─┐ ├─┼─┼─┼─┤ ├─┼─┼─┼─┤ ├─┼─┼─┼─┤ └─┴─┴─┴─┘ 出: 30 在: 3 ┌─┬─┐ ├─┼─┤ └─┴─┘ 出: 5 在: 5 ┌─┬─┐ ├─┴─┤ ├───┤ ├─┬─┤ └─┴─┘ …

2
旋转安全的拉丁方格
拉丁方是在X或Y列中没有重复符号的正方形。例如: ABCD DABC CDAB BCDA 是一个这样的广场。请注意,每一列和每一行如何包含相同的4个字母的排列。 但是,我们的拉丁方有一个问题: 如果我将第二行(DABC)1向左旋转,我将得到ABCD,这与上面的排列相同。 如果不可能旋转任何一列/行并获得另一列/行,那么我们认为正方形是旋转安全的。 例如: ABCD BDAC CADB DCBA 是旋转安全的。网格具有以下属性: 点[0,N]使用第N个符号 点[0,N]和[N,0]始终是相同的符号。(我也想说[x,y]和[y,x]也总是相同的字母,但我无法证明它) 您的任务是在传递N时打印出1个旋转安全的拉丁方格。 我不在乎是否输出字母,数字,列表或2D数组。 如果使用数字,则第一列和第一行必须是0,1,2,3,...(按此顺序)。如果使用字母,则必须是A,B,C,D,.... 例如,如果输入为4,则应打印: 0,1,2,3 0,1,2,3 1,3,0,2 or 1,0,3,2 2,0,3,1 2,3,1,0 3,2,1,0 3,2,0,1 没有大小小于4的旋转安全拉丁方。如果N小于4,我不在乎您的程序会做什么。出于好奇,旋转安全方数为(从4开始): 2,5,5906,(too long to calculate) 这是一个代码问题,所以请尝试使用您喜欢的语言尽可能短地回答!

13
种植一棵树mo!
这是我的朋友托马斯。他是一半的树,一半的图释。 | | | :D | | | 他很孤独。让他结识一些朋友吧! 给定一个基于文本的表情符号作为输入(例如ಠ_ಠ,:P,>_>,不😀,🤓或🐦),输出对应的treemote。 Treemote的长度是多少个字符(基本上是字符串的大多数内置长度函数)。因此,ಠ_ಠ具有长度为3。 长度n为treemote的语法如下: |< 2+n spaces>| * ceil(n/2) | <emote> | (note the spaces) |< 2+n spaces>| * ceil(n/2) 因此,任何长度为3的树状节点都将看起来像: | | | | | ಠ_ಠ | | | | | 他的ceil(n/2)两边都有换行符分隔的主干段,每个主干段2 + n内都有空格。 挑战:给定基于文本的表情符号,输出相应的treemote。 其他规则: 这是code-golf,这意味着我要您编写短代码。 不允许出现标准漏洞。 除非您的语言无法处理,否则您必须支持非ASCII字符。 测试用例: ^_^ …

3
紫菜表计算和未知在ZFC中终止的算法
将紫菜表提供的还没有被证明在数学的标准公理系统终止程序的例子ZFC但是当一个人承担非常大基数公理就终止。 介绍 经典紫菜表是独特的有限代数与底层集合和操作,其满足的身份,并且其中用于和其中。An{1,...,2n}*x * (y * z)=(x * y) * (x * z)x*1=x+1x<2n2n*1=1 有关经典Laver表的更多信息,请参见Patrick Dehornoy所著的《辫子和自我分配》。 挑战 1*32在经典Laver表中计算并在找到nwith 时恰好终止的最短代码(以字节为单位)是什么?换句话说,程序仅在找到with时终止,否则它将永远运行。1*32<2nn1*32<2n 动机 一个秩为秩基数(也称为I3-基数)是一个非常大的水平无穷的,如果一个假设秩为秩基数的存在,那么一个人能够证明更定理如果一个不超过假设存在等级为基数的基数。如果存在一个秩为秩基数,再有就是一些经典紫菜表哪里。但是,尚无ZFC中的证明。此外,已知的是,至少其中大于(这是一个非常大的数量,因为阿克曼函数是一个快速增长的函数)。因此,任何此类程序都将持续极长的时间。An1*32<2n1*32<2nn1*32<2nAck(9,Ack(8,Ack(8,254)))Ack 我想看看可以编写多短的程序,以便我们不知道该程序是否使用标准公理系统ZFC终止,但是我们确实知道该程序最终在一个更强大的公理系统(即ZFC + I3)中终止。这个问题的灵感来自斯科特 ·亚伦森(Scott Aaronson)最近的一篇文章,在这篇文章中,亚伦森和亚当·叶迪迪亚(Adam Yedidia)建造了具有8000个州以下的图灵机,以至于ZFC无法证明图灵机不会终止,但是当人们假设大的基本假设时,已知该图灵机不会终止。 经典Laver表的计算方式 当计算紫菜表通常是方便使用的事实,在代数,我们对所有的。An2n * x=xxAn 以下代码计算经典Laver表 An #table(n,x,y)在A n中返回x * y 表格:=功能(n,x,y) 如果x = 2 ^ n则返回y; elif y = 1然后返回x + 1; 否则返回table(n,table(n,x,y-1),x + …

3
尽量减少那些人
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 3年前关闭。 您的任务是使用最少的个数和仅运算符+或来构建自然数-。例如,数字7可以写成1+1+1+1+1+1+1=7,但也可以写成11-1-1-1-1=7。第一个使用7,而第二个仅使用6。给定一些自然数,您的任务是返回可使用的最小数n。 这是代码高尔夫,因此以字节为单位的最短有效代码获胜。 测试用例 输入=>输出 0 => 2 (since 1-1=0) 7 => 6 121 => 6 72 => 15 1000 => 7 2016 => 21

9
查找小数表示形式的重复!
在2年前的这一挑战中,我们发现了一个单位分数()的周期1/n where n is a natural number。 现在,您的任务是编写一个程序/函数来查找单位分数的重复项。 该repetend是十进制扩展其重复无限,等的部分: 的十进制表示形式1/6是0.16666...,则重复数为6。 的十进制表示形式1/11是0.090909...,则重复数为09。 的十进制表示形式1/28是0.0357142857142857142857...,则重复数为571428。 眼镜 以任何合理的格式输入。 用十进制,字符串或list输出重复。 对于1/7(0.142857142857...),您必须输出142857而不是428571。 对于1/13(0.076923076923076923...),您必须输出076923而不是76923。 请不要蛮力。 测试用例 Input Output 1 0 2 0 3 3 7 142857 13 076923 17 0588235294117647 28 571428 70 142857 98 102040816326530612244897959183673469387755 9899 000101020305081321345590463683200323264976260228305889483786241034447924032730578846348115971310233356904737852308313971108192746742095161127386604707546216789574704515607637135064147893726639054449944438832205273259925244974239822204263056874431760783917567431053641781998181634508536215779371653702394181230427315890493989291847661379937367410849580765733912516415799575714718658450348520052530558642287099707041115264168097787655318719062531568845337912920497019901 计分 这是代码高尔夫球。以字节为单位的最短解决方案获胜。 没有答案会被接受,因为目标不是找到能够产生最短解决方案的语言,而是找到每种语言中最短解决方案的语言。 排行榜 显示代码段 var QUESTION_ID=78850,OVERRIDE_USER=42854;function answersUrl(e){return"http://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"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function …

6
我的琴弦兼容性如何?
介绍 考虑两个字符串阿和乙相同长度的大号和整数ķ≥0 。出于此挑战的目的,我们说如果存在长度为K的字符串C使得A是串联BCB的连续子字符串,则这些字符串是K兼容的。请注意,A是BAB的子字符串,因此A和B始终是L兼容的(但对于另一些K <L,也可能是K兼容的)。 输入值 您的输入是两个正长度相同的字符串,由大写和小写ASCII字母组成。 输出量 您的输出应为最低的非负整数K,以使输入与K兼容。 例 考虑输入 A = HHHHHH B = HHttHH 它们不兼容0,因为A不是的子字符串HHttHHHHttHH。它们也不是1兼容的,因为无论将哪个字母放在上,A都不是子字符串。但是,A 是的子字符串,其中C是两个字母的字符串。因此,输入是2兼容的,正确的输出是。HHttHH#HHttHH# HHttHHHHHHttHHHH2 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 兼容性条件是对称的,因此交换两个输入不应更改输出。 E G -> 1 E E -> 0 aB Bc -> 1 YY tY -> 1 abcd bcda -> 0 abcXd bxcda -> 4 Hello Hello -> …
12 code-golf  string 

7
Jolf打高尔夫球的秘诀
Jolf是@CᴏɴᴏʀO'Bʀɪᴇɴ制定的程序性高尔夫球语言。 您在Jolf打高尔夫球有哪些秘诀? 请为每个答案发布一个提示。 这些技巧至少应该针对Jolf,例如,删除评论是一个答案,但不是一个很好的答案。
12 code-golf  tips 

23
多边形数
多边形数是ksize的一个点中的点数n。 您将得到n和k,并且您的任务是编写一个输出/打印相应编号的程序/功能。 计分 这是代码高尔夫球。以字节为单位的最短解决方案获胜。 例 的3RD六边形数(k=6, n=3)是28因为有28上面的点。 测试用例 可以从此Pyth测试套件生成。 用法:每个测试用例n在上,k下两行。 n k output 10 3 55 10 5 145 100 3 5050 1000 24 10990000 更多信息 在Wikipedia中:https://en.wikipedia.org/wiki/Polygonal_number 在Wolfram Mathworld中:http : //mathworld.wolfram.com/PolygonalNumber.html 在OEIS Wiki中:http : //oeis.org/wiki/Polygonal_numbers 各种n的n角数的OEIS序列:3 (A000217),4 (A000290),5 (A000326),6 (A000384),7 (A000566),8 (A000567),9 (A001106),10 (A001107),11 (A051682),12 (A051624),13 (A051865),14 (A051866),15 (A051867),16 (A051868),17 …

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.