编程拼图和代码高尔夫

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

12
绘制轮廓
给定高程的矩形矩阵,绘制其轮廓。 任务 如果,则两个元素x和y处于同一轮廓线级别floor(x/10) == floor(y/10)。例如,52和58处于相同的轮廓级别,但是58和64不在同一轮廓级别。 绘制轮廓的行为定义如下:对于每个元素e,将其替换为如下选择的两个字符的字符串: 第一个字符是" "下面的元素是否与下面的元素处于e相同的轮廓线级别,e或者下面没有任何元素e,"_"否则 第二个字符是," "如果右边的元素与该元素e处于相同的轮廓线级别,e或者右边没有元素e,"|"否则 将行中的元素连接在一起,然后用换行符将这些行连接在一起。 例 假设输入为[[5,20],[3,6]],可视为 5 20 3 6 我们先来看一下5。由于3处于与相同的轮廓水平5,因此第一个字符为" "。由于20与的轮廓级别不同5,因此第二个字符是"|"。 现在我们来看20。由于6轮廓线级别与相同20,因此第一个字符为"_"。由于的右边没有元素20,因此第二个字符是" "。 现在我们来看3。由于下面没有元素3,因此第一个字符为" "。由于6与处于相同的轮廓水平3,第二个字符是" "。 现在我们来看6。由于下面没有元素6,因此第一个字符为" "。由于的右边没有元素6,因此第二个字符是" "。 基于这些两个字符的字符串,我们进行替换以获得[[" |","_ "],[" "," "]]。将这些结合在一起,我们得到的输出 |_ 规则 输入矩阵将始终为矩形,并由正整数组成。 尾随空格或换行符可以为任意数量(包括0),并且不必以任何方式保持一致。 只要产生相同的结果,就不必遵循相同的算法。 您的程序或函数可能会输出以换行符分隔的字符串,字符串列表或等效字符串。 这是代码高尔夫球,因此以字节为单位的最短代码获胜。 测试用例 input output [[1,5,8,9],[3,11,13,8],[7,14,10,9],[4,8,7,6]] _ _ | | |_ _| [[0,10,20,30,40,50,60,70,80,90],[0,0,10,10,20,20,30,30,40,40],[0,0,0,10,10,10,20,20,20,30],[0,0,0,0,10,10,10,10,20,20],[0,0,0,0,0,10,10,10,10,10],[0,0,0,0,0,0,10,10,10,10],[0,0,0,0,0,0,0,10,10,10],[0,0,0,0,0,0,0,0,10,10],[0,0,0,0,0,0,0,0,0,10],[0,0,0,0,0,0,0,0,0,0]] …

8
验证拓扑
挑战 给定T有限集的子集S={1,2,3,...,n},确定是否T为拓扑。 说明 某个集合的幂 P(S)集S是的所有子集的集合S。一些例子: S = {}, P(S) = {{}} S = {1}, P(S) = {{}, {1}} S = {1,2}, P(S) = {{}, {1}, {2}, {1,2}} S = {1,2,3}, P(S) = {{}, {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3}} 甲拓扑 T上的集S的一个子集P(S)与以下属性: {}在T和S在T 如果A和B在,T那么他们的交集A ∩ B 如果A和B在,T那么他们的联合也是A ∪ B* *这个定义不是很正确,但是对于有限集却是正确的,对于这个挑战的目的就足够了。实际的公理也将允许无限的并集,但这与有限的情况无关。 …

26
制作锯齿形
您的任务是接受一个整数输入,并使用斜杠和反斜杠打印锯齿形图案。 整数输入确定每个曲折和曲折的长度,以及曲折和曲折的数量 模式始终从右到左开始 测试用例 4-> / / / / \ \ \ \ / / / / \ \ \ \ 2-> / / \ \ 0-> 1-> / 8-> / / / / / / / / \ \ \ \ \ \ \ \ / / / / …

