Questions tagged «code-golf»

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

8
创建一个罗马数字计算器
创建一个用于罗马数字的基本计算器。 要求 支持+,-,*,/ 输入和输出应该期望只有一个每个符号减法前缀(即3不能IIV因为有两个I年代以前V) 处理的在最小支持现代标准约定的输入和输出必须减法原则,其中只有十的权力是由较大的数字相减(例如I,X,C需要减法而不是V,L,D)和减法不会从一些做多减法器的10倍(例如,IX必须支持但IC不是必需的)。 输入和输出应按值的顺序从左到右,从最大值开始(即19 = XIXnot IXX,10大于9) 从左到右,没有操作员优先级,就好像您在使用手持计算器一样。 支持1-4999之间的整个正数输入/输出(不需要V̅) 没有可以为您进行罗马数字转换的库 由您决定 区分大小写 输入上有空格或没有空格 如果获得十进制输出会发生什么。截断,无答案,错误等。 对您无法处理的输出该怎么办。负数或数字要大。 是否支持比最低要求更宽松地使用减法原理。 额外信用 -50-最多可处理99999。符号中必须包含外包装 样本输入/输出 XIX + LXXX (19+80) XCIX XCIX + I / L * D + IV (99+1/50*500+4) MIV 最短的代码获胜。

9
写一个头脑翻译
在任何编程或脚本语言X,写一个程序,需要一个有效的brainfuck源代码从标准输入和输出,标准输出,程序的源代码,写的语言X,这将输出同样的事情作为brainfuck程序会做。 您的程序必须适用于任何有效的Brainfuck程序,包括空文件。 您的分数将等于源代码的字节数,加上给定以下输入的输出字节数: +++++ [-] +++++ +++++ [ > +++++ ++ > ++ +++ ++++ + > +++ <<< - ] > ++ . H > + . e ++ +++ ++. l . l +++ . o > ++ . space < +++++ +++ . w ----- --- . …

12
我认识你,但你不认识我
您的任务是编写两个程序。程序A不得在所有输入上打印任何内容,除非输入了程序B,否则应打印1。程序B必须1在所有输入上打印出来,但输入程序A时除外,在这种情况下,它不应打印任何内容。 得分: +1对于两个程序中的每个字符。 最低分获胜。
18 code-golf  quine 

10
愚蠢的限制和沙漠
因此,您坐在办公桌前打高尔夫球,计算一个程序来计算pi的前20位,然后老板走了过来,把苹果IIe扔到了窗外。您现在正在处理一个新项目,并且此计算机尚不具有任何文本功能。没有。没有字体。没有。 现在,让我们结束该程序。计算并显示 pi的前20个字符,而不使用不属于程序的任何字体。您的输出可以显示为图像文件或以标准格式显示为图像文件(jpeg,png,gif,svg(只要不使用任何字符),bmp,xpm)。您可以使用任何一种语言,但不能使用该语言的字体功能,文本显示或类似功能。 小奖金(10个字符),如果它可以在Lisa上使用。 编辑:对于那些谁不知道我的灵感是第一台Mac,标题是一个双关语。@Sukminder非常赞叹,其动画gif很酷。如果有更好的答案,比赛还没有结束。

30
随机票证代码生成器
一家彩票公司希望生成一个长度为10个字符的随机彩票号码。 用任何语言编写代码以创建这样的数字,其中每个数字仅出现一次,例如,9354716208在该数字中,从0到9的所有整数都仅出现一次。该数字应为随机数。 生成的号码应显示在屏幕上。 它必须能够生成所有允许字符的所有排列。 要求代码尽可能小(以字节为单位)。
18 code-golf 

10
八度高尔夫打球技巧
您在Octave打高尔夫球有哪些一般提示?我正在寻找可以应用于编码高尔夫问题的想法,这些想法至少在某种程度上是特定于Octave的(例如,“删除评论”不是答案)。请为每个答案发布一个提示。
18 code-golf  tips  octave 

