编程拼图和代码高尔夫

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

13
模拟Intel 8086 CPU
注意:有几个答案。也可以考虑更新较新的答案。 来自happy5214的常见Lisp C从luser droog NeatMonster的Java crempp中的Javascript 来自Mike C的C Darius Goad的C ++ luser droog的后记 JoeFish的C ++ 完全主观的Javascript 来自RichTX的C Dave C的C ++ JB的Haskell 来自ja的Python 该8086是英特尔的第一款x86微处理器。您的任务是为其编写一个仿真器。由于这是相对高级的,因此我想限制一下: 仅需要实现以下操作码: mov,push,pop,xchg 加,adc,sub,sbb,cmp和或xor 十二月 通话,回复,跳转 jb,jz,jbe,js,jnb,jnz,jnbe,jns stc,clc 暂停 结果,您只需要计算进位,零和符号标志 不要实施细分。假设cs = ds = ss = 0。 无前缀 没有任何中断或端口IO 没有字符串功能 没有两字节的操作码(0F ..) 无浮点运算 (显然)没有sse,mmx等32位内容... 1979年尚未发明的任何东西 您不必计算周期或执行任何计时 以ip = …

16
我的滑动方式合法吗?
大多数Android智能手机都允许用户使用滑动模式打开手机: 某些模式是合法的,而其他则是不可能的。给定输入滑动模式,请返回真或假,以指示给定的输入模式是否合法。 输入项 网格标记为逐行1到9: 1 2 3 4 5 6 7 8 9 输入是一个从头到尾访问的节点组成的数字。例如,上方的滑动模式为12357。 输入可以是十进制数字,字符串或数字列表。它不会包含0,因为没有节点0。 修订:由于许多语言都从0开始索引,因此允许索引0-8。如果您使用0-8,则必须在答案的开头进行说明,并相应地调整测试用例。 规则 每个节点一开始都没有访问,只能访问一次。任何多次访问节点的模式都是错误的。 真实模式必须至少包含一次滑动,因此至少2个节点。 不可能直接跳过另一个未访问的节点。例如,13是虚假的,因为未访问2且直接在线。 只能跳过访问的节点。42631就是一个例子。 否则,线可能会交叉。例如,1524是真实的。 假设节点的宽度微不足道,并且忽略了实际问题(手指的厚度等)。因此,即使在现实中可能很难实现,但16是真实的。 测试用例 1 -> false 12 -> true 13 -> false 16 -> true 31 -> false 33 -> false 137 -> false 582 -> true 519 -> …

30
你能数多少?
挑战: 您的任务是编写尽可能多的程序/函数/代码片段,其中每个输出/打印/返回一个整数。第一个程序必须输出integer 1,第二个程序2以此类推。 您不能在程序之间重复使用任何字符。因此,如果第一个程序是:x==x,则您可能不能再使用这些字符x,而不能=在其他任何程序中使用这些字符。注意:允许在一个程序中多次使用同一字符。 得分: 获胜者将是得分最高的作品。如果出现平局,则获胜者将是使用总数最少的字节的提交。 规则: 所有整数只能使用一种语言 片段是允许的! 为了公平起见,所有字符必须使用您选择的语言使用单个字节编码。 输出必须为十进制。您可能无法以科学计数法或其他替代格式输出它。只要小数点后面显示的所有数字均为,就可以输出浮点数0。因此,4.000被接受。只要未在输出中显示,就可以接受由于FPA导致的不正确之处。 ans =,开头和结尾的空格以及换行符等。 您可以忽略STDERR,只要将正确的输出返回到STDOUT 您可以选择将整数输出到STDERR,但前提是STDOUT为空。 禁止使用与符号无关的语言(例如Lenguage) 字母区分大小写a != A。 程序必须是独立的 空格不能重复使用 您必须在输出中使用ASCII数字 鼓励解释!

