Questions tagged «code-challenge»

代码挑战赛是一种创造性的竞赛,可以用客观的获胜标准来解决编程难题,而其他得分标记(例如,代码高尔夫)则无法涵盖这些目标。

2
解释重复!
这项挑战是有关重复的两个挑战系列中的第一个。第二个即将到来。 在一种叫做重复的语言(我刚刚写的东西)中,包含一个无限的字符串12345678901234567890...,带有1234567890永远重复。 以下语法可用于输出数字: +-*/:这会将运算符插入重复数字的字符串中。 例子: +-> 1+2= 3(在和之间+插入一个)+12 +*-> 1+2*3= 1+6= 7(与上面相同,但现在使用两个运算符) /-> 1/2= 0(重复使用整数除法) //-> 1/2/3= 0/3= 0(重复使用带有多个减法和除法的“左关联”) 插入每个运算符时,除非有,否则它的左边有一位数字c(请参阅下文)。 c:与字符串中的下一位数字连接。 例子: c+-> 12+3= 15(c“继续” 1并将其与下一位数字串联起来2,形成12) +c-> 1+23=24 ccc -> 1234 ():用于处理数字的括号。 例子: (c+)*-> (12+3)*4= 15*4= 60(重复使用操作顺序) (c+)/c-> (12+3)/45= 15/45=0 (cc+c)/-> (123+45)/6= 168/6=28 s:跳过数字(从无限字符串中删除数字)。 s+-> 2+3= 5(s跳过1) csc- > 124(第一cconcats …

3
适合该领域的因素
给定小于1000的正整数,则显示该区域内所有可能的矩形。 任务 假设输入为20。我们可以制作一个20×1、10×2或5×4的矩形,因此这是一个有效的输出: ******************** ********** ********** ***** ***** ***** ***** 请注意,每个可能的矩形仅出现一次。 矩形可以以任何顺序,方向或位置出现,但即使在角落,也不能有两个矩形重叠或接触。以下内容也有效: ******************** **** ********** **** ********** **** **** **** 计分 输出的边界框区域(BBA)是包围所有矩形的最小矩形的区域。在第一个示例输出中,大小为20×9,因此BBA为180。在第二个示例输出中,大小为20×7,因此BBA仅140。 输入为60、111、230、400和480时,找到输出的BBA,并将它们加起来。将该总和乘以代码的大小(以字节为单位)。结果就是你的分数;最低分获胜。 规则 程序(或函数)必须为1000以下的任何正整数产生有效的输出。 输出必须仅包含星号(*),空格()和换行符。 矩形之间可以有任意数量的空间,但这要计入BBA。 前导或尾随的行或列,如果仅有空格,则不会计入BBA。

1
Hadamard问题的优化版本
首先,一些定义。 甲Hadamard矩阵是方阵,其条目是+1或-1,并且其行是相互正交的。所述哈达玛猜想提出的顺序4k的Hadamard矩阵存在每一个正整数k。 甲循环矩阵是一类特殊的矩阵,其中每一行向量是一个旋转元件的相对前述行向量权。那就是矩阵是由它的第一行定义的。 据已知的是,除了4×4的矩阵,有没有循环Hadamard矩阵。 具有m行和n> = m列的矩阵是局部循环,如果是一些循环矩阵的第一m行。 任务 对于从2开始的每个偶数n,输出具有+ -1项和n列的最大部分循环矩阵的大小,该矩阵的所有行都相互正交。 得分了 您的分数是最高的n,因此k <= n,没有任何人比您发布的正确答案更高。显然,如果您拥有所有最佳答案,那么您将获得n您发布的最高分数。但是,即使您的答案不是最佳答案,如果没有其他人能打败它,您仍然可以获得分数。 语言和图书馆 您可以使用任何喜欢的语言和库。在可行的情况下,能够运行您的代码将是一件好事,因此,请尽可能提供有关如何在Linux中运行/编译代码的完整说明。 领先的作品 Mitch Schwartz在Python中撰写的64

