编程拼图和代码高尔夫

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

30
井中的蜗牛
背景 有一个常见的谜语,像这样: 一只蜗牛在30英尺深的井底。蜗牛每天都能爬3英尺。晚上睡觉时,它们会向后滑动2英尺。蜗牛要离开井需要多少天? 直观的答案是 30天,因为蜗牛每天以1英尺的高度爬30天才能到达山顶, 但实际上答案是 28天,因为一旦蜗牛悬空了27英尺(27天之后),他们将在28天简单地将剩下的3英尺爬到顶部。 挑战 这个挑战笼罩了这个谜语。给定三个正整数作为输入,代表总高度,爬升高度和下降高度,返回从井中爬升所需的天数。 如果蜗牛不能爬出井,则可以返回0,返回假值或引发异常。您也可以编写仅当存在解决方案时才会停止的代码。 如果愿意,可以将跌落高度作为负整数。 测试用例 (30,3,2)-> 28 (84,17,15)-> 35 (79,15,9)-> 12 (29,17,4)-> 2 (13,18,8)-> 1 (5,5,10)-> 1 (7,7,7)-> 1 (69,3,8)->无 (81,14,14)->无 计分 这是代码高尔夫球,因此每种语言中最短的答案将获胜。

30
成为第一个(仅留下第一个Truthy)
介绍 每年,Dyalog有限公司都会举办一次学生比赛。面临的挑战是编写好的 APL代码。这是今年第八个问题的与语言无关的高尔夫版本。 我得到比赛原作者的明确许可,可以在此处发布此挑战。跟随提供的链接并与作者联系,以进行验证。 问题 给定布尔值列表,“关闭”第一个Truthy之后的所有Truthies。 没有真相吗?没问题!只需返回未修改的列表即可。 例子 [falsy,truthy,falsy,truthy,falsy,falsy,truthy] → [falsy,truthy,falsy,falsy,falsy,falsy,falsy] [] → [] [falsy,falsy,falsy,falsy] → [falsy,falsy,falsy,falsy] *您的所有真相必须相同,而您的所有虚假也必须相同。这包括输出。

30
这是功能吗?
给定一个列表(key, value)对,确定它是否代表一个函数,这意味着每个键都映射到一个一致的值。换句话说,每当两个条目具有相等的键时,它们也必须具有相等的值。重复输入即可。 例如: # Not a function: 3 maps to both 1 and 6 [(3,1), (2,5), (3,6)] # Function: It's OK that (3,5) is listed twice, and that both 6 and 4 both map to 4 [(3,5), (3,5), (6,4), (4,4)] 输入:(key, value)使用数字1到9 的成对有序序列。您可能不需要特定的排序。您也可以将键列表和值列表作为单独的输入。 输出:功能的一致值,非功能的一致值。 测试用例:前5个输入是函数,后5个不是。 [(3, 5), (3, 5), (6, …

15
攻击,衰减,持续,释放
声音合成器使用包络发生器来控制声音的某些参数(例如整体响度)如何随时间变化。在许多合成器中,信封是由四个参数定义的,如维基百科的下图所示: 起音时间(A):第一次按下该键时,信封从零开始达到最大电平所花费的时间。 衰减时间(D):包络达到指定维持水平所需的时间。 延音等级(S):在初始击打和衰减之后,只要按下琴键,该等级就保持不变。 释放时间(R):释放键时信封到达零的时间。 挑战 输入四个参数A,D,S,R并绘制包络线。 参数将是0到127之间的整数值。 的最高水平(在攻击阶段结束时达到)将被假定为127。 维持电平的水平片段将假定具有持续时间64(在实际声音中,该持续时间不是固定的,而是由按住琴键的时间决定的)。 格式和更多详细信息 输出应为光栅或矢量格式的图像。如果是栅格,则折线应在水平方向上至少占据50个像素。 图像可以以标准图像格式显示或生成为文件。可以将文件写入磁盘,也可以将其确切内容输出到STDERR或作为函数返回参数输出。 图形只需要包含定义信封的折线。每个轴的比例可以自由选择。其他元素(如轴线,数字标签或线条颜色)是可选的。 输入方式和格式像往常一样灵活。例如,您可以采用任意顺序的四个数字,也可以包含它们的数组。可以提供程序或功能。禁止出现标准漏洞。 以字节为单位的最短代码获胜。 测试用例 输入采用格式[A D S R]。请注意,每个图中的比例都是不同的(根据比例可以自由选择的规则) [15 30 70 40] [64 64 64 64] [0 10 50 80] [0 0 90 80] [5 50 0 0] [5 50 0 80] [24 32 127 48]

