编程拼图和代码高尔夫

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

12
打印相对路径
描述 给定一个源路径和一个目标路径,输出相对于源到目标的相对路径。 规则 输入可以来自stdin或作为程序/函数的参数。 Windows和Unix样式路径都必须受支持。 输出路径可以使用/和/或\用作路径分隔符(您可以选择和两者组合使用)。 您可以假设相对路径是可能的。 禁止使用用于计算相对路径的外部程序,内置函数或库函数(例如Python的os.path.relpath) 这是代码高尔夫球 编辑:评论中的新规则。 相对路径必须是可能的最短相对路径。 假设目标路径与源路径不同。 例子1 # In /usr/share/geany/colorschemes /usr/share/vim/vim73/ftplugin # Out ../../vim/vim73/ftplugin 例子2 # In C:\Windows\System32\drivers C:\Windows\System32\WindowsPowerShell\v1.0 # Out ..\WindowsPowerShell\v1.0
15 code-golf 

5
动画一个旋转的利萨如雕像
此项挑战的参赛作品将显示一个动画的旋转的利萨如(Lissajous)人物。3d旋转的出现是因为x参数在每帧中都相移。 输入: 的a和b参数(按照维基百科文章)将在命令行中指定,或者从stdin读取。 输出: 这是ascii-art,因此输出将显示在终端仿真器窗口或等效窗口中。输出大小可能是硬编码的,但是Lissajous图形必须至少足够大以填充80x24窗口。 动画帧速率约为50fps。只要计算每帧的时间比固定的睡眠时间短,每帧之间的睡眠时间为20ms就可以了。如果您选择的语言在您选择的平台上无法足够快速地进行计算,那么您将必须动态计算睡眠时间。 在该帧的所有计算完成之前,不会显示每个帧。无需清除每帧之间的屏幕。 该图2*Pi大约每4秒钟旋转一次。 对于每一帧,必须生成完全闭合的曲线。沿曲线至少必须计算1000个点。不需要在点之间画线。 曲线的点将作为#字符绘制。其余显示区域将为空白/空白。 这是代码高尔夫球,因此,最短答案(以字节为单位)(我认为可以接受)将是在此帖子发布一周后被接受的获胜者。 没有参考的答案。

3
'x'的演变
给定的是一块可变大小的板,最大大小为5场5场。每个字段都用“ x”填充。如果未用“ x”填充,则用“ o”填充。 给出了每个板的启动状态(请参见下文)。每块棋盘必须打10轮(最大条件下:请参阅下文),并且必须注意x的演变。 一回合的工作方式如下: 每个“ x”扩展到正交边界的字段,但自身消失 每当两个“ x”在一个场上时,它们彼此抵消 每个回合中所有“ x”的演变必须同时发生。例: o o o o x o o x o -> x o x o o o o x o 在每一轮演变中,您都必须查看电路板是否清空了“ x”。如果不是空的,可能会出现重复的模式。如果情况并非如此,我们将放弃对演化的分析。另外,您必须为每个起始板打印x字段的最大百分比(四舍五入为整数)。 输入: 输入数据可在此处找到(Pastebin)。该数据包含100个起始状态。如前所述,板的尺寸各不相同。行数用从1到5的n表示,其后是仅包含“ x”和“ o”的n行,表示起始模式。电路板的每一行都有1到5个字段。 输出: 必须打印出完整的结果,每个起始板的打印行必须采用以下格式: Round {0-10}: {repetition/empty/giveup}, {0-100} percent maximum-fill 例子: 范例1: Input: 2 Starting …
15 code-golf 

15
将程序转换为回文程序
甲回文是一个字符串,它是相同的向前和向后,如“赛车”。 用某种语言L编写一个程序,该程序以语言L中的任何程序P1作为输入,并输出语言L中的回文程序P2,该程序执行与P1相同的操作。 您无需担心处理语法错误的输入程序。 这是代码高尔夫,因此以字节数最少的解决方案为准。