1
非回文式多语种虫
介绍 数字101是回文,因为它前后读相同。数字105不是。但是,以八为底的105表示为151,这是回文的。另一方面,从2到101的任何碱基,103都不是回文。因此,103 严格来说是非回文的。 精确的定义是:如果非负整数n在2到n-2之间(包括2和n-2)之间的任何碱基都不是回文,则它严格是非回文的。 前几个严格非回文数是0, 1, 2, 3, 4, 6, 11, 19, 47, 53, 79, 103, 137, 139, 149, 163, 167, 179, 223, 263, 269...(A016038) 编写一个完整的程序,该程序从STDIN 中获取数字x并打印第x个严格的非回文数。例如,输入5将产生输出4。 挑战 面临的挑战是编写多个(一个或多个)程序,每个程序以不同的语言解决此任务。 然后,您必须将所有程序放在矩形的字符网格中。可以使用Boggle样式访问程序。也就是说,从一个字符到相邻字符(包括对角线),切勿使用同一字符超过一次。 例如,以下网格: abc bdc 包括的话abc,ccd,bbad,和bcdb,但不是ac,bdd,bcb,或cbbc。 必须使用这些规则在网格中找到每个程序。但是,您可以在多个程序中使用相同的字符。 得分了 您的分数是网格中的字符数除以程序数。最低分获胜! 规则 如果两种语言通常使用不同的名称,而忽略版本号,则认为它们是不同的。例如,C和C ++是不同的,但是Python 2和Python 3是相同的。 网格中的字符必须全部来自可打印的ASCII,即从到~代码点20到FE。 每个程序只能由可打印的ASCII加上换行符组成。将程序插入网格时,请用空格替换每个换行符。 网格中的空格可以代表一个程序中的空间,而换行则代表另一个程序。 网格必须是矩形。 并非每个字符都需要在程序中使用。

3
重访Matrix属性X(或X的Joy)
这一挑战部分是算法挑战,部分是优化挑战,部分仅仅是最快的代码挑战。 AT矩阵由其第一行r和第一列完全指定c。矩阵的每个剩余元素只是该元素在对角线上方和左侧的一个副本。那是M[i,j] = M[i-1,j-1]。我们将允许非正方形的T矩阵。但是,我们始终假定行数不超过列数。例如,考虑下面的3×5 T矩阵。 10111 11011 11101 如果矩阵包含两个具有相同索引(向量)和不同索引的非空列,则该矩阵具有属性X。一列或多列的向量和只是其列的逐元素求和。那是包含x元素的两列或更多列的总和,每列是包含元素的另一列x。一列的总和等于列本身。 上面的矩阵平凡地具有属性X,因为第一列和最后一列相同。单位矩阵从不具有属性X。 如果我们只删除上面矩阵的最后一列,那么我们将得到一个不具有属性X且得分为4/3的示例。 1011 1101 1110 任务 任务是编写代码以找到得分最高的T矩阵,该矩阵具有二进制条目,并且不具有属性X。为清楚起见,具有二进制条目的矩阵具有其每个条目均为0或1的属性。 得分了 您的分数将是数字列除以最佳得分矩阵中的行数。 决胜局 如果两个答案得分相同,则第一个提交者获胜。 在(极不可能)的事件中,如果有人找到获得无限分的方法,则将接受这种解决方案的第一个有效证明。在更不可能的情况下,您可以找到有限矩阵的最优性证明,我当然也会获奖。 暗示 查找没有属性X的最高得分矩阵的所有答案在此处均有效,但不是最佳答案。有T个不具有属性X的矩阵,它们不是循环的。 例如,有一个7 x 12 T矩阵,没有属性X,但没有这样的循环矩阵。 21/11将击败当前和之前挑战带来的所有答案。 语言和图书馆 您可以使用任何具有免费编译器/解释器/等的语言。适用于Linux以及任何可免费用于Linux的库。 奖励得分大于2的第一个答案将立即获得200点赏金奖励。Ton Hospel现在已经做到了! 现任排行榜 C ++。Ton Hospel得分31/15 Java。彼得·泰勒(Peter Taylor)得分36/19 哈斯克尔。亚历山大·布雷特得分14/8

