Questions tagged «optimization»

对于那些侧重于优化其他标签未涵盖的方面的挑战。

14
找出最大为1s的矩形
背景 我想购买一块土地并在上面建造房子。我的房子应该是矩形的,并且要尽可能大。但是,可用的地块上有很多我无法建立的岩石区域,因此在地块上安装潜在的房屋时遇到了麻烦。我希望您编写一个程序为我分析情节。 输入输出 您的输入是矩形2D数组,其大小至少为1×1,且采用任何合理的格式。数组代表一块土地;1s是可以建造房屋的“好”区域,s是无法建造房屋0的“多岩石”区域。 您的输出应为1输入数组中s 的实心矩形的最大面积。它代表了我可以在该地块上建造的最大房屋的面积。请注意,如果1输入中没有,则输出为0。 例 考虑输入 101 011 111 1s 的最大矩形是右下角的2×2矩形。这表示正确的输出是4。 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 0 -> 0 1 -> 1 00 00 -> 0 01 10 -> 1 01 11 -> 2 111 010 111 -> 3 101 011 111 -> 4 0111 1110 1100 -> 4 1111111 …

2
创建一个独特的可解决填字游戏……毫无头绪
您能想象没有任何线索解决《纽约时报》填字游戏吗?也许不是所有的创造力以及现代填字游戏中出现的新单词和短语,但是有了固定的单词列表,人们还是有希望的。在此挑战中,您将创建一个填字游戏拼图网格,在理论上这是可能的。 挑战 最大化白色和黑色底纹的15x15填字游戏网格中的白色方块数量,以使白色方块可以唯一地填充字母,以便每个跨字和向下的单词都出现在国际拼字游戏单词列表中。 网格构造说明 在美国报纸中,通常会构造填字游戏网格,以使每个字母都被“选中”,这意味着它既是“跨字”又是“下”字的一部分。在英国和其他地方(尤其是在隐秘的填字游戏中),情况并非一定如此:如果“ across”或“ down”单词仅是一个字母,则不必是实际单词(例如“ A”或“ I” ”)。对于此挑战,请遵循更为宽松的规则:单字母单词不必出现在单词列表中。 还有其他各种传统(在美国和其他地方),在此挑战中无需遵循任何传统。例如,单词只能是两个字母长,单词可以重复,并且网格不必具有(旋转)对称性。 这有可能吗? 是! 可以编写一个简短的脚本来验证左侧空白网格的唯一解决方案是右侧填充的网格: 可以用计算机可读格式显示填充的网格,如下所示: ###CH########## ###YE########## ###AM########## CYANOCOBALAMINE HEMOCHROMATOSES ###CH########## ###OR########## ###BO########## ###AM########## ###LA########## ###AT########## ###MO########## ###IS########## ###NE########## ###ES########## 您的解决方案 上面的网格在15x15网格的225个正方形中共有56个白色正方形。这是此挑战的基准。带有较少白色方块的网格也可能由于其得分以外的原因而引起人们的兴趣,例如,如果它们满足上述某些美学传统,则可能会很有意思。 请以与上述计算机可读基准相同的格式提交解决方案。请包含验证您的网格是否有独特解决方案的代码。 有趣的代码片段(例如,搜索可能的空间)和有关如何找到网格的讨论将受到赞赏。 单词表 国际拼字游戏词清单以前被称为SOWPODS,现在被称为Collins拼字游戏词(CSW)。大多数国家(尤其是美国)都使用它。我们更喜欢使用此列表,因为它包含英式拼写,并且通常比美国单词列表包含很多单词。此列表有多个版本,略有不同。你可以找到不同版本的名单,从维基百科的链接,在Github上,在彼得·诺维格的自然语言语料库和其他地方,还经常被称为“SOWPODS”。 这一挑战对单词表选择的广泛性质高度敏感,而对较小的细节则不那么敏感。例如,上面的基准示例适用于任何版本的CSW,但CH不是American Scrabble单词列表中的单词。如果出现差异,我们更喜欢使用CSW的最新版本CSW19。(如果使用今年发布的此列表,则可以预期此挑战的答案将更有效)。您可以在Scrabble单词查找器官方网站上以交互方式查询此列表,也可以从Board&Card Games Stack Exchange或Reddit的r / scrabble下载该列表(以及上一版本的CSW15)。 Tldr:在Board&Card Games Stack Exchange上,可以通过纯文本文件(279,496个单词,每行一个)获得此挑战的权威单词列表。 进一步讨论 在早期的答案和评论中提出的一个问题是为什么现有的填字游戏(例如,在NYT中)不回答这个问题。具体而言,已发布的NYT填字游戏的最少黑色正方形(因此最多的白方块)记录已经是填字游戏中最著名的记录。为什么我们不能使用记录网格?有几个问题: NYT填字游戏中的许多答案未出现在我们的单词列表中。例如,记录网格包括PEPCID(商标名称),APASSAGETOINDIA(电影和小说的四个字专有名称,没有空格书写)和STE(“ …

