Questions tagged «code-golf»

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

10
Sundaram筛(用于查找质数)
挑战 实施Sundaram筛子查找下面的质数n。取一个输入整数,n并输出下面的质数n。您可以假设该值n始终小于或等于一百万。 筛 从从1到的整数列表开始n。 删除以下形式的所有数字i + j + 2ij: i并且j小于n。j始终大于或等于i,大于或等于1。 i + j + 2ij 小于或等于 n 将剩余数字乘以2,然后加1。 这将产生2小于的所有质数(除了应包含在输出中的质数)2n + 2。 这是用来在下面找到素数的筛子的动画202。 输出量 您的输出应该是每个素数≤ n(按升序排列),后跟换行符: 2 3 5 哪里n是5。 例子 > 10 2 3 5 7 > 30 2 3 5 7 11 13 17 19 23 29 输入用表示>。

5
金字塔计划
玛雅金字塔曾经(并且是)古代建筑的重要组成部分,通常用于宗教目的。 它们通常是台阶金字塔,但每个台阶都陡峭得无法攀登。牧师将通过替代楼梯爬到他们的顶上进行仪式。由于金字塔的高度,它们还被用作地标,有时甚至被用作高级官员的墓地。 挑战 编写一个程序,该程序可以根据用户要求打印出金字塔示意图(请参见下文)。 要求 输入两个以空格分隔的变量。 必须通过STDIN(或最接近的替代方法)接受输入。 输出必须通过STDOUT(或最接近的替代品)。 输入值 高度为任何正整数。这用作基本级别的宽度(以块为单位)。金字塔的每个后继级的宽度为n - 1其中n是前地板的宽度(在块)。 块大小将为1或任何奇数正整数≤(小于)10。 积木 给定的块大小确定每个单独的块的宽度(和高度)。本质上,i^2可见框内的空格i是块大小。 1x1块如下所示: +++ | | +++ 虽然5x5块看起来像这样: +++++++ | | | | | | | | | | +++++++ 水平相邻块 水平并排的砌块必须将其中间墙合并为一个。 您必须具备以下条件: +++++ | | | +++++ 代替这样的事情: ++++++ | || | ++++++ 垂直相邻的方块(-5%奖金) 垂直并排的砖块有一个特殊的例外:中墙可以合并为一个。 因此,而不是像这样的1x1块: …

9
真相表:您曾祖父的计算机
如果您还记得上学的那段时间,您可能还记得有关Truth Tables的学习。它们看起来很无聊,但是它们是逻辑和(所有人都会争辩)所有计算的基础... 问题 您选择接受的任务是编写可以在给定输入的情况下输出真值表的程序,函数或代码小部件。 输入值 输入将是一个字符串(如数据结构),其中包含将真值表放入其中的逻辑语句。例如: p ∧ q 这意味着p and q(逻辑结合),并将输出: p q p ∧ q T T T T F F F T F F F F 注意间距:列的项目在标题的中心 性格 通过字符而不是字节计分 逻辑比较字符是特殊的,并不总是看起来像。使用以下字符: 逻辑连接(AND):∧U + 2227 逻辑分离(OR):∨U + 2228 逻辑否定(NOT)~或¬U + 7e和U + ac 奖金 所有这些奖金都是可选的,但会降低您的分数。选择任何。 逻辑否定 逻辑否定是真值表中的一元运算符。它等效!于大多数基于C的语言。它使false=> true,反之亦然。用¬ 或 …

