编程拼图和代码高尔夫

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

3
产生牛顿分形
你们都知道牛顿法可以近似函数的根,不是吗?我在此任务中的目标是向您介绍该算法的一个有趣方面。 牛顿算法仅针对某些但所有复杂的输入值进行收敛。如果您描绘了复杂平面上所有输入值的方法的收敛性,通常会得到一个漂亮的分形,如下所示: 图片来自维基共享资源 技术指标 此任务的目标是生成此类分形。这意味着,您将获得多项式作为输入,并且必须以您选择的格式将相应的分形作为图像打印输出。 输入项 输入是用空格分隔的复数列表。它们在风格写下来<Real part><iImaginary part>,这样的数字:5.32i3.05。您可能会假设输入数字的位数不超过4个且小于1000。它们中的第一个不能为零。例如,这可能是您程序的输入: 1 -2i7.5 23.0004i-3.8 i12 0 5.1233i0.1 数字被解释为从最高幂开始的多项式系数。在本说明书中的其余部分,输入多项式称为P。上面的输入等于这个多项式: f(x)= x 5 +(-2 + 7.5 i)x 4 +(23.0004-3.8 i)x 3 + 12 i x 2 + 5.1233 + 0.1 i 输入可能来自标准输入,传递给程序的参数或显示给程序的提示。您可以假定输入不包含任何前导或尾随空格字符。 渲染图 您必须通过以下方式渲染分形: 选择尽可能多的颜色作为P的根,再加上额外的颜色以发散 对于可见平面中的每个数字,确定方法是否收敛,如果是,则收敛到哪个根。根据结果​​为点着色。 不要打印标尺或其他花哨的东西 在这些点上打印一个黑点,这些点是定向的多项式根。每个根周围最多可以打印四个像素。 找到一种方式来选择可见平面,所有根都是可区分的,并且在可能的情况下在整个平面上广泛分布。尽管不需要完美放置输出框架,但我保留拒绝接受以不可接受的方式选择框架的答案的权利。总是在同一坐标上,所有根都在一个点上,依此类推。 输出图像的大小应为1024 * 1024像素。 渲染时间最长为10分钟 使用单精度浮点值就足够了 …

30
不使用+或-号添加
以前有很多“不做__ _ __的挑战”,但我希望这是最具挑战性的挑战之一。 挑战 您将要编写一个程序,该程序从STDIN中获取两个自然数(整数> 0),并将两个数字的和输出到STDOUT。我们面临的挑战是,你必须尽可能少的使用+和-迹象可能。不允许使用任何类似求和或求反的函数。 例子 输入 123 468 输出 591 输入 702 720 输出 1422 抢七局: 如果两个程序的+和-字符数相同,则获胜者是人数/ * ( ) = . ,和0-9字符少的人。 不允许:标准加/减和增/减运算符是除+或-不允许的符号之外的语言。这意味着不允许使用空白语言。

22
高尔夫代码:6174-卡普雷卡的神话常数
此问题是从Stack Overflow 迁移而来的,因为可以在Code Golf Stack Exchange上回答。 迁移 8年前。 为什么数字6174如此有趣?根据维基百科的定义 至少使用两个不同的数字,取任意四位数的数字。(允许前导零。) 按升序排列数字,然后按降序排列以获得两个四位数字,并在必要时添加前导零。 从较大的数字中减去较小的数字。 返回步骤2。 以上过程称为Kaprekar例程,最多7次迭代将始终达到6174。一旦达到6174,该过程将继续产生。 编写一个程序,对给定的四位数数字(请参见上面的定义)运行Kaprekar例程,以打印出例程的每个步骤。 规则: 提交的内容必须是完整的程序。 输入必须从标准输入中读取。从回显管道可以。 输入应为数字形式。 需要打印出前导零。(请参见下面的示例。) 最后一行应说明需要进行多少次迭代。标点符号是必需的。 例子: > 2607 7620 - 0267 = 7353 7533 - 3357 = 4176 7641 - 1467 = 6174 Iterations: 3. > 1211 2111 - 1112 = 0999 9990 - …

