编程拼图和代码高尔夫

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

12
计算N位整数乘法溢出
给定一个正整数N,输出整数对的数量,0 <= a <= b < 2**N使a*b >= 2**N。 规则 您可以假定该N值小于或等于您语言中整数的最大位宽(例如,对于C,N不超过32或64,具体取决于计算机的体系结构)。如果您的语言能够处理任意宽度的整数,则没有上限N。 测试用例 1 0 2 3 3 19 4 96 5 437 6 1876 7 7804 8 31904 9 129170 10 520135 11 2088143 12 8369175 13 33512744 14 134128704 15 536681553 16 2147082274

13
输出第n个偶数
挑战 给定整数n作为输入,其中0 <= n <= 2^10输出第n个偶数。 完美数字 理想数是一个数字x,其中其因子之和(不包括其自身)等于x。例如6: 6: 1, 2, 3, 6 并且,当然1 + 2 + 3 = 66是完美的。 如果是一个完美的数字x,,则为偶数x mod 2 = 0。 例子 以下是前十个偶数: 6 28 496 8128 33550336 8589869056 137438691328 2305843008139952128 2658455991569831744654692615953842176 191561942608236107294793378084303638130997321548169216 请注意,您可以根据需要对此进行索引:6可以是第1个或第0个偶数。 获奖 以字节为单位的最短代码获胜。
16 code-golf  math  number 

17
梅威瑟vs麦格雷戈:准备现金奖励
介绍 2017年8月26日,小弗洛伊德·梅威瑟(Floyd Mayweather,Jr.)将在拳击比赛中与科纳·麦格雷戈(Conor McGregor)面对面。 两位参与者将获得惊人的1亿美元! 不幸的是,我们还没有钱,但是我们已经可以准备容纳所有钞票的大公文包。 _________________________ | | |=======================================| | $ $$$$$ $$$$$ $ $ | | $ $ $ $ $ $ $$$ $$$ | | $ $ $ $ $ $ $$$ $ | | $ $$$$$ $$$$$ $ $ | |_______________________________________| 公文包由_,|,=和$。 它的宽度为41个字符(忽略换行符),高度为6个字符(手柄为+2)。 挑战 在没有输入的情况下,编写一个完整的程序以输出2D公文包(请参见上文)。 得分了 …

16
找到所有的字谜!
尽管有17个问题被标记 anagram的,我们仍然没有这个问题,所以就在这里。 你的任务 您必须编写一个程序或函数,该程序或函数在接收到字符串时会打印出所有可能的字谜。出于这个问题的目的,一个字谜是一个字符串,它包含与原始字符串相同的字符,但不是原始字符串的精确副本。字谜不必是或包含实际单词。 输入值 您可以通过任何标准输入法接受长度大于0的任何字符串。它可以包含任何ASCII字符。 输出量 您可以以任何标准方式输出输入字符串的所有可能的字谜。您不得输出相同的字符串两次,也不能输出与输入相等的字符串。 其他规定 不允许使用标准漏洞 计分 这是代码高尔夫球,最少字节获胜。

3
Miller-Rabin强伪素数
给定一个非负整数N,将最小的奇数正整数输出为所有第一个N素数基数的强伪质数。 这是OEIS序列A014233。 测试用例(一索引) 1 2047 2 1373653 3 25326001 4 3215031751 5 2152302898747 6 3474749660383 7 341550071728321 8 341550071728321 9 3825123056546413051 10 3825123056546413051 11 3825123056546413051 12 318665857834031151167461 13 3317044064679887385961981 的测试用例N > 13不可用,因为尚未找到这些值。如果您设法按顺序查找下一个术语,请务必将其提交给OEIS! 规则 您可以选择采用N零索引或一索引的值。 您的解决方案只适用于语言整数范围内的可表示值是可接受的(最多适用N = 12于无符号64位整数),但是理论上您的解决方案必须在假设您的语言支持任意长度整数的情况下适用于任何输入。 背景 任何正偶数x可以写成如下形式x = d*2^s,其中d为奇数。d并且s可以通过反复分割计算n由2,直到商是通过2不再整除d是最终商,并且s是的2所划分的数目n。 如果一个正整数n是质数,那么费马小定理说明: 在任何有限域 Z/pZ(其中p有一些素数)中,的唯一平方根1是1和-1(或等价地为1和p-1)。 我们可以使用这三个事实来证明以下两个语句之一对于素数必须为true n(其中d*2^s = n-1和r是中的一些整数[0, s)): 的米勒罗宾素性测试操作通过测试上述权利要求的对换句:如果有一个基座a,使得上述两个条件都为假,则n不是素数。该基地a被称为见证人。 …

15
将日语马里奥标题转换为美国标题
《超级马里奥》系列游戏的命名约定非常奇怪,并且在不同地区之间不匹配。 | Japanese Name | American Name | |---------------------|------------------------------------| | Super Mario Bros. | Super Mario Bros. | | Super Mario Bros. 2 | Super Mario Bros.: The Lost Levels | | Super Mario USA | Super Mario Bros. 2 | | Super Mario Bros. 3 | Super Mario Bros. …

