Questions tagged «code-golf»

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

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 

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

2
给定一张输赢表,输出体育比赛中每场比赛的结果
这个问题的灵感来自正在进行的“先生们玩的流氓比赛” 橄榄球世界杯,该比赛刚刚结束了撞球阶段。锦标赛中有20支队伍,分成4组,每组5支。在小组赛阶段,每个团队与小组中的所有其他团队进行比赛(每个小组总共进行10场比赛),并且每个小组中排名前2的团队进入淘汰赛阶段。 在撞球阶段结束时,每个撞球都有一张表格,显示每个团队的胜利,失败和平局数量。这个问题的挑战是编写一个程序,输入一组中每个团队的获胜,失败和平局数,然后从该信息输出10场比赛中每场比赛的个人结果(谁赢,谁输,谁对谁)(如果可能),否则输出错误消息。 例如,这是今年锦标赛台球D的表: Win Loss Draw Canada 0 4 0 France 3 1 0 Ireland 4 0 0 Italy 2 2 0 Romania 1 3 0 从这些信息中,我们可以推断出爱尔兰赢了加拿大,法国,意大利和罗马尼亚,因为他们赢得了所有比赛。法国一定赢了加拿大,意大利和罗马尼亚,但输给了爱尔兰,因为他们只输了一个,而且一定是不败的爱尔兰。我们刚刚得出的结论是意大利输给了爱尔兰和法国,因此他们一定赢了加拿大和罗马尼亚。加拿大输掉了所有比赛,因此罗马尼亚的胜利一定是对加拿大。 Canada France Ireland Italy Romania Canada - L L L L France W - L W W Ireland W W - W …
11 code-golf 

3
可能的俄罗斯方块序列
编写代码以弄清楚官方的Tetris算法是否可以生成一系列Tetris。最少的字节数获胜。 官方的俄罗斯方块游戏以特殊方式生成掉落序列。IJLOSTZ以随机顺序删除这七个片段,然后删除另一个随机排列,依此类推。 JTLOISZ STJOLIZ LISJOTZ ... 此示例包含连续的片段 SZSTJOLIZLIS 请注意,它跨越了一个由7组组成的边界。 SZOTLZSOJSIT 不能是任何俄罗斯方块序列的子字符串,因此在正式的俄罗斯方块游戏中永远不会看到它。 输入:一个非空的字母字符串IJLOSTZ。 输出:一个True或Falsey值,表示输入是官方Tetris Random Generator可以生成的序列的子字符串,即七个字母的排列的串联。 测试用例: 真正: T JJ (unique breakdown: J J) JTJ (possible breakdown: JT J) LTOZIJS SZSTJOLIZLIS (possible breakdown: SZ STJOLIZ LIS) JTLOISZSTJOLIZLISJOTZ (possible breakdown: JTLOISZ STJOLIZ LISJOTZ) LIJZTSLIJZTS (unique breakdown: LIJZTS LIJZTS) 假: SZOTLZSOJSIT ZZZ ZIZJLJ …

4
近似方阵
背景 我有一堆相等大小的正方形盒子,由于我是个整洁的人,所以我想将它们全部排列成正方形。但是,它们的数量不一定是完美的正方形,因此我可能不得不近似正方形。我希望您找到我最美的安排-当然是通过编程。 输入值 您的输入是一个正整数k,代表盒子的数量。 输出量 您的程序应选择两个正整数m, n使之m*(n-1) < k ≤ m*n成立。它们代表了我们正在排列的大正方形形状的宽度和高度。由于我们正在寻找具有美学美感的形状,因此数量应尽可能少,以使形状接近正方形,并且面积接近。如果该对还有几个候选者,请选择宽度最大的那个。(m - n)2 + (m*n - k)2k(m, n)m 现在,您的实际输出将不是数字m和n。取而代之的是,您应使用字符#来表示框来打印框的排列。更具体地说,您应打印n-1行,每行包含m字符#,然后打印一行k - m*(n-1)字符#。请注意,输出中完全包含k字符#。 规则和计分 输出中不得包含任何前导或尾随空格,除非需要,最后一行可以用尾随空格填充,该尾随空格的长度应为length m。可能只有一个尾随的换行符,但没有前面的换行符。#如果需要,可以使用任何可打印的ASCII字符代替。 您可以编写完整的程序,或从函数返回字符串。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 这是一些输入值的正确输出。 1 # 2 ## 3 ## # 4 ## ## 8 ### ### ## 13 ##### ##### ### 17 ###### ###### ##### 18 …

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.