Questions tagged «code-golf»

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

5
蒙德里安绘画描述语言
挑战在于为Mondrian绘画描述语言(MPDL)编写解释器。 语言定义 该语言在矩形堆栈上运行。矩形由其左上坐标和右下坐标定义。坐标必须是整数。使用具有属性的单个矩形初始化堆栈(1,1,254,254) 每个命令具有以下格式: <character><integer> 有以下三个命令: v<integer>:在参数中指示的位置(以百分比表示)上对堆栈中的最新矩形执行垂直分割。将源矩形从堆栈中删除,并替换为拆分产生的两个新矩形。左边的矩形被压入堆栈,然后是右边的矩形。由于矩形坐标是整数,因此分数应四舍五入为最大的较小整数。 h<integer>:水平分割。顶部矩形被压入堆栈,然后底部矩形被压入堆栈。 c<integer>:从堆栈中删除最新的矩形,并将其绘制为参数指定的颜色。1 =白色,2 =红色,3 =蓝色,4 =黄色 挑战 编写一个程序,将绘制说明作为参数,并创建绘制矩形的256x256位图表示形式。矩形必须以3像素的黑线分隔。一个或两个像素矩形应使其非黑色像素被边框黑色像素隐藏。 输入可以作为参数或文件读取,由您决定。命令应以空格分隔。您可以假定输入文件的语法正确,并且没有尾部或前导空格,制表符等。输出可以直接显示在屏幕上,也可以保存到文件,由您自己决定。 最短的代码获胜。 测试 以下来源: v25 h71 v93 h50 c4 c1 c1 c2 h71 c3 h44 c1 c1 应产生红色,蓝色和黄色的成分II:


8
四面体表面积
挑战 这个挑战非常简单。给定四个3维点,计算它们形成的四面体的表面积。这是代码高尔夫球,因此最短的代码获胜。存在标准漏洞,并增加了规定,在给出四点的情况下,禁止执行此任务的任何内置功能。 您可以假设所有四个点都是不同的,并且将通过STDIN给出,每行1个点。每个点将由三个16位无符号整数组成。如果使每个点更简单,则可以修改每个点的确切格式,例如三个空格分隔的整数。但是,必须将每个点放在单独的线上。输出应通过STDOUT进行,至少要保留两位小数。 对于不知道的人,四面体是一个3维立体,由4个三角形的面组成。 例 # input (format is up to you, see clarification above) [23822, 47484, 57901] [3305, 23847, 42159] [19804, 11366, 14013] [52278, 28626, 52757] # output 2932496435.95 如果您发现我的数学错误,请留下笔记。
16 code-golf  math  3d 

9
生成霍夫施塔特的人形图序列
在Gödel,Escher,Bach中,Douglas Hofstadter引入了一个整数序列,该序列通常被称为数字图形序列: 2, 4, 5, 6, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, ... 作为挑战的一部分,您可能会喜欢自己确定序列的定义,但是,如果您不能或不想弄清楚它的定义,可以在OEIS上找到它作为序列A030124,在Wikipedia上找到一个稍微清晰的定义。 编写一个程序或函数,该程序或函数n通过STDIN,ARGV或函数参数给出,n以任何合理的列表格式将序列的第一个数字的列表打印到STDOUT。 这是代码高尔夫,最短的解决方案以字节为单位。

8
画出山脉
受斐波那契多米诺骨牌拼贴的启发,此问题与生成代表另一种著名组合序列的ASCII艺术有关。 阿正步骤山图是山脉的图,使用完全相同Ñ “/”和Ñ “\”字符,使得字符绘制一连续曲线,该曲线永不下降到低于其初始的“高度”。例如, /\/\ /\/ \ 和 /\ /\/ \/\ 都是四步山图,但是 /\ /\/\ \/ 不是。 输入值 程序应从stdin 接受整数n或作为函数的参数。 输出量 将所有n步山图打印到stdout。图可以以任何顺序排列,但应以某种空白分隔。您可以决定是否将水平,垂直等输出不同的图。 就像在多米诺砖化问题中一样,您可以使用所需的任何空白。这包括在打印输出之前或之后的多余换行符。 例 对于n = 3的一些示例有效输出: 有效输出A: /\ /\ /\ / \ /\/\ /\/\/\ / \/\ /\/ \ / \ / \ 有效输出B: /\ /\/ \ /\/\ / \ /\/\/\ …

