编程拼图和代码高尔夫

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

21
字母直方图
给定一个包含一个或多个单词[a-z]+和零个或多个空格的输入句子,输出该输入句子的字母分布的ASCII艺术直方图(条形图)。 直方图必须水平放置,即字母键沿底部从左到右按字母顺序排列,Y轴标记为1-每5个单位。Y轴必须是5的最小倍数,且至少与最高的钢筋一样高,并且必须右对齐。X轴标有输入字母,两者之间没有间隙。例如,输入a bb dd应带有标签,abd而不要带有标签ab d,跳过c。条形图本身可以由任何一致的ASCII字符组成-我将X在示例中使用它们。 test example 5- X X X 1-XXXXXXXX aelmpstx 由于存在三个e,两个t和一个almsx。 更多示例: the quick brown fox jumped over the lazy dogs 5- X X X X XX X X X XX 1-XXXXXXXXXXXXXXXXXXXXXXXXXX abcdefghijklmnopqrstuvwxyz now is the time for all good men to come to the aid of …

8
可以从素数生成方树年轮吗?
显然是的!三个简单的步骤。 步骤1 令f(n)表示素数计数函数(素数小于或等于n)。 如下定义整数序列 s(n)。对于每个正整数n, 将t初始化为n。 只要t既不是素数也不是1,则将t替换为f(t)并进行迭代。 迭代次数为s(n)。 该迭代过程是保证最终因为˚F(Ñ)< ñ所有Ñ。 考虑例如n= 25。我们初始化t =25。由于这不是素数也不是1,我们计算f(25)为9。这成为t的新值。这既不是素数也不是1,所以我们继续:f(9)是4。我们再次继续:f(4)是2。因为这是素数,所以我们在这里停止。我们完成了3次迭代(从25到9,然后到4,再到2)。因此s(25)为3。 序列的前40个词如下。该序列不在OEIS中。 0 0 0 1 0 1 0 2 2 2 0 1 0 2 2 2 0 1 0 3 3 3 0 3 3 3 3 3 0 3 0 1 1 1 1 1 …

24
五个立方体的总和
给定一个整数,输出五个总和为该整数的理想立方体。请注意,多维数据集可以是正数,负数或零。例如, -10 == -64 - 64 + 64 + 27 + 27 因此对于输入-10您可以输出[-64, -64, 64, 27, 27],尽管其他解决方案也是可行的。请注意,您应该输出多维数据集,而不是要输出的数字。 始终存在解决方案-您可能会为自己感到困惑。进一步推测四个立方体就足够了。

30
传递了多少论点?
使用您选择的语言,编写一个函数,该函数接受可变数量的参数并返回调用该参数的参数数量。 细节: 您的语言需要支持可变参数函数:可调用的函数,可以接受任意数量的参数并返回值。 参数必须能够单独传递。这意味着传递数组将仅计入一个参数。如果您的语言支持,则可以使用“所有传递的参数”数组;该函数的调用方式受到限制。 调用此函数的代码不必在其源中传递参数数量。如果编译器将参数数量作为调用约定的一部分插入,则允许这样做。 参数可以是您想要的任何类型。您只能支持单一类型(例如,仅支持int仍然有效),任意类型(允许任何类型的参数)或参数类型的任意组合(例如,第一个arg为int,其余为字符串)。 您的函数可能具有最大数量的参数(尤其是由于资源有限),但是必须至少支持2个参数。 样品: f() 退货 0 f(1)或f("a")返回1 f([1, 2, 3])1在传递数组时返回,而不是3个参数 f(1, 10)或f(1, "a")返回2 因为这是代码高尔夫球,所以胜出的解决方案是使用最少字节数的解决方案。

