编程拼图和代码高尔夫

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

9
旋转反对角线
背景 在大多数合理的编程语言中,旋转2D数组的行或列非常容易。在此挑战中,您的任务是改为旋转对角线。回想一下,二维数组的反对角线是在东北方向↗上获取的一维切片。 输入值 非空矩形2D数组,以任何合理格式显示。请注意,该数组可能不是正方形。 输出量 相同的阵列,但每个反对角线向右旋转了一步。 例 考虑3x4输入数组 0 1 2 3 4 5 6 7 8 9 0 1 该数组的反对角线是 0 4 1 8 5 2 9 6 3 0 7 1 它们的旋转版本是 0 1 4 2 8 5 3 9 6 7 0 1 因此正确的输出是 0 4 5 …

4
反转扫雷板
扫雷(Minesweeper)是一种流行的计算机游戏,您可能已经浪费了时间在游戏中,尝试根据每个非地雷单元具有多少个相邻地雷的提示来显示矩形网格中的地雷单元。如果您还没有玩过,请在这里进行。 关于扫雷网格(又称木板)的一个漂亮的数学事实是: 一个董事会及其补编具有相同的地雷总数。(证明) 这就是说,如果您拥有一个完全显示的扫雷网格,则该网格上所有数字的总和,即“ 地雷总数”,将等于该网格补码的地雷总数,即每个地雷都已被替换的网格一个非地雷,每个非地雷都被一个地雷取代。 例如,对于扫雷网格 **1.. 34321 *2**1 矿山总数为1 + 3 + 4 + 3 + 2 +1 + 2 +1 = 17。 网格的补充是 24*** ***** 3*44* 总共有我的2 + 4 + 3 + 4 + 4 = 17。 编写一个程序,以文本形式获取任意的扫雷网格,该网格*表示一个地雷,并1通过8表示与非地雷单元相邻的地雷数。您可以选择使用.或0或 (空格)来表示没有地雷邻居的像元。您可以假设输入网格将被正确标记,即每个非地雷单元将准确地表示正交或对角线紧邻其的地雷总数。 你的程序需要打印电网的补相同的格式(使用相同的.,0或 如您在输入拼音)。 以字节为单位的最短代码获胜。 除了编写程序,您还可以编写一个函数,该函数将输入网格作为字符串并打印或返回补码网格。 输入或输出中的尾随换行符很好,但除了构成网格的字符外,不应有其他字符。 您可以假设1×1的网格将是最小的输入。 测试用例 由于补数的补数是原始网格,因此可以交换所有输入和输出。网格也可以旋转以用于进一步的测试案例。 输入: …

4
通过键盘输入您的名字
难题: 考虑一个带有d-pad的控制台/手持游戏,您需要在其中输入各种名称。这种现象出现在许多较旧的游戏中,然后在控制台中普及使用QWERTY(例如,我相信Wii使用QWERTY键盘布局进行输入)。通常,屏幕键盘看起来具有以下效果: 默认: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ + ^ = 切换大小写后: 0 1 2 3 4 5 …
32 code-golf 

3
FizzBu​​zz反向求解器
简介:给定通用FizzBu​​zz程序的输出,返回用于该程序的因子和单词的列表。 挑战说明 想象一下一个通用的FizzBu​​zz程序,该程序将要使用的因素和单词以及起始数字的列表作为输入。例如,如果该程序的输入是 3 2,Ninja 5,Bear 7,Monkey 该计划将从打印出来的数字3来100,免去数整除2用Ninja,数字整除5与Bear和数字整除7用Monkey。对于那些整除则超过这些术语中的一个号码,该程序将串联的话,印刷的东西,如NinjaBear或BearMonkey或NinjaMonkey或NinjaBearMonkey。这是该输入的输出: 3 Ninja Bear Ninja Monkey Ninja 9 NinjaBear 11 Ninja 13 NinjaMonkey Bear Ninja 17 Ninja 19 NinjaBear Monkey Ninja 23 Ninja Bear Ninja 27 NinjaMonkey 29 NinjaBear 31 Ninja 33 Ninja BearMonkey Ninja 37 Ninja 39 NinjaBear 41 NinjaMonkey 43 Ninja …
32 code-golf 

