编程拼图和代码高尔夫

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

20
我超过速度限制了吗?
给定一个ASCII艺术道路,我花了时间去跨过它,告诉我,如果我是超速行驶。 单位 距离以的任意单位表示d。时间以的任意单位表示t。 马路 这是一条简单的路: 10===== 的10装置10 d每t。那是道路的速度极限。这条路有5 =s,所以它d是5。因此,如果我以0.5越过那条路t,我d每10条走10条t,因为5 / 0.5 =10。那条路的速度限制是10,所以我一直在速度限制之内。 但是,如果我越过该道路在0.25 t,我去20 d每t,因为5 / 0.25 = 20。即道路的速度限制是10,所以我去10超速。 实例与计算 请注意,输入1是我花在道路上的时间,输入2是道路本身。 这是一条复杂的路: Input 1: 1.5 Input 2: 5=====10===== 在第一条道路上(最初的5 =秒钟),我本可以(合法)行驶的最快速度是5 d分t。因为5(距离)除以5(速度限制)是1,所以我在那条路上走得最快的速度是1 t。 在下一条道路上,速度极限是10,距离也是5,我可以越过的最快速度是0.5(5/10)。最小时间总计为1.5,这意味着我完全达到了速度极限。 注意:我知道,我在一条道路上的行驶可能确实非常快,而在另一条道路上的行驶速度确实很慢,但仍以1.5交叉,但此处假定最佳。 最后一个例子: Input 1: 3.2 Input 2: 3.0==========20=== 第一条道路为10长,速度限制为3,因此最短时间为3.33333 ...(10/3)。 第二条路长3,速度限制为20,因此最短时间为0.15(3/20)。 总的时间结果是3.483333333 ...我在3.2中越过了,所以我不得不超速行驶。 笔记: 如果我毫无疑问要超速行驶,则必须输出一个不同的值,如果我可能不是,则必须输出另一个不同的值。 您的程序或函数可能需要输入或输出以尾随换行符,但请在您的提交中说明。 您的第一个输入将是我的速度。这将是一个正浮点数或整数或字符串。 …

7
画Reutersvärd的三角形
这个不可能的对象是Reutersvärd的三角形: 根据以下规则绘制自己的版本: 总共恰好9个立方体 每边正好由4个立方体组成 立方体似乎重叠,因此渲染的对象实际上是不可能的对象 使用4种不同的颜色-一种用于背景,另一种用于立方体的三个面 在位图输出中,整个三角形的高度至少应为100像素,宽度至少应为100像素 宽高比:整个三角形的宽度和高度相差不应超过2倍 三角形可以相对于上图旋转任何量 三角形可能会或可能不会相对于上图反映