21
最长的非重复子串
给定一个字符串作为输入,请找到没有两次或两次以上任何字符的最长连续子字符串。如果有多个这样的子字符串,则可以输出。如果需要,您可以假定输入在可打印的ASCII范围内。 计分 答案将首先按其自身最长的非重复子字符串的长度排序,然后按其总长度排序。对于这两个标准,较低的分数会更好。根据语言的不同,这可能会感觉像是带有源代码限制的代码高尔夫挑战。 琐事 在某些语言中,得分为1(x)或2(x)(脑筋和其他图腾焦油)非常容易,但是在其他语言中,最小化最长的非重复子字符串是一个挑战。在Haskell中获得2分很开心,因此,我鼓励您寻找有趣的语言。 测试用例 "Good morning, Green orb!" -> "ing, Gre" "fffffffffff" -> "f" "oiiiiioiiii" -> "io", "oi" "1234567890" -> "1234567890" "11122324455" -> "324" 计分提交 您可以使用以下代码片段为程序评分: 显示代码段 input.addEventListener("input", change); // note: intentionally verbose :) function isUnique(str) { var maxCount = 0; var counts = {}; for(var i = …

30
尽可能公平
介绍 在这个挑战中,您应该将整数分成两部分。由于没有人喜欢小菜一碟,因此您的目标是尽可能做到公平。例如,如果您想将整数7129分成两部分,则有3种可能的方法。 7,129,71,29并且712,9都是可能的,但这71,29是将其分为两部分的最公平的方法,因为它最大程度地减少了两者之间的差异: 7 129 -> |7-129| = 122 71 29 -> |71-29| = 42 712 9 -> |712-9| = 703 挑战 给定一个整数,如上所述,确定对其进行分区的最佳可能方式并报告产生的差异。 规则 拆分仅对长度至少为2的整数有意义,输入将​​始终≥10 输入可以是整数,数字列表或字符串 您不必处理无效的输入 测试用例 您只需要报告所产生的差异,分区仅在此处进行说明: 10 -> 1,0 -> 1 11 -> 1,1 -> 0 12 -> 1,2 -> 1 13 -> 1,3 -> 2 101 …

30
Flippign Lettesr Aroudn
在聊天时,我们往往快typers和真的不看顺序的字母发布消息前。由于我们很懒,因此我们需要一个程序来自动交换单词中的最后两个字母,但是由于我们不想响应太晚,因此代码必须简短。 您的任务(如果希望接受它)是编写一个程序,该程序翻转给定字符串中每个单词的最后两个字母(因此单词Thansk变成Thanks)。一个字是在英文字母的分隔的两个或多个字母序列的单一空间。 您确保输入的字符串/ 字符列表仅包含字母字符和空格(ASCII [97-122],[65-90]和32)。 您可以使用任何编程语言,通过任何标准方法输入和提供输出,同时请注意,默认情况下,这些漏洞是禁止的。 输出可能有一个尾随空格和/或一个尾随换行符。 输入将始终仅包含单词(和相应的空格),并将至少包含一个单词。 这是代码高尔夫,因此每种语言的最短提交(以字节计)将获胜! 测试用例 请注意,字符串用引号引起来,以提高可读性。 输入->输出 “谢谢”->“谢谢” “ Youer welcoem”->“不客气” “这是一个苹果”->“这是苹果” “ Flippign Lettesr Aroudn”->“翻转字母” “具有可互换字母的奇制”->“具有可互换字母的奇制” 或者,为了方便测试套件,以下分别是输入及其对应的输出: 坦斯克 Youer welcoem 这是一个苹果 Flippign Lettesr Aroudn 带有可替换字母的胆小包 谢谢 别客气 思娜娜·阿佩尔 翻转字母 交换字母的奇特挑战 感谢DJMcMayhem的标题。这最初是CMC。
33 code-golf  string 

