编程拼图和代码高尔夫

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

6
ASCII艺术日历
让我们制作一个ASCII艺术时钟和日历,告诉我们当前的月份,每月的某天,一周的某天,小时,分钟,以及它是夜晚还是白天(但不是年份或秒)。 在任何特定时间,日历将看起来像这样:(看起来更好,行距更少) ________________________________________________________________ |\ ____________________________________________________________ /| | | ___ | | | | _( ) | | | | (___)__) -.- | | | | | | | | | | | | -.- | | | | -.- | | | | ___ | | | | _( ) …

7
胶带可以修复母亲节
基于Duct磁带,可以解决任何问题,这些问题过于广泛,使用非常相似的规则。仅这次,目标非常明确: 挑战 您的任务是制作一个可以显示的程序hello mom-无需编写任何代码。 在StackOverflow的问题和答案中,您只能使用已经为您编写的代码。您所能做的就是用胶带尽力而为。当然,我们必须提供适当的归属,以免权利被终止,这一点非常重要。 规则 您必须包含指向您在答案中使用的问题/答案的链接。 您不能修改找到的代码,但以下情况除外: 一种。您可以重命名变量,函数和方法。(这并不意味着你可以改变一个方法调用,通过改变,说scanner.nextInt()要scanner.nextLine()和声称您更改的方法名。改变必须在定义或引用同一实体)。如果将变量,函数或方法再次重命名,则该解决方案仍然可以使用,因此重命名要包含hello mom为变量名的代码不起作用。 b。您可以适当地调整缩进。 C。您可以假定已加载适当的模块以使代码段正常工作。(例如,import用于Java和Python的using语句,用于C#和C ++的语句以及所有语言的等效项)如果代码段中包含imports,则可以将其移至代码顶部。 d。如果语言要求代码在某种方法体内执行(例如,public static void main(String[] args)对于Java,static int Main(string[] args)对于C#等),则可以将代码包装在适当的方法中。但是该主要方法的内容必须保持不变。 您必须提供所执行的任何变量/方法/函数/类重命名的明确列表。 您不能接受片段摘要(这意味着,如果您从帖子中获取代码块,则整个过程都将完成) 为不熟悉您所用语言的人提供代码的简要说明。 您必须使用此挑战开始之前发布的摘要。 人气比赛,所以最投票获胜! 最后期限 我将接受在母亲节结束时(UTC-11时区的午夜)获得最多投票的意见书,但以后的意见书仍然可以投票。

30
四人对峙
四人对峙 描述 您已经以某种方式陷入四重僵局。手中装有枪支,手榴弹挂在皮带上。 目标是在对峙结束时拥有最大的健康。当最多一个人的健康状况良好时,对峙已经结束。 每个玩家都有5健康,并且在其健康值下降到/低于时死亡0。玩家死亡的回合是该玩家可以承受的最后回合。 如果在对峙结束时有一名现场玩家,则该玩家获胜。否则,负面健康程度最低的玩家获胜。 动作 射击:对某人射击。 2 射击活着的敌人会造成伤害 0 射击死敌会造成伤害 health_at_start_of_turn+2射击自己会造成伤害。(请注意,这会使您处于最-2健康状态。) 如果一个敌人在射击自己的同一回合向您射击,您将以-4的生命值结束对峙(您在杀死自己的回合中仍然受到其他玩家的伤害)。 您在接下来的回合中的操作将被忽略(并假设为Nothing)。 躲闪:尝试躲避单个对手的投篮。 准备:解开您的手榴弹,并准备扔它。 在被炸毁之前,您只有三回合将其扔掉(6对自己3造成伤害,对所有活着的敌人造成伤害) 用未投掷的手榴弹杀死就等于不投掷手榴弹三圈。 投掷:将手榴弹扔向某人,并希望获得最好的结果。 8如果目标还活着,则会受到伤害 其他每个人(包括您自己)都可能受到3伤害 什么都没有:无所事事地转弯,看着每个人都死了。 输入项 您的程序将获得以下信息: 每个球员的健康 自对峙开始以来该玩家采取的行动的清单以下是每个玩家传递的信息的格式: [Health],[Action 1],[Action 2],[Action 3],... 动作将以“ 输出”部分中指定的格式给出。 您将收到4个这样的字符串,它们之间用空格隔开,并作为单个参数传递。这些字符串的顺序为: [Player Info] [Opponent 1 Info] [Opponent 2 Info] [Opponent 3 Info] 字符串作为第二个参数传递。第一个参数包含一个整数,该整数唯一地标识正在执行的对峙。保证同一组玩家之间的僵持不会同时发生。但是,将同时发生多个对峙。 例如: $./Player.bash 5 "3,S2,N …

30
创建内存泄漏,没有任何前叉炸弹
您的任务是创建内存泄漏。这是一个使用内存负载的程序,直到计算机用完为止,并且必须进行一些交换以使其自身免于耗尽。释放内存的唯一方法是在任务管理器中终止程序,或使用命令行终止taskkill /im yourprogram /f(例如,在Windows中),甚至重新启动计算机。仅关闭应用程序不应阻止它继续消耗内存。 规则: 禁止使用任何形式的叉弹。这意味着臭名昭著的Bash线:(){ :|:&};:被禁止! 该应用程序只能是单线程的。这意味着叉炸弹规则。 该程序不得运行其他程序。这意味着您不能只做类似的事情run(memoryfiller.exe)。唯一的例外是与您的操作系统或语言捆绑在一起的程序,这些程序并非主要用于消耗内存(即,它们还有其他用途)。这意味着喜欢cat和ln -s允许的事情。 您可以占用尽可能多的内存。越多越好。 代码必须完整说明。 祝好运。这是一场人气竞赛,因此自要求日期起10天后获得最多投票的代码将获胜!

30
输出您的分数!
挑战: 这个概念很简单:编写一个完整的程序以输出其自己的代码高尔夫球得分! 输出应仅是程序的字节数和结尾 bytes。 但请等待 ...有一个限制: 您的源代码不能包含字节数中的任何数字 因此,如果您的分数是186 bytes,则您的程序不能包含,或字符1。68 示例输出: 315 bytes 27 Bytes 49 BYTES 附加规则: 源代码中禁止使用不必要的字符,空格和换行符,但是在输出中完全可以接受结尾的空格和换行符 数字和bytes输出之间应该有一个空格 字母不区分大小写 无需自我检查或阅读源代码 不允许出现标准漏洞 这是代码高尔夫,所以 以字节为单位的最短代码胜出!

30
哪个围棋等级更高?
传统棋盘游戏Go的玩家使用等级系统衡量他们的技能: 新加入该游戏的玩家排名第30kyū(书面30k),并递减至第1kyū(书面1k)。这些被认为是学生等级。 玩家可以从第1推动圭以1 丹等级(书面1d),然后进度上数到第七丹等级(书面7d)。这些是大师级的队伍。 过去非常熟练的运动员7d可以晋升为第一职业丹等级 1p,并逐步增长到第九职业丹等级(书面9p)。这是最高等级。 简而言之:等级是有序的30k < 29k < ··· < 1k < 1d < 2d < ··· < 7d < 1p < 2p < ··· < 9p。 任务 鉴于中两个字符串{ 30k,... 1k,1d..., 7d,1p,... 9p}作为输入,输出更高的两个级别。(如果它们相等,则只需输出其中一个输入。) (通常,I / O是灵活的,您的答案可以是函数或完整程序,可以以任何合理的方式读取输入并以任何合理的方式产生输出。) 这是代码高尔夫球:目的是最大程度地减少代码的字节数。 测试用例 (格式:input1 input2 output。) 29k 9k 9k 21k 27k 21k 6d …
53 code-golf  string  go 

23
确认光明会
Illuminati命令您(使用其思维控制)输出以下字符串: ^ /_\ /_|_\ /_|_|_\ /_|/o\|_\ /_|_\_/_|_\ /_|_|_|_|_|_\ /_|_|_|_|_|_|_\ /_|_|_|_|_|_|_|_\ /_|_|_|_|_|_|_|_|_\ 规则: 每行都允许尾随空格。 每行中必须有前导空格。 在完整的所需输出之后,允许尾随空格。 由于这是一个代码高尔夫挑战赛,因此获胜者将是最短的节目,以字节为单位。 由于这是一个kolmogorov复杂性挑战,因此可以使用硬编码输出。 适用标准漏洞。 更新:您可以使用制表符代替空格,每个制表符计为4个空格。如果您出于某些原因想要。 沙盒(我会在沙盒常见问题解答建议的整个72小时内保留它,但要有7个支持票,并且几乎没有负面反馈,应该38个就可以了)

30
长度相同,字符串不同
挑战 给定一个非空字符串小号长度的大号完全由可打印的ASCII字符的,输出长度的另一个字符串大号即完全由可打印的ASCII字符,但不等于小号。 出于此挑战的目的,可打印的ASCII字符是U + 0020和U + 007E(含)之间的一个字符;也就是说,从 (空间)到~(波浪号)。不包括换行符和选项卡。 例如,给定"abcde",一些有效的输出可能是: "11111" "abcdf" "edcba" 但是这些将是无效的: "abcde" "bcde" "abcde0" 测试用例 "asdf" "1111" " " "~~~~~" "abcba" "1" " " "~" " ~" "~ " " 0" "!@#$%^&*()ABCDEFGhijklmnop1234567890" " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" 规则 您可以假定输入完全由可打印的ASCII字符组成。 您可能不会假定输入不包含所有95个可打印字符。 您可能假设输入内容至少包含一个字符,且长度少于256个字符。 输出还必须完全由可打印的ASCII字符组成。例如,您无法为input输出字节\ x7F "~"。 输出必须与输入1的概率不同;也就是说,您可以生成随机字符串,直到一个字符串与输入字符串不同为止,但是您不能仅输出L个随机字符并希望它与众不同。 输出中不允许使用换行符,但是您可以输出一个尾随的换行符,该换行符不计入字符串。 计分 这是代码高尔夫球,因此每种语言中以字节为单位的最短代码获胜。
53 code-golf  string 

30
任意长度弯曲
编写一个函数,该函数f接受一个正整数并返回一个函数。 返回的新函数应与相同f。但是,当“终止调用”发生时,f应该返回所有传递的整数之和。 例如,g=f(4)(如果f是第一个功能)应设置g为另一个功能。h=g(3)会做同样的。但是,当您h不带任何参数调用时(请参见下文以了解详细信息),它应该输出7,因为这是以前的函数参数的总和。换句话说f(3)(4)() == 7。 请注意,这与f(3,4)()。 “终止呼叫”是以下选项之一(您的选择): 不带参数调用 null作为参数 任何非正值 应该支持任意数量的函数调用,没有预定义的限制。 保证总和不会超过1000。 我们可以假设在“终止呼叫”之前至少进行了一次呼叫。 您的代码不应使用静态的,针对每个程序的变量,因此应该可以在同一运行时中多次运行实验,并观察到完全相同的行为。 例子: f(1)() == 1 f(4)(2)(7)() == 13 f(4)(2)(7)(5)(2)() == 20

30
用户赞赏挑战#1:Dennis♦
我有一个自发的想法,即向用户提出一系列挑战,这些挑战已经帮助并将继续帮助PPCG社区成为每个人(或者可能只是我个人)一个愉快的地方。:P 如果将Dennis的名称转换为1s和0s 的数组,其中每个辅音为1,每个元音为0,则该数组为[1, 0, 1, 1, 0, 1],这是对称的。因此,您面临的挑战是确定其他类似名称。 挑战 给定ASCII字符串,请删除所有不是字母的字符,并确定元音和辅音的配置是否对称。y不是元音 请注意,您的程序本身不必是这种类型的字符串。 测试用例 Dennis -> truthy Martin -> truthy Martin Ender -> truthy Alex -> falsy Alex A. -> truthy Doorknob -> falsy Mego -> falsy 参考实施 给定一个测试用例,此Python 3代码将提供正确的输出。这是我能做到的,但又不荒谬。 Python 3 s = input() l = [] for c in s: …

26
解密那些区分大小写(非常敏感)的字符串
目标 这是一个简单的挑战。您的目标是通过将每个字母与相同大小写的下一个字母交换来对字符串进行加扰,同时保持非字母字符不变。 逐步说明 第一个字符是E。我们寻找大写的下一个字母:这是一个C。我们交换了这些字符,从而导致CdoE!。 我们前进到下一个字符:这是一个d。我们寻找小写的下一个字母:这是一个o。我们交换了这些字符,从而导致CodE!。 我们前进到下一个字符:这就是d我们刚刚移到此处的字符。我们将其忽略,因为它已被处理。 我们前进到下一个字符:这是E在步骤#1中移到的字符。我们将其忽略,因为它已被处理。 我们前进到下一个字符:这是一个!。我们忽略它,因为它不是字母。 规则 您可以假设输入字符串仅由可打印的ASCII字符组成,范围为32-126。 您可以编写完整的程序或函数,以打印或返回结果。 如果输入字符串包含奇数个字母,则无论大小写如何,最后一个剩余的字母都不能与另一个字母互换,并且应保留在原位。如果字符串包含偶数个字母,但奇数个大写字母和奇数个小写字母,则适用相同的逻辑。 这是代码高尔夫球,因此最短的答案以字节为单位。禁止出现标准漏洞。 测试用例 Input : lLEhW OroLd! Output: hELlO WorLd! Input : rpGOZmaimgn uplRzse naC DEoO LdGf Output: prOGRamming puzZles anD COdE GoLf Input : eIt uqHKC RBWOO xNf ujPMO SzRE HTL EOvd yAg Output: tHe quICK BROWN fOx …
53 code-golf  string 

30
你能把我做成六角形吗?
今天,我们将制作一个ASCII六边形。您必须编写一个程序或函数,该程序或函数采用正整数n,并输出大小为n的六边形网格,该网格由星号组成。例如,大小为2的六边形如下所示: * * * * * * * 虽然大小为3的六边形如下所示: * * * * * * * * * * * * * * * * * * * 您可以使用任何默认的输入和输出方法,例如STDIO / STDOUT,函数参数和返回值或读取/写入文件。 您可能会认为输入始终有效,因此,如果输入的值不是正整数,则您的程序可以执行您想要的任何操作。你做但是必须处理大小为1六边形,这恰好是一个星号的特殊情况: * 只要输出在视觉上相同,就允许前导和尾随空格。 例子: 1: * 2: * * * * * * * 3: * * * * …

30
我太冷了,调高温度
这是我的第一次高尔夫比赛。 你需要做什么 用最短的字节为我构建AC远程控制系统。我的房间现在太冷了,我想念我的遥控器。 现在,我不希望您从字面上构建它或任何东西,只需打高尔夫球: 缓慢的温度增量,从40度开始,恰好在72度结束。增量时间必须始终为每次增量500毫秒。最后可以再等待500毫秒。我希望它停止。增量本身每次必须增加两次,就像我的遥控器一样。 您不应该清除屏幕。您应该有换行符。 应该发生什么 示例输出(不应该输出括号中的所有内容)。 40 (wait 500 millis) 42 (wait 500 millis) 44 (..repeat until 72..) 72 (stop or wait 500ms) 请记住, 这是我的第一场高尔夫,因此对打高尔夫球太困难了,我深表歉意。:( 祝您好运,高尔夫球手!

4
虚空传送门检测
电子游戏Minecraft就是要在构成虚拟世界的3D 整数格子中放置和移除不同类型的块。每个晶格点可以只包含一个块,也可以是空的(正式为“ air ”块)。在此挑战中,我们将只关注3D世界的一个垂直2D平面和一种块:obsidian。 当黑曜石在垂直平面上形成一个空矩形的轮廓时,可以创建一个下界门户。空矩形的大小可以从2个单位宽乘以3个单位高到22个单位宽乘以22个单位高。矩形的角不需要以黑曜石为边界,而仅是边。 例如,假设X为黑曜石,.为空:(这些数字仅用于标识目的,也为空。) ................................... ..XXXX....XXXX....XXXXXXXXX........ ..X..X...X....X..X.........X..XXXX. ..X.1X...X.2..X..X...3...X.X..X.... ..X..X...X....XXXX.........X..X.6X. ..XXXX....XXXX...XXXXXXXXXXX..X..X. .............X.4.X....X.5.X...XXXX. .............X...X....X...X........ ..............XXX......XXX......... ................................... 该网格包含3个有效门户: 传送门1由2个单位乘以3个单位,完全为空,并以黑曜石为边界。因此,它是有效的。 传送门2为4 x 3,完全为空,以黑曜石为边界。因此,它是有效的。 门户3并非完全为空。因此无效。 传送门4为3 x 3,完全为空,以黑曜石为边界。因此,它是有效的。 传送门5为3 x 2单位,太小。因此无效。 门户6缺少边界的一部分。因此无效。 挑战 编写一个程序或函数,以这些字符串形式表示黑曜石和空虚的网格,并打印或返回存在的有效下层门户的数量。 输入可以来自stdin或文件或函数参数。 您可能会假设输入的格式总是正确的-例如,一个完美的矩形文本网格,宽度和高度至少为1个字符,仅包含X和.。您可以选择假设最后一行后面有换行符。 如果需要,可以使用任意两个不同的可打印ASCII字符代替X和.。 黑曜石可能在网格的边界上。边界之外的任何东西都被认为是空的。 输入示例-输出应为4: ................................................................ ...................................XXXXXXXXXXXXXXXXXXXXXXXXX.... ..XXXX....XXXX....XXXXXXXXX........X.......................X.... ..X..X...X....X..X.........X..XXXX.X.......................X.... ..X..X...X....X..X.......X.X..X....X.......................X.... ..X..X...X....XXXX.........X..X..X..XXXXXXXXXXXXXXXXXXXXXXXX.... ..XXXX....XXXX...XXXXXXXXXXX..X..X.X......................X..XXX .............X...X....X...X...XXXX.X......................X..X.. .............X...X....X...X........X......................X..X.. ..............XXX......XXX........XXXXXXXXXXXXXXXXXXXXXXXX...X.. ..................................XX.........................XXX 计分 字节最少的提交将获胜。
53 code-golf 

19
改进硬件随机数生成器
您的任务是使用您所使用的任何硬件即兴使用硬件随机数生成器。 挑战 编写具有以下属性的程序: 它会打印0或1(或仅打印其他内容)。 输出取决于物理过程,而不仅取决于计算机的内部状态。 后续运行的输出(相隔一分钟)之间没有关系。 任何现实的努力都无法预测输出。 输出的概率0在0.2到0.8之间。 它在不到一分钟的时间内运行的可能性相当高。 您必须说明为什么程序不具有这些属性(如果不明显)。 澄清和限制 以下内容似乎对流行性竞赛有很多限制,但最终只能确保程序保持在问题的实质范围内,在一定程度上可行,并避免由于完全过高而普遍使用的解决方案,但最终我宁愿无聊的待着。 系统时间不算作物理过程。 您可以使用任何喜欢的消费级硬件,从8英寸的软盘驱动器到USB火箭发射器再到耳机-除非用于随机数生成。如果一件硬件是批量生产的,且成本低于1000美元/€/£ ,则它是消费级的,因此您不能使用射电望远镜,CERN,MRI或家用粒子探测器。 您只能对硬件的状态和对齐方式做出最基本的假设,例如打开电源(如果有电源开关)以及正确安装和运行。例如,您可以假定CD驱动器通常能够读取磁盘并且不会被阻塞,但是您不能假定CD驱动器可以打开或关闭或包含磁盘。在另一个示例中,您不能假设要对齐两个硬件以进行特殊的交互,但是可以假设它们在同一个房间中。 除非破坏硬件,否则您可以使其处于任何状态。 您可以并且必须假定硬件在自然环境中,但仅此而已。例如,您可以假定硬件未放置在液态氦的储罐中,既不隔音又不透光的房间中也不不在空间中。但是,您不能假定存在任何声音和光源,除非那些声音和光源只能通过激进的努力才能避免。 您的程序必须在具有您选择的非神秘操作系统的标准台式计算机上运行。您可以使用任何不是专门为随机数生成设计的软件。 您不能假设可以访问Internet。 您不能假设没有人在场,但是您可以假设没有人有意干扰您的程序,例如,通过手动停止风扇或运行一个程序,该程序除了尽可能多地关闭麦克风外什么也不做。 您只能对软件设置做出最基本的假设。例如,您可以假定要安装和激活驱动程序,但必须准备使声音静音。 您可以根据需要将软件设置保持为任何状态。 奖金 一项特别短暂的解决方案被授予特别赏金。确切地说,它是通过指令的数量而不是字符来实现的。获奖者是(按照我的标准并列): 弗兰基的这个答案。 Tejas Kale的答案。 我只能授予一个答案,而Tejas Kale的答案却很幸运。

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.