7
用户评分的代码高尔夫-拉丝钻石[实验性]
这种挑战的表现或多或少类似于传统的代码高尔夫。唯一的区别在于,用户无需按字符或字节数对答案评分,而是将权重分配给 注释中的不同字符,并且累积权值最低的程序将获胜。 挑战 您的任务是编写一个程序,该程序采用字符串并打印菱形,其中第一个字符从中心开始,随后的字符占据与最后放置的字符集正交的空白空间。空格()将用于填充。 例如输入CAT将产生 T TAT TACAT TAT T 并()会产生 ) )() ) 并 desserts会产生 s sts strts strerts streserts stressserts stressesserts stressedesserts stressed desserts stressedesserts stressesserts stressserts streserts strerts strts sts s 并且9会产生9。 细节 该代码只能包含可打印的ASCII和换行符。(请参阅下面的原因。) 输入/输出应通过stdin / stdout进行,或者,如果不可能,则使用类似的替代方法。 您可以假设输入字符串仅包含可打印的ASCII(包括空格)。 不含有钻石图案的任何部分开头的空格的列不输出允许。允许使用任意数量和组合的尾随空格。 输出中可能会选择性地包含尾随换行符。 您可以根据需要编辑答案。 计分 所有代码必须仅使用换行符和95个可打印的ASCII字符编写: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (不允许使用令人讨厌的选项卡,因为Stack Exchange将它们显示为代码块中的空格。) 这96个字符中的每个字符都有一个与之关联的权重值。默认情况下,所有权重均为97。 …

2
可达的蛇方向数
这个挑战与Snake游戏无关。 想象一条通过画一条水平线形成的2D蛇n。在其身体的整数点处,这条蛇可以将其身体旋转90度。如果我们将蛇的前面定义为最左端,则旋转将移动蛇的后部,而前部将保持原位。通过反复旋转,它可以制成许多不同的蛇形体。 规则 蛇的身体的一部分不能与另一部分重叠。 蛇的身体任何部分之间都不得重叠,必须达到最终方向。在此问题中,触摸的两点被视为重叠。 我认为蛇及其反面是相同的形状。 任务 直到旋转,平移和镜像对称,总共可以制造出多少种蛇形体? 蛇体部分旋转的示例。想象一下n=10,蛇处于直线的起始方向。现在,将点4逆时针旋转90度。我们拿到的蛇从 4以10垂直趴(该蛇的尾巴)和蛇从0到4水平放置。蛇现在的身体成一个直角。 这里有一些感谢MartinBüttner的例子。 我们从水平蛇开始。 现在我们从位置4旋转。 在此方向旋转之后,我们结束了。 现在让我们考虑另一条蛇的这种取向。 现在我们可以看到非法移动,该移动在旋转过程中会引起重叠。 得分了 您的分数是n我的计算机在不到一分钟的时间内可以解决该问题的最高分。 当旋转发生时,它将随蛇一起移动一半。我们确实要担心在旋转过程中旋转的任何部分是否会与蛇的一部分重叠。为简单起见,我们可以假定蛇的宽度为零。您只能在蛇形的特定点上沿逆时针方向最多旋转90度。因为,您永远无法将蛇完全折成两段,因为那样会导致在同一方向上的同一点发生两次旋转。 无法制作的形状 不能制作的形状的一个简单例子是大写字母T。一个更复杂的版本是 (感谢Harald Hanche-Olsen的例子) 在此示例中,所有相邻的水平线和垂直线都相距1。因此,没有从这个位置采取法律行动,并且由于问题是可逆的,因此没有办法从起始位置到达那里。 语言和图书馆 您可以使用任何具有免费编译器/解释器/等的语言。适用于Linux以及任何可免费用于Linux的库。 我的机器 时间将在我的机器上运行。这是在AMD FX-8350八核处理器上的标准ubuntu安装。这也意味着我需要能够运行您的代码。因此,请仅使用易于使用的免费软件,并请提供有关如何编译和运行代码的完整说明。

5
广义Gematria计算器
为任何给定的Unicode字符序列(如字母)创建一个双向Gematria计算器。 Gematri-什么? Gematria是一种为符号分配数值的系统,该系统由古希腊人开发并由古代犹太人采用。它采用类似于ASCII或Unicode的方式,只是非线性的。请参见下表(完整的表可在上面的链接中找到): Index Letter Letter name Value -------------------------- 0 א "Alef" 1 1 ב "Bet" 2 ... 8 ט "Tet" 9 9 י "Yud" 10 10 כ "Kaf" 20 ... 17 צ "Tsady" 90 18 ' "Kuf" 100 19 ר "Resh" 200 ... 字母的名称并不重要,只是字母在字母“数组”中的索引以及相应的数值。希伯来字母只有22个字母(不包括“最终”字母),因此最大可用值为400。 如果我们将此系统借用到英语字母(AZ),我们将得到A = 1,B = 2 …