20
你圣诞节收到了多少礼物?
是的,多少,不是多少... 众所周知,大礼物比小礼物好得多。因此,礼物的价值应始终以总体积来衡量,而不是礼物的数量,重量甚至是组合价格。 由于不愿比较一个人得到的礼物数量,因此您不希望长篇幅的脚本在圣诞晚会上容易被他人看到和阅读。因此,您需要使脚本中的字节数最少。 您的任务很简单:创建一个程序,以任何合适的格式将尺寸列表作为输入,并输出礼物的总体积。每个礼物的尺寸可以是三个数字的集合,也可以是一个数字。如果输入为三个数字(L, W, H),则当前为长方体L x W x H。如果是单个数字(R),则表示当前半径为球形R。 规则: 它可以是完整程序或功能 输入可以是任何方便的格式 如果需要,一个球体可以用一个数字后跟两个零表示 长方体将始终具有所有非零尺寸。 输出应为单个十进制数 只要显而易见的答案是什么,就可以接受其他输出 输出必须在小数点后至少有两位数字 如果数字大于1000,则输出可以采用标准格式/科学计数法。 如果您的语言没有Pi常数,则答案应准确到9999.99。 例子: ((1,4,3),(2,2,2),(3),(4,4,4)) 197.0973 // (1*4*3 + 2*2*2 + 4/3*pi*3^3 + 4*4*4) (5) 523.5988 (5,0,0) 523.5988 排行榜 这篇文章底部的Stack Snippet会根据答案a)生成目录,a)作为每种语言最短解决方案的列表,b)作为整体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以将旧分数保留在标题中,方法是将它们打掉。例如: ## Ruby, <s>104</s> <s>101</s> 96 …

11
您可以制作多少个三果馅饼?
三果馅饼由三种不同的水果制成。从您拥有的5种水果中最多可以制成三种水果派? 例如, 1 apple 1 banana 4 mangoes 2 nectarines 0 peaches 您可以制作2个馅饼: apple, mango, nectarine banana, mango, nectarine 输入:五个非负整数或它们的列表。 输出:可以从这些数量的水果中制作出最多三个水果馅饼。最少的字节数获胜。 测试用例: 1 1 4 2 0 2 2 2 2 2 2 3 0 6 0 6 0 0 12 5 3 2 1 5 1 14 14 3 …
32 code-golf 

9
在跷跷板上平衡一组重量
平衡技术 总览 给定一个表示一组权重的3个一位数字正整数的输入,输出一个跷跷板的ASCII表示形式,并在其上放置权重,以便考虑到杠杆效应,使该跷跷板围绕中心枢轴保持平衡。 每个数字的权重等于其值。每个数字的扭矩是重量乘以其到中心的距离(以字符为单位)。对于跷跷板是平衡的,在跷跷板上左侧的权重之和扭矩必须等于那些在右边,像这样。 输入值 1至9之间的3个整数。您可以输入整数,但是很方便,例如,元组,3个逗号分隔的值等。但是,您的程序必须能够处理以任何顺序输入的数字(即,假定值将不排序)。可以输入重复的数字(例如2,3,2)。 输入将始终在数学上允许有效输出,否则输入无效。 输出量 输出应该是跷跷板的2行ASCII表示形式,并带有权重。第一行上的数字是隔开的,以便在跷跷板上保持平衡。 数字可能不会放置在刻度的正中,因为距离和扭矩都为零。到中心的有效距离范围是1到10个字符(包括1至10个字符),到枢轴的左侧或右侧。 在数字未占用的空间中,有18个下划线字符(中心下划线,每侧10个,减去数字所占的3个位置)。在最后一行是与刻度中心对齐的单个插入符号,表示支点。 例子 输入: 4,7,2 输出: ________7___42_______ ^ 7 * 2 = 4 * 2 + 2 * 3 数字可以在任一侧输出,例如,这也将是有效的: _______24___7________ ^ 2 * 3 + 4 * 2 = 7 * 2 只要平衡,数字就可以放在秤的任何位置,例如: 输入: 3,1,5 输出: _____5________1__3___ ^ 5 * …

