编程拼图和代码高尔夫

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

9
马尔可夫过程的收敛
挑战 给定一个左或右随机矩阵,其中x的极限接近矩阵的无穷大,x的幂接近具有所有有限值的矩阵,则返回矩阵收敛到的矩阵。基本上,您想保持矩阵自身相乘,直到结果不再改变为止。 测试用例 [[7/10, 4/10], [3/10, 6/10]] -> [[4/7, 4/7], [3/7, 3/7]] [[2/5, 4/5], [3/5, 1/5]] -> [[4/7, 4/7], [3/7, 3/7]] [[1/2, 1/2], [1/2, 1/2]] -> [[1/2, 1/2], [1/2, 1/2]] [[1/3, 2/3], [2/3, 1/3]] -> [[1/2, 1/2], [1/2, 1/2]] [[1/10, 2/10, 3/10], [4/10, 5/10, 6/10], [5/10, 3/10, 1/10]] -> [[27/130, …
10 code-golf  matrix 

3
RoboZZle口译员
您的任务是编写RoboZZle解释器。如果您不熟悉该游戏,请在robozzle.com上观看视频或阅读下面的说明。 机器人生活在一个正方形的红色,绿色,蓝色或黑色正方形网格中。黑色方块无法访问。其他的则可以访问,其中一些包含星号。目标是收集所有星星,而不会踩到黑色方块或从地图上掉下来。机器人占据一个正方形并面向特定方向-左,右,上或下。它遵循类似汇编的指令,分为子程序F1,F2,...,F5。一条指令是一对谓词(“无”,“如果红色”,“如果绿色”,“如果蓝色”)和一个动作(“前进”,“左转”,“右转”), “将当前方块涂成红色”,“将其涂成绿色”,“将其涂成蓝色”,“什么都不做”,“调用F1”,...,“调用F5”)。对子例程的调用使用堆栈,并且可以是递归的。就像在常规编程中一样,在子例程的最后一条指令完成之后,从调用子例程的那一点开始执行。从F1的第一条指令开始执行,一直持续到机器人访问带有星星的所有正方形,或者机器人踩到黑色正方形或在地图外部或执行了1000条指令(谓词失败且“不执行任何操作”) (不计算在内),或者没有更多要执行的指令(堆栈下溢)。 输入: a-编码地图的12x16字符矩阵(通常用您的语言表示,例如字符串数组)对地图'#'进行编码- 不可访问的(黑色)正方形,'*'带有星星的正方形,'.'其余的 c-12x16字符矩阵,描述可访问正方形的颜色- 'R'(红色),'G'(绿色)或'B'(蓝色)。无法访问的方块将由三个中的任意字母表示。 y和x-机器人的基于0的行和列; a[y][x]保证是'.' d-的方向上的机器人朝向:0 1 2 3右,下,左,上,即朝向(y,x+1),(y+1,x),(y,x-1),(y-1,x) f-单个字符串,F1 ... F5的串联实现。每个实现都是谓词操作对的序列(可能为空)(每个子例程最多10对),以终止'|'。 谓词:'_'无,'r'红色,'g'绿色,'b'蓝色 动作:'F'向前,'L'向左'R'转,向右转,'r'涂红色,'g'涂绿色,'b'涂蓝色,'1'呼叫F1,...,'5'呼叫F5,'_'不执行任何操作 您不必像上面一样命名输入,但是它们的值必须与指定的相同。 输出:(1或true)如果机器人根据规则收集了所有恒星,则为0(false)。 范例: a=["################","################","##*....*...*#.##","##.####.#####.##","##.####.#####.##","##.####*...*#.##","##.########.####","##*........*#.##","################","################","################","################"] c=["RRRRRRRRRRRRRRRR","RRRRRRRRRRRRRRRR","RRRBBBBRGGGGRRRR","RRBRRRRGRRRRRRRR","RRBRRRRGRRRRRRRR","RRBRRRRRGGGBRRRR","RRBRRRRRRRRGRRRR","RRRBBBBGGGGBRBRR","RRRRRRRRRRRRRRRR","RRRRRRRRRRRRRRRR","RRRRRRRRRRRRRRRR","RRRRRRRRRRRRRRRR"] y=2; x=6; d=2 // and then depending on "f": f="_FrLg2_1|_FbLrR_2||||" // result:1 f="_FrRg2_1|_FbLrR_2||||" // result:0 (stepped on a black square) f="_FrLrL_1|_FbLrR_2||||" // result:0 (1000-step limit …

26
加权平均-压力趋势问题
假设此阵列是过去28天内每天获得的俯卧撑次数: [ 20,20,20,30,30,30,30, 35,35,40,40,40,45,45, 50,50,50,50,50,50,50, 60,70,80,90,100,110,120 ] 如您所见,上周呈急剧上升趋势,这是我最感兴趣的数据。过去越远,我希望该数据在“平均值”中的作用就越小的次数。 为此,我想制定一个“平均”,其中每个星期都比前一周更有价值。 背景信息,不是此问题的一部分。 正常平均值: 所有值的总和/数量 对于以上: 1440/28 = 51.42857142857143 加权平均: 将阵列分成7组的4组,然后启动一个新阵列。 将第一个组添加到数组。 将第二组添加到阵列两次。 将第三组添加到数组三次。 将第四组添加到阵列四次。 由长度总结所有的新阵列的,和除法新阵列。 对于以上: 将数组转换为此: [ 20,20,20,30,30,30,30, # first week once 35,35,40,40,40,45,45, 35,35,40,40,40,45,45, # second week twice 50,50,50,50,50,50,50, 50,50,50,50,50,50,50, 50,50,50,50,50,50,50, # third week thrice 60,70,80,90,100,110,120, 60,70,80,90,100,110,120, 60,70,80,90,100,110,120, 60,70,80,90,100,110,120 # Fourth …

11
N次程序的N次程序
给定一个正整数数组A作为输入,请生成一个程序,该程序重复k多次后,将输出k该数组的th(1-index)值。 例如,如果数组为[1,11],则输出应该是输出的程序1,并且当重复两次时,输出为11。类似于print(end="1");Python 3的代码可以工作:print(end="1");打印1和print(end="1");print(end="1");打印11 解决所有测试用例的最小代码长度总和。您的元代码应在60秒内解决500个测试用例,而每个解决方案代码应在10秒内返回。元代码和解决方案代码不必使用相同的语言,但是您的元程序生成的所有解决方案都应该使用相同的语言。 预测试数据和生成器可以在这里看到。7天后将使用提交时间的总和(例如12:34平均1234)作为随机种子,并生成另一个测试用例作为最终测试用例。 最终种子是GMT + 8中的7335,因此最终测试数据在此处

2
网格中最大的正方形[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 2年前关闭。 挑战 给定这样的网格 1 2 3 4 5 6 7 8 1 . . . . . . . . 2 . # . . . # . . 3 . . . . . . . . 4 . . . . …

8
从构成完美正方形的序列中收集
给定序列OEIS A033581,它是无限序列,则第n个项(0索引)由封闭形式公式6×n 2给出。 您的任务是编写代码,该代码将输出序列中N个第一个数字集合的所有子集,以使子集的总和为一个完美的平方。 规则 N给出整数作为输入。 您不能重复使用已在总和中使用的数字。(也就是说,每个数字最多可以出现在每个子集中一次) 使用的数字可以是非连续的。 以最小的代码获胜。 例 给定的顺序为{0,6,24,54,96,...,15000} 所需的子集之一将是{6,24,294},因为 6+24+294 = 324 = 18^2 您需要找到给定范围内所有可能长度的所有此类集合。

3
使用质数形成列表
您已获得N堆硬币。您已决定将B 1,B 2,...,B N堆中的每堆划分为不同的人群。接收硬币的人数必须是质数,并且每一堆中分配给每个人的金额必须不同。 输入:N,B 1,B 2,...,B N(每堆硬币的数量)。 输出:NP 1,NP 2,...,NP N,其中NP是接收硬币的人数(素数)。如果这是不可能的,然后产生一些无法实现的结果(如0,-1,None,[],或"impossible"),或引发错误。 例: 3 7 8 9 输出: 7 2 3 因为7是唯一可以将7平均除的质数,所以8和2以及9和3也是相同的。此外,请注意(7/7 = 1)≠(8/2 = 4)≠(9/3 = 3 )。

1
挑战8:存储车运输计划!
<<上一页 感谢PPCG社区,圣诞老人现在已经平衡了他的储物车。现在,他需要将它们移入运输码头,以便可以将它们发送到装卸区。不幸的是,用来移动推车的轨道是一团糟,他需要弄清楚如何使它们四处走动而不会撞在一起! 挑战 您将获得每个推车的轨道,作为“标签”(或车站)列表。必须移动推车,以便在任何时间框架内,没有两个推车位于同一标签/站上。本质上,手推车在每个都有唯一标签的位置之间移动。 任务 给定每个购物车的轨道作为标签列表的列表(均为正整数),请确定何时应释放每个购物车,以便在尽可能短的时间内安全地将所有购物车发送到目的地。 这是整个轨道系统如何工作的解释。假设购物车i有时被t_i放到带有标签的轨道上T_i_1, T_i_2, ..., T_i_n。然后,在t_1到t_i-1,车i不上格,可以忽略。 在时间范围内t_i,购物车在标签上T_i_1,对于t_k从t_i到的每个时间范围t_i+n(包括半值),购物车都在标签上T_i_k+1。 对于之后的所有时间范围(包括之后)t_i+n,购物车都位于其目的地,并且不再位于网格上。 所花费的总时间t_T是系统中轨道仍在推车上的最后时间范围。 技术指标 给出的轨道系统,返回时间帧的列表[t_1, t_2, ..., t_n],其中i个车开始在时间t_i,使得没有其他的安排将使车安全地到达目的地,随着时间较少总量。 在“安全”方面,如果在任何时间框架t_1,以t_T有任何标签上超过一个购物车,然后他们碰撞和安排是不“安全”。请注意,两个手推车可以从a, b移到b, a,但仍然是“安全的”,因为轨道是双向的。 格式化规格 输入将以任何合理格式的正整数矩阵形式给出。输出应以任何合理格式的正整数列表形式给出。您可以在零索引的时间范围内提供输出,因此输出将是任何合理格式的非负整数列表。 规则 适用标准漏洞 这是一个代码高尔夫球,所以最短答案以字节为单位 没有答案将被接受 测试用例 Input -> Output [[1, 2, 3], [4, 5, 6], [7, 8, 9]] -> [1, 1, 1] [[1, 2, 3], [1, 2, 3]] …

4
我有许可吗?
挑战 给定一个指示文件的UNIX权限及其所有权(用户ID和组ID)的符号表示形式的字符串,请确定给定的用户是否A具有读取/写入/执行该文件的权限。 相关的。 UNIX系统中的权限 在UNIX中,每个文件都有三类权限(user,group和others)和所有权,包括文件所属的用户和组。 符号表示法由十个字符组成。在这个挑战中,第一个角色并不重要。其余的9个字符位于三个字符集的三个集合中,分别代表用户,组和其他类的权限。每组中的字符表示是否允许读/写/执行。如果允许的话,这将是r,w或x。否则,它将为-。 注意的setuid,setgid的和粘滞位可每一组的第三个字符改变为s,S,t或T。这是一个简单的规则:如果字符是小写字母,则设置权限;否则,事实并非如此。 (有关权限的符号表示法的详细信息,请参阅此处。) 每个用户都有其用户ID,每个组都有其组ID。所有ID将为非负整数。一个用户将至少属于一个组。如果用户A想要访问文件,则系统将按以下方式检查其权限: 如果文件属于user A,请检查用户类的权限。 如果文件不属于A,但A属于文件所属的组,请检查组类的权限。 否则,请检查其他类的权限。 但是,有一个例外:如果用户ID为0(超级用户),则他们有权执行任何操作! 技术指标 您的程序/函数应该以任何合理的格式将它们作为输入: 以符号表示的权限。 文件所属的用户标识和组标识。 的用户ID A和A所属的组ID列表。 访问类型。您可以使用任何三个不同的一位数或一个字符的值进行读取,写入和执行。 如果A有权访问文件,则返回/输出一个真实值;否则,返回/输出一个虚假值。 您可以假定符号的第一个字符将始终为-(常规文件)。 这是代码高尔夫球,因此最短的字节为准! 测试用例 格式为[permissions, user ID of file, group ID of file, user ID of A, group IDs of A, type(r/w/x)]。 [-rwx------, 13, 15, 13, [15, 24], r]: …

6
这是令人满意的数字吗?
受此聊天对话启发 甲满足号码是一个号码,其十进制表示的形式为abx,具有以下属性: x是最长的尾随重复后缀,如果末尾没有重复,则为最后一位(123333-> 3333,545656-> 5656,123-> 3) b是x(123333-> 2,55545656-> 4)之前的一位数字 a是剩余的前缀(123333-> 1,55545656-> 555) a == c**b(**表示指数),其中c是x(1623333-> 4(3 3 3 3,不是33 33))的最小重复部分的重复次数 例如,8300是具有满足数a = 8,b = 3,c = 2,和x = 00。24651是不是一个满意的数字,因为x = 1,b = 5,a = 246,并且没有整数c是满足c^5 = 246。1222也不是令人满意的数字,因为使用x = 222和时b = 1,没有剩余数字a。 给定正整数n >= 100,输出是否n为令人满意的数字。 例子 8300: True (a=8, b=3, c=2, …

3
什么可以分配给什么?
有关 什么可以分配给什么? 在本次挑战中,您将获得两种类型,A并B确定A是可分配给B,B可分配给A还是都不分配。 类型系统 (我将t用来表示任何类型) 基本类型 基本类型用单个大写字母表示,例如X。它们基本上是类。 X是分配给Y如果Y是任一相同,或父类X。 交叉点类型 交集类型由表示intersect<X, Y>,并且在之间可以具有任意数量的类型<(例如intersect<X, Y, Z, D, E>)。 t可以分配给intersect<X1, X2... Xn>if t可以分配给all X。 intersect<X1, X2... Xn>是分配给t如有X可分配给t。 联合类型 联合类型由表示,union<X, Y>并且之间可以有任意多种类型<(例如union<X, Y, Z, D, E>)。 t可分配给union<X1, X2... Xn>if t,可分配给any X。 union<X1, X2... Xn>t如果所有X都可分配给,则可分配给t。 输入值 您将收到以下输入: 类层次结构。您可以为类层次结构选择输入方法。您可以输入树的表示形式,或者输入每种类型的树及其父级列表,或者输入任何其他能准确表示类层次结构的形式。 两种类型(输入是灵活的,只要符号一致,您就可以随意接收这些类型)。 输出量 您将在三个一致和不同值的输出之一,给他们打电话X,Y和Z。鉴于两种类型A和B输出X,如果A是分配给B输出Y,如果B是分配给A和输出Z,否则(如果A是分配给B和B可分配给A,你可以输出X,Y,这两者或第四值)。 测试用例 格式: # of types [type, …

8
BIU编号(或汇总编号)
如何发现他们 取正整数k。找到它的除数。找到每个除数的不同素数。将所有这些因素加在一起。如果此数字(和)是k的除数(如果该和除以k),则此数字k是BIU数 例子 让我们以数字为单位:54 查找所有除数: [1, 2, 3, 6, 9, 18, 27, 54] 查找每个除数的不同素数因子 注意:对于1我们,我们将其视为不同的素因子1 1 -> 1 2 -> 2 3 -> 3 6 -> 2,3 9 -> 3 18 -> 2,3 27 -> 3 54 -> 2,3 现在我们采取的总和所有这些素因子 1+2+3+2+3+3+2+3+3+2+3=27 27鸿沟54(叶子没有余数) 所以,54 是一个BIU数。 另一个(快速),例如为k=55 除数: [1,5,11,55] 鲜明的首要因素总: 1+5+11+5+11=33 33是不是 …

6
这是一部电影的挑战
这是一个简单的(ish)Web抓取挑战。 输入值 您的代码应采用MPAA电影评分,并输入0到100之间的数字。它可以通过您认为方便的任何方式执行此操作。 输出量 您的代码应返回任何电影的名称,该电影应具有a)影片评级和b)Rotantomatoes在Tomatometer上的数字得分。 如果没有这样的电影,它可以输出任何您喜欢的东西。 可能的MPAA影片等级为G, PG, PG-13, R, NC-17, NR。 您的代码可能会报告一部或多部电影,具体取决于您。 为了明确起见,您的代码旨在访问网络以获得查询的答案。 例 假设输入是“ PG,98”,那么您的代码可以输出“ Zootropolis”。 请显示一个示例代码,说明影片的评分PG和得分98以及答案。

17
近似我的平方
受到tecmath 这段视频的启发。 x通过取整数平方根s(即使得的最大整数s * s ≤ x)然后计算,可以找到任意数量的平方根的近似值s + (x - s^2) / (2 * s)。让我们称之为近似值S(x)。(注意:这等效于应用牛顿-拉夫森方法的一个步骤)。 尽管这确实有些古怪,但S(n ^ 2-1-)始终为√(n ^ 2),但通常它是非常准确的。在某些较大的情况下,这可以具有> 99.99%的精度。 输入输出 您将采用任何方便的格式输入一个数字。 例子 格式:输入->输出 2 -> 1.50 5 -> 2.25 15 -> 4.00 19 -> 4.37 // actually 4.37 + 1/200 27 -> 5.20 39 -> 6.25 47 -> …

16
我们共享主要集群吗?
的素簇的整数的Ñ高于2被定义为通过最高素所形成的一对严格低于Ñ和最低素严格高于Ñ。 请注意,按照上述定义,如果整数是质数本身,然后其首要簇是一对素数的前述和随后它。 任务 给定两个整数,整数N,M(N,M≥3),根据N和M是否具有相同的素数簇,输出真实/虚假值。 这是代码高尔夫球,因此目的是尽可能减少字节数。因此,以每种编程语言中最短的代码为准。 测试用例/示例 例如,9的素类为[7, 11],因为: 7是严格低于9的最高素数,并且 11是严格高于9的最低素数。 同样,素数群集67是[61, 71](请注意67是素数)。 真对 8、10 20、22 65、65 73、73 86、84 326、318 513、518 假对 4、5 6、8 409、401 348、347 419、418 311、313 326、305

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.