1
打个双奎因让您更美好!
女士们,先生们,晚上好。 今晚-我们面临代码挑战。比赛的定义不是分数(小行星),而是您是否可以完成比赛(塞尔达传说)。为了比较起见,字节的数量(呃...但是你说...)。 您面临的挑战是编写一个可以同时在WhiteSpace和您选择的任何其他语言中编译的quine 。这两个Quines必须具有绝对相同的输出(作为Quine与源代码绝对相同)。quine的长度必须大于3个字节。 您的分数是源代码的大小(以字节为单位)。 鉴于此挑战涉及WhiteSpace,请逃避您的答案,以使它们清晰可见-最好采用C风格。您的分数是原始来源(以字节为单位),而不是转义版本。 祝好运。

25
大写字符串
给定一个字符串,将其大写。大写的意思是conTeNT-lENgth改变Content-Length。在示例中,我显示了带有2个单词的字符串-作为单词边界。但是,我希望您为包含以单个字符分隔的任意多个单词的边界的字符串编写代码。该边界可能会在整个字符串上变化。 条件 使用regular expressions是不允许的。 句子(字符串)中可以有任意数量的单词。 每个单词将由English大小写字母组成[a-zA-Z]。 句子中的不同单词将由单个字符分隔。该角色将仅是任何一个-,.,<space-character>,/,&,#。您可以放心地假设该句子除提及的字符外将不包含任何其他字符。 字边界应保留在输出中。 最短的代码胜出。 例如你的程序应该输出Begin/With.Type&Content的BeGin/wITH.tyPE&conTeNt。 Some test cases: "aGeNT ACcEpT/LEngTh-tYPe USeR raNgE.TyPe" "type&AgeNt/CC/COnteNt lEnGth#acCePT/AgeNt.RAnGe-Cc/contEnt/cODe" "cc/rEspoNCe.lEngtH#tYpE-witH&UsEr/bEgIN&uSer.AGEnT&begIn/aCCEPt/Cc" "lENgTH#USeR.tYpE/BeGiN&LENGth tYpe/ACCEpt#rANge/codE&AnD-ACCepT/ConTenT" "contENT/ACcEpT" "BeGin/wITH.tyPE&conTeNt" "Code.cc#User.lenGTh-USer-AND&tyPE TypE&leNgtH.tYPe usER.UseR&with" "RaNgE&COnTeNT WITh CoNTENT-TypE tyPe" "BEgin COdE#uSeR#aGeNt.USeR" "TypE LENGth"
18 code-golf  string 

