Questions tagged «code-golf»

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

2
以二进制输出四元虚数基数
编写一个函数或程序,输出显示为二进制数字的Quater-虚数基数。基数为2 i,其中i是-1的平方根。有关i的更多详细信息,请参见复数。每个数字位置可以从0到3(四进制),因为每个实数和虚数部分的大小是前一个实数和虚数部分的-4倍。是二进制的季位数如下:,,及。0: 001: 012: 103: 11 数字位置细分: re im 16 -8i -4 2i 1 -0.5i, etc. 4 0 1 0 3 0 0 (quaternary representation) 01 00 11 00 00 (binary representation) 数字100110000是1x16 + 3x-4 = 16 + -12 = 4。 re im 16 -8i -4 2i 1 -0.5i, etc. …

1
在圆形交叉点中查找专用区域
这是给您一个看似具有挑战性的几何难题! 给定一个圆A和n其他圆B[n],找出包含在A其中的总面积不在的任何圆之内B。 您的代码应尽可能短。 输入项 您的输入应包含以下信息: 一个浮点数,表示圆的半径A。 浮点数列表,用于表示中的圆半径B。 中的圆心列表B。您的程序可能期望中心在极坐标或笛卡尔坐标中。 (可选)您可能会收到nB中的圆圈数。此输入不是必需的。 假定圆心A是原点,即点(0, 0)。 这是保证没有两个圈子里B是相同的,但不保证:1,各界B相交A,各中心B在外面A,或没有两个圆B相交。确保您的解决方案可以处理各种边缘情况。 您可以以任何顺序接收输入,包括文本输入(通过stdin或您的语言的等效语言),函数参数或命令行参数的形式。 如果选择接收文本输入,则输入之间应有一个或两个字符的可打印ASCII分隔符。 输出量 您的程序或函数应输出一个浮点数,该数字代表A不在的任何圆圈内的总面积B。对于所有测试用例,您的答案应至少精确到三个有效数字。 通用代码高尔夫球规则适用。 您的解决方案不应依赖圆内的采样点来确定面积。 不允许使用自动定位圆的交点,在圆的交点内查找区域或立即解决此问题的内置函数。 测试用例 在每个图像中,圆圈A以蓝色勾勒出轮廓,圆圈B以绿色勾勒出黑色轮廓。应返回的区域以红色填充。 (特别感谢Rainer P.检查我的解决方案) 测试用例1: A = {x: 0, y: 0, rad: 50} B[0] = {x: 0, y: 0, rad: 100} Result: 0.00 测试案例2: A = {x: 0, y: 0, rad: …

5
2016年以比特币开采!PCG.SE新年拼图2016
在比特币协议中,2016是一个非常特殊的数字。每2,016个块调整一次查找哈希值以创建新块的“难度”,大约每两周更改一次。 选择该数字是因为难度会自行调整,因此发现每个区块大约需要10分钟,并且在两周内有2×7×24×6 = 2,016十分钟的时间段。 为了纪念这种数字上的巧合,今年新年的问题是关于比特币的-特别是,它用于签署块SHA-256的哈希算法。 您的任务是创建一个程序,该程序将接受字节输入(至少为ASCII)并输出字节(以您选择的格式)的随机数,该随机数将产生SHA-256哈希,其中包含 2016在它的base64表示时附加到原来的字节输入。 以下是一些有效解决方案的示例,这些示例由人们已经产生的引擎以及产生的哈希表提供: > foo Nonce: 196870 SHA256 hash: OCUdDDtQ42wUlKz2016x+NROo8P2lbJf8F4yCKedTLE= > bar Nonce: 48230 SHA256 hash: CNcaOCQgT7bnlQzQPXNwuBu8/LYEdk2016khRaROyZk= > happynewyear Nonce: 1740131 SHA256 hash: XsKke6z2016BzB+wRNCm53LKJ6TW6ir66GwuC8oz1nQ= > 2016 Nonce: 494069 SHA256 hash: rWAHW2YFhHCr22016zw+Sog6aW76eImgO5Lh72u6o5s= (note: the nonces don't actually have to be ASCII numbers; you can do any …

14
构造ASCII拱门
我喜欢ascii艺术,并且很无聊,所以我找到了一些ascii角色并开始制作随机物品,8位马里奥城堡,迷宫和拱门。我发现拱门可以轻松地以整齐的方式堆叠。 ╔═══════╗ ║╔═════╗║ ║║╔═══╗║║ ║║║╔═╗║║║ ╨╨╨╨─╨╨╨╨ 挑战 创建一个程序,函数或任何其他可接受大于或等于0的整数的标准格式(除非您正在做奖金),并输出具有指定足弓数量的ascii art。 测试用例 输入: 7 输出: ╔═════════════╗ ║╔═══════════╗║ ║║╔═════════╗║║ ║║║╔═══════╗║║║ ║║║║╔═════╗║║║║ ║║║║║╔═══╗║║║║║ ║║║║║║╔═╗║║║║║║ ╨╨╨╨╨╨╨─╨╨╨╨╨╨╨ 替代: +-------------+ |+-----------+| ||+---------+|| |||+-------+||| ||||+-----+|||| |||||+---+||||| ||||||+-+|||||| ||||||| ||||||| --------------- 输入: 1 输出: ╔═╗ ╨─╨ 替代: +-+ | | --- 如果整数为0,则不输出任何内容 这个问题将在utf-8中进行,每个字符都将计为一个“字节” 这是codegolf,因此最短的答案会获胜。 您可以选择使用+-+代替╔═╗,---代替╨─╨,和|代替║ 奖励(尚未决定是否允许在替代版本上使用,因为它不会那么难) 如果程序支持负数并像这样翻转拱门,则为-10% ╥╥╥╥─╥╥╥╥ ║║║╚═╝║║║ …

8
排序串联的序列
考虑一个基于递归关系的序列f(n) = f(n-1)+f(n-2),以开头f(1) = x1, f(2) = x2。对于x1 = 2, x2 = 1,序列开始如下: 2 1 3 4 7 11 18 29 47 76 123 199 322 521 843 将其串联成字符串将得到: 213471118294776123199322521843 现在,将该列表划分为的最小可能数y(n) > y(n-1)。从第一个数字开始,然后从第二个数字开始,等等。第一个输出数字应始终为一位数字。用所需的零数字填充最后一个数字。 2 13 47 111 829 4776 12319 93225 218430 您将以(x1, x2)任何方便的格式得到两个数字作为输入,而挑战是输出排序后的列表。 规则: 功能和程序还可以 初始序列应恰好有15个数字(最后一个数字是f(15))。 x1并且x2为非负数(可能为零)。 输出可以是任何方便的格式 y必须创建输出矢量,以便y2 …

3
阿比利亚秩序
一些背景 在数学中,组是一个元组(G ^,•)其中G ^是一组和•是上的操作ģ使得对于任何两个元素X和ÿ在ģ,X • ÿ也是ģ。 对于某些X,ÿ,ž在G ^,碱性基团公理如下: ģ被关闭 •下即X • ÿ在ģ 操作•是关联的,即x •(y • z)=(x • y)• z ģ具有身份元素,即存在È在ģ使得 X • Ë = X为所有X 操作•是可逆的,即在G中存在a,b使得a • x = y和y • b = x 好的,那是小组。现在我们将一个Abelian组定义为一个组(G,•),使得•是可交换运算。即,x • y = y • x。 最后定义。组的顺序(G,•),表示为| G |,是集合G中元素的数量。 任务 阿贝尔阶是整数n,因此每个n阶组都是阿贝尔阶。OEIS中的阿贝尔订单顺序为A051532。给定整数n,您的工作是产生此序列的第n个项(1索引)。您必须支持最大最大整数的输入,以便不会溢出。 输入可以来自函数参数,命令行参数,STDIN或任何方便的参数。 输出可以从函数返回,打印到STDOUT或任何方便的东西。什么也不要写到STDERR。 分数是字节数,最短获胜。 例子 …

16
输出部分产品
在长乘法中,将数字相乘后,剩下的是部分乘积,在此挑战中,您将输出这些部分乘积。 因为长乘法很长,所以要补偿您的代码将需要尽可能短。 例子 34, 53 102, 1700 48, 38 384, 1440 361, 674 1444, 25270, 216600 0, 0 0 1, 8 8 技术指标 输入/输出可以采用任何合理的格式,例如数组,逗号分隔的字符串(或任何其他不是数字的定界符),列表,函数参数等。 部分产品必须按升序排列。 如果部分产品是0,则可以选择是否要输出。 这是代码高尔夫球,因此以字节为单位的最短代码胜出!

9
数喷泉
甲喷泉位于行硬币的布置,使得各硬币触摸两个硬币行中在它下面,或者是底行中,并且底部的行连接。这是一个21硬币喷泉: 您的挑战是计算给定数量的硬币可以制造多少个不同的喷泉。 您将得到一个正整数作为输入 n。您必须输出n存在的不同-coin喷泉的数量。 标准I / O规则,禁止标准漏洞。解决方案应该能够n = 10在一分钟内计算出来。 所需的输出n = 1 ... 10: 1, 1, 2, 3, 5, 9, 15, 26, 45, 78 该序列为OEIS A005169。 这是代码高尔夫。最少的字节数获胜。

1
压扁的连字
以下是Unicode 中一些常见的连字的列表 (我可以使用Debian上的Compose键创建的连字): Orig Ascii Lig ae [ae] æ AE [AE] Æ oe [oe] œ OE [OE] Œ ij [ij] ij IJ [IJ] IJ ff [ff] ff fi [fi] fi fl [fl] fl ffi [ffi] ffi ffl [ffl] ffl 在此挑战中,您有两个选择:使用实际的UTF-8连字,或使用仅ASCII的变体。如果您使用实际的UTF-8连字变体,则可获得20%的奖金。如果您使用仅ASCII变体,则可以假定除了表示连字以外,方括号不会涉及。 挑战:给定字符串作为输入,输出相同的字符串 所有原始的连字都被扩展后的连字所代替。 贪婪地匹配:affib变成affib(a[ffi]b),而不是affib(a[ff]ib)或affib(af[fi]b)。 所有“扩展的”字母序列都被连字替换。 例如,æOEfoo([ae]OEfoo)变为aeŒfoo(ae[OE]foo)。 完全独立操作:ffi([ff]i)成为ffi(ffi),没有ffi ([ffi])。 听起来很简单?有一个陷阱:每次两个非连字恰好重叠 一个字符时,必须将两个连字都插入到字符串中。这里有一些测试用例来演示: Input …

2
打台球
在此代码高尔夫球中,您将必须确定在落入口袋中之前恰好击中n个垫子的最短击球的方向。 台球桌是具有以下特征的6口袋台球桌: 尺寸可变(a x b) 无摩擦:球将永远滚动直到落入口袋 口袋和球的大小几乎为零。这意味着仅当球具有相同的位置时,球才会落在口袋中。 球在开始时放置在左下角的孔中(但不会掉进去) 创建一个完整的程序或函数,该函数将表的尺寸(a,b)和要击中n个垫子的数量作为输入,并返回以最短路径度数精确击中n个垫子然后落入口袋的角度。 一 > 0 b > 0 0 <= n <10000000 0 < alpha <90(以度为单位)精度:至少10 ^ -6 例子 : 在a = 2,b = 1,n = 1的情况下,存在三种可能的路径:下图为(1)(2)(3)。数字(1)最短,因此输出应为atan(2)= 63.43494882292201度 对于该解决方案一个 = 2,b = 1,Ñ = 4是ATAN(4/3)= 53.13010235415598度 测试样品: a = 2, b = 1, …

6
展期日历
这是受到Downgoat在Sandbox中提出的问题之一启发的,我建议他将使用日/月格式的用户将4月31日作为Pi日,只是让他通知我没有4月31日! 给定日期字符串(可能是无效的月/日格式),请使用过渡输出正确的日期。(首先将月份展期,然后将一天展期)。 例子: “ 15/43” -这是第15个月的第43天。首先,我们将月份扩展到下一年,因此我们以3(3月)结束。现在,由于3月只有31天,因此我们将多余的日期延期到4月,因此我们将实际日期输出为“ 4/12”(4月12日)。 “ 3/16” -这是一个有效日期(3月16日)。照原样返回。 “ 12/64” -嗯,从12月64日开始有很多美好的回忆... 12月有31天,1月有31天,所以我真正的意思是“ 2/2”(2月2日)。 “ 19/99” -首先,19变成7(7月)。7月为31天,8月为31天,9月为30天,因此输出为“ 10/7”(10月7日)。 “ 1/99999” -一年有365天。99999(mod 365)=354。一年的354天是“ 12/20”。 “ 9999999/10” -显然,9999999(mod 12)= 3,所以它是“ 3/10”(3月10日)。 条件: 输入月份是大于0的整数。输入日期是大于0的整数。不需要指定年份,因为没有leap年需要处理。 更新: 我认为这会过分简化挑战,因此禁止使用日历功能(例如Java Calendar类中的日历功能)。尽管日期解析/格式化功能仍然允许。
17 code-golf  date 

4
拨动开关
在黑暗的房间中醒来后,您会看到带有相应开关的矩形灯光网格。您决定使用一个坐标系,其左下方的灯代表(1,1),并且坐标随着向上(y方向)和向右(x方向)的增加而增加。网格的相同之处在于,将(a,b)处的开关拨动可切换(a,b)处的光以及与()在同一列或同一行的光a,b)。 您的输入将是一个由两个不同的字符组成的矩形网格,分别表示打开和关闭(我分别使用1和0)。同样,输入的一部分将是一系列至少一个坐标对(具有所需的任何格式和分隔符)的序列,它们代表您要翻转的开关。 输出将是同一网格,在作为输入提供的每个坐标对上将应用“翻转”。您可以选择如何格式化输入,尽管输出必须是网格,而不是数组。 样品 样品输入1 111111 111111 111111 111111 (3,2) 样品输出1 110111 110111 000000 110111 样品输入2 01101 10100 00010 11111 10110 (1,1), (5,5) 样品输出2 00010 00101 10011 01110 01000 样品输入3 1 (1,1) 样品输出3 0 样品输入4 00000 11111 00000 11111 (2,3), (2,3) 样品输出4 00000 11111 00000 11111 这是代码高尔夫。适用标准规则。以字节为单位的最短代码获胜。
17 code-golf  grid 

2
每日最佳高尔夫#6:掷出d20
关于系列 首先,您可以像对待其他任何代码高尔夫挑战赛一样对待它,并回答它而不必担心系列赛。但是,在所有挑战中都有排行榜。您可以在第一篇文章中找到排行榜以及有关该系列的更多信息。 尽管我在本系列中有很多想法,但未来的挑战还没有定下来。如果您有任何建议,请在相关的沙箱帖子上让我知道。 第6洞:滚动d20 桌面RPG中最常见的模具是二十面模具(二十面体,通常称为d20)。掷骰子是您的任务。但是,如果您只是返回1到20之间的随机数,那将是微不足道的。因此,您的任务是为给定的模具生成一个随机的网。 我们将使用以下网络: 这是一个三角形带,因此可以很容易地将其表示为整数列表。例如,如果得到输入: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] 那将对应于以下骰子(有趣的事实:这是魔术师使用的网:聚会生命计数器/旋转骰子)。 但是,这不是唯一代表此死的网络。根据我们展开脸部的方式,有60种不同的蚊帐。这里还有两个: [1, 8, 9, 10, 2, 3, 4, 5, 6, 7, 17, 18, 19, 11, 12, 13, 14, 15, 16, 20] [10, …

9
七周期总和序列
看一下从7×0到7×9的7乘法表: 0, 7, 14, 21, 28, 35, 42, 49, 56, 63 如果只看一个人的数字,就可以得到数字0到9的排列: 0, 7, 4, 1, 8, 5, 2, 9, 6, 3 考虑采用某个正的十进制整数N并将N中的每个数字D替换为7×D处的数字。 例如,15209变得75403因为1映射到7,5映射到5,2映射到4,0映射到0,并9映射到3。 现在让我们用这个新的十进制整数重复此过程,直到看到一个循环,即直到我们已经看到的整数出现为止。 例如,有了15209周期 15209 -> 75403 -> 95801 -> 35607 -> 15209 -> repeats... ^ | cycle restarts here 再举一个例子,505周期短 505 -> 505 -> repeats... ^ | …

3
时间旅行的悖论
一个人有两个装置。 时间机器 -他可以通过思考来控制这台机器。它使他完全可以从过去或将来的任何时间点移动到另一个时间点(或什至现在的时间点)。请注意,如果他从B到A过去,那么从A到B的所有正常事件(时间机器,交流发电机除外)必须以完全相同的方式重复。然后从B点将他带回到A点。因此,单次行程会产生无限循环。 交流发电机 -意识到这个问题,他创建了另一台机器。他注意到,即使所有物理事件都在循环中重复出现,他的想法也可能有所不同。因此,该机器的设计也可以通过思想来控制。可以随时使用机器来提供相对于他使用时间的替代未来(但不能是过去)。 例 我将通过一个冗长的示例来解释所有细节。 1000 T+250 250 T+0 500 T-200 100 T-50 125 A 225 T-400 500 A 100 T-200 150 T-25 100 T+100 50 A 25 1000年过去了。现在是1000年。 他的旅行时间是1000到1250。 250年过去了。现在是1500年。 他从1500到1500旅行。这没有效果(可以忽略)。 500年过去了。现在是2000年 他从2000年到1800年旅行。 100年过去了。现在是1900年。 他从1900到1850年旅行。 125年过去了:但是,这次,他处于一个循环中,情况有所不同。50年从1850年到1900年。他回溯到1850年。另外50年从1850年到1900年。他再次回溯。经过25年,现在是1875年,因此完成了125年。 他使用交流发电机。现在存在着他现在所处的1875年的另一个未来。过去没有改变。 225年过去了。现在是2100年。 他从2100年旅行到1700年。 500年过去:从1700年到1875年通常为175年。不,他不会再遇到交流发电机,这意味着现在已经在1875年之后创造了第三个未来。正常情况下,过去325年,所以是2200年。 现在使用交流发电机无效(可以忽略),因为2200仅有一个尚未定义的未来。 100年过去了。现在是2300。 他从2300到2100旅行。 150年通过:从2100到2200正常通过100年。从2200年开始创建第二个未来。过去50年,现在是2250年。 他本应从2250年升至2225年。但是,现在在两个不同的时间轴中存在两个2225年。因此,这导致了一个悖论,因为我们无法确定他将到达哪个时间点。(我们不会假定他去了最近的时间轴)因此,这终止了我们的仿真。 100 T+100 …
17 code-golf 

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.