编程拼图和代码高尔夫

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

25
告诉我我的控制台尺寸!
任意两位十进制格式 *的输出端子尺寸(列和行)。例如,输出可能是80x25。 启示。提示。 *输出必须在单个或两个连续的行上同时具有两个度量,并且输出的前导和/或尾随行可能不超过一个(可选地,后跟换行)。(最多四行)行不得超过max(cols,1 + len(str(cols))+ len(str(ro‌ws))))。
41 code-golf 

30
提示
对于今天的挑战,您必须编写一个可替换字符串大小写的程序或函数。但是,您必须忽略非字母字符。这意味着每个字母字符必须有一个不同的情况下,比前面和下面的字母字符。例如,这比每隔一个字母大写更复杂。如果您使用诸如 hello world 并将所有其他字符转换为大写,您将获得: hElLo wOrLd 如您所见,小写字母o后面是小写字母w。这是无效的。相反,您必须忽略空格,从而得到以下结果: hElLo WoRlD 所有非字母字符必须保持相同。只要输出始终交替,输出就可以以大写或小写开头。这意味着以下内容也是可接受的输出: HeLlO wOrLd 不管输入大小写如何,您的程序都应该可以工作。 输入字符串将只包含可打印的ASCII,因此您不必担心不可打印的字符,换行符或unicode。您的提交可以是完整程序,也可以是函数,并且您可以采用任何合理的格式进行输入和输出。例如,函数自变量/返回值,STDIN / STDOUT,读/写文件等。 例子: ASCII -> AsCiI 42 -> 42 #include <iostream> -> #InClUdE <iOsTrEaM> LEAVE_my_symbols#!#&^%_ALONE!!! -> lEaVe_My_SyMbOlS#!#&^%_aLoNe!!! PPCG Rocks!!! For realz. -> PpCg RoCkS!!! fOr ReAlZ. This example will start with lowercase -> tHiS eXaMpLe WiLl …
41 code-golf  string 

30
远离零
任务 给定一个非负整数n,则输出1if n为0,并输出else的值n。 输入项 非负整数。 如果您想接受该字符串作为输入,则该字符串将与以下regex:相匹配:/^(0|[1-9][0-9]*)$/即,它不得有任何前导零,除非是0。 如果接受实整数作为输入,则可以假定该整数在语言的处理能力之内。 输出量 正整数,如上所述。不允许前导零。您的输出应与regex相匹配/^[1-9][0-9]*$/。 测试用例 input output 0 1 1 1 2 2 3 3 4 4 5 5 6 6 7 7 计分 这是代码高尔夫球,因此最短答案以字节为单位。 有标准漏洞。

30
这个数字是-2的整数次幂吗?
有很多聪明的方法来确定数字是否为2的幂。这不再是一个有趣的问题,因此让我们确定给定的整数是否为-2的整数次幂。例如: -2 => yes: (-2)¹ -1 => no 0 => no 1 => yes: (-2)⁰ 2 => no 3 => no 4 => yes: (-2)² 规则 您可以编写程序或函数,并使用接收输入和提供输出的任何标准方法。 您的输入是一个整数,如果该整数是-2的整数次幂,则输出必须是一个真实值,否则,则必须是一个虚假值。不允许其他输出(例如警告消息)。 通常的整数溢出规则适用:您的解决方案必须能够在语言的假设(或实际)版本中使用任意大整数,默认情况下,所有整数都是无界的,但是如果您的程序由于实现而在实践中失败不支持大整数,这不会使解决方案无效。 您可以使用任何编程语言,但是请注意,默认情况下,这些漏洞是禁止的。 获奖条件 这是一场代码高尔夫球比赛:字节数最少(在您选择的编码中)的答案是获胜者。

15
确定您的源代码中的数字是否为2017易写的无素数
在我一直挑战的所有年份中,2017年是第一年。因此,问题将是关于质数及其性质。 您的任务是生成一个将任意大的正整数作为输入的程序或函数,并输出或返回该数字是否为2017易碎的数字,即该数字中最大的质数是否为2017或更小。 一些示例输入及其输出: 1 (has no prime factors) true 2 (= 2) true 80 (= 2 x 2 x 2 x 2 x 5) true 2017 (= 2017) true 2019 (= 3 x 673) true 2027 (= 2027) false 11111 (= 41 x 271) true 45183 (= 3 x 15061) …