1
解决手风琴游戏
我最近碰到过手风琴纸牌游戏,几乎所有布局都可以解决,但是难以置信。你可以在这里玩。 规则 52张脸部卡以随机顺序正面朝上放置。 每回合,您用一张新卡替换一张卡,其中两张卡: 分享西服或号码,然后 的距离为1(相邻)或3(之间为两张卡)。 仅剩1张卡时赢得比赛。您可以假定每个输入都是可解的。更换的卡必须始终在更换的卡之前。 例 例如,请考虑以下布局: 2H,2S,1S,2D (H: Hearts, S: Spades, D: Diamonds) 这里有3种可能的动作: 将其替换为2H相邻的2S,这样我们最终得到2S,1S,2D 将其替换为2S相邻的1S,这样我们最终得到2H,1S,2D 更换2H用2D(以3的距离),所以我们结了2D,2S,1S 在这3个动作中,只有最后一个有获胜的可能(您先替换2D <- 2S,然后获胜2S <- 1S)。 输入输出 您的工作是编写手风琴求解器。您会收到一张纸牌列表,并且需要返回一个动作列表来解决游戏。 您以逗号分隔的字符串形式传递卡片列表,其中,每张卡片均以代表其数值的整数传递,然后以代表其西装的字符传递。 您必须以逗号分隔的字符串形式返回替换列表,其中每个替换均采用以下格式Card <- Card(遵循上述卡格式)。每对中的第一张卡是要更换的卡。 测试用例: 5H,1C,12S,9C,9H,2C,12C,11H,10C,13S,3D,8H,1H,12H,4S,1D,7H,1S,13D,13C,7D,12D,6H,10H,4H,8S,3H,5D,2D,11C,10S,7S,4C,2H,3C,11S,13H,3S,6C,6S,4D,11D,8D,8C,6D,5C,7C,5S,9D,10D,2S,9S 5H,9C,11H,7S,7D,12D,6H,10S,3H,4D,12C,2S,3C,5C,7H,6S,1H,8S,2H,11S,4C,10D,12H,9H,2D,4H,6C,13H,11C,2C,10H,8C,1S,11D,3S,12S,7C,5D,13S,8D,4S,6D,13C,3D,8H,13D,1D,9D,9S,1C,5S,10C 7H,11C,8C,7S,10D,13H,4S,10C,4D,2C,4H,13D,3C,2H,12C,6C,9H,4C,12H,11H,9S,5H,8S,13S,8H,6D,2S,5D,11D,10S,1H,2D,5C,1C,1S,5S,3H,6S,7C,11S,9C,6H,8D,12S,1D,13C,9D,12D,3D,7D,10H,3S 尽管这场比赛是一场代码竞赛,但我对省时的解决方案特别感兴趣,并有可能通过赏金来奖励巧妙的解决方案。即便如此,花费天文数字的解决方案仍然可以接受(我建议您在较小的纸牌上进行测试,例如16张卡,4套西装的纸牌)。

3
这篇文章有多大胆?
前言 在Stack Exchange降价中,我们使用**将文本加粗。例如,此降价: The **quick brown fox jumps over the lazy** dog. 呈现为: 在敏捷的棕色狐狸跳过懒惰的狗。 当然,我们也使用**来关闭粗体。因此,答案将更少。例如: The **quick** brown fox jumps over the **lazy** dog. 呈现为: 在快速的棕色狐狸跳过懒惰的狗。 但是,如果未关闭粗体,则将其呈现为非粗体: The **quick brown fox jumps over the lazy dog. 呈现为: 敏捷的棕色狐狸跳过了懒狗。 如果文本带有单个反斜杠\,则粗体无效,或者: The \**quick brown fox jumps over the lazy dog.** 呈现为: 敏捷的棕色狐狸跳过了懒狗。** …
13 code-golf  string 

1
我可以用砖块,楼板和楼梯做成这种形状吗?
考虑一个矩形二维网格,其中每个单元格可以为空(.)或完整(0)。 例如 ..00.... 0000.... .00000.. 000...00 ..000000 000.00.. 网格被认为是无限的,所描绘区域之外的所有像元都是空的。 目标是使用一组7个形状各异的砖块覆盖填充的空间并使空白空间保持开放,每个砖块占用4个网格(2×2)。 这些是7块砖: 方块-1个变体 11 11 平板-2个款式 .. 22 33 .. 楼梯-4个款式 .4 44 5. 55 66 .6 77 7. 这些积木必须始终与其单元格是输入网格的单元格的宽度和高度的两倍的网格对齐。每块积木只能占据该较大网格的一个单元,但是较小网格可以在较大网格下方平移(上移,下移,左移,右移),以提供更多用于查找封面的选项。网格和单个砖块均不得旋转。 因此,覆盖(又称求解)上面示例的一种方法是这样的: ..11.... 2211.... .47733.. 447...22 ..771133 227.11.. (相同的相邻砖块仍然可能引起歧义,但是仔细识别较大的网格可以解决这一问题。) 一个无效的解决方案 000000 000000 是 566774 556744 因为砖块并不都与较大的网格对齐,也不是仅占据其中一个单元。 一个有效的解决方案是连续3个块: 111111 111111 另一个有效的解决方案涉及6个平板: ...... 222222 …