30
* this *和* that *上的此代码错误,是否真的写在其中?
受我启发的语言不是您要寻找的语言! 挑战 选择两种不同的编程语言,然后编写一个程序,将以下行打印到stdout(或等效文件): This program errors out in <the current language> :P 然后在两种语言中都产生不同类型的错误。 规则 一些规则来自最初的挑战。 在输出中,语言名称应严格遵循: TIO上列出的名称,可以选择不包括版本号和/或实现名称(例如,如果您使用JavaScript (Node.js)其中一种语言,则可以使用JavaScript您的语言名称,但不能使用JS或Javascript。) 如果您选择的语言在TIO上不可用,则在官方网站(或GitHub存储库)上提供全名。 这两个程序都不应该接受用户的任何输入。 您可以使用两种语言的注释。 相同语言的两种不同版本计为不同语言。 如果这样做,程序应输出主要版本号,并且如果在两个不同的次要版本上运行,则还应报告次要版本。 您不应该使用预构建的版本函数(这包括在运行时已经评估过的变量)。 只要此标记不包含代码片段(例如,在C 语言中),根据该元共识,两种使用相同语言的不同命令行标记也会计为不同的语言-Dblahblah...。 如果这样做,程序还应该输出使用的标志。 除非两个错误都由相同的语义生成(例如“除以零”,“分段错误”或“索引超出范围”),否则将认为这两个错误是不同的。 如果语言的运行时在发生错误后没有退出,而是以某种方式向用户报告该错误,则这是有效的错误。 如果一种语言不能区分错误消息,但是具有导致错误的已知原因列表,则必须指定原因,而不是错误消息。 一个示例是><>,它只有一个错误消息something smells fishy...,但是esolangs Wiki页面上有错误原因列表。 除非通过调用eval()或类似方法生成,否则不允许语法错误。 允许通过throw(JS),raise(Python),die(Perl)或类似方式手动投掷某些东西,但是所有这些都被视为一种错误。 也允许在2D或golflangs中通过无效命令进行错误(并将其视为一种错误)。 例子 Python和Ruby Python:This program errors out in Python :P到stdout,然后是未定义的标识符 Ruby:This program errors out …

30
实施简单的秒表
挑战 您的任务是编写一个程序,该程序每秒(包括立即在您的程序启动时)每秒打印一次从您的程序启动起经过的时间。 规则 时间必须以hh:mm:ss格式打印。(单位值的前导零) 时间戳记必须用CR,LF或CRLF分隔。(无前导空格) 新的时间必须每秒出现一次。(stdout不能缓冲一秒钟) 如果程序在23:59:59之后运行,其行为是不确定的。 sleep(1)即使打印,计算,循环等的开销累积到一秒钟,您也可以使用,即使可以跳过特定的一秒钟。 输出示例: 00:00:00 00:00:01 00:00:02 00:00:04 00:00:05 ⋮ 请注意,00:00:03这里由于处理开销而丢失了。实际跳过的值(如果有)当然取决于实现和/或系统。 C中的参考实现:(仅适用于POSIX兼容系统) #include <unistd.h> // sleep() #include <tgmath.h> #include <assert.h> #include <stdlib.h> #include <stdio.h> #include <time.h> #ifndef __STDC_IEC_559__ #error "unsupported double" #endif static_assert(sizeof(double) == 8, "double must have double precision"); #define MAX_PRECISE_DOUBLE ((double)(1ULL << 52)) …
25 code-golf  date 

28
头晕的整数枚举
今天的挑战是输出一个枚举所有整数的给定序列项。该序列如下:如果我们有一个0索引函数生成该序列,f(n)并且ceil(x)是上限函数,则f(0) = 0; abs(f(n)) = ceil(n/2); sign(f(n))当n和ceil(n/2)都为偶数或均为奇数时为正。 为了帮助理解此顺序,前几个术语如下: 0 1 -1 -2 2 3 -3 -4 4 5 -5 -6 6 7 -7... 您的任务是编写一个程序,该程序需要一个整数n并输出n序列的第n个项。输入只能是0或1索引。 测试用例(0索引): 0 => 0 1 => 1 2 => -1 3 => -2 4 => 2 5 => 3 这是代码高尔夫球,最少字节获胜!

