Questions tagged «code-golf»

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

3
将单词分解为其他单词(例如,“余辉” =“尾部” +“ erg” +“低”)
这是供您所有词匠使用的工具!编写一个程序或函数,该程序或函数接受单词列表并为每个单词生成所有可能的级联分解的列表。例如: (注意:这仅是一个小样本,用于说明目的。实际输出量要大得多。) afterglow = after + glow afterglow = aft + erg + low alienation = a + lie + nation alienation = a + lien + at + i + on alienation = a + lien + at + ion alienation = alien + at + i + on …

15
选择最长的棍子
您是一位年轻的编程爱好者,与另外2个最好的朋友一起生活。每个星期,其中一个人必须完成房子的所有杂务,然后通过挑一根棍子来决定轮到谁。挑短棍的人会输掉所有的琐事。 由于所有人都是程序员,并且喜欢创建难题,因此您已将“选择最短的棍子”修改为计算机难题。 这是难题的规则。 您将获得一个2D矩阵,其中每列代表一根棍子。 在每一列中,1代表棒的一部分,0代表空白 当在每列从顶部到底,最初你0的,一旦你打1,棍子已经开始休息的列将充满1只有 您可以编写程序来选择一列。该栏中棍子的大小决定了获胜者/失败者。棒的大小==该列中的1s数。 但是,该程序只能具有线性最坏情况下的时间复杂度。 由于所有人都是程序员,因此您将知道其他人的程序是否正在限制时间复杂度极限。 您的工作是: 编写接受2D格式或字符串数​​组输入的程序或函数。 输入可以从STDIN /提示/控制台或函数参数中获取。 如果您正在从STDIN / prompt读取输入,则可以假定读取输入并将其转换为数组需要0倍的时间(即使您的答案中必须有这样做的代码) 确定其中最长的棍子。 输出可以是函数的返回值,也可以是STDOUT /控制台/警报。 程序/函数必须具有线性最坏情况下的时间复杂度,O(m+n)其中m为行n数和列数。 输入可以是以下格式之一: 2D阵列: [ [0, 0, 0, 0], [1, 0, 0, 0], [1, 1, 0, 1], [1, 1, 1, 1] ] 字符串数组: [ "0000", "1000", "1101", "1111" ] 输入将具有以下属性: 数组的大小未知,假定任何大小的矩形 在任何一列中,自上而下,如果您看到1,则下面的所有内容均为1 …

1
Manufactoria中的原始性测试
背景 Manufactoria是一款有关编程的游戏。玩家必须使用一种二维编程语言来完成任务。如果您从未听说过,最简单的学习方法就是尝试游戏的前几个级别。 挑战 您面临的挑战是创建一个测试数字素数的程序。 输入将是队列中的一系列N个蓝色标记。如果N为质数,则程序应接受它(将机器人移至终点)。如果N是合成的,则您的程序应拒绝它(将它放在地板上的某个地方)。 提交选项 由于这是比典型的工厂挑战赛更为复杂的挑战,因此我决定允许更多方式提交您的答案。 香草 我创建了一个13x13的自定义级别来构建和测试提交。定制测试级别如下。 13x13自定义级别 游戏仅在自定义级别上允许8个测试用例,但从理论上讲,您的创作应能够处理任何自然数N,仅受可用内存的限制。 仅供参考,自定义级别提供的测试用例如下: 1 -> reject 2 -> accept 4 -> reject 5 -> accept 7 -> accept 9 -> reject 11-> accept 15-> reject 扩展网格 有些用户可能想要的空间比13x13的网格还多。以下是通过更改URL中的数字创建的游戏内15x15自定义级别的链接: 15x15自定义级别 可悲的是,较大的自定义级别不起作用,因为无法访问其他单元。 伊索朗工厂 Manufactoria已适应基于ASCII的语言。如果您想采用其他方法来设计/测试您的作品,或者无法将最终解决方案安装到游戏板上,则可以使用此esolang。您可以在此处找到有关此esolang的信息: 峨factor工厂 esolang与实际游戏之间存在一些差异。例如,传送带交叉口的处理方式有所不同。尝试避免利用这些差异。 更快的测试方法 当涉及需要数千步才能完成的程序时,游戏速度非常慢。我的概念验证解决方案花了28042步来拒绝15。即使在游戏中以50倍加速时,这也花了太长时间。 我发现这个网站很有帮助。只需将链接复制粘贴到您的答案,就可以使用特定的输入来测试您的答案。28042步骤过程耗时不到一秒钟。 需要注意的一件事是,即使您的计算机正常工作,它也会经常说类似“不正确地接受”之类的内容。这是因为该网页仅知道测试用例。例如,它将说我的解决方案“错误地接受了”数字3,即使我的机器实际上是正确的。 如何取胜 评分标准是零件数(占用的单元)。这是代码高尔夫球,因此提交最少的部分将获胜。 对于那些感兴趣的人,我的基准解决方案包含96个零件,可安装在13x13网格上。寻找更好的算法可能会带来巨大的改进,因为我知道我使用了次优算法。

