Questions tagged «code-golf»

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

21
空缺还是没有空缺?
我们都看到过汽车旅馆的迹象,告诉我们是否有空房: 通常,这些将永久点亮VACANCY的字母,并且如果汽车旅馆中没有任何房间,则点亮NO的字母。 挑战 美国的汽车旅馆平均有200间客房。 您将编写一个程序/函数,它以整数T(对于已占用房间)为唯一输入。 然后,您的程序将显示单词NO VACANCY。的字母VACANCY将以红色打印。 如果Ť ≥200的字母NO也将在红色打印。 例如,假设a.out您的程序是“ input” =命令行参数:(我打错了字,系统忽略了大小写。) 规则 您的程序/函数必须显示(或返回 lambda )确切的字符串NO VACANCY(包括大小写)。 您的程序/功能只能将文本前景色设置为红色,而不是背景。 如果愿意,可以使用ANSI转义码来打印红色- \x1b[31m可以使用。 完成后,您的程序/功能可能不会更改外壳的文本颜色。 您的程序/功能必须正常终止。 您的程序/功能必须仅打印到标准输出。 您的程序/功能必须使用外壳程序/终端/ IDE的默认背景色。(如果选择具有图形输出,则可以选择任意颜色,红色除外)。 如果牛逼 ≤200,中的字母NO必须在你的shell /终端/ IDE的默认前景色打印。(如果选择具有图形输出,则可以再次选择所需的任何颜色) 如果出于某种原因,外壳/终端/ IDE的默认前景/背景颜色是红色,则必须使用黑色背景和默认白色前景进行打印。 如果选择使用图形输出,则只有在程序中指定了红色时,才可以使用红色(例如,背景色或默认文本颜色可能不是红色)。 获胜者,冠军 与代码高尔夫球一样,最短的程序将胜出!布朗尼点用于图形输出。 我将在一周内接受最短的答案。打高尔夫球快乐! 排行榜 var QUESTION_ID=123146,OVERRIDE_USER=61563;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return …
17 code-golf  color 


12
没有免费的午餐
...或者在那里? 您的挑战是解析我的午餐账单,其中包含基本价格,小费,折扣,优惠券和其他费用,并找出我的午餐是否在$ 0或以下。如果这是输入: 12.34 15 tip 25 discount 1.5 extra 2 coupon 那么输出可能是false。运作方式如下: 12.34 是底价。 15 tip表示将总数增加15%。 25 discount表示从总数中减去25%。 1.5 extra表示将总数加1.5。 2 coupon表示从总数中减去2。 可能有任何数量的小费,折扣,优惠券和其他功能,但始终会有一个基本价格。 然后我们(12.34 * 1.15) * 0.75 + 1.5 - 2为10.14 做输出。10.14大于0,因此我们输出false。我的午餐不是免费的。 规则 数 tip手段添加数%至总。 数字 discount表示从总数中减去数字百分比 数字 extra表示将数字加到总数中 数字 coupon表示从总数中减去数字 另一个例子: 10 20 tip 20 discount 2 …

1
二维编程
这个世界碰巧只有一个时间维度,这是一个有趣的意外,但不一定非要如此。很难想象具有2个或更多时间维度的世界,在这些世界中,您可以构建计算机并在其上运行软件,就像在这个世界中一样。 系统 这是一个用于在两个时间维度上运行Brainf * ck程序的系统: 两个时间维度是x和y。每个Brainf * ck程序都包含一个x半程序和一个ay半程序,例如,一个程序可以是 x: +>+ y: [-] 两个半程序都有各自的程序指针,但是它们共享一个磁带指针(即,它们都在磁带的同一单元上操作)。 时间是二维的,因此它由时刻网格组成: 沿x维度移动,x半程序执行一个时间步。沿y维移动,y半程序执行一个时间步。 因此,例如,假设磁带以[0] 0 0([]表示磁带指针)开始,而x / y程序为+和->-。该程序的执行如下所示: x y tape x-action y-action 0 0 [ 0] 0 0 + at 0 - at 0 1 0 [ 1] 0 0 (done) - at 0 0 1 [-1] …

20
消除空白行上的空白
嗯,这是我对Stack的另一自私使用。 作为Chromebook的所有者,我经常使用Cloud9使用的编辑器Ace IDE。它有很多用于处理多余空白的工具,但值得注意的是缺少一种:清除空白行。 今天的任务是,从一个地方输入,我可以将其复制粘贴到[ ;)],输出相同的东西,将所有空格和制表符保存在空白行上。 我将给出一些示例,其中#s表示要删除的空白字符。 输入1: if (this.Color !== 'blue') { ## this.Color = 'blue'; } 输出: if (this.Color !== 'blue') { [empty line] this.Color = 'blue'; } 输入2: function outputSomething(times) { for (var iter = 0; iter < times; iter++) { console.log('"# # " represents a tabulator'); // …

