Questions tagged «code-golf»

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

10
符号与字母
符号与字母 该ASCII字符已经分裂一次一次!您的设置是字母和符号。 这些信 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 符号 !"#$%&'()*+,-./0123456789:;<=>?@[\]^_`{|}~ 任务是编写两个程序: 准确打印每个字母一次,而无需在程序中使用它们。 每个符号仅打印一次,而无需在程序中使用它们。 规则 空格可能出现在您的程序或输出中。 不允许使用非ASCII字符。 输出以文件的内容或名称的形式输出到标准输出或文件中。 无输入。 输出只能包含一组或另一组的ASCII字符。 程序可以用不同的语言或相同的语言编写,但有一个例外: 该空白语言仅可用于项目之一。 有标准漏洞。 计分 # of characters in program 1 +# of characters in program 2 =Score 最低分获胜! 注意: 为了鼓励更多的投稿,您仍然可以仅针对其中一个程序发布答案并提供解决方案。您将无法取胜,但仍然可以炫耀一些炫酷的东西。 感谢加尔文的兴趣爱好启发了他先前的问题。

10
为我的深奥语言撰写翻译
我想过深奥的语言跳线。稍后您将了解原因。 它以字节为单元的随机存取存储器工作。RAM是零索引的,最初填充零。 尝试使用负索引访问单元时,将显示错误并终止程序。 尝试从比上一个更大的索引处读取时,应返回零。 尝试以比上一个更大的索引进行写入时,RAM应该增加到1024的倍数,并且新单元格要填充零(从技术上讲,您可以将RAM不能增加到1024的倍数,原因是性能得到了提高,因此如果花费很多字符,不能做到1024的倍数)。 程序还具有指向RAM中单元的指针,该指针最初为零 程序开始执行时,将显示输入字符串的提示(或从命令行参数获取输入,这取决于您)。输入字符串不应包含空字符(零字节)。然后将输入字符串从零索引处开始写入RAM。 当程序结束时,显示带有程序输出的框-RAM的内容从零索引到第一个零字节(不包括在内)。 现在,最有趣的部分是语法。 程序由命令(一元运算符-前缀)及其参数组成。命令和参数可以用空格或换行符分隔,但不是必需的。但是,参数内部的空格无效,例如,# 2 = 4有效但# 2 = 4 4无效。 程序之间可以有注释()。注释不能嵌套-例如,(abc(def)ghi)注释为中(abc(def)。注释可以放在任何地方。 #123 将RAM指针设置为123(任何正十进制整数或零)。 >123 将RAM指针增加123(任何正十进制整数)。 <123 将RAM指针减123(任何正十进制整数)。 =123 在当前单元格中写入123(任何无符号的8位十进制整数)。 +123 将123(任何无符号的8位十进制整数)添加到当前单元格(模256)。 -123 从当前单元格中减去123(任何无符号的8位十进制整数)(取模256)。 :123-“ goto”-转到命令号123(第一个为0)。您只能使用goto来控制程序的流程-它必须跳转-这就是为什么我决定将这种语言称为Jumper。 如果缺少参数,请考虑为><+-命令指定1 或为0 #=:。 此外,还有命令修饰符- ?(命令前缀),仅当当前单元格不为零时才执行下一个命令,否则跳过该命令。可以应用于任何命令。 例如,?:17如果当前单元格不为零,则-转到命令17。 如果程序无效或在运行期间发生错误,则会显示消息“错误”。因为是CodeGolf,所以这样的短消息就可以了。 你的任务 为此语言编写最短的口译员。 一些测试程序 (prints "Hello world!" regardless of input) =72>=101>=108>=108>=111>=32>=119>=111>=114>=108>=100>=33>= (appends …

10
写一个单词方程解算器
这个问题已经在这里有了答案: 利用“自由空白” (10个答案) 2个月前关闭。 介绍 考虑以下示例: CODE + GOLF —————— GREAT 这是一个等式,其中每个字母代表一个十进制数字,而单词代表自然数(相似的字母代表相似的数字,不同的字母代表不同的数字)。任务是将每个字母与其数字值进行匹配,以使方程式正确。上式的一种解决方案是: 9265 + 1278 —————— 10543 你的任务 您的任务是编写一个程序或函数来解决上述等式。 输入值 输入是以下格式的字符串: [A-Z]+\+[A-Z]+=[A-Z]+ 例: CODE+GOLF=GREAT AA+BB=CC 省略空格,仅使用大写字母A和Z之间的字母(不使用特殊字母或小写字母)。 可以从标准输入,文件或功能参数中读取此字符串。 输出量 您有以下两个输出格式选项: 原始方程式已替换数字 字母列表及其值 如果有多个解决方案,则应返回其中的任何一个(但只有一个)。如果没有解决方案,则程序应返回一个空字符串或null。输出可以作为字符串返回,可以写入标准输出或文件。 例: 9265+1278=10543 A=1 B=2 C=3 (您可以使用任何定界符) 规则 为了简化起见,数字以0开头是可接受的,但是您可以将数字以0开头作为无效解决方案,这取决于您 相似的字母代表相似的数字,不同的字母代表不同的数字 您可以使用任何语言和所选语言的标准库(无外部库) 您无法连接到Internet上的任何资源(为什么仍要这么做?) 这是一项代码高尔夫任务,最短的代码获胜。连续的空白字符算作单个字符。(因此,用空格编写的任何程序都会自动获胜) 我有一个使用179个字符的解决方案。如果不清楚,请在评论中问我。

