编程拼图和代码高尔夫

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

7
家谱求解器
这是加尔文的爱好给社区留下的几个挑战之一。 采取“形式描述的家谱”文件,其格式如下: [ID] [mother ID] [father ID] [gender] [full name] 例如,它描述了http://en.wikipedia.org/wiki/Cousin上的第一棵家谱: 1 ? ? M Adam 2 ? ? F Agatha 3 ? ? M Bill 4 2 1 F Betty 5 2 1 M Charles 6 ? ? F Corinda 7 3 4 M David 8 6 5 F …

20
破解密码到密码锁
给定一个标准的密码锁,如图所示。解锁的方法是在组合行的代码中对齐4个数字。经过多年的忠诚服务,您已被锁厂解雇,并决定通过在下锁之前先放下锁来进行严格的报复,从而使每把锁都留在组合线上以在组合线上解锁。 您还知道,通过查看其他行中数字的顺序,可以计算出组合线上必须有哪些数字(因此,将其解锁的​​组合就是)。 如果为锁上的每一行提供了一个编号,该编号从组合行(用于解锁锁的行)的第0行开始到第9行。例如,如果第4行上的数字为5336,则要解锁的组合为1992。 不幸的是,这些锁已经打包,并且您对每个锁的查看都变得模糊了,因此您只能在锁的不同行上看到数字。 挑战 给定4对数字,其中整数的第一个数字表示行号,第二个数字表示在该行上出现的数字,请对锁进行组合。例如,如果您输入: 57 23 99 45 然后它应该输出: 2101 要么 25 78 63 15 和 3174 假设输入将始终是4个正整数,格式为`25 64 72 18。 这是code-golf,所以最短的程序以字节数为准。 这也是我的第一个问题,因此感谢您提供任何反馈意见。
22 code-golf 

14
Khinchin的常数,以64个字节或更少的字节为单位
Khinchin常数是一个奇怪的数学常数,根据Wolfram MathWold的说法,“众所周知,很难高精度地计算出来”。 这是100位数字: 2.685452001065306445309714835481795693820382293994462953051152345557218859537152002801141174931847697 ... 编写一个不超过64个字节的程序,以输出Khinchin常数到正确的小数位数的最大数量。 您不得使用任何与Khinchin常数直接相关的内置库常数或函数。(例如,绝对不允许Math.Khinchin(precision)。) 您可以使用数学库来计算对数,求和等。 您可以对全部或部分答案进行硬编码。 您的程序必须产生有限的输出,并且必须在一台相当现代的计算机(例如此处列出的计算机)上运行少于一小时。 您必须输出到stdout。没有输入。 只要http://mothereff.in/byte-counter注册64个字节或更少的字节,就可以使用任何所需的字符。 计分 您的分数是程序从2.68开始正确输出的Khinchin常数中连续数字的位数。您可能会输出不正确的数字,但只有最后一个正确的数字会计入您的分数。 例如,输出 2.68545200 2 06530644530971483548179569382038229399446295305115234234721 得9分。每个数字一个,2 6 8 5 4 5 2 0 0但在2之后不应该是1。

14
非舍入分数
当您将分数转换为十进制数并想要存储该数时,通常必须舍入该数,因为您只想使用一定数量的内存。假设您只能存储5个十进制数字,则5/3变为1.6667。如果只能存储2个十进制数字,则它将是1.7(现在假设它始终在0到9.99之间...)。 如果您现在尝试使用1.7逆转该过程,并且想要取回小数,那将是困难的,因为您知道1.7只是一个四舍五入的数字。当然,您可以尝试17/10,但与“优雅” 5/3相比,这是一个“丑陋”的分数。 因此,现在的目标是找到分母为b的分数a / b,在正确舍入后得出舍入的十进制数。 细节 输入包含1到5位数字的字符串,介于0(包括)和10(不包括)之间,并带有'。'。在第一个数字之后。假设n表示位数。输出必须是两个整数的列表/数组,[numerator, denominator]或者是一个分子为非负数且分母为正数的有理数据类型(可以创建自己的数据类型或使用内置数据类型)。正确四舍五入为n数字(即n-1小数点后的数字)时,分数分子/分母必须等于输入。 限制:仅允许一个循环语句。这意味着您在整个代码中只能使用一个循环语句(如foror while或gotoetc,以及功能循环如map或fold将代码应用于列表/数组的每个元素),但是您可以随意“滥用”它或使用递归等 您应该编写一个函数。如果您的语言没有功能(即使没有),则可以选择将输入存储在变量中(或通过stdin输入),然后打印结果或将结果写入文件。最低字节数获胜。 四舍五入 四舍五入应遵循“常规”四舍五入规则,即,如果要截断的最后一位数字为5或更大,则将四舍五入,对于其他情况,将四舍五入,例如: 四舍五入为4.5494 1位数:5 2位数字:4.5 3位数:4.55 4位数字:4.549 例子 请包括以下测试用例和其他“有趣”的用例: Input 1.7 Output 5/3 Input 0. Output 0/1 Input 0.001 Output 1/667 Input 3.1416 Output 355/113

9
超快速的呕吐功能
目标很简单:在10秒钟内计算尽可能多的数字的求助函数并求和。 您必须在最后打印结果,并且必须进行实际计算。不允许使用自动totient功能,但是bignum库是允许的。您必须从1开始并连续计数所有整数。你是不是允许跳过数字。 您的分数是您的程序可以在您的计算机上计算多少个数字/我的程序可以在您的计算机上计算多少个数字。我的代码是C ++中的一个简单程序(已关闭优化),希望您可以运行它。 您可以使用的重要属性! 如果 gcd(m,n) = 1, phi(mn) = phi(m) * phi(n) 如果p是素数,phi(p) = p - 1(用于p < 10^20) 如果n是偶数phi(2n) = 2 phi(n) 第一个链接中列出的其他人 我的密码 #include <iostream> using namespace std; int gcd(int a, int b) { while (b != 0) { int c = a % b; a …

4
缩小Brainfuck
根据以下规则,您面临的挑战是缩小Brainfuck代码: 删除不属于的任何内容+-><[].,。 对于任何一组连续的+或-字符,如果量+S和-s是相同的,将其删除。 执行与上述相同的操作,但使用>和<。 +-><如果不执行任何操作,请删除字符序列。例如,您应该删除+>-<->+<。(这可能是最棘手和最难实现的。)确保您没有得到任何误报,例如+>-<+>-<,不应删除。 测试用例: 输入项 ++++++[->++++++<]>. prints a $ [-]< resets tape >,[>,]<[.<] reverses NUL terminated input string ++-->><< does nothing 输出量 ++++++[->++++++<]>.[-],[>,]<[.<] 输入项 Should disappear: ++>>+<+++<->-->-<<->-< Should disappear: +++>-<--->+< Should stay: +++>-<+>---< 输出量 +++>-<+>---< 您可以根据需要接受输入和输出-stdin / stdout,函数等,但是输入可能未进行硬编码。 这是代码高尔夫球,因此字符计数中最短的代码将获胜。

5
2014年世界IPv6日
为纪念世界IPv6日的周年纪念日,互联网协会在2014年6月6日发布了一项“关闭IPv4的活动”,为期一天。 IPv6地址可以长格式表示为八个冒号分隔的16位十六进制值。根据地址的不同,它们也可以按照RFC 3513的2.2节的文本文本表示中的第 2项进行缩短: 为了使写入包含零位的地址更容易,可以使用特殊语法来压缩零。“ ::”的使用表示一组或多组16位零。“ ::”在一个地址中只能出现一次。“ ::”还可以用于压缩地址中的前零或后零。 填入这个挑战将是接受无论是在或长或短格式格式化只有一个IPv6地址的程序,并显示在同一个地址都在长,短格式,按照这个顺序。 输入可能来自命令行参数STDIN或任何其他适合您选择语言的输入源。 禁止专门用于解析IPv6地址的库或实用程序(例如inet_ {ntop,pton}())。 如果输入地址无效,则输出将为空(或给出一些指示该地址无效的适当错误消息) 在::发生缩短的情况下,给定地址只能进行一次缩短操作。如果给定地址有多个潜在的缩短操作,则必须使用给出最短总地址的操作。如果在这方面有平局,将使用第一个操作。在下面的示例中对此进行了说明。 避免标准漏洞 例子: Input Output 1080:0:0:0:8:800:200C:417A 1080:0:0:0:8:800:200C:417A 1080::8:800:200C:417A FF01::101 FF01:0:0:0:0:0:0:101 FF01::101 0:0:0:0:0:0:0:1 0:0:0:0:0:0:0:1 ::1 :: 0:0:0:0:0:0:0:0 :: 1:0:0:2:0:0:0:3 1:0:0:2:0:0:0:3 1:0:0:2::3 1:0:0:8:8:0:0:3 1:0:0:8:8:0:0:3 1::8:8:0:0:3 1:2:3:4:5:6:7:8 1:2:3:4:5:6:7:8 1:2:3:4:5:6:7:8 ABCD:1234 <Invalid address format - no output> ABCDE::1234 <Invalid address format …

6
Bloatware竞赛:产生100多个MiB可执行文件[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 3年前关闭。 用您喜欢的编译语言创建简短的源代码,然后将其编译成较大的(不少于104857600字节)可执行文件。该程序必须是可运行的(假设有1GB的可用内存),并且可以执行任何操作(最好是简单的操作,例如hello world)。 鼓励使用非显而易见的技巧。 C中的无聊示例: int a[1024*1024*25] = { 1 }; int main(){} 如果可以“解释”为什么无法减小可执行文件的大小(例如,实际上以某种方式使用了所有膨胀),则加分了。

4
加密奎因变体
创建一个程序,以以下格式打印其源的MD5和: MD5 sum of my source is: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 没有作弊-您不能只读取源文件并计算其总和。该程序不得读取任何外部信息。 当然,您可以使用适用于您的语言的MD5库。

4
谁想成为Kolmogorov复杂性赢家?
今天的任务是发明文本压缩器。 任务 您将编写两个函数: 该打包机是接受的ASCII字符(U + 0000到U + 007F)的字符串,并输出一个Unicode字符串(U + 0000到U + 10FFFF),包含字符尽可能少的功能。 该解包器是接受编码的Unicode字符串,并输出完全原始ASCII字符串的函数。 输入项 唯一授权的输入是ASCII字符串(对于打包程序)和打包的Unicode字符串(对于解包程序)。没有用户输入,没有互联网连接,没有使用文件系统。 您的职能部门可以访问此英语单词列表。您可以将该列表用作本地txt文件,也可以将其内容作为字符串或字符串数组复制到源代码中。 您无法在函数中对以下代码片段进行硬编码。 输出量 这两个函数的唯一授权输出是字符串。 解压缩程序的输出必须包含与打包程序的输入完全相同的字符。 您的输入和输出可以使用支持所有Unicode的任何字符编码(UTF-8 / 16/32,GB18030等),因为您的分数将仅取决于输出中Unicode字符的数量。不过,请精确说明您使用的是哪种编码。 要计算输出中Unicode字符的数量,可以使用以下工具: http //mothereff.in/byte-counter 计分 您的条目必须能够打包和解压缩以下10个文本片段(我在此论坛上拍摄的片段)。 您的分数将是10个打包字符串的大小(以Unicode字符表示)加上两个函数的大小(以Unicode字符表示)的总和。 如果使用字典,请不要计算字典的大小。 请在您的条目中包括每个代码段的“得分”及其打包版本。 最低分获胜。 数据 以下是要编码以计算分数的代码段: 1:里克·罗尔(Rick Roll)歌词(1870b): 我们高尔夫球并不陌生,您知道规则,我也是 我们不是爱的陌生人 你知道规则,我也知道 我想的是全面承诺 你不会从任何其他人那里得到这个 我只是想告诉你我的感觉 要让你明白 绝不会放弃你 永远不会让你失望 永远不会跑来跑去和抛弃你 永远不会让你哭泣 永远不会说再见 永远不会撒谎和伤害你 我们认识很久了 …

29
查找最近的回文数
给定数字N,输出/返回X,使得N + X是回文,其中| X | 必须尽可能小。 回文:数字是回文,如果从左向右读取数字与从右向左读取数字的数字顺序相同。 95359并且6548456是对称的,123而2424不是。带有前导零的数字(例如)020不是回文。 输入是一个小于10 15的正整数。从stdin读取它,并将其作为方法参数。 输出必须是整数(正数或负数),并且如果输入已经是回文,则应该为0。您可以将输出写入stdout,从函数或任何您喜欢的东西返回。如果有两个数字(例如2和-2)满足要求,则仅输出其中一个。 例子: Input Output 3 0 234 -2 1299931 -10 126 5 or -5 (only one of them)

30
自行删除的程序
如果使用编译语言,则程序必须删除编译后的可执行文件(但不必删除源文件)。如果使用解释语言,则程序必须删除源文件。 我的开标价: Python(29个字符) import os;os.remove(__file__) 编辑:为了防止类似rm -rf /的解决方案,该程序不得删除可执行文件或源文件以外的任何内容。 html,body{margin:0;padding:0;height:100%;overflow:hidden} <iframe src="https://xmikee1.github.io/ppcg-leaderboard/?id=19355" width="100%" height="100%" style="border:none;">Oops, your browser is too old to view this content! Please upgrade to a newer version of your browser that supports HTML5.</iframe> 运行代码段隐藏结果展开摘要

7
反向工程师轮询统计
介绍 给定民意测验中的一组选择百分比,请计算民意测验中必须存在的最少选民人数才能生成这些统计数据。 示例:您最喜欢的宠物是什么? 狗: 44.4% 猫: 44.4% 老鼠: 11.1% 输出:(9最少可能的选民人数) 眼镜 这是您的程序/功能的要求: 您将得到一个百分比值数组作为输入(在stdin上,作为函数参数等)。 每个百分比值都是一个四舍五入到小数点后一位的数字(例如44.4 44.4 11.1)。 计算民意测验的最小可能投票人数,当四舍五入到小数点后一位(标准输出或函数返回值)时,其投票结果将产生准确的百分比。 奖励:-15个字符,如果您可以“非平凡”的方式解决(即不涉及遍历所有可能的选民,直到找到第一个可行的选民) 例 >./pollreverse 44.4 44.4 11.1 9 >./pollreverse 26.7 53.3 20.0 15 >./pollreverse 48.4 13.7 21.6 6.5 9.8 153 >./pollreverse 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 99.6 2000 >./pollreverse 0.1 …

4
ASCII动画雪景
编写最短的程序,将任何ASCII艺术作品转换成动画的雪景,然后从下雪开始形成雪景(非高尔夫JavaScript示例最后更新于2011-12-19)。 输入规范:您的程序必须接受空格,星号和换行符的任意组合。输入最多包含23行,每行80个字符。将没有空行,但行可能仅包含空格。仅包含一个尾随的换行符,必须将其忽略。 输出:为您的操作系统的文本控制台或终端仿真器输出ASCII字符(空格,星号)和控制代码(回车,换行符,ANSI转义代码等),直到用户手动终止程序为止。如果操作系统允许该设置,则可以假定终端窗口为80x24个字符。 规则: 动画必须流畅且快速(首选15 fps)。 雪密度必须在5%到15%之间。 每秒最多滚动不超过一个屏幕的雪。(这意味着在任何一秒钟的时间内最多只能添加24行新雪。) 进入屏幕顶部时,雪花不得显示任何明显的图案;它必须看起来是随机的。 该程序启动时必须尽快将屏幕上的所有行都积雪。屏幕的各个行的初始填充对于查看者而言不应是显而易见的。 输入ASCII文字的左下角必须位于屏幕的左下角(图1进行了进一步说明)。 ASCII图形内部或下方的区域不得永久性地加星号。但是,星号可以(但不是必须)滚动通过该区域。 除输入内容外,雪不得堆积在屏幕底部或现有雪的顶部。 下部空间必须在上部空间之前填充,因为相反的填充空间使圣诞树动画看起来与原始代码的输出完全不同。(添加2011-12-20) 节日快乐! 图1:80x24屏幕的标记区域 ---------------------------New snow added on this line-------------------------- | | ----------------------------------------------------------+ | **** | | Snow MUST fall Snow MAY fall ----------------> **** | | through this through these **** **** | Snow MUST fall | …

9
命名扑克手
命名扑克手 给定五张牌,输出扑克手的名称,该名称为以下之一: High card One pair Two pair Three of a kind Straight Flush Full house Four of a kind Straight flush Royal Flush 如有疑问,请参阅http://en.wikipedia.org/wiki/List_of_poker_hands上的规则。 输入项 来自stdin或命令行参数的5 张卡片。卡片是表格上的两个字母的字符串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 of diamonds 输入示例=>所需输出 3H 5D …
22 code-golf  game 

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.