9
缩短绝对路径
有时,使用当前工作目录作为参考,可以缩短长的绝对路径,例如linux工具的命令行参数。 $ pwd /home/heh $ cat /home/heh/mydir/myfile my stuff $ cat mydir/myfile my stuff 在这个挑战中,您应该使一个函数或程序接收两个参数: 绝对路径,使用linux格式(以开头/) 当前目录,使用相同格式 输出是以下两者中的较短者: 输入1不变 与绝对路径引用相同文件/目录的相对路径 重点: 如果您的操作系统与linux兼容,则可以使用系统的当前目录而不是将其接收为输入 您可以假定输入仅包含字母数字字符(和路径分隔符) 您可以假设输入的绝对路径/末尾没有路径分隔符 您可以假设输入的当前目录/在末尾有路径分隔符 您不能假定绝对路径引用了一个现有文件,或者该文件的任何部分都是可访问的目录;但是,可以假定当前目录有效 您可以假设在任何一条路径附近都没有符号链接-因为我不想使用任何特殊的方式来处理符号链接 无需支持其中两个输入均为根目录的情况 “当前目录”应输出为.(空字符串无效) 测试用例(输入1,输入2,输出): /home/user/mydir/myfile /home/user mydir/myfile /var/users/admin/secret/passwd /var/users/joe/hack ../../admin/secret/passwd /home/user/myfile /tmp/someplace /home/user/myfile /dir1/dir2 /dir1/dir2/dir3/dir4 ../.. /dir1/dir2 /dir1/dir2 .

1
生活:是创造还是进化?
给定方形的“生命游戏”网格的状态,确定它是否可以从任何先前的状态演变而来,或者只能被创建。即,确定该状态是否为“伊甸园”状态。 输入项 状态的正方形网格,其中1表示“活动”,0表示“死”。如果愿意,可以选择两个可区别的符号,而不是0和1。 网格的边长将不为零,但可以为任何自然数1 <= N <= 20。 输入网格外部的任何或所有单元格可能在此世代中仍处于活动状态,而它们中的任何或全部可能在上一代中已处于活动状态。要考虑的宇宙是无限的,因此没有边界条件。输入的边不是Universe的边。具体来说,网格不环绕。 输入可以采用行分隔字符串或单个字符串的形式。如果需要,可以将边长或网格面积作为附加输入(在网格之前或之后)。 可接受的输入格式: 010,101,010 010101010 010 101 010 3 010101010 输出量 如果没有可能导致下一代输入状态的先前状态(包括大于输入网格的状态),则为“已创建”。 如果存在至少一个可能导致下一代输入状态的先前状态(包括大于输入网格的状态),则为“已演化”。 如果愿意,可以使用任何两个可区分的字符串或数字来代替“ Created”和“ Evolved”。 注意,可能的先前状态不必与输入区分开。如果一个国家拥有自己作为下一代,那么它就应该被认为是进化的。 测试用例 010 101 010 Evolved 0101110100 0010101001 1011100110 0101111101 1001001111 1111001001 1011111010 0110011101 1001010100 0010111010 Created 创建的测试用例取自Achim Flammenkamp的《生命游戏页面》。 注意 感谢trichoplax编写了这个挑战,我从这里接受了它