30
找出以n结尾,可被n整除且其数字总和为n的最小正整数
全部在标题中... 以一个正整数作为输入n>=12,...进行标题说明的操作。 是的,这是在OEIS A187924上。 一些测试案例 12 -> 912 13 -> 11713 14 -> 6314 15 -> 915 16 -> 3616 17 -> 15317 18 -> 918 19 -> 17119 20 -> 9920 40 -> 1999840 100-> 99999999999100 这是代码高尔夫球。以字节为单位的最短代码胜出!

30
是我的矩阵箭头吗?
定义 一个箭头矩阵是一个矩阵,其具有所有条目等于0,除了在主对角线,顶行和最左一列的那些。换句话说,矩阵应如下所示: * * * * * * * * 0 0 0 0 * 0 * 0 0 0 * 0 0 * 0 0 * 0 0 0 * 0 * 0 0 0 0 * 其中每个*是任何非零条目。 任务 给定非负整数的方阵,请根据上面的定义检查其是否为箭头。 除非您的语言等效于数组,例如指针和长度(例如C),否则您可能不将矩阵的大小作为输入。始终至少为3 x 3。 每种语言中以字节为单位的最短代码获胜。 输入输出 您可以选择以下任何一种格式来接收输入: 本机矩阵类型的矩阵(如果您的语言有一种) 2D数组1(1D数组的数组,每个数组对应于一行) 一维数组(因为矩阵始终为正方形) …

1
微重力球
您正在使用先进的星际空间站。你们中一个在重力研究中成年的朋友刚刚创建了一个游戏,其中涉及使用微重力作为移动球的一种方法。 她递给您一个小型控制器,上面带有四个方向箭头,一个像迷宫一样的结构,左侧有一个球。她开始解释游戏的运作方式。 您有2个方向按钮,向左<和向右>。 您还具有^上下两个重力按钮v(至少从您的参照系来看) 您将使用这些箭头按钮在屏幕上四处移动球。 “现在有一些规则需要遵循。” 她说 到达杯子之前,必须遍历所有平台 \ / 箭头< > ^ v将用于指定球的运动 重力是^ v(上下)。这会将球一直沿该方向移动到下一个平台。(不计算上下距离) 丢球不好!请勿掉落边缘,也不要过早切换重力,以使您的球永远不会到达平台 运动以步长计算 < > 只要遵循规则1,球就可以从任何方向进入杯子 您必须指定重力方向,以使您的球不会漂浮 只要遵循规则1和规则4,移动可能是随机的 对于无法解决的情况,输出False或Invalid 球,平台和杯子的简单示例: v o ---\ / v> o ---\ / v>> o ---\ / v>>> o ---\ / v>>>> ---\o/ 再次遍历同一平台的示例。 v o ---- \ /------- v> …

11
编码一个整数
给定正整数n > 2。我们将其转换为数组,如下所示: 如果等于则2返回一个空数组 否则,创建所有n升序排列的所有素数的数组,然后将每个元素替换为其素数序列中的索引,最后将每个元素转换为数组 例如,让我们将数字转换46为数组。首先,将其转换为主要因子数组: [2, 23] 号码23是9个质数,所以更换2空数组并23用[9]。数组现在变为: [[], [9]] 的主要因子9是3和3,因此: [[], [3, 3]] 对两个都做相同的事情3: [[], [[2], [2]]] 最后: [[], [[[]], [[]]]] 现在,要对其进行编码,我们只需用替换每个开括号,1并将每个闭括号替换为0,然后删除所有结尾的零,并1从结尾删除一个。这是我们的二进制数。使用上面的示例: [ ] [ [ [ ] ] [ [ ] ] ] | | | | | | | | | | | | | | …

