编程拼图和代码高尔夫

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

16
确定字符串的“运气”
给定一个字符串,返回该字符串的“运气”。 正如我为完成此挑战而完全弥补的那样,字符串的运气是一个整数,其确定如下: 字符串的基本运气是1。 对于每个与“ lucky”(不区分大小写)单词共享的连续字母,将运气乘以2。例如,如果您的字符串是“ lu mberjack”或“ sma ck ”,则应乘以4。(更具体地说, 2 ^共享的连续字符数。) 共享字母必须以出现在“ lucky”中的相同连续顺序排列,但可以在单词中的任何位置以相同的值开头(“ luc”的倍数与“ cky”的倍数相同)为8。 如果单词多次出现并幸运地共享连续字符,请使用最长的连续字符串。 对于任何字母,它与单词“ omen”共享,则从运气中减去2。 它可以以任意顺序,任意次数匹配一个字符。例如,字符串“ nnnnnomemenn”失去了24个运气(12个匹配的字母) 例: luck("lucky") >>32 2 ^ 5(连续5个字母)= 32 luck("firetruck") >>6 2 ^ 3-2(来自uck的 3个连续字母,与omen共享e) luck("memes") >>-7 1-8(基本金额,与“预兆”共享4个) 这是代码高尔夫球,因此字节最少的答案会获胜。 您可以使用任何方式输入和输出-编写函数,使用标准输入等。 对于函数,假定对该语言有意义的任何数据类型。(例如,在JavaScript中,将传递a String并返回Number) 编辑:您可以假设任何输入都是小写。
35 code-golf  string 