4
Golf String的format()反
反转Format方法。 大多数语言都提供FormatString类的方法(或等价的方法,例如sprintf)。它基本上采用“格式”字符串,其中可能包含具有某些额外格式的占位符,并且要插入零个或多个值来代替这些占位符。 您的任务是以您选择的语言实现逆函数。 API 方法名称应为format1或deformat。 输入:第一个参数将是“格式”字符串,就像在原始格式方法中一样。第二个参数将是解析的字符串(请参见下面的示例)。不需要也不允许其他参数。 输出:格式的占位符对应提取的值的数组(或您的选择语言的等价形式)。 该占位符{0},{1},{2},等。 如果格式不正确,则可能会引发错误,或者返回任何您喜欢的格式。 在输入无效的情况下,您可能会抛出错误或返回任何您喜欢的内容。无效的输入是String.Format无法使用相同格式的字符串生成的,例如:'{0}{0}', 'AAB'。 例子 deformat('{0} {1}', 'hello world') => ['hello', 'world'] deformat('http{0}://', 'https://') => ['s'] deformat('http{0}://', 'http://') => [''] // array of one item which is an empty string deformat('{0}{1}{0}', 'ABBA') => ['A', 'BB'] 歧义性 如有歧义,您可以返回任何合适的答案。例如: deformat('{0} {1}', 'Edsger W. Dijkstra') // …
13 code-golf  string 

