Questions tagged «code-golf»

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

2
书库排序
堆放书籍时,通常需要将最大的书籍放在底部,最小的书籍放在顶部。但是,如果我有两本书,其中一本短(高)但比另一本宽,那么我潜在的OCD会让我感到非常不安。无论我按什么顺序放置它们,顶层的书都会在一侧超出底层的书。 例如,假设一本书具有尺寸(10,15),另一本书具有尺寸(11,14)。不管我以哪种方式放置它们,我都会伸出来。但是,如果我有尺寸为(4,3)和的书(5,6),则可以通过将书本放在书本下面来避免悬垂。 出于此挑战的目的,我们将仅考虑与紧随其后的书有关的突出部分。例如,如果我有一个堆栈(5,5),(3,3),(4,4)(没有任何理智的人会这么做),顶书算是悬垂,虽然它不超出底部的书。同样地,堆栈(3,3),(3,3),(4,4)也只有一个悬,尽管超出底部一个顶部的书。 挑战 给定用于书籍尺寸的整数对列表,请对这些对/书籍进行排序,以使突出的数量最少。您不能旋转书本-我希望所有的脊椎都朝向相同的方向。如果存在多个具有相同悬垂数的解决方案,则可以选择任何此类顺序。您的排序算法不一定是稳定的。您的实现可能假设每本书的尺寸小于2 16。 时间复杂度:为了使这一点更有趣,算法的渐近最坏情况复杂度必须是堆栈大小的多项式。因此,您不能仅仅测试所有可能的排列。请提供算法最佳性和复杂性的简短证明,并提供一个可选的图表,以显示大型随机输入的比例。当然,您不能使用输入的最大大小作为代码在O(1)中运行的参数。 您可以编写程序或函数,通过STDIN,ARGV或函数参数以任何方便的(未经预处理的)列表格式进行输入,然后打印或返回结果。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 我相信存在多项式解,但是如果您可以证明我错了,则可以提交这样的证明,而不是打高尔夫球。在这种情况下,您可以假设P≠NP。我将接受第一个正确的此类证明,并给予悬赏。 例子 In: [[1, 1], [10, 10], [4, 5], [7, 5], [7, 7], [10, 10], [9, 8], [7, 5], [7, 5], [3, 1]] Out: [[10, 10], [10, 10], [9, 8], [7, 7], [7, 5], [7, 5], [7, 5], [4, 5], [3, …

9
在不使用“素数字符”的情况下查找素数
您的任务(如果选择接受)是编写一个接受整数N作为输入的程序/函数。程序/功能应输出/返回前N个质数的列表。但是这里有个要点:不允许在代码中使用质数字符。素数字符是指其Unicode代码点是素数的字符。在可打印的ASCII范围内,这些是: %)+/5;=CGIOSYaegkmq 但是,如果您的代码使用非ASCII字符,则该规则也适用于非ASCII字符。 有效的输入是一个整数Ñ其中0 <N <= T,其中,可以选择Ť,但它必须大于或等于10000。Ť不必是有限的。 对于无效输入(非整数,超出范围的整数),抛出异常或输出/不返回任何结果/为空。 以前导/结尾空白为输入的整数被认为是无效的。 +以符号字符作为输入的整数被视为无效。 以前导零作为输入的整数被视为有效。 如果您的语言允许您传递已经解析的整数作为输入,则上述解析规则(范围1除外)将不适用,因为int已被解析。 输入始终为10。 不允许使用内置的素数生成器和素数测试器(包括素数分解函数)。 源限制是对Unicode字符强加的,但是如果需要,可以对分数的字节计数进行其他编码。 输出可以包含单个尾随换行符,但这不是必需的。 如果您以字符串形式输出/返回素数列表,则每个素数必须由一个或多个非数字字符定界。您可以选择使用哪个定界符。 这是一个代码高尔夫挑战,最短的代码以字节为单位获胜。 堆栈代码片段以验证您的代码 您可以使用下面的堆栈片段来验证您的代码不包含素字符: var primes=[],max=10000;for(var i=2;i<=max;i++){primes.push(i);}for(var N=2;N<Math.sqrt(max);N++){if(primes.indexOf(N)===-1){continue;}primes=primes.filter(function (x){return x===N||x%N!==0;});}function setText(elem,text){var z=('innerText' in elem)? 'innerText' : 'textContent';elem[z]=text;}function verify(inputCode,resultSpan){var invalidChars=[];var success=true;for(var i=0;i<inputCode.length;i++){var cc = inputCode.charCodeAt(i);if (cc>max){setText(resultSpan,"Uh oh! The char code was bigger than the max. …

2
图上的张力,第一部分:波浪线
让我们在域[ -3,3 ]上绘制函数f(x)= sin(πx)+ 0.5 sin(3πx)。我们可以将其解释为躺在板上的松散字符串。现在,让我们驱动Ñ指甲到板在位置(X 1,Y 1)到(X Ñ,Y Ñ),其中X 我 ∈(-3,3)和ÿ 我 ∈[-1,1] 。想象一下,在字符串的末尾有两个孔眼,分别位于位置(-3,0)和(3,0)。现在,我们可以将绳子的末端拉过孔眼,直到绳子拉紧为止。这会将我们的图形变形为分段线性函数。 一些图片可能会有所帮助。在(-2.8,-0.7),(-2.5,-0.9),(-1.2,.2),(-0.5,.8),(0.5,.4),(1.2,-0.9), (1.5,-0.6),(1.8,-0.8)。以下三个图显示了上述过程: 对于较大的版本:右键单击->在新选项卡中打开 这是一个字符串收紧的动画,如果您在可视化上有一些困难的话: 挑战 给定“指甲”列表(不一定要排序),如果它们从上述函数f的形状开始,则绘制这些指甲和绷紧的线。 您可以编写程序或函数,然后通过STDIN,ARGV或函数参数接受输入。您可以在屏幕上显示结果,也可以将图像保存到文件中。 如果将结果栅格化,则其宽度必须至少为300像素,高度至少为100像素。从(-3,-1.1)到(3,1.1)的坐标范围必须至少覆盖图像水平和垂直范围的75%。x和y的长度比例不必相同。您需要显示指甲(至少使用3x3像素)和细绳(至少1像素宽)。您可以包括或不包括轴。 颜色是您的选择,但您至少需要两种可区分的颜色:一种用于背景,一种用于指甲和细绳(尽管这些颜色可能有不同)。 您可以假设所有的钉子都距离f至少10 -5个单位(这样就不必担心浮点误差了)。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 更多例子 这是另外两个(更简单的)示例: {{-2.5, 1}, {-1.5, -1}, {-0.5, 1}, {0.5, -1}, {1.5, 1}, {2.5, -1}} (字符串与x轴重合。) {{-2.7, -0.5}, {-2.3, -0.5}, {-1.7, 0.5}, {-1.3, 0.5}, …

3
二维碰撞检测
这个挑战基于我最近不得不为一个简单的游戏编写的实际碰撞检测。 编写一个程序或函数,给定两个对象,该程序或函数将根据两个对象是否发生碰撞(即相交)来返回真实值或虚假值。 您需要支持三种类型的对象: 线段:由4个浮点数表示,指示两个端点,即(x 1,y 1)和(x 2,y 2)。您可以假定端点不相同(因此线段不会退化)。 圆盘:即实心圆,以3个浮点表示,两个为中心(x,y),一个为(正)半径r。 腔:这些是光盘的补充。也就是说,除了由中心和半径指定的圆形区域之外,空腔会填充所有2D空间。 您的程序或函数将以标识整数(您选择的形式)及其3或4个浮点的形式接收两个此类对象。您可以通过STDIN,ARGV或函数参数接受输入。您可以使用任何未经预处理的方便形式来表示输入,例如8到10个单独的数字,两个以逗号分隔的值列表或两个列表。结果可以返回或写入STDOUT。 您可以假设对象至少为10相隔 -10个长度单位或相交那么多,因此您不必担心浮点类型的局限性。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 测试用例 使用基于列表的输入格式,用表示线段,用表示0圆盘,用表示1空洞2,以下内容均应产生真实的输出: [0,[0,0],[2,2]], [0,[1,0],[2,4]] # Crossing line segments [0,[0.5,0],[-0.5,0]], [1,[0,0],1] # Line contained in a disc [0,[0.5,0],[1.5,0]], [1,[0,0],1] # Line partially within disc [0,[-1.5,0.5],[1.5,0.5]], [1,[0,0],1] # Line cutting through disc [0,[0.5,2],[-0.5,2]], [2,[0,0],1] # Line outside cavity …

13
素数的组合产品
问题陈述 给定一组唯一的,连续的素数(不一定包括2个),则生成这些素数的第一幂的所有组合的乘积(例如,无重复)以及1。例如,给定的集{2,3,5, 7},您产生{1,2,3,5,6,7,10,14,15,21,30,35,42,70,105,210},因为: 1 = 1 2 = 2 3 = 3 5 = 5 6 = 2 x 3 7 = 7 10 = 2 x 5 14 = 2 x 7 15 = 3 x 5 21 = 3 x 7 30 = 2 x 3 x 5 …

30
打印代码的前N个字符
您应该编写一个程序或函数,该程序或函数接收一个正整数N作为输入并打印出N代码的第一个字符。如果N大于代码长度,则应继续循环输出代码。 禁止以任何方式读取源代码以及从文件,stdio等中进行读取。 例子 (假设您的代码是yourcode) 输入=>输出: 5=> yourc 10=> yourcodeyo 22=>yourcodeyourcodeyour 澄清度 您的程序应至少为1个字节长。
21 code-golf  quine 

3
用激光摧毁他们
介绍 竞技场是点缀着摩天大楼的平地,您的敌人可以用来掩盖。您和您的敌人用激光互相射击。你们所有人都携带喷气背包,可以飞行。 您可以用激光打哪些敌人,哪些可以躲藏? 问题 首先,竞技场的大小由n单行中的整数给出。以下各n行n每行包含整数,并用空格分隔。每个整数代表该位置建筑物的高度。每个建筑物都是一个矩形实体,高度单位为1单位乘1单位。 接下来,您的位置是在一行三个浮点数给出x,y,z。 最后,敌人的数量由m单行中的整数给出。以下各m行每行包含三个浮点数,中间用空格隔开。这些代表 x,y以及z敌人的坐标。坐标系定义如下: x 在城市输入中从左到右测量 y 从上到下测量 z 从头开始测量 对于每个敌人,如果可以从您到该敌人画出一条清晰的线,则输出一个正整数。否则,输出一个负整数。用新行分隔输出。 样本输入 注释以“#”表示,可帮助您快速查看每一行的功能。它们将不会出现在实际输入中。 5 # Size of the map 0 0 0 0 0 # Buildings 0 0 0 0 0 # Buildings 4 4 4 4 4 # Buildings 0 0 0 0 0 # …
21 code-golf 

18
在给定数组中查找最接近的数字
这是受到我遇到的一个现实世界问题的启发。我很好奇,看看是否有任何聪明的方法可以解决这个问题。 给您两个未排序的数组A和B,每个数组包含任意数量的浮点数。A和B的长度不一定相同。编写一个函数,该函数顺序获取A的元素并在数组B中找到最接近的值。结果必须包含在新数组中。 获胜条件 最短的代码获胜(照常)。

10
卢阿打高尔夫球的技巧
您在Lua打高尔夫球有哪些一般秘诀?我正在寻找可以应用于编码高尔夫问题的想法,这些想法至少在某种程度上是特定于Lua的(例如,“删除评论”不是答案)。请为每个答案发布一个提示。
21 code-golf  tips  lua 

16
电话多次点击拼写
受到Google代码挑战赛的启发: 拉丁字母包含26个字符,电话机的键盘上只有10位数字。我们希望使用一系列按键来指示您想要的字符,从而更轻松地向您的朋友写消息。字母映射到数字,如下所示。例如,要插入字符B,程序将按22。为了从同一键顺序插入两个字符,用户必须暂停,然后再按一次键。应该打印空格字符“”以指示暂停。例如,2 2表示AA,而22表示B。 每个消息将仅包含小写字母az和空格字符''。按下零会发出一个空格。 您的挑战是编写最小的函数,该函数接受输入字符串,并返回将输入生成为字符串或将其输出到stdout所需的按键序列。最小字节数的函数获胜。 输入/输出示例 phone("hi") 44 444 phone("hello world") 4433555 555666096667775553 其他说明 暂停必须只在必要时添加的,必须是一个空格“”。 每个消息将仅包含小写字母 az和空格字符''。打印0以表示空格。 没有外部库。 仅输入字符串可以传递给您的函数。 为了使其他语言更具竞争力,主函数声明不计算在内,也不会导入其他标准库。#includes,imports和usings不计算在内。其他一切都做。这确实包括#define和辅助功能。如果您感到困惑,请参阅此问题中的规则2。 多个空格可以表示为,00或者0 0因为您实际上不必在空格之间暂停
21 code-golf 

11
交叉匹配的正则表达式
您的任务是编写两个正则表达式,每个正则表达式都与另一个正则表达式匹配,但自身不匹配。 两个正则表达式都应具有以下形式: /pattern/optional-flags 这也是它们应该匹配的形式。 最短的解决方案获胜。解决方案长度计算为两个正则表达式(包括斜杠和标志)中字符的总和。 可以使用您选择的regex语法标准,或者指定编程语言(如果有区别)。 玩得开心!

5
塔尔,她吹!
Arrr ...嗨,我妈!松开主帆!充满右舷!啊,感受你头发中的风! 是的,我衷心...我需要一点你的技巧!我的船员比我自己更现代化……我仍然更喜欢指南针(请参阅此处了解更多信息,Arrr ...),而我的船员却总是头疼。我想要一种简单的方法来将他们称为“脑袋”的那一幕转换成我能理解的,Arrr! 我需要的是代码tha'be takin'输入的数字(小数也可以),例如tha',0 <= the headin' < 360并且它会作为最接近的罗盘点出现在答案中!啊! 以下是一些示例: > heading 0.1 North > heading 11.25 North by East > heading 22.7 North Northeast > heading 44.99 Northeast > heading 91 East 现在,如果您不愿意让它恰好落在两个罗盘点的中间,那么请不要烦恼,我要衷心...我希望代码能吐出Between <point 1> and <point 2>,例如heading 5.625会说Between North and North by East 这只会发生,因为' H = …
21 code-golf  math 

21
你好,世界!!!斐波那契分布
您的程序应准确输出:之后Hello world!!!带有或不带有换行符。 您的程序不应输入任何内容。 源代码字符分配必须符合以下条件: 数字字符的数量(0-9)必须恰好是一个斐波那契序列号。 源代码中其他非数字字符!(0-9)的数量必须与上述斐波那契序列号之前的斐波那契序列号完全相同。 源代码中有效字符分布的四个示例: 13个数字,8个非数字字符。 34个数字,21个非数字字符。 55个数字,34个非数字字符。 89个数字,55个非数字字符。 这是代码高尔夫球,最短的代码以字节为单位!祝好运! 编辑:由于此问题与源代码大小相结合,对源代码大小有限制,因此,可接受的答案(如果有多个分享相同的中奖字符长度)将是投票最多(且字符数最少)的答案:2014- 03-01。

13
F#高尔夫技巧
您对F#打高尔夫球有哪些一般提示?我正在寻找可用于编码一般至少在某些程度上针对F#的高尔夫问题的想法(例如,“删除评论”不是答案)。请为每个答案发布一个提示。
21 code-golf  tips  f# 

23
祝我生日快乐!
祝我生日快乐! 编写一个Happy birthday to me!在生日那天打印的程序。 程序的生日是程序的创建,最后修改或编译时间(您选择),并且不得进行硬编码。 用作生日的日期不得以任何方式受到程序的调用或执行的影响。您无法修改生日。 对于额外的积分(-15%字节数)Happy birthday to you!,如果生日与程序不一致,请在生日当天打印(硬编码)。或使用名人的生日获得-14%。 它只能打印此内容,而在其他任何一天都不能打印任何内容。 以UTF-8计数字节。 使用公历。 祝您好运(生日快乐)(适用于新生儿节目)。 PS 在Izkata发表评论后,如果Happy birthday to Mel在Mel Kaye的生日上打印,您将获得20%的折扣。但是,您必须提供可靠的消息来源,即该日期。
21 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.