4
5秒找到派
Pi乘以e(如果喜欢模棱两可的表示法,则用Pie表示)到100个小数位: 8.5397342226735670654635508695465744950348885357651149618796011301792286111573308075725638697104739439... (OIES A019609)(可能不合理的论点) 您的任务是编写一个程序,该程序采用正整数N,然后将Pi * e截断为N个小数位。例如,如果N = 2,则输出应为8.53。 这是一个优化问题,因此可以为N的最大值提供正确输出的提交将获胜。 为了确保使用相同的计算能力来判断所有提交,您的代码必须使用支持的任何语言在ideone上运行。根据ideone常见问题解答,未登录用户的运行时间限制为5秒。这5秒的限制是您必须使用的限制,而不是已登录用户的15秒的限制。(有关内存,代码大小等其他限制,请参见常见问题解答。) 具体来说,任何未登录ideone的人都应该能够在ideone上针对从1到某个最大Nmax的所有N值运行您的程序,并且几乎始终都能看到正确的输出。没有任何Time limit exceeded或Memory limit exceeded等错误。Nmax最大的提交者获胜。 (只要ideone不会出错,那么实际花费的时间是否超过5秒钟就无关紧要。“ 几乎所有的时间 ”都被定义为特定N的95%以上的时间。) 细节 您可以使用任何喜欢的数学方法来计算Pi * e,但是您不能对输出的硬编码超出Pi,e或Pi * e的前十二个数字。 给定无限的资源,您的程序应该可以工作于任何N个。 如果您的语言碰巧有Pi或e常量,则可以使用它们。 您可能无法访问代码外部的网站或资源(如果ideone允许的话)。 除了硬编码和访问外部资源之外,ideone允许的任何事情几乎都可以确定。 您的输入和输出必须(显然)必须与ideone提供的I / O一起使用(看起来只有stdin / stdout)。如果您需要在输入N周围加引号或输出类似的东西ans = ...,等等就可以了。 请提供一个以Nmax为输入的代码的ideone片段的链接。 如果碰巧出现平局(仅当多个提交都达到64kB输出字符限制时才有可能),以最高票数回答为准。

1
蛙人冠军
游戏 我们大多数人都知道Frogger,这是80年代的街机游戏,其目标是让青蛙安全地越过繁忙的高速公路和充满危险的池塘,安全地到达家中。 一个挑战是发行几个月前制定一个青蛙的克隆。但是,为什么可以在玩 Frogger 时克隆 Frogger?:) 考虑以下简化播放网格: XXXXXXXXXXXXXXXXXXXXXXX North Safe Zone ----------------------- | | <<<< Express Lane West (Lane 1) | | > Gridlock East (Lane 2) | | << Freeflowing Traffic West (Lane 3) | | < Gridlock West (Lane 4) | | >>>> Express Lane East (Lane 5) …

4
平铺,给定顶点配置
任务 给定顶点配置,任务是平铺多边形。 计分 您的分数等于您提交的内容达到的“复杂程度”。复杂度级别是累积的,这意味着要达到#3,您还必须支持#1和#2。 具有相同复杂度级别的提交通过字节计数来区分;最低的胜利。 输入值 输入是一个包含顶点配置的字符串,表示一个顶点图形。也就是说,以点分隔的整数列表,其中每个整数(n)表示一个正则n角,由一个公共顶点连接。 必须支持以下顶点配置: 3.3.3.3.3.3 3.3.3.3.6 3.3.3.4.4 (请注意,顺序反映在顶点图中,因此以下内容确实有所不同) 3.3.4.3.4 3.12.12 3.4.6.4 3.6.3.6 4.4.4.4 4.6.12 4.8.8 6.6.6 输出-复杂度级别1:顶点图形 在此复杂度级别上,输出是显示与给定输入相对应的顶点图形的图像。 输入前面带有一个F,表示应该输出顶点图形,而不是完整的图块。 例如,F3.6.3.6给出以下顶点图形: 输出-复杂度级别2:平铺 在此复杂度级别下,输出的图像是使用对应于给定输入的顶点图形显示均匀平铺的图像。 例如3.6.3.6给出以下平铺: 颜色或格式(没有漏洞)没有限制。 输出-复杂度级别3:双重平铺 在这种复杂性级别上,可以从每个切片形成“双重切片”。这是通过从每个多边形的中心到每个边界多边形的中心绘制线来实现的。 通过在输入前面加上来指定双重平铺V。 例如,V3.6.3.6给出以下双重平铺(红色):

