Questions tagged «code-golf»

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

1
自动驾驶模式
从左上角开始的直升飞机正在降落(出于这个问题的目的,在2D空间中)朝地面。它具有自动驾驶模式和手动模式。 自动驾驶模式的行为如下: 如果正下方的空间是可用的,则下降至该位置。 否则,完全随机地向左或向右移动一步。(它可以以此方式移动多个步骤。) 并且它会不断重复这两个步骤,直到它落地。手动模式更加智能,即使在需要向上移动或进行一些熟练操作的情况下,也会找到通往地面的最佳路径。 您的工作是确定 自动驾驶仪将在给定情况下通过, 在特定情况下,自动驾驶仪可能会失败, 自动驾驶仪将失败,但是手动模式将通过,或者 两种模式都将失败(没有有效的接地路径)。 输入值 给定场景为1d或2d非空数组,使用两个不同的字符表示自由空间和受阻空间。标点符号是可选的。 可选:数组的尺寸 输出量 四个预定义字符之一,指示发生了哪种情况。 样本数据 在输入中使用0(空)和1(阻止),在输出中使用1 2 3 4(如上编号) 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 输出: 1 0 0 1 0 1 0 0 1 0 0 0 0 …

2
输出所有有效的有类公共单播IPv4地址
IPv4地址为32位宽,因此地址空间的大小为2 32或4,294,967,296。但是,这只是理论上的上限。它不能准确表示公共互联网上可能实际使用的所有地址。 出于此挑战的目的,假定所有寻址都是分类的。实际上,地址空间的有类别细分已被CIDR(无类别域间路由和VLSM(可变长度子网掩码))取代,但此挑战被忽略。 根据分类地址方案,分为3类: A类- 0.0.0.0以127.255.255.255与/8网络掩码长度 B类- 128.0.0.0以191.255.255.255与/16网络掩码长度 C类- 192.0.0.0到223.255.255.255与/24网络掩码长度 还定义了类D(多播)和E(保留),但是它们不用于公共单播地址。 根据该类别的网络掩码将每个类别细分为网络。 因此3.0.0.0就是一个A类网络的例子。对于A类网络掩码长度为8,所以对于这个网络的完整地址空间是3.0.0.0给3.255.255.255。但是,第一个地址(3.0.0.0)保留为网络地址,最后一个地址(3.255.255.255)保留为该网络的广播地址。因此可用地址的实际范围是3.0.0.1至3.255.255.254为2 24 - 2(= 16777214)总地址。 同样,200.20.30.0是C类网络的示例。对于C类网络掩码长度是24,所以该网络的完整地址空间是200.20.30.0给200.20.30.255。卸下网络和广播地址叶可用地址的实际范围是200.20.30.1至200.20.30.254为2 8 - 2(= 254)的总的地址。 可用于公共单播的地址范围还有其他限制。根据RFC 6890,不允许的范围是: 0.0.0.0/8 -本地网络 10.0.0.0/8 -私人使用 100.64.0.0/10 -共享地址空间 127.0.0.0/8 -环回 169.254.0.0/16 -本地链接 172.16.0.0/12-私人使用 192.0.0.0/24 -IETF协议分配 192.0.2.0/24 -保留供文档使用 192.88.99.0/24 -6to4中继任意播 192.168.0.0/16 -私人使用 198.18.0.0/15 -标杆管理 198.51.100.0/24 -保留供文档使用 203.0.113.0/24 -保留供文档使用 请注意,上面的列表使用VLSR网络掩码来有效地指定范围。在除一种情况外的所有情况下,给定的掩模长度在范围开始时的特异性均小于或等于正常分类掩模的长度。因此,这些VLSR范围中的每一个都等效于一个或多个分类网络。例如172.16.0.0/12等同于B类网络172.16.0.0到172.31.0.0或地址范围172.16.0.0来172.31.255.255。 …

7
广场中的广场
给定正整数的输入n,编写一个程序来完成以下过程。 找到大于n该整数的最小正整数,它是一个完美的正方形,是n和其他数的串联。的数字顺序n不得更改。级联n以产生一个完美平方的数字可以称为r_1。 如果r_1不是理想的正方形,则重复上述过程,r_1并将其作为该过程的新输入。重复直到r_k是表示的完美正方形s。 打印的值sqrt(s)。 输入可以采用任何格式。您可以假定这n是一个正整数。如果任何r_k一个具有前导零(且r_k≠0),则可以忽略零。 测试用例 这是一些测试用例。该过程演示了上述步骤。 Input: 23 Process: 23, 2304, 4 Output: 2 Input: 10 Process: 10, 100, 0 Output: 0 Input: 1 Process: 1, 16, 6, 64, 4 Output: 2 Input: 5 Process: 5, 529, 29, 2916, 16 Output: 4 Input: 145 Process: 145, 145161, 161, 16129, …

