编程拼图和代码高尔夫

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

12
计算n个Kaprekar数
甲卡布列克数为n位数字ķ的是,当第一Ñ或n-1个位k的^ 2被添加到第二Ñ的N ^ 2位数,则结果为N. 例子: 9^2 = 81. 8+1 = 9. 45^2 = 2025. 20+25 = 45. 297^2 = 88,209. 88+209 = 297 Kaprekar序列从1开始。 编写一个程序,计算并输出前n个 Kaprekar数,其中n在1到100的范围内,但不限于此。每个Kaprekar数必须用空格分隔,不能有其他空格。 您可以在此处找到更多的Kaprekar编号来检查您的程序,但是不得以任何方式使用此资源来帮助进行计算-换句话说,请勿进行硬编码,从此源读取或在任何其他漏洞利用程序中使用它方式-所有数字都必须由您的程序生成。 最短的代码获胜。
12 code-golf 

7
首字母缩略词短语
任务: 例如dftba,创建一个将首字母缩略词作为输入的程序,并生成一些可能的缩写词代表的短语。您可以将单词表用作单词输入。受https://www.youtube.com/watch?v=oPUxnpIWt6E的启发 例: input: dftba output: don't forget to be awesome 规则: 您的程序无法每次使用相同的首字母缩略词生成相同的词组,因此必须进行随机化 输入将全部为小写 发布一些示例(输入和输出) 接受任何语言 这是一场人气竞赛,因此大多数投票都获胜!

11
打印n个奇怪的数字
怪异数字是一个适当的因数之和大于其本身的数字,并且没有适当的因数的子集求和。 例子: 70是一个怪异的数字,因为它的适当除数(1、2、5、7、10、14和35)的总和为74(大于70),并且这些数字的组合之和不等于70。 18不是一个怪异的数字,因为它的适当除数(1、2、3、4、6、9)等于25,大于18,但3、6和9等于18。 您的任务是编写最短的程序,该程序可以通过std输入任意数字n并计算并打印到文件中,或使用换行符分隔出前n个怪异的数字。不允许对答案进行硬编码(很抱歉,一开始没有指定答案)。 有关更多示例,请参见以下页面:http : //mathworld.wolfram.com/WeirdNumber.html
12 code-golf 

10
字母数字字符的字符串,以逗号分隔范围的排序列表
给定一串未排序的字母数字字符,例如 ABC321STPpJqZZr0 输出一个“,”分隔的字符范围列表,按ASCII值排序,忽略大小写并删除重复项(即仅输出大写和数字字符),例如 0-3, A-C, J, P-T, Z 规则 程序的长度通常是您的基本分数。 您必须在程序中初始化(硬编码)上面的示例,但是您可以从程序长度中减去该示例的长度,例如,char* s="ABC321STPpJqZZr0";您可以折扣16个字符,其他11个字符计入您的程序长度。 红利(+50赏金) 由于这是我的同事今天遇到的一个实际问题,需要用Tcl 8.0.5(一个古老的版本,缺少许多最新的Tcl内置插件)编写,因此我将向写最短Tcl 8.0的任何人奖励50分.5解决方案,如果Tcl 8.0.5中至少有2个有效提交。
12 code-golf  string 

7
C代码压头
情况:您是一名高中老师,正在教您的计算机课如何编写C程序。但是,由于这只是该术语的开始,因此您尚未教他们缩进和间距的重要性。当您标记他们的工作时,您的眼睛受了如此巨大的伤害,以至于痛苦地尖叫着,并意识到这种情况无法持续。 任务:您已决定编写一种使用任何语言的程序,该程序都将有效的C源代码作为输入并以正确的格式输出。您应该确定什么是格式正确的代码,因为这是一场人气竞赛。鼓励您实现尽可能多的功能,以下是一些示例: 在每行的开头添加适当的缩进 在,和其他运算符之后添加空格,例如转换int a[]={1,2,3};为int a[] = {1, 2, 3};。记住不要在字符串文字中处理运算符。 每行后删除尾随空格 将陈述分为几行,例如,学生可以写一行tmp=a;a=b;b=tmp;或int f(int n){if(n==1||n==2)return 1;else return f(n-1)+f(n-2);}全部写成一行,则可以将它们分成不同的行。请注意for循环,它们中包含分号,但我真的不认为应该将它们分开。 定义每个函数后添加新行 您还可以使用其他功能来理解学生的代码。 获胜标准:这是一次人气竞赛,因此多数投票的答案都将赢得。如果出现平局,则以实施最多功能的答案为准。如果那又是平局,则最短的代码获胜。 建议您在答案中包括已实现的功能列表以及示例输入和输出。 编辑:根据注释中的请求,这里是一个示例输入,但是请记住,这只是参考,建议您实现尽可能多的功能。 输入: #include <stdio.h> #include<string.h> int main() { int i; char s[99]; printf("----------------------\n;;What is your name?;;\n----------------------\n"); //Semicolon added in the string just to annoy you /* Now we take …

