编程拼图和代码高尔夫

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

6
可以使用异常取消来简化分数吗?
异常取消(来自Wolfram Alpha): 异常抵消是分数a / b的分子和分母中a和b的数字“取消”,导致分数等于原始数。请注意,如果分子和分母中一个或多个数字存在多个但不同的计数,则对于要取消的数字有歧义,因此最简单的方法是将此类情况排除在考虑范围之外。 链接 用简单的话说,你有一个分数a / b。如果您可以抵消分数中的数字以创建另一个c / d等于原始分数(a / b = c / d)的分数,则可以使用异常抵消来简化分数。 您的挑战是制作一个程序或函数,该程序或函数以形式输入分数字符串a/b并输出或返回真实值(如果可以使用反常消除来简化分数),否则返回伪造的值。a并且b将始终为非零的正整数。a并且b将始终具有两个或多个数字。此外,所有的无论从数字a还是b不会被取消了(你不会得到输入12/21),至少一个数字从a和b每次(你不会获得输入将被取消43/21),而最终的结果将永远不会0对任何a或b。您的程序必须取消a和之间的所有公用数字b(即1231/1234,您必须取消了1,一2,和3)。如果有多种取消的可能性,请首先选择最左边的数字(515/25变为15/2而不是51/2)。 例子: Input Output Why 1019/5095 true Remove the 0 and the 9 from both sides of the fraction to get 11/55, which is equivalent. 16/64 true Remove the 6 from both sides, …

2
计算创新八卦的图标
创新是一种纸牌游戏,玩家在从史前时代到现代时代的各个年龄段中进行战斗,以期比对手更快地获得成就。 创新中的每张卡都是唯一的,并为玩家提供了许多图标。如果我们将每张卡都视为2x3网格,那么左右两侧四个插槽中的三个插槽将始终被图标占用(黑色六边形中的符号不​​计算在内)。 该游戏有6种图标(城堡,树冠,树叶,灯泡,工厂和时钟),我们将使用chars任意代表它们012345。使用#代表黑色六边形,我们可以使用4个字符来表示每个卡上的图标。例如,上面的卡片是 0.. #.. 3.. 1.. -> 03#0 #331 355# 144# 3#0 331 55# 44# 现在,在“创新”中,游戏区域中的纸牌被分组为一堆*,以四种方式之一展开。对于每个示例,我们将使用上面的纸牌,假设最左边的纸牌03#0位于堆的顶部。 无花哨:只有最上面的卡片可见 0.. 3#0 向左张开:顶部的卡片完全可见,下面所有卡片的右三分之一 0..|.|.|.| 3#0|1|#|#| 向右张开:顶部的卡片完全可见,而下面所有卡片的左三分之一 1|3|#|0.. 4|5|3|3#0 向上张开:顶部的卡片完全可见,下面所有卡片的下半部分也完全可见。 0.. 3#0 --- 331 --- 55# --- 44# 挑战 输入将是由空格分隔的单个字符串,该字符串由两部分组成: 展开方向,是中的一个!<>^,分别表示不展开,向左展开,向右展开或向上展开。 非空卡片列表,每个卡片长4个字符,由chars组成012345#。最左边的卡片在纸堆的顶部,每张卡片正好包含一张#。 答案可能是函数,完整程序或等效的。您可以选择展开方向是第一个还是最后一个,即选择以下两种格式之一: > 03#0 #331 355# 144# 03#0 #331 355# 144# > …