2
心不在a的语言学家
背景 您的朋友是一名语言学家,已记录并分析了各种语言的一些简单对话片段。由于心不在a,他们忘记了每个摘录使用哪种语言。您必须通过创建一个程序来分析句子结构并排除可能出现的情况,来帮助他们。 输入值 您的输入是一个非空字符串SVO,其中包含字符,分别代表subject,verb和object。它代表语言学家分析的对话摘要。 输出量 您的任务是将字符串分成多个句子,并.在每个句子后输入句点。一个句子包含一个动词,或者一个动词和一个主语,或者一个动词,一个主语和一个宾语。但是,您不知道原始语言使用的单词顺序。英语使用subject-verb-object,但是其他语言(例如拉丁语)使用subject-object-verb。实际上,所有六个排列都以自然语言存在,因此您必须检查每个排列。 您的输出应以换行符分隔的字符串包含每个适用的单词顺序,冒号:和根据该顺序分成句子的输入字符串。如果无法按某些单词顺序解析字符串,则应省略相应的行。行的顺序无关紧要,并且保证至少可以解析一个单词顺序。 例 考虑输入 VSVOSV 按VOS顺序,可以将片段的解析为VS.VOS.V.,按SVO顺序,可以将其解析为V.SVO.SV.。该命令OSV也有效,完整的输出为 VOS:VS.VOS.V. SVO:V.SVO.SV. OSV:V.SV.OSV. 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。允许使用正则表达式和所有内置函数。 测试用例 Input: V Output: VSO:V. VOS:V. SVO:V. OVS:V. SOV:V. OSV:V. Input: SVV Output: SVO:SV.V. SOV:SV.V. OSV:SV.V. Input: VSVOV Output: SVO:V.SVO.V. Input: VSOVS Output: VSO:VSO.VS. OVS:VS.OVS. Input: SVOSV Output: SVO:SVO.SV. OSV:SV.OSV. Input: VSVOSV Output: VOS:VS.VOS.V. …

6
从句子中删除重复的单词
在这个挑战中,您将从每个句子中删除重复的单词。 例子 Hello Hello, World! Hello, World! Code Code! Golf Code Code! Golf Code Hello hello World Hello World Programming Golf Programming! Programming Golf! 规格 输入将是一串ASCII字符。 句子定义为字符串末尾的任何内容,换行符(\n)或标点符号(.!?)。 单词定义为的序列A-Za-z。 单词不区分大小写(Hello== heLlO)。 仅保留单词在句子中的首次出现。 如果删除了一个单词,则应删除删除的单词之前的空格。(例如A A B-> A B)。 与往常一样,不允许出现标准漏洞。 这是代码高尔夫球,因此以字节为单位的最短代码胜出!
10 code-golf  string 

