Questions tagged «code-golf»

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

5
Lisp打高尔夫球的秘诀
这些关于在Lisp(任何方言)打高尔夫球的一般提示是什么?请为每个答案张贴一个提示,并且仅针对Lisp的方言提供答案(例如,“删除评论”不是答案)。 请张贴您的小费适用于Lisp的方言。
9 code-golf  tips  lisp 

2
解读DOGO!
解读DOGO DOGO是鲜为人知的编程语言。最初的DOGO(Usenet帖子中的玩笑语言)从未实现,但已经创建了类似的语言。该语言的命令为: +===========+================================================================+ | Command | Description | +===========+================================================================+ | SIT | If the value of the current memory cell is 0, jump to STAY. | +-----------+----------------------------------------------------------------+ | STAY | If the value of the current memory cell is not 0, jump to SIT. | +-----------+----------------------------------------------------------------+ | ROLL-OVER | Select …

2
找到多边形的面积
给定s1, s2, s3... s_n圆内接的n角的连续边长,请找到其面积。您可以假设该多边形存在。另外,多边形将是凸的并且不会自相交,这足以保证唯一性。禁止专门解决此挑战的内置函数以及用于计算外接圆或外接中心的内置函数(这与该挑战的先前版本不同)。 输入:循环多边形的边长;可以作为函数,stdin等的参数。 输出:多边形的面积。 答案应精确到小数点后六位,并且必须在合理的笔记本电脑上运行20秒。 这是代码高尔夫球,所以最短的代码获胜! 具体测试案例: [3, 4, 5] --> 6 [3, 4, 6] --> 5.332682251925386 [3, 4, 6, 7] --> 22.44994432064365 [5, 5, 5, 5] --> 25 [6, 6, 6, 6, 6] --> 61.93718642120281 [6.974973020933265, 2.2393294197257387, 5.158285083300981, 1.4845682771595603, 3.5957940796134173] --> 21.958390804292847 [7.353566082457831, 12.271766915518073, 8.453884922273897, 9.879017670784675, 9.493366404245332, …

10
求矩阵幂
问题 创建一个程序或函数,该程序或函数可以计算加到n 次方的矩阵的结果。您的代码将采用一个任意的方矩阵A和一个非负整数n,并返回一个值为A n的矩阵。 限制条件 不允许使用用于计算矩阵幂和矩阵乘积的内置函数。 适用于代码高尔夫球的其余标准规则。 说明 给定一个方阵A,A n的值= AA⋯A(A与自身的重复矩阵乘积,n倍)。如果n为正,则使用刚才提到的标准。当n为零时,将得出具有相同A阶的单位矩阵。 目标 这是代码高尔夫球,最短的代码获胜。 测试用例 在这里,A是输入矩阵,n是输入整数,r是输出矩阵,其中r = A n。 n = 0 A = 62 72 10 34 r = 1 0 0 1 n = 1 A = 23 61 47 81 11 60 42 9 0 r = 23 …

6
计算两个矩阵的克罗内克总和
在下面的例子中,A和B将是2×2矩阵,和矩阵是一个索引。 一个克罗内克产品具有以下特性: A⊗B = A(1,1)*B A(1,2)*B A(2,1)*B A(2,2)*B = A(1,1)*B(1,1) A(1,1)*B(1,2) A(1,2)*B(1,1) A(1,2)*B(1,2) A(1,1)*B(2,1) A(1,1)*B(2,2) A(1,2)*B(2,1) A(1,2)*B(2,2) A(2,1)*B(1,1) A(2,1)*B(1,2) A(2,2)*B(1,1) A(2,2)*B(1,2) A(2,2)*B(2,1) A(2,2)*B(1,2) A(2,2)*B(2,1) A(2,2)*B(2,2) 一个Kronecker和具有以下特性: A⊕B = A⊗Ib + Ia⊗B Ia和Ib是单位矩阵与的尺寸A和B分别。A并且B是平方矩阵。请注意,A并且B可以具有不同的大小。 A⊕B = A(1,1)+B(1,1) B(1,2) A(1,2) 0 B(2,1) A(1,1)+B(2,2) 0 A(1,2) A(2,1) 0 A(2,2)+B(1,1) B(1,2) 0 A(2,1) B(2,1) A(2,2)+B(2,2) …

4
最短的代码以确保擦除磁盘
让我们编写最短的代码来执行DoD 5220.22-M擦除方法的简化变体,而只需两次写入。 接受任何编程语言,但禁止使用面向磁盘擦除的库。 这是我们如何用伪代码实现它: Set x to 0 [Start] 'Write Pass For each sector in disk write the content of x 'Verification Pass For each sector in disk { If sector does not contain the content of x then goto [Start] } 'Check whether we already did the pass with …
9 code-golf 

4
替换别名以形成短语
受C指令启发#define。 挑战 给定一个带有一些别名的短语,以及每个别名文本一个数组。输出初始短语,将每个别名替换为其相应的文本。 别名由一个尖锐字符定义,#后跟其在数组中的索引(索引可以从零或一开始)定义。别名可以在其文本内包含另一个别名,您必须解析所有别名(可能是递归的)。您可以假设别名永远不会陷入无限循环。别名不会有前导零(#02不是index 2处的别名,而是index 0后面是文本的别名2)。 您可以假设数组长度不超过20个项目。 您可以编写程序,函数或什至#define-都不错:) 您还可以使用另一种更适合您的语言的输入法。 例 phrase: "#0 & #3" array: [ "Programming #1", "Puzzles", "Code", "#2 Golf" ] output: "Programming Puzzles & Code Golf" 一步步: 0> "#0 & #3" 1> "Programming #1 & #2 Golf" 2> "Programming Puzzles & Code Golf" 由于这是 代码高尔夫球,最短答案以字节为单位! 另一个样品 phrase: …

5
在超立方体上行走
我最近阅读了图论,尤其是超立方体,并思考了在其上构造路径的有趣方法。这是我想出的。 如您所知,您可以通过将所有由1和组成的n元组0作为顶点并连接它们(只要它们的位数不同)来构造n维超立方体。如果将这些二进制数字解释为整数,则最终会得到一个顶点编号正确的图形。例如n=3: 假设您想在这个超立方体上散步,然后从顶点开始0。现在,如何确定下一个要访问的顶点?我想出的规则是获取当前a顶点的数量,翻转它mod(a,n)的位(从零开始的索引),然后转到最终的顶点。正式地,该规则可以递归定义为 a[m+1] = xor(a[m], 2^mod(a[m],n)). 通过遵循此规则,您将始终停留在立方体上并沿着边缘移动。结果路径如下所示 如您所见,您将走一圈!实际上,在所有维度和所有起点上,您的路径最终都会成环。例如n=14,a[0]=0它看起来像这样 对于狂热的漫步者来说,他计划的路线长度是至关重要的信息。因此,您的工作是编写将超多维数据集维度n作为起始顶点的函数或程序a[0]作为输入,并在结果循环中输出顶点数。 测试用例 n a[0] Output ----------------- 3 0 6 14 0 50 5 6 8 17 3 346 规则 禁止出现标准漏洞 输出/输入可以采用任何合适的格式 您可以假设a[0]是有效的顶点 计分 以字节为单位的最短代码获胜。 如果您有关于此主题的其他信息,我们将很高兴听到!

4
朴素的马尔可夫链词生成
有许多产生随机单词的方法。您可以从集合中提取随机音节,可以使用n元组,可能使用神经网络(它们不能做什么?),在辅音和元音之间交替等等。到目前为止,此挑战所基于的方法是最差的。它使用马尔可夫链生成随机词。如果您熟悉马尔可夫链,您可能会知道为什么这种方法如此糟糕。 如果您想阅读有关马尔可夫链的信息,请单击此处。 您的程序将采用加权马尔可夫链的方法,输入一个或多个单词并生成一个随机单词。既然这可能对我来说都没有道理,那么以下是使用马尔可夫链的图片并输入以下内容的一种解释abba: (所有图片的所有边缘权重都相同)您的程序将基于输入文本通过马尔可夫链输出路径。如您所见,它将有1/2的机会输出a,1/8的机会,1/ aba16的机会abba,1/32的机会ababa,等等。 以下是一些其他示例马尔可夫链: yabba dabba doo wolfram supercalifragilisticexpialidocious 如果您需要更多示例,请使用this。(我太努力了) 挑战详情: 输入可以作为字符串列表,也可以作为空格,逗号或换行符分隔的字符串 您可能会假设所有单词都将全部为小写且没有标点符号(ASCII 97-122) 您可以编写程序或函数 为了进行测试,您可能可以输入示例并查看所有输入是否与马尔可夫链对齐 这是 代码高尔夫球,因此您的程序以字节计。 让我知道是否有任何不清楚的地方,我将尝试使其更有意义。

6
最终幻想XV未覆盖!
由于我为《Final Fantasy XV Uncovered》事件大肆宣传,因此我希望您编写一个程序告诉我何时发生! 输入 您的汇整输入形式为HH:MM XDT,其中HH是范围内的数字1-12,MM是之间的数字0-60,并且XDT是时区,并且X是E(东部,UTC-4),C(中央,UTC-5),P(太平洋, UTC-7)或M(山,UTC-6)。这是假定为下午的时间。有效输入包括: 1:00 EDT (1 PM Eastern Daylight Time) 4:05 MDT (4:05 PM Mountain Daylight Time) 12:23 PDT (12:23 PM Pacific Daylight Time) 1:10 CDT (1:10 PM Central Daylight Time) 该输入可以被认为是有效的。 输出 您的程序必须执行以下操作: 将给定时间转换为PDT并输出It is XX:XX PM PDT.,其中XX:XX是转换后的时间。请注意,你不会需要处理,其中转换的时间将跨越AM / PM边界的任何情况。 打印以下内容之一: 如果转换后的时间是前下午六时PDT,打印X minutes until …
9 code-golf 

29
九模式
介绍 前几天,我在看电视时偶然发现了这种(无用的)模式。我将其命名为“ 9模式”,因为要使用的第一个数字是9。其要旨是,输入数字(假设x),然后返回: X x +(x / 3)[我们叫这个y ] y的三分之二[我们称为z ] z + 1 所以,如果我把这个模式里面的数字9为X,这是会出来: 9(9) 12(9 + 9/3)[3分上的9是3,而9 + 3是12] 8(三分之二的12倍)[12的三分之一是4,而4 * 2是8] 9(8 +1是9) 挑战 给我写一个函数(使用任何编程语言),该函数接受一个数字,并使用该模式输出一个整数数组。 像这样的伪代码: function ninePattern(int myInt) returns IntegerArray { int iterationA = myInt + (myInt / 3); int iterationB = iterationA * (2 / …

1
高尔夫英语–使用收缩
我对Stack Exchange内容的嘲笑程度不如对此。我想大家都会喜欢这个挑战,因为它受到了那里的启发。 您将编写一个代码高尔夫的函数或程序,即它必须尽可能地短。 给定文本,请返回(无论以何种方式)根据该表将要尽可能多地收缩的文本。 您不应从表中提取信息,而必须在代码中包含所有必需的信息。 所有违约规则都不应被打破,因为我们不会有任何不正当竞争。 你不需要考虑文本,如果它不大写,如表,所以你不能转换you all WOULD not have或You all would not have到y'all'dn't've。 您可以只匹配旧的撇号(U + 0027)或任何不错的撇号;随便你 ↑上方的示例输入,↓下方的相应输出 我对StackExchange内容的嘲笑远不及此。我认为,所有人都会喜欢这个挑战,因为那里的事物启发了我们。 您将编写一个具有代码功能的函数或程序,即它必须尽可能地短。 给定一个文本,请(通过任何方式)返回该文本,该文本将根据该表尽可能多地收缩。 您不必从表中获取信息,而必须在代码中包含所有必需的信息。 所有违约规则都不应被打破,因为我们不会有任何不公平的竞争。 如果文本没有像表中那样大写,则无需考虑,因此您不必转换 you all WOULD not have或You all would not have到y'all'dn't've。 您可以只匹配好撇号(U + 0027)或 任何好的;随便你

2
打我一些电话
出租车编号或OEIS A011541是对于连续n个能够表示为两个正立方整数的n个不同总和的最小数字。 您需要打印出第n个出租车编号。理论上,这应该适用于任何n。 但是,由于到目前为止只发现了6个出租车号码,所以n不会超过6 2, 1729, 87539319, 6963472309248, 48988659276962496, 24153319581254312065344。 您不可以对这些变量进行硬编码,因为理论上您的程序必须适用于任意n。

2
TinyBF至Brainf ***转换器
我们有一个Brainf ***到TinyBF转换器,但是没有相反的方法,所以这是一个。 规则: 您的解释器必须在一行上使用有效的TinyBF程序,并且必须在一行上输出相应的BrainF ***程序,并带有可选的尾随空白/换行符。不允许前导空格 输入内容可能包含也可能不包含不是四个TinyBF字符中的任何一个的字符。如果是这样,则必须在相同位置打印所有这些字符。 根据我将使用的一些晦涩标准(jk;),我将在4月1日接受答案(不是在开玩笑),我将接受不遵循以下规则作弊的最短程序) 没有0字节或1字节的解决方案,因为如果您为此目的而编写(或存在)编程语言,那么它会破坏乐趣。) 测试用例 输入1:(+++++>+++++=>=|>>+=>>+|=>|>+=>+|计算5(字节1)+ 5(字节2)= 10(字节3)) 输出1:+++++>+++++<[>>+<<-]>[>+<-] 输入2:(+++>++++Hi+++:P+=>=|>|>+>+=>>&&+|=>>|=>>=+!!>>=+|>>>+|计算3(字节1)* 8(字节2)= 24(字节3))输出2:+++>++++Hi+++:P+<[>[>+>+<<&&-]>>[<<+!!>>-]<<<-]

3
对秸秆民意测验造成最大破坏
语境 Straw Poll是一个用于创建简单/非正式民意测验的网站。带有选项列表,用户可以选择他们的选项,并计票。稻草投票有两个非常重要的功能: 投票前可以查看当前结果 通常可以选择多个选项,就像您多次投票一样,每个选项一个。 比进行Straw Polls更有趣的一件事是弄乱结果。干扰有两种主要类型: 简单破坏,您可以对所有选项进行投票 高级中断,您可以从中战略性地选择要投票的选项,以最大程度地发挥效果。 在这个挑战中,您将编写一个高级中断程序。 数学 简单地说,可以说选票的熵值越高,民意测验的干扰就越大。 这意味着一个选项拥有所有票数的民意测验根本不会受到干扰,而每个选项具有相等票数的民意测验将被最大程度地破坏(这是最终目标)。 数字列表的熵[x1, x2, ..., xn]由维基百科的以下方程式给出。P(xi)是的概率xi,即xi / total_num_of_votes。如果到目前为止,一个选项的票数为零,那么它就不会包括在总和中(以避免log(0))。对我们而言,对数可以是您选择的任意基数。 举例[3,2,1,1]来说1.277,使用底数e的熵约为。 下一步是确定哪种投票模式会导致熵的最大增加。我可以为选项的任何子集投票,例如,我的投票可以是[1,0,1,0]。如果这些是我的选票,那么最后的计数是[4,2,2,1]。重新计算熵可得出1.273,熵降低,这意味着这是一次可怕的破坏尝试。以下是一些其他选项: don't vote [3,2,1,1] -> 1.277 vote for everything [4,3,2,2] -> 1.342 vote for the 1s [3,2,2,2] -> 1.369 vote for the 2 and 1s [3,3,2,2] -> 1.366 由此可以得出结论,最优投票模式是[0,0,1,1]因为它可以最大程度地增加熵。 输入项 …
9 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.