4
超编程:N + N,N×N,N ^ N合而为一
编写一个程序,接受N到1到9之间的一个数字。2如果N是1,4如果N是2,6如果N是3,则程序应以其本机形式输出N + NEg输出。 当程序中的每个字符在适当位置被复制,那么它应该是一个程序,在N取(仍从1到9),并输出N×NEG输出1如果N 1,4如果N 2,9如果N 3,等等。 当程序中的每个字符都一式三份时,它应该是一个程序,1如果N为1,4则输入N(仍从1到9),并输出N ^ NEg输出,如果N为2,27如果N为3,387420489如果N为9,等等 不需要9以上的数字,因为10 ^ 10超出了许多语言通常的整数范围。 例 如果您的初始程序是 My_Program! Exit(); 那么它应该能够吸收N并输出N + N。 此外,该程序 MMyy__PPrrooggrraamm!! EExxiitt(());; 应该取N并输出N×N。 最后,程序 MMMyyy___PPPrrrooogggrrraaammm!!! EEExxxiiittt((()));;; 应该取N并输出N ^ N。 不需要四字符程序和其他程序。 规则 输入和输出应为普通格式的十进制数字。您可以使用不同的底数来回答,以炫耀您的代码,但是答案是非竞争性的。 Windows用户可以将其\r\n视为一个字符,因为类似的事情是\r\r\n\n没有意义的,甚至是行不通的。 以字节为单位的最短本机程序(N + N个)获胜。

30
穴居人决斗(或:我用锋利的棍子戳你)
穴居人生气。其他穴居人拿棍子,但棍子是给我的。穴居人打架! 描述 穴居人需要用锋利的杖刺伤其他穴居人。其他穴居人也试图用锋利的棍子刺伤。穴居人可以削尖棍棒,用棍棒戳戳或阻塞戳棒。 如果穴居人用锋利的棍子戳了戳其他穴居人,那么其他穴居人就逃走了,我就赢了。但是,如果其他穴居人在我戳戳时巧妙地阻止了它,那么除了我的棍子变钝并且我需要再次削尖之外,什么也不会发生。 穴居人懒。还有,穴居人笨。穴居人不知道该怎么做,所以穴居人需要花哨的技术计算机程序来告诉穴居人该做什么。 输入项 您程序的输入将是发生的事件的历史记录,在这里S代表削尖(即穴居人削尖了棍子),P代表stands戳和B代表阻塞。输入将是双方(您和对手)的历史记录,因此您和对手的动作将以逗号(,)分隔。 输入示例: SPB,SBB 这意味着玩家削尖他的棍子,然后戳,然后被阻挡,而对手削尖然后被阻挡,然后再次被阻挡。 您在第一回合将不会收到任何输入。 输出量 输出与输入非常相似(因为穴居人不是很聪明)。您的程序应输出S为锐化,P戳戳和B阻塞。仅会考虑输出的第一个字符,而其他任何输入将被视为B(块)命令。 S:锐化 锐化时,穴居人的棍子的锐度提高1,并且棍子额外获得1戳。每次戳戳都会使摇杆的清晰度降低1,如果摇杆的清晰度为0,则无法使用它。清晰度从0开始。如果清晰度达到5,则棍子就是剑!(见下文。) 如果在锐化过程中对手戳(并且锐度> 0),则对手获胜! P: 戳 戳戳时,穴居人的棍子的锐度降低1,并且您戳破对手!如果您的对手变得敏锐,您就赢了!如果对手在戳戳,则您的棍棒会击中对手的棍棒,并且两者都会变钝(以1个“清晰度单位”表示)。如果对手阻塞,则除了您的杆变钝之外,什么也不会发生。 如果您在棍子的锐度为5或更大时进行戳戳,则棍子会变成一把剑,并且您将永远获胜!(除非您的对手也有剑并且也选择了剑P;在这种情况下,他们俩都变得钝了,并且如果他们的锐度低于5,他们可能会变回木棍。) 您不能以0的锐度戳。如果这样做,则什么也不会发生。 B:块 当你阻挡时,对手戳什么也没发生。如果您的对手没有戳,则Block不会执行任何操作。 即使你也有一把剑,阻挡也不能防止剑! 规则和约束 其他规则是: 如果您想保存数据,您的程序可以在自己的文件夹中读取和写入文件(不窃取!),但是您无法访问其中的任何内容(穴居人在旷野没有互联网连接)。 关于文件的重要说明:如果要保存文件,请记住将其保存在目录中players/YourBotsName/somefile.foo!您程序的当前工作目录将不是您程序的目录! 穴居人很公平:一个程序不能具有特定于另一程序的代码,并且程序不能互相帮助。(您可能有多个程序,但是它们不能以任何方式相互交互。) 穴居人的法官不耐心。如果穴居人每个决定决定获胜者超过100转,法官会感到无聊,并且两个穴居人都会输掉。 如果您的程序违反规则或不符合规范,则该程序将被取消资格,将其从中删除playerlist.txt,并且所有决斗将从头开始。如果您的程序不合格,穴居人负责人(我!)将在您程序的帖子中发表评论并解释原因。如果您没有违反任何规则,您的程序将被添加到排行榜中。(如果您的程序不在排行榜上,则您的帖子中没有说明性的注释,并且您在下面的“上次更新”时间之前发布了程序,请告诉穴居人的领导者!也许他忘记了。) 在您的帖子中,请包括: 一个名字。 一个shell命令来运行你的程序(例如:java MyBot.java,ruby MyBot.rb,python3 MyBot.py等)。 注意:输入将作为命令行参数附加在此之后。 穴居人使用Ubuntu 14.04,因此请确保您的代码可以(自由)运行。 如果您的代码在所选语言的不同版本上的工作方式不同,则为版本号。 您的代码(显然)。 如有必要,如何编译代码。 控制器代码/测试,示例机器人 穴居人负责人用C ++编写了控制代码,并将其发布在Github仓库中。您可以在那里运行和测试程序。 下面的答案中还发布了一个非常非常简单的程序(1行!)。 得分和排行榜 评分很容易。无论哪个穴居人获胜都可以得到一点。在3个对决中,得分最高的穴居人将成为新的穴居人领导者! …