24
计算数字的立方根
编写此代码的目的是创建一个程序或函数,以计算和输出作为输入给出的数字的立方根。 规则: 没有外部资源 不使用内置的多维数据集根函数。 不使用可以将幂加幂的方法/运算符(包括平方根,4根等)。 您的功能/程序必须能够接受浮点数和负数作为输入。 如果多维数据集的根是浮点数,则将其四舍五入到小数点后的4个数字。 这是一个代码高尔夫,以字节为单位的最短代码获胜。 测试用例: 27 --> 3 64 --> 4 1 --> 1 18.609625 --> 2.65 3652264 --> 154 0.001 --> 0.1 7 --> 1.9129 您可以使用上述所有测试用例来测试负数(-27 --> -3,-64 --> -4...)
12 code-golf  math 

30
打印带有垂直单词的字符串
您的任务是获取一个由ascii字符组成的输入字符串,并将该字符串输出为一系列由空格分隔的垂直单词。一个例子如下所示: 给定字符串: Hello, World! My name is Foo. 输出应为: H W M n i F e o y a s o l r m o l l e . o d , ! 如果您的程序正确处理了需要环绕终端的字符串,则将获得10分的奖励积分,我们将其设置为80个字符。 如果您的程序也可以反向执行50分!

6
顺其自然
我曾经遇到过这个(小型)游戏,在该游戏中,您有4条或更多条垂直管,这些垂直管由许多水平管连接,并且您必须将一个球或水倒入垂直管中。 我知道有2种: 将对象放入其中一个出口下方的存储桶/篮子中(猜测将其放入哪个管道) 猜猜对象将来自哪个管道。 样品管: | | |-------| |-------| |-------| | |-------| | |-------|-------|-------| | |-------| | |-------| |-------| |-------| |-------| | |-------| | 基本规则: 在水平管道中移动时,物体可能会掉落 在垂直管道中移动时,对象将尽可能变为水平管道。 你的工作 编写一个程序,该程序将创建一个随机的管道网格(请参阅示例管道)。 至少应有4条垂直管,相当多的水平管至少应有10条。 垂直管的长度由您决定。 显示对象到达底部的路径,并显示到达底部所需的转弯次数。 (可选)输入到确定起点,从左到右编号为1..N的管道。 显示: | vertical pipe - horizontal pipe : vertical pipe used by the object = horizontal pipe …

2
实现一个无用的解释器
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 2年前关闭。 您的任务是为Useless语言构建一个解释器: 功能要求如下: 解释器应接受所有描述的命令。 NO.,NOOP并且INCLUDE-xxx必须荣幸。 DONTUSEME(n) 必须具有其基准日期,以便可以将其轻松配置为更合理的测试目的。 INCLUDE-xxx必须能够以大致相等的概率生成任何命令。如果生成a DONTUSEME(n),则他应该为n随机选择一个较小的值。 DONTUSEME(n)Windows应该在NO.指令中保留下来。提示:为这些窗口产生一个新的过程。 BOOM!并且KABOOM!必须做一些坏事和令人恐惧的事情,并且KABOOM!必须比做坏事BOOM!。但这不能太当真,所以它不应具有破坏性,破坏性或难以撤销。请不要,不要,也不要使这些指令运行rm -rf \命令,运行叉弹,安装恶意软件,损坏文件系统中的数据,从Internet发布或下载不适当的内容,或任何其他明显滥用的内容。 TURINGVSALONZO应该像实际上正在做应做的那样运行。提示:让它随机决定它会在很长一段时间内随机睡眠还是会在短时间内随机睡眠,或者永远睡眠。 所有其他预定义的指令都应执行除上述指令以外的其他操作,并且彼此之间应有所不同,但决不要比BOOM!或差KABOOM!。它们的作用完全取决于您,但是一个简单的实现只会输出一条错误消息或其他一些文本。 您应该为用户提供一种简单的方法,以提供由解释器运行的程序。即从文件或从中读取纯文本stdin是可以的。不是从Internet上的某个加密文件中读取它。 可选的: 您可以根据需要发明一些新命令,但是它们应遵循与其他规则相同的规则。不要使用它来绕过BOOM!和/ KABOOM!或击败限制DONTUSEME(n)。如果您确实发明了新命令,请说明它们的作用。 您应该考虑一下,如果解释程序接收到带有未知命令(甚至完全无法解析的随机字节乱码)的输入,该怎么办。 尽管没有指令可以取消该DONTUSEME(n)命令,但是您可以为其添加一个kill开关。只是不要用语言公开它。 为了避免滥用,我们有一些非功能性要求: 您的输入内容必须尽可能完整且自动包含。这意味着它不应该只是某种安装程序或明显不完整的程序。这样,可以从maven Central下载和使用jQuery之类的库或程序包,但不能从自定义服务器下载任意代码和程序包。 您的条目不应从该页面或该页面的某些镜像或副本中获取任何内容,以进行某种反射或用于任何其他目的。这对于避免某些程序试图读取此问题的其他参与者答案或试图以任何方式破坏一个或多个问题至关重要。 您的解释器应该是不变的,并且不能自我修改或修改其输入文件。但是,无需更改原始文件即可创建解释器或输入文件的变体副本。 最后,考虑到: 即使答案完全符合要求,答案中的程序也将毫无用处。 语言(故意地)指定得很不够,并且答题者有很多自由可以采取,并且有动机去采用。 需求和可能的实现有很多主观要点; 这样做的目的是获得一些乐趣和创造力。 然后,这是一次人气竞赛,并且完全符合规则的最受好评的答案将获胜!因此,您不需要打高尔夫球或混淆您的答案(但是您可以根据需要这样做)。只要确保发布原创性和创造性的内容来获得赞誉,即请不要发布无聊的条目。