14
这是一个截断的三角形数字吗?
相关OEIS序列:A008867 截断三角数 三角数的一个共同属性是它们可以排列成三角形。例如,取21并排列成os 的三角形: Ø OO oo oo oo oo 让我们定义一个“截断:”从每个角切割相同大小的三角形。截断21的一种方法如下: 。 。。 oo oo 。oo。 。。哦。。 (的三角形.是从原始三角形切出的)。 o剩下12 秒,因此12是一个截断的三角形数字。 任务 您的工作是编写一个程序或函数(或等效函数),该程序或函数采用整数并返回(或使用任何标准输出方法)数字是否为截断的三角形数字。 规则 没有标准漏洞。 输入是非负整数。 切口的边长不能超过原始三角形的一半(即,切口不能重叠) 切口的边长可以为零。 测试用例 真相: 0 1 3 6 7 10 12 15 18 19 虚假: 2 4 5 8 9 11 13 14 16 17 …
20 code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

3
彼得(蒙德里安)的谜题
有关更多信息,请观看此视频,并转到A276523以获得相关序列。 蒙德里安难题(对于整数n)如下: 将非全等矩形拟合到一个 n*n正方形网格中。最大和最小矩形之间的最小差异是多少? 为6,对于最佳差M(6)就是5,并且可以表现出像这样: ___________ | |S|_______| | | | L | | |_|_______| | | | | | |_____|___| |_|_________| (fig. I) 最大的矩形(L)的面积为2 * 4 = 8,最小的矩形(S)的面积为1 * 3 = 3。因此,差异为8 - 3 = 5。 请记住,目前n > 44尚未找到最佳解决方案。 您的任务是创建一个程序,该程序生成一个Mondrian网格,其中包含一个(非最佳)解决方案(给定整数)n。 您将接受100到150的数字测试。每次测试的得分将是最大和最小矩形之间的差。您的总分是所有100到150项测试的总分。 您必须像这样显示输出: {number} {grid} number分数在哪里(最大和最小之间的差),并且grid为: 多行字符串,或 二维列表。 网格必须清楚地显示矩形的开始和结束位置。 规则: …

29
找到最大偏差
此问题是从最初在Quora上提出的问题(不是针对代码高尔夫球)“启发”而来的。我只想对你们挑战(这是我在这里提交的第一个问题)。 给定一个整数元素数组v和一个整数d(我们假设d小于或等于数组的长度),请考虑该数组中所有d连续元素的序列。对于每个序列,计算该序列中元素的最大值和最小值之间的差,并将其命名为偏差。 您的任务是编写一个程序或函数,以计算上述所有序列的所有偏差中的最大值,然后返回或输出该值。 解决的示例: v: (6,9,4,7,4,1) d: 3 The sequences of length 3 are: 6,9,4 with deviation 5 9,4,7 with deviation 5 4,7,4 with deviation 3 7,4,1 with deviation 6 Thus the maximal deviation is 6, so the output is 6. 这是代码高尔夫,所以最短的答案以字节为单位。

4
尽早“完成工作”
背景 想象一下,您从事一项令人烦恼的工作。每天早晨,您会收到一系列应该在当天进行的任务。每个任务都有一定的持续时间,一旦开始,就必须一次性完成。您的老板不会容忍闲置,因此,如果有一些任务仍然可以在回家之前完成,则必须处理其中一项(您可以选择其中一项)。相反,如果所有其他任务都需要您加班,那么您就可以早点回家!因此,您的目标是通过明智的安排来最大程度地减少工作时间。 有趣的事实:这是懒惰的官僚调度问题的一种变体,它是NP-hard(来源)。 输入值 您有两个输入:工作日中“时间单位”的数量(正整数L)和任务集合(正整数的非空数组T,表示任务持续时间)。它们可以以任何顺序以任何合理的格式进行使用。该数组T可以包含持续时间大于的任务L,但是可以保证至少包含一个持续时间最多的任务L。 输出量 一个有效的计划是任务的一个子集S ⊆ T,从而sum(S) ≤ L,而不是在每一个任务S(计重数)的持续时间严格不止L - sum(S)。您的输出应为有效计划的最小可能总和。换句话说,您将输出您今天必须工作的最小时间单位。 例 考虑输入 L = 9 T = [3,4,4,4,2,5] 安排一天的一种方式是[4,4]:您以8个时间为单位完成两项任务,还剩下1个单元。由于没有可用的1单元任务,因此您可以回家。但是,时间表[2,5]甚至更好:您以7个时间单位工作,然后所有其余任务将以3个或更多时间单位工作。该时间表[2,4]无效,因为在工作了6个时间单位后,您仍然有足够的时间来完成3个单位的任务。最佳状态为7个单位,因此正确的输出为7。 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。没有时间限制,因此蛮横强制是完全可以接受的。 测试用例 这些以格式给出L T -> output。 1 [1,2] -> 1 6 [4,1] -> 5 7 [7,7,9] -> 7 9 [3,4,4,4,2,5] -> 7 20 [6,2,3,12,7,31] -> 17 42 …