8
通过四舍五入节省金钱
在加拿大,一分钱不再流通。现金付款四舍五入至最接近的5美分。 可以通过分割购买来节省金钱。例如,两个$ 1.02的商品的价格为$ 2.04,四舍五入为$ 2.05,但是在单独购买的商品中,每个价格四舍五入为$ 1.00,总计为$ 2.00。但是,当以1.03美元的价格购买两件商品时,最好一次购买。 另一种省钱的方法是,在四舍五入不利的情况下使用信用卡,因为未对信用卡付款进行四舍五入。如果我们要两个1.04美元的商品,则无论我们如何分割购买,总价格将合计为2.10美元。因此,我们应该使用信用卡支付这些物品。 编写一个函数或程序,该函数或程序接受以整数形式(以美分为单位)的商品价格列表,并输出可以通过一系列购买(可以现金或信用方式购买)实现的那些商品的最低总价(以美分)。 最短的代码胜出。 测试用例 [] : 0 [48] : 48 [92, 20] : 110 [47, 56, 45] : 145 [55, 6, 98, 69] : 225 [6, 39, 85, 84, 7] : 218 [95, 14, 28, 49, 41, 39] : 263 [92, 6, 28, …
18 code-golf  number 

21
Javascript:创建一个1x的10x10数组
显然,使用单独的函数和库将面临艰巨的挑战,因此不允许使用它们。 您的代码必须符合ECMAscript规范(任何规范都可以),因此没有针对浏览器的答案。 实例化后,该数组必须可访问。 我有一个暂时不回答的答案。 注意:这项挑战是特定于javascript的,因为众所周知,使用javascript制作多维数组很不方便。

1
在井字游戏中迷路
编写一个将播放Misère井字游戏的程序。也就是说,目标是迫使对手连续三局。 在标准输入上接受“ X”或“ O”(字母,不是零),以确定程序将以哪一侧播放。然后在回合中输出个位数,直到对手结束,直到对手结束(X总是先行)。确定赢家后,输出X或O代表谁,或D代表平局。例如,如果O连续获得3,则X获胜。 假设木板编号如下: 0|1|2 ----- 3|4|5 ----- 6|7|8 理想情况下,解决方案将是最佳的,并且永远不会失败。像井字游戏一样,完美的比赛总是会导致平局。如果遵守上述协议,我可以针对各种可能的策略自动测试提交内容。 优胜者是最短的代码。如果它从同样好的动作中随机选择,则会获得加分,使它变得更加不可预测。

4
明星编程!
挑战 编写一个可以打印星星的程序或函数!该程序将通过标准输入接收两个参数:恒星的大小和恒星的点数。星形可以是0到10之间的任何大小,并且可以具有3、4或5个点。输入参数用逗号分隔,例如:5,3表示5星3点的大小。星星由星号组成* 考虑到该程序将仅接收有效输入。 打印件必须正确间隔,以便在输出中看到漂亮的星星! 参数说明 点数 是从中央星号开始计数的武器数量。 3分: * * * * * * * 它们由一个垂直臂和两个对角臂组成。斜臂之间的距离是2*size-1 4分星星 * * * * * * * * * 它们的形式为X,由两条对角线组成。行之间的分隔是2*(size-1)+1 5分星星 * * * * * * * * * * * 它们由垂直线和水平线组成。水平线中的每个星号均以一个空格分隔。他们也有两条对角线,它们之间2*(size-2)+1 尺寸 大小是从中央星号(包括中心星号)开始算起的每个星臂的星号数。 1星大小由一个星号组成 * 大小2星的例子 3分 * * * * …

4
将Fractran转换为Brainfuck
背景 Fractran是John Conway发明的深奥的图灵完备的编程语言。Fractran程序由分数的有序列表组成。该程序以一个整数作为输入开始。程序的每次迭代,都会在列表中搜索第一个分数,以便将该数字乘以该分数会生成另一个整数。然后从列表的开头开始,用新的编号重复此过程。当列表中没有可以与数字相乘的分数时,程序将终止并给出数字作为输出。 Fractran具有图灵完备性的原因是因为它模拟了套准机。数字的素数分解存储了寄存器的内容,而除法和乘法是有条件地从寄存器中进行加减的一种方法。我建议阅读Wikipedia文章(链接到上面)。 挑战 您的任务是编写尽可能最短的程序,该程序可以将来自STDIN的有效Fractran程序作为其唯一输入,并向模拟Fractran程序的STDOUT生成有效的BF程序。使用BF模拟Fractran程序的方式有两种。 注意:您的答案不是BF程序。您的答案是从任何给定的Fractran程序生成BF程序的代码。目的是使BF程序与Fractran程序等效。(从技术上讲,您可以参加高炉比赛,但这很难) 选项1 您的程序应输出执行以下操作的BF程序: 从STDIN中以相应的ASCII字符的形式获取正好1个数字(由于BF输入的工作方式),这是Fractran程序的输入。 以相应的ASCII字符的形式将精确的1数字打印到STDOUT,这是Fractran程序的输出。 此选项旨在表示Fractran虚拟机的确切输入和输出。 选项2 程序生成的BF代码应执行以下操作: 通过对已经编码在内存中的数字进行质因子分解来进行输入(在运行程序之前)。如果输入为28(2 * 2 * 7),则第二个单元格中的值为2,第七个单元格中的值为1(指针从单元格0开始)。所有其他单元将为零。 程序终止时,通过将输出的质数分解编码在内存中来给出输出。如果输出为10,则像元2和5中的每个像元都必须为1。所有其他素数像元必须为零。其他单元格的内容无关紧要。 此选项表示Fractran语言背后的计算模型。 规则与要求 输入(程序顶部)将是STDIN上的分数列表。每行将有一个小数,在分子和分母之间带有逗号。空行表示输入的结尾。分数将始终减少到最低的条件。 程序的输出应该是单行有效的BF程序,输出到STDOUT。该程序应该能够根据两个选项之一模拟该特定的Fractran程序。对于任何输入,生成的BF程序应能够产生与Fractran程序相同的输出。 您必须说明选择的选项。 您可以选择BF存储器和磁带上的边界以及它们是否在包装 代码高尔夫。同样,输出的BF程序的大小无关紧要,仅执行转换的程序的大小无关紧要。 程序只能由可打印的ASCII组成 如果我在任何地方都模棱两可,请不要犹豫。这是一个非常复杂的挑战,难以描述。 另外,请为以下输入发布程序生成的BF代码,以提供一种简便的方法来检查程序是否正常运行: 33,20 5,11 13,10 1,5 2,3 10,7 7,2 此程序在数字的二进制扩展中计算1的数量。但是,输入和输出的格式很奇怪(与所有Fractran程序一样)。输入的形式为2 ^ A,而输出的形式为13 ^ B。

1
我曾经像您一样解决代码难题,但后来我却屈指可数
用箭头击中膝盖似乎是目前选择的伤害。因此,我提出以下高尔夫挑战。 您有一个冒险家,看起来像这样: O /|\ / | \ | | / \ / \ 给定一个文本文件,其中包含一个弓箭(绘制为}符号),一组墙壁(绘制为#符号)和一个冒险家,编写最小的代码,计算出应该发射箭头以击中的角度和初始速度他在膝盖上。 假设以下内容: 文件中的每个字符为0.5 x 0.5米。 从的中心发射箭头},即偏移量为0.25m, 0.25m 重力是 10ms^-2 箭重 0.1kg 箭头是一个点,即仅当箭头的坐标进入一个块时才发生碰撞。 最大初始速度为 50m/s 角度可能在0(直上)和180(直下)之间 击中冒险者腿部的任何部分都被认为是膝盖的重物。 一堵墙(#字符)占据整个0.5mx 0.5m的块。 箭头可以在文件的“顶部”上移动,但是没有什么可以阻止输入以#字符的上限开头。 您不能用箭头穿透墙壁。 不允许击中冒险者的任何其他部分! 如果不可能用膝盖打他,应该显示一个错误。 输入示例: # } O # /|\ / | \ # | # | / \ …

20
查找所有字符都相同的列
我在SO上遇到了这个问题,并认为这将是一个不错的高尔夫挑战。所以这里是: 挑战: 编写一个程序,该程序读取一系列字符串,每行一个,并输出每个字符串具有相同字符的所有位置的列表。 输入和输出: 输入由一行或多行可打印的非空白ASCII字符组成,每行后跟一个换行符。您可以假定所有输入线都具有相同的长度。换行符不应被视为输入的一部分(即,您不应将其作为匹配字符输出)。 输入示例(从SO问题中偷偷偷走的): abcdefg avcddeg acbdeeg 读取输入后,程序应打印每个匹配列的位置及其包含的字符。(如果您的程序可以尽早确定没有匹配的列,则可以但不必停止读取其他输入。)允许使用任何合理的输出格式;特别是,您可以对位置使用基于0或基于1的索引。 上述输入的示例输出(使用基于0的索引): 0: a 3: d 6: g 得分: 这是代码高尔夫,所以最短的答案会获胜。如果出现平局,则可能会授予部分平局决胜字符以提供其他功能: −½个字符,用于正确处理长度不等的输入行。(输出中不应包含最短输入行的末尾位置。) −¼个字符,用于正确处理由任意UTF-8编码的Unicode字符组成的输入。 为了获得启发,您可能会在SO问题上找到一些解决方案(见上文)。 说明: 简单地串联的位置和角色,如0a3d6g,并不能算作“合理的输出”。您应该在输出的每个元素之间提供某种分隔符(例如空格),以便可以对其进行明确的解析。 输入将在标准输入流(stdin)上提供,或使用您选择的语言最自然的任何文本文件输入机制提供。(如果你选择的语言不具有对文件输入一个自然机制,尽一切似乎在精神上最接近的一次。) 当没有更多数据要读取时(即发生文件结束条件时),输入结束。如果需要,可以要求输入以空行终止(显然,您不应将其视为输入的一部分)。如果这样做,请在回答中提及它,以便其他人可以提供正确的测试输入。 每行输入,包括最后一行,都以换行符结尾。您的答案不得将此换行符报告为匹配列。(如果您的解决方案还可以处理最后一行不以换行符结尾的输入,那是很好的,但这不是必需的。)
18 code-golf 

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.