编程拼图和代码高尔夫

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

3
订单操作
介绍 在童年时期,当您认为自己已经掌握了加法和乘法运算时,就会出现一个观点,然后有人来告诉您: a * b + c =(a * b)+ c!= a *(b + c), 而且它不像您先前所讲的那样简单或线性。您了解到存在一种称为操作顺序的事物。这是保持某种程度的一致性和表达式的一种非常重要的方法,而不会让括号妨碍所有内容。 一般故事情节 有一天,你醒来时在街上惊慌失措。一个以“ 2560 ” 为名的极端主义团体(“反对行动组织”的简称,带有诡异的六角形扭曲)已经使用了邪恶的方法来控制世界上所有的核武器。他们束缚着整个星球的人质,他们有一个简单的要求:逆转公认的行动顺序或铲除面孔(括号是他们的首要任务)。新系统称为PSADME(括号,减法/加法,除法/乘法,指数),表达式从右到左求值: a - b - c = a - (b - c) = a + c - b 几天过去了,过渡正在进行中。在数学家和物理学家都忙于重写方程式的同时,计算机科学家面临着改变计算机解释数学表达式的方式的任务。您属于一个秘密的反叛程序设计小组,该小组旨在给新的全球霸主造成尽可能多的折磨-偶然地,您被The 2560随机选中,并负责制定基准计算程序。 你的任务 编写一个程序(或函数),将一个(数值)数学表达式作为输入,使用PSADME作为运算顺序来计算该表达式并输出结果。表达式应从右到左求值,因此1 − 3 + 4 = 1 − 7 …
13 code-golf 

1
鲍曼鲍勃!
鲍曼鲍勃 o /( )\ This is Bob. L L Bob wants to be an archer. ############# . / \ <--- bow So he bought himself a (c -)-> <--- arrow nice longbow and is about ( )/ <--- highly focused Bob shoot at a target. L L ############# ___________________________________________________________________________________________ sky …

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套西装的纸牌)。

11
打印程序的程序
挑战 您的目标是编写一个可以打印另一个程序的程序。该打印的程序应打印另一个程序,而新程序应打印另一个程序,直到结束。 规则 每个程序必须少于256个字节。(如果需要更改,请发表评论) 最后一个程序必须为空程序。 必须有有限数量的程序,因此程序不能是程序。 程序必须全部以相同的语言运行。 不允许输入。 获胜程序是打印尽可能多的程序的程序,它会自动计数。 祝好运!

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 

6
行列式优化挑战
考虑所有条目均为0或1的30 x 30 Toeplitz矩阵。此难题是查找具有最大行列式的矩阵的简单优化难题。 输入无 输出一个30 x 30 Toeplitz矩阵及其所有行列式,其所有条目均为0或1。 得分输出矩阵的行列式。如果两个人得分相同,则第一个答案将获胜。 到目前为止的领先作品 尼克·阿尔杰(Nick Alger)在Matlab中的65,455,857,159,975 (大约(10 ^ 13.8) 65,455,857,159,975在Python中由isaacg(大约10 ^ 13.8) 到2012年,在Mathematica中达到39,994,961,721,988(约10 ^ 13.6) Flounderer在R中的39,788,537,400,052 (大约10 ^ 13.6) Vioz-在Python中获得的8,363,855,075,832(大约10 ^ 12.9) 朱莉娅(Julia)的6,984,314,690,903,由Alex A.(大约10 ^ 12.8) 恼人的其他限制2015年7月16日 如果可能的话,请使用任意或高精度算法来计算最终输出行列式,以便我们可以确定它到底是什么(它应该始终是整数)。在python中,这应该会有所帮助。

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

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.