7
优化Scralphabet
cr 普通的Scrabble磁贴袋中包含以下字母(?是空白磁贴,可以代表任何其他字母): AAAAAAAAABBCCDDDDEEEEEEEEEEEEFFGGGHHIIIIIIIIIJKLLLLMMNNNNNNOOOOOOOOPPQRRRRRRSSSSTTTTTTUUUUVVWWXYYZ?? 字母具有以下值: {"A": 1,"B": 3,"C": 3,"D": 2,"E": 1,"F": 4,"G": 2,"H": 4,"I": 1,"J": 8,"K": 5,"L": 1,"M": 3,"N": 1,"O": 1,"P": 3,"Q": 10,"R": 1,"S": 1,"T": 1,"U": 1,"V": 4,"W": 4,"X": 8,"Y": 4,"Z": 10,"?": 0} 给定一个正常的拼字游戏包,请在以下条件下构造得分最高的一组不相交的单词(即单个单词,不在拼字板上): 每个字的分数是sum(letter_values) * length(word)。 您最多只能在一个字母的每个字母开头包含一个单词(因此,最多26个单词)。 仅可包含有效的拼字游戏单词(来自此词典)。您可以从文件中读取字典,对其进行硬编码(ugh)或从网站上将其刮取。 您无需使用每个图块,但所有未使用的图块都组成一个单词,以相同的方式评分,并从您的分数中扣除。 如果您愿意,您的代码可以接受两个输入:袋子内容为字符串,字母值采用类似于python的某种格式dict(如上所述);或者,您可以对包装袋中的物品和字母值进行硬编码。它应该以某种合理的格式输出您的单词集中的单词,它们各自的得分和您的总得分。 得分最高的单词组获胜,并列第一个。

8
通过矩阵的最佳路径
给定一个由正整数组成的矩阵,当从左上角元素到右下角遍历时,输出总和最小的路径。您可以垂直,水平和对角移动。请注意,可以上下左右移动,也可以左右移动。 例: 1* 9 7 3 10 2 2 10 4* 1* 1* 1* 7 8 3 6 3 8 9 5* 7 8 10 2 5 2 1* 4 5 1 1 3 6 7 9* 给出最低总和的路径标有星号,并得出以下总和:1 + 4 + 1 + 1 + 1 + 5 + 1 …

2
岛屿高尔夫2:古怪的隐士
这是Island Golf系列挑战中的第二次挑战。先前的挑战 两个隐士到达了一个荒岛。由于他们寻求孤独,所以他们希望彼此之间住得尽可能远。他们应该在哪里建造小屋,以使他们之间的步行距离最大化? 相关阅读 输入项 您的输入将是一个由两个字符组成的矩形网格,分别代表土地和水。在下面的示例中,土地是#,水是.,但是您可以替换任意两个不同的字符。 ........... ...##...... ..#####.... ..#######.. .#########. ...#######. ...#####.#. ....####... ........... 始终将至少有两个地砖。地砖将是连续的(即只有一个岛)。瓷砖也将是连续的(即没有湖泊)。网格的外边界都是水瓦片。地砖将不会以对角线连接:即,您将永远不会看到类似 .... .#.. ..#. .... 输出量 您的代码必须输出相同的网格,并在网格上标记了两个小屋位置。在下面的示例中,小屋的位置用X标记,但是您可以替换任何字符,只要它与您的水陆字符不同即可。 小屋的位置必须为两个地砖,以选择它们之间的最大步行距离。我们将步行距离定义为两点之间完全在陆地上的最短路径的长度。地砖被视为水平或垂直相邻,但不对角。 上述岛屿的可能解决方案: ........... ...X#...... ..#####.... ..#######.. .#########. ...#######. ...#####.X. ....####... ........... 这两个点之间的步行距离是11,这是该岛上任何两个点之间的最大距离。还有另一个距离11解决方案: ........... ...##...... ..X####.... ..#######.. .#########. ...#######. ...#####.X. ....####... ........... 细节 您的解决方案可能是完整程序或功能。任何默认的输入和输出方法都是可以接受的。 您的输入和输出可以是多行字符串,字符串列表或2D数组/嵌套的字符列表/单字符字符串。您的输出可能(可选)有一个尾随换行符。如上所述,您可以使用任何三个不同的字符来代替#.X(请在提交中指定要使用的字符)。 测试用例 A.具有独特小屋位置的岛屿: .... .##. …

