编程拼图和代码高尔夫

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

7
输出基本证明
背景 在某些可能的将来,世界会将其数字系统从十进制(以10 b10为基数或)转换为其他基数(二进制b2,八进制b8,十六进制b16甚至一元b1,在这种情况下,我们很费力!)。因此,为应对这一可能改变世界的事件,您决定对所有程序进行基础验证。这可以通过仅将0s和1s与运算符结合使用以替换现有的数字常量来完成。 但是,只有一个问题:您需要更改大量程序,而将每个数字手动转换为表达式将需要数周!因此,您决定编写一个程序(或函数)来为您确定应替换每个数字的表达式。 输入项 输入将为正整数。您的代码必须能够处理最多1000个整数。 (如果您的代码支持小数和/或负输入,请参阅下面的评分。) 输出量 您的代码必须以至少一种语言输出计算结果为表达式的表达式。这可以是任何语言;它不一定要与您编写的程序或函数相同。此外,此表达式也不必是完整的程序或函数。 为了清楚起见,输出可能包含以下任何操作: 递增/递减 加/加 减去/取反 乘/双(仅在不直接涉及数字的情况下2!) 除法/取模 指数/对数 平方/平方(再次,仅当这些不直接涉及数字时2!) 按位运算(bOR,bAND,bNOT,bXOR,移位) 设置/获取变量 堆栈操作 你可能不使用eval()或输出的任何类似的功能。您也可能在输出中不使用执行上述功能以外的任何功能的功能。 哦,还有另一件事:由于我们希望输出在尽可能多的底数内有效,因此它可能包含的唯一数字常量是0and 1。10除非(ten)这样的数字是不允许的,除非该语言将其解释为a 1和a 0。也不允许使用字符串包含数字,就像使用CJam的A- K(代表10- 20)这样的字符一样,也是不允许的。 测试用例 (所有输出均使用JavaScript,但可以使用其他语言。) 输入1: 2 可能的输出1: 1+1 输入2: 13 可能的输出2: (a=1+1+1)*a+a+1 输入3: 60 可能的输出3: (b=(a=1+1+1+1)*a)*a-a 输入4: 777 可能的输出4: (c=(b=((a=1+1+1+1)*a-a+1)*a)*a+b)+c+c-a+1 输入5: 1000 可能的输出5: Math.pow((a=1+1+1)*a+1,a) 计分 …

8
是简单还是困难?
为了您的困难,您必须让计算机做一件事情,以找出是否以简单的方式解释了一些单词。如果仅使用一千个最常用的单词,就会以一种简单的方式进行解释。如果不是这样,将很难进行解释。这可以是完整的计算机内容,也可以是计算机内容的一部分。(完整的程序或功能) 对于计算机而言,有一个东西可以读取,其中包含所有的一千个单词,每个单词之间都有一个空格。供计算机读取的事物的名称称为“ most used.txt”。您可以从此计算机处取走这东西。 使用计算机事物的人将输入一些单词。(这可以来自STDIN,函数自变量或命令行自变量)如果单词很简单,则计算机必须说出类似“真”的含义,如果很难,则必须说出不真实的含义。(诚实-虚假)为计算机做最短的事情的人是最好的。每个人都知道的坏事是坏事。(适用标准漏洞) 有关计算机事物如何工作的更多信息: 单词是大还是小都无所谓。 使单词含义更容易理解(标点符号)的图片并不重要。因此,如果使用计算机的人说“不要”,那么它与“不要”这个词是不同的。数字和其他图片也没有关系。因此,如果该人说“ HE $$ ll9o”,则计算机应将其读为“ hello” 单词(破折号)之间的细线与空格的工作方式相同。因此,“上五行”一词与“上五行”一词相同。 有关制作这样的单词的更多知识: https://xkcd.com/1133/ http://splasho.com/upgoer5/#
21 code-golf  string 

12
ASCII Maya数字
编写一个程序或函数,在给定正整数作为输入的情况下,以Maya数字输出该整数的表示形式。 玛雅数字 Maya数字是仅使用3个符号的原始系统(以20为基数): < >对于零(正确的符号是某种不能轻易使用ASCII来表示外壳的)。 .对于一个 ----对于五 数字以20的幂垂直写入,0到19之间的数字以5和1的堆栈形式写入。您应参阅Wikipedia文章以获取更多详细信息。 例如,以下是0到25之间的数字,以逗号分隔: . .. ... .... . .. ... .... ---- ---- ---- ---- ---- . . . . . . . .. ... .... ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- < >, . , .. ,... ,....,----,----,----,----,----,----,----,----,----,----,----,----,----,----,----,< >, …