6
囚徒困境v.2-大逃杀
在这个问题中,设计了一种游戏,玩家在囚徒困境中将一对一面对面地确定彼此对立,从而确定哪种迭代策略得分最高。 在这个问题中,我设计了一种方法,允许多个人同时互相对抗囚徒困境。在这种变化中,回报矩阵是不必要的,每两个参与者之间的每个结果都是两个功能独立决策的总和。 您的任务是构建一个AI来玩多人囚徒困境的对称,通用版本,以实现最高分。 游戏规则 在这种多人,多人囚徒困境的每一轮中,玩家A可以决定从其他玩家中拿1 B。在这种情况下,A的分数会增加1,而B 's的分数减少2。此决定允许在每个有序球员对之间进行。 这是每个玩家做出的唯一决定-彼此“背叛”还是不相互“捉襟见肘”,这与叛逃和合作分别相同。两名球员之间的有效收益矩阵P1和P2如下所示: P1/P2 P1 Take1 P1 Don't P2 Take1 -1/-1 -2/+1 P2 Don't +1/-2 0/ 0 比赛程序 游戏将包括P * 25回合,即P参与比赛的人数。所有玩家的得分都以0。每个回合将包括以下步骤: 在回合开始时,将从标准输入中以以下格式为每个程序提供上回合的历史记录: 含有3个数字一行P,D和N。 P是游戏中的玩家总数。每个玩家随机分配从一个ID号1,以P在游戏的开始。 D 是当前玩家的ID。 N 是已经打过的回合数。 N线,每条线代表一轮的结果。在的行k上N,将有一定数量n_k的有序对(a, b),用空格分隔,表示该回合中ID为a“ 1” 的玩家与ID为“ 1”的玩家b。 R从0到18446744073709551615(2 64-1)的均匀随机数,用作伪随机种子。这些数字将从预先生成的文件中读取,该文件将在锦标赛结束时发布,以便人们可以自己验证结果。 如果您的程序在上一轮产生了这样的输出,则多一行代表要读入您的程序的某种状态。在游戏开始时,此行将始终为空。评分代码或其他程序均不会修改此行。 然后,每个程序将使用其策略来产生以下标准输出: K数字列表,这是本轮将“取1”的程序的ID。空输出意味着它什么也不做。 可选地,一条代表某种状态形式的额外行可以传递到以后的回合。此确切行将在下一轮反馈给程序。 以下是3在4人游戏中ID 玩家游戏开始时的示例输入: 4 3 0 4696634734863777023 …

8
随机奎因
编写一个能够随机生成自身的程序。 它必须基于其源代码中使用的令牌来执行此操作。如果您的程序的源代码由50个唯一令牌组成,并且长度为60个令牌,则程序应输出60个令牌,其中每个令牌都是从50个唯一令牌中随机选择的。 例如,此程序将有50/60的机会复制自己。 什么是代币?这取决于语言。例如,在大多数语言中,标识符(foo_bar),关键字(while)和数字(42)将被视为标记。在大多数语言中,空格都不起作用。 附加规则: 输出只能包含在程序源代码中找到的标记,并由适当的定界符分隔 输出必须与程序的源代码具有相同的长度,并以令牌计数 只能使用一种编程语言 源代码必须至少具有3个唯一令牌 从源代码中排除注释 程序应该只有一个U ^ L机会重现自己 计分:获胜的机会最大。

