Questions tagged «code-golf»

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

14
自包含日志
问题” 定义一个函数log(或其他3个字母的名称),该函数在调用时将记录/打印/写入(所讨论语言的默认值),指令(作为源代码)和第一个参数。换一种说法: i=777 j=333 log(i) //outputs: "log(i) 777" log(i+j+1) //outputs: "log(i+j+1) 1111" 出于所有实际目的,输出i: 777就足够了,但是在某些语言中,有非常特定的反射库可以解决这个问题,因此应该输出整个指令。 灵感 这样做的灵感来自于我和另一个程序员,讨论的是它经常令人讨厌(使用不良的调试器),您编写诸如之类的东西console.log("i:", i),接下来我们制作了一个(非常疯狂的)javascript(仅节点)解决方案(它输出i: 777而不是整个代码行)源代码)的长度令人惊讶,它使我想起了代码高尔夫,让我想知道其他语言(尤其是代码高尔夫)的性能要好得多。 奖金 -10%:无文件读取(超出编译器) PS。这是我的第一个“问题”,请随时指出我犯的任何错误。
16 code-golf 

2
Ascii艺术饼图
您的目标是输出ASCII艺术饼图。这是代码高尔夫,所以最短的程序(计算源代码的字节,而不是字符)获胜。 不允许使用任何外部软件或API。仅每种语言的母语。 圆的起始角度和方向(顺时针/逆时针)并不重要。输出可能看起来是椭圆形的,因为字符的高度始终大于其宽度。 “背景”(饼图的左侧或右侧的字符)必须为空格。 作为输入,您有三个变量(请发布代码以对其进行初始化。这些变量的初始化不计入分数): k:字符数组。每个字符都是饼图上必须使用的字符 v:浮点数数组。这是每个字符的百分比。的长度v等于的长度k。它的元素总和始终为1.0 r :整数&gt; 1.这是饼图的半径。 奖励:如果您可以输出不完整的饼(如果),则减去分数的20%。(∑| v |我= 1v一世)&lt; 1(∑一世=1个|v|v一世)&lt;1个(\sum_{i=1}^{|v|} v_i)<1

18
匿名命名-有点
编辑:随机蒙版会有-20的奖励 告密者和您好,秘密知识的载体。 我是通过邮寄方式接受采访的,我当然不能说完整的具体姓名。但是,由于我想以一种不太明显的方式进行披露,因此需要您的帮助。 我将以以下形式提供这些名称: “ evil_company_that_makes_me_shiver” 但我当然不想完全说明。您为我和整个世界提供帮助的任务是,您提供一个不错的程序,将上述内容转化为 "ev**************************" 要么 "**il************************" 甚至 "****_c**********************" 我想你明白了。但是有一个缺陷:我想完全公开名称,所以我需要将出现的次数和单词本身传递给脚本,它会一点一点地公开字母。一个例子可能是 ~$ ./whistle NSA 3 &gt; "N**" &gt; "**A" &gt; "*S*" 要么 ~$ ./whistle nuclear 3 &gt; "nu*****" &gt; "***lea*" &gt; "**c***r" 要么 ~$ ./whistle nuclear 2 &gt; "nuc****" &gt; "***lear" 希望您能对我有所帮助,并且我们知道大小很重要,因此最短的代码获胜。帮助使这个世界变得更美好!
16 code-golf 

3
国王+白鸦vs国王
这是另一场打得很好的国际象棋的结局。您是白人玩家,您仍然有一个菜鸟和您的国王。您的对手只剩下他的国王。 既然你是白人,轮到你了。创建一个程序来玩此国际象棋比赛。它的输出可以是一系列动作,gif动画,ASCII艺术或您喜欢的任何东西。 似乎很明显,但是我要明确指出:您必须赢得游戏(以有限的步数)。总是有可能从这个位置获胜。不要丢人。不要宽容。 您的程序可能会接受或可能不会接受人工输入的开始位置和每次黑棋操作(您可以放心地认为这是合法位置,即国王之间没有碰触)。如果不是这样,那么黑王的随机起始位置和随机移动就足够了。 得分了 您的分数将是代码长度+奖金的长度。允许使用任何语言,最低分获胜。 奖金 -50(如果您的程序允许人类定义的起始位置和随机的起始位置)。人们可以通过stdin,文件,GUI来输入... -100如果您的程序允许人类和随机玩家同时移动黑王 +12345,如果您依靠外部象棋求解器或内置象棋库 祝好运! 更新! 附加规则:比赛必须进行直到比赛结束。布莱克不会辞职,不会跳到棋盘外面,也不会被外星人绑架。 暗示 您可能会在Chess.se上从此问题获得帮助。
16 code-golf  chess 