7
前缀树遍历
编写一个程序(通过标准输入或命令行)以递归形式接收字符串 PREFIX[SUFFIXES] 哪里 PREFIX 可以是任何小写字母(az)字符串,包括空字符串,并且 SUFFIXES可以是递归形式PREFIX[SUFFIXES]连接在一起的任何字符串序列,包括空序列。 通过递归求值每个后缀中的字符串列表并将它们附加到前缀,从输入生成一个小写字母字符串列表。输出以任何顺序输出此列表中的字符串,每行一个(加上可选的尾随换行符)。 例 如果输入是 cat[s[up[][]][]ch[e[r[]s[]]]a[maran[]comb[]pult[[]ing[]]]] 那么前缀是cat和和后缀s[up[][]],[], ch[e[r[]s[]]],和a[maran[]comb[]pult[[]ing[]]]。每个后缀都有自己的前缀和后缀。 输出将是任意顺序的这9个字 catsup cats cat catcher catches catamaran catacomb catapult catapulting 因为输入对这棵树进行了编码 通过从根到叶遍历树可以形成9个输出字中的每一个。 笔记 请记住,前缀可能是空字符串,所以类似 [donut[][]cruller[]] 是有效输入,其输出将是(任何顺序) donut cruller 空行用于第二个后缀匹配的空字符串。 后缀序列也可以为空,因此平凡的输入大小写 [] 有一个空行作为其输出: 您可以假设输入将仅产生唯一的输出字。 例如hat[s[]ter[]s[]]将是无效的输入,因为它hats被编码了两次。 同样,[[][]]无效,因为空字符串被编码两次。 您可能不会假定输入尽可能短或压缩。 例如,'e'上面主要示例中的'ch'节点可以与该节点组合,但这并不意味着输入无效。 同样,[[[[[]]]]]尽管仅对空字符串进行了次优编码,但仍然有效。 代替程序,您可以编写一个函数,该函数将输入字符串作为参数并正常打印输出或将其作为字符串或列表返回。 以字节为单位的最短代码获胜。

4
使用7段显示器显示单词
我的第一个编程拼图和代码高尔夫球是“ 七斜线显示器”。这是我的第一个挑战,也是基于7段显示的。 除了数字以外,我经常考虑使用简单的7段显示器可以显示哪种字母。原来可以显示很多字母。实际上,除字母K,M,V,W,X之外的所有字母都可以使用单个7段显示器显示。这是因为您可以显示字母的小写或大写。例如 “ abcdef”可以显示为 _ _ _ _ !_!!_ ! _!!_ !_ ! !!_!!_ !_!!_ ! 请注意,每个字符都是由!和组成的3x3矩阵_。 当然,可以使用7段显示器来显示数字和符号: _ _ _ _ _ _ _ ! _ !_ !_ ! _! !!_ !_!! !_!!_! ! _!!_ !_! !_! ! _!! !_ ! ! _! 某些字母可以同时大小写: _ _ ! _ …

21
寻找文字的价值!
介绍 在[在这里插入很酷的名字]的土地上,人们不花钱买东西,因为每个人都对纸张过敏。他们用言语付钱给彼此!那怎么了 好吧,他们给每个字母数字值: a=1,b=2,c=3,etc. (以及一些其他特殊规则,将在以后进行描述) 在这个挑战中,您的任务是计算句子的值。 挑战 您将输入一个句子。您可能会假设输入内容没有换行符或尾随空格。挑战将是使用以下规则来计算句子的值: a=1,b=2,c=3,etc. 大写字母的价值是对应的小写字母的1.5倍 H=h*1.5 所以,这个词 cab 值得 c+a+b = 3+1+2 = 6 但是Cab带有大写字母c 的单词值得。(c*1.5)+a+b = 4.5+1+2 = 7.5 因此,如果您的程序输入为“ Cab”,则程序将输出7.5 所有非字母字符均值1。 这是代码高尔夫球,因此最短答案以字节为单位。祝好运!
13 code-golf  string 

