Questions tagged «code-golf»

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

2
抽奖Sri Yantra
挑战: 抽奖Sri Yantra。 如何: 有不同的绘制方法。所有步骤都包括许多步骤。如果您认为可以在不遵循链接的步骤的情况下进行绘制,请滚动以下页面,以获取图形中必须包含的元素。 完整的步骤可以在这里找到: http://www.saralhindi.com/Shri_Yantra/makingsky14steps_eng.htm (我没有在这里复制它们,因为这将是一个很长的问题,这里是archieve.org镜像,以防第一个链接断开) 最终图片应如下图所示: 一定有: 基本上,只要您保留最重要的元素,任何选择的绘图方法都是有效的答案 三角形的数量应与上图中的数量相同(43个较小的三角形是由较大的9个三角形交织而成的) 该三重交点受到尊重: 向上三角形的尖端接触四个向下三角形的底部,而向下三角形的尖端应接触三个向上三角形的底部,如下图所示。 内圆(宾度)与外圆同心。 大三角形的尖端(顶点)应接触外圆: 最终图像应具有所有元素,并且通常应如下所示: 每个元素(包括花瓣)的颜色应与上面的图像大致相同。 花瓣的形状最好看起来像波纹管中的样子,但也可以只是半圆或简单的圆弧部分: 对圆圈或门的大小没有严格的比例限制,但是最外面的圆圈的直径应不小于外部正方形边的90%,其他元素将相对于此比例分别进行排列。 编程语言和结果 只要结果相对清晰和可辨别(至少800px X 800px),对编程语言和结果格式(可以是矢量图像,位图图像,画布等)都没有限制。 后期编辑: 没有完美的绘画方法,因为此博客对它们进行了很好的探索:http : //fotthewuk.livejournal.com/ 考虑到这些 错误,我们将容忍这些错误。 在这一点上,这是一个有趣的练习,它知道很可能没有完美的解决方案,就像对圆的平方进行处理一样。

12
Piem验证程序
编写一个程序,该程序定义一个函数,该函数可以检查名为“您想要或用户输入的任何内容”的字符串变量是否为piem。(piem =故事或诗歌,其中单词长度代表π的数字(来自Wikipedia)) 一些例子: myfunction("I am clearly wrong") # False myfunction("How I want a drink, alcoholic of course, after the heavy lectures involving quantum mechanics") #True (Taken from Wikipedia) myfunction("Law ' s fine") # True 在处理之前,您应该删除任何标点符号或换行符。纯粹的代码高尔夫,最短的胜利 结束日期:2014年1月10日晚上 各种答案 我们需要处理几位数?10以上 出于兴趣,如何解释PI中的0?跳过或10个字母的单词?作为10个字母的单词 “一个称为piem的变量” –因此参数名称必须为piem吗?不,还没有,问题文本已更正 一个有趣的红利可能是一个解决方案,它本身就是一项艰巨的任务。 为了争辩,_总是标点符号吗?您可以确定它是标点符号还是不是标点符号 目前尚不清楚“ 。'”?!;;()是什么意思。 那么应该算数字吗?法律的罚款是虚假的吗?数字应视为字母,Law的罚款= False;法律罚款=正确 评论 APL解决方案应以字节为单位 如果您的解决方案适用于pi的100位数以上,您将获得* …
11 code-golf  pi 

1
Golfscript对角阵列
Golfscript中是否可以将数组的所有对角线合并为一个数组? 例如,对于数组 [[1 2 3][4 5 6][7 8 9]] 返回 [[7][4 8][1 5 9][2 6][3]] (不一定按该顺序)和 ["ABCD""EFGH""IJKL"] 返回 ["I""EJ""AFK""BGL""CH""D"] (不一定按此顺序)。假设数组的长度相同。 我正在努力解决这个问题。我尝试对字符串=的(length+1)th个字符进行处理并对其进行迭代,但这没有用。有人能帮我吗? 如果可能的话,我想用最短的方法做到这一点。

5
切线多边形扩展
绘制如下所示的内容: 更精确地说,画一个半径为r的圆,其中n个长度为l的n个均匀间隔的切线。连接这些线的末端以形成一个新的n边正多边形。 规则 r =圆半径 n =切线的数量-必须围绕圆均匀间隔(n> = 3) l =切线的边长 创建一个接受参数{r,n,l}并绘制所需输出的程序。 单位以像素为单位。 只要可以看到所有图形,图形位置就没有限制。 图片很不言自明。 这是代码高尔夫球,因此以字节为单位的最短代码胜出!