1
计算月相
介绍 tl; dr 在此挑战中,您必须计算给定日期的月相。 这项挑战的灵感来自游戏 心理社交视听实验 “ Superbrothers:Sword&Sworcery EP ”。在S:S&S EP中,月亮的阶段对冒险的结果很重要,因为某些事件仅在特定的时间点发生。 问题是:在特定日期出现哪个月相。每个主要阶段-从新月到第一季度到满月到第三季度-大约需要7.38天。整个月球周期大约为29.52天。基于这些值,存在各种计算方法。1个 输入值 基于公历的日期,在1970年1月1日至2116年12月31日之间。 您可以选择以下格式之一:yyyy-mm-dd,dd.mm.yyyy,dd/mm/yyyy,yyyymmdd或ddmmyyyy。 输出量 [0-7]根据此零索引数组输出月相索引: ['New moon', 'Waxing crescent', 'First quarter', 'Waxing gibbous', 'Full moon', 'Waning gibbous', 'Third quarter', 'Waning crescent`] 要求 您可以编写程序或函数。如果您使用匿名函数,请提供一个如何调用它的示例。 STDIN命令行参数,函数参数或最接近的等效参数都接受输入。 这是代码高尔夫球,因此最短答案以字节为单位。 不允许使用内置的或外部的库来计算月相。2 不允许出现标准漏洞。 测验 值是: date | index of the phase | illumination | …

1
数字时钟比赛拼图
有很多带有匹配项的难题,包括添加,删除或移动一定数量的匹配项以创建新的数字或形状。就像使用数字时钟一样。 给定12小时数字时钟上的有效时间,请输出需要移动最少行的数字,以使时钟上的每个可见数字都变为该数字。如果最小位数多于一位,则全部输出。如果不可能使每个数字都相同,则输出-1或输出非0的虚假值(您会得到很多)。 时钟数字如下所示: | | _ _| |_ _ _| _| |_| | _ |_ _| _ |_ |_| _ | | _ |_| |_| _ |_| _| _ | | |_| 测试用例: 输入: 123 时钟显示: _ _ | : _| _| | : |_ _| 输出: 4 说明:的显示1:23要求总共绘制12条线。因此,对于每个数字都相同,每个数字必须具有4行。仅有4行的数字是4。因此,答案必须是4。 输入: …

4
凸包中的点(2D)
背景 有限数量点的凸包是包含所有点的最小凸多边形,无论是顶点还是内部。有关更多信息,请参见有关PGM的问题,该问题定义得很好。 输入值 N+1N >= 3通过STDIN以下格式的2-D坐标()(也允许其他常见的高尔夫输入)(小数位数可以变化,但是您可以假定它保持“合理”,并且每个数字都可以表示为浮点数): 0.00;0.00000 1;0.00 0.000;1.0000 -1.00;1.000000 输出量 STDOUT如果列表中的第一个点((0.00;0.00000)在上面的示例中)位于其他N个点的凸包中,则打印到(或等效)真值(否则为等价)。 这是代码高尔夫球,因此以字节为单位的最短解决方案为准。 边界案例:如果该点位于凸包的边界上(例如,在壳的外部边界的一侧或顶点上),则可以返回任何值(但不会崩溃),因为该概率为零事件(以任何合理的概率)。 禁止使用:仅用于解决几何问题的任何内容(语言,运算符,数据结构,内置或包)(例如Mathematica的ConvexHull)。允许使用通用数学工具(矢量,矩阵,复数等)。 测验 应该返回TRUE:spiralTest1-TRUE,squareTest1-TRUE 应该返回FALSE:spiralTest2-FALSE,squareTest2-FALSE

3
I-Ching对二进制计算机
介绍 《易经》是一种古老的占卜文字,也是中国最古老的经典。它使用一种称为cleromancy的占卜类型,它会产生明显的随机数。 周易的基本单位是卦(卦),它由六叠水平线(stackedyáo)组成。每一行都已断开或未断开。收到的《周易》文本包含全部64种可能的卦 的文王序列呈现64个卦,分组为32对。对于28对,通过将第一个倒置(即旋转180°)来创建第二个卦。此规则的例外是对称六边形在旋转后相同。通过反转每条线来为它们提供合作伙伴:实体变为残破,而残破变为实体。 ▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄▄▄▄▄ …

1
蚂蚁可以在立方体上行走拼写单词吗?
编写一个带有两个参数的函数:一个正整数n和一个单词列表。 给定一个n × n × n单位的立方体,请为每个表面单位分配一个随机字母(AZ)。(对于3x3x3立方体,每个面上将有9个表面单元。) 然后确定蚂蚁是否有可能沿着表面走动(具有横穿面孔的能力)拼写所提供的每个单词。假设要拼写一个单词,字母必须在上/下或左/右相邻,但不一定在同一面上。[ 编辑,为清楚起见:蚂蚁可以反转其路径并多次使用字母。每个表面单元都算作一个字符,因此要用重复的字母拼写一个单词(例如“ see”),蚂蚁将不得不访问三个相邻的单元。 该函数应该输出两件事: 1)每个面上的每个字母,以使得可以推断拓扑。例如,对于2x2x2多维数据集,可接受的输出如下所示: QW ER TY OP UI DF JK XC AS GH LZ VB 2)每个单词,以及一个表示布尔值的布尔值,表示蚂蚁是否有可能通过沿着立方体的表面行走来拼写单词。例如: 1 ask 0 practical 1 pure 0 full 奖金挑战(不会因素考虑比分,只是为了好玩):代替ñ仅代表立方体的大小,让ñ也代表了形状的维度。因此,n为2将产生2x2平方;一个Ñ的3将产生3x3x3的立方体; 和Ñ的4将产生的tesseract 4x4x4x4。
10 code-golf 