28
这是一个很强的词吗?
他们说这hate是一个有力的词。我想找出原因,因此很好地了解了这个词。 我注意到每个辅音后面都有一个元音。这使它看起来对我来说很坚强,所以我认为这就是使一个词更坚强的原因。 我想找到更强的词,因此需要一个程序! 寻找强词 强词是每个辅音(集合中的字母BCDFGHJKLMNPQRSTVWXZ)后跟元音(集合中的字母AEIOUY)的单词。而已。别的都无所谓。 如果单词以元音开头,则不必担心第一个辅音之前的任何字母。如果这个词根本没有辅音,那么它就自动成为一个强词! 强话的一些例子是agate,hate和you。agate仍然是一个很强的词,因为尽管它以元音开头,但每个辅音仍然跟着元音。you这个词很强大,因为它没有辅音。 强词的长度没有限制。 挑战 编写一个程序或函数,该程序或函数将非空字符串作为输入,如果它是一个强词,则输出一个真实值,否则,则输出一个虚假值。 澄清说明 您可以决定采用小写或大写形式输入。指定答案中的哪个。 单词将不包含任何标点符号。它们只包含纯字母ABCDEFGHIJKLMNOPQRSTUVWXYZ。 您可以选择两个不同且一致的值来代替true和false,以返回true和false。如果这样做,请指定您在答案中选择的值。 您也可以为强词输出假值,为非强词输出真值。 测试用例 Input -> Output hate -> true love -> true popularize -> true academy -> true you -> true mouse -> true acorn -> false nut -> false ah -> false strong -> false false …

30
用最大位数减少数字
任务: 给定十进制数字系统中的整数,将其减少为一个十进制数字,如下所示: 将数字转换为十进制数字列表。 找出最大的数字D 从列表中删除D。如果出现多个D,请从左侧选择第一个(最重要的位置),所有其他D应保持不变。 将结果列表转换为十进制数字,然后将其乘以D。 如果数字大于9(具有超过1个十进制数字),请重复整个过程,并将结果输入其中。得到一个数字的结果时停止。 显示结果。 例: 26364 -> 1. 2 6 3 6 4 2. The largest digit is 6, so D=6 3. There are two occurrences or 6: at positions 1 and 3 (0-based). We remove the left one, at position 1 and get the list …

8
没有同质邻居
给定一个正整数列表,输出其中每个相邻的整数对是否共享一个素数。换句话说,当且仅当列表中没有两个相邻的整数互质时,才输出true。 换句话说:给定正整数列表[a 1 a 2 …a n ],输出是否 gcd(a 1,a 2)> 1 && gcd(a 2,a 3)> 1 &&…&& gcd(a n-1,a n)> 1。 该列表将始终包含至少两个元素(n≥2)。 然而… 这个挑战也是受限制的:在您的答案中的代码点(无论它在哪个代码页中)都必须满足程序检查的条件。 例如,print 2是一个有效程序。作为Unicode代码点的列表,它是[112 114 105 110 116 32 50],它满足以下条件:112和114共享因子2;和114和105的共用一个因子3,等 然而,main能不能在一个有效的程序产生(对不起!),为的Unicode代码点m和a,即109和97,是互质。(非常感谢,您的提交不必是一个完整的程序!) 您的程序不允许包含代码点0。 测试用例 真相: [6 21] -> 1 [502 230 524 618 996] -> 1 [314 112 …

29
美元钞票拍卖
这是美元博弈游戏理论上的KOTH挑战。其中,一美元被卖给出价最高的人。出价以5美分递增,失败者也支付出价。他们的想法是,为了减少损失,两家公司都将竞标战争升级到远远超过一美元的价值。 希望您的机器人比这更聪明。 您将通过扩展net.ramenchef.dollarauction.DollarBidder课程来创建一个玩这种游戏的机器人。nextBid给定另一个机器人的先前出价,您必须实现返回机器人的下一出价的方法。如有必要,您还可以使用该newAuction方法为对手的机器人等级进行每次拍卖重置。 public abstract class DollarBidder { /** * Used by the runner to keep track of scores. */ long score = 0; /** * (Optional) Prepare for the next auction. * * @param opponent The class of the opponent's bot. */ public void newAuction(Class<? extends DollarBidder> opponent) {} …

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.