编程拼图和代码高尔夫

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

12
字母的翅膀!
您的任务是打印以下确切文本: az za abyz zyba abcxyz zyxcba abcdwxyz zyxwdcba abcdevwxyz zyxwvedcba abcdefuvwxyz zyxwvufedcba abcdefgtuvwxyz zyxwvutgfedcba abcdefghstuvwxyz zyxwvutshgfedcba abcdefghirstuvwxyz zyxwvutsrihgfedcba abcdefghijqrstuvwxyz zyxwvutsrqjihgfedcba abcdefghijkpqrstuvwxyz zyxwvutsrqpkjihgfedcba abcdefghijklopqrstuvwxyz zyxwvutsrqpolkjihgfedcba abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba abcdefghijklopqrstuvwxyzyxwvutsrqpolkjihgfedcba abcdefghijkpqrstuvwxyzyxwvutsrqpkjihgfedcba abcdefghijqrstuvwxyzyxwvutsrqjihgfedcba abcdefghirstuvwxyzyxwvutsrihgfedcba abcdefghstuvwxyzyxwvutshgfedcba abcdefgtuvwxyzyxwvutgfedcba abcdefuvwxyzyxwvufedcba abcdevwxyzyxwvedcba abcdwxyzyxwdcba abcxyzyxcba abyzyba aza 允许以下内容: 在行尾保留尾随空格 大写而不是小写 尾随换行符 请记住,这是code-golf,所以字节数最少的代码将获胜。