3
排序一些苹果!
问题 想象一下,连续排着7个水桶。每个存储桶最多可包含2个苹果。有13个标记为1到13的苹果。它们分布在7个桶中。例如, {5,4}, {8,10}, {2,9}, {13,3}, {11,7}, {6,0}, {12,1} 其中0代表空白。苹果在 每个存储桶中的出现顺序无关紧要(例如{5,4}等同于{4,5})。 您可以将任何一个苹果从一个存储桶移动到相邻的存储桶,只要目标存储桶中有另一个苹果的空间。每一步都由您要移动的苹果的数量来描述(这是明确的,因为只有一个空白空间)。例如,应用移动 7 以上安排将导致 {5,4}, {8,10}, {2,9}, {13,3}, {11,0}, {6,7}, {12,1} 目的 编写一个程序,从STDIN读取一个排列并将其分类为以下排列 {1,2}, {3,4}, {5,6}, {7,8}, {9,10}, {11,12}, {13,0} 使用尽可能少的动作。同样,在苹果的出现顺序 中每个桶是不相关的。桶的顺序很重要。它应该输出用于对用逗号分隔的每个排列进行排序的动作。例如, 13, 7, 6, ... 您的分数等于解决以下安排所需的举动总数之和: {8, 2}, {11, 13}, {3, 12}, {6, 10}, {4, 0}, {1, 7}, {9, …

1
最小的覆盖面积,用于二次方性方差测试
挑战 找到可以通过查表测试二次残基集的最小基数(例如,模),以确定给定的非负整数n是否为理想平方。所有底数都必须小于或等于n的最大值的平方根。 给定类别n的基数最小的答案将赢得挑战。(这意味着可能有一个以上的获胜者。)n的类别为: Category Maximum allowed n Maximum allowed modulus/base ------------- -------------------- ---------------------------- 8-bit values 255 15 16-bit values 65535 255 32-bit values 4294967295 65535 64-bit values 18446744073709551615 4294967295 如果两个基数相等的平局出现平局,则平局将转到具有更大能力以较早地检测非平方的组。 如果没有找到完整的封面(对于32位和64位类别来说完全有可能),则获胜者将是一组从统计学上或经证明可排除最高百分比的非平方数的基数(无误)将正方形报告为非正方形)。有关不完整保险单的讨论,请参见下文。 背景 在许多数论应用中,会出现一个问题,即某个数n是否为一个完美的平方(0、1、4、9、16、25、36、49、64、81、100等)。测试的一个方法是否Ñ是正方形是测试是否地板(√N)2 = N,即是否圆形向下的平方根Ñ,平方时,还给Ñ。例如,floor(√123)²=11²= 121,它不是123,所以123不是正方形。但是楼板(√121)²=11²= 121,所以121是正方形。此方法适用于少量数字,特别是在可用硬件平方根运算的情况下。但是对于大量(数百或数千位)的数据,它可能会非常慢。 测试正方形性的另一种方法是使用二次残差表排除非正方形。例如,以10为底的所有平方必须有一个最终的(一位)数字,该数字为0、1、4、5、6或9。这些值构成以10为底的二次残差集。 -10号以0、1、4、5、6或9结尾,您知道它可能是方形的,因此需要进一步检查。但是,如果以10为底的数字以2、3、7或8结尾,则可以确定它不是平方。 因此,让我们看看另一个基础。以8为底​​的所有平方必须以0、1或4结尾,方便地,这只是8种可能性中的3种,这意味着一个随机数可能为平方的概率为37.5%,或者一个绝对数不是平方的概率为62.5%。这些比基数10给出的几率要好得多。(并且请注意,以8为底的模数运算只是一个逻辑与运算,而不是以10为底的模数除以10并除以余数。) 有更好的基础吗?好吧,是的,实际上。基础120有18种可能性(0、1、4、9、16、24、25、36、40、49、60、64、76、81、84、96、100和105),仅占15%可能是正方形的机会。而基数240更好,只有24种可能性,仅代表10%的可能是正方形。 但是,没有一个单独的基数可以单独确定平方度(除非它大于要测试的最大数,这是不切实际的)。一个单一的基地只能排除方形性。它不能最终验证方形性。只有精心选择的一组基础一起使用,才能最终验证整数范围内的直角性。 因此,问题就变成了:哪一组基形成最小的覆盖范围,这些覆盖范围一起可以确定性地推算出正方形度或非正方形度? 正确但非最小保障的示例 以盖子16为基础的盖子{3、4、5、7、8、11、13、16、17、19、23、25、29、31、37}足以确定底角的正方形或非正方形。所有 16位值0到65535。但这不是最小覆盖率,因为至少存在一个15基覆盖率,而且很容易发现。实际上,很可能存在较小的掩护-可能只有6或7个碱基。 但为说明起见,让我们看一下使用此16基覆盖集测试n的样本值。这是上述碱基集的二次残基集: Base m Quadratic …