13
Trithagorean三元组
甲毕达哥拉斯三重是正整数方程的解: Trithagorean三元组是方程的正整数解: 其中Δn找到第n个三角数。所有Trithagorean三元组也都是该方程式的解: 任务 给定一个正整数c,输出所有正整数对,a,b以使a第bth个三角形数和第th个三角形数之和成为第th c个三角形数。您可以以最方便的任何方式输出对。您每对仅输出一次。 这是代码高尔夫球 测试用例 2: [] 3: [(2, 2)] 21: [(17, 12), (20, 6)] 23: [(18, 14), (20, 11), (21, 9)] 78: [(56, 54), (62, 47), (69, 36), (75, 21), (77, 12)] 153: [(111, 105), (122, 92), (132, 77), (141, 59), (143, 54), (147, 42), (152, …

2
鸣叫中的二进制俄罗斯方块
最近(几年前),编程 网站上出现了一些有关以140 Bytes实现俄罗斯方块的嗡嗡声。... 事实证明,尽管它很小,但它是Tetris的简化版本,甚至不是完整的实现。只有核心逻辑功能适合140字节的Javascript。要实际运行它,您还需要约840个HTML字符。 我们可以做得更好! 面临的挑战是在尽可能少的推文中实现完整版本的“二进制俄罗斯方块”。 二进制俄罗斯方块规则: 程序必须显示至少包含5列和6行单元格的运动场。 可以使用任何显示方法,只要清楚地标记了区域的块和边缘即可。 至少必须有两种类型的块: #和##。其他块支持,例如###:P或形状像L的角度块之类的将被我:P投票,最完整的二元俄罗斯方块游戏(大多数块如原始和旋转功能)将赢得我的幸福,并可能获得50 rep奖励。 新块将添加到第一行的字段中,并且一个块单元必须占据中心列。 方块以固定的速率朝底行下降。即使没有用户输入,块也必须下降。 当砖块碰到场地底部或下部砖块时,它们会停止下降并固定到位。添加了一个新块。 当该行中的所有列都填充有块时,该行将被清空,并且上方的所有固定块将下拉一行。 该程序必须响应按键。必须有3个唯一的键才能执行以下功能 将当前块左移1列 将当前块右移1列 将当前块向下移动1行 每条推文只能包含140个字符。允许使用可以放在推文中的多字节字符。 一条推文中的规则很简单。如果可以鸣叫,则可以使用它。 口译语言遵循相同的规则。每个部分都必须遵循规范。只要没有发生运行时错误(其余错误均符合规范),您的答案就是有效的 Golfing规则: 由于原始实现是“可发推的”,因此这一挑战也需要同样的条件。条目必须能够以一系列推文(每行140个字符或更少)的形式发送。 第一条推文必须包含编译器/解释器的名称,程序的名称以及任何命令行参数 它将保存为文件“ P0” 以下N条推文必须将该程序包含为一系列行。 每个推文将存储在名称为T <n>的文件中,其中n为1..N 每行都将添加到前面的行中并进行编译或解释。它必须产生一个有效的目标文件或程序。 在添加最后一行之前,该程序无需运行。 该程序将以以下方式运行(伪bash) interp,prog,args = split P0 /\s/ touch $prog for file in ./T* do cat $prog file > …

3
别走进墙壁了!
一些基于文本的流氓行为不会让您走进墙壁,如果尝试的话,也会让您后退。当您可以使播放器朝最接近的有效方向移动时,为什么要这样做? 挑战 编写一个功能程序,给定方向和3 x 3的字符网格,在玩家采取步骤后输出相同的网格。 例如, 9 #.. .@# #.# 变成 #.@ ..# #.# 输入值 方向由1到9的单个数字给出,每个数字对应于8个基本方向并保持静止。这是从键盘上数字的相对位置得出的: 西北西北 .. \ | / ... 7 8 9 W- 4 5 6 -E ... 1 2 3 ../ | \ 西南 但是,您也可以使用数字123、456、789而不是789、456、123。换句话说,如果您愿意,可以交换顶部和底部2行或数字。这些是仅有的2个可接受的索引组合。 3 x 3网格将由3个不同的可打印ASCII字符组成,这些字符代表步行地板,墙壁和播放器。(在测试用例中,.用于地板,#s是墙壁,@是玩家) 您可以选择程序使用的字符,但是您必须在答案中说明它们,并且它们在多次试验中必须保持一致。 代表角色的角色将始终位于3 x 3网格的中间,并且方向将始终在1到9(包括)之间 您可以按任何顺序输入 3 x 3网格可以作为char数组,字符串数组,9长度字符串或其他合理的替代输入。 …
16 code-golf  random 

1
没有代表上限,您的声誉如何?
在此挑战中,如果PPCG不存在信誉上限,您将计算自己的信誉。 每个人都可以访问原始数据以更改地址上的声誉:codegolf.stackexchange.com/reputation。原始数据遵循这样的设置(这些是我页面版本的前几行。 total votes: 2955 -- bonuses (100) 2 37663 (10) -- 2014-09-11 rep +110 = 111 2 41751 (10) -- 2014-11-23 rep +10 = 121 2 41751 (10) 2 41751 (10) -- 2014-11-24 rep +20 = 141 第一行与该挑战无关(它显示您对所有答案和问题所获得的总票数)。第二行显示“协会奖金”。如果您没有奖金,那么该行将根本不存在。 在这两行(或一个,如果没有奖金)行之后,您将获得每个问题的声誉更改列表,以及每天获得/丢失的所有代表的摘要。您还将获得当天结束时的总声誉列表。此列表仅显示您的声誉改变的日子。 每行的开头都有标识符(每日摘要行除外)。这些代表以下潜在的声誉更改原因: 1 : Accept (+2 if you accept, +15 if …

5
带积木的单词
给定一个没有重复字符的4个字母的词典(从此单词列表中),您必须选择这些单词中的一个,然后使用以下大写字母词典输出该特定单词: .----------------. .----------------. .----------------. .----------------. | .--------------. || .--------------. || .--------------. || .--------------. | | | __ | || | ______ | || | ______ | || | ________ | | | | / \ | || | |_ _ \ | || | .' ___ | | || | …

5
高尔夫语言存储技巧
我正在写一种高尔夫球语言。 您是否建议使用代码高尔夫球语言存储变量,堆栈,磁带,寄存器等?隐式输入呢? 粗略定义: 甲变量是简单地将一个值可以被分配到,后来由该名称检索的名(通常一个字符长在打高尔夫球的语言)。 甲寄存器就像是一个可变的,但它有自己(通常是单字节),用于设置/获取的值的命令。 甲堆栈是值,其中最近添加的值(“顶部”的值)是被改性的那些的可变长度数组/列表。 甲队列是像一个堆栈,除“上的值底部 ”是正在修改的那些。 甲带是其中每个值具有索引值的静态数组/列表。堆栈和磁带之间的主要区别在于,磁带上的值是就地修改的。 我希望知道每种方案在不同情况下以及总体上的优缺点。请避免发表意见,并带有推理的备份声明。

18
计算
挑战 给定一个整数sss作为输入,其中输出的值(其中表示黎曼Zeta函数)。s≥1s≥1个s\geq 1ζ(s)ζ(s)\zeta(s)ζ(x)ζ(X)\zeta(x) 更多信息 ζ(s)ζ(s)\zeta(s)被定义为: ζ(s)=∑n=1∞1nsζ(s)=∑ñ=1个∞1个ñs\zeta(s) = \sum\limits^\infty_{n=1}\frac{1}{n^s} 您应该将答案输出到5个小数位(不多也不少)。如果答案是无穷大,则应输出或您所用语言的同等语言。∞∞\infty 允许使用Riemann Zeta内置插件,但是这样做不太有趣;) 例子 输出必须完全如下所示 Input -> Output 1 -> ∞ or inf etc. 2 -> 1.64493 3 -> 1.20206 4 -> 1.08232 8 -> 1.00408 19 -> 1.00000 赏金 作为允许内置的安慰,我将为不使用内置zeta函数的最短答案提供100 rep赏金。(绿色复选标记仍将是最短的解决方案) 获奖 以字节为单位的最短代码获胜。
16 code-golf  math 

2
斯诺克计分
我当时正在观看世界斯诺克锦标赛,这让我感到奇怪。 斯诺克计分 在斯诺克游戏中,您也必须遵守某些规则: 桌子上有红球时,在回合时必须先倒一个红球 装好每个红色的球之后,您必须装一个有色(不是红色)的球(然后将有色的球替换到桌子上) 在所有红色球都起来(有15个)之后,您可以先选择一个彩色球,然后从得分最低的球开始,然后逐步上升到得分最高的球(不替换这些球) 任何时候不灌封都可以结束您的回合。 每球积分 红球:1分 黄球:2分 绿球:3分 棕球:4分 蓝球:5分 粉红球:6分 黑球:7分 问题 你开始用所有的球表仍然在它- 15红和一个其他每个彩球的-之后他们的第一个转弯都给予了玩家的斯诺克比分,是什么,他们可以实现这一点的办法得分了? 输入的分数将是1到147。您可以选择是整数还是字符串。输出应该是您对每个球进行盆栽的次数的不同组合。 测试用例: Input: 4 Output: 1r 1g 2r 1y Input: 25 Output: 4r 3b 5r 2b 1br 1y 5r 2b 2g ... 9r 8y 规则: 您可以选择是否输出用新行或某种分隔符(/ 、; | \甚至我所缺少的其他分隔符)分隔的可能性 这是codegolf,所以最短的代码获胜。
16 code-golf 

30
将整数x提高到x的幂,无需内置幂运算
任务-标题几乎总结了一下:将一个整数x乘幂x,其中0<x。 限制条件: 使用幂,exp(),ln(),和任何其他权力相关的语言内置插件,比如pow(),x^x,x**x是被禁止的。 您可以假定给定的整数符合您选择的编程语言的限制。 测试用例: Input | Output --------------- 2 | 4 3 | 27 5 | 3125 6 | 46656 10 | 10000000000 这是代码高尔夫球,因此以字节为单位的最短程序获胜。

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.