Questions tagged «code-golf»

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

7
得分异步囚徒困境游戏
在囚徒困境练习的一轮中,两名选手各自决定在该轮中是合作还是背叛。一回合的得分是: 玩家A和玩家B都合作:双方都得1分 玩家A和玩家B都缺憾:双方都得2分 玩家A配合而玩家B缺陷:与玩家A配合时3分,而与玩家B背离时0分 但是,您不必担心策略:您的程序仅是在计算游戏得分。(如果您已经熟悉了囚徒的困境,那么我在这里的“观点”相当于“入狱年限”。) 您的挑战是要获得代表球员在多个回合中的选择的输入并计算他们各自的总得分。一个球员在小写的提交选择,c以及d(对于合作和缺陷),并以大写其他的提交选择,C和D。这些选择作为字符串提供给您的程序。 通常,处于囚徒困境中的玩家会同时并反复提交动作。但是,在此挑战中,玩家可能一次提交了好几个回合的选择。如果某个球员的举动不合顺序,则计分程序会记住该举动,并将其与对方球员的下一个可用举动进行匹配。 这是一个示例输入字符串: cDCddDDCcCc 为了显示此输入中存在的匹配项,我将分别调用小写和大写字母,并将它们配对: cDCddDDCcCc c dd c c => cddcc DC DDC C => DCDDCC 这些将成对配对: c vs D (3 pts for lowercase-player, 0 pts for uppercase-player) d vs C (0 pts for lowercase-player, 3 pts for uppercase-player) d vs D (2 pts …
15 code-golf 

3
删除连字符
是时候进行新的排版挑战了!在各种文档格式之间复制粘贴时,这是一个常见的问题:连字。虽然它可以减少左对齐布局的参差不齐或在合理的布局中使间距均匀,但如果PDF的构造不正确并且在布局中保留了连字符,这将是您的全部烦恼,从而使复制的文本难以编辑或重排。 幸运的是,如果我们相信那里有无数的自助书,那么,如果您将其视为挑战,那就没有问题了。我相信这些自助书无一例外都涉及PPCG,如果提出挑战,任何问题都将得到解决。您的任务是从文本中删除有害的连字符和换行符,以便可以将其粘贴到任何文本编辑器中。 问题描述 您将编写一个程序或函数来删除连字符和换行符(如果适用)。的输入将是一个字符串stdin(或最接近的替代),或者作为函数的输入。在输出(在stdout或接近的替代的或功能输出)将是“校正”文本。此文本应可直接复制粘贴。这意味着前导或尾随输出都可以,但是在更正文本中间的其他输出(例如,每行的前导空格)则不行。 最基本的情况如下(注意:没有尾随空格) Lorem ipsum dolor sit amet, con- sectetur adipiscing elit. Morbi lacinia nisi sed mauris rhoncus. 应删除有问题的连字符和换行符,以获取 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi lacinia nisi sed mauris rhoncus. 但是,应注意一些例外情况。 双换行符表示段落分隔符,应保留。 专有名词和名称永远不会跨越两行,除非它们已经包含连字符(例如Navier-Stokes方程)。应删除换行符,但保留连字符。这些情况可以通过仅将首字母大写来识别。 有时,连字符表示一个单词组(例如19世纪和20世纪)。如果这发生在两行之间,则在下一行以前导空格表示。 一个示例:(此示例中表达的观点是虚构的,不一定代表作者的观点;同样欢迎Runge-Kutta-Fehlberg方法的反对者参加此挑战) Differential equations can be solved with the Runge-Kutta- Fehlberg method. …

20
缩短已经很短的数学表达式
一次,我做了一些实际的工作,更新了旧代码,碰到了一个表达式,该表达式等于在老式数学中用πx+ e x编写的表达式。我认为编写它的时间可能比使用我使用的语言(APL)编写的时间短,因此提出了一个非常简单的挑战: 编写一个函数或程序(以任何方式)接受零个或多个数字,并返回(以任何方式)x = 每个给定数字的上述表达式的结果,每个结果至少具有3个有效数字。 如果您的语言没有π和/或e,请使用值3.142和2.718。 得分是字节数,因此请以开头# LanguageName, 00 bytes。 不允许使用标准孔。 编辑:现在,我想出了一个解决方案,○+*,已被发现。原始代码为(○x)+*x。
15 code-golf  math  number  pi 

3
帮我安排时间
最近有人告诉我要在新年之前读一本完整的物理教科书(不幸的是,是真实的故事)。我需要您的帮助来确定每天应阅读哪些章节。这是您进来的地方。 输入值 两个日期,任何格式。第二个日期将始终晚于第一个日期。 章节编号列表。此逗号分隔的列表可以包含单个章节(12)或包含范围(1-3)。例如 1-3,5,6,10-13。 Monday -> Mo要从时间表中排除的工作日列表(用名称的前两个字母表示:)。例如 Mo,Tu,Fr。 输出量 输出将是用换行符分隔的日期和章节编号的列表(请参见下面的格式)。这些章节应在该范围内的所有日期(不包括提供的工作日)中平均分配。如果各章分布不均,请在时段结束时保留较少的章节。输出中的日期可以采用与输入不同的格式。没有章节的日子可以被忽略,或者没有章节。 例: 输入: 9/17/2015 9/27/2015 1-15 Tu 输出: 9/17/2015: 1 2 9/18/2015: 3 4 9/19/2015: 5 6 9/20/2015: 7 8 9/21/2015: 9 10 9/23/2015: 11 9/24/2015: 12 9/25/2015: 13 9/26/2015: 14 9/27/2015: 15

16
简单任务解决三次
您应该用一种语言编写3个程序和/或功能。 所有这些程序都应解决相同的任务,但它们都应提供不同(但有效)的输出。(即,对于每对程序,它们都应该是一些输入,这些输入会生成不同(但有效)的输出编号集。) 任务 您得到一个n大于1 的整数 您应该返回或输出n 不同的正整数,并且它们都不能被整除n。 数字的顺序无关紧要,数字的排列也不视为不同的输出。 有效的三元组程序,其中包含一些input => output配对: program A: 2 => 5 9 4 => 5 6 9 10 5 => 2 4 8 7 1 program B: 2 => 1 11 4 => 6 9 1 2 5 => 4 44 444 4444 44444 program …

2
球面多余的三角形
球面多余的三角形 众所周知,任何平面三角形的角度之和等于180度。 但是,对于球形三角形,角度之和始终大于 180度。球面三角角之和与180度之间的差称为球面过剩。任务是计算具有给定顶点坐标的三角形的球面超出量。 一些背景 球形三角形是球的三个大圆所定义的球的一部分。 球面三角形的两边和角度都是用角度测量来测量的,因为每一边都可以看作是球体与某个顶角位于球体中心的平面的交集: 每三个不同的大圆定义8个三角形,但我们只需要适当的三角形考虑在内,即。角度和侧面尺寸满足的三角形 根据地理坐标系定义三角形的顶点很方便。在给定端圆的经度λ和纬度Φ的情况下,要计算圆弧的长度,我们可以使用以下公式: ,在哪里 或更明确地: (来源:https : //en.wikipedia.org/wiki/Haversine_formula) 可用于求解球形三角形的两个基本公式是: 余弦定律: 罪法: (来源:https : //en.wikipedia.org/wiki/Spherical_trigonometry#Cosine_rules_and_sine_rules) 给定三个边,使用余弦规则很容易计算角度: 最后,定义一个三角形的球面多余部分: 三角形的球面过盈量与其面积之间的关系有趣的是: 因此,在单位球面上,三角形的多余部分等于该三角形的面积! 任务 编写一个函数或程序,在给定三角形顶点坐标的情况下,以度为单位计算三角形的球面超出量。顶点坐标是根据地理坐标系提供的。 每个顶点都应以形式传递[latitude in degrees][N|S][longitude in degrees][E|W]。当纬度为90时,可以跳过经度和E或。,,,是正确的顶点描述,同时或不是。W 90N90S10N100E30S20W80N55S 在测试案例中,纬度和经度始终是整数。 误差小于1度的答案将被接受(如下例所示)。因此,可以根据实际情况将结果呈现为实数或整数。 例子 输入值 90N0E 0N0E 0N90E 输出量 89.999989 输入值 90N 0N0E 0N90E 输出量 89.999989 输入值 0N0E 0N179E …

3
多方面分析
计算SI单位的乘积或比率。 例如,kg m / s s(千克/米每秒平方)应返回N(牛顿)。 输入将始终是: SI单位的符号列表,以空格分隔(代表产品)或 以上,/以及上述(表示比)。 输入将永远不包含任何其他字符(例如数字文字或其他标点符号)。 您可以假设这将始终等于单个SI单位。 使用以下符号: Base quantities: s # second m # meter kg # kilogram A # ampere Derived quantities: N = kg m / s s # newton J = N m # joule W = J / s # watt …

18
回到化学课
介绍 我从化学中学到的第一件事就是给出了烷烃燃烧的公式。最基本的示例是:2CH4 + 4O2 > 4H2O + 2CO2。注意,可以通过将每个系数除以2来简化方程,我们将得到 CH4 + 2O2 > 2H2O + CO2。为了使事情变得简单,我们将忽略此步骤。 您会看到,随着任何烷烃的燃烧,都会使用氧气。反应后,仅产生CO 2和H 2O。 任务: 给出一个完整的程序,该程序接受来自STDIN或最接近的等效值的输入,并使用STDOUT或最接近的等效值输出总反应。 输入总是会在形式C(n)H(2n+2),用n > 0。这些是一些示例输入: CH4 C2H6 C3H8 C4H10 C5H12 C6H14 etc. 一个有用的提示: 每种烷烃在燃烧反应中都有一个标准模式: 2C(n)H(2n+2) + (3n+1)O2 > (2n+2)H2O + (2n)CO2 例如 C4H10给出以下等式:2C(4)H(2*4+2) + (3*4+1)O2 > (2*4+2)H2O + (2*4)CO2。计算完所有内容后,我们得到以下最终方程式:2C4H10 + 13O2 > …

9
关于键盘的主题
Keep Talking and Nobody Explodes是一款本地多人游戏,其中一个玩家可以控制一个虚拟的“炸弹”,并且必须由另一位可以访问炸弹清除手册的玩家“专家”指导。键盘模块是游戏中需要解除的模块之一,这是我们将在此挑战中处理的模块。 任务 输入将以一行可打印的ASCII字符开始,除了空格(0x21至0x7E)。这些代表您可以看到的键盘按钮。 接下来的几行将代表“键”-只有一行包含第一行的所有字符,而不必按顺序排列。您的任务是按照匹配的按键行的顺序输出键盘字符。 例如,如果输入是 5~Fy HrD7K!#} Ui%^fHnF )Tf;y~I5 ~Fi(&5gy ,'Xd#5fZ 然后键盘按钮是5,~,F和y。只有第4个按键行~Fi(&5gy包含所有这些字符,因此我们按出现的顺序输出键盘字符,即~F5y。 规则和澄清 输入必须是单个多行字符串,键盘按钮和按键行应放在单独的行上。 仅有一个按键行,其中包含所有键盘字符。 每行,即初始键盘行和随后的按键行,将没有重复的字符。 与游戏不同,您可能不会假设键盘字符的数量,每条按键线的长度或按键线的数量。但是,保证所有关键线的长度相同。 输出可能包含单个可选的尾随换行符。同样,您可以对输入中的可选尾随换行符采用任意一种方式,但是如果需要,请在答案中指定。 尽管这似乎已经很普遍了,但我将明确指出:只要STDOUT输出正确(如果这是您选择的输出形式),就可以用错误终止此挑战。希望这将使输入的处理更加容易。 测试用例 7 4?j01C3"ch KP.OG>QB)[ z#)Kn"I2&. ]#,D|sBFy5 Qzj*+~7DLP 输出: 7。只有最后一行包含7。 0b~ Ob+hy{M|?;>=dtszPAR5 *8rCfsw|3O9.7Yv^x>Hq $ip.V@n}|La:TbIt^AOF jZ[Ec4s0|%b*$id',~J6 z*#b}-x$Ua&!O2;['T+? NVj_X8rlhxfnS\.z}];c bykscf.w^dnWj+}-*2g_ VP`AJH|&j5Yqmw/"9IMc 输出:0b~。第4个按键行已包含正确顺序的字符。 MTuz bIAr>1ZUK`s9c[tyO]~W oMGIi/H&V"BeNLua%El= j*uYbplT:~);BM|_mPZt Q}z5TC@=6pgr<[&uJnM% YOA(F~_nH6T{%B7[\u#5 y&t"8zQn{wo5[Idu4g:? [0tZG"-fm!]/|nqk,_2h …
15 code-golf  string 

4
矮胖回文
回文报很有趣,但是其他一些字符串却开始被忽略。通过将这些字符串分成回文的大块数组,可以将它们变成大块的回文。 例如,"abcabca"如果我们逐个字符地读取字符串,那么它就不是回文,但是有三种不同的方式可以使它成为大块的回文: ["abcabca"] ["a" "bcabc" "a"] ["a" "bc" "a" "bc" "a"] 如您所见,矮胖回文是一个非常包容的概念;每个字符串都可以至少以一种方式变成粗大的回文。 任务 编写一个程序或函数,该程序或函数接收字符串作为输入,并返回其回文式块状体,即回文式数组的分区数。 测试用例 OUTPUT | INPUT --------+--------------------------------------------- 1 | "" 1 | "a" 1 | "ab" 2 | "aa" 2 | "aaa" 3 | "abcabca" 4 | "abababab" 28 | "abcabcaabababababcabca" 1 | "bbbbabababbbbababbbaaaaa" 20 | "ababbaaaabababbbaaabbbaa" 5 …

20
!万圣节守则高尔夫挑战赛
编写一个程序,该程序接受长度为2个或更多字符的输入字符串,并将该字符串 ~BOO!~ (该字符串具有开头和结尾的空格)添加到该字符串中不在两端的一致随机点中。 不允许的样本输入:2或 (空输入) 不允许的样本输出:Hello ~BOO!~ 或 ~BOO!~ Hello用于输入Hello 样本输入:Hello, World! 样本输出:Hel ~BOO!~ lo, World!或Hello, Worl ~BOO!~ d! 这是代码高尔夫,伙计们。适用标准规则。以字节为单位的最短代码获胜。 祝贺Dennis拥有最短,最诡异的程序!万圣节快乐!

7
平均角度
故事,或者我们为什么要这样做。 没有。除非斯蒂芬霍金(Stephen Hawking),否则这个练习是毫无意义的。 挑战 给定一个角度列表,找到这些角度的平均值。例如,91度和-91度的平均值为180度。您可以使用程序或函数来执行此操作。 输入值 表示角度量度的度值列表。您可以假设它们将是整数。它们可以以任何方便的格式输入或作为函数参数提供。 输出量 输入值的平均值。如果发现平均值有多个,则仅输出一个。平均值定义为 被最小化。输出必须在(-180,180]范围内,并且至少精确到小数点后两位。 例子: > 1 3 2 > 90 -90 0 or 180 > 0 -120 120 0 or -120 or 120 > 0 810 45 > 1 3 3 2.33 > 180 60 -60 180 or 60 or -60 > 0 …

18
一段时间后的时间
为了应对这一挑战,我们以以下形式编写时间: hh:mm:ss 一些例子: 12:34:08 06:05:30 23:59:00 挑战是在经过数小时,数分钟和数秒之后输出时间,并将其作为开始时间00:00:00。您可以将其与从开始的计时器进行比较00:00:00。 这是输入(使用STDIN)和输出的示例: Input: 1h20m5s Output: 01:20:05 Input: 0h100m0s Output: 01:40:00 24小时后,计时器将自行重置: Input: 25h0m0s Output: 01:00:00 输入的形式始终相同:XhYmZs,带有X小时,Y分钟和Z秒(假设X,Y并且Z是小于100000的整数,并且永远不会为负) 这是代码高尔夫球,因此最少的字节数将赢得这一挑战
15 code-golf 

5
隐藏功率计算器
我一直喜欢Pokemon的原因之一是因为对于一款简单的游戏,它具有如此多的复杂性。让我们考虑一下“隐藏力量”。在游戏中,每个使用它的口袋妖怪的隐藏力量的类型和力量(至少在第六代之前)都不一样!太酷了吧?现在,如果我告诉您“隐秘力量”的类型和力量不是随机产生的,您会感到惊讶吗? 在所有口袋妖怪游戏中,所有口袋妖怪(不仅仅是派对中的一个,所有口袋妖怪)都有六个内部存储的整数(一个用于HP状态,一个用于攻击状态,一个用于防御状态,一个用于特殊攻击状态,一种用于特殊防御统计,另一种用于速度统计),称为各自的值或IV。这些值在0到31之间,并且本质上是影响口袋妖怪总体属性的几个因素之一。但是,它们还可以确定“隐藏电源”的类型和电源! 在第三代到第五代(我们将要实现其算法的几代)中,隐藏功率的类型由以下公式确定(注意方括号,这意味着您需要舍入结果): 其中a,b,c,d,e和f是HP,攻击,防御,速度Sp的最低有效位。攻击和Sp。防御四。(最低有效位是IV mod2。)然后可以使用此图表将此处产生的数字转换为实际类型: 0 Fighting 1 Flying 2 Poison 3 Ground 4 Rock 5 Bug 6 Ghost 7 Steel 8 Fire 9 Water 10 Grass 11 Electric 12 Psychic 13 Ice 14 Dragon 15 Dark 对于功率,使用类似的公式: 但是,这里的u,v,w,x,y和z代表HP,攻击,防御,速度Sp的第二个最低有效位。攻击和Sp。防御IV(再次按此顺序)。(第二最低有效位比最低有效位要复杂。如果IV mod 4为2或3,则该位为1,否则为0。如果您的语言具有某种内置的或至少更聪明的方式,为此,您可能应该使用它。) 因此,您可能已经知道,这里的挑战是编写一个程序,该程序通过STDIN接受六个以空格分隔的整数,分别代表HP,攻击,防御,速度,Sp。攻击和Sp。宠物小精灵的防御IV(按顺序),并输出该宠物小精灵的“隐藏力量”的类型和力量。 输入样例: 30 31 31 31 30 31 样本输出: …
15 code-golf  number  game 

3
迷宫产生一个内胆
著名的C64基本型内胆 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 打印斜杠和反斜杠的迷宫。 \\/\\\//\/\////\\/\/ \/\///\\///////\//\/ /\\\//\//\////\\//\\ \////\//\//\/\\\\\\/ /\/\\///\\\\/\\\\/\\ \/\//\\\\\\//\/\//// /\//\\///\/\///\//// \/\\\//\\/\\\//\\/\/ //////\\/\\/\/\/\/// \\/\/\\////\/\/\\/\/ 从stdin读取由对角线墙组成的迷宫,并打印出水平和垂直的迷宫,其中水平和垂直墙由墙字符“#”组成 例如小迷宫 /\\ \\/ /// 转换为 ##### # # # # # # # # # # ##### # # # # # ######### ##### 确切地说,每个隔离的墙段的长度为五个字符,相邻的墙段共享一个角。在斜杠和反斜杠的矩阵中向右/左/上/下移动一个字符,对应于#矩阵中垂直两个字符和水平两个字符的对角线平移。

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.