30
可以用(3 ^ x)-1格式写这个数字吗?
挑战: 创建一个接受正整数的程序,并检查它是否可以(3 ^ x)-1的形式编写,其中X是另一个正整数。 如果可以,输出X 如果不能,则输出-1或伪造的语句。 输入/输出示例 输入: 2 可以写成(3 ^ 1)-1,所以我们输出x就是1 输出: 1 输入: 26 26可以写成(3 ^ 3)-1,所以我们输出x(3) 输出: 3 输入: 1024 1024不能以​​(3 ^ x)-1的形式写入,因此我们输出-1 输出: -1 这是代码高尔夫球,因此最少的字节数获胜 相关OEIS:A024023

30
写句探测器
甲俳句是三行诗,具有5/7/5 音节计数,分别。 一个俳句-W是诗与三行,有5/7/5 字计数,分别。 挑战 编写一个程序,如果输入的是haiku-w,则返回true,否则返回false。 有效的haiku-w输入必须包含3行,并用换行符分隔。 第1行必须包含5个字,每个字之间用空格隔开。 第2行必须由7个单词组成,每个单词用空格分隔。 第3行必须包含5个字,每个字用空格隔开。 例子 The man in the suit is the same man from the store. He is a cool guy. 结果:正确 Whitecaps on the bay: A broken signboard banging In the April wind. 结果:错误 规则 这是代码高尔夫球,因此最短的答案以字节为单位。 适用标准代码高尔夫球漏洞。禁止作弊。 其他布尔返回值(例如1和0)也是可以接受的。 也可以接受长度为3的字符串列表作为输入。 有效的haiku-w输入不应包含前导或尾随空格,也不能有多个空格分隔单词。

30
挑战数组#1:交替数组
交替阵列 一个交替阵列是其中两个(不一定不同)值交替的任何长度的列表。也就是说,所有偶数索引项都相等,所有奇数索引项都相等。 您的任务是编写一个程序或函数,当给出正整数列表时,如果该程序或函数truthy是交替的,falsy则输出/返回。 这是代码高尔夫球,因此最短的代码(以字节为单位)获胜! 边缘案例: [] -> True [1] -> True [1,1] -> True [1,2,1] -> True 其他测试用例: [1,2,1,2] -> True [3,4,3] -> True [10,5,10,5,10] -> True [10,11] -> True [9,9,9,9,9] -> True [5,4,3,5,4,3] -> False [3,2,1,2,1,2] -> False [1,2,1,2,1,1,2] -> False [2,2,3,3] -> False [2,3,3,2] -> False 例 这是一个示例,您可以使用Python …

10
方形,钻石,方形,钻石
任务 给定一个非空的小写ASCII字母字符串a- z,请使用第一个字符,并: 用第二个字符的副本方块围住它, 用第三个角色的副本菱形包围它, 用第四个字符的副本方块围住… …在正方形和菱形边框之间交替,直到字符串结尾。边框之间的空白应由ASCII空格()表示。 要添加正方形边框,请在整个当前“工作数组”周围精确绘制一个正方形: sssssssssss t s t s t t s t t s t t s t t s t aaa t s t aaa t s t aca t => st aca ts t aaa t s t aaa t s t t …

8
找到旋转的单词!
不要问我如何或为什么,但是在编码一个项目时,我注意到几个单词的字符有一个特定的模式,称为字母,我用铅笔上的铅笔将单词的每个字符连接起来,我得到了两个螺旋形,然后我注意到第一个螺旋形是顺时针方向,另一个是逆时针方向,还有其他特征...因此我将它们命名为Swirling Words! 一个旋流字可以是: 顺时针或逆时针 向心或离心 这里有一些旋转字的例子: 任务1: 编写一个完整的程序或函数,该函数将从标准输入中提取一个单词,如果是旋转单词及其特征,则以可读格式,扩展文本,3个字符,标志等输出。 不同单词的测试用例和示例输出(但是您可以决定如何表示结果): EARTH, GROUP > NO // NOT A SWIRLING WORD OPERA, STAY, IRIS > SW,CF,CW // SWIRLING WORD, CENTRIFUGAL, CLOCKWISE MINER, TAX, PLUG, META > SW,CF,CC // SWIRLING WORD, CENTRIFUGAL, COUNTERCLOCKWISE AXIOM, AXIS, COOK > SW,CP,CW // SWIRLING WORD, CENTRIPETAL, CLOCKWISE WATCH, …
41 code-golf  string 