1
用箭重组
可以说我在写东西,而我不小心把它写在错误的框中: +-------+--------+ | Verbs | Nouns | +-------+--------+ | Truck | | | eat | Banana | | | Car | +-------+--------+ 因此,我很懒惰,只画了一个箭头指向应该的空间: +-------+--------+ | Verbs | Nouns | +-------+--------+ |[Truck]---> | | eat | Banana | | | Car | +-------+--------+ 您的工作是使它看起来很漂亮-将其变为: +-------+--------+ | Verbs | Nouns | +-------+--------+ …
11 code-golf 

26
递增字符串中的每个数字
给定一个包含十进制数字的字符串: teststring134this 123test string54 100 将这个字符串中的每个数字加一以给出新的字符串 teststring135this 124test string55 101。 字符串可以提供为: 命令行参数 标准输入 硬编码的变量或函数参数 涵盖所有可能的职位: 作为单词的前缀;123test►124test 作为一个词的后缀;test123►test124 一句话 te123st►te124st 一个人test 123 test►test 124 test 这是Python中的非解决方案: NUMBERS = '0123456789' def increment(s): out = '' number = '' for c in s: if c in NUMBERS: number += c else: if number …
11 code-golf  string 

3
SPOF挂画
目的 我有一幅漂亮的照片想挂在墙上。而且我希望它以一种壮观的方式悬挂在那儿,所以我选择将它悬挂在任何正整数上的n钉子上n。 但是我也犹豫不决,因此,如果我改变主意,则不希望拍摄照片时遇到很多麻烦。因此,去除任何一个n指甲都会使图片掉落。我是否提到我的房子没有摩擦? 你能帮助我吗? 规则 您的程序必须n从stdin中读取数字并打印到stdout(或您的语言的等效语言)。 输出必须是根据输出规范的解决方案,没有任何其他结尾或前导字符。但是,尾随空格和/或换行符是可以接受的。 您必须使用完全相同 n的指甲。 假设世界无摩擦,您的解决方案必须满足以下条件: 按照解决方案的说明悬挂图片,图片不能掉落。 如果除去任何一个指甲,图片必须掉落。 有标准漏洞。特别是,您可能不会向例如验证程序提出强力解决方案的请求。 请注意,4.2已经暗示所有n钉子都必须包括在内。 输出规格 所有钉子从其位置开始,从左到右命名1。 有两种基本的方法可以将绳子缠绕在钉子上:顺时针和逆时针。我们用表示顺时针步进,用表示>逆时针步进<。 每次将绳子缠绕在钉子上时,它都会从钉子的顶部伸出,因此跳过钉子意味着绳子会穿过中间钉子的顶部。 每个解决方案都必须从钉子开始,到钉子1结束n。 输出必须包含一系列步骤,其中一个步骤是指指甲名称和将线围绕其缠绕的方向的组合。 示例输出 这是n=5and 的示例输出n=3: 1>4<3<2>4>5< # n=5, incorrect solution 1>2<1<2>3<2<1>2>1<3> # n=3, correct solution 这是n=5(awsumz gimp skillz)错误解决方案的直观表示 正确的解决方案n=1是简单1>或1<。对于多个钉子,可以有不同的解决方案。您只能输出一个,因为这是分数的一部分。 验证 您可以在此处验证解决方案是否正确:www.airblader.de/verify.php。 它使用GET请求,因此您可以根据需要直接调用它。例如,如果foo是每行包含一个解决方案的文件,则可以使用 cat foo | while read line; do echo `wget -qO- …
11 code-golf 

