Questions tagged «code-golf»

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

5
沿XYZ对称地拉伸立方体的面
沙盒 出于当前任务的目的,单位长度的多维数据集以ASCII符号的斜投影方式呈现,如下所示: +-----+ / /| +-----+ | | | + | |/ +-----+ + 用于顶点。 -X边缘。沿X的单位长度由-两个顶点之间的五个表示。 |为Y边缘。沿Y的单位长度由|两个顶点之间的两个表示。 /Z边缘。沿Z的单位长度由/两个顶点之间的1表示。 仅在所有三个平面相交的位置绘制顶点。 仅在恰好两个平面相交的位置绘制边缘。 拉伸单位面时,它会从其原始位置偏移单位长度,并为每个方向(正方向和负方向)创建四个新边。 您可以将拉伸视为绘制3D笛卡尔坐标系的轴,其中每个轴都表示为长方体,其横截面为1x1,长度n为(0,0,0) 沿X拉伸1: +-----------------+ / /| +-----------------+ | | | + | |/ +-----------------+ 任务 给定XYZ轴的三个数字,按指定的数量对称拉伸单位立方体的面,并使用上面指定的ASCII符号呈现结果。 输入项 x,y,z –非负数–各个轴的挤出长度。0表示不挤出。输入可以是三个数字,三个数字的列表,三个字符,一个字符串或任何您方便使用的东西。 输出量 挤压后立方体的ASCII图。允许前导和尾随wihtespace。 测试用例 X Y Z 0 0 0 +-----+ / …