30
天哪,吉萨高尔夫!
“吉萨数”(俗称“ 蒂米数”)是指数字代表金字塔的任何数字(A134810)。例如,“ 12321”是一个吉萨数字,因为它可以像这样可视化: 3 2 2 1 1 但是,“ 123321”之类的字符不是吉萨币,因为金字塔的顶部有两位数字 33 2 2 1 1 换句话说,如果满足以下所有条件,则数字为吉萨数: 它的位数是奇数,中间的数字是最大的 它是回文的(相同的向前或向后读取),并且 数字的前半部分严格增加一个。(由于必须是回文,这意味着数字的后半部分必须严格减少一位) 您必须编写一个采用正整数作为输入的完整程序或函数,并确定它是否为吉萨数。您可以将输入作为字符串或数字。如果它是吉萨数,则输出真实值。否则,将产生虚假的值。 共有45个吉萨数字,因此这些输入中的任何一个都应产生真实值: 1 2 3 4 5 6 7 8 9 121 232 343 454 565 676 787 898 12321 23432 34543 45654 56765 67876 78987 1234321 2345432 3456543 4567654 5678765 …

9
揭开一维迷宫的秘密
背景 您醒来后发现自己迷失在一维迷宫中!出现一个神秘的精灵(或其他东西),并解释说出口位于您的面前,但是您与出口之间的挑战是一系列的。当您前行时,您会意识到所有所谓的挑战仅仅是锁着的门。首先,您会看到带有T形钥匙孔的门,而自己却没有这样的钥匙,请后退步伐,寻找具有T形状的钥匙。 沮丧的是,您在地面上发现了字母键的汤,这些汤都不符合您遇到的门。出于某种天才(或愚蠢)的考虑,您决定如果将小写字母t形的钥匙塞入足够的强度,则它可能可以装入该插槽中。当您用t手握小写字母的方式接近门时,T孔会发出绿色的光,并且门会在您面前溶解。 一倒,还有更多... 挑战 挑战的目标是标记退出迷宫需要花费多少步骤。 挑战的输入是迷宫:一个仅包含字符的字符串[A-Za-z^$ ]。词汇表: ^-起始空间。输入将只包含一个^。 $-出口(自由!)。输入将只包含一个$。 [A-Z]-大写字母表示大门。如果您已经收集了必需的密钥,则只能通过此门。 [a-z]-小写字母表示按键。通过走到包含密钥的空间中来收集这些密钥。 输入中每个大写字母最多包含一个。这意味着门的总数将在0-26之间(含0和26)。 每个锁着的门上[A-Z]都有一个对应的小写钥匙[a-z]。输入中可以有任意数量的空格()。 所有的门将在起点的右侧,在出口的左侧。这样就不会有多余的门。所有输入都是可解的。 此挑战的输出将是一个数字,即退出迷宫所采取的步骤数。 算法 您退出这个令人毛骨悚然的地方的有条理的方法如下: 从开头(^)开始,然后向前(向右)收集遇到的所有键。 当您碰到一扇门时,如果您拥有正确的钥匙,则可以继续前进到门上。如果没有正确的钥匙,您将向后走(左)收集碰到的钥匙,直到找到您无法打开的最新门的钥匙。 收集到当前麻烦门的钥匙后,您将返回右侧并继续前进。 重复此过程,直到您进入出口($)。 有经验的高尔夫球手会理解,只要您的代码输出的结果与运行此算法相同,就不必实施此特定算法。 数数 每次您从一个正方形移到另一个正方形时,这都算是一个步骤。转动180º不会产生任何附加步骤。如果没有必需的钥匙,您将无法前进到门上。您必须踩到钥匙才能捡起来,并且必须踩到出口才能赢。首次移动后,起始空格(^)的行为与其他任何常规空格相同。 例子 在这些示例中,我将空格留作下划线以供人类阅读。 输入为_a_^_A__$__。输出为11。您1往前走,注意没有A门钥匙,然后没有脸。您向后走,直到占据了包含a(3向后走,现在4总计)的空间。然后,您可以向前走直到占据包含出口的空间(7向前走,11总计)。 输入为b__j^__a_AJB_$。输出是,41您在迷宫的后面进行了两次单独的行程,一次行程获取j钥匙,而下一次行程获取b钥匙。 输入为__m__t_^__x_T_MX_$____。输出为44。x从头到门的途中捡起钥匙,您将不需要花费额外的时间就可以拿到钥匙T。 输入为g_t_^G_T$。输出为12。如果G没有钥匙,您将无法直接进入空间。您很幸运在拿到t钥匙的路上拿起g钥匙,从而在通往自由的道路上打开了两扇门。 输入为_^_____$。输出为6。那很简单。 I / O准则和制胜标准 适用标准I / O规则。这是一个代码高尔夫挑战。
41 code-golf  string 