21
Python到底有多慢?(或者您的语言有多快?)
我有用Python / NumPy编写的这段代码 from __future__ import division import numpy as np import itertools n = 6 iters = 1000 firstzero = 0 bothzero = 0 """ The next line iterates over arrays of length n+1 which contain only -1s and 1s """ for S in itertools.product([-1, 1], repeat=n+1): """For i …
149 fastest-code 

30
实施真机
一真机(学分转到这家伙能想出它)是一个非常简单的程序,旨在展示一种语言的I / O和控制流。这是真机的作用: 从STDIN获取一个数字(0或1)。 如果该数字为0,则输出0并终止。 如果该数字为1,则永远打印1。 挑战 用您选择的语言编写如上所述的真机。真机必须是遵循以下规则的完整程序: 接受STDIN或可接受的替代方法的输入 如果您的语言不能接受来自STDIN的输入,则可能来自程序中的硬编码变量或适当的等效输入 必须输出到STDOUT或可接受的替代方案 如果您的语言无法输出字符0或1,则可以接受字节或一元I / O。 当输入为时1,它必须连续打印1s,并且仅在程序被终止或内存不足时停止 输出只能是0后跟一个或没有换行或空格,或者是infinite 1,每个1后跟一个或没有换行或空格。除了无法避免的语言解释器的恒定输出(例如问候语,ANSI颜色代码或缩进​​)以外,无法生成其他任何输出。您对换行符或空格的使用必须保持一致:例如,如果您选择在1换行符后输出,则所有换行符或空格后都1必须有换行符。 当且仅当您的语言可能无法在其输入上终止时0,代码才可以进入无限循环而没有任何输出的情况是可接受的。 由于这是一个目录,因此可以竞争之后创建的语言。请注意,必须有一个解释器,以便可以测试提交。允许(甚至鼓励)自己为以前未实现的语言编写此解释器。除此之外,必须遵守所有代码高尔夫球的标准规则。大多数语言的提交都将以适当的预先存在的编码(通常为UTF-8)以字节计分。 目录 这篇文章底部的Stack Snippet从答案a)生成目录,答案是每种语言的最短解决方案列表,b)则是总体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: ## Ruby, <s>104</s> <s>101</s> 96 bytes 如果要在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: ## Perl, 43 + 2 (-p flag) = 45 bytes 您还可以将语言名称设置为链接,然后该链接将显示在代码段中: ## [><>](http://esolangs.org/wiki/Fish), 121 …
148 code-golf 

30
1,2,嘶嘶声4,4,嗡嗡声
介绍 在我们最近为标准编程练习收集最短解决方案目录的努力中,这是PPCG有史以来第一个香草FizzBu​​zz挑战。如果您希望看到其他目录方面的挑战,请访问“ Hello World!”。和“这个数字是素数吗?” 。 挑战 编写一个程序,打印从1到100(含1和100)之间的十进制数字。但是,对于三倍打印“ Fizz”而不是数字,对于五倍打印“ Buzz”。对于三和五的倍数的数字,请打印“ FizzBu​​zz”。 输出量 输出将是由换行符(\n或\r\n)分隔的数字(以及Fizzes,Buzzes和FizzBu​​zzes)列表。尾随换行符是可接受的,但前导换行符是不可接受的。除了您选择的换行符之外,输出应类似于以下内容: 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 …

25
最短的代码合法地懈怠
我是一名开发人员,我不想做自己的工作。我从XKCD知道,最好的借口是代码的编译。因此,我认为我需要一些可以永久编译的代码!而且由于我很懒并且不想键入太多内容,因此必须使用尽可能短的代码来完成。 因此,您的任务是编写一个在语法上有效但会导致编译器进入无限循环的程序。 技术指标 显然,您必须使用具有编译器的语言。 指定每个解决方案中使用的实现。 这是代码高尔夫球,因此最短的有效解决方案(以字节为单位)获胜。 编译器可以终止以耗尽内存或堆栈空间。

30
产生堆栈溢出的最奇怪的方法
作为程序员,您当然知道由于明显的递归而导致的堆栈溢出错误。但是,当然有很多怪异和不寻常的方法可以使您喜欢的语言吐出该错误。 目标: 必须引起堆栈溢出,该堆栈溢出在错误输出中清晰可见。 不允许使用明显的递归。 无效程序的示例: // Invalid, direct obvious recursion. methodA(){ methodA(); } // Invalid, indirect, but obvious recursion. methodA(){ methodB(); } methodB(){ methodA(); } 最有创意的方式是最好的,因为这是一场人气比赛。也就是说,避免无聊的答案是这样的: throw new StackOverflowError(); // Valid, but very boring and downvote-deserving. 即使我现在接受了答案,也可以添加更多答案:)

1
“不知道”还是“不知道”?
编写一个程序,处理缠结字符串的ASCII艺术表现形式,并确定是否可以将其解缠为简单循环。纠结使用字符表示-并|表示水平和垂直段,以及+代表角。字符串经过其自身的位置如下所示: | | ------- ---|--- | | (Horizontal segment on top) (Vertical segment on top) 字符串的两端连接在一起;没有松散的结局。 如果您的程序确定无法将字符串解开成简单的循环,则应输出单词KNOT。否则,应输出单词NOT。 这是一个代码挑战,因此最短的有效答案(以源代码的字节为单位)将获胜。 限度 ASCII输入最多包含25行,每行80个字符。您可以假定所有行都用相同长度的空格填充。 例子 输入: +-------+ +-------+ | | | | | +---|----+ +-------+ | | | | | | +-------|------------|---+ | | | | +---+ +---+ 输出: KNOT 输入: +----------+ | | …

30
解读源代码
注意:这项挑战现已不再适用于新提交的警察。这是为了确保没有人能够发布仅保持完整状态的提交,因为不再有更多的强盗对挑战感兴趣。 在这场警察和强盗游戏中,每个警察都会编写一个简单的程序来提供单个输出。然后,他们将公开有关其程序的四件事: 语言 程序长度 所需的输出 原始码的加粗版本 然后,强盗必须解扰源代码,以便他们的程序像原始程序一样起作用。 警察规则 您将编写一个简单的程序,强盗将尝试重新创建该程序。 您的原始程序必须具有简单的功能:执行后,它会输出单个字符串/数字并暂停。无论何时何地运行,它都应提供相同的输出,并且不应依赖于额外的库或Internet。 您的程序和输出必须使用可打印的ASCII(允许换行和空格)。输出不应超过100个字符,并且该程序应在不到5秒钟的时间内在合理的机器上运行。您也不允许在程序中使用哈希(或其他加密函数) 然后,您提供源代码的加扰版本和所需的输出。您可以随意保存源代码,只要保留字符即可。 您的分数是您提交的最短的程序,尚未破解。一周的时间后,完整的陈述将变得免疫。为了获得这种豁免,您应该编辑您的答案以显示正确的答案。(澄清:在您给出答案之前,您没有免疫力,仍然会被破解。)最低分获胜。 简单的示例警察答案 Perl,20岁 ellir"lnto Wo d";prH Hello World 要么... Perl,15岁 *3i)xp3rn3*x3t( 272727 强盗规则 强盗会将他们的破解尝试作为答案发布在位于此处的单独线程中。 您尝试破解每个提交。您的破解尝试将是源代码的完整版本。如果您的猜测与描述相符(相同的字符,输出以及所用的语言),并且您是第一个正确的猜测,那么您将赢得一分。重要的是要注意,您的程序不必与原始程序完全匹配,只需使用相同的字符并具有相同的功能即可。这意味着可能有多个正确答案。 得分最高(成功破解)的强盗获胜。 简单示例强盗答案 您的程序是print "Hello World";。(尽管print"Hello World" ;也可以。) 您的程序是 print(3**3x3)x3 安全提交 ASP / ASP.Net,14(Jamie Barker) Befunge-98,15(萤火虫) GolfScript,16岁(Peter Taylor) 19岁的CJam(DLosc) GolfScript,20(用户23013) Perl,21岁(初级) Python,23(mbomb007) Ruby,27岁(历史学家) SAS,28(ConMan) …

30
在C中打高尔夫球的技巧
您在C高尔夫方面有哪些一般提示?我正在寻找可用于编码一般至少在某些程度上针对C的高尔夫问题的想法(例如,“删除注释”不是答案)。请为每个答案发布一个提示。另外,如果您的技巧适用于C89和/或C99,并且仅适用于某些编译器,请提供。
137 code-golf  tips  c 

27
安抚您的Google霸主:绘制“ G”徽标
编写一个程序或函数,该程序或函数采用正整数N,并根据以下*构造输出Google的“ G”徽标的N×N像素图像: 例如,如果N为400,则应输出400×400像素的徽标,并带有正确的尺寸和颜色: 无论N的大小如何,它都应该看起来准确。例如,这里是N = 13: 您的代码不需要连接到互联网。例如,不允许缩放外部托管的svg。(不过,缩放在代码中编码的svg会很好。) 是否可以使用抗锯齿。由你决定。 请注意,“ G”的水平条并未一直延伸到图像的右边缘。圆在切掉之前通常在右边缘向内弯曲。 以字节为单位的最短代码获胜。 *徽标的结构已针对此挑战进行了简化。正确的构造可以在这里和这里看到。

30
最短的错误信息
挑战 编写最短的程序,该程序在编译或执行时会产生比程序本身小的致命错误消息。该错误信息可能不是由程序本身生成的,例如Python的raise。有效答案必须同时包含代码和错误消息。有效答案最短者获胜。 没有错误消息不算作错误消息。 例子(卢阿) 代码(46字节): [ --aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 错误(45个字节): [string "[..."]:1: unexpected symbol near '['

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.