3
在联合间隔符号中找到2个集合的交点
在联合间隔符号中找到2个集合的交点 给定两组描述为间隔的并集的实数,请输出这两组集合的相交的描述作为相同类型的间隔的并集。 输入集将始终包含间隔的并集,以便每个间隔以不同的整数开始和结束(即,没有间隔的度量为零)。但是,同一集合中的不同间隔可能以相同整数或重叠开始或结束。 输出集还必须是以整数开头和结尾的间隔的并集,但是即使是单个整数,输出中的间隔也不能与其他任何间隔重叠。 输入可以采用任何适合您选择的语言的形式,只要它由两个成对的整数对组成。 例如,您可以将集合表示为: [-10,-4]u[1,5]u[19,20] 或作为: [[-10,-4],[1,5],[19,20]] 或作为: [-10,-4;1,5;19,20] 您的输出表示形式必须与输入表示形式相同(除了它只是间隔的一个列表,而不是两个)。 示例/测试用例: 输入: [[[-90,-4],[4,90]],[[-50,50]]] 输出: [[-50,-4],[4,50]] 换句话说,我们将包含-90和-4之间所有实数以及4和90之间所有实数的集合与包含-50和50之间所有实数的集合相交。交集是包含所有介于-50和-4之间的实数,以及所有介于4和50之间的实数。 -90~~~~~-4 4~~~~~90 intersected with -50~~~~~~~~50 yields: -50~-4 4~~50 输入: "[-2,0]u[2,4]u[6,8] [-1,1]u[3,5]u[5,9]" 输出: "[-1,0]u[3,4]u[6,8]" 输入: [-9,-8;-8,0;-7,-6;-5,-4] [-7,-5;-1,0;-8,-1] 输出: [-8,0] 无效的输出(即使它表示相同的集合): [-8,0;-7,-5;-5,0] 得分: 这是代码高尔夫球,因此以字节为单位的最短源代码获胜,可能会受到以下奖励的影响。 奖金: 如果您还支持正和负无穷大作为区间的边界,则为-15%。您可以选择代表这些数字的令牌。(是的,无穷大是超现实中的数字; P)

2
破解保险柜!
受/puzzling/24334/to-catch-a-thief的启发 将为您提供一个n由s和s(或您选择的任何其他字符)填充的by n(n本身是可选输入)网格。您的目标是使每个单元格相同(或)。您可以按照以下定义进行一系列移动(注意与“ Puzzling SE”链接有所不同):0101 选择一个单元格。 同一行和同一列中的每个单元格(单元格本身除外)都变为相反。0到1和1到0。 输出完成任务所需的最少移动次数。如果无法解决,则输出除非负整数以外的任何内容。最短的代码获胜。 样本数据 1 0 0 0 0 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 …