10
四元数相乘
编写一个计算两个四元数的四元数乘积的命名函数或程序。使用尽可能少的字节。 四元数 四元数是实数的扩展,进一步扩展了复数。i四元数使用三个i,j,k满足关系的虚构单元,而不是单个虚构单元。 i*i = j*j = k*k = -1 i*j = k j*i = -k j*k = i k*j = -i k*i = j i*k = -j (在Wikipedia页面上也有这些表格。) 换句话说,每个假想单位与平方-1,两个不同的假想单位的乘积是剩余的第三个,+/-取决于是否(i,j,k)遵守循环顺序(即右手定则)。因此,乘法的顺序很重要。 一般的四元数是实部和三个虚部的线性组合。因此,用四个实数描述(a,b,c,d)。 x = a + b*i + c*j + d*k 因此,我们可以使用分布属性将两个四元数相乘,注意按正确的顺序将单位相乘,并在结果中分组类似的项。 (a + b*i + c*j + d*k) * (e …

2
内省式编程:分析其源代码和输出的代码
编写一个程序,输出字符总数以及源和输出中每个字符的频率。您必须遵循示例中说明的格式。 例 如果您的代码是 abb1 它的输出必须是 My source has 4 characters. 1 is "a" 2 are "b" 1 is "1" Besides unquoted numbers, my output has 383 characters. 34 are " " 79 are " " 63 are """ 2 are "'" 2 are "," 4 are "." 2 are "1" …
13 code-golf  quine 

6
PI窗口加密
这是一种简单的加密方法,使用PI数字对消息进行编码,该方法很简单: 键只是一个正整数,它指示窗口从何处开始: 给定一个要加密的字符串,该字符串仅包含小写字母,没有空格,请计算其长度,然后找到PI的第N个数字,然后继续将每个字母向右移动该数字指示的数量。 例如,如果键是,2并且我想编码house,我从第二个开始选择5位数的窗口:14159然后它变成: h -> i o -> s u -> v s -> x e -> n a。-您的程序/函数/算法将接收两个参数,一个仅由无空格的小写字母组成的字符串,以及一个键,它只是1(1表示3)和1000之间的正整数,可能更多或更少,因为我不太确定以上述精度计算PI需要多长时间,因为: b.-您必须自己在代码中计算PI,这是一个与之比较的简洁网页:Pi Day。输入中绝不能让您计算超过1000位的PI,这意味着length(message)+ key <= 1000。 通过计算Pi,我的意思是不要在您的代码中对其进行编码(对于代码高尔夫而言是愚蠢的),也不要在您的代码中使用任何嵌入的常数,任何三角标识(2 * acos(0))或任何Web参考。 c.-输出将只是加密的字符串。 这是一个代码高尔夫球问题,较短的代码胜出! 我将在2014年7月14日接受获奖答案。
13 code-golf  pi 

9
我的窗户上有水
场景 我开车沿路行驶,开始下雨。雨滴随机落在我的窗户上,现在我问自己,最大的连通湿区在哪里? 任务 为了简化操作,将窗口划分为10 * 10正方形矩阵。您的工作是在窗口上找到最大的连接的水滴区域。 输入值 有两种可能的输入,您可以使用2维数组或1维数组。您可以在任何输入(例如stdin等)之间进行选择。 例如: // 2-dimensional: [[0,1,0,0,0,0,1,0,0,0], [0,1,1,0,0,0,0,1,1,0], [0,1,1,0,0,0,0,1,0,0], [0,1,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,1,0], [0,0,0,1,1,0,0,0,1,0], [0,0,0,1,1,0,0,0,1,0], [0,0,0,0,0,1,1,0,1,0], [0,0,0,0,0,1,1,0,1,0], [0,0,0,0,0,0,0,0,0,0]] // 1-dimensional [0,1,0,0,0,0,1,0,0,0, 0,1,1,0,0,0,0,1,1,0, 0,1,1,0,0,0,0,1,0,0, 0,1,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,1,0, 0,0,0,1,1,0,0,0,1,0, 0,0,0,1,1,0,0,0,1,0, 0,0,0,0,0,1,1,0,1,0, 0,0,0,0,0,1,1,0,1,0, 0,0,0,0,0,0,0,0,0,0] 输出量 您的代码必须以“大小:Z坐标:(X1,Y1)(X2,Y2)..” 的格式输出最大连接区域的大小以及属于该区域的水滴的x坐标和y坐标。 ”。 先前输入的示例: Size: 6 Coordinates: (1,0) (1,1) (2,1) (1,2) (2,2) (1,3) 坐标的顺序无关紧要。 规则 如果水滴相互垂直接触,则它们相互连接 …
13 code-golf 

4
排序以未知基数表示的数字
给定一个字符串列表,将该列表按数字排序,而无需知道使用了什么底数。数字的值也是未知的('1'> 可能是'2')。 由于数字的值未知,因此请使用本福德定律(或第一数字定律)来确定数字的相对值。对于遵循本福德定律的分布,较低值的数字比较高值的数字更频繁地显示为前导数字。 规则 这是代码高尔夫球 字符串列表可以来自您选择的来源(stdin,变量,文件,用户等)。 字符串限于ASCII字符。 未显示为前导字符的字符具有最高值。(假设没有零,并严格按照前导频率进行排序。) 出现在前导数字处的字符与其他字符相同的次数被平均加权。 例 未分类 ['c','ca','ac','cc','a','ccc','cx','cz','cy'] 已排序 ['c','a','cc','ca','cz','cy','cx','ac','ccc'] 注意:在示例中'cz','cy'和'cx'可以以任意顺序显示为第5,第6和第7个元素,因为'x','y'和'z'的权重相等。
13 code-golf 

9
测试键盘
我的问题 在我目前的工作地点,我一手维护(因为我没有四肢,所以两手就可以了)维护着大约700台笔记本电脑。由于使用它们的性质和频率,我经常发现它们的损坏还不大。对于此问题,我主要关心的是笔记本电脑退回时,键盘损坏或失效的情况。当硬件维修人员修复这些损坏的键盘时,有必要对其进行测试。该测试涉及使用每个键以及每个键。多么拖累吧?问题是,有时我会忘记是否键入了密钥。 一个办法? 编写一个程序/脚本来: 接受用户输入 提交后(以您认为合适的任何方式),确定是否按下了每个键。 输出yes或no或以任何方式指示我是否成功按了所有键。(如果答案不明显,请在答案中指出两个可能的输出)。 假设: 大写,小写都一样?您认为适合的任何一种方式。只要是[AZ],[az]或[A-Za-z]。数字和其他符号也一样。(因此,如果=键入,+没关系)。您是否要包含移位字符的选择。 您不必担心制表符或空格 不需要功能键,CTRL,ALT,Esc或任何其他在屏幕上不输出内容的键 假定使用EN-US键盘,且笔记本电脑不包含数字键盘。 与操作系统无关,无论您喜欢哪种语言 多次按下该键无关紧要(因为当测试仪变得懒惰并像Mortal Kombat一样开始粉碎按钮时) 这是一个可能返回true的潜在输入集(或者是,或者是“您做到了!”) `1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./ 获胜者取决于最少的字符数。

9
创建世界杯猜谜程序
如您所知,世界杯小组赛阶段已经结束,从明天开始,最好的16支球队将开始淘汰赛阶段: 巴西(BRA) 墨西哥(MEX) 荷兰(NED) 智利(CHI) 哥伦比亚(COL) 希腊(GRE) 哥斯达黎加(CRC) 乌拉圭(URU) 法国(FRA) 瑞士(SUI) 阿根廷(ARG) 尼日利亚(NGA) 德国(GER) 美国(美国) 比利时(BEL) 阿尔及利亚(ALG) 在淘汰赛阶段,每场比赛的获胜者进入下一轮,失败者回家(没有平局)。单击此处查看有关淘汰赛阶段的更多信息。 您已被新的博彩网站golfbet.com录用,因为您擅长编程和体育博彩。您的任务是编写一个可以猜出比赛获胜者的程序或函数。当然,每个人都会做出不同的猜测,只要您的猜测是一致的,都没关系。 如果您不想猜测,可以使用以下猜测: BRA BRA CHI BRA COL COL URU GER FRA FRA NGA GER GER GER ALG GER NED NED MEX NED CRC CRC GRE ARG ARG ARG SUI ARG BEL BEL …
13 code-golf 

8
仅使用++计算平方根
您的任务是计算正整数的平方根,而无需使用任何数学运算符来更改数字,例如: 设置变量(例如squareRoot = 5) 加法(A + B) 减法(AB) 乘法(A * B) 部门(A / B) 平方,立方,四等根 指数 就此问题而言,比较运算符(例如<,>,==等)不被视为“数学运算符”,并且允许它们,只要它们不更改变量的值即可。 您唯一可以使用的运算符是++。有以下例外情况: 如果需要,可以将其设置为0来初始化变量。 如果您的语言不包含++语法,则可以使用等效的语法,例如foo + = 1或foo = foo + 1 平方根应计算为小数点后的至少六位(十万位),并输出为小数点的整数(例如,如果我输入2,则根据四舍五入可以得出14142135624或1414213) 。向上或向下取整并不重要。 不允许使用用户定义的功能。另外,也不允许使用goto模拟功能。 我很想看看每个人都提交了什么!编码愉快! 澄清说明 说明该数字是一个正整数。欢迎您编写可以做任何数字的代码,但这不是必需的。 澄清#2 说明允许比较运算符。 澄清#3 加法,减法,乘法,除法和功能变化的数字都是不允许的所有,不管他们是否被保存到一个变量或没有。抱歉,这会使现有的几个答案无效,但是我想用“更改数字”定义这组运算符,以防止出现巨魔答案(例如,我只是使用sqrt()函数,您只禁止添加,乘法,除法和减法)。对困惑感到抱歉。 澄清#4 说明我们至少需要5位数字。10位数字导致代码长时间运行。

2
青蛙游戏
如何为优质的街机游戏Frogger带来Code高尔夫风格的复兴! 您的任务是使用尽可能少的代码字符来创建此经典游戏的版本。使用您选择的语言(允许使用库,例如jQuery等)。 要求 您有3条生命,并且由于以下原因失去1条生命: 移动到游戏场景之外。 被车辆撞到。 跳入水中。 跳到已经有人居住的家中。 时间不多了。 青蛙用箭头键移动。 在五个住所之间(在顶部的草之间的空间)有固定的间隔,存在一个“传送”错误。 向前移动时,您将获得10分;在发现虫子时,您将获得200点奖励积分;空旷的家中,您将获得500点积分。 计时器滴答作响,每个级别都更快(车辆,青蛙和原木的移动级别也应该更快)。 车辆应有5条车道,有3条带原木的车道和2条带海龟的车道。 每个车道应以随机选择的速度移动(在一定原因内)。 当可用房屋被占用时,青蛙会出现在起点,您可以从该点控制那只青蛙。 当所有五个房屋都被占用后,计时器将重新启动,房屋将变空。游戏结束时,将计算并显示各个级别的分数。 附加信息 不需要开始屏幕,音乐和高分表。您也不需要将设计模仿到像素。想要黑色和白色吗?想要真的很简约吗?还是用立方体代替青蛙或汽车?工作良好!只是保持代码紧密。最短的代码胜出!


8
欠载数的最短表示
风味文字 基于堆栈的esolang 欠载有一些有趣的联系,函数式编程。其中之一是对数值数据类型的处理-像lambda演算一样,您可以通过执行N次操作的函数来表示自然数N。 为简单起见,我们仅考虑以下Underload命令子集: : -此命令复制堆栈上的顶层项目。 * -此命令将堆栈中的前两个项目合并为一个项目。 我们将一个Underload数字N定义为一个字符串,当执行该字符串时:,*它消耗堆栈中的最高位项目,并产生N个该项目的副本,并将它们连接在一起。一些例子: 没有欠载数字0,-1、1 / 2,π。 空字符串是欠载数字1,因为它使堆栈保持不变。 :*是欠载数字2,因为它复制了最上面的项目,然后将这两个副本连接在一起成为一个项目:(A):*= (A)(A)*= (AA)。 ::**是Underload数字3:(A)::**= (A)(A):**= (A)(AA)*= (AAA)。 :::*** 是欠载数字4。 :*:*也是欠载数字4:(A):*:*= (AA):*= (AA)(AA)*= (AAAA)。 通常,您会发现,如果M和N分别是欠载数字M和N,则:N*数字N + 1和MN数字M×N。 挑战 您的任务是编写最短的程序(在STDIN上接受输入)或函数(通过参数接受输入),以产生最短的欠载数字表示形式,作为字符串输入。也就是说,如果输入的正自然数N> 1,则必须生成一个负数N,其字符长度小于或等于其他所有负数N的长度。 输入和输出示例:(“输入- OUTPUT”) 1- 。 2- :*。 5- ::*:**(2×2 + 1)。 7- ::*::***(2×3 + 1)或:::**:**(3×2 + 1)。 33- ::*:*:*:*:**(2×2×2×2×2 …

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.