Questions tagged «code-golf»

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

23
用数字三角形总结
好吧,总结一下。 编写一个程序或函数,该程序或函数接受一个非空的十进制整数列表(0-9),并输出一个向下的数字“三角形”,输入列表在顶部,其中第一行之后的每个数字都是两位数字的总和以10为模 例如,输入[7, 5, 0, 9]有输出 7 5 0 9 2 5 9 7 4 1 因为2是(7 + 5) mod 10,5是(5 + 0) mod 10,9是(0 + 9) mod 10,等一路1为(7 + 4) mod 10。 如果列表中只有一项,则输出与输入匹配;否则,输出与输入匹配。例如[4]将产生的输入 4 以下是一些其他示例: [0] 0 [1, 2] 1 2 3 [8, 7] 8 7 5 [0, 0] …

1
找出最大的凸多边形的面积
给定一个整数坐标列表,找到您可以从列表中构造的最大凸多边形的面积,以便- 每个顶点都在列表中 多边形内不包含列表的任何元素。 例: (0,0)(8,0)(0,1)(3,1)(7,1)(1,2)(5,2)(9,2)(2,3)(5,3) (7,3)(3,4)(5,5)(11,5) 可视化: o o o o o o o o o o o o o o 您可以从中制作的最大凸多边形是这样的: o o o o o o o o o 面积为12。 您可以采用任何合理的格式获取坐标列表,并应输出(以适合您选择的语言的适当方式)最大凸多边形的面积,该面积四舍五入到小数点后不少于2位。 此外,您必须使用某种算法,而不是简单地强行使用所有点子集。为了实现这一点,您的程序必须在一分钟内在现代PC上解决50个顶点的列表。 以字节为单位的最短代码获胜。