2
策划策略
我只能找到Mastermind的代码挑战,所以这是我想承担的代码挑战版本。 普通的Mastermind游戏的最佳策略MM(4,6)由Koyama和Lai于1993年发现,平均猜测数= 5625/1296〜4.34。MM(5,8)仍未解决,但估计平均猜测数约为5.5。 您的任务是创建一个MM(5,8)策略,该策略适用于5个孔和8种颜色,涵盖所有pow(8,5) = 32768可能的不同解决方案。显然,它不一定是最佳选择。您有两种选择: 发布确定性程序以生成策略。该程序必须在Windows 7,Mac OS X或Linux上可编译/运行,且没有任何其他非自由软件。 在Internet上的某个位置发布您的策略(以及您的StackExchange名称)并在此处发布URL。 在这两种情况下,请在答案的标题中注明分数(见下文)。 必须根据以下语法对策略进行编码: strategy : guessing-strategy | known-solution-strategy guessing-strategy : '{' guess ':' branches '}' known-solution-strategy : guess guess : color color color color color color : 'A'..'H' branches : '{' branch (',' branch)* '}' branch : reply ':' strategy …

1
霍尔玛最短的2人游戏
在国际象棋中,游戏有可能在愚人伴侣的作用下进行4次移动(每次2次)后结束。 您的目标是找到傻瓜的哈尔玛伴侣:哈尔玛(Halma)的2人游戏,可将回合数减至最少。 有超过10个56个董事会状态,而且我已经看到分支系数超过1000,因此没有人会找到最佳解决方案。相反,您正在尝试找到最好的解决方案。 您应该提交一个动作列表,以及用于生成这些动作的任何代码。 游戏说明 哈尔玛类似于中国跳棋,但在16 * 16的正方形板上玩。 最初,董事会如下所示: 游戏的目标是将所有棋子移到对手棋子的开始位置。 在玩家回合中,他/她可以: 转弯 将他/她的一件作品移到相邻的空白处。相邻的空格包括对角线。 取他/她的一块,然后执行以下任意多次:将一块跳到相邻的一块上,将其降落在与跳过的一块相对的空间上。 这是说明第二种移动方式的示例。 规则 提交导致游戏结束的合法举动列表。 提交用于生成列表的任何代码。 如果您从其他人的代码中获得更好的结果,请将该结果发布在评论中,或使用新结果编辑他们的帖子。 每次移动必须要么None是通过转弯,要么(x1,y1,x2,y2)是移动一个棋子,其中要移动的棋子(x1,y1)的坐标是该棋子(x2,y2)的目的地,并且是棋子的目的地(对于跳跃移动,请忽略中间坐标)。坐标从(0,0)左上角开始。x坐标向右增加,y坐标向下增加。动作应以换行符分隔。 您可以使用此python脚本来验证您的举动。使用python halma_verify.py < file来验证移动file。 最短名单获胜。