30
我如何获得一个repdigit?
为了纪念我几个小时前第一次想到这个挑战时的代表人数: 像这样由一个数字重复组成的数字称为repdigits。Repdigits很有趣!每一个身体是,如果销售代表他们的用量是一个纯位数更幸福¹,但我是个急性子,所以你要帮我找出去一个纯位数的最快方式。 这是您的挑战: 鉴于代表的声誉正整数,输出他们需要代表最小量的增益,以获得一个纯位数。例如,在撰写本挑战时,用户Martin Ender有102,856个代表。最接近的代表数字是111,111,因此他需要获得:8255代表才能成为代表数字。 由于人们不喜欢丢失代表,因此我们将仅考虑非负变化。这意味着,例如,如果某人的成绩为12个代表,而不是损失1个代表,则解决方案是获得10个代表。这允许“ 0”为有效输出,因为拥有111个代表的任何人都已经在一个代表位。 输入和输出可以采用任何合理的格式,并且由于在任何Stack Exchange站点上不可能有少于1个代表,因此可以假定输入不小于1。 需要注意的一个角落: 如果用户的代表少于10个,则他们已经是一个代表,因此他们也需要为“ 0”。 测试IO: #Input #Ouput 8 0 100 11 113 109 87654321 1234567 42 2 20000 2222 11132 11090 存在标准漏洞,最短的解决方案以字节为单位!
32 code-golf  math  number 

3
击倒PPCG用户名
我在聊天室中进行的评论以及随后的谈话激发了我挑战这一挑战。 我是这里唯一的缩写缩写人吗?我们都在打高尔夫球。我们可以有MB和D-nob以及...O。 如果我被称为“ CH”,那么我认为其他所有人也应该有一个以缩写开头的昵称。 以下是按声誉使用的排名前100位的编程难题和代码高尔夫用户的列表: Martin Büttner Doorknob Peter Taylor Howard marinus Dennis DigitalTrauma David Carraher primo squeamish ossifrage Keith Randall Ilmari Karonen Quincunx Optimizer grc Calvin's Hobbies ugoren Mig gnibbler Sp3000 aditsu histocrat Ventero xnor mniip Geobits J B Joe Z. Gareth Jan Dvorak isaacg edc65 Victor steveverrill feersum …
32 code-golf  string 

8
箭头指向哪里?
箭头指向哪里? 在此挑战中,您的目标是跟随箭头并输出其指向的字符。 例子 输入: d S------+ b | | c +--->a 输出: a 输入: S-----+---a->c | V b 输出: b 箭头未指向,c因为它被分隔a,这意味着该路径永远不会导致箭头。 输入: a S s | | V V b c 输出: b 输入: d s<+S+--V ||| Q -++ 输出: Q 此路径从开始S,向下,向右,向上,向右,然后指向Q。请注意,路径并非直接从S到+。 输入: d s-+ +-S +--+ +-->b | | …
32 code-golf 

29
爆炸子串
介绍 让我们观察一下字符串abc。可以从中创建的子字符串为: a, ab, abc, b, bc, c 现在,我们需要将它们对齐在初始字符串下,如下所示: abc a b c ab bc abc 字符串的顺序无关紧要,因此这也是完全有效的: abc a ab abc b bc c 因此,子字符串位于初始字符串中子字符串位置的下方。因此,对于abcdef和子字符串cde,它看起来像这样: abcdef cde 任务 如上所示,任务是对齐所有长度大于0的子字符串。您可以假设字符串本身仅包含字母字符,并且至少包含1个字符。对于填充,您可以使用空格或其他一些非字母可打印的ASCII字符(32 - 127)。也许不必提,但是字符串本身将仅包含唯一字符,因此不喜欢aba,因为它a发生了两次。 测试用例 输入: abcde 可能的输出: a ab abc abcd abcde b bc bcd bcde c cd cde d de e …
32 code-golf  string 