24
阶乘和永无止境的循环!
如您所知,正整数的阶乘n是等于或小于的所有正整数的乘积n。 例如 : 6! = 6*5*4*3*2*1 = 720 0! = 1 现在,我们将定义一个不相关名称的特殊操作,例如sumFac: 给定正整数n,sumFac(n)是数字的阶乘之和。 例如 : sumFac(132) = 1! + 3! + 2! = 9 任务 您的任务(无论是否选择接受)都是将应用的序列(可能是无限的)返回sumFac给输入中给定的整数。 范例: 132 -> 132, 9, 362880, 81369, 403927, ... 但这还不是全部!确实,的应用sumFac最终将创造一个循环。您还必须返回此循环! 如果您的语言具有内置阶乘,则可以使用它。我对返回类型并不挑剔,您只需要以人类可以理解的格式返回sumFac应用程序的序列和循环。 编辑:为了帮助您更好地可视化输出,我复制下面的Leaky Nun的内容应该是什么: [132, 9, 362880, 81369, 403927, 367953, 368772, 51128, 40444, 97, 367920, …

10
完美的车牌
完美的车牌 从几年前开始,我在开车时给自己做了一个小游戏:检查附近的车牌是否“完美”。这是相对罕见的,但是当您找到它时会感到很兴奋。 要检查车牌是否完美: 总结字符,其中A = 1,B = 2,... Z = 26。 取每个连续的数字,并求和;将这些总和相乘。 如果第1部分和第2部分中的值相等,那么恭喜!您已经找到了完美的车牌! 例子 License plate: AB3C4F Digits -> 3 * 4 = 12 Chars -> A + B + C + F = 1 + 2 + 3 + 6 = 12 12 == 12 -> perfect! License plate: …

9
Sharkovskii的奇怪排序
介绍 在这个挑战中,我们将处理正整数的某种顺序。排序如下: 3, 5, 7, 9, 11, ... 2*3, 2*5, 2*7, 2*9, 2*11, ... 4*3, 4*5, 4*7, 4*9, 4*11, ... 8*3, 8*5, 8*7, 8*9, 8*11, ... 16*3, 16*5, 16*7, 16*9, 16*11, ... ... ... 64, 32, 16, 8, 4, 2, 1 我们首先以升序列出所有大于1的奇数整数。然后,我们列出两个大于1的奇数整数,然后分别列出4次,然后8次,依此类推:对于所有k,我们以升序列出2 k次大于1的奇数整数。最后,我们以降序列出两个幂,以1结尾。每个正整数在此“列表”中恰好出现一次。 更明确地说,考虑两个不同的正整数A = n·2 p和B = m·2 q,其中n,m≥1是奇数,而p,q≥0。然后,一来之前乙的排序,如果满足下列条件之一成立: …

17
扭曲的最小素数(A068103)
给定一个数字n,手头的任务将找到最小的素数,该最小素数以数字的AT LEAST 开头。这是我在OEIS(A068103)上找到的序列。 n2 下面给出了序列中的前17个数字,如果您想要更多,我将不得不执行序列,我不介意这样做。 0 = 2 1 = 2 2 = 223 3 = 2221 4 = 22229 5 = 2222203 6 = 22222223 # Notice how 6 and 7 are the same! 7 = 22222223 # It must be **AT LEAST** 6, but no more than necessary. …

6
绘制Cornu螺旋
可以使用Feynman方法计算光传播的路径积分的Cornu螺旋。我们将使用以下离散化近似该积分。 考虑这张图中的镜子,S光源P在哪里,我们在哪里收集光。我们假设光线以直线光线从S反射镜中的每个点反射然后指向P。我们将镜子分成若干N段,在本例中为13,标记A为M,以使光的路径长度为R=SN+NP,其中SN是S到镜段的距离N,与相似P。(请注意,在图像中的点的距离S和P到反射镜已缩短了很多,对于视觉的目的。该块Q是相当无关的,并且纯粹放置经由反射镜,以确保反射,并避免直接光照S到P。) 对于给定的波数k,可以将光线的相量计算为exp(i k R),其中i是虚数单位。将所有这些相量从左后视镜面到右图从头到尾绘制会导致Cornu螺旋。对于13个元素及其下面描述的值,得出: 对于较大N的镜面段(即很多镜面段),螺旋线接近“真正的” Cornu螺旋线。使用各种值查看此图像N: 挑战 对于给定的N设x(n)是X的的-协调中心Ñ个反射镜区段(n = 0,1,2,...,N): x(n) := n/N-0.5 让SN(n)是的距离S = (-1/2, 1000)到第n个反射镜部分: SN(n) := sqrt((x(n)-(-1/2))^2 + 1000^2) 同样 NP(n) := sqrt((x(n)-1/2)^2 + 1000^2) 因此,第n条光线传播的总距离为 R(n) := SN(n) + NP(n) 然后我们定义通过第n个镜面段的光线的相量(复数)为 P(n) = exp(i * 1e6 * R(n)) 现在,我们考虑累积总和(作为积分的近似值) C(n) = P(0)+P(1)+...+P(n) 现在的目标是通过各点绘制分段线性曲线(C(0), C(1), ..., …

30
反向(二进制)位数是多少?
因此,您将获得一个以10 为基数的正数。您的工作是反转二进制数字并返回该基数10。 例子: 1 => 1 (1 => 1) 2 => 1 (10 => 01) 3 => 3 (11 => 11) 4 => 1 (100 => 001) 5 => 5 (101 => 101) 6 => 3 (110 => 011) 7 => 7 (111 => 111) 8 => 1 (1000 => …

30
验证随机模具自卸车
差不多六年前,老乡PPCG成员steenslag 发布以下挑战: 在标准骰子(骰子)中,数字的排列方式是使相对的面数增加到七个。用您喜欢的语言编写尽可能最短的程序,该程序输出一个随机抛出,然后输出9个随机小费。翻斗是骰子的四分之一转,例如,如果骰子面向5,则所有可能的翻斗都是1,3,4和6。 所需输出示例: 1532131356 因此,既然每个人都完全忘记了它,并且获胜的答案早已被接受,我们将编写一个程序来验证由提交的解决方案生成的模具翻转序列。(这很有道理。假装确实如此。) 挑战 系统会为您的程序或函数 指定一个序列,例如1532131356。验证每个连续数字为: 不等于前一位 不等于7减去前一位数字 (您不必验证第一位数字。) 规则 如果输入有效,则程序必须返回真实值,否则返回假值。 您可以假设输入仅包含1-6位数字,并且至少包含1个字符。序列不会像Steenslag的挑战那样具有固定的长度。 您可以将输入作为字符串("324324"),数组或类似数组的数据结构([1,3,5])或多个参数(yourFunction(1,2,4))。 标准I / O和漏洞规则适用。 测试用例 特鲁西 1353531414 3132124215 4142124136 46 4264626313135414154 6 2642156451212623232354621262412315654626212421451351563264123656353126413154124151545145146535351323 5414142 虚假 重复数字 11 3132124225 6423126354214136312144245354241324231415135454535141512135141323542451231236354513265426114231536245 553141454631 14265411 模具的相对面 16 42123523545426464236231321 61362462636351 62362462636361

30
Notcalc(计算错误的答案)
目标: 给定两个自然数(整数从0到无穷大),输出一个不是这些数之和的数字,而是一个自然数。 解决方案示例(TI基础): A+B+1 not(A+B) 无效的解决方案: A+B-1(对于输入0,0,它返回-1,这是不自然的) "ABC"(ABC不是数字) 笔记: 输出必须始终是两个自然数之和(实际上只是一个自然数) -1,undefined,infinity,NaN和错误消息不自然数。就我们的目的而言,0是自然的(尽管并非所有数学家都同意)。

24
取消重复字符串
介绍 让我们观察以下字符串: AABBCCDDEFFGG 您会看到每个字母都重复了,除了字母E。那意味着这封信E已经被删除了。因此,我们唯一需要做的就是逆转该过程,这为我们提供了以下未重复数据删除的字符串: AABBCCDDEEFFGG 让我们举一个更困难的例子: AAAABBBCCCCDD 您会看到连续B的数量不均匀,这意味着其中一个BB已从原始字符串中删除了重复数据。我们只需要取消重复这封信,就可以给我们: AAAABBBBCCCCDD 挑战 给定一个非空的重复数据删除字符串,该字符串仅包含字母字符(仅大写或小写),则返回未重复数据删除的字符串。您可以假定字符串中始终至少有一个重复数据删除字符。 测试用例 AAABBBCCCCDDDD --> AAAABBBBCCCCDDDD HEY --> HHEEYY AAAAAAA --> AAAAAAAA N --> NN OOQQO --> OOQQOO ABBB --> AABBBB ABBA --> AABBAA 这是代码高尔夫球,因此以字节为单位的最短有效提交将获胜!
33 code-golf  string 

9
画一些山峰
编写一个程序或函数来绘制山脉,在该山脉中,每个随后的较大山峰都在前面的“后面”,并交替显示哪一侧。 这是山脉的大小 1 /\ 这是山脉的大小 2 /\ /\ \ 这是山脉的大小 3 /\ / /\ / /\ \ 这是山脉的大小 4 /\ /\ \ / /\ \ / /\ \ \ 这是山脉的大小 5 /\ / /\ / /\ \ / / /\ \ / / /\ \ \ 等等。 输入项 任何方便格式的一个正整数,n > …

9
我真的很想要菱形,但是我得到的只是这个愚蠢的矩形
仅给出一条直尺和一个罗盘,在给定的矩形内刻一个菱形,共享两个相对的点。 输入项 输入是矩形的尺寸。在所示的示例中,该值为125, 50。您可以采用最方便的方式进行输入(如两个整数,列表,字符串等)。 较大的尺寸最小为100,而较小的尺寸最小为25。两者的上限均为200。 输出量 输出将是图像(显示在屏幕上或保存为文件),显示 输入矩形 所有“工作”线/圆 铭刻的菱形 以不同的颜色。在上图中,矩形为黑色,工作线为蓝色,菱形为橙色。线条应按照列表中显示的顺序绘制(例如菱形覆盖工作线和矩形)。 输出图像必须足够大以包含所有内容。例如,显示的圆圈不能超出范围。 方法 上面的示例图像中使用的方法是: 以左下角为中心,右上角为周长上的点绘制一个圆,其半径等于矩形的对角线。 进行相同的操作,但交换中心点和外围点。 在两个圆的交点之间画一条线,为矩形的对角线提供一个垂直平分线。 使用新线和矩形的交点绘制菱形。 之所以起作用,是因为菱形的内部对角线始终彼此垂直平分。不过,我这里没有提供完整的证明。 这不是获得菱形的唯一方法,并且可以在解释您正在做的事情的同时使用另一种方法。我相信这可能是最简单的。 规则 您只能绘制圆和直线(或直线段)。用中心点和周边点定义一个圆。一条线由任意两点定义。线不必具有任何指定的长度,但是它们必须至少覆盖定义点(请注意示例图像:线稍微越过圆交点,但不越过边缘)。对于圆,从中心到所选周边点的半径被视为一条工作线,必须显示。 要对线条进行栅格化,可以使用任何公认的算法(例如Bresenham算法),也可以依赖于您的语言可能具有的任何内置函数。如果您的输出是基于矢量的,请确保以至少与输入矩形(以像素为单位)一样大的分辨率显示。另外,您将在普通画布上绘画,因此请禁止显示任何网格标记或无关的输出。 别作弊!您只能使用到目前为止建立的内容来确定点/线/圆的位置。如果您无法解释如何使用工作线/圆来显示它是菱形,那说明您做错了。 您可以使用任意一对相对的点,并且只要输出正确,就不需要将矩形绘制为与轴对齐。 输入将始终是非正方形的矩形,因此不必担心会出现特殊情况。 最后,这是标准代码高尔夫,因此以字节为单位的最小大小获胜。

19
找到第n个素数,使得素数-1被n整除
问题 目的是按照标题所说的那样找到第n个素数,使得素数-1被n整除。 说明 这是一个示例,因此您可以理解问题,这不一定是应该解决的方法。它仅是解释问题的一种方式 给定3作为输入,我们将首先查看所有素数 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 ... 然后我们选择素数,使得素数-1可被n整除(在这种情况下为3) 7 13 19 31 37 43 61 67 73 79 97 103 107 109 127 ... 然后,我们按此顺序选择第n个项 我们将输入19输入3 注意 我们还可以将其视为序列{1,n + 1,2n + 1,3n +1 ... …

14
走话!
以我的拙见,标准文本很无聊。因此,我提出了一个新的写作标准,走路的话! 走路的话 步行词是会响应某些字符的词。出于此挑战的目的,触发字符[u, d, r, l]来自up down right left。 在打印文本时,只要遇到这样的字符,都将移动文本的方向。 例如,该文本abcdef将导致: abcd e f 规则 大写UDRL和小写udrl都应更改方向,但应在输出中保留大小写 输入将仅包含可打印字符(0-9, A-Z, a-z, !@#%^&*() etc...),没有换行符! 每当文本发生冲突时,它将覆盖该位置的旧字符 输出应该以任何时髦的方式呈现给用户,但它应该是单个输出(无行阵列) 允许尾随换行符 允许尾随空格 适用标准漏洞 测试用例 empty input => empty output or a newline u => u abc => abc abcd => abcd abcde => abcd e abcdde => …

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.