6
给我披萨
因为是星期六(UTC)并且我很饿,所以我想吃一片披萨。我会给您点菜,我想要一个美味的热ascii艺术披萨。迎接挑战? 直通车 无论您的驱动力是什么,无论是STDIN,函数参数,命令行参数,我都将下订单,但是我不会为您放置变量。(JS函数表达式必须分配给变量。) 命令 我的订单分为两部分。第一个将是从3到的正非零整数6。这是我的比萨饼的大小。例如,6没有浇头的比萨饼看起来像: /=====\ / \ | | | | \ / \=====/ 尺寸5: /====\ / \ | | \ / \====/ 尺寸4: /===\ | | | | \===/ 尺寸 3 /==\ | | \==/ 浇头 我的浇头是一串大写字母。以下是可能的值: P-意大利辣香肠 S-香肠 N-piNeapple J-墨西哥胡椒 B-香蕉辣椒 C-培根 您必须将它们放在披萨的某个地方。如果我订购大小为4和PSPCJ,则这是有效的输出: /===\ |PSPCJ| | | …

15
查找翻译表
给定两个字符串,找到两者之间的转换表(替换密码),如果无法转换,则输出false。必须最小化并从左到右创建答案。单词之间要翻译的第一个字符必须是翻译表中的第一个字符。除此之外,任何未翻译的字母(与原始位置相同)都不应出现在翻译表中。 通过示例可能最容易定义: 有效案例 "bat", "sap" => ["bt","sp"] 请注意顺序,["tb","ps"]此挑战的输出无效。 "sense", "12n12" => ["se","12"] 请注意,n由于它是一对一的关系,因此不翻译。 "rabid", "snail" => ["rabd","snal"] 请注意,i由于它是一对一的关系,因此不翻译。 "ass", "all" => ["s","l"] 不包括A,它保持不变,由于模式匹配而s可以映射到l。 "3121212", "ABLBLBL" => ["312","ABL"] 完美匹配图案。 虚假案件 "banana", "angular" => false (长度不一样,不可能)。 "animal", "snails" => false (每个字符只能在翻译的每一侧一次使用)。 "can","cnn" => false (n在翻译中隐式使用,因此,使用n-> a定义翻译表将无效) 因此,这[aimal,sails]是一个无效的答案,这很虚假。 "a1", "22" => false 参见“腔室”,列为虚假的。在这种情况下,是因为a和1都不能同时映射到2。(每个字符只能在翻译的每一侧一次使用)。 …

3
最大的吃喝玩乐
您已经收到了一袋吃喝玩乐的东西。大家都知道,为了最欣赏不同的口味,您需要在不同的口味之间旋转。 基本: 一次只能吃一吃喝玩乐 吃吃喝玩乐的顺序必须定期。 每个时期最多只能包含一种风味。 你的包里只有这么多吃喝玩乐。吃的吃喝玩乐的味道不能超过包中的味道。 您想吃尽可能多的吃喝玩乐(可能并不总是可能的) 例子: 假设您以3个红色,2个蓝色和3个绿色彩虹糖开始: R B G R B G R G Invalid: The last R must be followed by a B, not a G R B G R B G R Valid, but sub-optimal R R R Valid, but sub-optimal R G B R …
17 code-golf 

8
有多少个孔?
挑战 给定形状的图形输入,确定其中有多少个孔。 不重复 该问题被标记为Count Islands可能重复。我认为这一挑战与Count Island挑战不同,因为在这一挑战中,您必须弄清楚如何消除接触边界的障碍物。 输入项 输入将以2D输入形式给出,即多行字符串,字符串数组或字符数组数组。这代表形状。保证形状只有一件,通过边缘连接。请指定您希望如何输入。 输出量 输出是一个单个整数,说明形状中有多少个孔。尾随换行符是允许的,但不允许其他前导或尾随空格。换句话说,输出必须匹配正则表达式^\d+\n?$。 什么是孔? 这些是单孔: #### # # # # #### #### # # # ## ### ##### # # # # # ##### 这些不是漏洞: ######## ######## # #### # #### # ###### # ######## ### # ### ########## # # ######## # …