30
显示随机的彩色像素
我一直很喜欢充满随机彩色像素的屏幕。他们很有趣,吸引他们的程序也很有趣。 挑战 用彩色像素填充屏幕或图形窗口。 规则 你的程序必须有一个甚至采摘的机会,所有的颜色(即范围#000000到#FFFFFF),或者可以在系统上显示所有颜色。 您的程序必须继续显示随机像素,直到手动停止(它不能自行终止)。 像素可以是任意大小,只要您的输出至少具有40x40 “像素”即可。 您的程序必须以这样的速度运行,使其可以在运行三分钟后至少替换一次屏幕/窗口上的每个像素。 您的程序必须选择真正随机的颜色和点进行替换,即随机选择所有点/颜色的可能性均等。它不能看起来只是随机的。它必须使用pRNG或更好的pRNG,并且每次输出都不能相同。 您的程序在每次迭代中必须有平等的机会选择所有颜色。 您的程序一次只能替换一个像素。 您的程序无法使用Internet或文件系统(/dev/random和/dev/urandom除外)。 例 如果在随机时间停止输出,则输出可能如下所示: 赢家 每种语言中最短的答案将获胜。玩得开心!

30
贝纳迪诺确定不变的美元单词
定义 美元单词是一个单词,其中每个字母都给出一个分值(从a = 1到z = 26),并将这些字母相加,结果为100。这是CodeReview的示例,这是一个列表我在网上找到的美元词汇 输入项 输入将以一种语言的文本数据类型(允许使用数组)从z字母开始。您无需考虑任何其他输入-不会有空格,撇号或连字符。您可以采用小写,大写或组合形式。尾随换行符是允许的。 输出量 如果输入是美元单词,则输出真实值,否则输入错误值。 测试用例 真相: buzzy boycott identifies adiabatically ttttt 虚假: zzz zzzzzzz abcdefghiljjjzz tttt basic 这是代码高尔夫球,因此最短答案以字节为单位!适用标准漏洞和规则。领带去了第一张海报。
47 code-golf  string 

18
像普通人一样吃吃喝玩乐
吃喝玩乐是有5种不同口味的有色糖果。葡萄,青苹果,柠檬,橙和草莓,分别以(p)紫色,(g)reen,(y)黄色,(o)范围和(r)ed表示。我曾经吃过吃喝玩乐的食物,方法是将所有不同的颜色排序,然后按顺序吃。在办公室里看起来有些怪异之后,我现在假装像普通人一样吃它们。您的任务是模拟以下内容: 您的代码(完整的程序或功能)将收到一系列吃喝玩乐(10x10)作为输入(任何合理格式)。这个阵列将代表一堆未分类的吃喝玩乐。您的任务是从最不喜欢的颜色“食用”它们。我首选的订单是葡萄,青苹果,柠檬,橙子,草莓,但是您可以自由选择任何订单,只要订单得到一致执行即可(请在提交的内容中列出您的偏好,以便我们对此做出判断)。吃完每块糖果后,您的代码将输出(以您输入的相同格式)剩下的一堆,被吃掉的糖果用空格代替。您将重复直到只剩下您喜欢的。您可以选择吃吃喝玩乐(可以是随机的也可以是确定性的)。必须保留尾随空格。 例如,您的输出序列可能看起来像这样(为了简洁起见,使用5x5并将空格显示为.) start 1 2 3 4 5 n .org. .org. .org. .org. .or.. .or.. ..r.. prgrg .rgrg .rgrg .rgrg .rgrg .r.rg .r.r. gggpr gggpr ggg.r ggg.r ggg.r ggg.r ....r oyyor oyyor oyyor oyyor oyyor oyyor ....r .r.p. .r.p. .r.p. .r... .r... .r... .r... 这是代码高尔夫球,因此以字节为单位的最短代码获胜 TL; DR规则: 提交的内容可能是完整的程序或功能 可以通过任何合理的方法(STDIN,函数自变量等)以任何合理的格式(字符串,列表,矩阵等)进行输入。但是行之间必须有一些划定 …
47 code-golf 

30
3…2…1…崩溃了!
您的任务是编写一个完整的程序,该程序每次运行时将从10开始递减计数。 首次运行该程序时,应打印10。 下一次,它应该输出9。 下次,它应该输出8,依此类推。 0该程序应崩溃而不是打印。之后,您不必处理程序再运行任何次。 在第一次执行程序之前,可以假定用于存储的任何设备为空。 这是Python 3中的示例实现: try:f=open("a","r+");v=int(f.read()) except:f=open("a","w");v=10 1/v print(v) f.seek(0) f.write(str(v-1)) 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。

3
全天候编码
编写一个单行程序,两个或更多字符长,不包含任何行终止符且不输入任何内容。例如,您的程序可能是: MyProgram 当您的程序排列成12、3、6和9点钟的形状时,它需要输出相应的小时数。没有其他时间需要支持。 特别: 当您的程序排列成12时(🕛)的时针时 m a r g o r P y M 运行它应该输出12。 当您的程序像三点钟的指针一样排列时(🕒) m a r g o r P y MyProgram 运行它应该输出3。 当您的程序排列成6点钟(🕕)的时针时 m a r g o r P y M y P r o g r a m 运行它应该输出6。 当您的程序像9点钟(clock)的时针一样排列时 ........m ........a ........r ........g …

23
从“无限”倒数
似乎是不可能完成的任务吧?好吧,实际上并不难。如果将单词写Infinity为8位二进制ASCII代码,则会得到: 01001001 01101110 01100110 01101001 01101110 01101001 01110100 01111001 可以串联并转换为十进制值5291279215216915577。现在是我们可以使用的数字... 您将倒数的方式是: 将原始字符串输出为十进制数字(如上所示) 删除其二进制表示形式中的前导0(如果有) 切换二进制表示形式的位(1-> 0,0-> 1) 输出十进制数字 重复步骤2-4,直到达到0。 挑战: 创建一个程序或函数,该程序或函数将字符串作为输入,并输出(以任何合适的格式)执行上述步骤时所得到的数字。 测试用例: 我认为这个挑战将非常容易理解,尽管它只是一个测试用例。我将使用Inf而不是Infinity使它简短。 Inf 4812390 (10010010110111001100110) 3576217 ( 1101101001000110011001) 618086 ( 10010110111001100110) 430489 ( 1101001000110011001) 93798 ( 10110111001100110) 37273 ( 1001000110011001) 28262 ( 110111001100110) 4505 ( 1000110011001) 3686 ( 111001100110) 409 …

16
堆栈溢出
(受此问题启发) 目的 您的任务是编写一个程序或函数以将ASCII版本的Stack Overflow徽标打印到STDOUT \|/ (-) (-) (-) (-) 您的程序应采用两个输入,此处称为H和N。堆栈“容器”的高度(括号)由H确定。堆栈中的项数由N确定。如果N> H,则堆栈将“溢出”。 输入输出 H将确定容器的高度 例如: H = 1: ( ) H = 2: ( ) ( ) H = 3: ( ) ( ) ( ) H将始终至少为1 N将确定堆栈中有多少个项目。以下示例均为H = 2: N = 0 ( ) ( ) N = 1 ( …

2
仅5个符号的JSF ** k?
这不是一个挑战,而是一个问题,我认为这是一个话题,因为 与解决编程难题或特定类型的挑战有关的非挑战性问题也在主题中。 现在开始问题: 是否可以仅用5个字母编写任何JavaScript代码?JSFuck已经用6个符号执行此操作,!+[]()但我想知道是否!需要该字符。 JSFuck将强制转换为字符串(通过添加一个空数组),强制转换为数字(通过在前面写一个+)以及通过否定转换为布尔值的组合工作。例如: [] \\ Empty array +[] \\ Cast to number -> 0 !+[] \\ Negate -> true !+[]+[] \\ Cast to string -> "true" 从该字符串中,我们可以使用方括号(其中包含一个数字)提取所有字母,并且可以通过多次将true加在一起来制作任何数字。 像这样,可以找到很多字母,并将它们连接成字符串。能够创建的最重要的字符串是"constructor"因为它可用于Function从任何函数中获取,并且该对象可用于以JavaScript形式执行字符串: []["find"] \\ the function Array.prototype.find []["find"]["constructor"] \\ the Function object []["find"]["constructor"](string)() \\ same as eval(string) 如您所见,!这里有2种用法: 创建数字以从字符串中选择字母。 强制转换为布尔值以获取"true"和"false"。 这2个中的第一个也可以使用++增量器完成,而不是直接在上完成0,但可以在数组内的元素上使用: +[] …

30
让我们画一些Atari ST炸弹!
介绍 在雅达利ST是从80年代中期到90年代初的时代,搭载了摩托罗拉68000微处理器一个相当流行的个人电脑。在这台机器上,未捕获的CPU异常的操作系统的默认行为是在屏幕上显示一行炸弹,如下图所示: 来源:https ://commons.wikimedia.org/wiki/File : Row_of_bombs.png 注意:取决于操作系统版本,炸弹图形可能会略有不同。但是,让我们以此作为参考。 炸弹的数量取决于异常向量,最常见的是: ($ 008)巴士错误:2枚炸弹 ($ 00c)地址错误:3枚炸弹 ($ 010)非法指令:4枚炸弹 目标 您的目标是编写一个程序或函数,以打印或输出此类Atari ST炸弹的ASCII艺术作品。 输入项 表示要显示的炸弹数量的整数。您的代码必须支持最常见的值:2、3和4。支持越来越少的炸弹是可以的,但既不是必需的,也不受奖励。 输出量 原始炸弹由16x16像素的图块组成,此处以ASCII和二进制形式表示: ....##.......... 0000110000000000 .#.#..#......... 0101001000000000 .......#........ 0000000100000000 #..#....#....... 1001000010000000 ..#...#####..... 0010001111100000 ......#####..... 0000001111100000 ....#########... 0000111111111000 ...###########.. 0001111111111100 ...###########.. 0001111111111100 ..#############. 0011111111111110 ..########.####. 0011111111011110 ...#######.###.. 0001111111011100 ...######.####.. 0001111110111100 ....#########... 0000111111111000 .....#######.... …

30
每日#7高尔夫:一个明显随机的角色
关于系列 这是“每日随机高尔夫”系列的嘉宾条目。 首先,您可以像对待其他任何代码高尔夫挑战赛一样对待它,并回答它而不必担心系列赛。但是,在所有挑战中都有排行榜。您可以在第一篇文章中找到排行榜以及有关该系列的更多信息。 输入项 没有输入。 输出量 单个字母(不区分大小写),以及可选的尾随换行符。每个字母的选择概率必须为非零,并且所有26个概率必须是不同的。要消除所有歧义,请执行以下操作:Distinct表示不得存在两个彼此相等的概率。 计分 这是代码高尔夫。以字节为单位的最短代码获胜。 有效条目是一个完整的程序或函数,其终止的可能性为零。 字母 为避免混淆,要使用的特定字母是拉丁字母: 要么 ABCDEFGHIJKLMNOPQRSTUVWXYZ 要么 abcdefghijklmnopqrstuvwxyz 您可以选择输出大写或小写。或者,如果有帮助,您可以选择在不同的运行中输出不同的案例。给定字母的概率是在两种情况下(大写或小写)该字母出现的概率。 说明 由于从输出中根本看不出来,因此请对如何获得26种不同的概率作一个清晰的解释。 排行榜 (从这里开始) 显示代码段 var QUESTION_ID=89621,OVERRIDE_USER=20283;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 r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i; body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table …

30
一个数字是多少?
古希腊人把这些东西称为单双偶数。单个偶数的示例是14。它可以被2除以一次,并且在那一刻成为奇数(7),此后不再可以被2整除。双偶数是20。可以将其除以2两次,然后变为5。 您的任务是编写一个函数或程序,该函数或程序将整数作为输入,并输出可被整数整除2的次数,并以尽可能少的字节数输出。输入将为非零整数(在您的语言范围内,任何正值或负值)。 测试用例: 14 -> 1 20 -> 2 94208 -> 12 7 -> 0 -4 -> 2 字节数最少的答案将获胜。 提示:尝试将数字转换为基数2。请参阅提示。

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.