5
识别ASCII艺术编号
挑战 识别ASCII艺术编号。为了使事情变得有趣,可能会翻转图像中的三个随机点。例如: ***** * ** ** ** ** ** 输入值 以下Python脚本生成的7x7 ASCII艺术编号。 输出量 一个数字。 测试脚本 这是生成测试用例的Python脚本(2.6+): import random digits = '''\ *** ** ** ** ** ** ** ** ** ** ** *** * *** * * * * ***** *** * ** * ** ** ** ****** *** * …

2
满是胡说八道的书:确定打油诗
众所周知,打油诗是一首短短的五行诗,带有AABBA押韵方案和麻醉剂(无论是哪种),都是偶尔出现的: 用一句话写出五行民谣的荒谬的第一行和第五行押韵, 正如您已经算过的, 他们与第二 行押韵。第四行必须与第三行押韵 您的任务是编写最短的程序,该程序在馈入输入文本时会打印是否认为输入是有效的打油诗。输入既可以在命令行中进行选择,也可以通过标准输入进行选择,输出也可以是简单的“ Y” /“ N”或置信度得分,同样可以选择。 这是正确的打油诗的另一个例子: 有一位年轻的女士的眼睛 都以颜色和大小的唯一 当她打开他们广泛的 人都转过身去 ,惊讶地拔腿就走 但是下面的诗显然不是油画,因为它不押韵: 有一个圣蜜蜂的老人 被黄蜂st 住了胳膊。 当被问到“疼吗?” 他回答说:“不,不是, 我很高兴那不是大黄蜂。” 这也不是,因为仪表都是错误的: 我听说有一个柏林 人讨厌他所在的房间。 当我问 他为什么叹口气时说: “好吧,你知道,昨晚周围有几个流氓正在庆祝熊队夺得冠军。世界杯,他们的声音真的很大,所以因为喧嚣我无法入睡。” 线索 以下是一些可用来确定您的输入是否为打油诗的线索: 五行民谣总是五行。 第1、2和5行应该押韵。 第三行和第四行应该押韵。 第1、2和5行大约有3x3 = 9个音节,而第3行和第4行有2x3 = 6个音节 请注意,除了第一个以外,其他所有都不是一成不变的:不可能达到100%的正确率。 规则 您的输入至少应该以确定性方式正确地对示例1到3进行分类。 您是允许使用您想要的任何编程语言,除了专门为这次比赛设计的(见当然编程语言在这里)。 你是不是允许使用任何图书馆除了你的编程语言的标准产品。 您是允许假设该文件中,CMU狮身人面像语音上的字典,是在当前目录下名为“C”文件。 你是不是允许硬编码的测试输入:你的程序应该是一个一般的打油诗分类。 您是允许假设输入是ASCII,没有任何特殊的格式(如中的例子),但你的程序不应该由标点符号混淆。 奖金 提供以下奖金: 您的程序将其结果输出为打油诗吗?减去150个字符的长度奖励! 您的程序还能正确识别十四行诗吗?减去150个字符的额外长度奖励! …

3
井字游戏
创建一个确定性的程序来播放N d井字棋与其他选手。 当n(宽度)和d(维数)在以下范围内时,您的程序应该可以运行: n∈[3,∞)∩ℕ ie a natural number greater than 2 d∈[2,∞)∩ℕ ie a natural number greater than 1 n = 3; d = 2(3 2即3 x 3): [][][] [][][] [][][] n = 3; d = 3 (3 3即3 x 3 x 3): [][][] [][][] [][][] [][][] [][][] [][][] [][][] …

24
删除字母以形成回文
问题 假设一个单词几乎可以回文,如果可以删除其中一个字母,从而使该单词成为回文。您的任务是编写一个程序,该程序针对给定的单词确定删除哪个字母以得到回文。 以任何编程语言执行此操作的最短代码都会胜出。 输入值 输入由2到1000个字符长的大写字母组成。 输出量 输出应删除的字母的1索引位置(最左边的字母具有位置1,下一个字母具有位置2,依此类推)。如果有可能导致回文的选择,请输出其中任何一个。请注意,即使给定的单词已经是回文,您也需要删除字母。如果给定的单词几乎不是回文,则输出-1。 例 输入: racercar 可能产生输出: 5 因为删除5字母th会产生racecar回文。 另外,输入 racecar 仍然可以产生输出 4 因为删除4字母th raccar仍然是回文。
15 code-golf 

7
产生白噪声
挑战在于:生成由白噪声组成的音频文件。 要求和说明: 您的程序必须生成仅包含白噪声的音频文件,这意味着其强度在所有(合理的)频率上都是相同的,并且不为零(请参见示例图); 一个人必须能够在最新版本的VLC上播放音频文件(在编写答案时); 该程序不需要加密强度高的随机性,rand功能或可以读取的/dev/rand内容; 该程序必须至少能够在理论上产生至少1个小时的音频(这意味着系统限制(例如最大文件大小)不适用); 分数是源代码中的字节数,加上所有适用的奖励; 使用任何第三方,外部库都可以; 该程序必须能够在不访问Internet的情况下运行。 奖金是: -15%:允许指定音频文件的格式(至少两个选择;可能的选择数量不会改变乐谱); -10%:允许指定音频文件的持续时间; -5%:允许指定音频文件的比特率。 这些设置可以存储在变量,文件中,也可以作为命令行参数来选择。百分比是从原始字节数计算得出的,然后再应用任何奖励。

18
字母数字平衡
编写一个程序,该程序以字符串作为输入,并计算其中的字母数字和非字母数字字符的数量。它必须显示如下结果: 输入:http://stackexchange.com 输出:20 + 4 = 24 要注意的是,您的源代码必须具有与非字母数字字符相同数量的字母数字字符。不允许注释,空格被忽略。(显然,称为“ 空白 ”的语言可能会竞争选票,但显然不会被选为获胜者) 代码中的字符必须至少具有一些次要理由,它们不应完全多余。例如,允许使用更长的变量名,i = (j*3)+4;而不是i = j*3+4;也允许。但是,i = i + 1;;;;;;事实并非如此。 除此之外,还适用标准代码高尔夫球规则。

9
实现任意精度划分
实现一个函数divide(int a, int b, int c),以输出以10为底的值a/b。而不使用任何浮点数学或BigInteger/ BigDecimal或等效库。除下面第4点中的(可能的)例外外,至少必须打印c一组正确的字符0123456789.。 a和b可以是任何的32个整数。更新:如果打高尔夫球的目的,你想有输入是64个原语是好的,但你并不需要支持数据的全部64位范围。 如果不是,则无需检查是否c为正(尽管希望您的程序不会崩溃)。 的最小支持上限c是500。如果您的程序不支持c上述值可以500,但是也可以。 对于均分的数字,是选择打印额外的零(基于的值c)还是不打印任何内容。 您不需要使用该函数就可以执行任何其他任务,唯一的目标是打印。 对于之间的数字-1和1,这是你的选择是否打印的领先0。但是,这是唯一可以接受打印前导零的情况,并且您只能打印一个这样的零。 您可以使用最后一个小数位所需的舍入/下限/ ceil逻辑。 对于否定答案,您必须打印前导-。这不计入c。然而,这是你的选择,如果你想打印,+或者没有一个肯定的回答。 整数除法和整数模数均允许。但是,请记住,除非您选择实现自己的BigInteger/ BigDecimal库(取决于代码长度),否则您仅限于基元。 尽管您可以,但是您不需要处理bbeing 0。如果b=0,您的程序可能会进入无限循环或崩溃,并且不会受到处罚。 每个注释的规则略有更改。为确保公平竞争,a并且b确保且保证为32位整数,可以使用64位长的整数。如果您选择的语言作为基本语言超出了64位整数,则您在任何时候都不能使用该功能(假装它的上限为64位)。 尚不清楚的另一点(尽管它不应更改任何当前有效的答案):虽然c可以解释为打印的字符数或小数点后的空格数,但是程序必须c以某种相关方式使用决定要打印多少个字符。换句话说,divide(2,3,2)输出应该比divide(2,3,500); 短得多。不考虑印刷500个字符是不行的c。 我实际上并不在乎函数的名称。d可以打高尔夫球。 输入值 函数调用和读取stdin均被接受。如果您从阅读stdin,则集合中未包含的任何字符[-0123456789]均被视为参数定界符。 输出量 stdout如上所述的字符。 例 对于divide(2,3,5),以下所有都是可接受的输出: 0.666 0.667 .6666 .6667 0.666 0.667 .6666 .6667 +0.666 +0.667 +.6666 +.6667 另一个示例:divide(371,3,5)以下是所有可接受的输出: 123.6 123.7 123.6 123.7 +123.6 +123.7 123.66666 …

7
东方最快的狐狸
本着世界你好的精神!没有重复 编写一个程序,用可选的换行符打印字符串“棕色狐狸跳过懒狗”。整个程序不得重复任何字符。 请注意,要打印的字符串 确实会重复字符,因此您必须以某种方式解决该限制。 注意,获胜条件是人气竞赛,即投票最高的答案获胜。 更新:为了使操作更简单,允许重复,但是您必须尝试将其最小化。具有较少(或没有)重复的程序将优先于具有某些重复的程序。

8
创建分形树
我想看到的是绘制了一个分形树,您可以在其中输入一个整数,而输出将是一个分形树,其中输入了分支步数。 规则: 分形应该是线形树: 分形的形状也应与此图片相同。 每个分支每次拆分时,宽度应减少25% 分支的最后一层应为1px宽的线 最短代码胜出 提示:此网站可能有用。

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.