2
结合土耳其动词
输入值 动词,一个与正则表达式匹配的字符串([a-pr-vyzıöüçğş]*[aeıioöuü][bcçdfgğhj-nprsştvyz]+|([a-pr-vyzıöüçğş]*[aeıioöuü]){2})(mak|mek) 复数,真值或假值 person,值为1、2或3的整数 时态,值为1、2或3的整数 输出量 土族动词的共轭形式动词,在人ST / ND / RD人,复数如果复数是TRUE和单数,如果它不是在 如果时态为1,则表示现在;否则为1。 如果时态为2,则表示现在。 如果时态为3,则表示将来。 规则 土耳其语动词包含三个要素,依次排列: 所述干,通过去除形成mak或mek从不定式的端部; 时态的符号,即: 对于简单的礼物: -r如果词干以元音结尾; -ir根据元音和声规则(请参见下文),如果词干包含多个音节(即元音),或者来自以下不规则动词之一:almak,bilmek,bulmak,durmak,gelmek,görmek,kalmak,olmak, ölmek,sanmak,vermek,varmak,vurmak; -如果词干包含一个音节并且未在上面的不规则动词中列出,则按照元音和声规则。 对于连续的现在,-iyor,其中i根据元音和声规则变化。以元音结尾的词干在添加此后缀之前先将其删除,然后该后缀与单词中倒数第二个元音(由正则表达式保证存在)协调。 为将来: -如果词根以辅音结尾,则根据元音和声规则进行-ecek; -如果词根以元音结尾,则按照元音和声规则进行-yecek。 在所有情况下,根据元音和声规则,使用个人后缀来指示操作的执行者: |Singular|Plural| |---|--------|------| |1st| -im | -iz| |2nd| -sin |-siniz| |3rd| (none) | -ler| 将来时的最后一个k在-im和-iz之前变为ğ,因此例如会屈服。(almak, TRUE, 1, 3)alacağız 元音和声规则 土耳其语元音按其在口中的位置分为两组:后面(a ı o u)和前面(e …

30
打印希腊字母!
显然,您必须打印希腊字母。但是我认为我会使其更加有趣,所以有一个转折:当您的程序运行时带有参数(任何东西)时,它应该以小写形式输出希腊字母。 信息 希腊字母(大写): ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ 希腊字母(小写): αβγδεζηθικλμνξοπρστυφχψω 规则/要求 每个提交必须是完整程序。 不允许使用内置字体来打印希腊字母 适用标准漏洞 您必须完全打印显示的内容。 计分 程序根据字节计分。如果您使用的字符集与UTF-8不同,请指定。尝试从所有人中获取最少的字节,这是代码高尔夫! 测试用例 ./program ==> ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ ./program 1 ==> αβγδεζηθικλμνξοπρστυφχψω ./program 'lower' ==> αβγδεζηθικλμνξοπρστυφχψω ./program 123897883421 ==> αβγδεζηθικλμνξοπρστυφχψω ./program "" ==> αβγδεζηθικλμνξοπρστυφχψω greek(); ==> ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ greek("blah"); ==> αβγδεζηθικλμνξοπρστυφχψω greek(123); ==> αβγδεζηθικλμνξοπρστυφχψω 意见书 为了确保您的答案显示出来,请使用以下Markdown模板以标题开头。 # Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,可以将旧分数保留在标题中,方法是将它们打掉。例如: …

2
重建丢失的RGB通道
看一下这些自然场景的照片,并从其中取出RGB通道之一: 来源(红色):https : //en.wikipedia.org/wiki/File : Altja_j%C3%B5gi_Lahemaal.jpg 来源(绿色):https : //commons.wikimedia.org/wiki/File : 2007_mather-lake_hg.jpg 来源(蓝色):https : //commons.wikimedia.org/wiki/File : Fox_01.jpg 即使没有其中一个通道,您也可以确定某些事物应该是什么颜色,或者如果丢失通道的重建准确无误,至少可以有个好主意。 例如,这是第一张添加了红色通道的图片,它只是随机噪声: 该图像显然不是红色通道的准确重建。这是因为自然照片通常不使用整个RGB光谱,而仅使用“看起来自然的颜色”的子集。同样,红色阴影将遵循与其他阴影相关的特定梯度。 您的任务是构建一个程序,该程序将拍摄已删除一个通道的照片,并尝试通过重建它认为丢失的通道来尽可能接近原始图像。 通过计算该通道的值在原始图像中的实际值的±15(含)以内的像素百分比,您的程序将在缺失通道与原始图像的通道匹配度上得分范围从0到255,如在标准的8位彩色通道中)。 可以在此处找到对您的程序进行评分的测试用例(9.04 MB压缩文件,6张图像)。目前,它仅包含上面的三个示例图像及其原始图像,但是一旦完成,我将在后面再添加一些图像来制作完整的套件。 每张图像都按比例缩小并裁剪为1024 x 768,因此它们在您的乐谱中的权重相同。可以预测给定公差内最多像素的程序将获胜。

1
展开音乐跳跃
在连续记号和初音岛是两个非常常用的音乐术语。它们分别表示“ 从符号 ”(𝄋)和“ 从头开始 ”。 另外还有的想法尾声(𝄌),这是一首乐曲的最后一刻。这是作品“主要部分”之后的内容。 例如,DS al coda(Dal Segno al coda)的意思是“去找segno,玩直到被告知要去到coda,然后跳到那里。” 描述 在此挑战中,您的工作是接受由可能包含或不包含Dal Segno和Da Capo的任意数量的音符组成的输入,并输出带有上述“未展开”的相同乐曲,以便使重复音节逐字扩展。 输入值 您的代码应将一系列音符或信号(此处定义为除音符)作为输入,并在一个字符串中用空格分隔。 调为任意的a,b,c,d,e,f,或g,具有可选的#或b附加的(对于这一挑战的目的,没有节奏)。 一个C(大写C)表示结尾标记。总会有零个或两个尾声标记;第一个尾声标记表示从何处跳转,第二个尾声表示从何处跳转。 一个S(大写S)表示预兆报标记。签名标记始终为零或一个。 一个F(大写F)表示精细标记。这“覆盖”了作品的结尾,更多内容在下面。始终会有零个或一个精细的标记。 以下任何精确的文本字符串均表示: D.S. al fine:去SIGNO和玩到一块的任何一个结束或精细标记(如果存在的话)。 D.S. al coda:去SIGNO,玩,直到结尾,然后跳转到第二个结尾标记和发挥,直至曲终。 D.C. al fine:从头开始,播放到结尾或精细标记。 D.C. al coda:去年初,玩,直到结尾,然后跳转到第二个结尾标记和发挥,直至曲终。 每段中每个字符串始终始终为零,最多为一个。一块中永远不会有多个al fine或多个al coda。 输出量 您的代码应以类似的字符串格式输出:注释列表,以空格分隔。 您可能总是假设输出最终将是一个或多个字符长。 测试用例 进:a# bb c b a 出:a# bb c …
11 code-golf  music 

4
双缝奎因
目的: 对两个程序进行编码,每个程序输出两个源代码,每个源代码都按字符隔行扫描,例如拉链,双缝Quine。双缝Quine的输出从第一个程序的源代码中的第一个字符开始。如果其中一个程序的源代码的长度短于另一个程序的源代码,则输出的其余部分必须用其余较长的源代码填充。 规则: 您可以对两种程序使用任何编程语言,而不必对两种程序使用相同的编程语言。 您的程序不应从文件,文件名,网络,其他程序或其他任何内容中获取任何输入。 强制标准: 有一个陷阱,在输出中的某个位置QUINE必须存在不间断的大写字母单词。 您需要说明正在使用的两种编程语言。如果两种语言都使用相同的编程语言,则只需声明一种编程语言。 这两个程序都应该能够独立于另一个程序执行或解释。 例: 拥有程序一的示例源代码: "QIE" 拥有程序2的示例源代码: "UN" 然后,两个程序的有效双缝Quine输出必须为: ""QUINE"" 这是代码高尔夫球,将两个源代码的长度加起来,并且显然将每个程序输出的长度加起来,最少的字节也很成功!
11 code-golf  quine 

5
拓扑总数
对于给定的DAG(有向无环图),其每个拓扑排序都是所有顶点的排列,其中,对于DAG 中的每个边(u,v),在排列中,u出现在v之前。 您的任务是计算给定DAG的拓扑种类总数。 规则 您可以使用任何格式来表示图,例如邻接矩阵,邻接列表或边列表,只要您不对编码进行有用的计算。如果有用,您也可以在输入中包含诸如顶点数或顶点列表之类的东西。 您可以假设输入中的图形始终是DAG(没有任何循环)。 理论上,您的程序应该可以进行任何输入。但是,如果它溢出您语言中的基本整数类型,它可能会失败。 顶点名称可以是任何类型的任何连续值。例如:以0或1开头的数字。(当然,仅当您不使用该数字存储代码时)。 这是代码高尔夫球。最短的代码获胜。 例 这是相同的输入,但格式不同。您的程序不必全部接受。顶点始终是从0开始的整数。 Adjacency list: [ [1 2 3 5] [2 4] [] [2] [] [3] ] Adjacency matrix: [ [0 1 1 1 0 1] [0 0 1 0 1 0] [0 0 0 0 0 0] [0 0 1 0 …

4
Pigpen密码加密
Pigpen密码加密 您的任务很简单:编写一个程序来接收文本作为输入并在Pigpen Cipher中输出文本的ASCII表示。 输入值 仅ASCII(无Unicode)字符。您必须至少能够处理16384个字符和256行。 输出量 将所有不是换行符的字符替换为换行符ABCDEFGHIJKLMNOPQRSTUVWXYZ或abcdefghijklmnopqrstuvwxyz用空格替换。 不区分大小写,将每个字母替换为其加密形式(请参阅下一节),在每行之后的三行中的每行后面插入一个空格。每个编码的字符都是3 * 3的ASCII艺术字块。用3 * 3的空格块替换空格。 所有字符都应该在同一三行上(将这三行称为一个猪行),除非有新行开始新的猪行。在猪皮线之间保留法线为空白。 密码 | | | | .| |.| |. --+ for J +-+ for K +-- for L --+ +-+ +-- .| |.| |. --+ for M +-+ for N +-- for O --+ +-+ +-- .| |.| …

3
编写Clem解释器
Clem是一种基于堆栈的最小编程语言,具有一流的功能。您的目标是为Clem语言编写一个解释器。它应正确执行参考实现中包含的所有示例,可从此处获得。 像往常一样,存在标准漏洞。 按字节数最小的条目获胜。 克莱姆语言 Clem是具有一流功能的基于堆栈的编程语言。学习Clem的最好方法是clem不带参数地运行解释器。它将以交互模式启动,使您可以使用可用的命令进行播放。要运行示例程序,请键入clem example.clmwhere example是程序的名称。这个简短的教程应该足以让您入门。 主要有两类功能。原子功能和复合功能。复合函数是由其他复合函数和原子函数组成的列表。请注意,复合函数不能包含自身。 原子功能 第一类原子函数是常数。甲恒定仅仅是一个整数值。例如-10。当解释器遇到常量时,它将其推入堆栈。clem现在运行。键入-10在提示符下。你应该看到 > -10 001: (-10) > 该值001描述了函数在堆栈中的位置,并且(-10) 是您刚刚输入的常数。现在+11,在提示符下输入。你应该看到 > +11 002: (-10) 001: (11) > 请注意,它(-10)已移动到堆栈中的第二个位置,(11)现在占据了第一个位置。这就是堆栈的本质!您会注意到这-也是减量命令。无论何时-或+在数字之前,它们表示该数字的符号,而不是相应的命令。所有其他原子函数都是命令。共有14个: @ Rotate the top three functions on the stack # Pop the function on top of the stack and push it twice $ Swap the …

5
命名扑克手-7张牌
挑战: 在这个问题中:命名您必须拿出五张牌的扑克手并识别它。这个问题很相似,有两个不同之处: 首先,输出将全部为小写。这样您就可以进行更多的高尔夫球运动,因为您不必担心flush和的大小写。straight high card one pair two pair three of a kind straight flush full house four of a kind straight flush royal flush 其次,随着德州扑克和7张牌梭哈的流行,我们在代码高尔夫这里应该能够得分7张扑克牌,对吗?当得分为7张牌时,请使用5张最好的牌,而忽略不需要的2张。 参考: 扑克手名单:http : //en.wikipedia.org/wiki/List_of_poker_hands 输入(直接从上一个线程中提取) 来自stdin或命令行参数的7 张卡片。卡片是表格上的两个字母的字符串RS,其中R是等级,S是西装。该队伍是2- 9(号卡), T(十个),J杰克(Jack),(Q皇后), K(王),A(ACE)。该套装是S,D,H,C为黑桃,方块,分别心和俱乐部。 卡示例 5H - five of hearts TS - ten of spades AD - ace …
11 code-golf  game 

8
快速过滤大文件
面临的挑战是快速过滤大型文件。 输入:每行具有三个以空格分隔的正整数。 输出:所有输入线A B,T满足以下任一标准。 存在的另一个输入线C,D,U其中D = A和0 <= T - U < 100。 存在的另一个输入线C,D,U其中B = C和0 <= U - T < 100。 要制作测试文件,请使用以下python脚本,该脚本也将用于测试。它将生成1.3G文件。您当然可以减少测试的次数。 import random nolines = 50000000 # 50 million for i in xrange(nolines): print random.randint(0,nolines-1), random.randint(0,nolines-1), random.randint(0,nolines-1) 规则。当我在计算机上使用上述脚本在输入文件上测试时,最快的代码胜出。截止日期为首次输入正确时间后的一周。 我的机器时间将在我的机器上运行。这是在AMD FX-8350八核处理器上安装的标准8GB RAM ubuntu。这也意味着我需要能够运行您的代码。 一些相关的计时信息 在每次测试之前更新了计时以运行以下命令。 sync && sudo bash …

18
创建死锁的最短代码
编写最短的代码以创建死锁。代码执行必须停止,所以这不起作用: public class DeadlockFail extends Thread{ //Java code public static void main(String[]a){ Thread t = new DeadlockFail(); t.start(); t.join(); } //this part is an infinite loop; continues running the loop. public void run(){while(true){}} } 它并不需要是肯定的代码进入僵局,就几乎可以肯定(如果你运行了无限的时间,它会死锁)。

6
有理数功能
创建一个采用自然数(从0开始,包括0)的函数,并返回一对正整数,分别是分子和分母。使用对角线遍历。必须跳过以前计算的数字。(您可以记住跳过的值集) 图解: 红色是跳过的值 值: f(0)= 1、1 f(1)= 2,1 f(2)= 1、2 f(3)= 1、3 f(4)= 3,1(注意跳过) f(5)= 4,1 f(6)= 3,2 f(7)= 2,3 f(8)= 1、4 f(9)= 1、5 f(10)= 5、1(请注意跳过) 您可以使用Rational数据结构及其操作(如果存在)。最短的代码获胜。

30
前n个斐波纳契数列元素
有一个众所周知的问题,在这里,要求在短时间内(至少字符)斐波那契序列发生器。 我想知道是否有人可以在非常短的空间内生成斐波那契数列的前N个元素。我正在尝试用python来做,但是我对任何语言的简短回答都感兴趣。函数F(N)生成序列的前N个元素,或者将它们作为函数的返回值返回或打印出来。 有趣的是,似乎代码高尔夫球的答案以开头1 1 2,而不是0 1 1 2。这是代码高尔夫球规范还是通用编程规范?(维基百科说斐波那契数列从零开始。)。 Python示例(前5个元素): def f(i,j,n): if n>0: print i; f(j,i+j,n-1) f(1,1,5)

7
实施Shamir的秘密共享重建
Shamir的秘密共享方案是将秘密分为几个重建秘密所需的保护秘密的简单方法。 您的任务是在prime定义的有限域上实施Shamir的秘密共享重建1928049029。如果您对这意味着什么有任何疑问,请在Wikipedia中询问或查看“有限域和有限域算术”(下面的更多资源)。 输入值 输入是使用stdin完成的。首先是一个整数k,然后是k行。这些行中的每一行都包含一对x y代表秘密的整数。换句话说f(x) = y,在用于构造机密的原始多项式中。 给出的秘密数量始终足以构造相应的秘密。 输出量 输出以输出重新构造的秘密。 例子 输入: 5 1 564797566 2 804114535 4 1354242660 6 1818201132 7 503769263 输出: 1234 输入: 7 1 819016192 2 1888749673 3 1737609270 4 365594983 5 1628804870 6 1671140873 7 492602992 输出: 456457856 资源资源 维基百科文章 纸 有限域来源:维基百科 有限域算术来源:维基百科 拉格朗日多项式资料来源:维基百科 有限域算术一章

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.