2
将Brainfuck转换为MarioLANG
MarioLANG是一种二维编程语言,其源代码类似于超级Mario Bros.级别。此外,其指令集与Brainfuck的指令集非常相似。这意味着MarioLANG本质上是2D Brainfuck,指令指针像Mario一样移动。因此,当我为编程语言测验编写我的MarioLANG提交内容时,我首先将Brainfuck转换为“ Hello,World!”。程序到MarioLANG。我注意到,通过非常系统的过程可以做到这一点,因此让我们编写一个Brainfuck-to-MarioLANG编译器! 注意: MarioLANG规范并不是完全明确的,因此我假设是Ruby实现的解释。 我将通过以下Brainfuck程序来解释该过程: ++[>+++++[>+++++++>++++++++++>+++>+<<<<-]<-]>>++.>+.+++++++..+++.>+++.>. 它打印Hello!并在尾随换行符。 分别将<和转换>为(和): ++[)+++++[)+++++++)++++++++++)+++)+((((-](-]))++.)+.+++++++..+++.)+++.). 添加地板让Mario继续前进: ++[)+++++[)+++++++)++++++++++)+++)+((((-](-]))++.)+.+++++++..+++.)+++.). ======================================================================== 现在的问题是MarioLANG没有像[和这样的循环]。取而代之的是,我们必须使用电梯和指示性指令使Mario真正走成一圈。首先,我们将替换[为>并将地板更改为"。我们还替换]为[!并将地板更改为=#: ++>)+++++>)+++++++)++++++++++)+++)+((((-[!(-[!))++.)+.+++++++..+++.)+++.). =="======"===============================#===#============================ 该"和#可以形成电梯(从开始#,在结束"),所以现在我们需要的是辅助地板马里奥走回来的。开始于!和结束于<: ++>)+++++>)+++++++)++++++++++)+++)+((((-[!(-[!))++.)+.+++++++..+++.)+++.). =="======"===============================#===#============================ ! < #===============================" ! < #==========================================" 请注意,所有管线的长度必须至少与最大封闭回路的长度相同,因为解释器无法跨较短的管线连接电梯末端。因此,我们用空格填充中间线。 就是这样。我们有一个功能齐全的等效MarioLANG程序。 挑战 给定有效的Brainfuck程序,请执行上述过程以将其编译为MarioLANG程序。 您可以假设输入中仅包含命令字符,即除之外没有其他字符,.+-<>[]。 所有辅助地板必须尽可能靠近主程序地板。您可以选择尽可能少地填充中间楼层的行(最大封闭循环的宽度),也可以填充到主程序的末尾。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行参数或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。如果您不将结果打印到STDOUT,则它仍然应该是一个用换行符分隔的字符串。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 测试用例 测试用例的格式如下:第一行是Brainfuck程序(您的输入),然后有一个空行,直到下一个空行的所有内容都是MarioLANG中的预期输出。这些示例使用最少的填充空间。或者,您可以在每行之间填充空格,使其与输出的第一行的宽度相等。 >,++-.< ),++-.( ======= ,[.,] ,>.,[! ="===# ! < #===" >>[-]<<[->>+<<] ))>-[!((>-))+(([! =="==#=="=======# ! < …

4
变异穿山甲
这是一个代码挑战,您需要设计一个程序,像担子一样工作,或者修改自己以说明机器学习的担子。 背景 有一个叫被描述“穿山甲游戏的一个基本的人工智能程序在这里。基本思想是程序在首次运行时会询问: 好啦请想一想 是穿山甲吗? 然后,您可以答复: 是 在这种情况下,它说: 好。那太容易了。 否则,它会说: 哦。那你赢了-你在想什么? 您可能会说: 一只狗 它会说 请给我一个关于狗的问题,以便告诉我狗和穿山甲的区别 你可能会回复 它吃蚂蚁吗? 然后它会问: 狗的答案是什么? 你会说 没有 它会说 谢谢 下次运行时,它会问上面的问题,并将建立一个此类问题的二叉树。 挑战 足够的背景。这个挑战是编写一个自我修改的穿山甲程序。规则如下: 程序输出(如上所述)应为STDERR。最终的答复永远是“好。那太容易了”。或“谢谢”。此后,它应该输出程序的当前版本,或将问题合并到的程序的新版本STDOUT。没有答案写在不支持写入语言STDOUT和STDERR或阅读STDIN将是有效的。 换句话说,在UNIX下,您可以像这样调用程序: 例: $ mylanguage myprogram > myprogram.1 [dialog goes here] $ mylanguage myprogram1 > myprogram.2 [dialog goes here] 该程序必须完全使用指定的提示(因为缩短提示不显示任何技巧)。提示如下(不带引号,并用%s代替): 清单: "OK, please think …
28 code-golf  quine 

11
红衣主教和普通人,从1到100
这是一个简单的拉伸肌肉的方法。您的代码(一个完整的程序)必须输出从1到100的所有基数,然后从1到100的所有序数的英文拼写。每个列表中的数字均应由逗号和空格分隔,并正确地连字号。每个列表应以单个大写字母开头,并以句号结尾。这两个列表应该用换行符分隔。 为了清楚起见,您必须产生以下确切的字节流: One, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eighteen, nineteen, twenty, twenty-one, twenty-two, twenty-three, twenty-four, twenty-five, twenty-six, twenty-seven, twenty-eight, twenty-nine, thirty, thirty-one, thirty-two, thirty-three, thirty-four, thirty-five, thirty-six, thirty-seven, thirty-eight, thirty-nine, forty, forty-one, forty-two, forty-three, forty-four, forty-five, forty-six, forty-seven, forty-eight, …

3
快!逃离黑洞!
今年是87,539,319年,如今孤独的太空行走已司空见惯,许多人独自进入太空,背上只有喷气背包推动着他们前进,并随身携带个人计算机和键盘为自己的路线编程。 你就是这样一个人。您正在一次可爱而宁静的太空漫步中,突然之间,您被黑洞的引力所迷惑! 当您朝这个黑洞急速下降时,向内旋转的速度越来越快,您意识到生存的唯一机会就是广播遇险消息,并希望附近的一艘船能够救助您。 因此,您松开键盘,然后开始键入程序。 您的程序可以使用任何语言,并且必须打印HELP!到stdout(您的PC将所有stdout广播到很深的空间。) 但是,当您靠近黑洞时,您的键盘正慢慢被撕成碎片! 假设您正在使用QWERTY键盘(如下面的键盘),并且黑洞在您的左侧; 请记住,左移和右移是两个不同的键。 每次按键后,键盘最左边的一行(最左边的红线覆盖的键)被撕开并扔入黑洞! 所以,你的第一个按键可以是键盘上的任意键,但从那时起没有的最左边 Tab,Caps,Shift,Ctrl或`可使用按键,在所有。(仍可以使用r-shift和r-ctrl) 下一个按键之后,键1,Q,A,Z和Alt被抛入深渊,并且可以不被随后使用。在这之后,你输了Space,X,S,W,2等等。 显然,您希望尽快完成程序,以增加救援时间。因此,这是代码高尔夫球,并且按键操作中最短的程序胜出! 每个答案都应提供按键列表,因此,如果我的答案是此程序(使用squardibblyack语言) !HELP\. 密钥列表可能如下所示: Shift!HELP 释放移位 \. 长度:8 我担心这个挑战可能太难了,但是我很想看看提交的答案!

19
星期一迷你高尔夫1:逆斐波那契解算器
星期一迷你高尔夫:每周一发布(希望!)一系列简短的代码高尔夫挑战赛。 甲斐波那契样序列使用相同的方法,获得著名斐波纳契数列 ; 也就是说,每个数字F(n)通过将序列中的前两个数字相加(F(n)= F(n-1)+ F(n-2))或减去后两个数字(F (n)= F(n + 2)-F(n + 1))。主要区别在于这些序列可以以任意两个数字开头。这些序列的零索引是有争议的,但是现在,我们将使用以下规则: 类斐波那契数列中的第0个数字是小于前一个数字的最后一个数字。 例如,斐波那契序列可以写为1, 0, 1, 1, 2, 3, 5...,因此序列中的第0个数字是lone 0。 挑战 挑战的目标是编写一个采用三个整数的程序或函数,并且采用任何格式: A和B,这是两个用来开始生成序列的数字。 N,要输出的结果序列的长度。 并从0开始输出序列的前N个数字。 细节 A,B和N可以采用任何顺序和格式,只要它们在视觉上是分开的即可。如果您使用其他订单/格式,请指定它是什么。 您可以假设A,B和N始终为正整数。 您可以假定N不大于100,并且所得序列将不包含x >= 2^31。 如果A大于B,则B是序列中的第0个数字。 输出必须用空格,逗号和/或换行符分隔。 允许使用尾部空格或换行符,但不能使用尾部逗号。 测试用例 范例1: 8 13 10 从8 13开始往后追溯,直到找到一个比前一个更大的数字,我们得到13 8 5 3 2 1 1 0 1。因此,0该序列中的第0个数字。从此开始,我们打印出0了下9个成员: …

20
通过循环三进制数字来混淆文本
挑战的目标是编写最短的函数/程序以获取输入文本,使用以下方法对其进行加密,然后返回结果。 作为示例,我将使用字符串hello world。 首先,获取输入文本。 hello world 其次,将字符串转换为三进制(以3为底)。使用此键: a = 000 b = 001 c = 002 d = 010 e = 011 f = 012 g = 020 ... w = 211 x = 212 y = 220 z = 221 [space] = 222 使用此键,hello world将变为021011102102112222211112122102010,如下所示。 h e l l …

10
视觉长乘法
有一种很好的方法可以对两个整数执行长乘法,而无需做任何事情,只能计数,偶尔可以在互联网上共享。您将每个数字的数字写成一束斜线,两个数字成90度角。然后,您可以简单地计算出现的单独列中的交点。图表可能会澄清这一点。这是一个计算示例21 * 32: 如果您用Google搜索“视觉/图形长乘”,则会发现更多示例。 在这个挑战中,您将使用ASCII艺术生成这些图。对于同一示例,输出将如下所示: \ / X / \ / X / \ X / X X X / \ / / X X X / / X \ / X / \ X / \ X X / X \ / \ 从一些示例(参见下文)中找出这些构造规则可能是最容易的,但是这里有一些细节: 相交的段X,线的非交叉段/或\。 最外面的交点之后应该恰好有一个线段。 属于不同数字的交点之间应该恰好有一个线段。如果有零位数字,将导致连续/或\分段。 您必须支持任何正输入(至少达到一些合理的限制,如2 16或2 …

20
不使用大写字母打印大写字母
哇,哇,哇...停止键入程序。不,我不是说“印刷品” ABC...。我说的是美国的首都。 具体而言,打印以下列表中给出的所有城市/州组合 以任何顺序 与您选择的定界符(例如,Baton Rouge`LA_Indianapolis`IN_...可以接受的分隔符)一样,只要毫不歧义,哪些词是城市,哪些是州,哪些是不同的条目 不使用ABCDEFGHIJKLMNOPQRSTUVWXYZ任何源代码 输出应为STDOUT或等效输出。 编辑-糟糕! <edit> 虽然打字从内存中的列表(感谢狂欢三宝,如下文所述),我显然忽略了华盛顿,这是不是一个国家资本,但就是在这首歌,有时也包括在“资金列表”(像下面的Mathematica 答案)。我原本打算将该城市列入此列表,但由于某种原因错过了它。作为结果,答案不具有城市不会受到惩罚,而且答案也有城市不会受到惩罚,无论是。本质上,是否Washington, DC包含在输出中取决于您。抱歉,伙计们! </edit> Baton Rouge, LA Indianapolis, IN Columbus, OH Montgomery, AL Helena, MT Denver, CO Boise, ID Austin, TX Boston, MA Albany, NY Tallahassee, FL Santa Fe, NM Nashville, TN Trenton, NJ Jefferson, MO Richmond, VA Pierre, SD …

30
字长的水平图
输入值 由任意数量的空格分隔的单词列表。 输出量 水平ASCII艺术图,其中第n行由*与第n个单词一样多的星号()组成。 用法示例 该>信号的用户输入,你不应该测试程序时输入它。 > This is an example histogram of word length **** ** ** ******* ********* ** **** ****** > a aa aaa aaaa aaaaa * ** *** **** ***** > double space example ****** ***** ******* 参考实施 如果对规格有疑问,则在所有输入下,程序的输出应与以下程序的输出完全匹配。 puts gets.chomp.split.map{|word| '*' * word.length}.join("\n")

8
ASCII拓扑pt 1:我可以指望您吗?
我有一个严重的问题。我有一些文本文件,其中保存着我非常重要的数字-所有重要的数字!还有二三。 这些数字是如此重要,以至于我无法将它们委托给那些新奇的十进制或二进制数字系统。我将每个数字保持一元编码,如下所示: +--+ | | +---+ +----+ | | | | | +---+ +-------+ ~/two.txt 简单可靠:数字2的两个ASCII循环。不幸的是,随着时间的流逝,这些事情会变得一团糟,现在我很难确定每个文件中有多少个循环。以下是我手工制作的一些示例: 一: +---+ | | +--+ | | | +--+ | | | | | | | +--+ +--+ | | +---------+ 三: +---------+ | +-----+ | | | +-+ | | | | | …

23
跳伞运动
这是我的第一个挑战,因此我将其保持简单。 如果您曾经telnet towel.blinkenlights.nl在命令行上键入并按下Enter键,那么您将体验到升迁的乐趣。简单来说,Asciimation是一种用ascii艺术制作动画。今天,我们将做一个非常基本的练习,让一个人做起重千斤顶。 我们将把两张ascii图片放在一起。1号: _o_ 0 / \ 2号: \o/ _0_ <blank line> 请注意,第二个在结尾处有一个空白行。 因此,您的程序应执行以下步骤: 清除控制台屏幕。 打印正确的ascii艺术图像。 设置一个标志或其他东西,以便您下次知道其他图像。 等待片刻(大约一秒钟)。 继续1。 规则 您的程序必须是(理论上)无限循环。 必须先创建您使用的编程语言,然后才能发布此挑战。 这是代码高尔夫球,因此以字节为单位的最短代码获胜。 有标准漏洞。 请享用!

19
将微秒的格式设置为小时:分钟:秒等
以下内容受到今天Stack Overflow提出的一个问题的启发。 给定一个微秒数,0 <= n <= 86400000000(例如12345678900),输出格式化的字符串hh:mm:ss:000:000,例如03:25:45:678:900。 0 -> '00:00:00:000:000' 12345678900 -> '03:25:45:678:900' 86400000000 -> '24:00:00:000:000' 我有209个字节的Python解决方案,但是它可以降低一点吗?
28 code-golf  date 

30
有关人物
背景 有关人物是CBS上的犯罪剧,也是我最近最喜欢的电视节目。 该节目讲述的是一个名叫亿万富翁程序员的哈罗德·芬奇(Harold Finch)和他的搭档约翰·里斯(John Reese)的故事,他是特种部队的资深人士和前中央情报局特工。该程序员创建了一个有感觉的AI,称为“机器”,可以在暴力犯罪发生之前对其进行预测。它通过监视和分析全球所有的监视摄像机和电子通讯,随时跟踪地球上的每个人。 哈罗德(Harold)为美国政府制造了“机器”(The Machine),以事前侦查恐怖活动。它根据预测的犯罪是否与国家安全相关将其划分为列表。相关案件由政府处理,而“无关”列表被编程为每天删除。 哈罗德本人为自己准备了一个后门,希望自己能处理“无关紧要”的清单。此后门会导致机器致电距Harold最近的公用电话(大约每天一次)并向他读取一个社会安全号码。该SSN属于因预谋犯罪而处于生命危险中的人,或正在计划此类犯罪的人。 挑战 编写一个无需输入即可输出30个随机电话号码和SSN的程序(请参见下文)。 输出量 每两天将打印两行文本。 Crime predicted: 555-55-5555 Calling: 1-555-555-5555 跟换行符 此过程应重复一个“月”(30个“天”)。 电话号码 每个电话号码必须包含以下元素: 必须具有美国国家/地区代码(第一位数字)。 必须具有随机区号(第一个三位数字)。 电话号码本身的前三位数字应为555,其后为4位随机数。 这是一个带注释的示例: 1-814-555-3857 | | | | | | | | | | | +----------> random four digits | | | | | +--------------> the set 555 …
28 code-golf  random 

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.