编程拼图和代码高尔夫

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

13
DVI连接器引脚
从更简单的角度来看,这应该是代码高尔夫挑战。但是我认为在这里进行一些微优化可能会很好。 DVI连接器有三种基本类型:DVI-A(模拟),DVI-D(数字)和DVI-I(集成)。此外,还有DVI-D和DVI-I连接器的单链接和双链接版本。这五个不同的连接器中的每一个都使用一组不同的引脚。 给定的一个A,D1,D2,I1,I2作为用于连接器的种类的识别符,打印连接器的销的对应的ASCII表示: A: # # # # # # # ===== # # # # # # # # # D1: # # # # # # ===== # # # # # # # # # # # # D2: # # # # # # # # …

14
新年回收
2015年的一个好的决议是生活更加可持续。我们将从回收开始。就是回收代码! 您的任务是将数字打印2015到STDOUT,带或不带尾随换行符(仅此而已)。但是,您必须通过回收 PPCG中的一些旧代码来做到这一点。这是这样的: 选择在2014-12-16 00:00:00Z(我在沙盒中发布此日期)之前在CodeGolf.SE上发布的所有答案。例外:您不能使用去年的“新年挑战”中的任何答案。 从该答案中选择一个代码块(不是内联代码段,它必须在其自己的段落中)。该块必须作为实际代码发布,例如,您不能使用碰巧使用等宽格式的测试用例或示例输出。 重新排列该代码块中的字符以形成您对此挑战的提交。您只能更改顺序,不能添加或删除任何字符。这包括换行符。 您必须能够证明原始源代码块在您的语言上在语法上是有效的。在最佳情况下,您可以通过显示其运行时没有编译时或运行时错误来做到这一点。因此,尽管原始代码可能是Java,但您可以将其用于空白答案(因为每个文件在空白中均有效),但可能无法将其用于Python答案(因为原始密码无效) )。 请注意,您的答案必须忽略所有输入和外部状态(包括实际当前日期)。它可以从标准输入,比如阅读,只要当它是空的,并产生相同的输出流的所有可能的内容,它不会崩溃。 生成的代码必须是完整程序(不是函数,也不是假定为REPL环境的代码段)。 这是代码高尔夫,所以最短的答案(以字节为单位)获胜。 排行榜 我相信这会以不同的语言显示出来。因此,以下Stack Snippet会按语言生成常规排行榜和获胜者概述。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 # Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: # Ruby, <s>104</s> <s>101</s> 96 bytes 显示代码段 function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){$.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:true,success:function(e){answers.push.apply(answers,e.items);if(e.has_more)getAnswers();else process()}})}function shouldHaveHeading(e){var t=false;var n=e.body_markdown.split("\n");try{t|=/^#/.test(e.body_markdown);t|=["-","="].indexOf(n[1][0])>-1;t&=LANGUAGE_REG.test(e.body_markdown)}catch(r){}return t}function shouldHaveScore(e){var t=false;try{t|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(n){}return t}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading);answers.sort(function(e,t){var n=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[Infinity])[0],r=+(t.body_markdown.split("\n")[0].match(SIZE_REG)||[Infinity])[0];return n-r});var e={};var t=1;answers.forEach(function(n){var r=n.body_markdown.split("\n")[0];var i=$("#answer-template").html();var s=r.match(NUMBER_REG)[0];var …

3
斜线绘图
编写一个程序,它在文本的矩形块组成X的和.的,像这样的粗糙A: ...... ..XX.. .X..X. .XXXX. .X..X. .X..X. 通过绘制斜线(视上下文而定是向前还是向后),在网格的X边框a .或边的任何地方(其余部分都填满空格),输出此网格的表示,逆时针旋转45度: /\/\ / /\ \ \/ / \ /\/ /\ \ \ / \/ \ \ \ \ \/ 只要X输入中的'的形状由斜杠保持,则尾随和前导空格(和换行符)的数量无关紧要。可以修剪的额外行或列.。 对于I / O,您可以使用stdin / stdout / files /命令行参数的任意组合。例如,您的脚本可能会使用X.模式的文件名,并使用斜杠模式重写该文件。否则您的脚本可能会X.逐行从stdin 接受模式(d完成后按),然后将结果输出到stdout。 输入可能会很大,但您可能会认为它总是格式正确。 除/ \输出字符和换行符外,任何输出均不应包含字符。 计分 以字节为单位的最短代码获胜。如果使用非ASCII字符,请使用https://mothereff.in/byte-counter作为字节计数器。 奖励:如果您可以在程序中更改(替换而不是删除)一个字符,则减去50个字节,以便输出顺时针旋转45度的斜杠网格,例如: /\/\ / /\ \ / \ \/ …