1
StackExchange Mustafa无法忍受被问到相同问题三遍
奥斯丁: “谁送给你的?” 穆斯塔法: “你必须杀了我!” 奥斯丁: “谁送给你的?” 穆斯塔法: “亲吻我的屁股,力量!” 奥斯丁: “谁送给你的?” 穆斯塔法: “邪恶博士。” (...) 穆斯塔法: “我不能忍受三遍被问到同样的问题。这只会激怒我。” 您将本着Austin Powers和Mustafa的精神模拟一场简短的对话。但是整个对话的数据源将是一个StackOverflow问题(作为URL输入提供)。 规则 问题提问者的用户名将代替“奥斯丁”。他们将要问的问题三遍来自问题标题的最后一句(如果还没有,则被强制以问号结尾)。 StackExchange将扮演“ Mustafa”的角色。最终给出的答案来自答案中的第一句话,该句子不以问号结尾,并且将归因于回答用户的姓名。 要使一个问题符合游戏资格,它必须(a)给出答案,并且(b)必须对原始问题进行一系列评论: 来自提问者以外的其他人的评论 (任何数量的跳过的评论) 发问者的评论 来自提问者以外的其他人的评论 (任意数量的可跳过评论) 发问者的评论 如果在排名靠前的答案的日期之前不满足此顺序,则程序应简单地输出"Oh, behave!" StackExchange Mustafa的愤怒反驳来自发问者以外的其他人的第一句话,即不以问号结尾的并确保其以感叹号结尾。如果注释中没有以问号结尾的句子,则跳过该句子作为反驳的候选对象。评论反驳归因于作者的用户名。 澄清说明 从注释中删除所有开头的“ @XXX”响应数据。 因为如果有很多注释,则StackOverflow会汇总注释,因此您可能必须使用第二个请求来获取完整列表。该请求的形式/programming//posts/NNN/comments?_=MMM为帖子ID在N中,问题ID在M中。例如,请参见:https://stackoverflow.com/posts/11227809/comments? _ = 211160 网址应去除以仅锚文本。 我们将“句子”定义为以句点,问号或感叹号结尾的代码块之外的任何内容。如果一段文本没有这种形式的结尾标点符号,那么文本结尾就是句子的结尾;好像是用句点写的。 如果您正在寻找可能符合条件的有趣测试用例,则可以尝试使用StackExchange Data Explorer,例如带有“最多评论”的帖子。 ...更多来,我下注... 样品 样品一 输入: /programming/2283937/how-should-i-ethically-approach-user-password-storage-for-later-plaintext-retrie/ 输出: …


1
建立一个MU解谜器
该MU的难题是,你看看你是否可以打开一个难题MI成MU给出以下操作: 如果您的字符串以结尾I,您可以U在末尾添加a 。(例如MI -> MIU) 如果您的字符串以开头M,则可以在M该字符串之后追加零件的副本。 (例如MII -> MIIII) 如果您的字符串包含三个连续I的,则可以将它们更改为U。 (例如MIII -> MU) 如果您的字符串包含两个连续U的,则可以将其删除。(例如MUUU -> MU)。 您的任务是构建一个程序,该程序确定此命令是否适用于任何开始和结束字符串。 您的程序将使用两个字符串作为输入。每个字符串将包含以下内容: 一M。 了一个字符串29 I年代和U的。 true如果第二个字符串可从第一个字符串到达​​,则您的程序将返回(或您的编程语言的表示形式/ YPLRT),false否则返回(或YPLRT)。 输入和输出示例: MI MII true MI MU false MIIIIU MI true 任何语言中最短的代码均可胜出。

13
显示一个提示(以不同为基准)
Tallying是一个简单的计数系统,可在基础5中使用。全世界使用了各种不同的计数系统,但是在大多数英语国家中使用的计数系统可能是最简单的-通过标记垂直线来计数单位,然后每个第5个标记在前面的四个集合中放置一条水平线。这会将计数标记分为5组(并使它们更容易快速计数)。 您将要编写一个程序,该程序显示到一个给定值的计数标记。但是,仅以5为基数就很无聊!因此,您的程序还应该能够显示不同基准的计数。 输入值 输入将是一个或两个用逗号分隔的非负整数值(例如9或8,4)。第一个数字是理货应显示的值。第二个值是计数的基础。如果未提供第二个值,请使用5为底。 输出量 输出将是输入的值,表示为ASCII艺术标记。这是一些示例,您可以根据这些示例测试程序-输出应与它们完全匹配! 输入:12或12,5 | | | | | | | | | | -+-+-+-+- -+-+-+-+- | | | | | | | | | | | | 输入: 7,3 | | | | | -+-+- -+-+- | | | | | | 输入: 4,2 | | …

16
在T-SQL中打高尔夫球的技巧
您在T-SQL中打高尔夫球有哪些一般技巧?我正在寻找可以应用于编码高尔夫问题的想法,这些想法至少在某种程度上特定于T-SQL。请为每个答案发布一个提示。 感谢Marcog的初衷。:)
16 code-golf  tips  sql 

18
最低基回文
给定一个数字n,写一个函数找出最小的碱基,b ≥ 2例如n碱基回文b。例如,输入的28应该返回基数,3因为28的三进制表示为1001。尽管93在基数2和基数5中都是回文,但输出应该是22 <5。 输入值 一个正整数n < 2^31。 输出量 返回最小的碱基b ≥ 2,使得的碱基b表示n是回文。不要假设任何前导零。 样本(输入=>输出): 11 => 10 32 => 7 59 => 4 111 => 6 规则 最短的代码获胜。