4
代码说明格式化程序
从本质上讲,成功提交高尔夫球规则的代码到处都是疯狂的符号。为了使提交的内容易于理解,许多代码高尔夫球手选择对代码进行解释。在他们的解释中,代码行变成了垂直分解图。 例如,如果这是我的代码: 1_'[3:~2@+]` 我可以创建的许多可能的图之一如下所示: 1 _' [ ] [3: ] [ ~ ] [ 2@ ] [ +] ` 目标 在此挑战中,您将编写一个说明自动格式化工具,该工具采用一行代码并创建一个可轻松添加说明文字的图表。 为了使此挑战更为有用,用户将能够通过提供格式字符串来指定每行的内容。格式化字符串将是第二行,仅包含字母A-Za-z,与程序长度相同。字母表示在解释中应打印程序字符的顺序。 这是一个没有任何类似于括号的格式的I / O示例: 123423 AabcBC 1 2 3 2 3 4 括号 如果程序中有多个字符具有相同的优先级,则该字符集将充当单个代码块(如果它们构成一个组)或一组括号(如果它们之间包含其他字符)。一般规则很简单: 直到更高优先级的所有其他字符都已经出现在图表上方的行上,字符才会出现在图表的一行中。 优先级相同的字符始终打印在同一行上。如果某个字符出现在一行上,则所有其他优先级相同的字符都出现在该行上。 一组具有相同优先级的字符将继续出现在每一行上,直到其所包围的所有其他字符都至少出现过一次为止。这允许“类似托架”的构造。如果bceab是优先级,则b字符将出现在第二行(它们是第二高的优先级),并将继续出现,直到所有cea字符都出现为止。如果优先级字符串为abcadeafga,则所有优先级字符串bcdefg都视为包含在其中,则所有4 as将继续出现,直到出现为止g。 更多格式要求 输出的所有行应具有相同的长度(输入行的长度),并在必要时用空格填充。输入程序行可能包含空格,尽管这些空格也将被赋予优先级字母。输出/输入上的尾随换行符是可选的。 计分 这是代码高尔夫,最少的字节数获胜。 例子 这是一段带有复杂格式的代码的注释示例。 1_'[3:~2@+]` abbcddeffgch 1 #highest priority …

