编程拼图和代码高尔夫

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

3
排序一些苹果!
问题 想象一下,连续排着7个水桶。每个存储桶最多可包含2个苹果。有13个标记为1到13的苹果。它们分布在7个桶中。例如, {5,4}, {8,10}, {2,9}, {13,3}, {11,7}, {6,0}, {12,1} 其中0代表空白。苹果在 每个存储桶中的出现顺序无关紧要(例如{5,4}等同于{4,5})。 您可以将任何一个苹果从一个存储桶移动到相邻的存储桶,只要目标存储桶中有另一个苹果的空间。每一步都由您要移动的苹果的数量来描述(这是明确的,因为只有一个空白空间)。例如,应用移动 7 以上安排将导致 {5,4}, {8,10}, {2,9}, {13,3}, {11,0}, {6,7}, {12,1} 目的 编写一个程序,从STDIN读取一个排列并将其分类为以下排列 {1,2}, {3,4}, {5,6}, {7,8}, {9,10}, {11,12}, {13,0} 使用尽可能少的动作。同样,在苹果的出现顺序 中每个桶是不相关的。桶的顺序很重要。它应该输出用于对用逗号分隔的每个排列进行排序的动作。例如, 13, 7, 6, ... 您的分数等于解决以下安排所需的举动总数之和: {8, 2}, {11, 13}, {3, 12}, {6, 10}, {4, 0}, {1, 7}, {9, …

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。 只要打印输出看起来相同,您就可以对空格进行任何操作。

16
CodeBots 2:事件驱动设计
欢迎使用Code Bots 2! 自上次代码漫游以来,您已经学到了教训。您试图找出更多的方法以更少的行数来适应更多的动作,现在您终于拥有了它。您将制作一个事件驱动的代码机器人。 您的漫游器必须由24行组成。每行遵循以下两种格式之一: Condition:Action 要么 Action 您的漫游器还具有足够的存储空间来存储5个A通过命名的整数E。整数可以存储0到23之间的值。 每回合,您将执行line C,除非其中一个条件为真。如果是这样,C则将包含条件为真的行号,然后将执行该行。在每个回合结束时,C将递增。 有可用条件: Start仅在第一回合才成立。您必须一次在您的代码中包含此代码 BotAt(N) 如果在N定义的位置有一个机器人,则为true Equals(A,B) 如果A等于B,则为true。它们可以是不同的类型,如果是,则它们将不相等。 Modified(A)如果A在上一回合中复制到,则为true 。 A必须是变量名,行或条件 Any(C1,C2,...) 如果任何条件为真,则为真 None(C1,C2,...) 如果没有一个条件为真,则为真 All(C1,C2,...) 如果所有条件都为真,则为真 Not(C)如果C为假,则为true。C必须是一个条件。 变量可以采用以下格式之一。前9个数字,可在此页面中使用N时使用。 A,B,C,D,E 0到23之间的数字 This 将返回当前所在的行号 Add(N1,N2,...) 将返回所有值的总和 Sub(N1,N2) 将返回N1减去N2 Mult(N1,N2,...) 将返回所有值的乘积 Div(N1,N2) 将返回N1除以N2 Mod(N1,N2) 将返回N1 mod N2 OVar(N) 将接受变量名称,并返回对手的变量 Line(N) 将在您的代码中返回第N行 Type(N) 将在您的代码中返回第N行类型(类型是操作的名称) …

1
最小的覆盖面积,用于二次方性方差测试
挑战 找到可以通过查表测试二次残基集的最小基数(例如,模),以确定给定的非负整数n是否为理想平方。所有底数都必须小于或等于n的最大值的平方根。 给定类别n的基数最小的答案将赢得挑战。(这意味着可能有一个以上的获胜者。)n的类别为: Category Maximum allowed n Maximum allowed modulus/base ------------- -------------------- ---------------------------- 8-bit values 255 15 16-bit values 65535 255 32-bit values 4294967295 65535 64-bit values 18446744073709551615 4294967295 如果两个基数相等的平局出现平局,则平局将转到具有更大能力以较早地检测非平方的组。 如果没有找到完整的封面(对于32位和64位类别来说完全有可能),则获胜者将是一组从统计学上或经证明可排除最高百分比的非平方数的基数(无误)将正方形报告为非正方形)。有关不完整保险单的讨论,请参见下文。 背景 在许多数论应用中,会出现一个问题,即某个数n是否为一个完美的平方(0、1、4、9、16、25、36、49、64、81、100等)。测试的一个方法是否Ñ是正方形是测试是否地板(√N)2 = N,即是否圆形向下的平方根Ñ,平方时,还给Ñ。例如,floor(√123)²=11²= 121,它不是123,所以123不是正方形。但是楼板(√121)²=11²= 121,所以121是正方形。此方法适用于少量数字,特别是在可用硬件平方根运算的情况下。但是对于大量(数百或数千位)的数据,它可能会非常慢。 测试正方形性的另一种方法是使用二次残差表排除非正方形。例如,以10为底的所有平方必须有一个最终的(一位)数字,该数字为0、1、4、5、6或9。这些值构成以10为底的二次残差集。 -10号以0、1、4、5、6或9结尾,您知道它可能是方形的,因此需要进一步检查。但是,如果以10为底的数字以2、3、7或8结尾,则可以确定它不是平方。 因此,让我们看看另一个基础。以8为底​​的所有平方必须以0、1或4结尾,方便地,这只是8种可能性中的3种,这意味着一个随机数可能为平方的概率为37.5%,或者一个绝对数不是平方的概率为62.5%。这些比基数10给出的几率要好得多。(并且请注意,以8为底的模数运算只是一个逻辑与运算,而不是以10为底的模数除以10并除以余数。) 有更好的基础吗?好吧,是的,实际上。基础120有18种可能性(0、1、4、9、16、24、25、36、40、49、60、64、76、81、84、96、100和105),仅占15%可能是正方形的机会。而基数240更好,只有24种可能性,仅代表10%的可能是正方形。 但是,没有一个单独的基数可以单独确定平方度(除非它大于要测试的最大数,这是不切实际的)。一个单一的基地只能排除方形性。它不能最终验证方形性。只有精心选择的一组基础一起使用,才能最终验证整数范围内的直角性。 因此,问题就变成了:哪一组基形成最小的覆盖范围,这些覆盖范围一起可以确定性地推算出正方形度或非正方形度? 正确但非最小保障的示例 以盖子16为基础的盖子{3、4、5、7、8、11、13、16、17、19、23、25、29、31、37}足以确定底角的正方形或非正方形。所有 16位值0到65535。但这不是最小覆盖率,因为至少存在一个15基覆盖率,而且很容易发现。实际上,很可能存在较小的掩护-可能只有6或7个碱基。 但为说明起见,让我们看一下使用此16基覆盖集测试n的样本值。这是上述碱基集的二次残基集: Base m Quadratic …

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 

2
蒸汽朋克:Clacker动画
在被低估的蒸汽朋克小说《差异引擎》中,相当于电影院的房屋提供了由砖块显示的像素化运动图像,可以通过机械方式翻转。协调这些磁贴的运动的控制引擎是一台大型噪音机,由一副打孔卡控制。 您的任务是模拟这样的引擎并显示输入文件指定的像素化动画。输入由固定宽度格式的行组成,但是您可以假定任何方便的行尾指示。格式为: SSSSYYxxXXOA SSSS: 4 digit sequence no. may be padded by blanks or all blank YY: the y coordinate affected by this line (descending, top is 0, bottom is m-1) xx: the starting x coordinate XX: the ending x coordinate O: hexadecimal opcode A: argument (0 or 1) 输入是明确排序的(如果您将一副纸牌放在地板上,这部分我将非常感谢)。这意味着程序必须使用序列字段作为排序键对输入行执行稳定的排序。具有相同序号的行必须保持其原始相对顺序。(如果您将实际的行号附加到键上,则它应该与不稳定的排序一起使用。)空白序列字段应解释为小于任何数字(ascii排序序列)。 …

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.