Questions tagged «code-golf»

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

14
Spintax {任务|问题|问题}
带有Spintax的文章旋转 文章旋转是一种搜索引擎优化技术,通过该技术搜索引擎优化器可以在文章目录,Web 2.0网站或其他反向链接源上发布相关内容的唯一版本。 网站作者偶尔会在自己的网站上使用它,但通常会避免使用,因为旋转内容的质量将低于手写内容。旋转通过重写现有文章或文章的某些部分,并用任意数量的替代版本替换特定的单词,短语,句子甚至整个段落来进行,从而为每次旋转提供稍有不同的变化。 此过程可以完全自动化或手动重写。今天的工作是创建一个程序或函数,该程序或函数解释一个包含Spintax的字符串,该语法将使程序读取可用的不同选项。以下是使用Spintax的示例字符串: {Hello|Hi there|Bonjour}, user! {What's up?|How are you?|Feeling alright?|I caught a fish!} 如您所见,字符串中要“旋转”的部分用花括号括起来,其中各个选项按|字符分开。这是一些可能产生的例句。 Hi there, user! What's up? Hello, user! How are you? Bonjour, user! Feeling alright? Hello, user! What's up? Hi there, user! I caught a fish! 你的工作 您的任务(如果您选择接受)是创建一个程序或函数,该程序或函数采用可能包含或可能不包含Spintax的输入字符串,然后打印该字符串的5个版本,并从每个选项块中随机选择一个选项。您可以做一些假设: 您将不需要处理嵌套的Spintax({This|is {an|one}|example})。 的|,{并且}字符不会超过Spintax块内的其他地方的其他进行。 只要代码使用您语言的随机数功能选择选项,就无需检查5个输出语句是否不同。 您可以假设输入以换行符结尾。 规则 …
19 code-golf 

14
回文逆转加法
回文逆转加法 反向加法的过程是向其反向添加数字,直到创建的数字是回文。例如,如果我们从68开始,则过程将是: 68 + 86 => 154 + 451 => 605 + 506 => 1111 如您所见,这花了3次加法才得到回文数。如果从开始89,我们将需要24个步骤(您可以在此处查看细分)。 达到回文记录之前所采取的大多数步骤的世界纪录是261,该数字最高发生1186060307891929990,产生的数字大于10 118。但是,有很多数字我们还无法得到回文。这些称为Lychrel数。 由于我们的工作基础是10,因此我们只能称他们为候选人,因为没有证据表明这些数字永远不会达到回文率。例如,最小的以10为底的Lychrel候选对象是196,并且已经经历了十亿多次迭代。如果回文确实存在,则比10 10 8.77大得多。作为比较,如果原子上刻有多个1 ,则假设存在,我们将需要2.26772×10 588843575个宇宙原子来写出。 你的任务 创建一个程序或函数,该程序或函数接受整数输入并返回或打印到达回文所需的步骤数。您无需与Lychrel候选者打交道(即,当您的程序被赋予Lychrel候选者时,将允许其抛出错误或永久运行)。 测试用例: f(0) => 0 f(11) => 0 f(89) => 24 f(286) => 23 f(196196871) => 45 f(1005499526) => 109 f(1186060307891929990) => 261 规则 没有标准漏洞。 奖金 …

10
尽管梭罗掷得透彻,但巨魔却投出了艰难的低谷
为这9个令人困惑的相似单词中的每一个,以您喜欢的任何方式分配数字1-9: though through thorough Thoreau throw threw trough tough troll 编写一个包含字符串的程序。如果输入是这9个单词之一,则输出分配给它的数字。如果输入不是以上单词之一,则程序可能会执行任何操作(包括错误或永久循环)。 单词区分大小写,例如Thoreau,应产生一个1到9的数字,但thoreau不一定会一样。 例 假设您分配数字如下: though 9 through 2 thorough 7 Thoreau 6 throw 3 threw 5 trough 4 tough 1 troll 8 然后在tough输入时,1应输出。 当through输入时,2应当输出。 当throw输入时,3应当输出。 。。。 当though输入时,9应当输出。 所有其他输入都可以做任何事情。 细节 通过stdin或命令行获取输入字符串,然后输出到stdout。 输出可能包含单个尾随换行符。 您可以编写一个可以接受字符串并正常打印结果或返回结果的函数,而不是程序。 以字节为单位的最短提交胜出。

9
给定输入,将其沿键盘移动N个字符
挑战: 给定可以在键盘上键入的任何输入,将文本移动N个字符。 这是要使用的QWERTY键盘。您可以忽略修饰键(Shift,Caps,Enter,Delete和Tab)。一旦到达一侧(例如|),则将其循环回去,|然后转到Qif N = 1。 不必移动空格(当您跳过修饰符时,它们会返回到空格处)。如果转变是用来输入的字符(如!和@)改变的字符也应该利用移键入(即!变为@不2若N = 1)。 英国键盘与此有所不同,但是请使用此键盘以便我们进行比较。 输入: 可以在上述键盘上键入的任何句子,后跟一个正整数。此整数的大小没有最大值。 输出: 同一句话,向左移动N。 例子: My name is Tim 3 ?o .f/y [g I[/ Hello World 7 Spgge Oe[g; I Wi5h I h4d b3773r C@d3ing ski{{s 3 { T[8l { l7h ,6006u N%h6[.k g'[QQg 这是代码高尔夫,所以最短的代码获胜。

9
谁赢得黑桃把戏
编写代码以确定谁在黑桃游戏中赢得四张牌。最少的字节数获胜。 输入是一个字符串,其中列出了依次播放的四张牌,例如TH QC JH 2H(红心十张,俱乐部皇后,红心杰克,两张红心)。卡片由两个字符组成:的西装CDHS和的值23456789TJQKA。您可以确保输入有效,并且卡片是不同的。 您应该为该技巧的赢家输出1、2、3或4。在此示例中TH QC JH 2H,红心大佬将赢得胜利,因此您应输出3。 您的输入和输出必须完全与描述的相同,除了结尾的换行符是可选的。 这是黑桃赢得比赛的规则。获奖卡片是四张卡片中最高的一张,但有一些警告。黑桃是王牌,因此任何黑桃都比任何非黑桃都重要。第一张打出的牌是主打牌,只有该套牌或黑桃的牌才有资格赢球。比较相同花色的卡的值,并按升序给出23456789TJQKA。 测试用例: TH QC JH 2H 3 KC 5S QS 9C 3 QD 2D TD 5D 1 9S 5D AD QS 4 3D 4C 3H JH 1 9S 4S TS JS 4 5H 9H 2C AD 2 5S 4C 3H …

2
在给定点列表的情况下确定正方形的旋转
在这项挑战中,您将获得要点列表。 这些点位于假想正方形的周长上。您的目标是: 如果可能,请打印出正方形的旋转度,该旋转度将是[0,90)中的值,其中0表示垂直和水平线的正方形。旋转应以逆时针计数。 如果正方形的旋转模棱两可(例如仅获得2分),则打印出“未知” 如果无法根据给定的点创建正方形,请打印“不可能” 您所获得的分数将保证是唯一的,并且没有特定的顺序。您可以使用任何希望输入列表的格式,但是对于我的示例,我的观点将采用格式x,y,并以空格分隔。这些数字是浮点数字,您可以假定它们在您的语言可以处理的范围内。您的输出应至少精确到小数点后三位,并假定您的语言以完美的精度处理浮点数。 这是一些测试用例(为了方便查看,我使用了大多数数字,但是您的程序应该处理浮点数): 未知: 0,0 0,0 1,0 0,0 1,0 0,1 0,0 1,0 0,1 1,1 0,1 0,2 1,0 1,3 2,0 2,3 3,1 3,2 不可能: 0,0 1,0 2,0 3,1 4,2 0,0 1,0 2,0 1,1 0,1 0,2 1,0 1,3 2,0 2,3 3,1 3,2 2,2 2,0 0,1 2,2 0,3 0,0 …

3
有没有一种较短的方法来分配Python中的两个变量之一?
这是在python中打高尔夫球的提示问题。 在用Python完成的多次高尔夫球比赛中,将固定值分配给布尔值选择的两个变量之一。所选变量被给定值覆盖,另一个不变。 17个字符: if b:y=z else:x=z 分配条件值很容易,但是分配给条件变量似乎很麻烦。我想知道是否缺少更短的方法。 如果x,y是列表L,这将很容易,但是假设上下文需要引用足够多的变量以致于编写L[0]且L[1]过于禁止。转换时间太长: 20个字符: L=[x,y];L[b]=z;x,y=L 我知道最快的方法是使用Python 2 exec,这很奇怪: 16个字符,Python 2: exec"xy"[b]+"=z" 元组选择似乎更长: 18、19、18、18个字符: x,y=b*(x,z)or(z,y) x,y=[z,x,y,z][b::2] y,x=[y,z,x][b:b+2] y,x,*_=[y,z,x][b:] # Python 3 是否有一些较短的方法或节省字符的优化?您可以假设bis 0或1,不仅是Falsey或Truthy,还可以对数据类型和值进行假设(如果有帮助的话)。
19 code-golf  tips  python 

16
sed高尔夫技巧
您在sed中打高尔夫球有哪些一般提示?我正在寻找可以应用于代码高尔夫球问题并且至少在某种程度上特定于sed的想法(例如,“删除注释”不是答案)。 请为每个答案发布一个提示。
19 code-golf  tips  sed 

8
从字符串中删除单行和多行注释
目标 使用您选择的编程语言,编写最短的程序以消除代表C程序的字符串中的注释。 输入项 字符串可以视为任何形式的输入,但也可以视为变量。 使用说明 两种不同的注释将被删除: 多行注释,以开头/*和结尾*/ 单行注释,//以Linux样式的换行符(LF,\n)开始和结束 字符串中的注释不可删除。出于此挑战的目的,您只需要考虑- "分隔的字符串。特别是,您可以忽略使用- '分隔字符文字的可能性。您也可以忽略三边形和连字号(/\<LF>*...)。 例子 输入: #include <stdio.h> int main(int argc, char** argv) { // this comment will be removed if (argc > 1) { printf("Too many arguments.\n"); // this too will be removed return 1; } printf("Please vist http://this.will.not.be.removed.com\n"); printf("/* This will …

15
每日随机高尔夫#4:贝特朗悖论
关于系列 首先,您可以像对待其他任何代码高尔夫挑战赛一样对待它,并回答它而不必担心系列赛。但是,在所有挑战中都有排行榜。您可以在第一篇文章中找到排行榜以及有关该系列的更多信息。 尽管我在本系列中有很多想法,但未来的挑战还没有定下来。如果您有任何建议,请在相关的沙箱帖子上让我知道。 第4洞:贝特朗悖论 该贝特朗悖论是一个有趣的问题,它显示了在一个圆圈采摘随机和弦可以产生和弦,它们的中点和它们的长度的不同分布如何不同的方法。 在这一挑战中,您应该使用“右”方法生成单位圆的随机和弦,即产生在分布和平移下不变的和弦分布的方法。在链接的Wikipedia文章中,“方法2”就是这样的方法。 确切的规则如下: 您应该使用一个正整数N,该整数指定应返回多少个和弦。输出应该是一个N和弦列表,每个和弦都指定为单位圆上的两个点,以其弧度的极角表示。 您的代码应该能够为两个角度中的每个角度至少返回2 20个不同的值。如果可用的RNG范围较小,则必须首先在内置的RNG之上构建具有足够大范围的RNG,或者必须实现自己合适的RNG。此页面可能对此有所帮助。 和弦的分布必须与链接的Wikipedia文章中“方法2”产生的和弦没有区别。如果您采用其他算法来选择和弦,请提供正确性证明。无论您选择实施哪种算法,从理论上讲,它都必须能够在单位圆中生成任何有效的和弦(不包括基础PRNG或有限精度数据类型的限制)。 您的实现应使用并返回浮点数(至少32位宽)或定点数(至少24位宽),并且所有算术运算都应在16 ulp以内准确。 您可以编写完整的程序或函数,并通过STDIN(或最接近的替代方案),命令行自变量或函数自变量接受输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数产生输出。 输出可以采用任何方便的列表或字符串格式,只要可以清楚地区分各个数字并且它们的总数始终为偶数即可。 这是代码高尔夫球,因此最短的提交(以字节为单位)获胜。当然,每位用户最短的提交时间也将进入该系列的整体排行榜。 可视化 您可以使用以下代码段渲染生成的线并检查其分布。只需将成对的角度列表粘贴到文本区域即可。该代码段应该能够处理几乎所有列表格式,只要这些数字是简单的十进制数字(无科学计数法)即可。我建议您至少使用1000行来了解分布情况。我还提供了以下文章中介绍的不同方法的一些示例数据。 显示代码段 function draw() { document.getElementById("output").innerHTML = svg } function drawLines() { lines = document.getElementById("lines").value; var e = prefix; //e += '<circle cx="' + offset + '" + cy="' + offset + '" …

13
精致分区
考虑一个整数数组: [1, 0, 9, 1, 3, 8] 有很多方法可以将该列表划分为连续的子列表。这是三个: A: [[1, 0, 9], [1, 3, 8]] B: [[1], [0, 9], [1, 3], [8]] C: [[1, 0], [9, 1], [3, 8]] 我们将调用一个分区Ÿ另一个分区的和改进X,如果X可以从以下地址获得ÿ通过加入一些子列表的重新走到一起。 所以,B是的改进A:如果我们前两个和最后两个子列表加入到一起,我们得到A。但是,C是不是的改进A:我们不得不分手的9和1以恢复A从它。同样,任何分区本身都是琐碎的改进。 请注意,我们不允许在任何时候重新排列任何子列表或元素。 挑战 鉴于两个分区(整数列表的列表)X,并Y,确定是否Y是一个细化X。 您可以假设分区将仅包含从0到的整数9(含)。您不能假定X和Y是同一列表的分区(如果不是,则它们也不是彼此的优化)。X和/或Y可能为空,但永远不会包含空子列表。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行自变量或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 输入可以采用任何方便的字符串或列表格式。由于元素只能是一位整数,因此您可以选择在子列表中省略定界符,但请确保前导0s是可能的。您可以选择采取X和Y顺序相反。 输出应该是truthy如果Y是的细化X和falsy否则。 您的代码必须能够在一台合理的台式机上在一秒钟内解决以下每个测试用例。(这仅仅是为了避免简单的暴力解决方案而进行的健全性检查。) 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 测试用例 每个测试用例都单独显示,写成X Y。我正在使用GolfScript / CJam样式的数组表示法来节省一些水平空间: 真相: [] [] [[0]] [[0]] …

4
计算月亮的大小
月球之谜的大小 我相信您已经听说月亮改变了它的大小。当您恋爱了并且很幸运时,月亮的大小几乎是正常情况下的两倍。有人说,原因是大气充当了镜头。其他人则认为,这仅仅是与附近树木等其他物体进行比较的问题。无论您阅读了什么说明,都是相当主观的。 月球科学的大小 好吧,我们是程序员,不是吗?我们依靠事实,对吗?所以这是实验: 拿一个不错的相机,它支持手动设置时间和光圈。 将相机设置为最大变焦等级。 外出时,为月亮拍摄一些照片,以检测最佳设置,以使月亮清晰且光线充足。 记住设置 每当您认为月球大小时,都使用这些设置为月球拍照。 计算月亮的大小(以像素为单位) 相机不会说谎,是吗?通过计算明亮的像素,我们可以有效地测量月亮的大小-至少以像素为单位。 如果所有照片的大小都相同,那么这就是我们大脑中的错误。如果大小不同,那么就有炒作的空间 月亮真的长了(但是它吃什么?) 有大气的镜头效果 月亮呈椭圆形,有时更近,有时更远离地球 ... 但是我将保持打开状态,直到您的任务完成。当然,您想事先知道您的软件是否可以准确计算月球尺寸。 任务 给定一些优化的月球图片,请计算月球的大小。优化是:像素为黑色或白色。两者之间什么都没有。没有抗锯齿。这很容易,不是吗? 注意事项:月亮并不总是充满,您知道...它可能是镰刀!但是即使是镰刀形状,月亮的大小也会更大。因此,请计算出完整尺寸。 stdin如果您编写的是函数而不是程序,则程序将PNG作为输入,例如作为文件名命令行参数,通过管道传输到(或作为标准框架库的)Bitmap对象。 您的程序可以使用任何合理的输入位图大小,而不必是正方形。保证最小宽度和高度为150像素。 满月至少覆盖了图片的25%。 您的程序将以像素为单位输出计算出的月亮大小,就好像它是满月一样。 我们假设月亮是一个完美的球体。 确切的大小始终是整数,但是如果计算返回该数字,则可以输出一个十进制数。 精度应在98%到102%之间。(这只是一个猜测,而不是我可以保证可以实现的目标。如果您认为很难实现,请发表评论。) 更新: 月亮的中心不一定在图片的中间。 最小可见区域为月球的5%或像素总数的1.25%。 以使整个月亮适合图像的方式拍摄照片,即,像素总数是月亮大小的上限。 月亮不会被裁剪/修剪。 样品 如果愿意,您可以使用混合文件生成自己的样本。我为您制作了以下图片。您可以使用WhitePixelCounter.exe(需要.NET)对PNG文件中的像素进行计数,以检查图像是否仅包含黑白像素以及它们包含多少个。 以下256x256像素图像的白色像素数量有所不同,但所有这些图像的计算出的月亮大小应为16416像素。 这些177x177像素的图像应返回10241像素。图像基本相同,但是这次使用的是焦距不同的相机。 结果为9988的非正方形和非中心样本: 哦,我目前没有参考实现,我什至不知道我是否能够实现某些功能。但是在我的大脑中,有一个强烈的信念告诉我它必须在数学上可以解决。 规则 这是Code Golf。2015-03-30上最短的代码被接受。

6
记住23940的助记符
该系统主要是记忆用于转换数字成单词,这样他们可以更容易地存储设备。 它基于单词的语音发音方式,但是为了使问题简单易懂,我们只关心单词的拼写方式。这意味着会有一些不正确的转换,但是没关系。 使用简化的主系统将数字转换成单词: 0用s或替换每个z。(有些可能是s,有些可能是z。下同。) 1用t或d或替换它们th。 替换每个2有n。 替换每个3有m。 替换每个4有r。 替换每个5有l。 6用j或sh或替换它们ch。 替换每个7用k或c或g或q。 8用f或替换每个v。 9用p或替换每个b。 如有可能aehiouwxy,在任意位置添加字母以构成一个真实的英语单词。唯一的例外是,不得在或之后插入。 hsc 该数字实际上可以是数字0-9的任何字符串(无小数,逗号或符号)。 该单词只能包含小写字母az。 例子 该数字32必须转换为?m?n?,其中?代表由字母组成的任何有限字符串aehiouwxy(如果愿意,则是来自免费monoid的字符串)。有许多方法,这可能做成一个真正的英文单词:mane,moon,yeoman等。 该数字05可以转换为?s?l?或?z?l?。一些可能的是easily,hassle和hazel。这个词shawl是不允许的,因为h可能不能放在之后s; 它会被错误地读取为65。 挑战 编写一个程序或函数,该程序或函数使用数字0-9的字符串,并找到所有可以使用简化的主系统助记符将其转换成的单词。 您的程序可以访问单词列表文本文件,该文件定义了所有“真实”英语单词是什么。此文件的每一行上都有一个小写的az字,您可以选择假定它有一个尾随的换行符。这是可用于测试的真实单词列表。您可以假设这个单词列表文件被称为f(或更长的名称)并且位于任何方便的目录中。 对于35字节的罚款(将您的分数加35),您可以假设单词列表已作为字符串列表加载到变量中。这主要用于无法读取文件的语言,但是任何提交都可以利用它。 您的程序必须输出所有单词列表中可以转换输入数字的单词。应该将它们打印到stdout(或类似格式),每行打印一次(带有可选的尾随换行符),或者如果您选择编写函数,则可以将它们作为字符串列表返回。单词列表不一定按字母顺序排列,输出也不需要。 如果没有可能的单词,则输出(或列表)将为空。如果输入空字符串,则输出也为空。 通过标准输入,命令行或函数的字符串参数获取输入。单词列表或其文件名不应是输入的一部分,而应是数字字符串。 您只匹配单词列表中的单个单词,而不匹配单词序列。该单词noon可能是的结果之一22,但单词序列no one不是。 测试用例 假设这是单词列表: stnmrljkfp zthnmrlshqfb asatanamaralajakafapa aizxydwwwnhimouooraleshhhcavabe zdnmrlshcvb zdnmrlshchvb sthnmrlchgvb shthnmrlchgvb bob pop bop bopy boppy 输入0123456789应给出除zdnmrlshchvb和以外的所有长词shthnmrlchgvb: stnmrljkfp zthnmrlshqfb asatanamaralajakafapa aizxydwwwnhimouooraleshhhcavabe …
19 code-golf  string 

30
产生盒子!
您的任务是使用给定输入的任何一个ASCII字符生成框。 测试用例 1 1 --> ===== = = ===== 1 2 --> ========= = = = ========= 2 1 --> ===== = = ===== = = ===== 2 2 --> ========= = = = ========= = = = ========= 2 5 --> ===================== = = = = = = ===================== …

7
使用Hamming(7,4)纠正错误
Hamming(7,4)代码可以追溯到1950年。当时,Richard Hamming在贝尔实验室担任数学家。汉明每个星期五都设置计算机进行一系列计算,并在下周一收集结果。使用奇偶校验,这些机器能够在计算过程中检测到错误。沮丧,因为他经常收到错误消息,所以汉明决定改进错误检测并发现了著名的汉明代码。 海明力学(7,4) 汉明码的目的是创建一组重叠的奇偶校验位,以便可以检测和纠正数据位或奇偶校验位中的单个错误(翻转一位)。仅当发生多个错误时,汉明码才能恢复原始数据。它可能根本不会注意到错误,甚至可能会错误地纠正它。因此,在这一挑战中,我们将仅处理单位错误。 作为汉明代码的示例,我们将看一下汉明(7,4)代码。除4位数据外,d1, d2, d3, d4它还使用3个奇偶校验位p1, p2, p3,这些奇偶校验位使用以下公式计算: p1 = (d1 + d2 + d4) % 2 p2 = (d1 + d3 + d4) % 2 p3 = (d2 + d3 + d4) % 2 产生的代码字(数据+奇偶校验位)的格式为p1 p2 d1 p3 d2 d3 d4。 检测错误的方法如下。您重新计算奇偶校验位,并检查它们是否与接收的奇偶校验位匹配。在下表中,您可以看到,各种单一位错误都会产生奇偶校验位的不同匹配。因此,可以定位和纠正每个单位错误。 error in bit | p1 …

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.