3
自相交多边形的面积
考虑一个潜在的自相交多边形,由2D空间中的一系列顶点定义。例如 {{0, 0}, {5, 0}, {5, 4}, {1, 4}, {1, 2}, {3, 2}, {3, 3}, {2, 3}, {2, 1}, {4, 1}, {4, 5}, {0, 5}} 有几种方法可以定义这种多边形的面积,但是最有趣的一种是奇偶规则。选取平面中的任何点,从该点到无穷远(沿任何方向)画一条线。如果该线与多边形交叉的次数是奇数次,则该点是该多边形区域的一部分;如果该线与多边形交叉的次数是偶数,则该点不属于多边形的一部分。对于上面的示例多边形,这是它的轮廓以及奇数面积: 多边形通常不会正交。我只选择了这样一个简单的示例,以便更轻松地计算面积。 此示例的区域为17(不是,24或者33不像其他定义或区域那样)。 请注意,在此定义下,多边形的面积与其缠绕顺序无关。 挑战 给定具有定义多边形的整数坐标的顶点列表,请确定其在奇偶规则下的面积。 您可以编写函数或程序,通过STDIN或最接近的替代方法,命令行参数或函数参数获取输入,然后返回结果或将结果打印到STDOUT或最接近的替代方法。 您可以采用任何方便的列表或字符串格式的输入,只要不进行预处理即可。 结果应该是浮点数,精确到6个有效数字(十进制),或者是一个有理结果,其浮点表示形式精确到6个有效数字。(如果您得出合理的结果,它们可能会是准确的,但是我不能要求这样做,因为我没有确切的结果可供参考。) 您必须能够在合理的台式机上在10秒内解决以下每个测试用例。(此规则有一定的余地,因此请使用您的最佳判断。如果在我的笔记本电脑上花费20秒,我会带给您疑问的好处,如果花费一分钟,我不会。)我认为这个限制应该非常大方,但是应该排除那些仅在足够细的网格上离散多边形并计数的方法,或者使用诸如蒙特卡洛这样的概率方法。做一个好运动员,不要试图优化这些方法,以使您无论如何都可以满足时间限制。;) 您不得使用任何与多边形直接相关的现有功能。 这是代码高尔夫球,因此最短的提交(以字节为单位)获胜。 假设条件 所有的坐标都在范围内的整数0 ≤ x ≤ 100,0 ≤ y ≤ 100。 会有至少3在最50顶点。 不会有任何重复的顶点。顶点也不会位于另一边上。(不过,列表中可能有共线的点。) 测试用例 …

30
俄罗斯轮盘,已重装
让我们玩俄罗斯轮盘! 通常,这是编写最短的MOD 6程序的竞赛,但这不是很现实,因为每次单击获胜的机会都会减少。规则如下: 模拟一个真实的六射手: 将一颗子弹放入六个弹药室之一中,然后仅在比赛之前将枪管旋转一次。 第n次尝试失败的机会是1/6。 n次尝试后 输球的机会是1 /(6-n) 您保证最多只能尝试6次。 输: 显示文字 *BANG!* 终止程序。 获奖情况: “胜利”是指枪不射击,但子弹距离锤子较近。 显示文字 *click* 向用户展示“触发器”以及终止程序的能力(例如,“ ctrl + c”,请参见下文)。 程序特定: 拉动触发器是某种形式的用户输入,包括第一次尝试。(这可以是击键,单击鼠标等等;不需要文本提示。) 该程序仅允许一个实例,直到被终止。(运行该程序的新实例类似于使桶具有良好的旋转度,即,下次单击失败的概率重置为1/6。) 最短的代码胜出! 排行榜 显示代码段 <style>body { text-align: left !important} #answer-list { padding: 10px; width: 290px; float: left; } #language-list { padding: 10px; width: 290px; float: left; …
32 code-golf  game  random 

13
5318008-计算器带来的乐趣
在世界各地的学校中,孩子们在LCD计算器中键入数字后,将其倒置并在创建“笨蛋”一词后大笑。当然,这是最受欢迎的词,但是还有许多其他词可以被产生。 但是,所有单词的长度必须少于10个字母(但是词典中包含的单词长度不超过10个字母,因此您必须在程序中执行过滤器)。在此词典中,有一些大写单词,因此将所有单词都转换为小写。 使用英语词典,创建一个数字列表,可以将这些数字输入到LCD计算器中并生成一个单词。与所有代码高尔夫球问题一样,以最短的程序完成此任务将获胜。 对于我的测试,我使用了UNIX单词列表,该单词列表是通过键入以下内容收集的: ln -s /usr/dict/words w.txt 或者,在这里获取它。 例如,上面的图像是通过35007在计算器中键入数字并将其上下颠倒而创建的。 字母及其相应的数字: b:8 g:6 l:7 我:1 o:0 s:5 z:2 h:4 e:3 请注意,如果数字以零开头,则在该零后需要一个小数点。该数字不能以小数点开头。 我认为这是MartinBüttner的代码,只是想向您致谢:) /* Configuration */ var QUESTION_ID = 51871; // Obtain this from the url // It will be like http://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe"; /* …
32 code-golf 

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.