Questions tagged «code-golf»

Code-golf是在最小的源代码字节中解决特定问题的竞赛。

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 

5
填满湖泊,二维
这个问题的一维版本非常简单,因此这是一个更难的2D版本。 在标准输入上为您提供了2D的陆地高度阵列,您必须弄清楚下雨时湖泊的形成位置。高度图只是数字0-9(含)的矩形数组。 8888888888 5664303498 6485322898 5675373666 7875555787 您必须输出相同的数组,并用将所有在水下的位置替换*。 8888888888 566*****98 6*85***898 5675*7*666 7875555787 水可以沿对角线逸出,因此在这种配置下不会有湖泊: 888 838 388 最短的代码胜出。您的代码必须处理最大80宽和24高的尺寸。 另外三个例子: 77777 77777 75657 7*6*7 75757 => 7*7*7 77677 77677 77477 77477 599999 599999 933339 9****9 936639 => 9*66*9 935539 9*55*9 932109 9****9 999999 999999 88888888 88888888 84482288 8**8**88 84452233 => 8**5**33 …

11
pi的良好有理逼近
编写一个程序,以分母递增的顺序打印出分母<1000000的pi的所有良好有理近似值。 a/b如果pi比分母不大于的任何其他有理数更接近pi,则它是pi的“良好有理近似值” b。 输出应该总共有167行,并且开始和结束是这样的: 3/1 13/4 16/5 19/6 22/7 179/57 ... 833719/265381 1146408/364913 3126535/995207 最短的程序获胜。

30
你好世界窗口
创建一个窗口,里面说你好世界,别无其他。内部没有任何“确定”或“取消”按钮。它必须只是一个简单的窗口,向您问好世界。我不在乎窗口框架的内容或窗口的外观,但是在窗口内部只能说“ hello world”。 例: 最短的代码胜出。 编辑:对不起,约翰内斯·库恩(Johannes Kuhn)窗口必须实际停留在那儿,它可能不会立即关闭。我没有想到这种情况,因此没有考虑到这一点。 编辑2:我们目前有3个并列答案(20个字符)。任何关于谁应该是赢家的建议都值得欢迎。

10
元高尔夫挑战赛
对于这一挑战,您必须解决这一挑战。 比赛结束了!检查问题的结尾 眼镜: 编写最小的代码(任何语言*)。 答案的分数是以下各项的总和: 代码长度,不带空格。 使用相同语言的答案数的平方。 比赛中最大语言名称的长度减去您语言的长度。 减票减去减票(又名减投票总数) 写出用户的位置和分数。 每个用户只能写一个答案。 最低分获胜。 测试: 因此,在比赛结束时,可能的输入可能是(STDIN): 这些列是:用户名,语言,代码长度(不带空格)和TotalVotes UserA Python 100 1 UserB Perl 30 2 UserC Java 500 3 UserD Brainfuck 499 4 UserE Perl 29 5 如果您的用户名带有“我的用户名”之类的空格,它将变为“ MyUserName”,因此输入将始终恰好有4列。 输出将是(STDOUT): 1 UserE 33 2 UserB 37 3 UserA 103 4 UserD 496 …

18
克里斯·派恩(Chris Pine)的“聋奶奶”
我是RubyLearning的导师,我们为学生提供的练习之一是Chris Pine的书“ Learn to Program ”中的“聋奶奶”练习。描述如下: 编写聋人奶奶程序。无论您对奶奶说什么(无论您输入什么),她都应回答:“ Hu!如果您大喊,她会听到您的声音(或者至少她是这么认为的),然后大喊:“不,自1938年以来!” 为了使您的程序真正可信,每次让奶奶大喊一遍。可能是1930年至1950年之间的任意一年。(这部分是可选的,如果您在方法一章的末尾阅读Ruby的随机数生成器这一节,将会更加容易。)喊“再见”。 经过几次课程迭代后,我尝试查看我能得到多小,现在减少到112个字符: puts (s||='').upcase==s ? "NO, NOT SINCE #{1930+rand(21)}!":"HUH?! SPEAK UP, SONNY!" until(s=gets.chomp)=="BYE" 我很想知道用您选择的语言可以实现几个字符,因为我认为Ruby在这里已经做得很好。 编辑:下面发布的Perl解决方案导致 ruby -nle 'puts($_=="BYE"?exit: $_.upcase!? "HUH?! SEPAK UP, SONNY!":"NO, NOT SINCE #{1930+rand(21)}!")' 表达式的长度为92个字符,而nand l选项的长度为2个字符。
22 code-golf  string 