11
纸牌屋(第1版)
版本2 在这里。 简单的挑战:给定一个整数,用给定数目的故事画一张纸牌屋。如果数字为负,则将房子上下颠倒。例子: Input: 2 Output: /\ -- /\/\ Input: 5 Output: /\ -- /\/\ ---- /\/\/\ ------ /\/\/\/\ -------- /\/\/\/\/\ Input: 0 Output: <empty, whitespace or newline> Input: -3 Output: \/\/\/ ---- \/\/ -- \/ 输入可以是数字或字符串。输出必须与显示的完全一样,并允许前导和/或尾随空格和换行符。 这是代码高尔夫球,因此每种语言中最短的程序/功能可能会获胜!

4
隔行旋转
挑战 给定一个字符正方形矩阵(可单字节打印的ASCII字符),请沿相反方向旋转矩阵的每个“环”。 让我们举个例子: 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P 然后,将最外面的环顺时针旋转90度,如下所示: 1 2 3 4 5 L G B 6 1 6 A M 2 B F => N 3 G K …
25 code-golf  matrix 

24
将字符串减少为字母的一小段
给定一个仅包含小写和大写字母字符和空格([a-zA-Z ])的非空字符串,请将其缩减为从第一个字符开始的字母代码段。 要减少字符串,请从第一个字母字符开始,然后删除其后不是字母下一个字母的每个字符。继续执行此操作,直到到达字符串末尾。 例如codegolf: 以开始c,请删除,o因为它不是字母表的下一个字母。 保持d,因为它是字母表中的一个字母,并保持e,因为它是一个字母了。 删除g,o和l,然后保留f。 您的最后一个片段将是 cdef 规则 应该保持大写,这样CodEgolF会导致CdEF 空格不是字母,因此即使它是字符串的开头,也应始终将其删除 由于减少的性质,输入的第一个字母字符将始终是输出的第一个字符。 zZ是字母表的最后一个字母。其后没有字母,字母不会循环。 测试用例 codegolf -> cdef CodEgolf -> CdEf codeolfg -> cdefg ProgrammingPuzzles -> P Stack Exchange -> St The quick red fox jumped over the lazy brown dog -> Tuvw Zebra -> Z Abcdegfhijkl -> Abcdef 计分 …

10
加倍一些钻石
问题 给定一个正整数n,其中n < 100 输出菱形图案,如下所示: 输入项 n=1 /\/\ \/\/ 输入n=2: /\ /\ //\\/\/\//\\ \\//\/\/\\// \/ \/ 输入n=3: /\ /\ //\\ /\ /\ //\\ ///\\\//\\/\/\//\\///\\\ \\\///\\//\/\/\\//\\\/// \\// \/ \/ \\// \/ \/ 输入n=4: /\ /\ //\\ /\ /\ //\\ ///\\\ //\\ /\ /\ //\\ ///\\\ ////\\\\///\\\//\\/\/\//\\///\\\////\\\\ \\\\////\\\///\\//\/\/\\//\\\///\\\\//// \\\/// \\// \/ \/ …

6
序列太元
我们从一个空白的1索引序列开始: _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,... 在第n 个步骤中,我们填写每次(n)的与大于1的整数起始于第一剩余空白,其中a(n)是第n坯料个序列中的条目。 第一步之后: 2,_,3,_,4,_,5,_,6,_,7,_,8,_,9,_,10,_,11,_,12,_,13,_,... 请注意,a(1)必须为2,因为大于1的第一个整数为2。 在第二步中,我们填写每个a(2)空白。显然,a(2)必须为2。 2,2,3,_,4,3,5,_,6,4,7,_,8,5,9,_,10,6,11,_,12,7,13,_,... 在第三步中,我们填写每个a(3)空白。从序列中,a(3)= 3。 2,2,3,2,4,3,5,_,6,4,7,_,8,5,9,3,10,6,11,_,12,7,13,_,... 在第四步中,我们填写每个a(4)空白。从序列中,a(4)= 2。 2,2,3,2,4,3,5,2,6,4,7,_,8,5,9,3,10,6,11,3,12,7,13,_,... 最终: 2,2,3,2,4,3,5,2,6,4,7,2,8,5,9,3,10,6,11,3,12,7,13,2,... 任务 给定n,返回序列的第 n 个元素。 该序列的前10,000,000个术语可以在此处找到。 这是代码高尔夫球。以字节为单位的最短答案将获胜。有标准漏洞。