13
算术表的整数位
挑战: 根据输入,输出以下六个算术表之一的“整数”: -加法(+); -减法(-); -乘法(*); -除(/); -取幂(^); -模运算(%)。 规则: 我该怎么界定为“整数位”:算术操作数正好是以下情况之一的每一个结果:0,1,2,3,4,5,6,7,8,9。这意味着您将排除每个等于10或更高的结果,每个等于-1或更低的结果以及每个非整数的结果。 我们如何计算算术结果:首先使用高位数字,然后使用左数位的操作数。你被允许这样做,反之亦然(即y/x代替x/y),只要你对输出的所有六个一致!(因此,不允许您使用y-x且x/y答案相同。)† 对于除以0的测试用例,我们将不会输出任何内容(用于除法和模运算表) 我们不会为edge-case输出任何内容0^0。 输出: 因此,输出以下内容(表格式有些灵活(请参见下文):因此,这些行是可选的,主要是为了提高测试用例的可读性而添加的): 加成: + | 0 1 2 3 4 5 6 7 8 9 ----------------------- 0 | 0 1 2 3 4 5 6 7 8 9 1 | 1 2 3 4 5 6 7 …

10
更改,循环和显示标志的填充最少
输入: 两个整数:一个负数,一个正数。 输出: 在第一行上,输出从最低到最高。在第二行中,我们删除了最高和最低数字,并对所有单个数字进行了符号更改。在第三行中,我们再次删除了最高和最低数字,并再次对所有单个数字进行了符号更改。等等。(下面的示例应该使挑战更加清楚。) 重要提示:此外,我们添加空格以使一列中的数字全部对齐(在右侧)。 最小对齐是此挑战的主要部分,这意味着您不能仅使每个数字都具有相同的宽度。列的宽度基于该特定列的最大数字宽度(并且带符号更改的顺序是使数字每列的宽度有所不同)。 例如: Input: -3,6 Output: -3,-2,-1, 0, 1, 2, 3, 4,5,6 // sequence from lowest to highest 2, 1, 0,-1,-2,-3,-4,-5 // -3 and 6 removed; then all signs changed -1, 0, 1, 2, 3, 4 // 2 and -5 removed; then all signs changed again …

11
递归查找素数
递归素数是素数的序列,使得 p(1) = 2 p(n) = the p(n-1)th prime 这是一个示例,说明如何计算第四个递归素数。 p(4) = the p(3)th prime p(3) = the p(2)th prime p(2) = the p(1)th prime p(1) = 2 p(2) = the 2nd prime p(2) = 3 p(3) = the 3rd prime p(3) = 5 p(4) = the 5th prime p(4) …

8
可视化欧几里得算法
欧几里得算法是用于计算两个正整数的最大公约数(GCD)的广为人知的算法。 算法 为解决这一挑战,算法描述如下: 将两个输入显示为某个字符的相邻行, 例如的输入3,4可以由相邻行000和0000 将length(short_line)较长行中的第一个字符转换为另一个字符,- 现在说看起来像000和---0 删除length(short_line)较长行中的第一个字符。 现在000,0 重复步骤2和3,直到两个具有相等的长度,使用较短和较长的线在每次迭代之后,例如 000,0 -00,0 00,0 -0,0 0,0 您可以选择是在此处停止还是继续迭代,然后将其中一行转换为空行。 这些步骤中的每个步骤之间应间隔0.3秒至1.5秒。 挑战 编写一个程序,给定两个自然数作为输入,它会创建一个输出,该输出看起来与上述算法的输出完全相同。您可以使用其他非空白打印的ASCII字符比0和-,但要一致,仅使用两个字符。如果输出(包括时序)与上述算法产生的输出完全相同,您也可以使用其他算法。 例子 这是input的示例24,35,它们是互质数,因此它们的GCD为1。 这是带有16,42GCD 2的input的示例。 规则 这是一个代码高尔夫球,因此最短字节获胜 适用标准漏洞 您可以假设输入为正十进制整数 除非您使用sed,Retina,///等,否则您可以使用一元 澄清说明 代表数字的线需要保持其原始顺序,即,在所有后续帧中,第一个显示的“框架”的第一和第二行分别必须是第一和第二行。 算法结束后,不应再出现其他可见实体。但是,这也意味着如果确保最后一个“帧”显示的时间至少与消隐之前所有其他帧的显示时间相同,则可以将行消隐。

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.