13
兰顿的蚂蚁ASCII艺术。
画出兰顿蚂蚁的路。 描述 平面上的正方形被涂成黑色或白色。我们任意地将一个正方形标识为“蚂蚁”。蚂蚁在采取的每个步骤中都可以沿四个基本方向中的任何一个行进。蚂蚁按照以下规则移动: 在白色正方形处,向右旋转90°,翻转正方形的颜色,向前移动一个单位 在黑色正方形处,向左旋转90°,翻转正方形的颜色,向前移动一个单位 技术指标 输入:0到725(含)之间的整数N。 输出:一个17 x 17的网格,代表步骤N时蚂蚁的“路径”。 规则 蚂蚁开始朝右(3点钟)。 蚂蚁从网格的中心开始。 分别_#@用于白色方块,黑色方块和蚂蚁。 网格最初是完全白色的。 您可以使用解释语言制作完整的程序或函数。 通过标准输入或参数输入。 例子 更新:案例的N = 450输出错误。 N = 0 _________________ _________________ _________________ _________________ _________________ _________________ _________________ _________________ ________@________ _________________ _________________ _________________ _________________ _________________ _________________ _________________ _________________ N = 1 _________________ _________________ _________________ _________________ _________________ _________________ …

30
最短的电源设置实施
问题定义 打印出给定集合的幂集。例如: [1, 2, 3] => [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]] 每个元素都将打印在单独的行上,因此上面的示例将打印为: [] [1] [2] ... [1, 2, 3] 示例代码(在D,这里是 python示例): import std.stdio; string[][] powerset(string[] set) { if (set.length == 1) { return [set, []]; } string[][] ret; foreach (item; powerset(set[1 .. …

28
n的最后一个非零数字!
给定整数1≤N≤1,000,000作为输入,输出N的最后一个非零数字!哪里!是阶乘(从1到N的所有数字的乘积)。这是OEIS序列A008904。 您的程序需要在合理的机器上10秒钟内完成任何有效输入。 测试用例 1 => 1 2 => 2 3 => 6 4 => 4 5 => 2 6 => 2 7 => 4 8 => 2 9 => 8 10 => 8 100 => 4 1000 => 2 10000 => 8 100000 => 6 1000000 => 4 这是一个代码高尔夫球,因此以字节为单位的最短代码胜出!

3
元保龄球高尔夫
您的任务是创建最短的程序(A),该程序输出另一个具有最大唯一字节的程序(B),然后又输出原始程序(A)。从本质上讲,您正在打高尔夫一对我们的羽绒带程序(又称定期重复奎因),而另一半则打保龄球。A和B可能使用不同的语言。 规则和计分 您的最终分数是<number of unique bytes in B> / <number of bytes in A>。最高分获胜。请注意,理论上的最高分数是256。 程序A必须至少一个字节长 程序B不能完全由无操作组成,即,至少一个字符必须以某种方式影响输出。 奎因标准规则适用于这两个程序。值得注意的是,在任何情况下都不允许使用错误提示。 为了保持答案格式的一致性,请从以下类似内容开始回答: # <Language for A> & <Language for B>, Score: <B score> / <A score> = <combined score>

12
真的是加拿大国庆日吗?
7月1日是加拿大日(是加拿大)!还是?看来,今天的Wikipedia页面上有很多与加拿大相关的内容,但是还有哪一天是加拿大的? 您的任务是编写一个程序或函数,该程序或函数以日期(月和日)作为输入,并在输入的日期上返回或输出Wikipedia页面上“加拿大”的提及数目。一些规则: 日期可以以您选择的任何合理格式输入 您的提交必须从url中提取数据en.wikipedia.org/wiki/Month_Day。 仅"Canada"在标题情况下,才必须搜索并计算包含的子字符串。"Canadian"不算,但是"Canada's"算。只要"Canada"字符串中存在确切的,区分大小写的文本,它就是一个匹配项 该页面的内容被视为相应.html文件中的任何内容(即,如果您以a的形式下载.html并在记事本中打开该页面,将会显示什么内容) 结果可以以任何其他合理方式输出到STDOUT,返回或显示 测试用例: July 1 => 34 May 14 => 1 Oct 31 => 2 July 4 => 2 这是代码高尔夫,所以最短的提交者获胜 (作为无奖励的奖金,我很想看看计数最高的那一天是什么)

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.