Questions tagged «code-golf»

Code-golf是在最小的源代码字节中解决特定问题的竞赛。

8
用字母概述单词
出于当前挑战的目的,“概述”一个单词的意思是先用最后一个字母依次包围它自己的字母,最后用空格替换中心的原始单词: oooooo onnnno on -> on no onnnno oooooo 任务: 给定一个仅由小写和/或大写英文字母组成的单词列表,勾勒出每个单词的轮廓,并水平相邻显示所有生成的块,并用一列单空格隔开,在块的中心垂直对齐。 您可以编写完整的程序或函数。 输入: 单词列表,或者如果您愿意-用空格或其他符号分隔的字符串 输出: 轮廓词块的ASCII表示形式。允许前导/尾随空格。 测试用例: Input 1: ["code", "golf"] (or "code golf") Output 1: cccccccccccc gggggggggggg cooooooooooc goooooooooog coddddddddoc gollllllllog codeeeeeedoc golfffffflog code edoc golf flog codeeeeeedoc golfffffflog coddddddddoc gollllllllog cooooooooooc goooooooooog cccccccccccc gggggggggggg Input 2: ["I", "am", …

6
文字计算器
英文数字计算器的简化版本 任务 编写一个将字符串作为输入并输出表达式结果的程序。 规则 输入的字符串将是单词而不是数字。 不会有括号。 计算顺序将相除,相乘,相减然后相加。 对于相同的操作,必须从左到右进行计算。 所有输入数字都是-999至999(包括两端)的整数 输出将是任何范围的整数。 除法永远是完全可分割的,零永远不是分母。 输入的大小写限制是可选的。您不必检查输入的有效性。 数字格式 0 to 20 -> zero,one,two...nineteen,twenty 21 to 99 -> twenty one,twenty two.....ninety eight,ninety nine 100 to 999 -> one hundred, one hundred one, one hundred two...one hundred ten....two hundred fifty....nine hundred ninety eight,nine hundred ninety nine 对于负数:minus加到正数 …
14 code-golf 

5
麻省理工学院的教授需要AP!
5张牌魔术包括一名魔术师,其助手按顺序给了他们4张显示的卡和一张隐藏的卡,魔术师必须猜出隐藏的卡。 警告:下面的解决方案!立即离开或宠坏它。 解决方案 这里的诀窍是五张卡是按特定顺序给出的! c1,...,c5c1,...,c5c_1,...,c_5是给定顺序的5张卡。 xnxnx_n是cncnc_n的卡号,其中NO=[A,2,3,4,5,6,7,8,9,T,J,Q,K]NO=[A,2,3,4,5,6,7,8,9,T,J,Q,K]NO=[\text{A,2,3,4,5,6,7,8,9,T,J,Q,K}](数字顺序)。 a+ba+ba+b,其中aaa是一个卡号和bbb是整数,等于卡号bbb步骤的右边aaa在NONONO,如果必要的话缠绕到开始处。 snsns_n是的西服cncnc_n在SO=[♣,♢,♡,♠]SO=[♣,♢,♡,♠]SO=[\clubsuit,\diamondsuit,\heartsuit,\spadesuit](西服顺序)。 a∘ba∘ba\circ b,其中aaa是一个卡号和bbb是西装表示与卡号的卡aaa和花色bbb。 a<ba<bab如果 a < b为假,则 a > b(其中aaa和bbb为卡)为true。a<ba<bac>a&2\\\hline a>ba&3\\\hline acbb>c&6\\\hline\end{array} 与5-卡魔术的解决方案是问题是:c5=(x1+PI(c2,c3,c4))∘s1c5=(x1+PI(c2,c3,c4))∘s1c_5=(x_1+PI(c_2,c_3,c_4))\circ s_1 挑战 到目前为止,一切都很好。但是,这里已经要求进行上述指定的计算。相反,您面临的挑战是,给5张卡片没有特定的顺序,以正确地对其进行排序。这意味着输出中的前四张卡将代表第五张。换句话说,当助手。要求: s5=s1s5=s1s_5=s_1。 x5=x1+PI(c2,c3,c4)x5=x1+PI(c2,c3,c4)x_5=x_1+PI(c_2,c_3,c_4)(也就是说,这必须是可能的)。 例 让我们考虑一下set 7H,2D,6D,5C,6C。首先,我们采用25对: 7H,7H 7H,2D 7H,6D 7H,5C 7H,6C 2D,7H 2D,2D 2D,6D 2D,5C 2D,6C 6D,7H 6D,2D 6D,6D 6D,5C 6D,6C 5C,7H 5C,2D 5C,6D 5C,5C 5C,6C 6C,7H 6C,2D …

2
不耐烦的可除性测试
您的任务是编写一个程序或函数,以确定一个数字是否可以被另一个数整除。要注意的是,即使没有给出数字的全部数字,也应尽快给出答案。 你的程序应该采取的整数d ≥2,然后是一连串的数字作为输入。这些代表的另一数字整数Ñ ≥1,开始于至少显著数字。在第一点ñ要么必须或不能被divisble d,你的程序应该输出适当的答案并退出。如果到达输入的末尾,则应输出完整的N是否可被D整除。 这是N可接受的输入格式的列表 (如果您认为应该允许不包含的内容,请留下评论): 标准输入:数字在单独的行上给出; 输入的结尾为EOF或特殊值; exit表示函数返回或程序退出。 模拟输入:例如通过击键或代表每个数字的十个按钮; 输入的结尾是一个特殊值; exit表示函数返回或程序退出。 具有全局状态的功能:用连续的数字重复调用; 输入的结尾是一个特殊值; exit表示该函数返回一个非null值。请注意,如果您使用全局状态,则必须在返回值或以其他方式重置后清除它,以使该函数可以多次运行。 Curried函数:返回另一个要用下一位数字或值调用的函数; 输入的结尾是一个特殊值或不带参数的函数; exit表示该函数返回答案,而不是另一个函数。 GUI提示或类似内容:重复显示; 输入的结尾是“取消”或等效值,或特殊值; 退出意味着提示停止出现。 迭代器函数:输入是有状态对象或函数,在调用时返回下一个数字 ,输入结尾是异常或特殊值; 退出意味着迭代器停止被调用。 D的输入和输出可以通过任何可接受的标准方法进行。 测试用例: 2; 6 => true 5; 6 => false 20; 0 3 => false 20; 0 4 => true 100; 1 => false 100; …

16
切碎我的ASCII艺术
假设我有一些ASCII艺术: ___ ,"---". : ; `-.-' | | | | | | _.-\_/-._ _ / | | \ _ / / `---' \ \ / `-----------' \ /,-""-. ,-""-.\ ( i-..-i i-..-i ) |`| |-------| |'| \ `-..-' ,=. `-..-'/ `--------|=|-------' | | \ \ ) ) hjw / / …

30
所有三个整数都不同吗?
您将获得3个整数作为输入。输入可以彼此相同或可以彼此不同。如果所有三个输入都互不相同,则必须输出1;如果任何输入重复多次,则必须输出0。 这是代码高尔夫球,因此请使您的代码尽可能短!

12
下班同事的问候机器人
我有一个同事在工作,每个星期二和星期四在家工作。在大约8:00 AM,他向我们发送了以下消息: 你好,今天我在家工作 为了减轻他每天待在家里的负担,我们希望为他自动化此任务。 挑战 编写尽可能少的字节的一段代码: 接收当前时间:您的代码可能会接收当前年,月(1-12),月(1-31),小时(0-23)和分钟(0-59)以及星期几的值(您可以选择此数字是从0还是1开始,如果0/1表示星期日,星期一或其他任何一天);另外,您可能会收到一个结构,如Date,DateTime,Calendar或者任何其他时间相关的结构,如果你的语言允许它。yyyyMMddHHmm如果需要,您还可以接收带有日期的字符串,或者包含两个单独的日期和时间字符串,然后是带有星期几的整数。随便吧。 返回两个一致的真实和错误值,指示是否必须将消息发送到工作聊天室。 规则 假定这段代码是定期调用的。尽管如此,确切的周期是无关紧要的。 如果星期几是星期二或星期四,时间是8:00 AM,错误余量为10分钟(包括7:50至8:10),则必须返回真实值。 只有在指定日期的这些小时之间第一次调用代码时,才必须发送真实值。我们不希望机器人连续发送多次相同的消息。您管理此限制的方式完全取决于您。 您的代码可能是重复执行的独立程序,也可能是始终运行的较大代码的一部分。你的选择。 您可以假设在执行代码之间不会重新启动。 您可能会认为日期永远是正确的。 鼓励对代码进行解释,尤其是对用于实现持久性的方法的解释。 例子 (Week starts on Monday: 1, the following invokations will be made in succession) 2018,08,27,08,00,1 = falsey (not Tuesday or Thursday) 2018,08,28,07,45,2 = falsey (out of hours) 2018,08,28,07,55,2 = truthy (first time invoked …

15
算术和中缺少数字
挑战 给定一个有效的算术和,并包含一些缺失的数字,输出完整的表达式。 例: 1#3 123 + 45# => + 456 -------- -------- 579 579 输入值 表达式格式可以是数组["1#3", "45#", "579"],字符串"1#3+45#=579"或3个输入f("1#3","45#","579") 输出量 与输入相同 您不需要输出结果 笔记 缺失的数字将使用#或您想要的任何其他恒定非数字字符表示 假设结果不会缺少数字 假设输入/输出包含2个项和一个最终结果 假设两项> 0且结果> = 2 可能有多种解决方案。您可以输出任何人,只要总和结果匹配 具有可能的输出的测试用例(漂亮的格式) #79 879 + 44# => + 444 -------- -------- 1323 1323 5#5 555 + 3#3 => + 343 -------- …

10
Sequentia Filii Bonacci
比萨的莱昂纳多(约1175年-约1245年)以斐波那契闻名。但这实际上是18世纪(根据维基百科)组成的拉丁语“ filius Bonacci”(Bonacci的儿子)的缩写。)。 在此挑战中,您将获得一个介于1日和20日之间的序数(按字面意义),并且您必须返回斐波那契数列中的相应项。 所不同的是,序数将以拉丁文给出。 例如:“ duodecimus”→ 。898989 完整的I / O表 input | meaning | output --------------------+---------+-------- "primus" | 1st | 0 "secundus" | 2nd | 1 "tertius" | 3rd | 1 "quartus" | 4th | 2 "quintus" | 5th | 3 "sextus" | 6th | 5 "septimus" | 7th …

16
查找阵列运行
在数组中找到运行 行程定义为三个或三个以上的数字,它们以恒定的步长从上一个数字开始递增。例如,[1,2,3]是带有步骤1的运行,[1,3,5,7]是带有步骤2的运行,而[1,2,4,5]不是运行。 我们可以用符号“ i到j由s”表示这些运行,其中i是运行的第一个数字,j是运行的最后一个数字,而s是步骤。但是,步骤1的运行将表示为“ i至j”。 因此,使用之前的数组,我们得到: [1,2,3]->“ 1to3” [1,3,5,7]->“ 1to7by2” [1,2,4,5]->“ 1 2 4 5” 在这个挑战中,您的任务是对可能多次运行的阵列执行此操作。 具有递归的示例Python代码: def arr_comp_rec(a, start_index): # Early exit and recursion end point if start_index == len(a)-1: return str(a[-1]) elif start_index == len(a): return '' # Keep track of first delta to compare while searching first_delta …

5
最佳缓存
您将获得一系列的内存请求和一个缓存大小。在任何高速缓存替换策略下,您必须返回尽可能少的高速缓存未命中数。 最佳策略是Belady的算法,您可以根据需要使用它。 缓存系统的工作方式如下:缓存开始为空。内存请求进来。如果请求在高速缓存中请求一条数据,一切都很好。否则,您将导致缓存未命中。此时,您可以将请求的数据插入缓存中以备将来使用。如果缓存已满,并且您想插入新数据,则必须逐出缓存中先前的数据。您可能永远不会插入不仅在缓存中的数据。 您的目标是针对给定的内存请求序列和缓存大小,找到最少可能的缓存未命中数。 系统会为您提供缓存大小,正整数和内存请求序列(这是令牌列表)。这些令牌可以是您喜欢的任何类型的令牌,只要可以使用至少256个不同的令牌(字节就可以,布尔不是)。例如,整数,字符串,列表都可以。如果需要,请进行澄清。 测试用例: 3 [5, 0, 1, 2, 0, 3, 1, 2, 5, 2] 6 请参阅维基百科,以获取实现此目的的替代政策。 2 [0, 1, 2, 0, 1, 0, 1] 3 只需避免添加2到缓存中。 3 [0, 1, 2, 1, 4, 3, 1, 0, 2, 3, 4, 5, 0, 2, 3, 4] 9 实现此目的的一种方法是永远不要逐出0和2,并且1在最后一次使用后尽快将其逐出。 计分:这是代码高尔夫球。最少的字节数获胜。

6
图5着色
老实说,我不敢相信这还没有被问到,但这是 背景 给定一个简单的无向平面(该图可以在没有相交的平面上绘制)图,这是一个证明定理,即该图是4色的,这是我们稍后将要探讨的术语。但是,对图形进行5色绘制要容易得多,这就是我们今天要重点解决的问题。 图的有效k着色是对具有以下属性的图的节点分配“颜色” 如果两个节点通过一条边连接,则这些节点将使用不同的颜色进行着色。 在整个图形中,最多有5种颜色。 鉴于此,我将向您展示一个非常基本的算法,以对任何简单的无向平面图进行5种颜色着色。该算法需要以下定义 可达性:如果节点1可从节点2到达,则意味着存在一系列节点,每个节点通过一条边连接到下一个节点,因此第一个节点是节点2,最后一个节点是节点1。请注意,由于无向图是对称的,如果节点1可从节点2到达,则节点2可从节点1到达。 子图:给定节点集的图的子图N是其中子图的节点全部在N中的图,并且当且仅当两个节点都通过边连接时,原始图的边才在子图中在北 假设Color(N)是为带有5种颜色的N个节点的平面图着色的函数。我们在下面定义函数 查找连接的节点数最少的节点。该节点最多连接5个节点。 从图中删除该节点。 在此新图形上调用Color(N-1)对其进行着色。 将已删除的节点添加回图。 如果可能,请为添加的节点上色,使其所连接的节点都没有该颜色。 如果不可能,则添加节点的所有5个相邻节点都有5种不同的颜色,因此我们必须尝试以下过程。 编号添加节点n1 ... n5周围的节点 考虑原始图中所有节点的子图,其颜色与n1或n3颜色相同。 如果在此子图中,无法从n1到达n3,则在从n1(包括n1)可到达的节点集中,将所有出现的n1颜色替换为n3,反之亦然。现在为添加的节点n1的原始颜色上色。 如果在此新图中从n1可以到达n3,请在节点n2和n4而不是n1和n3上从步骤9开始执行过程。 挑战 给定边列表的输入(代表图形),通过为每个节点分配一个值来为图形着色。 输入:图形中边的列表(即[('a','b'),('b','c')...]) 请注意,输入边列表将使得如果(a,b)在列表中,而(b,a)不在列表中。 输出:包含对值,其中每对的第一个元素是一个节点的一个目标,并且所述第二颜色,即[('a',1),('b',2)...]或{'a':1,'b':2,...} 您可以使用任何东西来代表颜色,从数字到字符,再到其他。 输入和输出非常灵活,只要它很清楚输入和输出是什么即可。 规则 这是一个代码高尔夫挑战 您不必使用我上面描述的算法。它只是那里供参考。 对于任何图形,通常有许多有效的着色方法。只要算法产生的着色有效,就可以接受。 请记住,图表必须是5色。 测试用例 使用以下代码测试着色结果的有效性。由于每个图形有许多有效的图形着色,因此该算法仅检查着色的有效性。请参阅文档字符串以了解如何使用代码。 一些随机(相当愚蠢)的测试用例: 测试案例2:Krakckhardt风筝图 [(0, 1), (0, 2), (0, 3), (0, 5), (1, 3), (1, 4), …

1
使辐射硬化奎因
昨晚,我在寻找“辐射硬化奎因”挑战,但找不到。原来还没有人问!所以这里是: 您的任务是制作一个quine,这是一个非空的计算机程序,可以打印其自身的源而不读取它。另外,如果您从原始程序中删除任何一个字节,则新程序应打印原始程序的源。 这是代码高尔夫,因此答案以字节计分,而字节越少越好。

3
多级免费停车位查找器
与孩子相关的介绍 每当我带孩子去游乐园时,我们离公园越近,孩子们就会变得越紧张,当我们在停车场而找不到停车位时,就会感到神经紧张。因此,我决定我需要一种方法来找到最近的免费停车位,以最大程度地减少停车时间。 技术介绍 想象一下这样的停车场的示意图: ***************** * * * ··CC··C··CC·· * * ************* * * ··CCCCCCCCC·· * * * **********E****** 在此表示中,是*指墙壁,·免费停车位,E入口和C已经停放的汽车。每个空白处都是要停放的汽车可用于在停车场周围移动的位置。现在让我们将此概念扩展到3D以创建多层停车场: 1st floor 2nd floor 3rd floor 4th floor ***************** ***************** ***************** ***************** * 1 * 2 * 3 * * * CCCCCCCCCCCCC * * CCCCCCCCCCCCC * * ····C··CCCCCC * * …

11
计算时间表
时间表 在工作场所,您通常必须填写时间表。此任务是编写代码来帮助实现此目的。 输入值 在稍微不标准的12小时时钟中两次,表示一天的开始和结束,以空格隔开。第三个数字代表午餐时间。例如 9:14 5:12 30 这意味着您在上午9:14开始工作,在下午5:12完成工作,花了30分钟的午餐时间。 您可以假设 第一列中的任何时间是从00:00(午夜)开始至下午1点(但不包括下午1点),第二列中的任何时间最早是从1pm直到11:59 pm。 午休时间不超过工作日! 输入格式必须与给定的示例中相同。 任务 您的代码应读取这些三元组的文件(或标准输入),并且对于每个输出,您需要工作多长时间。此输出应指示小时数。对于上面的示例,这是: 7小时58分钟减去30分钟,即7小时28分钟。 输出量 您的输出必须指定(全部)小时和分钟数,并且列出的时间不得超过59分钟。那就是你不能输出2小时123分钟。除此之外,您的代码可以以任何方便您阅读的易于阅读的格式输出。 例子 10:00 1:00 30 --> 2hr 30min 12:59 1:00 0 --> 0hr 1min 00:00 11:59 0 --> 23hr 59min 10:00 2:03 123 --> 2hr 0min
14 code-golf  date 

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.