5
它是多项式的因数吗?
(x-n)如果f(n)=0是一个函数,则多项式可以被因子整除f。您的工作:确定多项式函数f(x)是否可被整除(x-n)。 输入 输入形式为(x-n), (Polynomial)。 请记住,如果n为负,(x-n)将采用的输入形式(x+n)。对于多项式,所有指数将作为放入^。系数将写在变量旁边x。一个示例多项式可能是2x^2 + x^1。两者之间将没有空格。该术语x将输入为x^1。因此,“正常”情况(x - 1)将是这样(x^1-1)。系数和幂将始终是整数。 如果系数1恰好是隐式的x。即,x可以解释为1x 输出 布尔值。真实的或虚假的。 感谢@AlexA。为了帮助我澄清这一点! 例子 Input:(x^1-1),(x^1-1) Output: True Input: (x^1+2),(2x^2+4x^1+2) Output: False Input: (x^1+7),(x^2-49) Output: True 规则 这是代码高尔夫球,因此以字节为单位的最短代码获胜 不幸的是,我不知道如何实现摘要排行榜。如果有人知道如何,请随时编辑帖子。

5
分析你的椅子
此挑战基于Downgoat的Adjust your chair。 挑战 您刚刚调整了新椅子!非常适合您。但是,车轮吱吱作响,您知道维修人员会更改调整。问题是,您没有标尺,因此您必须编写一个程序来为您测量。 维修人员只能等待这么长时间。因此,您的代码需要尽可能短。 例子 O | | | _ | | |_|_ | | O 5,3,2,2,1 O | _ | | |__|__ | | __|__ OOOOO 3,5,2,3,5 O | _ |______|______ ______|______ OOOOOOOOOOOOO 2,13,1,1,13 椅子零件 椅子具有各种组件: O <- Headrest | | <- Backrest | _ <- Armrest …

2
完整的括号表达式
今天,您面临的挑战是生成表达式的所有可能的完整括号。 您的输入是一行可打印的ASCII一行,其中包含一个或多个用运算符分隔的术语。输入中可能还包含空格-您必须忽略它们。术语是[a-zA-Z0-9],运算符是[^ ()a-zA-Z0-9]。您可以假设输入始终有效。 输出所有可能的方式以完全括住给定表达式,并用可选的尾随换行符将新行分隔开。 难道不是: 括号中的术语-仅在运算符周围加上括号。 重新排列条款。 输出任何空格。 输入/输出示例: N N a * b (a*b) x_x_0 (x_(x_0)) ((x_x)_0) a * b|c|d (a*(b|(c|d))) (a*((b|c)|d)) ((a*b)|(c|d)) ((a*(b|c))|d) (((a*b)|c)|d) 以字节为单位的最小代码获胜。