13
画出合计为100的组合
您有一个在每个角都有一个数字的框: 1|2 --- 3|4 如果我们将数字从左到右连接起来,我们得到12和34。如果我们将数字从上到下连接起来,我们得到13和24。如果我们将所有这些数字相加,我们得到12 + 34 + 13 + 24 = 83。 挑战 编写一个程序以打印所有这样的框,其中上述总和等于100。 假设每个角包含1到9之间的一个数字,则有9种组合:1157、1247、1337、1427、1517、2138、2228、2318和3119。(请注意,如果包含0,则有25种组合,但是我们不适合这个挑战。) 请注意,示例1234不起作用,因为12 + 34 + 13 + 24不等于100。 输入值 没有 输出量 答案框的格式如下: A|B --- C|D 输出应打印到STDOUT或最接近的替代品。 规则 AB + CD + AC + BD = 100 每个角将仅包含正整数1-9。 排除0。 数字可以使用多次。 您需要如上所述绘制方框。(A|B\n---\nC|D\n) 您需要输出所有有效答案。 附加的尾随换行符也可以。 code-golf,因此以字节为单位的最短代码获胜。 标准漏洞和条款和条件适用。 这是我的首次提交,因此如果需要澄清任何内容,请告诉我。
13 code-golf 

30
我的波浪灯
在移动时,我摔坏了灯。现在,我需要一个新的。为我做灯是您的工作!我不确定我想要多大的尺寸,尽管我知道我想要一个弯曲的尺寸。 您的程序/功能必须输入数字,并打印出带有那么多弯头/凸点的灯。 例子: 输入:2 输出: /-\ () () / __ \ 输入:3 输出: /-\ () () () / __ \ 输入:5 输出: /-\ () () () () () / __ \ 规则: 0和负数无关紧要 要使灯具有更多的多样性(这一挑战),您必须更改灯罩。 它们必须为4个字符宽和1个字符高。 它们可以是任何形状,包括非灯罩形状。 它们不能包含空格。 底座必须保持不变。 您必须在灯罩上显示示例输入和输出。 最短的代码胜出!

22
从1到整数…在二进制中计数
介绍: 我记得,当我还是个孩子的时候,我会得到一个计算器并继续按下+按钮,看看我能数多少。现在,我喜欢编程,并且正在为iOS开发。 计数是人类和计算机都要做的一项基本技能。没有它,其余的数学将无法完成。只需从头开始1并重复添加1即可完成。 挑战: 这只是一个简单的挑战。我希望您的程序执行的工作是从打印1到打印的所有Integer内容。但是,由于十进制计数有点无聊,因此我会在其中加点麻烦: 计数不能以10为底,它必须以二进制形式显示计数。 因此,使用32位整数计算为5时,将如下所示: 0000 0000 0000 0000 0000 0000 0000 0001 ..... 1 0000 0000 0000 0000 0000 0000 0000 0010 ..... 2 0000 0000 0000 0000 0000 0000 0000 0011 ..... 3 0000 0000 0000 0000 0000 0000 0000 0100 ..... 4 0000 0000 0000 …
13 code-golf 

3
分析超支洗牌
Rod正在主持两个玩家George和Tim之间的纸牌游戏。目前,蒂姆正在洗牌。Rod怀疑Tim可能在作弊,因此他需要您的帮助来检查改组是否公平。 蒂姆(Tim)正在进行过度的洗牌:他从牌组的底部切出一堆纸牌,然后从牌堆的顶部切至卡牌的顶部,切开各个部分,然后重复该过程几次。 Rod眼神敏锐,可以确切地看到Tim每次切出多少张牌,但是他无法计算和跟踪Tim洗牌的速度。这就是您要进入的地方:Rod希望您编写一个程序或函数来获取详细的改组信息,并确定改组是公平的,微弱的还是技巧性的。 如果改组后,少于25对相邻纸牌保持相邻(以相同顺序),则改组是公平的,游戏可以继续进行。 如果至少有25对(但不是全部)对相邻纸牌保持相邻,则混洗很弱,Rod会在Tim的头上猛击,并要求他再混洗一些。 如果最后所有牌都保持在同一位置,那么蒂姆显然在作弊,罗德将用一条大鳟鱼击打他。 这是代码高尔夫球,所以最短的代码获胜。 输入: 在几行中,您将获得一系列介于0和52之间的数字(均为排他性数字),各行之间用空格隔开,其中每行代表一轮洗牌,其开始和结束时都是将所有牌堆在一起。 在每一行中,第一个数字是Tim从牌组底部切下的纸牌数,随后的每个数字是他从他的手掉到牌组顶部的纸牌数。如果一行中最后一个数字之后还剩下任何纸牌,则应假定Tim将其放在牌组的顶部。 输入保证有效。至少有一行数字,每行至少包含两个数字。每行上的第一个数字不少于同一行上所有其他数字的总和。尾随换行符是可选的,您可以假定输入有一个或没有输入。 输出: 如果随机播放正常,则程序应打印/返回“正常”;如果随机播放较弱,则打印/返回“弱”;如果Tim保持所有卡的顺序相同,则打印/返回“特技”。尾随换行符是可选的。 例: 假设套牌有52张牌,但是出于演示目的,我将使用10张牌的小套牌。 输入: 5 3 1 4 2 2 初始甲板,从顶部观察:0 1 2 3 4 5 6 7 8 9 5➜ 0 1 2 3 4(5 6 7 8 9手) 3➜ 5 6 7 0 1 2 3 …