4
日益壮大的曼哈顿Ameobas
*** ameoba图****是一类树,其所有节点的值都从0到某个非负整数N,并且任何值x <N的特定节点都连接到x + 1 值x +的不同节点1。 N = 3的Ameoba图(表示为A 3) 请注意,不允许2共享3的任何一个。正好三个3必须分别属于“ 2”。 挑战 您的任务是通过贪婪地最小化节点之间的曼哈顿距离,在二维网格中归纳“增长”这些变形虫图: 基本情况:甲0仅仅是图形0。 感应步骤:甲N + 1是通过迭代地将新的N + 1级值的节点尽可能接近的N个值中的节点现有A产生Ñ结构。(由于最接近的位置可能已经被填充,因此只能尽可能地靠近。) 对于归纳步​​骤,必须遵循的一般步骤是: for each existing node P with value N: for each new N+1 valued node Q you need to connect to P: //this loops N+1 times find the set …

6
你能使我的终端少些无聊吗?
如今,终端是如此无聊。他们以前看起来像这样: 现在它们只是平淡无奇,黑白相间。我想让您编写一个程序,使我的终端再次丰富多彩! 描述 请看以下示例Ruby代码: 大多数Linux终端都支持这些转义序列(\e代表转义字符),而Windows可以通过ANSICON支持它们。这是可以更改字符串的文本或背景颜色的特定转义序列的语法: \e[{{COLOR}}m 其中\e代表转义字符(0x1B以ASCII表示),{{COLOR}}并由您要使用的颜色编号代替(稍后会有更多详细信息)。在此转义序列之后的文本将按照指示进行格式设置,值0将会重置所有格式。 您的挑战是采用一个字符串来指定一些可能包含颜色的文本,并输出彩色版本。 输入输出 普通文本的工作原理与普通文本相同,并且按字面意义打印。例如,输入waffles产生相同的输出,没有特殊的颜色。 指定颜色的语法类似于Wikipedia的语法。例如,要将句子中的“红色”这个词涂成红色This is the color red!,输入将是: This is {{red|the color red}}! 背景色也可以。如果要在白色背景上使用黑色字母,则可以使用以下命令: {{black|white|This text is black on white}} 要仅获得背景色,请忽略前景: {{|red|This text has a red background}} 规格 两个大括号始终指定color伪指令的开头。两个右花括号指定结尾。括号将始终匹配;永远不会有一个{{没有相应的}},和}}其相应的前永远不会到来{{。这些颜色指令不会嵌套,并且a {{永远不会出现在颜色指令内。 在color指令中,将始终有一个或两个|符号。如果有一个,则其前的文本是前景色,而后的文本是该颜色下显示的字符串。如果有两个,则第一个之前的文本是前景色,第一个之后但第二个之前的文本是背景色,第二个之后的文本是要显示的字符串。这些垂直条可能位于color指令之外,应按字面意义进行打印。 前景色或背景色(但不是全部)可能为空,在这种情况下,应将其保留为默认值。最后的字符串(要输出的字符串)永远不会为空。 以下是输出某种颜色的文本的说明: 甲颜色序列被“描述”一节中所定义。例如,颜色序列为42 "\e[42m"。 要设置颜色,请打印以下确定的数字的颜色顺序: Color name | Color sequence number (foreground …
11 code-golf 

10
斐波那契多米诺骨牌
有经典的组合的结果,一个办法瓦数2*n由带1*2多米诺骨牌是第n 个 Fibonacci数。您的目标是打印给定的所有拼贴n,并用虚线和垂直线绘制,例如以下8个拼贴n=5: |———— |———— ——|—— ——|—— |||—— |||—— ————| ————| ||——| ||——| |——|| |——|| ——||| ——||| ||||| ||||| 您将提供一个程序或命名函数n作为输入并打印所需的输出。最少的字节数获胜。 输入值 通过STDIN或功能输入n之间的数字1(10含)。 输出量 打印2*n水平绘制的每个可能的多米诺骨牌瓷砖。平铺可以以任何顺序进行,但每个平铺应恰好出现一次。它们必须用空白行分隔。 垂直多米诺骨牌由两个垂直条(|)组成,水平多米诺骨牌由两个破折号(—)组成。您可以使用连字符(-)代替破折号以保持ASCII。 只要打印输出看起来相同,您就可以对空格进行任何操作。

3
音节化英语单词-种
您的任务是编写一个程序,该程序通过用连字符将单词分隔成一串文字。那将是很多工作,所以您想跳过一些部分,主要是因为您不想拥有完美算法所需的发音表。您还希望使它尽可能短(因此难以理解和难以维护),以作为为此任务分配的报仇。 您有两种选择: 编写一个程序,该程序从STDIN中获取字符串并将结果输出到STDOUT。 编写一个将字符串作为单个参数并返回结果的函数。 规格 在这种情况下,字符串表示您选择的语言中的任何类似字符串的构造(字节数组,字符数组,字符串...)。 元音是 a, e, i, o, u 给定的字符串包含1 <= n <= 10单词,每个单词之间的长度都包括1 - 30字符在内。.您的输出应为带连字符的单词。 所有字母均为小写,单词始终用空格分隔。因此,输入由字符组成[a-z ] 按重要性顺序应用规则。 划分单词时,请从单词的右半部分重新开始。 音节化规则,按重要性排序 两个连续的相同元音算一个(即feet只有一个元音,但beat并finding有两个)。每个音节正好有一个元音,因此每个元音都有一个音节。 如果整个单词只有四个字母,请原样返回。(将其跳过其余的单词) 如果单词只有一个元音,请原样返回单词。 如果单词有两个连续的元音,则将它们分开(即 diaspora -> di-as-po-ra) 当两个或多个元音之间有两个或多个辅音(相同或不同)时,请在第一个辅音(即sis-ter)之后分割,除非辅音部分是ck,在这种情况下,请在其后分割单词。(即nickel -> nick-el) 当a y在两个元音之间时,将其后的单词除(例如paying -> pay-ing)。 当一个辅音介于两个元音(相同或不同)之间时,请在辅音之前分开(即 dra-gon) 如果无法进行除法,请返回原样。 我选择这些规则是因为它们可以递归地应用而不会出现问题,并且不需要发音表。因此,它们是不准确的,例如规则#5通常是不正确的。在一般情况下,是这样。 例 In: hello world Out: hel-lo world In: …
11 code-golf 

4
将html减少到n个字符,同时保持格式
几乎每种语言都有一个内置函数,可以在给定位置拆分字符串。但是,一旦字符串中包含html标记,内置函数将无法正常工作。 您的任务是编写一个程序或函数,该程序或函数在第n个字符处分割字符串,但不计算html标签的字符,并将输出有效的html。该程序必须保留格式。html标记之外的空格可以根据您的意愿进行计数或不计数,但必须保留。但是,您可以将多个连续的空间交换为一个空间。 输入: 字符串 分割位置(从0开始) 这些可以作为程序或函数参数,也可以从标准输入中读取。 输出:可以返回或写入标准输出的分割字符串。 输入将是有效的html,它将不包含任何实体(例如 )。在字符数限制之后打开的标签应从输出中省略(请参阅最后一个示例)。 例: 输入:<i>test</i>,3 输出:<i>tes</i> 输入:<strong><i>more</i> <span style="color: red">complicated</span></strong>,7 输出:<strong><i>more</i> <span style="color: red">co</span></strong> 输入:no html,2 输出:no 输入:<b>no</b> <i>html root</i>,5 输出:<b>no</b> <i>ht</i> 输入:<b>no img</b><img src="test.png" />more text,6 输出:<b>no img</b> 您可以使用任何语言以及给定语言的标准库。这是代码高尔夫,最短的程序获胜。玩得开心!

6
给定r和n,找到x的前n个数字,其中x的第一个数字移动到最后一个给出x / r = y
目的 给定输入r并n找到第一个n自然数,x这样,如果我们将第一个数字旋转到最后一位,就可以得到x/r。 您可以假设2 <= r <= 9和1 <= n <= 65535。 您可以编写一个程序,该程序从stdin或命令行参数获取输入。或者您可以编写一个以r和n作为参数的函数。但是,输出应为stdout。输出应为每个值的一行x,格式为x/r=y,按递增顺序x。 您的解决方案必须能够在一台合理的台式计算机上在一分钟内处理所有有效案件。 测试用例 输入:4 5 输出: 102564/4=25641 205128/4=51282 307692/4=76923 410256/4=102564 512820/4=128205 输入:5 1 输出:714285/5=142857 这是代码高尔夫球,因此最少字节获胜。从现在开始(2014-09-19)4周将接受获奖答案。 这个问题的功劳归我的同事,他允许我在这里发布这个问题:)

2
应用英语标点规则
您已被聘请为听写应用程序编写一些代码,该应用程序从语音来源获取语音输入,将其解析为单词,然后将其写在屏幕上。 管理层并不真正相信您在项目中拥有如此强大的力量-不幸的是,您整天坐在那里闲逛,打高尔夫球,而不是去做工作,因此-他们只是给您执行一个非常简单的任务:将句点插入到正确格式化的句子中的句子,其中“正确格式化”的定义如下。 句子是输入字符串。单词是一组连续的非空格字符。标点符号是第一个字符为的单词^。 如果单词的第一个字母不是小写字母(大写单词与regex匹配),则单词为大写/[^a-z].*/。 句子的第一个字必须大写。 A ^COMMA是逗号字符,,在其后但没有前有一个空格。aaa ^COMMA bbb成为aaa, bbb。 A ^COLON是看起来像的逗号:。 A ^SEMICOLON是看起来像的逗号;。 A ^PERIOD是看起来像的逗号.。后面的单词^PERIOD必须大写。 A ^BANG是一个看起来像的时期!。 A ^DASH是破折号字符-,前后都有一个空格。 A ^HYPHEN也是破折号,-但前后没有空格。 An ^EMDASH是拼写的连字符(而不是破折号!)--。 An ^OPENQUOTE是一个引号字符",在其前面但后面没有空格。后面的单词^OPENQUOTE必须大写。如果在^OPENQUOTE之前加上非标点^COMMA词,请在该词和之间添加一个^OPENQUOTE。如果在^OPENQUOTE的前面加上使下一个单词大写的标点符号,则会跳过^OPENQUOTE到下一个单词。 A ^CLOSEQUOTE是有向图,",其后跟但前无空格。如果^CLOSEQUOTE前面有一个^COMMA,^PERIOD或^BANG,即标点消失,^CLOSEQUOTE拼写,",."或者!"分别。如果消失的标点指定大写,则该大写仍必须出现在下一个可用单词上。 必须删除完整最终结果中的开头或结尾空格,并且一行中两个或多个空格的任何字符串都必须全部折叠成一个空格字符。 上面未涉及的任何情况(例如^COMMA ^COMMA或^SEMICOLON ^CLOSEQUOTE或^UNDEFINEDPUNCTUATION)都不会出现在格式正确的输入中,因此是不确定的行为。 开发团队会通知您以下内容: 该项目以[您在这里的语言]语言编写,并且应尽可能短,以便在它是Android / iPhone应用程序时占用尽可能少的空间。您尝试解释这不是应用程序开发的工作原理,但他们不听。但是,嘿,真是巧合!您是[[您这里的语言]的出色高尔夫球手! 该应用程序将没有任何Web访问权限,并且不会安装任何库来为您执行此格式设置。您可以说服团队领导允许您使用正则表达式库(如果您的语言存在),但是如果您认为需要的话。 计划在应用程序的更高版本中支持正确使用双引号/单引号的嵌套引号,但现在不支持您正在使用的版本,因此不必担心。 管理层是测试驱动开发的忠实拥护者,因此开发团队已经让一些不幸的键盘猴子为您的程序部分编写了一些测试:(添加了换行符以提高可读性,将它们视为空格) 输入: hello ^COMMA world ^BANG 输出: Hello, world! 输入: once upon …

16
最短最长递增子序列码
挑战是编写最短的实现以找到最长的递增子序列。 示例:令S为序列1 5 7 1 8 4 3 5 [S的长度= 8] 我们有1个长度为0的子序列[会认为它正在增加] 长度为1 {1,5,7,8,4,3}的6个子序列[它们都被认为正在增加] (7 * 8)/ 2个长度为2的子序列[但是我们将删除重复项],递增的子序列为深黑色。 { 15,17,11,18,14,13,57,51,58,54,53,55,71,78,74,73,75,84,83,85,43,45,35 } [请注意,我们只对严格增加子序列感兴趣] [您无法更改序列中元素的顺序,因此示例序列中没有子序列[37]] 我们有长度为4的递增子序列,即1578,但没有长度为5的子序列,因此我们考虑最长的递增子序列的长度= 4。 输入: a 1 a 2 ... a N (序列) 所有数字都是小于10的正整数3 N <= 1000 输出: 一个整数,表示输入序列最长的递增子序列的长度。 sample input(1) 1 2 4 2 5 sample output(1) 4 …
11 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.