30
它是Lynch-Bell号码吗?
您将得到一个正整数(永远不会包含0)作为输入。您的任务是检查它是否是Lynch-Bell号码。 如果数字的所有数字都是唯一的并且该数字可被其每个数字整除,则该数字为Lynch-Bell数字。 实际上,实际上只有548个Lynch-Bell数字,因此可以进行硬编码,但几乎可以肯定会更长。 126是Lynch-Bell号码,因为其所有数字都是唯一的,并且126可被1、2和6整除。 您可以输出任何真实值和虚假值。 例子: 7 -> truthy 126 -> truthy 54 -> falsy 55 -> falsy 3915 -> truthy 这是OEIS A115569。

8
为我的孩子搭建楼梯
前几天,我儿子让我用乐高积木为他建造一个楼梯。我想到了这样的事情: 然后我的孩子问我一个程序,该程序使用最少的字节数在计算机屏幕上生成了类似的阶梯。我不太擅长于代码高尔夫,所以我需要您的帮助。我需要一个程序: 接收带有楼梯所需的级别数的正整数。 输出带有您在图像中看到的图案的楼梯图。 输出将为文本格式,但可以将积木区分开。例如,您可以将'█'字符用作半个字块,并以所需的任何颜色对其进行绘制,或者仅选择您选择的任何字符。 限制条件: 块需要具有三种不同的颜色,并且将使用尽可能长的颜色(如果输入为1或2,则没有足够的块来使用所有三种颜色)。如果需要,可以使用'░▒░'字符,例如,也可以选择三个不同的字符。 同一行中不能有两个相同颜色或图案的块并排放置。 只要画上楼梯,我儿子就不会真正在意尾随空间或换行。 示例(对字符的错误选择表示抱歉): Input: 1 Output: ██ Input: 2 Output: ██ ▓▓ Input: 3 Output: ██ ▓▓ ██░░ Input: 5 Output: ██ ██ ██░░ ██░░ ██░░▓▓

30
三角依赖
甲三角号是一个数字,是的总和n自然数从1到n。例如1 + 2 + 3 + 4 = 10,10三角数也是如此。 给定正整数(0 < n <= 10000)作为输入(可以作为整数或字符串),返回可以添加到输入中以创建另一个三角数的最小可能三角数。 例如,给定input 26,将10结果相加36,这也是一个三角数。没有比10可以添加来26创建另一个三角数更小的三角数,因此10在这种情况下正确的结果是。 0 是一个三角数,因此,如果输入本身是一个三角数,则输出应为 0 测试用例 案例以以下格式给出 input -> output (resulting triangular number) 0 -> 0 (0) 4 -> 6 (10) 5 -> 1 (6) 7 -> 3 (10) 8 -> 28 (36) 10 -> 0 …

26
我是卡伦号码吗?
库伦数是使用以下公式生成的序列中包含的任何数字: C(n)=(n * 2 ^ n)+1。 你的任务: 编写一个程序或函数,该程序或函数接收输入,并根据输入是否为库伦编号来输出真/假值。 输入: 0到10 ^ 9(含)之间的非负整数。 输出: 真/假值,指示输入是否为库伦编号。 测试用例: Input: Output: 1 ---> truthy 3 ---> truthy 5 ---> falsy 9 ---> truthy 12 ---> falsy 25 ---> truthy 得分: 这是代码高尔夫球,因此以字节为单位的最低分数获胜。

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.