2
解释电路图
您面临的挑战是解释一个带有逻辑门的电路图。 逻辑门(完成此挑战您实际上不需要知道它们的作用/作用): 和门: a 或门: o 南德门 A 也门: O 异或门 x xnor门: X 不是门: ~ 每个闸门但最后一个闸门需要两个输入。输入来自.以门为中心的3 x 3正方形的左上角和左下角。否则,输入直接在其左侧。输出.直接到右侧。 电线用 -|\/.= - 接触两根电线,一根在右边,另一根在左边: c-c | 接触两根电线,一根在上面,另一根在下面: c | c /并且\工作如下: c c \ / c c . 接触周围的所有电线: ccc c.c ccc =很特别 它通过它连接相邻的导线: -=- 连接两根线。在下面的 \|/ -=- /|\ 相对的每根电线都相互连接,但彼此之间却不相连(这与有所不同.)。 为了使电流流过,两根导线必须都被连接到另外一个,所以在|-,电流也不会流动。 …

1
在2D字节数组中查找矩形的数量
0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000001111111111111100000000000000000011111111111111100000000000000000 0000001111111111111100000000000000000011111111111111100000000000000000 0000001111111111111100000000000000000011111111111111100000000000000000 0000001111111111111100000000000000000011111111111111100000000000000000 0000000000000000000000000000000000000011111111111111100000000000000000 0000000000000000000000000000000000000011111111111111100000000000000000 0000000000011111100000000000000000000011111111111111100000000000000000 0000000000011111100000000000000000000011111111111111100000000000000000 0000000000011111100000000000000000000011111111111111100000000000000000 0000000000000000000000000000000000000011111111111111100000000000000000 0000000000000000000000000000000000000011111111111111100000000000000000 0000000000000111111000000000000000000011111111111111100000000000000000 0000000000000100001000000111111000000011111111111111100000000010000000 0000000000000100001000000111111000000000000000000000011000000000000000 0000000000000111111000000111111000000000000000000000011000000000000000 0000000000000000000000000000111111000000000000000000000000000000000000 0000000000000000000000000000111111000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 您将得到一个二维数组,大小为mx n。确保所有字节均为1或0。找到在2d中查看时由1表示的矩形的数量,如上所示。 仅考虑完全填充的矩形进行计数。 矩形必须用0包围,除非它们在边缘上(尽管1的对角线接触矩形是可以的(请参见示例)。 例如,在上面的数组中有5个有效矩形。 您可以使用任何语言。

4
Manufactoria中的Mod 7
一个简单的制造挑战。计算输入模7。输入将采用大端二进制(蓝色= 1,红色= 0)。输出应采用相同的格式。 提供了测试用例。最小的零件数获胜。 http://pleasingfungus.com/Manufactoria/?ctm=Mod7;输入:_binary_number_big_endian._输出:_that_binary_number_mod_7; bbb:| brrr:b | brrrr:br | bb:bb | bbrrb:brr | brrrrb:brb | bbrb:bbr; 13; 3; 1 ; (如果输入mod 7为0,则不输出任何内容。)

5
实现shell脚本的子集
这个站点存在很多问题,涉及在解释器标签中实现各种语言。但是,实际上所有这些都是深奥的语言,没有人使用。是时候为这里的大多数用户所知道的实用语言做翻译了。是的,如果您在阅读标题时遇到问题(不是您遇到的问题),则它是shell脚本。(是的,我故意挑战了,因为我对GolfScript和Befunge之类的语言感到无聊,所以我提出了一些挑战,即更实用的编程语言有更大的获胜机会) 但是,shell脚本是一种比较大的语言,因此我不会要求您实现它。相反,我将制作一小部分的Shell脚本功能。 我决定的子集是以下子集: 执行程序(但是,即使允许使用单引号,程序也只能包含字母) 程序参数 单引号(接受任何可打印的ASCII字符,包括空格,不包括单引号) 无引号的字符串(允许ASCII字母,数字和破折号) 管子 空语句 多个语句用换行符分隔 尾随/前导/多个空格 在此任务中,您必须从STDIN读取输入,然后运行每个请求的命令。您可以放心地假定使用POSIX兼容的操作系统,因此不需要Windows或类似功能的可移植性。您可以放心地假设未通过管道传输到其他程序的程序不会从STDIN中读取。您可以放心地假设这些命令将存在。您可以放心地假设不会使用其他任何东西。如果某个安全的假设被打破,您可以采取任何措施。您可以放心地假设最多15个参数,以及少于512个字符的行(如果您需要显式的内存分配或其他内容-即使C很小,我也会给C赢得成功的机会很小)。您不必清理文件描述符。 您可以在任何时候执行程序-即使在收到完整的行之后,也可以在STDIN结束之后。选择您想要的任何方法。 简单的测试用例,可让您测试外壳(请注意第三个命令后的空白): echo hello world printf '%08X\n' 1234567890 'echo' 'Hello, world!' echo heeeeeeelllo | sed 's/\(.\)\1\+/\1/g' yes|head -3 echo '\\' echo 'foo bar baz' | sed 's/bar/BAR/' | sed 's/baz/zap/' 上面的程序应该输出以下结果: hello world 499602D2 Hello, world! helo y …

12
缩小数字字符串
鉴于串1和2任意长度的,写一些代码(并不一定是一个功能了,一切都会好起来)计算多少步它需要字符串收缩到最终形式,下面这个标准: 如果您的字符串是112112,这意味着您必须打印1,两个1和2,如下所示: 1112。当您再次执行该操作时,必须打印1和2。得到12。然后打印一张2,获得2。这是最终形式,因为此字符串不再更改。您的代码将输出3,因为您需要3个步骤才能到达最终表单。 其他规定 如果字符串长度不均匀,则最后一个数字保持不变。 每个不再更改的字符串(例如222222)都被视为最终形式。 您不能使用任何外部来源。 您的代码必须与每个字符串的工作1和2。 最短的代码获胜,因为它是代码高尔夫球。 您的代码应打印出每一步。 每种输入法都可以。 例子 Input >> 122122122121212212 Your code has to print: 211222111111222 11222111222 122111222 2111222 111222 1222 222 Steps:7 (you can omit the "Steps") ---- ---- ---- ---- Input >> 22222221 Your code has to print: 22222211 2222221 2 ---- ---- …
12 code-golf 

8
涂一根棍子需要多长时间?
(基于此Math.SE问题,该问题还提供了一些图形) 我有一根看起来像这样的棍子: 我希望它看起来像这样: 我不是专业画家,因此,在开始这个雄心勃勃的DIY项目之前,我想确保自己不会感到头疼。 您的程序应该告诉我,画这根棍子需要多少步骤。每个步骤都涉及用纯色绘制连续的区域,该区域覆盖先前的油漆层。对于上面的示例,我可以先将左半部分涂成蓝色,右半部分涂成红色,然后将两个单独的绿色区域分别涂成4步(绿色不连续涂成)。 这是ASCII: ------ bbb--- bbbrrr bgbrrr bgbrgr 有两种不同的方法可以绘制这根棍子并最终得到相同的结果。但是,我只对时间估计感兴趣,这是四个步骤。 目标 您的程序应输出以给定的配色方案涂满棍子所需的最少步骤数。绘制方案将采用字符串形式,而输出将为数字。这是代码高尔夫。最短的程序获胜。 输入值 您的程序将以一串字母的形式接收一根棒的着色方案。每个唯一字母(区分大小写)代表唯一的颜色。 YRYGR grG GyRyGyG pbgbrgrp hyghgy 输出量 这些数字是油漆棒所需的最少步骤数。 4 3 4 5 4 说明 这就是我得出上述数字的方式。您的程序不需要输出以下内容: ----- YYY-- YRY-- YRYG- YRYGR --- g-- gr- grG ------- GGGGGGG GyyyGGG GyRyGGG GyRyGyG -------- pppppppp pbbbpppp pbbbrrrp pbgbrrrp pbgbrgrp …
12 code-golf  math 

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.