8
按混排排序
块随机排序 在块混洗排序是排序的列表的(而人工的)方法。举例说明,其工作方式如下。 [6, 1, 0, 3, 2, 4, -2, -1] Break list into contiguous blocks [6][1, 0][3, 2, 4][-2, -1] Sort each block [6][0, 1][2, 3, 4][-2, -1] Sort blocks lexicographically [-2, -1][0, 1][2, 3, 4][6] Concatenate [-2, -1, 0, 1, 2, 3, 4, 6] 划分为连续块的分区可以任意选择。但是,并不是所有的块选择都会在最后产生一个排序列表: [6, 1, 0, 3, …

1
来临挑战1:帮助圣诞老人解开他现在的保险库!
下一个>> 描述性关键字(用于搜索):使两个矩阵等效,重叠,数组,查找 挑战 圣诞老人在过去曾有过精灵从他的保险库中偷走礼物的历史,因此,今年他设计了一把很难破解的锁,今年似乎将精灵拒之门外。不幸的是,他丢失了组合,也无法弄清楚如何打开它!幸运的是,他雇用了您编写一个程序来查找该组合。它不需要是最短的,但他需要尽快找到它! 他的日程安排非常严格,他等不起。您的分数将是程序的总运行时间乘以程序为得分输入所输出的步数。最低分获胜。 技术指标 锁是1和0的方阵。它设置为1和0的随机排列,并且需要设置为指定的代码。幸运的是,圣诞老人记住了所需的代码。 他可以执行几个步骤。每个步骤都可以在任何连续的子矩阵上执行(也就是说,您必须选择一个完全由左上角和右下角所包围的子矩阵)(可以是非正方形子矩阵): 向右旋转90度* 向左旋转90度* 旋转180度 左右循环各行n元素(环绕) 循环上移m或下移每个列元素(自动换行) 水平翻转 垂直翻转 翻转主对角线* 翻转主反对角线* *仅当子矩阵为正方形时 当然,他也可以在整个矩阵上执行这些步骤。由于1和0只能在矩阵上交换,而正方形的值不能直接更改,因此开始和结束配置的1和0的数目相同。 格式规范和规则 将以您想要的任何合理格式为您提供两个平方矩阵的输入(开始位置和结束位置)。输出应该是任何可读格式的这些步骤的序列。由于这不是代码来源,请使其成为易于验证的格式,但这不是严格的要求。如果需要,可以选择在输入中采用矩阵的边长。 您的程序将在我的计算机上运行(Linux Mint,如果需要的话,您可以根据要求提供确切的版本详细信息:P),并且我将根据我在命令行上按“ Enter”键之间的时间以及命令退出。 测试用例 1 0 0 1 0 0 0 0 0 1 1 0 -> 0 0 0 0 0 1 1 0 -> 1 1 1 …

4
一周中压缩的天数
输入星期几列表,则输出列表中最短的排序表示形式。 输入的格式是由一个或多个双字符子串的字符串Su(星期日), Mo(星期一), Tu(等), ,We,Th, Fr和Sa。输入不一定必须以排序的顺序给出。 要将输入转换为输出格式, 从星期天开始按星期几对输入进行排序(例如ThMoSaSuFrTuWe-> SuMoTuWeThFrSa)。 如果不引起歧义,请将缩写词减少到一个字母。例如,之所以SuMoTuWe成为,SMTW是因为第一个S不可能在星期六,因为这样会使输出未排序(与T相同)。但是,ThFrSa应该成为ThFS,因为星期二和星期四都在星期五之前,并将其减小以TFS产生歧义。 如果输出为now MTWTF,则D改为输出(代表“ 工作日 s”)。同样,SS应该成为E一周结束。最后, SMTWTFS应该成为A对所有天。 输入和输出都必须是单个字符串。 由于这是code-golf,因此以字节为单位的最短代码为准。 测试用例: In Out | In Out -----------------------|-------------------- SuTu STu | SuTuWe STW SuTuSa STuS | SuWeTh SWT TuThSa TTS | TuThSu STT Su Su | Sa Sa WeTh WT | FrTh ThF WeTu …

3
优化我的翅膀顺序
此推文列出了中餐厅1的翅膀的可能订单: 订购披萨时,我通常会计算出什么尺寸能给我带来最佳的披萨价格比,这很简单。但是,要最小化这家餐厅的订单价格并不是一件容易的事,因此我想为在该餐厅的下一份订单做好准备。 挑战 给定一个大于或等于444的整数,您的任务是返回一个可能的订单,以最小化价格(总体上最便宜)和交易数量。 例 如果我要订购100100100 Wings,事实证明最好的讨价还价将花费$111.20$111.20$111.20。但是,有多个订单将花费该金额,即: [50,50],[25,25,50],[25,25,25,25] 由于第一个订单将使用最少的交易(222),结果将是[50,50]。 规则 输入将是某个整数n≥4n≥4n \geq 4 输出将是订单大小的列表/数组/ ...,总计为nnn,并将订单价格最小化 您可以选择退回所有可能的订单 测试用例 4 -> [4] (4.55) 23 -> [23] (26.10) 24 -> [6,18],[9,15],[12,12] (27.20) 31 -> [6,25] (34.60) 32 -> [4,28],[6,26],[7,25] (35.75) 33 -> [4,29],[5,28],[6,27],[7,26],[8,25] (36.90) 34 -> [6,28],[9,25] (38.00) 35 -> [35] (39.15) 125 …

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.