1
杜克塔佩杜克塔佩
您的老板发现很多员工(包括您)喜欢从他人那里窃取代码。他命令您为他编写一个程序,他可以使用该程序找到从他人那里窃取代码的人。 任务: 编写一个程序/函数,以检测是否有人从其他地方复制了(部分)他的代码。 该程序将从两个单独的输入中获取所有现有程序和应测试的程序。 编辑:由于到目前为止没有答案,您可以使用正则表达式! 输出量 然后,程序应输出所有被盗的代码,用空格或换行符分隔。(它的末尾可能有空格或换行符。) 如果一段代码包含10个或更多连续字节,则认为该段代码已被盗/复制。(对不起,Java迷!) 您必须输出尽可能多的内容,但是如果有重叠的内容,则可以忽略其中之一,也可以同时输出两者。 捻: 如前所述,您还喜欢管道胶带编码。这意味着,一切您代码中的将从堆栈交换站点复制粘贴!您可以复制任意内容(不限于代码块中的代码),并且可以复制任意数量的内容。(但至少10个字节)(关于被盗/复制内容的规则与上述相同。)(请注意,此问题之后发布的所有答案均不得使用。)代码来自。 例子: 输入:( x = document.getElementById("ninja'd");第一个输入) y = document.getElementById("id");(第二个输入) 输出: = document.getElementById(" 输入:( foo第一个输入) foo+bar(第二个输入) 输出: 无。 输入:( public static void main(String[] args)第一个输入) public static void main(String[] args)(第二个输入) 输出: main(String[] args) 输入:( for(var i=0; i<x.length; i++){}第一个输入) for(var i=0; i<oops.length; i++){break;}(第二个输入) …

10
算术级数
您的任务是分析输入和输出第n个项(如果它是算术序列)的公式,否则应打印“ NAAP”。 输入值 输入(来自STDIN)将由几个数字组成,介于4到10个数字之间,其中每个数字的范围在-1000到1000之间(包括-),并以定界符(空格,逗号或分号[您的偏好])。这是一些示例输入。 12,14,16,18 //valid -3 4 5 1 -2 -4 //valid 45;35;-35 //invalid (only three numbers are present instead of the minimum of 4 numbers) 2,32;21,321 //invalid (it uses two different delimiters: `,` and `;`) 输出量 程序应首先检查输入是否为算术级数。 简而言之,算术级数(AP):每个AP都有一个共同的区别。这是$ n $和$ {n-1} $项之间的差(基本上$ a(n + 1)a-a (n)$,其中是序列的函数)。对于AP中$ n $的任何值,此差异均保持不变。如果没有共同的差异,则它不是算术序列。要计算第n个项的值,请使用以下公式$ …

4
计算有理数的p-adic范数
计算有理数的p-adic范数 编写一个函数或程序,该函数或程序将3个整数m,n,p(其中p是一个正质数)作为输入,然后将p-adic范数(由表示|m/n|_p)输出为(完全归约)分数。众所周知,费马特的边距很小,但未知的是他的电脑屏幕很小。因此,请尝试使代码尽可能短,以使其适合Fermat的屏幕! 定义 给定一个质数p,每个分数m/n都可以唯一地写(忽略符号),(a/b)* p^e即e整数,p既不除a也不除b。该p进规范的m/n是p^-e。如果分数为0:,则是一种特殊情况|0|_p = 0。 输出格式必须为x/y(例如1/3,对于整数10或两者均等10/1,允许为负,对于负数必须有一个前导减号,例如-1/3) 细节 程序必须使用stdin / stdout,或者仅由返回有理数或字符串的函数组成。您必须假设输入m/n没有完全减少。您可以假定这p是素数。该程序必须能够处理之间-2^28最大为的整数2^28,并且不应超过10秒。 不允许使用内置的因式分解和素数检查功能,以及内置的基础对话功能和用于计算p-adic评估或规范的内置功能。 示例(从Wikipedia窃取): x = m/n = 63/550 = 2^-1 * 3^2 * 5^-2 * 7 * 11^-1 |x|_2 = 2 |x|_3 = 1/9 |x|_5 = 25 |x|_7 = 1/7 |x|_11 = 11 |x|_13 = 1 有趣的琐事 (不一定要了解/阅读此挑战,但也许很高兴作为动机来阅读。) (如果我使用了错误的单词或其他错误,请纠正我,我不习惯用英语来谈论这个问题。) …

5
实现LaTeX口音宏
介绍 LaTeX排版系统使用宏来定义重音。例如,字母ê由产生\hat{e}。在这个挑战中,您的任务是实现此功能的ASCII版本。 输入值 您的输入是可打印的ASCII字符的非空字符串。它不会包含换行符。 输出量 您的输出是由两行组成的字符串。第一行包含重音符号,第二行包含重音符号。它是从输入中获得的,如下所示(A表示任意字符): 每个\bar{A}被替换A用_在它上面。 每个\dot{A}被替换A用.在它上面。 每个\hat{A}被替换A用^在它上面。 对于10%的奖金:每一个\tilde{A}被替换A用~在它上面。 所有其他字符上方都有一个空格。 例如,输入 Je suis pr\hat{e}t. 结果输出 ^ Je suis pret. 规则和计分 你可以假设字符\{}仅发生在宏\bar{},\dot{}和\hat{}(和\tilde{}如果你去的奖金)。所有宏参数是准确的一个字符长,所以\dot{foo}和\dot{}输入不会发生。输出可以是换行符分隔的字符串,也可以是两个字符串的列表/对。只要重音位于正确的位置,就可以允许任何数量的尾随和前导空格。特别是,如果没有重音,则输出可以是单个字符串。 您可以编写完整的程序或函数。最低字节数(奖金后)获胜,并且不允许出现标准漏洞。 测试用例 没有奖金: Input: No accents. Output: No accents. Input: Ch\hat{a}teau Output: ^ Chateau Input: Som\bar{e} \dot{a}cc\hat{e}nts. Output: _ . ^ Some accents. Input: dot hat\dot{h}a\hat{t}\hat{ }x\bar{x}dot Output: …

3
子串相乘
编写一个以两个整数为输入的程序;第一个可以是任何整数,第二个可以小于或等于第一个数字中的位数。分别使这些数字为a和b。 该程序将执行以下操作 将最小数量的1s 连接到s的末尾,a因此in的位数可以a被整除b。 a沿每个b数字拆分。 将每个部分中的数字相乘。 将产品串联在一起(如果数字之一为零,则串联0)。 重复此过程,直到形成一个严格少于b数字的数字。将此打印为输出,并重复执行该过程的编号。单位不是必需的,但是最终数量和迭代数量之间需要某种形式的分隔。 在以下测试案例中,出于理解目的而显示了各个步骤。您的程序没有必要显示步骤。 测试用例1 1883915502469, 3 脚步 1883915502469 //Iteration 1 188391550246911 188 391 550 246 911 64 27 0 48 9 64270489 //Iteration 2 642704891 642 704 891 48 0 72 48072 //Iteration 3 480721 480 721 0 14 014 //Iteration 4 0 样本输出:0, …
11 code-golf  math  number 

1
秘密圣诞老人-再访
圣诞节快到了,圣诞节也随之而来,安排了一年一度的家庭秘密圣诞老人。我想尝试Bob先行一步,但要确保夫妻之间不互相购买会继续造成问题,尽管这样做了很多年,但仍然存在着一个问题,那就是为大多数受赠人购买礼物是一件很垃圾的事情,Erin可能会感到失望,但他知道Frank喜欢塔利斯克,所以他很适合他。这使得现有的简单解决方案都无法满足我的需求。 为了使我的生活更轻松,您的任务是编写一个函数(或您语言中最接近的替代方法),当给定一个数组数组(或您所选择语言中最接近的替代方法)时,返回(或输出)一对“ gifters”给以最短的代码(字节)为单位的“ giftees”,从而满足以下条件: 每个名称都与输入数据中另一个随机选择的名称配对(请注意,并非总是可能根据提供的条件对输出进行随机化) 名称将带有标志列表,这些标志表示具有相同顺序的邻接矩阵,因此column n表示与row相同的人n。 如果不能满足条件,请以您的语言返回错误的内容。 如果有多个解决方案,则如果多次运行,您的程序必须能够生成所有解决方案。 你可以假定你将永远不会有重名的呈现,我们需要能够判断哪些家庭成员是的,但你可能会包含空格来区分数据呈现Bob Senior从Bob Junior!对于相当大的系列,它应该在一小时内完成所有提供的测试用例,例如源数据中的100个唯一名称(请参阅下面的示例数据集,您必须能够在分配的时间内解析所有这些名称)。 输入示例: santa([ ["Alice", 0, 0, 1, 1, 1, 1, 1], ["Bob", 0, 0, 0, 0, 0, 1, 0], ["Carla", 1, 1, 0, 0, 0, 1, 1], ["Dan", 1, 1, 0, 0, 0, 1, 1], ["Erin", 1, 1, 0, …
11 code-golf 

2
所有颜色的动画
去年,创建包含每种24位RGB颜色的图像是一个非常普遍的挑战。 我的挑战是创建一个平滑的动画(说24帧/秒),其中每个帧的每个像素的颜色都是唯一的。只要每种颜色出现相同的次数(大于0),我也将允许重复颜色,否则动画将必须较短或帧较小。 我根据2d版本的获奖解决方案在此提供了一些示例。不幸的是,您似乎无法嵌入视频,因此必须这样做。

4
打印我的时间表
我的高中和其他许多学校都实施一种称为“轮班时间表”的时间表。这是人们上8堂课的方式,而在一堂课上有6堂课。 一个块计划中有四天一遍又一遍地重复,与一周中的实际天数无关。每个分配一个编号[1-4]。 日程安排的工作方式是您列出所有早班时间1-4:[1, 2, 3, 4]。这是你第一天的时间表,或1天的日子,其余只需旋转列表:[2, 3, 4, 1],[3, 4, 1, 2],[4, 1, 2, 3]。 但是,早上的最后一个时间段被“删除”,并且那天您没有看到那个老师。因此,天数为:[1, 2, 3],[2, 3, 4],[3, 4, 1],[4, 1, 2]。 下午是一样的,只不过它使用周期5-8,而不是:[5, 6, 7],[6, 7, 8],[7, 8, 5],[8, 5, 6]。 你的任务 所有这些旋转都是很难跟踪的,因此您必须编写一个程序以打印出我的日程安排(以输入日期为准)。您的代码必须将Homeroom和Lunch放置在正确的位置。这是您的代码需要输入的确切输出1-4: Homeroom Homeroom Homeroom Homeroom Period 1 Period 2 Period 3 Period 4 Period 2 Period …

3
适合该领域的因素
给定小于1000的正整数,则显示该区域内所有可能的矩形。 任务 假设输入为20。我们可以制作一个20×1、10×2或5×4的矩形,因此这是一个有效的输出: ******************** ********** ********** ***** ***** ***** ***** 请注意,每个可能的矩形仅出现一次。 矩形可以以任何顺序,方向或位置出现,但即使在角落,也不能有两个矩形重叠或接触。以下内容也有效: ******************** **** ********** **** ********** **** **** **** 计分 输出的边界框区域(BBA)是包围所有矩形的最小矩形的区域。在第一个示例输出中,大小为20×9,因此BBA为180。在第二个示例输出中,大小为20×7,因此BBA仅140。 输入为60、111、230、400和480时,找到输出的BBA,并将它们加起来。将该总和乘以代码的大小(以字节为单位)。结果就是你的分数;最低分获胜。 规则 程序(或函数)必须为1000以下的任何正整数产生有效的输出。 输出必须仅包含星号(*),空格()和换行符。 矩形之间可以有任意数量的空间,但这要计入BBA。 前导或尾随的行或列,如果仅有空格,则不会计入BBA。

3
让我们做音乐!
许多人喜欢播放音乐来娱乐和娱乐。不幸的是,有时候音乐很难。这就是为什么你在这里! 任务 使那些苦苦挣扎的人更容易阅读音乐是您的工作。您需要编写一个程序或函数,将乐谱作为输入,并输出写在该谱上的音符名称。 员工,谱号和笔记 一个音乐的工作人员,或破碎,是五横,插图中它们是四个空格。每条线或每条空格代表不同的音符(音高),具体取决于谱号。 有几种不同的谱号可供选择,但我们现在只处理一种:高音谱号。在高音谱号上,音符在谱表上的表示方式如下: 线数 F - - - - - D ---------- B ---------- G - - - - - E ---------- 空间 ---------- Ë ---------- C ---------- 一种 ---------- F ---------- 输入格式 输入将作为单个字符串给出,如下所示: --------------- --------------- --------------- --------------- --------------- 职员的五行和四个空格由九行字符组成。职员的行用-(连字符)字符构成,空格用(空格)构成。每行与下一行之间用一个换行符隔开,例如: -----\n \n-----\n \n-----\n \n-----\n \n-----\n 行的长度是任意的(可以由您的编程语言处理的合理数量),并且每行的字符长度与其他行的长度完全相同。还要注意,行的长度总是可以被三整除的(以适应一个音符的样式,然后是两行不带音符的列)。 通过用代替相应的-或字符,在此工作人员上放置注释o。也可以通过半音(音符与其相邻音符之间的频率差的一半)在音高上提高(清晰)或降低(平坦)。这将由#和b分别代替o。每个音符将与下-一个音符精确地用两个字符隔开,并且第一个音符将始终出现在-和(空格)字符的第一个“列”上。 …

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.