编程拼图和代码高尔夫

编程益智爱好者和代码高尔夫球手的问答

9
交替符号矩阵验证
一个交替的符号矩阵是n由n组成的数字矩阵-1,0,1,使得: 每行和每一列的总和为1 每行和每列中的非零条目以符号交替 这些矩阵概括了置换矩阵,并且对于给定n的时间,此类矩阵的数量令人关注。它们在计算矩阵行列式的Dodgson凝聚方法(以Charles Dodgson命名,更名为Lewis Carroll)中自然发生。 以下是4 x 4交替符号矩阵的一些示例: 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 -1 1 1 0 -1 1 1 0 0 0 0 1 -1 1 1 …

7
发送宇宙电话
在宇宙呼叫是在1999年和2003年送入太空的消息它是由23幅127 * 127px的单色位图图像,详见这里。 您的任务是编写一个程序,以文本(由零,一个和换行符组成)或图像(在屏幕上绘制或保存在磁盘上)显示整个127 * 2921px消息。获奖者分为两类:一类是文本输出,一类是图像输出。 除常见漏洞外,所有技巧都允许。 允许单独输出23页。 最多可以编写23个程序(例如每页一个),并对其大小求和以确定分数。 最多可以与您的程序一起使用23个二进制文件。他们的体重计入您的分数。 最短的代码(以字节为单位)获胜。 每像素1位,图像包含127 * 127 * 23/8 = 46370字节+ 7位数据。(警告:如果将像素值存储到46371字节,则不允许输出额外的零) 文本输出允许尾随换行符/空格。 除了宇宙调用的黑色像素以外,视觉输出不能包含任何黑色像素。可以将其绘制在一列中(顺序正确),也可以分成23张图像,也可以将其动画化(例如gif),也可以正确顺序排列。 附件:文本输出和图像输出以重现:

18
谐波系列的分母
之前,我们对数字进行了伪析因运算,即从1到的数字的LCM n。 将分数相加会很有用。 但是,我们发现的分母为1/1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/6,20而不是的伪因式6为60。 您的任务是找到1/1 + 1/2 + ... + 1/n给定正整数的分母n。 测试用例 n result 1 1 2 2 3 6 4 12 5 60 6 20 7 140 8 280 9 2520 10 2520 11 27720 12 27720 13 360360 …

12
地理语言
Geobitsian语言是一种新的英语变体,其中一个单词被分成多个段,每个段必须以不同的字母开头。然后,每当这些起始字母之一出现在另一个字符串中时,它就会被其相应的整个段替换,从而保持大写。 此过程称为Geobitsizing。 例如“ Geobits ” 这个词可以被分解成geo bits废话诗。 Algy met a Bear A Bear met Algy The Bear was bulgy The bulge was Algy 将与它进行地理位 Algeoy met a Bitsear A Bitsear met Algeoy The Bitsear was bitsulgeoy The bitsulgeoe was Algeoy 因为每个g变成geo,每个G(尽管没有)变成Geo,每个b变成bits,每个B变成Bits。 注意,每个替换都是针对原始字符串执行的,而不是任何中间步骤。例如,如果geo已经gbo取而代之的是,b的产生不会与更换bits。 挑战 编写一个程序或函数,可以生成地球人的语言。 接受由小写字母(az)和空格组成的单行字符串。这将是用作Geobitsizing参数的单词,并用空格分隔各段。您可以假设: 细分不会为空。因此空格将不会彼此相邻,也不会位于字符串的开头或结尾。 每个段均以不同的字母开头。因此,不能超过26。 例如,你必须支持一些有效的分割字符串是geo bits,butt ner,alex,和do …
16 code-golf  string 

4
正确的数字加法得到很多的8
受到这个问题的启发,这个问题进一步启发了这个问题,编写了一个程序,该程序采用两个整数并将其以独特的方式相加,方法是对用于在7段显示器中显示它们的段执行“或”运算。供参考,数字以以下方式表示: _ _ _ _ _ _ _ _ | | | _| _| |_| |_ |_ | |_| |_| |_| | |_ _| | _| |_| | |_| _| 请注意,1使用右侧的两个段,而不是左侧的两个段。有两种可以用这种方式产生的特殊字符,它们不是数字。请参阅以下附加表: | 0 1 2 3 4 5 6 7 8 9 --+-------------------- 0 | 0 0 8 8 8 …