21
不同的前进方向
给定整数列表,将以指定的顺序/深度产生正向差异。 对于整数列表: (10, 18, -12, 4, 8, -3, -5, 67, 9, 14) 各种订单/深度的远期差异为: 0 10, 18, -12, 4, 8, -3, -5, 67, 9, 14 1 8, -30, 16, 4, -11, -2, 72, -58, 5 2 -38, 46, -12, -15, 9, 74, -130, 63 3 84, -58, -3, 24, 65, -204, …

8
与可打印ASCII有关的多产的完美Pangram程序
更新:取消了时间限制。您必须能够描述输出-请参阅新规则。 一个全字母短句是使用字母表中的每个字母至少一次,如句子: 敏捷的棕色狐狸跳过了懒狗。 一个完美的全字母短句使用每个字母一次。 考虑使用95个可打印的ASCII字符(十六进制代码20至7E)作为字母编写完美的pangram程序: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 这样的程序必须完全包含95个字符,每个可打印的ASCII字符仅出现一次,但顺序不限。(因此有95!= 1.03×10 148个可能性。) 您的任务是编写此程序,以使打印到stdout的可打印ASCII字符数尽可能多(即,多产)。 您的分数是程序输出的可打印ASCII字符数(总数,而不是不同的数字:AABC分数4,而ABC分数3)。最高分获胜。 细节 输出可能包含任何字符(包括重复字符),但只有95个可打印ASCII字符的实例才计入您的分数。 您可以使用此JSFiddle来计算任何字符串中可打印ASCII字符的数量。 如果您的语言没有标准输出,请使用最合适的替代方法。 您的程序... 必须具有有限的运行时(时间限制已删除) 必须具有有限的输出 可能包含评论 必须编译并运行时没有(未捕获)错误 不得提示或要求输入 必须是时间不变的和确定性的 不得使用外部库 一定不需要网络连接 不得使用外部文件 (您可以使用程序文件本身,只要更改文件名不会改变程序的行为) 如果这项任务不可能完成,那是某种糟糕的语言。 如果输出太大而不能容纳在帖子中,则必须给出准确的输出或准确地描述它。您实际上不必运行程序。只要将在有限的时间量在计算机上运行的内存无界量它是有效的。 例 这个简单的Python 2程序是可能的解决方案: print 9876543210#!"$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjklmoqsuvwxyz{|}~ 它输出9876543210包含10个可打印ASCII字符,因此得分为10。

15
压低唯一字符
非常简单:您的程序或函数应生成以下文本: Elizabeth obnoxiously quoted (just too rowdy for my peace): "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG," giving me a look. 印刷精美 您可以编写一个程序或函数,该程序或函数将输出作为字符串返回或将其打印到STDOUT(或最接近的替代品)。您可以选择在输出中包含单个尾随换行符。 计分 代码中的字节数乘以代码中的唯一字节数 最低分获胜。 例如,在这种情况下,脑力激荡或空格答案将具有巨大优势,因为乘数将非常低(分别为8和3)。但是,通常,用那些语言编写程序会产生更长的代码,这可能会抵消该优势。 标准的漏洞这不再是滑稽的禁止。

9
撒盐挑战
这是一个ASCII 撒盐饼干: _________________ | . . . | | . . | | . . . | | . . | | . . . | |_________________| 这是堆叠的两个饼干: _________________ | . . . | | . __________|______ | . | . . . | | .| . . | | …

7
如何在Python中别名成员函数?
在Python中,可以通过重复使用别名函数来保存字节。例如: r=range a=r(100) b=r(200) c=r(300) 但是,当函数是成员函数在一起时,我不知道如何以允许链接的方式对它们进行别名。例如: s='Hello' // Plain code s=s.replace('H','J').replace('e','i').replace('l','m').replace('o','y') // What I am trying to do q=replace s=s.q('H','J').q('e','i').q('l','m').q('o','y') 显然,我试图做的是无效的。这也不是: q=s.replace s=q('H','J') // Replaces the 'H' in 'Hello' s=q('e','i') // Replaces the 'e' in 'Hello'... and the J is gone. s=q('l','m') s=q('o','y') 是否有另一种别名成员函数和链​​接函数来保存字符的方法?
23 code-golf  tips  python 

