Questions tagged «code-golf»

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

21
使用集合论的字符串长度
摘自Wikipedia 对自然数的集合理论定义 自然数的集合N定义为包含0且在由S(n)= n∪{n}定义的后继函数S下闭合的最小集合。 用这种方式定义的前几个数字是0 = {},1 = {0} = {{}},2 = {0,1} = {{},{{}}},3 = {0,1,2 } = {{},{{}},{{},{{}}}}。 使用自然数的此定义计算字符串的长度。 输入 任意长度的a-zA-Z中的字符串 以设置符号输出字符串的长度,不带分隔符 例子 输入 空字符串 输出 {} 输入 一个 输出 {{}} 输入 aaaa 输出 {{} {{}} {{} {{}}} {{} {{}} {{} {{}}}}} 为了提高可读性,输出带有分隔符的“ aaaa”是 { {} {{}} {{} …

30
生成雷卡曼的序列
Recamán的序列(A005132)是一个数学序列,定义如下: A(0) = 0 A(n) = A(n-1) - n if A(n-1) - n > 0 and is new, else A(n) = A(n-1) + n 上面漂亮的LaTex版本(可能更易读): A(n)=⎧⎩⎨0A(n−1)−nA(n−1)+nif n=0if A(n−1)−n is positive and not already in the sequenceotherwiseA(n)={0if n=0A(n−1)−nif A(n−1)−n is positive and not already in the sequenceA(n−1)+notherwiseA(n) = \begin{cases}0 & \textrm{if …

13
滚龙与地下城骰子
我想玩龙与地下城,但我没有任何骰子!您的挑战是掷出一些D&D骰子。 Backus-Naur格式的输入格式规范为: <valid-input> ::= <opt-integer> "d" <integer> <opt-modifier> <opt-integer> ::= | <integer> <opt-modifier> ::= | "+" <integer> <integer> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | <integer> <integer> 之前的可选整数 d是掷骰子的数量;它必须至少为1,1如果未提供,则默认为。 紧随其后的必需整数 d是每个芯片的边数;至少应该是1。每个骰子的边都是从开始的不同的连续正整数1。 可选修饰符可以是 +0,+0如果未指定,则默认为。 例如,对于input 2d10+5,您生成两个从1到10(含1和10)之间的随机数,将它们加在一起,然后加5。然后将输出结果。 如果您收到无效的输入,如2d,d20+,0d4,2d5+1+2,2+2,或其他任何东西,不适合这种格式,你必须输出“ …
20 code-golf  random 

1
评估正则表达式可以匹配的字符串数
在一个有几个人的聊天室中,我和他们之间出现了一个有关正则表达式可以匹配多少个字符串的话题。 您的任务是构建一个可以回答该问题的程序。 您的程序将接受本文档中定义为“扩展正则表达式”的任何正则表达式作为输入,例如: ^[A-Za-z0-9]{8}$ 并输出与该表达式匹配的可能字符串的总数,infinity如果有无限多个,则输出: 218340105584896 too many如果与正则表达式匹配的字符串超过2 63 -1,则您的程序也可能输出;但是,它不能输出infinity除非实际上有无限多的字符串,否则。 做上述事情的最短程序胜出。
20 code-golf 

7
朱莉娅打高尔夫球的秘诀
您在朱莉娅打高尔夫球有哪些一般提示?我正在寻找可以应用于编码高尔夫球问题的想法,这些想法至少在某种程度上是特定于Julia的(例如,“删除评论”不是答案)。
20 code-golf  tips 

2
画犹他茶壶
最初由Martin Newell创建的犹他州茶壶是测试3D图形程序的便捷对象。 任务是在透视投影中创建茶壶的线框图像。为了鼓励使用源代码应用程序,可以将查看和摄像机控制隔离开来,并从计数中排除。这样一来,可以修改参数和输入文件,并重新使用代码以生成各种图像,但是不必创建能够接受复杂命令行参数等的完整实用程序。寻求“黑客”的平衡。 参考 StackOverflow:Bezier修补程序如何在犹他州茶壶中工作? 因此,这里有三个子任务: 以原始格式读取茶壶数据。 使用deCasteljau拆分或其他方法细分补丁数据。其他方法是使用Bezier基础矩阵并评估多项式(标准参考,例如Foley和van Dam,Newmann和Sproull)或Bernstein基础方法(这仍然超出我的范围)。 将这些点投影到2D(如果该语言本身不支持3D),并绘制一个小补丁的轮廓,如从Eye点看到的那样,该点的视图以LookAt点为中心,并且其垂直轴与茶壶的垂直轴对齐(即,从有利的位置将其“垂直”绘制)。 假设从文件读取面向行的文本数据没什么大不了,那么这个挑战实际上就是动手使用Bi-Cubic Bezier补丁数据。 由于对背面剔除进行简单的常规测试是不够的(贴片并非都朝外),因此无需去除任何隐藏线或表面。作为线框,背面看起来应该很好。可以通过根据与眼睛的距离调整线宽来改善外观,但这并不是绝对必要的(我自己的程序不会这样做)。 这既是代码高尔夫,又是罗塞塔石碑。参加高尔夫比赛的答案应包括正常计数。但是,即使不是特别简短,也极力鼓励以非常规语言提交。 对于Kolmogorov复杂性爱好者,这里有一个更简洁的数据集,可以通过增加旋转次数和修补程序的镜像来重建整套数据集。在吉姆·布林(Jim Blinn)的“图形流水线之旅”中,利用各个补丁具有旋转或其他对称性这一事实,提供了一种更为简洁的生成方法。整个身体(或盖子)可以通过绕y轴旋转的单个Bezier曲线来描述。喷口和手柄可通过其轮廓的两条曲线来描述,然后选择中间控制点以近似于圆形挤压。

6
在模式中找出奇数字符
输入值 第一行将是重复一定次数的某个字符串。例如,它可以是abcabcabcabc,[];[];[];等。例如:1231231231。总是找到最短的字符串;例如,如果该行是22222,则该字符串是2,不是22或22222或其他任何字符串。该字符串将始终重复至少2次。 所有后续行将是该模式偏移任何数字。例如,可能是: abcabcabc cabcabcab bcabcabca (偏移1),或者可能是: abcdefabcdefabcdefabc cdefabcdefabcdefabcde efabcdefabcdefabcdefa (偏移量为4)。 输入中的字符之一将是错误的。(保证不在第一行。)例如,在此输入中: a=1a=1a=1 =1a=1a=1a 1a=11=1a= a=1a=1a=1 =1a=1a=1a 在1第3行是奇数一个出来。 输出量 您必须输出奇数之一的(从左上角开始,从零开始)。例如,在上述输入中,对应的输出为4,2。您也可以输出4 2,或"4""2"什至[[4],[2]]或任何其他格式,只要您可以知道输出应该是什么即可。 测试用例 输入: codegolfcodegolfco egolfcodegolfcodeg lfcodegolfcodegoff odegolfcodegolfcod golfcodegolfcodego fcodegolfcodegolfc 输出: 16,2 输入: ][[][][[][][[][][[][][[ [][][[][][[][][[][][[][ [][[][][[][][[][][[][][ [[][][[]]][[][][[][][[] 输出: 8,3 输入: ... . . ... 输出: 1,1 输入: ababa babab ababb babab …
20 code-golf 

17
让三角学开始吧!
介绍: 所述正弦的x由下式给出: sin(x) = x - x^3/3! + x^5/5! - x^7/7! + x^9/9! - x^11/11! // and more follows... 的余弦的x由下式给出: cos(x) = 1 - x^2/2! + x^4/4! - x^6/6! + x^8/8! - x^10/10! // and more follows... 任务: 给定的值x和n,写程序(无功能等)来输出的值sin(x)和cos(x)正确高达n上述公式的条件。假设x以弧度为单位。 输入: x n 甲十进制数x(具有高达3个小数位)和一个整数n。输入必须在标准输入或提示对话框上(如果您的语言不支持标准输入) 输出: [sin(x)] [cos(x)] 两者的价值sin(x)和cos(x)应四舍五入至小数点后6位。如果sin(x)是0.5588558855(10个十进制数字),则应四舍五入为0.558856(6个十进制数字)。舍入必须最接近此Wiki文章表的第五列“舍入到最接近”中所述。 限制条件: 1 <= …
20 code-golf  math 

3
JSFuck高尔夫-Hello World
JSFuck是一种深奥的语言,在该语言中,任何Javascript语句都可以准确地复制到另一个仅使用6个字符的有效Javascript程序中[]()!+。 当给JSFuck转换器输入时alert("Hello World!"),它会生成一个代码块,该代码块长22,948个字符。因为该程序使用了大量的自动转换来创建该块,所以我相信使用手动优化可以使代码更短。 您的任务是构建alert("Hello World!")仅使用字符执行任务的Javascript程序[]()!+。这样做的最短代码将获胜。

4
查找一组2D点的凸包
当您将一组钉子钉在木板上并用橡皮筋包住时,您会得到一个凸包。 您的任务(如果您决定接受)是找到给定2D点集的凸包。 一些规则: 作为函数编写,该点的列表坐标(任意格式)是参数 输出必须是顺时针或逆时针列出的凸包中的点列表,从任何一个开始 输出列表可以采用任何合理的格式,其中每个点的坐标都可以清楚地区分。(例如,不是一个模糊列表{0.1、1.3、4,...}) 如果凸包的一段中的三个或更多点对齐,则输出中仅应保留两个极端 样本数据: 样品0 输入: {{1, 1}, {2, 2}, {3, 3}, {1, 3}} 输出: {{3, 3}, {1, 3}, {1, 1}} (这些数字只是说明性的) 样品1 输入: {{4.4, 14}, {6.7, 15.25}, {6.9, 12.8}, {2.1, 11.1}, {9.5, 14.9}, {13.2, 11.9}, {10.3, 12.3}, {6.8, 9.5}, {3.3, 7.7}, {0.6, 5.1}, {5.3, 2.4}, …

9
寻找皮萨诺时期
的斐波那契序列是众所周知的序列,其中每个条目的前两个与前两项的总和是1。如果我们把每学期的模一个恒定的顺序将成为周期性的。例如,如果我们决定计算序列mod 7,我们将得到以下结果: 1 1 2 3 5 1 6 0 6 6 5 4 2 6 1 0 1 1 ... 它的周期为16。定义了一个相关序列,称为Pisano序列,使得该序列是a(n)模数为n时斐波纳契序列的周期。 任务 您应该编写一个程序或函数,给定的程序或函数n将计算并输出Fibonacci序列mod的周期n。那是Pisano序列中的第n项。 您只能在范围内支持整数 0 < n < 2^30 这是一场代码高尔夫竞赛,因此您应努力使按字节计分的源代码的大小最小化。 测试用例 1 -> 1 2 -> 3 3 -> 8 4 -> 6 5 -> 20 6 -> 24 …

10
利用“自由空白”
假设一个代码高尔夫挑战在程序长度中不计空格。通过将您的脚本编码为空白来欺骗该系统,并查找可解码并执行嵌入式空白的脚本。 例 我对JBernardo的Meta Golf Challenge的解决方案是将Sage(或Python)代码编码为空白,然后将解码器作为高尔夫球。 s = ' ' for c in '<lots of whitespace>'.split(s): s+=chr(len(c)) exec s 编码是采用脚本,在换行符前添加前缀,对于c脚本中的每个字符,均使用输出ord(c)选项卡,后跟空格。由于我使用的是Python,并且必须以空格开头,因此必须在换行符前加一个换行符s。 计分 完整的解决方案包含对您使用的编码的描述(如果比较复杂,请提供脚本),以及“解码并执行”脚本。您的分数是“解码并执行”脚本中非空格字符的数量。 禁止使用空格(语言) 而且,任何具有完整运算符集且仅使用空格字符的语言都是不允许的:我将接受最低的非零分数。

14
编写一个Playfair加密程序
编写一个程序,该程序需要两行输入,并根据Playfair加密技术将第一行用作关键字来加密第二行。 Wikipedia详细描述了Playfair加密,但是为了避免歧义,这里有一个简短的摘要: 1.生成密钥表: 用替换J关键字中出现的所有I,然后去除所有非字母字符和重复字符。插入5×5加密表中,用其余的字母填充剩余的单元格(除非J;我们不喜欢J)。 例: S T A C K O V E R F Stack Overflow --> STACKOVERFLW --> L W B D G H I M N P Q U X Y Z 2.准备要加密的消息 将每个替换J为I,剥离所有非字母字符并分成对,使用可以X将包含相同字母的任何对断开两次。如果结尾的字母数为奇数,请X在末尾添加。(请注意:数字必须完整拼写-ONETWO,THREE,等等-但是你可以认为这已经为你做了。) 例: In: The cat crept into the crypt, crapped, and crept out again. …

15
编写太低(太高)游戏的最短代码
您必须使用最短的代码(以字节为单位)制作游戏太低---太高(TLTH) 游戏规则: 计算机将选择一个超出整数范围(-32768..32767)的随机数。 现在,您将想到一个数字并将其输入。 电脑会告诉您您的电话号码是低于(TOO LOW)还是高于(TOO HIGH)所选号码。 当您猜到数字时,计算机应显示Congrats! You found the number!。 代码规则: 不要使用字符T,O,L,W,H,I和G在字符串或字符文字(既不小写也不是大写)。 例如: tolower(T); // Acceptable cout<<"T"; // Unacceptable char ch='T'; // Unacceptable 如果您的代码可以在开始游戏之前显示游戏规则,则删除300个字节。 如果您的代码可以计算转数并显示游戏结束时的转数,则删除50个字节,如下所示: "Congrats! You found the number in n turns!" 其中n是转弯次数,而不是 "Congrats! You found the number!" 如果您的代码可以告诉用户输入的数字超出整数范围,请从分数中删除25个字节。 例如: Enter the number: 40000 Sorry! This number …
20 code-golf 

30
游程长度解码
用您选择的语言编写最短的代码,以执行给定字符串的游程长度解码。 该字符串将以以下形式作为标准输入提供: CNCNCNCNCNCNCNCN 其中每个C可以是任何可打印的ASCII字符和每N一个数字1来9(含)。 输入样例: :144,1'1 对应的输出: :4444,'
20 code-golf  string 

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.