17
计算小费
您和一个朋友走进酒吧。酒保对您很好,因此您决定给他小费。由于没有内置计算器,因此您拔出可信赖的袖珍计算机并编写一个快速程序即可为您计算小费。可是等等!您的操作员键已损坏!您的任务是为任何给定的输入量计算20%的小费。测试输入将采用xx.xx的形式,例如20.96。规则如下: 在数学形式运算符中不使用以下内容:(+ - * / %感谢Wally West) 不使用内置的百分比函数或API 不能访问网络 不使用eval或类似 没有Windows计算器(是的,以前人们已经回答过) 没有内置的提示功能(不是任何一种语言都可以) 输出应四舍五入到小数点后两位。 分数基于字节长度。 如果您的程序可以接受任何小费金额,则为-20%。金额输入将以xx的形式给出,例如35而不是0.35

7
小数点表示的期间
编写一个函数,该函数采用单个正整数n并返回小数表示形式的周期1 / n。 测试用例: 1 -&gt; 1 # 1/1 = 1.0000...... = 1._0 2 -&gt; 1 # 1/2 = 0.5000...... = 0.5_0 3 -&gt; 1 # 1/3 = 0.3333...... = 0._3 7 -&gt; 6 # 1/7 = 0.14285714.. = 0._142857 13 -&gt; 6 14 -&gt; 6 123 -&gt; 5 345 …

27
从基数10转换为基数2,无需内置基数转换
背景: 您已获得分配,可以将基数10的数字转换为基数2,而不使用任何预制的基数转换功能。您也不能使用任何导入的库。 问题: 将输入字符串从10进制(十进制)转换为2进制(二进制)。您不得使用任何预制的基本转换代码/函数/方法或导入的库。由于这是代码高尔夫,因此以字节为单位的最短答案将获胜。 输入范围为-32768至32767(在代码中包括符号字节处理)
16 code-golf  number 

6
打高尔夫球的技巧在Perl 6
您在Perl 6中打高尔夫球有哪些一般提示?我正在寻找可以应用于编码高尔夫问题的想法,这些想法至少在某些方面是Perl 6特有的(例如,“删除评论”不是答案)。请为每个答案发布一个提示。 请注意,Perl 6不是Perl 5,因此此问题不是重复的。有关Perl 5高尔夫的大多数技巧只是不适用于Perl 6。
16 code-golf  tips 

30
在没有RegExps的情况下将字符串拆分为非数字的最短程序
编辑:如果您正在使用Lisp,我在计数字节的底部给出了一些准则。 目标:做最短的函数,将一个字符串拆分为非数字,并返回每个字符串中仅包含数字的数组,而无需使用任何正则表达式。每个字符串中应包含前导零。 当前排名(按类别划分): C / C ++ / C#/ Java: 68(C)...。 GolfScript / APL / J: 13(APL) 所有其他: 17(重击,使用tr),24(红宝石) 规则: (冗长的道歉) 格式必须是带有单个字符串参数的函数。如果需要正确返回数组,最多可以添加两个附加参数(例如,sh / csh / DOS Batch需要一个额外的变量引用才能返回等)。 主要函数声明不计算在内,也不会导入其他标准库。“ #include”,“ import”和“ using”不计算在内。其他一切都做。这确实包括#define和辅助函数。对困惑感到抱歉。将此作为有用的指南,以了解哪些内容不算(用C样式语法编写)//不计入总数,除非可以省略 //不明显,就像Java标准库的一半一样。 #include &lt;stdio.h&gt; import some.builtin.Class //不算,见上文 #define printf p //计入总数 / *任何其他预处理指令等。* / int i = 0; //计数 someFunction(); …
16 code-golf  string 

24
以不同的底数计算6 * 9
输出以下结果(以2到36为基础计算6 * 9的结果)。确保字母是大写的,并且乘法本身会输出到每一行。 6 * 9 = 110110 6 * 9 = 2000 6 * 9 = 312 6 * 9 = 204 6 * 9 = 130 6 * 9 = 105 6 * 9 = 66 6 * 9 = 60 6 * 9 = 54 6 * …