5
数学表达式中“ /”和“÷”之间的历史差异
介绍: 受到关于表达式的讨论的启发,讨论已经进行了很多年。6÷2(1+2)6÷2(1+2)6÷2(1+2) 使用表达式,数学家将很快看到正确答案是,而具有简单数学背景的人从学校毕业后将很快看到正确答案是。那么,这种争议何在呢?因此得出不同的答案呢?在编写方式时有两个相互冲突的规则。一种是由于零件,一种是由于分隔符号。6÷2(1+2)6÷2(1+2)6÷2(1+2)1119996 ÷ 2 (1+2)6÷2(1+2)6÷2(1+2)2(÷ 虽然这两个数学家和“普通人”将使用PEMDAS(括号-指数-司/乘法-加法/减法),数学家表达被这样下面评价,因为是一样例如单项式又名“ 由于并置的隐式乘法导致的单个项 ”(因此in的一部分),其计算结果将不同于(二项式又称为两个项):2 (3 )2(3)2(3)2 倍22X22x^2PPEMDAS2 × (3 )2×(3)2×(3) 6 ÷ 2 (1 + 2 )→ 62 (3 )→ 66→ 16÷2(1个+2)→62(3)→66→1个6÷2(1+2) → \frac{6}{2(3)} → \frac{6}{6} → 1 而对于“普通人”,和将是相同的(因此是in的一部分),因此他们将改用它:2 (3 )2(3)2(3)2 × (3 )2×(3)2×(3)MDPEMDAS 6 ÷ 2 (1 + 2 )→ 6 / 2 × …

9
“排序”算法
有一种“排序算法”,有时也称为Stalin排序,在该算法中,为了对列表进行排序,您只需从列表中删除元素,直到其按升序进行排序即可。例如清单 [1, 2, 4, 5, 3, 6, 6] 当使用斯大林排序进行“排序”时 [1, 2, 4, 5, 6, 6] 这三个被删除,因为它故障。 现在显然有许多方法可以删除元素以对列表进行排序。例如,任何少于两个元素的列表都必须进行排序,因此只要盲目地删除足够的元素,我们就可以对列表进行排序。既然是这种情况,我们只在乎斯大林排序可能的最长结果。 您的任务将是获取一个正整数列表,并输出可以通过从原始列表中删除元素而得出的最长排序(递增)列表的长度。那就是找到最长排序的(可能是非连续的)子列表的长度。 排序的列表可以连续多次具有相同的元素。除非程序本身为空,否则不需要支持空列表。 计分 您的答案将根据其可能的最长斯大林排序长度进行评分。程序将被解释为字节序列而不是字符序列,并且它们的顺序将是通过将字节解释为数字而产生的自然顺序。分数越低越好。 这不是代码高尔夫 这是一个简洁的工具,可帮助您对答案进行评分。 测试用例 [1, 2, 4, 5, 3, 6, 6] -> 6 [19, 2] -> 1 [3, 3, 4, 3] -> 3 [10] -> 1 [1, 2, 4, 9] …

19
教会布尔
布尔布尔教堂 一堂布尔是一个函数,返回x为真,y假其中x是第一个参数的功能,y是第二个参数的功能。这些功能可以构成其他功能,这些功能代表and not or xor和implies逻辑操作。 挑战 构建教堂和布尔and not or xor和implies教堂大门在你选择的语言。and or并且xor应接受两个函数(代表教堂布尔值)并返回一个函数(代表另一个教堂布尔值)。同样,not应该反转它需要的功能,并且implies门应该执行布尔值隐含逻辑,其中第一个参数implies第二个。 计分 制作教堂所需的所有代码的总长度,true以及false使用您的语言and not or xor以及implies教堂和教堂大门所需要的代码,不包括功能名称。(例如,false=lambda x,y:y在Python中为13个字节)。您可以稍后在代码中重用这些名称,使它们的计数占该门的总字节数为1个字节。 伪代码示例: 您创建的函数应该可以稍后在您的代码中这样调用。 true(x, y) -> x false(x, y) -> y and(true, true)(x, y) -> x and(true, false)(x, y) -> y # ... etc

24
可以将数字分解为2的幂吗?
昨天和孩子一起玩时,我注意到他的玩具火车上的数字: 所以我们有可分为或4281428142814−2−8−14−2−8−14-2-8-122−21−23−2022−21−23−202^2-2^1-2^3-2^0 如此简单的挑战:给定一个非负数作为输入,返回一致的真值和假值,这些值表示该数字的字符串表示形式(以10为基数且不带前导零)可以以某种方式拆分为2的幂。 例子: 4281 truthy (4-2-8-1) 164 truthy (16-4 or 1-64) 8192 truthy (the number itself is a power of 2) 81024 truthy (8-1024 or 8-1-02-4) 101 truthy (1-01) 0 falsey (0 cannot be represented as 2^x for any x) 1 truthy 3 falsey 234789 falsey 256323 falsey (we …

21
语音电话号码
目标 编写程序或函数,将数字电话号码转换为易于说出的文本。重复数字时,应将它们读为“双n”或“三n”。 要求 输入项 一串数字。 假设所有字符都是从0到9的数字。 假设该字符串包含至少一个字符。 输出量 用空格隔开的单词,这些单词如何大声读出。 将数字翻译成单词: 0“哦” 1“一个” 2“两个” 3“三个” 4“四个” 5“五个” 6“六个” 7“七个” 8“八个” 9“九” 当同一位数字连续重复两次时,请输入“ double number ”。 当同位重复三次成一排,写“三重号 ”。 当同一位数字重复四次或更多次时,请为前两位数字输入“ double number ”,并评估字符串的其余部分。 每个单词之间只有一个空格字符。可以使用单个前导或尾随空格。 输出不区分大小写。 计分 字节最少的源代码。 测试用例 input output ------------------- 0123 oh one two three 4554554 four double five four double five …

15
让我们玩Mölkky!
莫尔基 莫尔基(Mölkky)是芬兰的投掷游戏。玩家使用木销(也称为“mölkky”)尝试敲打尺寸几乎与投掷销类似的木销,标有从1到12的数字。销的初始位置如下: (07)(09)(08) (05)(11)(12)(06) (03)(10)(04) (01)(02) 本说明和以下规则基于Wikipedia。 简化的Mölkky规则 敲击一个图钉会得分该图钉上标记的点数。 敲2个或更多的针可计分被打倒的针数(例如,敲3个针可计3分)。 游戏的目的是精确达到50分。将得分重新设置为25分,得分超过50 分。 出于这一挑战的目的,我们将假设引脚始终处于上述确切顺序。(在真实的游戏中,每次掷球后,将其重新放置在降落位置上。) 所有其他Mölkky规则都将被忽略,仅考虑一个玩家。 输入项 包含12个布尔值的列表的非空列表。每个布尔值列表都描述了抛出的结果:如果销被撞倒则为1,否则为0。的布尔值在销的确切顺序给出,从左上到右下:7,9,8,5,11,12,6,3,10,4,1,2。 输出量 后,所有的分数由抛出应用规则在输入所描述的,计算出的1,2和3。 详细的例子 让我们考虑以下输入: // 07 09 08 05 11 12 06 03 10 04 01 02 [ [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 ], // scores …
33 code-golf  game  binary 

30
第一个,最后一个以及之间的所有内容
给定两个整数,则输出两个整数,然后输出它们之间的范围(不包括两个整数)。 范围的顺序必须与输入的顺序相同。 例子: Input Output 0, 5 -> [0, 5, 1, 2, 3, 4] -3, 8 -> [-3, 8, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7] 4, 4 -> [4, 4] 4, 5 -> [4, 5] 8, 2 -> [8, 2, 7, 6, 5, 4, 3] -2, …
33 code-golf 

30
返回最接近的素数
挑战 这是一个简单的例子:给定一个最大为1,000,000的正整数,返回最接近的质数。 如果数字本身是质数,则应返回该数字;如果有两个质数均接近提供的数字,则返回两者中的较低者。 输入形式为单个整数,输出形式也应为整数。 我不在乎您如何接受输入(函数,STDIN等)或显示输出(函数,STDOUT等),只要它可以工作即可。 这是代码高尔夫,因此适用标准规则-字节最少的程序将获胜! 测试用例 Input => Output ------ ------- 80 => 79 100 => 101 5 => 5 9 => 7 532 => 523 1 => 2
33 code-golf  primes 

30
一半,一半,一半
请考虑以下数字顺序: 0,12,14,34,18,38,58,78,116,316,516,716,916,1116,1316,1516,132,332,532,…0,1个2,1个4,34,1个8,38,58,78,1个16,316,516,716,916,1116,1316,1516,1个32,332,532,… 0, \frac{1}{2}, \frac{1}{4}, \frac{3}{4}, \frac{1}{8}, \frac{3}{8}, \frac{5}{8}, \frac{7}{8}, \frac{1}{16}, \frac{3}{16}, \frac{5}{16}, \frac{7}{16}, \frac{9}{16}, \frac{11}{16}, \frac{13}{16}, \frac{15}{16}, \frac{1}{32}, \frac{3}{32}, \frac{5}{32}, \dots 它枚举单位间隔中的所有二进制分数。[0,1)[0,1个) [0, 1) (为简化此挑战,第一个元素是可选的:您可以跳过它,并考虑序列以1/2开头。) 任务 编写一个程序(完整的程序或功能),以... 选择以下行为之一: 输入n,输出序列的第n个元素(0索引或1索引); 输入n,输出序列的前n个元素; 不输入任何内容,输出可以一一取整的无限数序列; 规则 您的程序至少应支持前1000个项目; 您可以根据需要选择输出小数或分数(内置,整数对,字符串)。 此问题中不允许输入/输出为二进制数字; 这是代码高尔夫球,最短的代码获胜; 不允许出现标准漏洞。 测试用例 input output 1 1/2 0.5 2 1/4 0.25 3 3/4 0.75 …

21
字母直方图
给定一个包含一个或多个单词[a-z]+和零个或多个空格的输入句子,输出该输入句子的字母分布的ASCII艺术直方图(条形图)。 直方图必须水平放置,即字母键沿底部从左到右按字母顺序排列,Y轴标记为1-每5个单位。Y轴必须是5的最小倍数,且至少与最高的钢筋一样高,并且必须右对齐。X轴标有输入字母,两者之间没有间隙。例如,输入a bb dd应带有标签,abd而不要带有标签ab d,跳过c。条形图本身可以由任何一致的ASCII字符组成-我将X在示例中使用它们。 test example 5- X X X 1-XXXXXXXX aelmpstx 由于存在三个e,两个t和一个almsx。 更多示例: the quick brown fox jumped over the lazy dogs 5- X X X X XX X X X XX 1-XXXXXXXXXXXXXXXXXXXXXXXXXX abcdefghijklmnopqrstuvwxyz now is the time for all good men to come to the aid of …

8
可以从素数生成方树年轮吗?
显然是的!三个简单的步骤。 步骤1 令f(n)表示素数计数函数(素数小于或等于n)。 如下定义整数序列 s(n)。对于每个正整数n, 将t初始化为n。 只要t既不是素数也不是1,则将t替换为f(t)并进行迭代。 迭代次数为s(n)。 该迭代过程是保证最终因为˚F(Ñ)< ñ所有Ñ。 考虑例如n= 25。我们初始化t =25。由于这不是素数也不是1,我们计算f(25)为9。这成为t的新值。这既不是素数也不是1,所以我们继续:f(9)是4。我们再次继续:f(4)是2。因为这是素数,所以我们在这里停止。我们完成了3次迭代(从25到9,然后到4,再到2)。因此s(25)为3。 序列的前40个词如下。该序列不在OEIS中。 0 0 0 1 0 1 0 2 2 2 0 1 0 2 2 2 0 1 0 3 3 3 0 3 3 3 3 3 0 3 0 1 1 1 1 1 …

24
五个立方体的总和
给定一个整数,输出五个总和为该整数的理想立方体。请注意,多维数据集可以是正数,负数或零。例如, -10 == -64 - 64 + 64 + 27 + 27 因此对于输入-10您可以输出[-64, -64, 64, 27, 27],尽管其他解决方案也是可行的。请注意,您应该输出多维数据集,而不是要输出的数字。 始终存在解决方案-您可能会为自己感到困惑。进一步推测四个立方体就足够了。

30
传递了多少论点?
使用您选择的语言,编写一个函数,该函数接受可变数量的参数并返回调用该参数的参数数量。 细节: 您的语言需要支持可变参数函数:可调用的函数,可以接受任意数量的参数并返回值。 参数必须能够单独传递。这意味着传递数组将仅计入一个参数。如果您的语言支持,则可以使用“所有传递的参数”数组;该函数的调用方式受到限制。 调用此函数的代码不必在其源中传递参数数量。如果编译器将参数数量作为调用约定的一部分插入,则允许这样做。 参数可以是您想要的任何类型。您只能支持单一类型(例如,仅支持int仍然有效),任意类型(允许任何类型的参数)或参数类型的任意组合(例如,第一个arg为int,其余为字符串)。 您的函数可能具有最大数量的参数(尤其是由于资源有限),但是必须至少支持2个参数。 样品: f() 退货 0 f(1)或f("a")返回1 f([1, 2, 3])1在传递数组时返回,而不是3个参数 f(1, 10)或f(1, "a")返回2 因为这是代码高尔夫球,所以胜出的解决方案是使用最少字节数的解决方案。

30
尽可能公平
介绍 在这个挑战中,您应该将整数分成两部分。由于没有人喜欢小菜一碟,因此您的目标是尽可能做到公平。例如,如果您想将整数7129分成两部分,则有3种可能的方法。 7,129,71,29并且712,9都是可能的,但这71,29是将其分为两部分的最公平的方法,因为它最大程度地减少了两者之间的差异: 7 129 -> |7-129| = 122 71 29 -> |71-29| = 42 712 9 -> |712-9| = 703 挑战 给定一个整数,如上所述,确定对其进行分区的最佳可能方式并报告产生的差异。 规则 拆分仅对长度至少为2的整数有意义,输入将​​始终≥10 输入可以是整数,数字列表或字符串 您不必处理无效的输入 测试用例 您只需要报告所产生的差异,分区仅在此处进行说明: 10 -> 1,0 -> 1 11 -> 1,1 -> 0 12 -> 1,2 -> 1 13 -> 1,3 -> 2 101 …

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.