4
完成懒惰的括号
键盘上的括号已全部用完,我想尽可能避免使用它们。您的挑战是通过在每行之前和之后添加括号来平衡包含括号的行。 这类似于TI-Basic的自动括号和字符串闭包(即Output(1, 1, "Hello, World!)。它还可以保存程序中的宝贵字节! 输入示例: This line has no parentheses alert(Math.max(1, 2 1+1)*2).toString() function() { alert('Hello, World!'); })( 示例(可能)输出: This line has no parentheses alert(Math.max(1, 2)) ((1+1)*2).toString() (function() { alert('Hello, World!'); })() 规格: 对于每一行输入, 根据需要在行的开头添加尽可能多的开放括号,并在行的末尾添加封闭括号以平衡行中的括号 “余额”的定义是: (和)行中的金额相同 对于从字符串开头开始的每个子字符串,此子字符串的结束括号不得多于开头括号 例如,(foo))(bar不平衡是因为(foo))闭括号比开括号多 如果需要,可以添加多余的括号,如果这样会使代码更短 您无需担心字符串文字或类似的东西,假设所有括号都需要平衡 输出每行且括号括起来 这是代码高尔夫球,所以最短的代码(以字节为单位)将获胜!

7
如果社区会成为一个人
井社区仅仅是一个机器人。但是如果会是一个人怎么办? 您的任务是查找如果社区因其所做的编辑而享有声誉(只需进行2次编辑),就会发现其声誉。 这适用于任何站点,但是我们将考虑使用PP&CG解决此问题。 使用任何语言,甚至data.stackexchange也可以。 因为这是代码高尔夫球,所以最小的代码赢得了我获得+15的声望(通过赏金,我会为自己留下101个:P)。 编辑:考虑各种可以提高声誉的编辑。
17 code-golf 

19
打印两个数字的最大公因数的素数分解
标题说明了一切。两个输入的32位正整数m, n >= 2,gcd(m,n)以素数分解形式输出。 输入值 命令行参数或1行stdin可以,对于高尔夫来说更合适。 输出量 用指数分隔的单个空格(没有其他空格)。如果输入是相对质数,则什么也不输出。 例子: $ ./factorize 96 162 2^1 3^1 $ ./factorize 14 15 $ ./factorize 196 294 2^1 7^2 规则 您不得将外部资源,数学库或内置函数用于分解或GCD。示例:Java,否java.lang.Math。红宝石,否prime_division,perl,否factor等
17 code-golf  math 

7
预测男人会去哪里
一个人住在(0, 0)一个城镇的西北角,高度h和宽度都很高w。他每天都从他的家走到边境(?, w)或边境(h, ?)。在以下示例中,该名男子前往(3, 3)今天。 (0, 0) +--+ + + . (0, 4) | + +--+--+ . | + + + + . | (3, 0) . . . . . (3, 4) 这个人在每个点上都记录了一点(+在上面的示例中)。每次到达某个点时,如果钻头在哪里,他就会向东1走,否则就向南。他离开后,位被翻转了。例如: Day 1: 1--0 1 1 Day 2: 0 1 1 1 Day 3: 1--1--1--1-- Day 4: …

4
我喜欢毕达哥拉斯的树
...所以要让我成为一棵树是一个挑战。 生成一个名为tree的程序或函数,该程序或函数采用一个整数参数N,并绘制一个N层深的勾股树,其中0层只是树干。 树的每个结点都应将三角形的顶点放置在周长上的任意点上(此点应均匀分布在至少5个等距的点上,或均匀分布在整个半圆上)。 根据您的时间,您的树也可以是3d,彩色或点亮。但是,这是代码高尔夫球,因此最小的文件为准。 编辑:一周之后,我将关闭比赛并接受最小的答案

1
使用最少的字节来解决2048的确定性版本
编写一个程序,该程序将生成到游戏2048的确定性变式的获胜顺序。该顺序应为数字字符串0-3的形式,其中0:向上,1:向右,2:向下,3:剩下。例如,字符串“ 1132”表示右右左下。获胜的程序是到2048的最短源代码! 确定性2048的规则:游戏在4x4网格上进行游戏,该网格最初包含1个图块,位于左上角。每个移动都由命令“左”,“右”,“上”或“下”组成。左命令将网格上的所有图块向左滑动,然后像从左开始的图块一样进行合并和求和。同样,右命令将图块向右滑动,然后从右开始进行组合。 每个图块一次只能加入一个组合。 移动后,将在左侧的第一列中创建一个具有可用空间的新2磁贴,在该列的顶部中的第一个可用空间中将创建一个新的2磁贴。 例如,序列“右右左下”会导致状态 2___ ____ ____ ____ 2__2 ____ ____ ____ 2__4 ____ ____ ____ 24__ 2___ ____ ____ 2___ ____ ____ 44__ 应用于行_ 2 2 2的命令权限将导致_ _ 2 4。应用于行2 2 2 2的命令权限将导致_ _ 4 4 这个问题的灵感来自http://jmfork.github.io/2048/

3
在3D中实现生活游戏
面临的挑战是找到最短的3D生活游戏实施方式(示例)。这些是规则: 只有1个或更少邻居的像元(在这种情况下为立方体)会死亡,就像是出于孤独一样。 如果恰好有5个细胞围绕一个空细胞,则它们会繁殖并充满它。 如果一个小区有8个或更多的邻居,它将死于拥挤。 至少将其设置为10x10x10,这样才能分别输出图层: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X 0 0 X 0 0 0 0 0 0 0 X X X …

17
从子串中找到最小的素数
1946年,鄂尔多斯和科普兰证明某个数字是一个正数,即其十进制扩展中的数字是均匀分布的。 用户将输入一个数字序列,您会发现以10为底的包含该字符串的最小素数。 例: input -> output "10" -> 101 "03" -> 103 "222" -> 2221 "98765" -> 987659 以字节为单位的最短代码获胜。我确实知道某些语言(mathematica,sage,pari-gp ...)带有与质数有关的内置函数。-50字节(如果您的程序不依赖于此类功能)。如果您的语言已经具有巨大的优势,请不要试图对此作弊,不要索取奖金。 编辑 根据下面的一些评论,包含“ 03”的最小素数为3。这真的有区别吗?我唯一想到的是,数字可能比字符串更容易处理。 在“ 03”之类的情况下,首选输出为103。但是,我不认为它是程序的基础部分,因此,如果它允许您减少字节数,则可以随意忽略任何前导零。
17 code-golf  primes 

10
划分水流图
在Palantir Technologies的采访中,这是互联网上的一个挑战。 一组农民有一些海拔数据,我们将帮助他们了解降雨如何流过他们的农田。我们将土地表示为高度的二维数组,并根据水流向山下的思想使用以下模型: 如果一个单元格的四个相邻单元格都具有更高的高度,我们称此单元格为汇;水在水槽中积聚。否则,水将流到最低高度的相邻单元格。如果某个单元格不是接收器,则可以假定它具有唯一的最低邻居,并且该邻居将比该单元格低。 直接或间接排入同一水槽的细胞被称为同一盆的一部分。 您面临的挑战是将地图分成多个盆地。特别是,在给定高程图的情况下,您的代码应将地图划分为盆地,并按降序输出盆地的大小。 假设高程图是正方形的。输入将从以一个整数S(表示地图的高度(和宽度))开始。接下来的S行将分别包含地图的一行,每行都有S个整数-行中S个单元格的高程。一些农民土地面积较小,例如以下示例,而有些农民土地面积较大。但是,在任何情况下农民都不会拥有大于S = 5000的土地。 您的代码应按降序输出以空格分隔的盆地尺寸列表。(忽略尾随空格。) 下面是一些示例。 输入: 3 1 5 2 2 4 7 3 6 9 输出: 7 2 标有A和B的盆地为: A A B A A B A A A 输入: 1 10 输出: 1 在这种情况下,只有一个盆地。 输入: 5 1 0 2 5 8 2 3 …

30
Pi计算代码高尔夫[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 2年前关闭。 挑战 您必须以最短的长度计算pi。欢迎加入任何语言,您可以使用任何公式来计算pi。它必须能够计算pi到至少5个小数位。最短,将以字符为单位。比赛持续48小时。开始。 注意:这个类似的问题指出,必须使用4 *(1 – 1/3 + 1/5 – 1/7 +…)级数来计算PI。这个问题并没有这个限制,而事实上很多答案在这里(包括最有可能胜出)将是无效的,其他的问题。因此,这不是重复的。

3
Unicode UTF转换器
目的是在UTF FAQ中给出的官方Unicode编码之间创建完全兼容的转换器。鉴于这是以Unicode为中心的,我将使用所涉及的最佳编码来接受最低字节数的答案(除非您使用APL进行编程,否则它可能是UTF-8)。我为冗长的帖子表示歉意,但其中很多内容都在解释编码,这些编码也可以在官方规范(pdf,第3.9 D90-D92节)或Wikipedia中进行访问。。 技术指标 如果您选择的语言在任何时候都不能完全满足要求,请使用符合给定规则精神的内容代替它。例如。并非每种语言都有内置的数组,函数等。 不使用字符串库/函数或编码库/函数。此代码的重点是使用位/字节操作实现转换器。但是,允许将字符串本身以字符或字节数组的形式使用。哦,也没有执行转换的OS调用。 转换器是一个具有三个参数的函数:代表已编码输入字符串的字节数组,以及以数字表示的“输入”和“输出”编码。我们将按此UTF-8, UTF-16, UTF-16BE, UTF-16LE, UTF-32, UTF-32BE, and UTF32LE顺序任意分配从0到6的数字。无需检查数字是否为< 0或> 6,我们将假定这些参数正确。转换器将以所需的输出编码返回有效的字节数组。 我们将使用空字符(U+0000)作为字符串终止符。此后的任何内容都无关紧要。我们将假设输入数组在某处具有空字符,因此您无需进行边界检查。 根据FAQ,如果输入字节数组对其声明的编码无效,则必须发出错误信号。我们将通过以下方式之一执行此操作:使程序崩溃,引发异常,返回null或返回其前四个字节全为0的数组(以便可以U+0000在每种编码中将其识别)。 编码 必须遵循官方规范,但是Wikipedia对编码提供了很好的解释(据我认为是正确的),在这里我将对其进行总结以确保完整性。请注意,UTF-16和UTF-32具有字节序变体。 UTF-32,UTF-32LE,UTF-32BE 最简单的编码,每个代码点仅以等于其数值的4个字节进行编码。LE / BE表示字节序(小字节序/大字节序)。 UTF-16,UTF-16LE,UTF-16BE 来自的代码点U+0000 - U+FFFF以等于其数值的2个字节编码。较大的值使用一对代理进行编码,这些代理是的保留值U+D800 - U+DFFF。因此,要编码大于的点U+FFFF,可以使用以下算法(从Wikipedia中无耻地复制): 从代码点减去0x010000,剩下20位数字,范围为0..0x0FFFFF。 最高的十个位(0..0x03FF范围内的数字)被添加到0xD800,以给出第一个代码单元或前导代理,其范围为0xD800..0xDBFF [...]。 低十位(也位于0..0x03FF范围内)添加到0xDC00,以提供第二个代码单元或尾迹替代,其范围为0xDC00..0xDFFF [...]。 UTF-8 来自的代码点U+0000 - U+007F被编码为等于其数值的1个字节。从U+0080 - U+07FF他们被编码为110xxxxx 10xxxxxx,U+0800 - U+FFFF是1110xxxx 10xxxxxx 10xxxxxx,值越大11110xxx 10xxxxxx 10xxxxxx 10xxxxxx。所述x的是从代码点的数值的位。 物料清单 …

19
验证Brainfuck程序
Brainfuck的另一个解析问题,但是这次……有所不同。 您正在开发Brainfuck程序的公司Infinite Monkeys Incorporated中工作,以解决各种有趣的问题(偶然地,至少是偶然,毕竟该公司创建了随机程序)。但是,看来仅执行Brainfuck的快速图灵机存在语法错误的小而昂贵的问题-生成一个,计算机便爆炸了。这可能是设计缺陷,但没有人费心去寻找它为什么会发生。 由于Turing机器(尤其是快速的机器)非常昂贵(毕竟它们具有无限的RAM成本),因此最好在执行代码之前确保程序没有任何语法错误。您的公司将要运行大量代码,因此手动验证将不起作用。编写一个程序,该程序读取用于Brainfuck的STDIN代码,如果程序有任何语法错误(例如],由于没有匹配,则是语法错误),则退出状态将退出状态设置为0(错误)以外的任何值[。如果程序完全正常,则以退出状态设置为0退出。 确保您的程序正确注意到涉及的错误[]。您不希望其他计算机爆炸,对吗?哦,请确保它尽可能的短-您的老板为简短的程序付费(因为他认为这些程序很快,还是有些东西)。哦,您不必在Brainfuck中编码(实际上,您不能,因为Brainfuck不支持退出代码),您的代码将在普通计算机上运行。 因此,正如您所看到的,您的工作是检查Brainfuck程序是否“有效”(具有成对的[]符号)。请注意,Brainfuck程序可以使用以外的其他字符[],因此请勿仅因为它具有其他命令而拒绝该程序。最小的代码获胜,但无论如何,您可能会更在乎投票。

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.