6
解决色彩难题
在我们Puzzling.SE的朋友那里,发布了以下拼图:这个半彩色拼图是否始终可以解决?由Edgar G.你可以发挥它在这里。 拼图说明 给定一个m x n网格,其中包含三种不同颜色的图块,如果它们的颜色不同,则可以选择任意两个相邻图块。然后将这两个图块转换为第三种颜色,即这两个图块未表示的一种颜色。如果所有图块都具有相同的颜色,则难题就解决了。显然,一个可以证明的是这个难题始终是可解的,如果没有m,也不n是被3整除。 当然,这乞求一种求解算法。您将编写解决此难题的函数或程序。请注意,stdout明确允许具有“副作用”的函数(即,输出处于打开状态,而不是某些尴尬的数据类型返回值)。 输入输出 输入将是一个m x n由整数的矩阵1,2和3(或0,1,2如果方便的话)。您可以以任何理智的格式接受此输入。这两个m和n的>1,而不是被3整除你可以假设这一难题没有解决 然后,您将解决难题。这将涉及重复选择两个要“转换”的相邻图块(请参见上文)。您将为求解算法采取的每个步骤输出这些图块的两个坐标。这也可以是任何合理的输出格式。您可以自由选择从0索引到1索引之间的索引,还是先索引行还是列。但是,请在您的答案中提及这一点。 您的算法应在合理的时间内在原始8x8情况下运行。暴力破解它完全是明令禁止的,即你的算法应该下运行O(k^[m*(n-1)+(m-1)*n])与k所需的解决方案的步数。但是,该解决方案并不需要是最优的。链接问题中给出的证明可以使您了解如何执行此操作(例如,首先仅使用垂直相邻的图块来创建所有列,然后再执行所有行) 测试用例 在这些测试用例中,坐标是基于1的,并且首先对行进行了索引(如MATLAB / Octave以及可能的许多其他索引)。 Input: [1 2] Output: (result: all 3's) [1 1],[1,2] Input: [ 1 2 3 1 ] Output: (result: all 1's) [1 1],[2 1] (turn left column into 2's) [2 1],[2 2] (turn right …

9
蛇化字符串
修饰后的字符串如下所示: T AnE eOf ifi ing h s x l A k e r isI amp Sna dSt 你的任务 取一个字符串s和一个size n,然后输出连串的字符串。输入ThisIsAnExampleOfaSnakifiedString和3将产生上面的示例。 技术指标 s 只会在代码点33和126之间(含端点)包含ASCII字符(不包含空格或换行符)。 s 长度在1到100个字符之间。 n是一个整数,代表每个输出字符串段的大小。组成“蛇”中曲线的每一行字符(上/下或左/右)都是n字符长。有关示例,请参见测试用例。 n 介于3到10之间(含3和10)。 输出字符串始终开始指向下方。 每行上都可以使用尾随空格。 在输出末尾也可以尾随换行符。 不允许前导空格。 code-golf表示以字节为单位的最短代码获胜。 测试用例 a 3 a ---------- Hello,World! 3 H Wor e , l llo d! ---------- ProgrammingPuzzlesAndCodeGolf …
35 code-golf  string  ascii-art  code-golf  code-golf  string  balanced-string  decision-problem  code-golf  string  geometry  grid  code-golf  tips  lisp  code-golf  quine  tips  king-of-the-hill  code-challenge  math  code-golf  string  palindrome  math  fastest-code  code-golf  string  counting  code-golf  code-golf  internet  code-golf  quine  source-layout  hello-world  code-golf  math  number  sequence  arithmetic  code-golf  ascii-art  grid  code-golf  number  grid  code-golf  string  crossword  code-golf  code-golf  ascii-art  grid  counting  code-golf  code-golf  math  sequence  arithmetic  number-theory  code-golf  code-golf  graphical-output  geometry  random  code-golf  ascii-art  grid  counting  code-golf  string  ascii-art  code-challenge  test-battery  code-golf  string  code-golf  ascii-art  kolmogorov-complexity  code-golf  interpreter  code-golf  math  sequence  code-golf  math  primes  set-partitions  code-golf 

22
将数组变成数学题
给定非负整数的非空列表,请考虑将其重写为算术问题,其中: +在成对的数字之间插入一个加号(),这些数字从左到右递增(也就是从列表的开头到结尾)。 -在从左到右递减的数字对之间插入一个减号()。 *在成对的数字对之间插入一个乘号()。 换一种说法:if ,if 和if a,b会成为任何子列表。a+ba<ba-ba>ba*ba==b 例如清单 [12, 0, 7, 7, 29, 10, 2, 2, 1] 将成为表达 12 - 0 + 7*7 + 29 - 10 - 2*2 - 1 结果为 75。 编写一个包含此类列表并对其进行评估,打印或返回结果的程序或函数。 操作顺序很重要。乘法应该在任何加法或减法之前完成。 如果输入列表中有一个数字,那应该是它的计算结果。例如[64]应该给64。 使用eval或exec或类似结构是允许的。 以下是一些其他示例: [list] expression value [0] 0 0 [1] 1 1 [78557] 78557 …

2
PPCG让分系统
我们都知道,元 是 满溢 与 投诉 约 进球 代码高尔夫 之间的 语言(是的,每个字是一个单独的链接,而这些可能是冰山的一角)。 由于对那些真正烦恼查找Pyth文档的人感到非常嫉妒,所以我认为有更多的建设性挑战会很不错,因为它适合于专门从事代码挑战的网站。 挑战非常简单。作为输入,我们具有语言名称和字节数。您可以将它们用作函数输入,也可以将它们用作stdin语言的默认输入法。 作为输出,我们有一个更正的字节数,即您的残障分数。输出分别应为函数输出stdout或您的语言默认输出方法。输出将四舍五入为整数,因为我们喜欢决胜局。 使用最丑陋,骇人听闻的查询(链接,随时可以清理它),我设法创建了一个数据集(包含.xslx,.ods和.csv的zip),其中包含有关代码高尔夫球问题的所有答案的快照。您可以使用此文件(并假设它是提供给你的程序,例如,它是在同一文件夹),或将此文件转换为另一种格式的常规(,,等等-但它可能只包含原始数据!)。名称应保持与 选择的扩展。.xls.mat.savQueryResults.extext 现在为具体。对于每种语言,都有一个样板B和详细度V参数。它们可以一起用于创建语言的线性模型。我们n是字节的实际数量,并且c是修正得分。使用一个简单的模型n=Vc+B,我们得到校正后的分数: n-B c = --- V 很简单吧?现在,确定V和B。如您所料,我们将进行线性回归或更精确的最小二乘加权线性回归。我不打算对此进行详细说明-如果您不确定如何做到这一点,则Wikipedia是您的朋友,或者,如果您幸运,可以使用您语言的文档。 数据如下。每个数据点将是字节数n和问题的平均字节数c。为了计票,将对这些点加权,即按其票数加一(以计为0票)来称呼v。否决的答案应该被丢弃。简单来说,1票的答案应与2票0票的答案相同。 然后n=Vc+B使用加权线性回归将该数据拟合到上述模型中。 例如,给定语言的给定数据 n1=20, c1=8.2, v1=1 n2=25, c2=10.3, v2=2 n3=15, c3=5.7, v3=5 现在,我们撰写相关矩阵和向量A,y并W与我们在向量参数 [1 c1] [n1] [1 0 0] x=[B] A=[1 c2] y=[n2] W=[0 2 0], [V] [1 …

30
阶乘结尾的零
编写一个程序或函数,该函数或函数在以n!10 为基数的末尾找到零的数目,其中n输入数字(采用任何所需的格式)是。 可以假定它n是一个正整数,也n!就是一个整数。中的小数点后没有零n!。同样,可以假定您的编程语言可以处理nand 的值n!。 测试用例 1 ==> 0 5 ==> 1 100 ==> 24 666 ==> 165 2016 ==> 502 1234567891011121314151617181920 ==> 308641972752780328537904295461 这是代码高尔夫。适用标准规则。以字节为单位的最短代码获胜。 意见书 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 # Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: # Ruby, <s>104</s> <s>101</s> 96 bytes 如果要在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: # Perl, 43 + 2 (-p flag) = 45 bytes 您还可以将语言名称设置为链接,然后该链接将显示在页首横幅代码段中: …

30
因此管理垃圾
PPCG在某种程度上已经成为一种传统,一些用户通过字谜(通过重新排序旧字母而形成的新名称)临时更改其名称。 有时很难找出谁是谁。我可以使用一个程序或函数来判断两个短语是否是彼此的字谜。 挑战 程序或函数应该采用两个字符串,并且如果它们彼此是字谜,则应产生真实的结果,否则应为虚假的。 规则 输入将仅包含字母(ASCII 65至90和97至122),数字(ASCII 48至57)或空格(ASCII 32)。 字谜关系与大小写无关。所以“手臂”和“ RAM”是字谜。 空格也不计算在内。所以“键盘”和“吠叫哟” 允许所有内置 输入格式灵活(两个字符串,两个字符串的数组,包含两个短语的字符串以及合适的分隔符...) 代码高尔夫。最少的字节数获胜。 测试用例 真相: Lynn, Nyl N Digital Trauma, Tau Digital Arm Sp3000, P S 3000 Manage Trash So, Those anagrams 虚假 Calvins Hobbies, Helka Homba Android, rains odd In between days, bayed entwine Code golf, cod …

3
来信,动起来!
给定字符串,您必须按字母在字母表中的位置移动每个字母(从第一个字母开始)。如果到达字符串的末尾,则必须环绕。非字母不需要移动。 例: Dog D是字母表中的第四个字母,因此我们将其向右移动四个位置。环绕后,将字符串更改为oDg。o是第15个字母,(15 mod 3)= 0,因此它不会移动。g是第7个字母-(7 mod 3)= 1,因此字符串变为goD。 hi*bye h是第8个字母,将其移动8个位置- hi*bye=>i*hbye i是第9个字母,将其移动9个位置- i*hbye=>*hbiye b是第二个字母,将其移动2个位置- *hbiye=>*hiybe y是第25个字母,将其移动25个位置- *hiybe=>*hibye e是第5个字母,将其移动5个位置- *hibye=>*hibey 非字母不需要移动,但它们仍会占用空间。 cat => tca F.U.N => .F.NU mississippi => msiisppssii
35 code-golf  string 

30
镂空阵列
任务 这个挑战非常简单。您的输入是一个矩形的二维整数数组,大小至少为1×1。可以采用任何合理的格式。您的输出应为输入数组,但所有不在第一行或最后一行或列上的条目均设置为0。它必须与输入格式相同。 例如,如果输入数组是 67 4 -8 5 13 9 13 42 4 -7 1 1 3 -9 29 16 99 8 77 0 那么正确的输出是 67 4 -8 5 13 9 0 0 0 -7 1 0 0 0 29 16 99 8 77 0 规则和计分 您可以编写完整的程序或函数,并且允许函数在适当位置修改输入而不是返回输入。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 它们被格式化为嵌套列表,以使复制粘贴更加容易。 [[3]] -> …

28
在Champernowne常数中找到数字
介绍 在基数10中,通过串联连续整数的表示来定义Champernowne常数。以10为底:0.1234567891011121314151617...依此类推。 您可以看到首次出现是15从20th小数点开始的: Position 0000000001111111111222222222233333333334444444444555555555566666666 1234567890123456789012345678901234567890123456789012345678901234567 ^ 0.1234567891011121314151617181920212223242526272829303132333435363738... ^^ 15 = position 20 第一次出现是45从4th小数点开始: Position 0000000001111111111222222222233333333334444444444555555555566666666 1234567890123456789012345678901234567890123456789012345678901234567 ^ 0.1234567891011121314151617181920212223242526272829303132333435363738... ^^ 45 = position 4 因此,任务很容易。给定一个非负整数,输出该整数在Champernowne常数中的位置。 规则 您可以提供功能或程序 这是代码高尔夫球,因此以最少的字节提交为准! 测试用例 Input: 20 Output: 30 Input: 333 Output: 56 Input: 0 Output: 11 (note that the 0 before the decimal point is …
35 code-golf  math  number 

10
压缩这些页码!
免责声明:虽然我现在已经出于娱乐目的而在此网站上停留了一段时间,但这是我的第一个问题,因此请原谅任何小错误。 背景 当给我们分配作业时,我的老师确实很烦人,并写出了我们必须单独处理的所有问题。因此,我花了很长时间来抄写我必须做的问题。我想让我的生活更轻松,我会给他发送一个程序,该程序可以使问题列表占用更少的空间。 写下页面或问题编号的列表时,我们用破折号表示范围。例如,19-21变为19, 20, 21。如果两者之间有间隔,则使用两个逗号分隔的范围:19-21, 27-31变为19, 20, 21, 27, 28, 29, 30, 31。 现在,您可能正在思考:“这似乎很琐碎”。实际上,这已经在这里和这里得到了解答。 但是,有一个陷阱。如果我们有一个相等的连续数字范围,则可以省去重复的数字。例如:15, 16, 17成为15-7和107, 108, 109成为107-9。作为奖励,如果最后一个连续的相等数字大1,并且上限的最后一个数字小于或等于下限,则可以省略以下内容(对不起,这听起来令人困惑;也许有些示例可以清除它) 。109-113变为109-3,因为最后一位低表示增加10位。 挑战 您的程序应通过输入获取整数列表(无论您的语言是标准语言还是函数)。您可以决定此列表是逗号分隔,空格分隔还是实际的列表/数组。 输出最短的方法(首先按范围数排序,然后按范围内的字符总和排序)以使用此表示法表示该列表。每个虚线范围必须在同一行上,但是范围可以用逗号或换行符分隔(允许使用尾随的换行符或逗号)。这些范围必须是有序的。 由于我们学校的Wi-Fi非常糟糕,我必须将文件制作得尽可能小才能发送给他。最短的代码(以字节为单位)获胜。 奖金 我的老师草率,所以有一些事情可以帮助他。多个奖金通过乘法叠加,例如-10%奖金(x 90%)和-25%(x 75%)奖金= 90%* 75%= x 67.5%(-32.5%奖金)。 有时他把它们放在错误的顺序(他不是数学老师)。如果您的程序可以接受未按最小到最大排序的整数,则收取-20%的奖金。 我们的书很奇怪,每一节都从-10开始计算问题。如果您的程序可以接受负数,则取-25%。 如果它接受较低的最后一位数字的奖金,该奖金增加10位,例如25-32减少到25-2,则获得-50%的奖金。 测试用例 In: 1, 2, 3, 4, 5 Out: 1-5 In: 3, 4, 5, 9, …

13
对像素排序
您的任务是创建一个给定输入图像的程序,该程序将创建相同大小的输出图像,其中所有像素均按十六进制值排序。 您的程序可能: 按从左到右的顺序对像素进行排序,然后再进行降序排列,或者先按列进行排序,然后再按右顺序进行排序。无论如何,左上方的像素是最小的,而右下方的像素是最大的。 使用透明度,但这不是必需的。 按RGB排序,但是您可以使用CMY或任何其他具有至少3个值的格式。您可以选择要排序的值。(HSV可能会提供一些不错的图像) 使用大多数计算机可以打开的任何已知图像格式。 规则: 输出必须写入磁盘或可通过管道传输到文件。 输入是作为命令行参数提供的,形式是图像的相对路径,或者从命令行通过管道输入。 这是代码高尔夫,所以最短的代码以字节为单位!

30
生成Abacaba序列
这个挑战是关于打印特定深度的算盘序列。 这是前5个序列a(N)的图表(深度为N的abacaba序列,大/小写只是用来显示模式,在程序的输出中不需要): a(0) = A a(1) = aBa a(2) = abaCaba a(3) = abacabaDabacaba a(4) = abacabadabacabaEabacabadabacaba ... a(25) = abacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabagabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabahabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabagabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabaiabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabagabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabahabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabagabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabajabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabagabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabahabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabagabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabaia... 您可能会说,第n个算盘序列是最后一个带有第n个字母的序列,它本身又被添加到其中。(a(n) = a(n - 1) + letter(n) + a(n - 1)) 您的任务是制作一个使用整数的程序或函数,并打印该深度的abacaba序列。输出必须至少在15以上(包括15)正确。

9
真正的香肠盛宴
由于十月的第一个周末临近,让我们一起庆祝慕尼黑啤酒节! 背景 您和其他一些程序员已被德国慕尼黑的当地香肠人雇用。香肠人为慕尼黑啤酒节提供巨型Volksfest需要的所有香肠。您设法偷听老板与其他员工谈论为何您和其他人被雇用而没有任何与香肠相关的经验。您意识到自己是因为无可挑剔的编程技能而被录用的-并且您的老板显然希望您为香肠分析仪编写代码。 今年左右,香肠人决定在慕尼黑啤酒节上增加香肠的种类-但他们不知道进口了多少香肠。 挑战 您需要帮助老板弄清楚他们实际进口了某种香肠。您将需要编写一个香肠分析仪,以输出每个香肠进口的香肠的种类和数量。您的老板为此购买了一个特殊的软盘驱动器,给了一根香肠,将其输送到stdin。 输入值 上有许多香肠stdin,每个香肠用一个空格隔开。香肠的格式如下: 普林斯科夫(P) ¤ | | | | | | ¤ Salchichón(S) l | | | | | | | | l 兰贾格(L) \ / | | | | | | | | / \ 卡巴诺斯(K) . | | | | | . Cotechino摩德纳(C) …
35 code-golf 

13
威尔·罗杰斯现象
所谓的威尔·罗杰斯(Will Rogers)现象描述了一种通过在两个元素之间移动一个元素时提高两个(多)集合中的平均值来调整统计量的方法。举一个简单的例子,考虑两组 A = {1, 2, 3} B = {4, 5, 6} 它们的算术平均值分别为 2和5。如果我们移动4到A: A = {1, 2, 3, 4} B = {5, 6} 现在,平均值分别为2.5和5.5,因此两个平均值都通过简单的重组而提高了。 再举一个例子,考虑 A = {3, 4, 5, 6} --> A = {3, 5, 6} B = {2, 3, 4, 5} --> B = {2, 3, 4, …

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.