10
图像的平均颜色
图片的平均颜色 科学家已经能够确定宇宙的平均颜色,但是我们可以在多少个字节中找到图像的平均颜色呢? 你的任务 您的输入将是一幅图像,您将需要查找图像中颜色的平均值并输出十六进制颜色字符串(#??????)。图像可以是以下任何格式 JPEG / JFIF JPEG 2000 TIFF GIF 骨形态发生蛋白 PNG PNM PPM 输入也可以作为图像的URL / URI。 内置函数ImageMeasurements无法计算平均值或立即对图像进行采样。 例子 结果将略有不同,具体取决于您如何计算平均值和使用哪种颜色模型。我为下面的图像添加了RGB和LCH(HSV)值。 输出:#53715FRGB,也可以是#3B7D3DLCH(HSV) 输出:#8B7D41RGB,#96753CLCH(HSV)

2
有损ASCII艺术压缩
背景 PICASCII是一种灵巧的工具,可将图像转换为ASCII艺术作品。 通过使用以下十个ASCII字符,可以实现不同程度的亮度: @#+';:,.` 我们将说这些像素(字符元素)的亮度从1(符号)到10(空格)。 在下面,您可以看到以正确的字体显示的一些代码转换,威尔士旗帜,分形,大鳟鱼和高尔夫球的结果: 您可以看到此小提琴中的图像,然后从Google云端硬盘下载它们。 任务 尽管PICASCII的最终结果在视觉上令人愉悦,但所有五个图像的总重为153,559字节。如果我们愿意牺牲部分图像质量,这些图像将被压缩多少? 您的任务是编写一个程序,该程序接受上述格式的ASCII艺术图像并以最低质量作为输入,并以完整程序或返回单个字符串的函数的形式打印图像的有损压缩,该压缩应满足以下要求:质量要求。 这意味着您不必编写单独的解压缩器;它必须内置在每个压缩图像中。 原始图像将由亮度介于1到10之间的像素像素组成,并通过换行分隔成相同长度的行。压缩的图像必须具有相同的尺寸并使用相同的字符集。 对于包含n个像素的未压缩图像,图像的压缩版本的质量定义为 其中Ç 我是的亮度我个和压缩后的图像的输出的charxel ü 我的亮度我个未压缩图像的charxel。 计分 您的代码将以上方的五个图像作为输入,每个图像的最低质量设置分别为0.50、0.60、0.70、0.80和0.90。 您的分数是所有压缩图像大小的几何平均值,即所有25个压缩图像的长度乘积的第二十五根。 最低分获胜! 附加规则 您的代码必须适用于任意图像,而不仅仅是用于评​​分的图像。 期望您针对测试用例优化代码,但是什至不尝试压缩任意图像的程序也不会被我接受。 您的压缩器可能使用内置的字节流压缩器(例如gzip),但是您必须自己为压缩图像实现它们。 允许在字节流解压缩器中正常使用的Bulit-ins(例如,基本转换,行程解码)。 压缩器和压缩图像不必使用相同的语言。 但是,您必须为所有压缩图像选择一种语言。 对于每个压缩图像,均适用标准代码高尔夫规则。 验证 我制作了一个CJam脚本,可以轻松地验证所有质量要求并计算提交的分数。 您可以从此处或此处下载Java解释器。 e# URLs of the uncompressed images. e# "%s" will get replaced by 1, 2, 3, 4, 5. "file:///home/dennis/codegolf/53199/original/image%s.txt" …

4
赢得声誉的幸运数字
一个新的代码窃贼,乔,刚刚注册到该站点。他享有1个声誉,但决心在声誉方面达到所有幸运数字。乔相信更高的权力,这将有助于他以最少的(他或他人)行动来实现自己的目标。作为新用户,他还认为负面声誉是可能的。 您应该编写一个程序或函数来帮助Joe计算他期望执行的动作数。 细节 这些操作可以按以下数量更改信誉(与堆栈交换规则无关,所有操作在每一步都可用): answer accepted: +15 answer voted up: +10 question voted up: +5 accepts answer: +2 votes down an answer: −1 question voted down: −2 其他特殊声誉更改将被忽略。 幸运数字可以是负数,并且可以按任何顺序到达。 您的解决方案必须在一分钟之内在我的计算机上解决任何示例测试用例(我将仅测试关闭用例。我的PC低于平均水平。) 输入项 Joe的幸运数字是您语言的一种常见形式的整数列表。 输出量 需要作为单个整数的最小操作数。 输出可以打印到标准输出或作为整数返回。 例子 输入=>输出(信誉状态示例) 1 => 0 (1) 3 2 1 => 2 (1 -> 3 -> …

5
中文棋盘格
中国跳棋的游戏是在棋盘上进行的,棋盘上的空间为六角星状: 图片来自维基百科 我们可以创建此板的ASCII美术表示形式,.用于空白点和GYORPB六个彩色起始位置的字母: G G G G G G G G G G B B B B . . . . . Y Y Y Y B B B . . . . . . Y Y Y B B . . . . . . . Y Y B …

5
每日随机ASCII艺术#5:钻石拼贴
混搭时间! 这是我的每日随机高尔夫和Optimizer的ASCII每日艺术系列的第5期。您在此挑战中提交的作品将计入两个排行榜(您可以在其中找到链接的帖子)。当然,您可以像对待其他任何代码高尔夫挑战赛一样对待它,并回答它而不必担心任何一个系列。 第5洞:钻石拼贴 正六边形始终可以用钻石平铺,如下所示: 我们将使用这些拼贴的ASCII艺术表示形式。对于边长为2的六边形,有20个此类平铺: ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ /\_\_\ /\_\_\ /\_\_\ /\_\_\ /_/\_\ /_/\_\ /\_\_\ /_/\_\ /_/\_\ /_/\_\ /\/\_\_\ /\/_/\_\ /\/_/_/\ /\/_/\_\ /\_\/\_\ /\_\/_/\ /\/_/_/\ /\_\/\_\ /\_\/_/\ /_/\/\_\ \/\/_/_/ \/\_\/_/ \/\_\_\/ \/_/\/_/ \/\_\/_/ \/\_\_\/ \/_/\_\/ \/_/\/_/ \/_/\_\/ \_\/\/_/ \/_/_/ \/_/_/ \/_/_/ \_\/_/ \/_/_/ …

3
有选择地谋杀正整数
介绍 算术监禁是一种特殊的工具,它可以包含正整数。但是,最近,正整数一直在试图逃脱。因此,管理人员已决定要消除一些正整数,以便向其他整数发送消息。他们聘请了一名软件工程师来编写程序,以找出要消除的整数以最大程度地发挥作用。 输入说明 输入是通过STDIN,命令行参数或用户输入函数(例如raw_input)给出的。您不能将其作为函数参数或预初始化的变量使用(例如,该程序希望在变量中输入x)。 输入的第一行包含一个正整数n,其中8 >= n >= 3。接下来是n包含n集合中字符的行[1,2,3,4,5,6,7,8,9]。这是一个示例输入: 5 22332 46351 65455 24463 65652 输出说明 监护人希望消除数字,以便满足以下条件: 在结果网格的每一行和每一列中,没有数字将出现两次; 消除的两个数字在水平或垂直方向上不得相邻; 尚存数字必须形成正交的连续组-可以从任何尚存数字移动到仅在水平和垂直方向移动且永远不会越过任何被淘汰号码的任何其他尚存数字。 输出输入(减去第一行),将消除的数字替换为#。 可能有不止一种解决方案。在这种情况下,您可以输出任何解决方案。 可能也没有解决方案。在这种情况下,输出字符串no answer。 这是示例输入的可能输出: #2#3# 46351 6#4#5 24#63 #56#2 输入和输出示例 每个输入都有多个输出,因此这些输出仅是示例。 输入: 5 46551 51565 32654 14423 43244 输出: 46#51 #156# 326#4 1#423 #324# 输入: 7 7183625 1681563 5238564 …
21 code-golf  grid 

16
位串物理
背景 是的,位串物理是真实的东西。这个想法是用仅在概率规则或某些规则下演化的比特串来构造新的物理学理论。尽管阅读了几篇有关它的论文,但我还是很困惑。但是,比特串世界使高尔夫成为一个不错的小代码。 程序宇宙 位串物理发生在所谓的程序宇宙中。在宇宙的演化的每个步骤中,存在有限列表L一些长度的位串的k,首先是两个元素的列表[10,11],其中k = 2。一个时间步的处理如下(使用类似Python的伪代码)。 A := random element of L B := random element of L if A == B: for each C in L: append a random bit to C else: append the bitwise XOR of A and B to L 所有随机选择都是一致随机的,并且彼此独立。 例 4个步骤的示例演变如下所示。从初始列表开始L: 10 11 我们随机选择A …

6
中国剩余定理
在中国剩余定理告诉我们,我们总能找到一些能产生下不同的素模所需的任何剩余物。您的目标是编写代码以在多项式时间内输出这样的数字。最短的代码胜出。 例如,假设我们得到了以下约束(%代表mod): n % 7 == 2 n % 5 == 4 n % 11 == 0 一种解决方案是n=44。第一个条件满足,因为44 = 6*7 + 2,所以44有剩余2时,除以7,因此44 % 7 == 2。也满足了其他两个约束。还有其他解决方案,例如n=814和n=-341。 输入项 对的非空列表(p_i,a_i),其中每个模数p_i是一个不同的质数,每个目标a_i是该范围内的自然数0 <= a_i < p_i。您可以采用任何方便的形式进行输入。它实际上不一定是对列表。您可能不认为输入已排序。 输出量 这样的整数n,以便n % p_i == a_i于每个索引i。该值不必是最小值,也可以是负数。 多项式时间限制 为了防止廉价的解决方案,只是尝试n=0,n=1,n=2,等等,你的代码必须在多项式时间在运行中输入的长度。请注意,m输入中的数字具有length Θ(log m),因此m其长度不是多项式。这意味着您最多不能计数m或不能进行一次运算m,但是可以对这些值进行算术运算。 您可能不会使用像一元这样的低效率输入格式来解决此问题。 其他禁令 不允许执行以下操作的内置函数:实现中国余数定理,求解方程式或因数。 您可以使用内置函数查找mod并进行模块化加法,减法,乘法和乘幂运算(使用自然数指数)。您可能不使用其他内置的模块化操作,包括模块化逆运算,除法和查找顺序。 测试用例 这些给出最小的非负解。您的答案可能有所不同。如果直接检查输出是否满足每个约束,可能会更好。 [(5, 3)] …

9
计算Collat​​z表兄弟
为正整数n定义函数f(n),如下所示: n / 2,如果n是偶数 3 * n +1,如果n为奇数 如果您将此功能重复应用到任何 大于0的 n,则结果似乎总是收敛到1(尽管尚无人能​​够证明这一点)。此属性称为Collat​​z猜想。 将整数的停止时间定义为必须通过Collat​​z函数f传递它的次数。达到1之前必须。这是前15个整数的停止时间: 1 0 2 1 3 7 4 2 5 5 6 8 7 16 8 3 9 19 10 6 11 14 12 9 13 9 14 17 15 17 让我们用相同的停止时间呼叫任何一组数字 Collat​​z表兄弟的数字。例如,5和32是Collat​​z表兄弟,停止时间为5。 您的任务:编写一个程序或函数,该程序或函数采用一个非负整数并生成一组Collat​​z表兄弟,其停止时间等于该整数。 输入项 通过STDIN,ARGV或函数参数指定的非负整数S。 输出量 它的停止时间是S所有的数字列表,排序中升序的顺序。该列表可以由您的程序输出,也可以由您的函数返回或输出。输出格式是灵活的:只要数字之间可以容易地区分,空格就可以了,换行​​符可以换行,或者您的语言的任何标准列表格式都可以。 要求 …

11
计算Hausdorff距离
介绍 在豪斯多夫距离测量度量空间的两个子集之间的差异。直观地来说,度量空间只是带有内置距离函数的某个集合。在这个挑战中,我们将使用具有普通距离的自然数d(a, b) := abs(a - b)。两个非空有限集之间的Hausdorff距离A和B由下式给出 max(max(min(d(a, b) for b in B) for a in A), max(min(d(a, b) for a in A) for b in B)) 以类似Python的符号表示。Hausdorff距离的计算方法是:找到与A的最近元素的B距离最大的元素B,与到的最近元素的A距离最大的元素,然后取这些距离中的最大值。换句话说,如果Hausdorff距离为d,则的每个元素A都在d的某个元素的距离内B,反之亦然。 输入项 您的输入是一个整数列表。它仅包含元素0,1,2,3,这意味着该列表的给定索引是否是的元件既不A也不B,仅A仅B或两者A和B。例如,输入[0,1,1,0,2,3]表示A = {1,2,5}和B = {4,5},如果我们使用基于0的索引(这没有区别,因为我们的度量标准是转换不变的)。 输出量 您的输出是A和之间的Hausdorff距离B。在上面的示例中,它是3。如果任何一组为空,则距离没有定义,您应返回-1。 规则 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 [] -> -1 [0] -> -1 [0,1,0] -> -1 [2,0,0,2] -> …

2
素多项式
给定一个多项式,确定它是否为质数。 多项式是ax^n + bx^(n-1) + ... + dx^3 + ex^2 + fx + g,其中每个项是一个常数(系数)乘以一个非负整数幂x。具有非零系数的最高功率称为度。对于此挑战,我们仅考虑至少为1的多项式。即,每个多项式都包含x。另外,我们仅使用具有整数系数的多项式。 多项式可以相乘。例如,(x+3)(2x^2-2x+3)等于2x^3+4x^2-3x+9。因此,2x^3+4x^2-3x+9可以将x+3和分解为2x^2-2x+3,因此它是复合的。 其他多项式无法分解。例如,2x^2-2x+3不是任何两个多项式的乘积(忽略常数多项式或具有非整数系数的多项式)。因此,它是素数(也称为不可约)。 规则 输入和输出可以通过任何标准方式进行。 输入可以是类似的字符串,类似2x^2-2x+3的系数列表{2,-2,3}或任何类似的方式。 如果输出为素数,则输出为真值,如果为复合值,则输出为假值。您必须为所有质数产生相同的真实值,并为所有复合多项式产生相同的假值。 输入至少为1级,最大为10级。 您可能不使用内置工具进行(整数或表达式的)分解或方程式求解。 例子 真实-质数 x+3 -2x x^2+x+1 x^3-3x-1 -2x^6-3x^4+2 3x^9-8x^8-3x^7+2x^3-10 错误-复合 x^2 x^2+2x+1 x^4+2x^3+3x^2+2x+1 -3x^7+5x^6-2x x^9-8x^8+7x^7+19x^6-10x^5-35x^4-14x^3+36x^2+16x-12
21 code-golf  math  primes 

13
道路长度编码
在美国,如果允许通过,则道路上两个相反的交通方向用虚线黄线分隔,如果不允许通过,则用两条实线黄线分隔。 (只需将一侧划线以允许通过该侧即可,黄线可能表示其他事物,例如中心车道或可逆车道,但我们与这些情况无关。) 编写一个程序,它在游程编码的字符串P进行传递,并N为不及格,并打印相应道路的ASCII版本。除中心线外,道路始终具有相同的样式,可以从以下示例中轻松推断出该样式。 输入字符串中的每个P和之前将有一个正的十进制数N。此数字定义的长度通过或不通过的道路的当前部分的区域。 例子 输入12N会产生12列没有通过的路(中线all =): ____________ ============ ____________ 输入12P会产生12列通过的路(- 重复中心线): ____________ - - - - - - ____________ 通过和没有通过可以合并,例如4N4P9N7P1N1P2N2P将产生: ______________________________ ====- - =========- - - -=-==- ______________________________ 这些是4个不通过列,然后是4个通过,然后9个不通过,等等。 请注意,通过区域始终以-最左侧的破折号()开头,而不是以空格()开头。这是必需的。 细节 输入永远不会有两个N区域或P连续两个区域。例如4P5P永远不会发生。 您无需支持没有前导正数的字母。朴素P永远是1P,朴素N永远是1N。 只要不超出道路的最后一列,就可以有尾随的空间。可能有一个可选的尾随换行符。 您可以编写一个函数,该函数采用游程长度编码的字符串并打印或返回ASCII路径,而不是程序。 以任何标准方式(stdin,命令行,函数arg)接受输入。 以字节为单位的最短代码获胜。Tiebreaker是较早的帖子。

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.