3
画一个圣诞星/星状十二面体
在圣诞节,纸星星是我家庭中的一件大事,所以我认为虚拟的星星会很酷。 下面是常规十二面体的图像(来自https://en.wikipedia.org/wiki/Dodecahedron,归因于此处提到的作者。) 当应用于多面体时,星状过程(维基百科)涉及到扩展这些面直到它们与其他面交叉。因此,从常规十二面体开始,我们获得以下形状: 小星状十二面体,大十二面体和大星状十二面体 图片来自http://jwilson.coe.uga.edu/emat6680fa07/thrash/asn1/stellations.html 这是十二面体(Wolfram)的三个可能的星状。当我们将面孔延伸得越来越远时,它们从十二面体自然过渡到小型星状十二面体,大十二面体和大星状十二面体。 任务 您的程序或函数应显示以下多面体之一或将其输出到图像文件:常规十二面体,小星状十二面体,大十二面体或大星状十二面体。 配色方案应为上面的第二张图像。六对相对的面中的每一个均应为红色,黄色,绿色,青色,蓝色和洋红色六种颜色之一。您可以在您的语言或其文档中使用带有这些名称的默认颜色,也可以使用FF0000,FFFF00、00FF00、00FFFF,0000FF和FF00FF的颜色(如果需要,可以通过将强度降低到至少75%来降低这些颜色,例如将F减为C。) 请注意,我们将“面”定义为同一平面上的所有区域。因此,在上面的图像中,正面为黄色(平行的背面也将为黄色)。 背景应为黑色,灰色或白色。边缘可以省略,但如果绘制则应为黑色。 规则 显示的多面体的宽度必须在500到1000像素之间(宽度定义为任意两个显示的顶点之间的最大距离。) 显示的多面体必须是透视投影(视点距离多面体至少5个宽度)或正射投影(实际上是视点在无穷远处的透视投影)。 多面体必须可以从任何角度显示。(选择最简单的角度并制作硬编码的2D形状是不可接受的。)用户可以通过以下两种方式指定角度: 从标准输入或作为函数或命令行参数输入对应于三个旋转的三个角度。这些角度可以是欧拉角(第一个和最后一个旋转都围绕同一轴)或泰特布赖恩角(其中每个绕x,y和z轴旋转一个角度)https://en.wikipedia.org/ wiki / Euler_angles(简单地说,只要每次旋转均围绕x,y或z轴且连续旋转均围绕垂直轴,任何事情都会发生。) 用户可以任意多倍地绕x和y轴旋转多面体10步,并刷新显示(假定z轴垂直于屏幕)。 多面体必须是实体,而不是线框。 不允许用于绘制多面体的内置函数(我在看着你,Mathematica!) 计分 这是代码高尔夫。以字节为单位的最短代码获胜。 奖金 如果您不将内置函数用于3D绘图,则将您的分数乘以0.5。 如果可以显示十二面体的所有三个星号,则将分数乘以0.7,用户可以通过从stdin输入的整数1-3或函数或命令行参数来选择十二面体。 如果您同时获得这两个奖金,您的分数将乘以0.5 * 0.7 = 0.35 有用的信息(来源如下) https://zh.wikipedia.org/wiki/Regular_dodecahedron https://zh.wikipedia.org/wiki/Regular_icosahedron 十二面体有20个顶点。它们中的8个形成具有以下笛卡尔(x,y,z)坐标的立方体的顶点: (±1,±1,±1) 其余的12个如下(phi是黄金比例) (0,±1 /φ,±φ) (±1 /φ,±φ,0) (±φ,0,±1 /φ) 小星状十二面体和大十二面体的凸包显然是规则的十二面体。外部顶点描述一个二十面体。 根据维基百科,可以以与(0,±1,±φ)的循环置换类似的方式描述二十面体的12个顶点。小星状十二面体和大十二面体的外部顶点(与上面的十二面体的比例相同)形成一个较大的二十面体,其中顶点的坐标是(0,±φ^ 2,±φ)的循环排列。 十二面体和二十面体的面之间的角度分别为2 arctan(phi)和arccos(-(√5)/ 3)。 …

4
上下文中的标题关键字
这个挑战是基于D.Parnas中描述的问题,该问题基于将系统分解为模块所用的标准,并且在J.Morris的《功能语言的实际编程》中进行了阐述。 stdin以一种合理,方便的语言格式编写一个程序或函数,该程序或函数以或从中获取书名列表作为参数。例如, Green Sleeves Time Was Lost 要么 ("Green Sleeves";"Time Was Lost") 返回或打印到stdout按字母顺序排列的关键字列表,通过将每个关键字括在尖括号(<和>)中,显示其在原始标题中的上下文。与输入一样,输出可以采用合理的格式,这对于您的语言非常方便-换行符分隔的行,字符串列表等: <Green> Sleeves Time Was <Lost> Green <Sleeves> <Time> Was Lost Time <Was> Lost 标题将由一系列用单个空格分隔的关键字组成。关键字将仅包含字母字符。关键字应按字典顺序排序。标题将是唯一的,并且关键字在每个标题内将是唯一的,但是在多个标题中可能存在相同的关键字。如果一个关键字存在多个标题,则输出应以任意顺序列出每个外观。例如,给定此输入: A Dugong A Proboscis 有效的输出将是: <A> Proboscis <A> Dugong A <Dugong> A <Proboscis> 要么: <A> Dugong <A> Proboscis A <Dugong> A <Proboscis> 这是代码问题 …

9
别名还是N8?
甲numeronym(也称为“数字收缩”)是当一个字使用数字缩短。一种常见的收缩方法是使用替换后的子字符串的长度来替换除第一个和最后一个字符以外的所有字符。例如,使用i18n的代替internationalization或,L10n而不是localization。(L大写字母是因为小写字母看起来与相似1)。 当然,同一个词组中的几个词可能具有相同的缩写形式,因此您的工作是将一组词转换为它们的别名,或者,如果存在一些具有相同词名的不同词,则程序应给出一个的A7s R4t缩写,Ambiguous Result是的(是的,我知道这个结果本身就是模棱两可的结果。) 规则: 使用程序或功能,然后打印或返回结果。 输入被视为单个字符串。 输出是由空格分隔的单词的单个字符串。 您的程序无需转换长度为3的单词,也不必转换较短的单词。 如果l(小写的ell)将在1(一个)之前出现,则应将其设置为大写。 如果I(一只大写的眼睛)出现在1(一只)之前,则应将其设为小写。 输入将是可打印的ASCII和空格。单词之间用空格隔开。 最短的代码获胜。 例子: A7s R4t -> A7s R4t (OR: A1s R1t, etc) Ambiguous Result -> A7s R4t Billy goats gruff -> B3y g3s g3f Thanks for the Memories -> T4s f1r the M6s (one possible answer, NOT: Thnks fr …
10 code-golf  string 

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.