9
门户迷宫最短路径
您的目标是编写一个程序,使用0,1和创建一个随机的10x10映射,并2假定从左上到右下的最短路径: 0代表草地:任何人都可以在上面行走; 1代表一堵墙:您不能穿过它; 2代表门户:输入门户时,您可以移至地图中的任何其他门户。 眼镜: 左上角元素和右下角元素必须为0; 创建随机映射时,每个字段应有60%的机会成为0; 30%的机会成为1; 10%的机会成为2; 您可以在任何相邻字段(甚至对角线字段)中移动; 您的程序应输出地图和最短路径的步数; 如果没有通向右下字段的有效路径,则您的程序应仅输出地图; 您可以使用任何您想使用的资源; 最短的代码获胜。 计算步骤: 步骤是实际运动;每次更改字段时,都会增加计数器。 输出: 0000100200 0100100010 1000000111 0002001000 1111100020 0001111111 0001001000 0020001111 1100110000 0000020100 9

28
移点
您的程序必须打印出许多空格,后跟一个点和一个换行符。空格数是点的x位置,定义为0 &lt;x &lt;30 每条新线都是转弯。您的程序运行30转。您的程序从一个随机的x位置开始,并且每转一圈都会将该位置随机向左或向右移动1,同时保持在定义的区域内。您的圆点每转一圈必须将其位置更改1。 您的分数是字符数。如果每个印刷行都恰好由30个字符(和换行符)组成,则您将获得10分的奖励积分。如果您的程序趋向于停留在定义区域的中间,那么您将获得50分的奖励积分。 编辑: 50奖金点旨在将您的点拉到中间。例如,如果您的点在x = 20处,并且有66%的机会向左移动,而33%的机会向右移动,则适用此规则。这必须与起点无关,并且只能通过动态更改左/右百分比值来实现。 不允许任何输入,输出必须在执行控制台上! 为了更好地理解,这是一个可读的Java示例,得分为723: public class DotJumper{ public static void main(String[] args){ int i = (int)(Math.random()*30); int max = 29; int step = 1; int count = 30; while(count&gt;0){ if(i&lt;=1){ i+=step; }else if(i&gt;=max){ i-=step; }else{ if(Math.random() &gt; 0.5){ i+=step; }else{ i-=step; } } …
16 code-golf 

3
英文数字计算器
挑战 编写一个计算器,该计算器以口头形式输入(可能说一个方程式),然后以口头形式输出(因为可能说一个数字)。 规则 计算器应该能够: 加,减,乘和除 处理负一百万到一百万之间的操作数 处理负十亿到十亿之间的产出 处理其输入中的小数点并将其正确放置在其输出中 将小数输出处理到百分之一百,在需要的地方四舍五入 所有产生分数结果的运算都应四舍五入到最接近的百分之一(与输出格式相同)。 当输入将导致程序由于格式不正确或被0除而失败时,报告为输出“ E”(错误)。基本上,该程序不应因输入错误而崩溃,因为那将是一个糟糕的计算器。 允许使用计算器,但当操作数或输出超出范围时,不需要报告错误。这是为了简化问题,但是,如果您不同意我的意见,请随时制作一个能够正确处理更大的操作数和输出而不会报告错误的计算器。 如果操作的操作数超出为操作数定义的范围,则输出“ E”。 如果输出超出为输出描述的范围,则输出“ E” 程序如何处理区分大小写和空格的问题,由高尔夫球手决定,这取决于英国或美国英语的选择。1 通过使用已经实现了上述功能的语言或库来绕过计算器实现的程序将无资格获得胜利。 优胜者 字符数最少的程序获胜。 例子 输入: 2加2 输出: 4 输入:二十一点五减一五 输出:二十 输入:一减二 输出:负一 输入:五乘五 输出:二十五 输入:二十五除以五 输出:五 输入:二加二减五乘以五除以负零点五 输出:十 投入一百万乘一千 产出:十亿 输入:一百万乘一千加一 输出: E 输入: 200万加一百万 输出: E 输入:一百万加一百万加一百万 输出: E
16 code-golf 

10
模拟两个生物之间的战斗
欢迎,勇敢的代码高尔夫球手!今天,您将站在妖精和精灵之间的激烈战斗中! goblin attacks elf! elf dodges! elf attacks goblin! elf hits goblin for 13 damage! goblin has 37 health left. goblin attacks elf! goblin hits elf for 1 damage! elf has 49 health left. elf attacks goblin! elf hits goblin for 19 damage! goblin has 18 health left. goblin attacks …


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.