1
将ASCII框图转换为Unicode
我无耻地发布了对我实际上有用的请求。任务是拍摄像这样的任意ascii框图 | +----+----+ | state A +---+ +---------+ | | +----v----+ | state B | +---------+ ...并使用unicode框绘图字符将其转换为更漂亮的内容,例如 │ ╭────┴────╮ │ state A ├───╮ ╰─────────╯ │ │ ╭────v────╮ │ state B │ ╰─────────╯ 更详细地: 仅转换+-| 字符-其他字符应保持不变 采用 装箱图灯(U + 2502)│ 方框图卧式(U + 2500)─ 方框图上下左右光弧(U + 256D)╭ 方框图上下左右光弧(U + 256E)╮ 方框图向上和向左轻弧(U + …

10
果酱不要那样添加
背景 果冻的算术原子自动矢量化。实际上,只要x和y y是数字或数字的参差不齐的数组。Jelly的源代码使用通用矢量化程序实现了此行为,但是对于这一挑战,我们将仅考虑将整数和嵌套的整数数组相加。 定义 限定的深度X为0,如果X是一个整数,如1,如果它是整数(可能是空的)平面阵列,并且作为n + 1个,如果它包含深度的至少一种元素Ñ和无深度的元素K> ñ。 这样,1的深度为0,[]和[1]和[1,1]的深度为1,[[],[]]和[[1],[1]]以及[[1]]和[1 ,[]]的深度为2,[1,[1,[1]]]的深度为 3,依此类推。 操作X + Y的定义如下。 如果x和y的深度为0,则返回它们的和。 如果x和y具有相等但正的深度,则将+递归应用于x的所有项和y的对应项。 如果x和y的长度不同,则将较长数组的尾部附加到和数组。 返回结果。 如果x的深度严格小于y的深度,则对x和y的所有项递归应用+,并返回结果。 如果y的深度严格小于x的深度,则相反。 例如,考虑操作[1,[2,3],[4]] + [[[10,20],[30],40,50],60]。 左参数的深度为2,而右参数的深度为3,因此我们计算[1,[2,3],[4]] + [[10,20],[30],40,50 ]和[1,[2,3],[4]] + 60。 [1,[2,3],[4]]和[[10,20],[30],40,50]都具有深度2,因此我们计算出1 + [10,20],[2,3] + [30]和[4] + 40。 1 + [10,20] = [1 + 10,1 + 20] = [11,21] [2,3] + [30] …

3
在尽可能短的时间内找到该数字难题的所有解决方案
历史 我的公司每周向公司内的每个人发送时事通讯。这些新闻通讯中包括一个谜语,并向公司中第一个向上一周的谜语发送电子邮件/提供解决方案的人大喊大叫。对于科技公司来说,这些谜语大多数都不是小事,而且平淡无奇,但是几个月前,有一个引起了我的注意。 原始谜语: 鉴于以下形状: 您具有从1到16的自然数。将它们全部适合此形状,以使所有连续的行和连续的列总计为29。 例如,以下是该难题的一种解决方案(这是我提交给时事通讯的“规范”解决方案): 但是,在解决此问题的过程中,我发现了一些相当有趣的信息: 解决方案远远不止一种。实际上,有9,368解决方案。 如果将规则集扩展为仅要求行和列彼此相等,而不必等于29,则会得到33,608个解决方案: 4,440个解决方案,总计27个。 7,400个解决方案,总计28个。 9,368个解决方案,总计29个。 6,096个解决方案,总计30个。 5,104个解决方案,总计31个。 1,200个解决方案,总计32个。 因此,我和我的同事们(尽管大多数情况下只是我的经理,因为他是我之外唯一拥有“通用”编程技能的人)开始了一个挑战,这个挑战持续了一个月的大部分时间-我们还有其他实际工作,我们必须承担的相关义务—尝试编写一个程序,以最快的方式找到每个解决方案。 原始统计 我编写的用于解决该问题的第一个程序只是反复检查随机解,并在找到解时停止运行。如果您已经对这个问题进行了数学分析,那么您可能已经知道这不应该起作用。但是以某种方式我很幸运,该程序只花了一分钟时间就找到了一个解决方案(我在上面发布了一个解决方案)。重复运行该程序通常要花费10到20分钟,因此显然这不是严格解决问题的方法。 我切换到了“递归解决方案”,该解决方案遍历了难题的每个可能排列,并通过消除未加总和而一次丢弃了很多解决方案。IE,如果我正在比较的第一行/列已经不相等,那么我可以立即停止检查该分支,因为知道拼图中没有其他排列会改变这一点。 使用这种算法,我获得了第一个“正确”的成功:该程序可以在大约5分钟内生成并吐出所有33,608个解决方案。 我的经理采用了另一种方法:根据我的工作,得知唯一可能的解决方案的总和为27、28、29、30、31或32,他编写了一个多线程解决方案,仅检查那些特定值的可能总和。他设法使程序仅在2分钟内运行。所以我又重复了一次。我对所有可能的3/4位和进行了哈希处理(在程序开始时;在总运行时中进行了计数),并使用行的“部分和”来基于先前完成的行查找剩余值,而不是测试所有剩余值,并将时间减少到72秒。然后,使用一些多线程逻辑,我将其缩短到40秒。我的经理将程序带回家,对程序的运行方式进行了一些优化,并将其降低到12秒。我对行和列的评估重新排序, 一个月后,我们中每个人获得程序最快的是我的经理0.15秒,我的0.33秒。最后,我声称我的程序更快,因为我经理的程序虽然找到了所有解决方案,但并未将它们打印到文本文件中。如果他在代码中添加了该逻辑,则通常需要花费0.4-0.5秒以上的时间。 我们既然允许我们内部的个人挑战生存,当然,问题依然存在:可这一计划进行得更快? 这就是我要对你们提出的挑战。 您的挑战 我们根据“ 29之和”规则放宽的参数改为“所有行/列的总和相等”,我也将为你们设置该规则。因此,面临的挑战是:编写一个程序,以在尽可能短的时间内找到(并打印)此难题的所有解决方案。我将为提交的解决方案设置一个上限:如果该程序在相对不错的计算机(小于8岁)上花费10秒钟以上,则可能太慢而无法计算。 另外,我还有一些难题的奖励: 您能否概括该解决方案,使其适用于任何16个数字集,而不仅是int[1,16]?时间分数将根据原始提示号集进行评估,但会通过此代码路径传递。(-10%) 您是否可以用能很好地处理和解决重复编号的方式编写代码?这并不像看起来那样简单!“视觉上相同”的解决方案在结果集中应该是唯一的。(-5%) 你能处理负数吗?(-5%) 您也可以尝试生成处理浮点数的解决方案,但是,如果完全失败,请不要感到震惊。如果您确实找到了一个可靠的解决方案,那可能值得大笔奖励! 出于所有目的和目的,“轮换”被视为唯一的解决方案。因此,只是一个不同解决方案的轮换解决方案将被视为自己的解决方案。 我在计算机上使用的IDE是Java和C ++。我可以接受其他语言的答案,但您可能还需要提供一个链接,以获取可以为您的代码轻松设置运行时环境的位置。

2
猫会去哪里?(轨道力学)
一只几乎没有质量的猫在(x, y, z)速度点上坠落在太空中(不用担心,有了宇航服和所有东西)(vx, vy, vz)。在该点有一个固定的,无限密集的行星(体积为0),(0, 0, 0)它r以加速度吸引远处的物体1/r^2。根据牛顿引力,物体在时间之后会流向何处t? 在这种情况下,几乎无质量表示您正在输出的值lim (mass --> 0) <position of cat>。质量受行星重力的影响,但行星不受猫重力的影响。换句话说,中央主体是固定的。 这有点类似于Code Golf:太空船的命运是什么?[浮点版本],但这有所不同,因为它测量的是精度。 您可以实施基于仿真的解决方案,该方案必须在3秒以内运行,或者您可以实施提供准确值的程序(也必须在3秒以内运行)。请参阅下面的评分详情。如果您执行模拟,则不一定要精确,但是由于不准确,您的分数会降低。 输入:x y z vx vy vz t,不一定是分别表示x,y,z坐标,分别在x,y和z方向上的速度和时间的整数。可以保证猫的速度严格小于该高度下的逃逸速度。输入可以从任何地方进行,包括函数的参数。对于,该程序必须在我的笔记本电脑上运行不到三秒钟t < 2^30,这意味着,如果您正在运行模拟,则必须相应地调整时间步长。如果您打算为每个测试用例都达到3秒的限制,请确保有一个可调整的参数,该参数可使速度提高更为准确/不太准确,以便我可以在计算机上运行三秒钟。 输出:x y z,时间后的位置t。 由于两体问题可以完美解决,因此从理论上讲有可能获得完美,正确的答案。 计分:对于任何测试用例,错误定义为输出与“ true”输出之间的距离。真正的输出定义为测试用例代码段生成的输出。如果误差小于10^(-8),则将误差四舍五入为零。您的分数是100个(或更多)随机测试用例的平均错误。如果您写出的答案非常准确,您的分数应为0;否则,您的分数为0。得分最低的获胜者,并且按码长打破平局。 测试用例: 1 0 0 0 -1 0 1000000000 --> 0.83789 -0.54584 0 在这种情况下,轨道是周期为2 * pi的完美圆形,因此,在绕转159154943次后,猫的视线约为(0.83789,-0.54584)。这不是测试您的代码的测试用例;但是,如果您提交的答案非常准确,则可能需要对此进行测试。 下面的代码片段会随机生成其他测试用例,并将用于判断提交的内容;让我知道是否存在错误: 显示代码段 var …

15
找到第n个完美的力量!
一个完美的力量是形式a**b,地点a>0和地点的数量b>1。 例如,125是完美的功效,因为它可以表示为5**3。 目标 n给定正整数,您的任务是编写找到第- 个完美幂的程序/函数n。 眼镜 第一个完美的力量是1(是1**2)。 以任何合理的格式输入/输出。 允许内置。 更多信息 OEIS A001597 计分 这是代码高尔夫球。以字节为单位的最短解决方案获胜。 测试用例 input output 1 1 2 4 3 8 4 9 5 16 6 25 7 27 8 32 9 36 10 49

10
从潜在的巨大文件中读取n条随机行
这个挑战是关于从潜在的巨大文件中读取随机行,而不是将整个文件读取到内存中。 输入值 整数n和文本文件的名称。 输出量 n 文本文件的多行随机选择而不替换。 您可以假定该n值在文件行数的范围内(1)。 n从您得到的答案是一致的范围内随机抽样数字时,请当心。rand()%n例如,C中的代码不一致。每个结果都必须具有同等的可能性。 规则与限制 文本文件的每一行将具有相同数量的字符,并且最多不超过80个字符。 您的代码不得读取文本文件的任何内容,但以下情况除外: 它输出的那些行。 第一行计算出文本文件中每行有多少个字符。 我们可以假设文本文件中的每个字符仅占用一个字节。 行分隔符假定为1个字节长。解决方案仅在指定此需求时才可以使用2字节长的行分隔符。您还可以假设最后一行由行分隔符终止。 您的答案应该是完整的程序,但是您可以通过任何方便的方式指定输入。 语言和图书馆 您可以使用任何喜欢的语言或库。 笔记 人们担心要计算文件中的行数。正如nimi在注释中指出的那样,您可以从文件大小和每行字符数推断出这一点。 动机 在聊天中,有人问这是否真的是“没有Y的X”。我解释这是为了问这些限制是否异常人为。 从海量文件中随机采样行的任务并不罕见,实际上我有时必须要做。一种方法是在bash中: shuf -n <num-lines> 但是,这对于大型文件来说非常慢,因为它会读取整个文件。

8
转换矩阵
编写将矩阵A(矩阵的维的最大值为100)转换为新矩阵B的程序或函数。新矩阵B的每个元素都是矩阵A对应元素的正邻居之和。 。 仅考虑四个正交方向上的邻居,并且边缘不环绕。 输入示例: 1 2 3 4 -1 -2 -3 -4 10 1 2 10 输出: 6 4 2 1 6 13 5 12 10 2 11 12 规则: 输入为整数。 这是一个代码高尔夫球,因此以字节为单位的最短代码获胜。
16 code-golf  math  matrix 

20
分解一个数字!
您的任务是使用以下格式分解数字。 这与基本转换类似,不同之处在于digits,您列出了values,而不是在基本列表中列出,这样列表就加到了输入上。 如果给定的基为n,则列表中的每个数字都必须采用的形式k*(n**m),其中0<=k<n和m在整个列表中都是唯一的。 眼镜 任何合理的输入/输出格式。您的程序/功能需要2个输入并输出一个列表。 输出列表可以是任何顺序。 0 可以排除或包含。 0允许领导。 允许内置。 测试用例 number base converted list input1 input2 output 123456 10 [100000,20000,3000,400,50,6] or [6,50,400,3000,20000,100000] 11 2 [8,2,1] or [0,0,0,0,8,0,2,1] 727 20 [400,320,7] 101 10 [100,1] or [100,0,1] 计分 这是代码高尔夫球。以字节为单位的最短解决方案获胜。
16 code-golf  number  sequence  number-theory  base-conversion  code-golf  bitwise  hashing  code-golf  string  ascii-art  whitespace  code-golf  math  code-golf  code-golf  image-processing  counting  code-golf  math  arithmetic  checksum  code-golf  code-golf  math  arithmetic  number-theory  code-golf  array-manipulation  random  code-golf  string  code-golf  math  ascii-art  base-conversion  code-golf  graphical-output  geometry  3d  code-golf  math  linear-algebra  matrix  code-golf  math  number  sequence  code-golf  array-manipulation  code-golf  math  matrix  linear-algebra  code-golf  number  sequence  counting  code-golf  string  code-golf  string  restricted-source  quine  sorting  code-golf  string  geometry  code-golf  string  code-golf  networking  code-golf  base-conversion  code-golf  math  matrix  code-golf  arithmetic  linear-algebra  matrix  code-golf  number  arithmetic  grid  code-golf  number  source-layout  code-golf  string  bitwise  checksum  code-golf  array-manipulation  code-golf  string  probability-theory  code-golf  tips  code-golf  sequence  code-golf  string  math  sequence  calculus  code-golf  string  palindrome  bioinformatics  code-golf  math  combinatorics  counting  permutations  code-golf  parsing  logic-gates  code-golf  arithmetic  number-theory  combinatorics  code-golf  math  sequence  polynomials  integer  code-golf  string  ascii-art  chess  code-golf  string  code-golf  number  code-golf  string  ascii-art  parsing  code-golf  code-golf  number  natural-language  conversion  code-golf  arithmetic  code-golf  string  code-golf  ascii-art  decision-problem 

4
紧密连接的组件
如果图形中存在彼此之间的路径,则有向图中的两个不同的顶点将牢固连接。图的强连接组件是图的子集,以使子集中的每对不同的顶点都牢固连接,向子集中添加更多的顶点会破坏此属性。 您面临的挑战是将图分离为其紧密连接的组件。具体来说,您必须输出图中的所有SCC。 输入/输出: 作为输入,您可以使用有向边列表,邻接列表,邻接矩阵或任何其他合理的输入格式。询问您是否不确定。您可以假设图形没有完全断开的顶点,并且不存在自身边,但是您可以不做任何进一步的假设。您也可以选择将顶点列表以及顶点数量作为输入。 作为输出,您必须给出顶点的分区,例如顶点列表的列表(其中每个子列表是一个紧密连接的组件),或者给出顶点的标签(其中每个标签对应于一个不同的组件)。 如果使用标签,则标签必须是顶点或连续的整数序列。这是为了防止将计算拖到标签中。 例子: 这些示例获取边的列表,其中每个边从第一个条目指向第二个条目,并输出分区。您可以自由使用此格式或其他格式。 输入在第一行,输出在第二行。 [[1, 2], [2, 3], [3, 1], [1, 4]] [[1, 2, 3], [4]] [[1, 2], [2, 3], [3, 4]] [[1], [2], [3], [4]] [[1, 2], [2, 1], [1, 3], [2, 4], [4, 2], [4, 3]] [[1, 2, 4], [3]] [[1, 2], [2, …

30
交替符号序列
介绍 对于每个非零整数,数字的符号可以是+或-。零本身是无符号的(+0与相同-0)。在下面的序列中,我们将在正号,零和负号之间交替。该序列以开头1,因此我们1用一个正号,零(这个数字很奇怪,但是我们将数字乘以0)和一个负号来写: 1, 0, -1 下一个数字是2,我们再次执行相同的操作: 2, 0, -2 最终的顺序是: 1, 0, -1, 2, 0, -2, 3, 0, -3, 4, 0, -4, 5, 0, -5, 6, 0, -6, 7, 0, -7, ... 或者更具可读性的形式: a(0) = 1 a(1) = 0 a(2) = -1 a(3) = 2 a(4) = 0 a(5) = …

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.