30
水稻和象棋问题
一位印度传奇人物讲述了所谓的国际象棋发明者的故事,他用他的棋子给印度皇帝留下了深刻的印象,以至于他得到的任何要求都会得到回报。 该男子说他想用大米付钱。他想在棋盘的第一个正方形上放一粒米,第二个想要两个,第三个四个,第四个八个,依此类推,直到第64个正方形。 皇帝惊讶于这个人要求这么小的报酬,但是随着他的数学家开始数数,他最终失去了他的一个省。 任务 给定假设的棋盘的边长(默认棋盘的边长为8)和正方形之间的乘数(图例中为2),计算皇帝必须付给该人的米粒数。 笔记 边长将始终为正整数。乘数可以改为任何有理数。 如果您选择的语言不能显示非常大的数字,则可以,只要您的程序可以正确处理较小的输入即可。 同样,如果您选择的语言舍入较大的值(带有指数符号),则这些值近似正确也是可以的。 测试用例 Input (side length, multiplier) => Output 8, 2 => 18446744073709551615 3, 6 => 2015539 7, 1.5 => 850161998.2854 5, -3 => 211822152361 256, 1 => 65536 2, 2 => 15 2, -2 => -5 请注意,显式公式 result = (multiplier ^ (side …
41 code-golf  math 

22
删除每N个N
任务 在此挑战中,您的输入是一个非空的正整数列表,以您的语言的本机格式给出。您的输出是相同列表,格式相同,但删除了一些元素。您应删除的每次出现1,第二次出现的第二次出现2,第三次出现的所有第三次3,依此类推。通常,对于每个正整数N,您应从列表中删除N第一个出现的事件。NN 例 考虑输入清单 [3,2,6,1,1,6,2,3,2,6,6,6,6,1,6,6,3,3,7,2] 首先,我们删除每次出现的1: [3,2,6, 6,2,3,2,6,6,6,6, 6,6,3,3,7,2] 然后每秒出现一次2: [3,2,6, 6, 3,2,6,6,6,6, 6,6,3,3,7 ] 然后每三出现一次3: [3,2,6, 6, 3,2,6,6,6,6, 6,6, 3,7 ] 数字4和5不会出现在输入中,因此可以跳过它们。接下来,我们删除第六次出现的6: [3,2,6, 6, 3,2,6,6,6, 6,6, 3,7 ] 只会出现一次7,因此也可以跳过。因此正确的输出是 [3,2,6,6,3,2,6,6,6,6,6,3,7] 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 [1] -> [] [2] -> [2] [1,1,1] -> [] [2,2,2] -> [2,2] [1,1,2,2,2,3,3,3,3] -> [2,2,3,3,3] [1,2,3,1,2,3,1,2,3,1,2,3] …

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.