编程拼图和代码高尔夫

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

22
画心形
挑战 画一个心形 ...作为ASCII艺术! 您的艺术不必看起来完全像我的,但必须看起来像心形。 心脏内部必须至少包含20次“爱”字样 规则 该程序必须将美术作品写入控制台。 最短的代码(以字节为单位,任何语言)均获胜。 获胜者将在2月14日情人节那天被选中

30
这个数字是邪恶的吗?
介绍 在数论中,如果二进制表示形式中的偶数个数为1,则该数字被认为是邪恶的。在今天的挑战中,您将确定给定的数字是否为邪恶。 挑战 您的工作是编写一个完整的程序或函数,以接受单个非负整数作为输入并输出(或返回)该数字是否为邪恶。 如果数字是邪恶的,则可以输出任何真值,而如果数字不是邪恶的,则可以输出任何虚假的值。 您可以以任何可接受的格式输入和输出。 不允许出现标准漏洞。 OEIS序列A001969是包含所有邪恶数字的序列。 这是前10000个邪恶数字的列表,以供参考(还有更多测试用例!) 这个问题是代码高尔夫,所以越短越好。 不要被打高尔夫球的简短答案所困扰。我鼓励您以喜欢的任何语言提交。 以下是一些测试案例: 3 => True 11 => False 777 => True 43 => True 55 => False 666 => False 排行榜 页面底部是一个堆栈片段,其中包含此问题的页首横幅。(谢谢@MartinEnder) 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 # Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: # Ruby, <s>104</s> <s>101</s> 96 bytes 如果您想在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: # Perl, 43 + …

30
隔行扫描
您面临的挑战是编写一个程序或函数,当给定两个相等长度的字符串时,该程序或函数将交换所有其他字符并以任一顺序输出/返回结果字符串。 例子 "Hello," "world!" --> "Hollo!" "werld," "code" "golf" --> "codf" "gole" "happy" "angry" --> "hnpry" "aagpy" "qwerty" "dvorak" --> "qvertk" "dworay" "1, 2, 3" "a, b, c" --> "1, b, 3" "a, 2, c" "3.141592653589" "2.718281828459" --> "3.111291623489" "2.748582858559" "DJMcMayhem" "trichoplax" --> "DrMcMoylex" "tJichapham" "Doorknob" "Downgoat" --> "Doonkoot" "Dowrgnab" …
34 code-golf  string 

6
您可以通过加倍并重新排列来达到此数字吗?
受到Math.SE上这个问题的启发。 首先,1您可以重复执行以下两个操作之一: 将数字加倍。 要么 以任何您想要的方式重新排列其数字,但不得有任何前导零。 以链接的Math.SE帖子为例,我们可以1000通过以下步骤进行操作: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 125, 250, 500, 1000 您可以通过此过程获得哪些数字,最短的解决方案是什么? 挑战 给定正整数,如果可能的话N,确定N上述过程可以达到的最短整数序列。如果有几个最佳解决方案,请输出其中任何一个。如果不存在这样的序列,则应输出一个空列表。 该序列可以采用任何方便,明确的字符串或列表格式。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行参数或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 测试用例 这是所有可达的数字列表,最大为256,包括256。第一列是数字(您的输入),第二列是最佳步骤数(可用于检查解决方案的有效性),第三列是专栏是到达那里的一种最佳顺序: 1 1 {1} 2 2 {1,2} 4 3 {1,2,4} 8 4 {1,2,4,8} 16 5 {1,2,4,8,16} 23 7 {1,2,4,8,16,32,23} 29 10 {1,2,4,8,16,32,23,46,92,29} 32 …

30
我的微波炉应该运行多长时间?
我饿了。让我们微波一下。给定1到4位之间的数字输入,输出微波炉应运行的秒数。 细节 技巧是弄清楚用户输入的是秒还是秒和分钟的组合。一个和十个位置应解释为秒,成百上千个位置应解释为分钟。例如,该值1234应解释为12分钟34秒,并且9876应为98分钟76秒。键入130和90都将导致90秒的烹饪时间。 以下是一些其他输入和输出: 1 = 1 11 = 11 111 = 71 1111 = 671 9 = 9 99 = 99 999 = 639 9999 = 6039 规则 这是代码高尔夫球,因此以字节为单位的最短程序获胜。不允许出现标准漏洞。给定从1到9999的任何整数输入时,获胜作品必须返回正确答案。
33 code-golf  number 

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 …

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.