11
休息一下,做一条蛇!
我们的经典蛇体内生长激素失衡。更糟糕的是,他的尾巴被冻结在原地!根据中指定的定向输入Figure 1,编写一个程序来确定他将在何处成长。 图1.方向输入。 程序规格 在上逐字符读取输入的字符STDIN。 读取字符后,将蛇输出到STDOUT。每次打印蛇时,请在两者之间添加一个空白行。 蛇<>v^由头组成。蛇的头部可能是你选择的任何一轮的字符,如o,0,O,或☺。 的任何组合wasd均对输入有效。 您的程序不应假定输入在一定长度内。 蛇会堆在自己的上面,被覆盖<>v^。请参阅有关蛇生长机理的示例。 尾随空格可以,但是您的蛇必须看起来正确。 计分 这是代码高尔夫球。您的分数就是程序中的字符数。最低分获胜! 示例蛇: 输入: ddddssaassdddddww 输出: >>>>v v v<< ☺ v ^ >>>>>^ 输入: dddsssaaawww 输出: ☺>>v ^ v ^ v ^<<< 输入: dddsssdddddasddddwww 输出: >>>v v ☺ v ^ >>>>v< ^ >>>>^ 输入: dddwwdddssssaaaaaaaaawww 输出: >>>v ☺ ^ …
23 code-golf 