15
生成具有2,073,600种独特颜色的1920 x 1080图形
挑战: 编写一个程序,输出一个1920像素宽x 1080像素高的图形文件。图形中的2,073,600像素中的每个像素都必须是唯一的颜色,并且不得重复任何颜色值。颜色应以RGB指定,并从0,0,0开始,并依次向上计数至255,255,255。您会发现1920 x 1080像素的图像将仅包含许多黑色,蓝色和绿色。 例如,(较小的缩减版本)。如果将高度设置为5,将宽度设置为5,则将输出25像素的正方形图形,并且每个像素都是唯一的颜色。RGB颜色数组如下所示: Array ( [0] => Array ( [0] => 0 [1] => 0 [2] => 0 ) [1] => Array ( [0] => 0 [1] => 0 [2] => 1 ) [2] => Array ( [0] => 0 [1] => 0 [2] => 2 ) …

16
创建一个模拟时钟
创建一个模拟时钟 目标:使用任何编程语言来创建可工作的模拟时钟。 要求: 您的时钟应至少具有小时和分钟指针。 产生的时钟可以是图像,动画或ASCII艺术形式。 预计时钟会显示当地时间。 可选的: 除了分钟和小时指针,您还可以使时钟显示秒指针。 如果需要,您还可以将时区设置为可配置的。 您可以自由选择是否忽略或处理有关leap秒的问题。 如果用户调整系统时钟或发生日光变化,您可能会想想程序会发生什么。 由于这是一场人气竞赛,因此请发挥创造力,并画一些漂亮的时钟以备不时之需。除了我不会接受自己的答案外,大多数赞成者都胜出。 最后,建议(但不是必需)在答案中张贴时钟的至少一个屏幕截图(或在使用ASCII字体的情况下输出文本)。这样,人们就无需编译并运行它即可查看它的含义。 该问题旨在恢复已删除的问题。 请注意,它不是这个其他问题的重复。这个问题是要求ASCII艺术的代码高尔夫。这不限于ASCII艺术,而是流行性竞赛,因此预期答案会大不相同。

30
寻找“亚回文”。
查找字符串的所有唯一 “子回文” 的最短代码,即:任何长度大于1的子字符串都是回文。 例如1 input: "12131331" output: "33", "121", "131", "313", "1331" 例如2 input: "3333" output: "33", "333", "3333"

30
模拟7段显示
任务 任务是显示7段显示器的128种可能状态中的任何一种 。 你的程序应该接受7个字符(“位”)是一个字符串0或1。输入的第一位对应下图的A段,第二位对应B,依此类推(忽略dp): 显示的方式取决于您-单个Unicode或ASCII符号, ASCII艺术作品,粗体或其他任何形式。但是,每个输入必须具有自己的不同输出。如果您提出了一些幻想,我相信您可以通过展示一些例子来收获赞誉。 显示屏的全部128种可能状态为: 规则 高尔夫 就像我说的,任何类型的输出都是允许的,但是如果您指定它会很好。 输入可以是stdin或命令行参数。 例子 输入项 1101101 输出量 作为ASCII / Unicode: 2 不同种类的ASCII艺术(我不太擅长此事) _ ╺┓ ╒╗ --- _| ┏┛ ╔╝ | |_ ┗╸ ╚╛ --- | ---
24 code-golf 

8
撞球撞
给定一对撞球在撞击前的二维位置和速度,计算出完全弹性碰撞后的速度。假定这些球是具有相同半径,相同质量,均匀密度且无摩擦的理想球体(或等效地:圆形)。 输入由8个数字:p0x,p0y,v0x,v0y,p1x,p1y,v1x,v1y其中p0x,p0y是所述第一球,中心v0x,v0y其速度,并且类似地p1x,p1y,v1x,v1y,第二球。可以接受以任何顺序输入,并且在任何方便的方式结构化,例如,作为一个2x2x2的阵列,或者一个2×2阵列p和两个长度为2的数组为v0和v1。也可以使用复数(如果您的语言支持)而不是xy对。但是,您不应在非直角坐标系的坐标系中进行输入,即不允许使用极坐标。 请注意,撞球的半径是p0x,p0y和之间的距离的一半p1x,p1y,因此并未将其作为输入的明确部分给出。 编写一个程序或函数,以任何方便的笛卡尔表示形式输出或返回4个数字:的碰撞后值v0x,v0y,v1x,v1y。 可能的算法是: 找到穿过两个中心的法线 找到穿过两个中心之间的中点并垂直于法线的切线 改变坐标系和分解v0x,v0y,并v1x,v1y纳入其切线和正常组件v0t,v0n和v1t,v1n 交换的正常组成部分v0和v1,维护他们的切向分量 改回原始坐标系 测试(结果四舍五入到小数点后五位): p0x p0y v0x v0y p1x p1y v1x v1y -> v0x' v0y' v1x' v1y' [-34.5,-81.8, 34.7,-76.1, 96.2,-25.2, 59.2,-93.3] [ 49.05873, -69.88191, 44.84127, -99.51809] [ 36.9, 77.7,-13.6,-80.8, -7.4, 34.4, 15.1,-71.8] [ 5.57641, -62.05647, -4.07641, -90.54353] [-51.0, 17.6, 46.1,-80.1, 68.6, 54.0,-35.1,-73.9] [ …

18
计算超自由基
什么是超自由基 的ultraradical,或把基团,一个实数的被定义为五次方程的唯一实根。aaax5+x+a=0x5+x+a=0x^5+x+a=0 在这里,我们使用表示超自由基功能。例如,因为。UR(⋅)UR(⋅)UR(\cdot)UR(−100010)=10UR(−100010)=10UR(-100010)=10105+10−100010=0105+10−100010=010^5+10-100010=0 挑战 编写一个完整的程序或函数,将一个实数作为输入,然后返回或输出其超基数。 要求 不允许有任何标准漏洞。下面的测试用例的结果必须精确到至少6位有效数字,但通常程序应为任何有效的实数输入计算相应的值。 测试用例 提供9个小数点后四舍五入以供参考。添加了一些测试用例的说明。 a | UR(a) ---------------------------+--------------------- 0 | 0.000 000 000 # 0 1 | -0.754 877 (666) # UR(a) < 0 when a > 0 -1 | 0.754 877 (666) # UR(a) > 0 when a < 0 1.414 213 562 | …

20
1,2,4,8,16,…33?
挑战 编写一个函数/程序,以众所周知的数字顺序输出n第一个n元素或第一个元素: 1, 2, 4, 8, 16 ... 哦,等等...我忘记了前几个数字: 1, 1, 1, 1, 2, 4, 8, 16 ... 哎呀,我会增加一些其他措施: 1, 1, 1, 1, 2, 4, 8, 16, 33, 69, 146, 312, 673, 1463, 3202, 7050, 15605, 34705 ... 这些数字是由(零索引)公式给出的广义加泰罗尼亚语数字: a (n + 1 )= a (n )+ ∑k = 2n …

15
房间编号定位器
房间编号定位器 同事开会时给我错误的房间号时,我遇到了一种有趣的问题解决技术。时不时地,在开会的过程中,我们团队中的一个成员会给我发送错误的房间号,通常是因为他们急于在办公桌前用笨拙的手指输入错误的密钥。 有趣的是,到达错误的房间后,我通常可以通过想象一个数字键盘来猜测它们真正意味着的房间: 并猜测他们要按的相邻数字。 挑战 假设您的同事只输错了一位数字,那么您面临的挑战就是编写一个函数,该函数需要一个办公楼号码(000-999)并输出可能的错字解决方案。 下表显示了数字键盘上哪些数字彼此相邻: 0 -> 1,2 1 -> 0,2,4 2 -> 0,1,3,5 3 -> 2,6 4 -> 1,5,7 5 -> 2,4,6,8 6 -> 3,5,9 7 -> 4,8 8 -> 5,7,9 9 -> 6,8 输入项 3位数字:000-999。假设正好输入3位数字。如果数字小于100或小于10,则会为您提供前导零。(即004和028)。 输出量 可能的房间列表。只要房间号之间有分隔符,它就可以采用您想要的任何形式。(即空格,逗号,换行符等。)如果数字小于100或小于10,则可以或不可以将前导零作为输出,这取决于您。(即004可以是004 04 4028可以028 28) 测试用例(前导零是可选的): 008 -> 108, 208, 018, …
24 code-golf 

6
到坐标的距离
二维平面上有n个人。利用它们之间的距离,我们将找到它们的位置。要获得唯一答案,您必须做出四个假设: 至少有3个人。 第一人称位在(0,0)。 第二人称位置(x,0)对于x> 0。 第三个人处于(x,y)位置,且y> 0。 因此,您面临的挑战是编写一个程序或函数,该程序或函数将给出二维距离数组(其中D[i][j]给出人i与之间的距离),并j返回其坐标列表。您的答案必须准确到至少6位有效数字。以字节为单位的最短解决方案获胜。 例子 [[0.0, 3.0, 5.0], [3.0, 0.0, 4.0], [5.0, 4.0, 0.0]] => [[0.0, 0.0], [3.0, 0.0], [3.0, 4.0]] [[0.0, 0.0513, 1.05809686, 0.53741028, 0.87113533], [0.0513, 0.0, 1.0780606, 0.58863967, 0.91899559], [1.05809686, 1.0780606, 0.0, 0.96529704, 1.37140397], [0.53741028, 0.58863967, 0.96529704, 0.0, 0.44501955], [0.87113533, 0.91899559, 1.37140397, 0.44501955, 0.0]] …

4
三分球!那是什么
来自http://en.wikipedia.org/wiki/Triangle: 编写一个程序,该程序采用三个2d坐标元组(笛卡尔),并对这三个点描述的形状进行分类。 在几乎所有情况下,这些点都将描述不同类型的三角形。在某些退化的情况下,这些点将描述一个奇异点或一条直线。程序将确定以下哪个标签适用于所描述的形状: 点(3点同时发生) 直线(直线上3点-可以同时发生的点不超过2点) 等边的(3个边相等,3个角度相等) 等腰(2边相等,2个角度相等) 斜角(0边相等,0角度相等) 右(1个正好为π/ 2(或90°)的角度) 倾斜(0个角度正好为π/ 2(或90°)) 钝角(1个角度>π/ 2(或90°)) 急性(3个角度<π/ 2(或90°)) 请注意,对于某些上述形状,将应用上述标签中的多个。例如,任何直角也将是等腰或斜角。 输入项 该程序可以从STDIN,命令行,环境变量或任何适合您选择的语言的方法中读取3个输入坐标。 输入坐标可以格式化,但是对于您选择的语言来说很方便。可以假设所有输入数字相对于最终使用的数据类型都是正确的格式。 不能假设输入坐标的顺序。 输出量 程序将输出到STDOUT,对话框或任何适合您选择语言的显示方法。 输出将显示适用于由输入坐标描述的形状的所有标签。 标签可以以任何顺序输出。 其他规定 允许使用您语言的三角函数库/ API,但禁止任何专门计算三角形类型的API。 在确定角度或边长相等时,您可能最终会比较浮点值。如果一个值在另一个值的1%以内,则将两个这样的值视为“相等”。 标准的“漏洞”不再有趣 这是代码高尔夫球,因此最短的答案以字节为单位。 例子 Input Output (1,2) (1,2) (1,2) Point (1,2) (3,4) (5,6) Line (0,0) (1,1) (2,0) Isosceles Right (0,0) (2,1) (10,1) …

10
费马多边形数定理
Fermat的多边形数定理指出,每个正整数都可以表示为最多nnn 多边形的和。这意味着每个正整数都可以表示为最多三个三角形,四个正方形,五个五角形等的总和。您的任务是取一个正整数和一个整数,并输出相加为角整数。nnnxxxs≥3s≥3s \ge 3sssxxx 第个角整数,其中和可以用两种方法定义。非数学-Y方式是个 -gonal数可以构造为正多边形与两侧,各有长度的。例如,对于(三角数):nnnsssn≥1n≥1n \ge 1s≥3s≥3s \ge 3nnnssssssnnns=3s=3s = 3 请参阅此处以获取具有更大示例。sss math-y定义是通过使用的公式,它得出第个角数:P(n,s)P(n,s)P(n, s)nnnsss P(n,s)=n2(s−2)−n(s−4)2P(n,s)=n2(s−2)−n(s−4)2P(n, s) = \frac{n^2(s-2) - n(s-4)}{2} 这是在维基百科页面给出这里。 输入项 两个正整数和,条件为。您可以用您的语言以最自然的表示形式输入这些整数(十进制,一进制,教堂数字,整数值浮点数等)。sssxxxs≥3s≥3s \ge 3 输出量 整数列表,最大长度为,其中L的总和等于x,L中的所有整数都是s-角整数。同样,整数可以用您的语言以自然表示形式输出,并带有任何不同的,一致的分隔符(因此,十进制输出使用非小数字符,一进制输出使用不同的字符等)。LLLsssLLLxxxLLLsss 规则 输入或输出将永远不会超出您语言的整数限制 LLL不必订购 如果有多个可能的输出,则任何一个或全部都可以接受 这是代码高尔夫球,因此以字节为单位的最短代码获胜 测试用例 x, s => L 1, s => 1 2, s => 1, 1 5, 6 => …

23
用字母汤装满碗
我们似乎从来没有得到疲倦的字母相关的挑战... 食谱 给定 一串字母S,和 两个正整数M,N, 产生的字母表汤中的字母S占据的随机位置在矩形碗尺寸的M× N,框架由一个非字母,非空格字符来表示碗的边缘。 字母未使用的位置应显示为空格。请参阅下面的示例。 附加规则 尺寸M× N指的是内部的碗。包括轮辋在内的尺寸为M+2× N+2。 每个字符S应在碗中一次出现在不同的位置;也就是说,一个字符不能覆盖另一个字符。 S 可能包含重复项。例如,如果S是字符串'abcc',汤必须包含一个a,一个b,两个c(都在不同的位置)。 输入将满足限制 M >= 1,N >= 1,1 <= length(S) <= M*N。 碗的边缘可以是任何非字母,非空格字符,在程序运行和输入值之间保持一致。 碗中的字母位置是随机的,因此每次使用相同的输入运行程序时,结果可能会有所不同。 给定输入,每个可能的字母位置集应具有非零概率。由于无法从程序的一些实现中进行检查,因此请说明您的代码如何实现此目的。 允许在边框周围使用前导或尾随空格。 S将仅包含大写字母。如果愿意,您可以选择仅采用小写字母。 输入和输出像往常一样灵活。例如,输出可以是带有换行符的字符串,2D字符数组或行列表。 允许使用任何编程语言编写程序或功能。禁止出现标准漏洞。 以字节为单位的最短代码获胜。 例子 输入显示为S, [M N],其中M是行N数和列数。该字符#用于边框。 'O', [1 1]: ### #O# ### 'HEY', [1 3]: ##### #YHE# ##### 'HELLO', …

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.