7
高精度金属器件
背景 对于每个自然数(正整数),都定义了以著名的黄金均值开头的金属均值,并且每个均值是一个无理常数(其具有无限的非重复小数位数)。 对于自然数,金属平均值是二次方程的根 根源永远 但是金属平均值通常作为正数根。因此,对于此问题,它将定义为: 对于结果就是著名的黄金比例: 挑战 您的代码应采用2个输入:n和p (顺序一致并不重要) n是一个自然数,表示哪个金属均值 p是一个自然数,表示精度的小数位数 您的代码应将第n个金属平均值输出到p个小数位精度。 有效期 如果您的代码适用于从1到65,535的n和p值,则该代码有效。 您必须以以下形式输出小数 digit.s(不带空格) 例如,小数点后9位的黄金均值为 1.618033988 显示最后一位而不四舍五入,因为它将以较长的十进制扩展形式出现。黄金平均值的下一个数字是7,但是示例中的最后8个数字不应四舍五入为9。 十进制数字的数量必须为p,这意味着还必须包含任何结尾的零。 形式的答案 无效-您必须使用十进制扩展名。 您最多可以输出1个换行符和1个尾随换行符。除数字和单点/句号/句点外,您不得输出任何空格或其他任何字符。 得分了 这是标准代码高尔夫:您的得分是代码中的字节数。 排行榜 (使用Martin的页首横幅代码段) 显示代码段 var QUESTION_ID=52493;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function shouldHaveHeading(e){var a=!1,r=e.body_markdown.split("\n");try{a|=/^#/.test(e.body_markdown),a|=["-","="].indexOf(r[1][0])>-1,a&=LANGUAGE_REG.test(e.body_markdown)}catch(n){}return a}function shouldHaveScore(e){var a=!1;try{a|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(r){}return a}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading),answers.sort(function(e,a){var r=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0],n=+(a.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0];return r-n});var e={},a=1,r=null,n=1;answers.forEach(function(s){var t=s.body_markdown.split("\n")[0],o=jQuery("#answer-template").html(),l=(t.match(NUMBER_REG)[0],(t.match(SIZE_REG)||[0])[0]),c=t.match(LANGUAGE_REG)[1],i=getAuthorName(s);l!=r&&(n=a),r=l,++a,o=o.replace("{{PLACE}}",n+".").replace("{{NAME}}",i).replace("{{LANGUAGE}}",c).replace("{{SIZE}}",l).replace("{{LINK}}",s.share_link),o=jQuery(o),jQuery("#answers").append(o),e[c]=e[c]||{lang:c,user:i,size:l,link:s.share_link}});var s=[];for(var t in e)e.hasOwnProperty(t)&&s.push(e[t]);s.sort(function(e,a){return e.lang>a.lang?1:e.lang<a.lang?-1:0});for(var …
13 code-golf 

4
很奇怪的单词计数器
输入:通过功能参数,命令行参数,STDIN或类似参数仅由小写字母组成的任何字符串。 输出:根据以下度量标准,打印或返回一个数字,该数字将代表字母的距离之和: 您取第一个和第二个字母并计算它们之间的距离。该距离由QWERTY键盘布局定义,同一行中的每个相邻字母之间的距离为1,同一列中的每个相邻字母之间的距离为2。要测量不相邻字母之间的距离,请采用最短路径两者之间。 例子: q->w is 1 distance apart q->e is 2 distance q->a is 2 distance q->s is 3 distance (q->a->s or q->w->s) q->m is 10 distance 然后,您输入第二个和第三个字母,然后输入第三个和第四个字母,依此类推,直到到达输入的末尾。输出是所有这些距离的总和。 输入和输出示例: INPUT: qwer OUTPUT: 3 INPUT: qsx OUTPUT: 5 INPUT: qmq OUTPUT: 20 INPUT: tttt OUTPUT: 0 这是显示哪些字母在同一列中的图像: 这是代码高尔夫,所以最短的代码以字节为单位获胜!

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.