编程拼图和代码高尔夫

编程益智爱好者和代码高尔夫球手的问答

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 | | …

3
点和盒最快的播放器
面临的挑战是为经典的纸笔游戏“ 点和盒”编写求解器。您的代码应使用两个整数,m并将其n作为输入,指定板的大小。 从一个空的点网格开始,玩家轮流在两个未连接的相邻点之间添加一条水平或垂直线。一位完成1×1框第四边的玩家将获得一个积分,并转一圈。(通常通过将玩家的识别标记(例如首字母)放在框中来记录积分)。当无法放置更多行时,游戏结束。游戏的赢家是得分最高的玩家。 您可以假设n = mor n = m - 1和m至少为2。 挑战在于solve在一分钟内实现最大的点和盒游戏。一个游戏的规模很简单n*m。您的代码输出应为win,draw或者lose应该是假设两个玩家都发挥最佳状态的第一个玩家的结果。 您的代码必须可以使用易于安装和免费的工具在ubuntu上进行编译/运行。请报告您的分数,以及您在1分钟内可以在计算机上解决的最大问题。然后,我将在计算机上测试代码,并按顺序排列条目表。 在抢七的情况下,获胜者将是在一分钟内可以解决的最大尺寸板上最快的代码。 如果输出的代码不仅输赢,而且输出实际分数,那会更好。这样可以进行正确性检查。

5
快速触发计算
快速三角计算 您的任务是创建一个程序,该程序可以以度为单位计算角度的正弦,余弦和正切。 规则 没有内置的三角函数(如果您的语言有,则甚至不包括割线,割线和切线)。 您可以使用查找表,但它们的总大小不能超过3000个成员(对于所有三个操作的总和)。请使其从文件(例如trig.lookup)中读取表,以免它们混淆代码。 没有网络访问。 您必须按照以下说明正确舍入输出。不要使用地板或天花板。 您可以使用任何方法来计算值,例如连续分数,只要它对7个有效数字是正确的即可。 您的代码必须能够自行计时。从您的时间中排除文件I / O操作-因此只需对执行触发和任何舍入的函数计时。 我必须能够运行您的代码。请发布指向免费提供的编译器/解释器的链接,并提供编译/运行代码所需的说明(例如,传递给GCC的选项)。 有标准漏洞。 输入格式 从名为的文件中读取,trig.in除非您的语言不支持文件I / O。 角度在0到360之间(包括0和360)。 输入将包括与十位有效数字的角度(十进制数字),并用新行分隔。例如: 90.00000000 74.54390000 175.5000000 输出格式 对于提供的每个角度,必须在一行上将其正弦,余弦和切线输出为7个有效数字,并用空格隔开。使用“科学符号”,例如1.745329E-5用于tan 0.001或1.000000E+0用于sin 90。 用表示无穷或NaN n,例如的输出90.00000000应为1.000000 0.000000 n。 如果输入是由换行符分隔的三个角度,则您的输出应包括三条线,每条线包含正弦,余弦和切线。 您可能不会输出其他任何内容。 trig.out除非您的语言不支持文件I / O,否则输出到名为的文件。 计分 最快的代码。面临的挑战是编写一个程序,以尽快计算这三个值。最快的时间获胜。 每个人都会收到许多角度的相同测试输入。 时间将记录在我的机器上。 您的得分是在同一输入上进行三轮测试的平均值(您显然无法在两次测试之间保存任何内容)。 不包括编译时间。这个挑战更多地是关于所使用的方法,而不是语言。(如果有人能指出我如何排除诸如Java之类的语言的编译时间,我将不胜感激) 我的机器是Ubuntu 14.04安装。处理器的统计信息位于Pastebin上(通过运行获取cat /proc/cpuinfo)。 测试完毕后,我会在您的答案中编辑您的时间。

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 

14
自包含日志
问题” 定义一个函数log(或其他3个字母的名称),该函数在调用时将记录/打印/写入(所讨论语言的默认值),指令(作为源代码)和第一个参数。换一种说法: i=777 j=333 log(i) //outputs: "log(i) 777" log(i+j+1) //outputs: "log(i+j+1) 1111" 出于所有实际目的,输出i: 777就足够了,但是在某些语言中,有非常特定的反射库可以解决这个问题,因此应该输出整个指令。 灵感 这样做的灵感来自于我和另一个程序员,讨论的是它经常令人讨厌(使用不良的调试器),您编写诸如之类的东西console.log("i:", i),接下来我们制作了一个(非常疯狂的)javascript(仅节点)解决方案(它输出i: 777而不是整个代码行)源代码)的长度令人惊讶,它使我想起了代码高尔夫,让我想知道其他语言(尤其是代码高尔夫)的性能要好得多。 奖金 -10%:无文件读取(超出编译器) PS。这是我的第一个“问题”,请随时指出我犯的任何错误。
16 code-golf 

2
Ascii艺术饼图
您的目标是输出ASCII艺术饼图。这是代码高尔夫,所以最短的程序(计算源代码的字节,而不是字符)获胜。 不允许使用任何外部软件或API。仅每种语言的母语。 圆的起始角度和方向(顺时针/逆时针)并不重要。输出可能看起来是椭圆形的,因为字符的高度始终大于其宽度。 “背景”(饼图的左侧或右侧的字符)必须为空格。 作为输入,您有三个变量(请发布代码以对其进行初始化。这些变量的初始化不计入分数): k:字符数组。每个字符都是饼图上必须使用的字符 v:浮点数数组。这是每个字符的百分比。的长度v等于的长度k。它的元素总和始终为1.0 r :整数&gt; 1.这是饼图的半径。 奖励:如果您可以输出不完整的饼(如果),则减去分数的20%。(∑| v |我= 1v一世)&lt; 1(∑一世=1个|v|v一世)&lt;1个(\sum_{i=1}^{|v|} v_i)<1

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.