2
X大于3,且X和Y之间至少相差2
我试图打败一些C ++。是否可以使这种情况更短? X > 3 & X - Y > 1 (当然,除了删除空白。) 所以,X至少4,但X >= Y + 2。 X和Y是[0,5]间隔中的整数。 我试图找到一些按位公式,但失败了。
11 code-golf  number  tips  c++  code-golf  popularity-contest  obfuscation  code-golf  c  code-golf  board-game  hexagonal-grid  code-golf  game  grid  code-golf  number  permutations  popularity-contest  math  graphical-output  number-theory  king-of-the-hill  code-challenge  compression  code-challenge  fastest-code  code-golf  math  ascii-art  animation  code-golf  popularity-contest  generation  counting  fastest-code  fastest-code  popularity-contest  image-processing  king-of-the-hill  code-golf  conversion  binary-tree  code-golf  math  number  rational-numbers  division  code-golf  restricted-source  hashing  atomic-code-golf  logic-gates  code-golf  function  code-challenge  puzzle-solver  ai-player  test-battery  popularity-contest  music  compression  code-golf  number  stack  atomic-code-golf  logic-gates  ascii-art  popularity-contest  code-golf  date  grid  code-challenge  game  code-golf  parsing  code-golf  math  geometry  sequence  popularity-contest  code-trolling  code-golf  string  restricted-source  code-golf  quine  king-of-the-hill  code-golf  math  code-golf  simulation  code-golf  ascii-art  code-challenge  sorting  optimization 

7
挫败LZMA2压缩
目标 创建一个或多个程序以共同破坏和修复文件,以防止LZMA2有效工作。打扰和修复例程必须是相互的,因此您可以准确地恢复原始文件。 目标 以普通UTF-8格式收集的莎士比亚作品(5,589,891字节) Wikimedia Commons 2013年度全分辨率图片(1,659,847字节) 压缩方式 Ubuntu /相关: xz -kz5 <infile> 视窗: 7z.exe a -txz -mx5 <outfile> <infile> 其他:使用压缩级别5的LZMA2压缩器将莎士比亚作品压缩为1570550字节±100字节。 得分;总和(一切以字节为单位,ls -l或dir它): 程序的大小(可逆地“破坏” /修复文件所需的总和) 大小之间的差异(绝对值): 莎士比亚的原始作品集和经过修改(未压缩)的副本。 原始照片和修改(未压缩)的副本。 大小差异或0,两者之间的较大者: 莎士比亚原始作品集减去修改后的LZMA2压缩副本。 原始照片减去修改后的LZMA2压缩副本。 例 得分不高,懒惰但符合标准的Python 2.x示例: import sys x = 7919 if sys.argv[1] == 'b' else -7919 i = bytearray(open(sys.argv[2], 'rb').read()) for …

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.