2
自行排列以编码字符串的程序(五变量)
编写一个打印以下80个字符的行的程序: 来自codegolf.stackexchange.com的该程序本身可以对字符串进行编码。 然后接受一行输入,然后打印其源代码以及可能重新排序的代码点(未添加,也未删除)。执行该代码时,除了打印的行将是最新的输入行之外,其他操作也必须发生。 Perl样式的正则表达式^[A-Za-z0-9. ]{80}$将匹配任何输入行。您不能做任何其他假设。 提交的分数是其源代码中的代码点数减去94。越低越好。 该代码不得执行任何无法接受的操作(例如,读取文件)。特别是,任何分数为负的提交都必须以某种方式作弊,例如93!小于64 80。 2014年4月21日添加:程序的整个源代码必须采用计数点数的字符编码格式。例如,不能在UTF-8尾随字节范围(80..BF)中使用80个连续字节,并且不能将每个字节计为一个U + FFFD REPLACEMENT CHARACTER(或更糟糕的是,根本不是一个代码点)。 此外,如果编码允许以多种方式对代码点(例如 SCSU)进行编码,则您的程序以及直接或间接生成的所有程序都必须仅使用其中一种(或者至少在整个代码中必须等同地对待所有程序) )。
16 code-golf  quine 

2
正则表达式反向-分解正则表达式
问题 我有一堆需要在某些代码中使用的正则表达式,但是我使用的是不支持正则表达式的编程语言!幸运的是,我知道测试字符串将具有最大长度,并且仅由可打印的ASCII组成。 挑战 你必须输入一个正则表达式和一个号码n,并输出每一个可打印的ASCII(ASCII码32至126以下,组成的字符串到~长的,没有突出部或换行符)小于或等于n相匹配的正则表达式。您可能根本不会在代码中使用内置的正则表达式或正则表达式匹配函数。正则表达式将限于以下内容: 文字字符(和转义字符,使字符成为文字,因此\.是一个文字.,\n是一个文字n(等效于just n),并且\w等价于w。您不需要支持转义序列。) . -通配符(任何字符) 字符类,[abc]表示“ a或b或c”,[d-f]表示从d到f的任何值(所以d或e或f)。在字符类中唯一具有特殊含义的字符是[和](总是会被转义,所以不必担心),\(当然是转义符),^是在字符类的开头(这是一个否定) )和-(这是一个范围)。 |-OR运算符,交替。foo|bar表示foo或bar,并且(ab|cd)e匹配abe或cde。 * -匹配先前的令牌重复零次或多次,贪婪(它尝试重复尽可能多的次数) + -重复一次或多次,贪婪 ? -零或一遍 带括号的分组,为组令牌|,*。+, 要么? 输入正则表达式将永远是有效的(也就是说,你不必处理像输入?abc或(foo或任何无效的输入)。您可以按任意顺序输出字符串,但是每个字符串只能出现一次(不输出任何重复项)。 测试用例 输入:.*,1 输出:(空字符串), ,, ,... ,!"}~ 输入:w\w+,3 输出:ww,www 输入:[abx-z][^ -}][\\],3 输出:a~\,b~\,x~\,y~\,z~\ 输入:ab*a|c[de]*,3 输出:c,cd,ce,aa,cde,ced,cdd,cee,aba 输入:(foo)+(bar)?!?,6 输出:foo,foo!,foofoo,foobar 输入:(a+|b*c)d,4 输出:ad,cd,aad,bcd,aaad,bbcd 输入:p+cg,4 输出:pcg,ppcg 输入:a{3},4 输出:a{3} 获胜者,冠军 这是代码高尔夫球,所以最短的代码(以字节为单位)将获胜!

24
老麦克唐纳函数
用您选择的语言创建一个函数,该函数将输出以下内容: Old MacDonald had a farm, E-I-E-I-O, And on that farm he had a cow, E-I-E-I-O, With a moo moo here and a moo moo there, Here a moo, there a moo, everywhere a moo moo, Old MacDonald had a farm, E-I-E-I-O! 例如,其中cow和moo是函数参数中的字符串,可以更改为pig和oink或sheep和baa。 它应考虑大写字母,连字符,标点符号,空格和换行符。 旨在在代码中键入最少的Unicode字符。

24
附加号码游戏
附加号码游戏 编写一个函数/程序,该函数/程序接受2个整数参数, 整数参数或整数变量,起始编号和最大迭代次数。该代码应执行以下游戏示例以构造一个新数字,并重复直到该数字剩下一位数字为止。例如。 3 7 2 = (3 + 7) & (7 + 2) = 10 9 1 0 9 = (1 + 0) & (0 + 9) = 1 9 1 9 = (1 + 9) = 10 1 0 = (1 + 0) = 1 基本上,取每个数字并将其添加到其邻居中,然后再添加下一个相加的结果。 最大迭代次数是为了保护无限循环,当达到最大循环次数时,代码应转储最后5个数字步。通过达到一位数字结束时,应该发生相同的输出。如果少于5个步骤,则仅输出有效数字。 输出应显示为(Step: …
16 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.