5
升到英语翻译
您面临的挑战是编写一个程序,将leetspeak / lolspeak / txtspk(英语)翻译成正常的英语。您的程序应从标准输入和输出读取为标准输出,除非您的语言不支持这些。 您可以使用包含英语单词列表的文件,并用新行分隔。它应该被调用W,并将与您的程序位于同一目录中。(在GNU / Linux系统以及可能的其他系统上,您可以W链接到/usr/share/dict/words)列表不必全为小写,您可以使用它来确定单词是否应使用大写。 这是基于Nikos M.现在删除的问题,可以在此处找到。这不是重复的,因为此原始问题已关闭且未收到任何答案,因为没有获胜标准,并且用户不愿意输入。 计分 计分有点复杂! 你的分数是 (leet items + bonuses) * 10 / (code length) 最高分获胜。 您的程序不一定是完美的,也可能不是完美的,但是它越精确,它所获得的奖金就越多! 既然$可以同时表示s和S,则每个leet项目决定是否应使用大写字母(即句子开头的大写字母)可获得5分的奖励。 如果实现专有名词(始终带有大写字母的单词),则每个leet项目还将获得5分的额外奖励-这种方法的工作方式是,您可以浏览单词列表,并且如果单词中只有大写形式,则将输出大写。列表,如果两个版本都在那儿,那就猜吧。 如果一个字符具有两种含义(例如,1可以表示意思L或I),则每个leet项目仅获得那些构成真正英语单词的翻译,即可获得20分。为此,请使用单词表。如果一个leet物品的多个翻译成一个真实的英语单词,您可以任意选择其中一种有效的翻译,但仍然可以获得奖励。 升力清单 这些是您可以实现的重要项目。您不必全部实现它们,但是添加的越多,获得的积分就越多。 您无法通过将项目或角色翻译成自身来获得分数。该规则将覆盖我在列表中可能犯的任何错误。 做一个简单的tr或诱人s/.../.../g。真正的挑战是使用单词表确定多种含义中的哪种正确与否。 升项(每个项leet items在公式中加1) $-> s,S (-> c,C 5-> s,S @-> a,A 4-> a,A 3-> e,E 7-> t,T +-> t,T #-> …

8
用法语拼写数字
将数字转换为英文的数字时遇到了挑战,但这太简单了。给定数字0-100,您的任务是输出相应的法语数字。与英语相比,法语数字系统背后的逻辑更为复杂: 数字数 --------------- 0zéro(注意口音) 1个 2倍 3 trois 4夸脱 5 cinq 6 6 9月7日 8点 9块 10迪克斯 11次 12 douze 13 treize 14夸脱 15颗 16抢占 9月17日(字面上是十点七) 18 dix-huit 19 dix-neuf 20根 21 Vent等(没有连字符) 22文特 ... 30个 ... 40夸脱 ... 50 cinquante ... 60 Soixante ... 70 soixante-dix(字面意思是六十) 71 Soixante et …

5
绘制建筑物的阴影
输入: 1 X X X X XX XXXXXX X X X X XX XXXXXX X X X XXX X XX XXXXXX X X X XXX X XX XXXXXX X X X 输出: X. X.. X... X.... XX. XXXXXX. X.X.X. X..... XX.. XXXXXX.. X.X.X.. XXX. X......XX... XXXXXX... X.X.X... XXX.. X......XX....XXXXXX.... X.X.X.... …

24
字符串中的字符不断旋转
(灵感来自PhiNotPi的分形线挑战的初稿。) 您会得到一个width W > 1,height H > 1和一个由2(W+H-2)可打印ASCII字符组成的字符串。任务是从左上角开始按顺时针方向打印此字符串,该字符串缠绕在给定宽度和高度的矩形周围。矩形的内部充满空格。测试用例有望使这一点很清楚。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行自变量或函数自变量获取输入,然后将结果打印到STDOUT(或最接近的替代方案)或将其作为字符串返回。 不得有前导或尾随空格(除了输入字符串中可能存在的空格之外)。您可以选择输出一个尾随换行符。 这是代码高尔夫球,因此最短的提交(以字节为单位)获胜。 测试用例 每个测试用例"String" W H后面都有预期的输出。 "Hello, World! " 5 4 Hello , ! dlroW "+--+|||+--+|||" 4 5 +--+ | | | | | | +--+ ">v<^" 2 2 >v ^< "rock beats scissors beats paper beats " 11 10 rock …

4
在ROT-47中实施ROT-47…
挑战:以既可作为自身又可作为其ROT-47版本使用的代码实现ROT-47。 得分: 您的分数是按照程序两个版本中已使用的合格ROT-47字节的百分比除以两个版本的总字节(所有字符)的百分比得出的。 甲使用的,ROT-47合格字节是将由ROT-47的密码是不被转换任何字符一个注释的一部分或由编译器/解释器忽略。例如,brainfuck程序中任何不+-<>[],.被认为不是已使用字节的字符,而C程序中包括其后//或内部或内部的任何字符/* */都不会被视为已使用字节。APL中的所有特殊符号均不被视为已使用,空白程序中的所有字符均不被使用(对不起)。 程序将以最多的票数打破联系。如果仍然平局,则以最短的程序为准。 评分示例: C:62/64 = 96.875% 注意该程序中有一个空格。显然,该程序也不是有效条目,因为它甚至没有编译,但我想展示评分的工作原理。 main(){printf("Hello World!");}

10
异常值电阻
介绍 在构建电子项目时,原理图可能需要一个不正常值的电阻(例如510欧姆)。您检查零件箱,发现没有510欧姆电阻。但是,您确实有许多高于或低于此值的通用值。通过并联和串联组合电阻,您应该能够很好地近似510欧姆电阻。 任务 您必须编写一个函数或程序,该函数或程序接受电阻器值列表(库存的电阻器)和目标值(您要近似的目标值)。该程序必须考虑: 个别电阻 串联两个电阻 两个并联电阻 该程序应从库存清单中计算出1个和2个电阻的所有可能组合(包括相同电阻值的两个副本),计算其串联电阻和并联电阻,然后根据它们对目标值的近似程度对配置进行排序。 输出格式应为每行一种配置,并+表示串联和|并联,并在净电阻前留一些空格或=号。 公式 一个电阻的电阻为 R1 串联的两个电阻的净电阻为 R1 + R2 并联的两个电阻的净电阻为 1 / (1/R1 + 1/R2) 近似电阻值与目标值之间的距离可以计算为伪对数距离,而不是线性距离: dist = abs(Rapprox / Rtarget - 1)。例如,200比350更接近350。 更好的距离度量是对数距离 dist = abs(log(Rapprox/Rtarget)),但由于在原始问题中未指定,因此您可以自由使用任何一种度量。 计分 得分是按照通常的高尔夫规则以代码字符来衡量的。最低分获胜。 例 我们有以下电阻器库存,[100, 150, 220, 330, 470, 680, 1000, 1500, 2200, 3300, 4700]并希望目标510欧姆。程序应输出大约143个配置,如下所示(您可以更改格式,但请确保其含义易于确定): 680 | …

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.