Questions tagged «code-golf»

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

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 这是代码高尔夫球,因此以字节为单位的最短程序获胜。

9
Google自动填充乐趣
您的任务是创建一个程序,给定输入字符串,该程序将输出该搜索的第一个Google自动完成结果。输入/输出的格式由您决定。 规则 您的程序必须接受1个输入,一个字符串,并输出最上面的Google自动填充/自动填充建议结果。输入/输出的格式由您决定。只要确保提及您的I / O格式是什么即可。 显然,允许访问Internet。 严格禁止使用 URL缩短器(如bit.ly,TinyURL等)。您应该从以下URL获取自动完成结果:http ://suggestqueries.google.com/complete/search?client=your_browser&q= your_query或http://google.com/complete/search?client=your_browser&q=your_query。您可以假设使用任何浏览器名称(或字符串)client。在我编写的程序中,我假设使用Chrome。任何浏览器名称或字符串都应该起作用。只要您使用http://suggestqueries.google.com/complete/search的某些变体,就可以将任何选项传递给网页。 请提供您的程序工作原理的说明。它不是强制性的,但我强烈建议您这样做。 严格禁止所有标准漏洞。 测试用例 这些内容一直在变化,因此如果这些内容过时了,请编辑此帖子。 'how to' => 'how to make slime' 'code golf' => 'code golf languages' 'you' => 'youtube' 'g' => 'google' (why would you google 'google'?) 这是代码高尔夫,所以最短的代码胜利和最好的程序员可能会繁荣...

2
高尔夫端到端加密
第一次挑战时,悬赏200分,并且至少连续3天保持不败。被user3080953主张。 最近有很多关于端到端加密的讨论,并且要求公司从其产品中删除它。我对它的是非不感兴趣,但是我想知道:代码能持续多久会给一家公司施加压力,使其不使用它? 这里的挑战是在两个网络系统之间实现Diffie Hellman密钥交换,然后允许用户使用生成的对称密钥来回通信。出于此任务的目的,不需要其他保护(例如,不需要循环密钥,验证身份,防止DoS等),并且您可以假定开放的Internet(您监听的任何端口都对所有人可用)。允许并鼓励使用内建函数! 您可以选择以下两种模式之一: 服务器和客户端:客户端连接到服务器,然后服务器或客户端可以向其他服务器发送消息。两者之间的第三方必须无法读取消息。一个示例流程可能是: 用户A启动服务器 用户B启动客户端并将其定向到用户A的服​​务器(例如,通过IP /端口),程序将打开连接 用户A的程序确认连接(可以选择先征求用户的同意) 用户B的程序开始生成DH机密,并将所需的数据(公钥,素数,生成器,以及您的实现所需的其他任何内容)发送给用户A 用户A的程序使用发送的数据完成共享密钥的生成,并将所需的数据(公钥)发送回用户B。从这一点来看,用户A可以输入消息(例如,通过stdin),该消息将被加密并发送给用户B(例如到标准输出)。 用户B的程序完成了共享机密的生成。从这一点来看,用户B可以向用户A发送消息。 或:一台连接有两个客户端的服务器:每个客户端与服务器对话,服务器将其消息转发给另一个客户端。服务器本身(及其之间的任何第三方)必须无法读取消息。除了初始连接之外,该过程与第一个选项中描述的过程相同。 详细规则: 您可以提供一个程序,也可以提供多个程序(例如,服务器和客户端)。您的分数是所有程序的总代码大小。 从理论上讲,您的程序必须能够通过网络进行通信(但对于测试,可以使用localhost)。如果您选择的语言不支持联网,则可以将其与兼容的语言结合使用(例如,shell脚本)。在这种情况下,您的分数就是所有使用的所有语言的总代码大小。 Diffie Hellman密钥生成可以使用硬编码的“ p”和“ g”值。 生成的共享密钥必须至少为1024位。 共享密钥后,对称密钥加密的选择就由您决定,但是您一定不能选择目前已知对其有实际攻击能力的方法(例如,在不知道密钥的情况下,进行凯撒转移很容易进行反向操作) )。允许的算法示例: AES(任何密钥大小) RC4(从理论上讲是无效的,但是我没有提到任何实际的攻击,因此这里允许) 用户A和B必须都能够交互地互相发送消息(双向通信)(例如,从stdin中读取行,不断提示或按下按钮之类的事件)。如果这样更容易,您可以假设是交替对话(即,用户发送消息后,他们必须等待响应才能发送下一条消息) 语言内置是允许的(没有必要写你自己的密码或网络的方法,如果他们已经支持)。 底层的通信格式取决于您。 上面给出的通信步骤是一个示例,但是您不必遵循这些步骤(只要共享了必要的信息,并且没有中间人能够计算出共享密钥或消息) 如果事先不知道连接到服务器所需的详细信息(例如,如果它在随机端口上侦听),则必须打印这些详细信息。您可以假定机器的IP地址是已知的。 不需要进行错误处理(例如,无效的地址,丢失的连接等)。 挑战是代码高尔夫,因此以字节为单位的最短代码将获胜。

6
为我的骑士动作而努力
六角象棋描述了在棋盘上玩的一系列象棋变体,其中棋盘格是六边形而不是传统的正方形。有许多这样的变体。在这一挑战中,我们将重点介绍最常见的格林斯基(Gliński)的变体。 棋盘由三种颜色组成(因此相同的颜色不会共享边缘),六边形的边缘面向玩家。板具有11个文件,用字母标记的a通过l(字母j不使用),和11列(其弯曲60°在文件f)。等级1通过6每个包含11个单元格,等级7具有9个单元格,等级8具有7个,依此类推。排名仅11包含一个单元格:f11。(如果有帮助,可以将每个等级视为一个非常宽的“ V”形。) 这是板子的示例图片,骑士位于中央单元上。标有点的单元格是该特定骑士的合法举动。骑士以与“普通”国际象棋类似的方式移动,两下一下。用六角象棋术语来说,这是正交移动(越过一条边),然后是沿相同方向的对角线移动(最接近相同颜色的移动)。例如,对于下面的骑士,然后“向上”移动到浅棕色,然后进行对角线移动“向上和向右”或“向上和向左”移动到最近的浅棕色。 通过https://commons.wikimedia.org/wiki/File:Glinski_Chess_Knight.svg在公共领域中 这位骑士位于f6,因此合法移动 c4, c5, d3, d7, e3, e8, g3, g8, h3, h7, i4, i5 输入值 一个输入,给出了我们骑士的起始格。它可以是任何方便的格式,既可以是单个字符串"b6",也可以是两个字符串"b", "6"等。输入字母可以是大写或小写-您可以选择。 输出量 骑士可以在该位置进行的有效移动的列表。这可以是字符串数组,具有明确且一致的定界符的单个字符串,由换行符分隔的字符串等,以最方便的方式进行。输出不一定要按排序顺序,可以是大写或小写-您可以选择。 规则 假设板上没有其他物件或干扰移动。我们只关注骑士。 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。 如果可能,请提供一个在线测试环境的链接,以便其他人可以尝试您的代码! 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常见的高​​尔夫规则都适用,并且最短的代码(以字节为单位)获胜。 例子 b6 a3, c4, d5, d9, e7, e8 f6 c4, c5, d3, d7, e3, e8, g3, g8, h3, h7, i4, i5 …

5
为ais523做BackFlip!
这个挑战是奖ais523为赢得了“ 年度最佳新秀类别”中的“ 最佳PPCG 2016 ”。恭喜你! BackFlip是由ais523用户开发的一种深奥的编程语言,他已经创建了30多种其他有趣的esolang。 BackFlip是一种2D语言,例如Befunge或> <>,其中指令指针遍历文本网格(程序),上下移动,左右移动,并根据其所在的字符改变方向。至关重要的是,BackFlip程序中的网格在遍历时会发生变化,有点像Langton的Ant。 对于此挑战,您可以假定BackFlip程序始终是文本的矩形网格(所有行的长度相同),最小大小为1×1,仅包含字符./\<>^V。(.用于可见性,而不是空间。)语义上,我们将在此处使用的BackFlip与原始规范相同。 BackFlip中的指令指针(IP)始终从程序左上角的左侧开始,一直向右移动。它可以遇到三种命令: .是无人操作。IP继续朝着前进的方向发展。无操作保持无操作。 /并且\是镜子。它们沿其角度指示的方向反射IP,然后变为另一种类型的反射镜。 例如,如果IP头向左\移动,它将开始向上移动,而不是向左移动,然后\变为a /。 <,>,^,和V是箭头。他们将IP重定向到其指向的方向,然后变为箭头,指向IP的来源方向(与IP的移动方向相反)。 例如,如果IP向下进入>,则它开始向右移动而不是向下移动,并且>变为,^因为这就是IP的方向。 当IP超出范围(即脱离网格)时,BackFlip程序终止。事实证明,所有 BackFlip程序最终都会终止,因为不可能进行无限循环。(您可能认为这是真的。) 您在此挑战中的目标是编写一个程序或函数,该程序或函数接受BackFlip程序并输出指令指针在程序终止之前执行的移动次数。也就是说,IP在运行程序的过程中需要采取多少步骤?这包括进入网格的初始步骤和离开网格的最后一步。 例如,指令指针在平凡的网格中采用了5个步骤....: .... <- empty 4×1 grid 012345 <- step number of the IP 因此,输出....为5。 在更复杂的4×2网格中 \... \.>< IP在第9步退出网格,因此输出为9: step grid IP position (@) 0 \... @.... \.>< .... 1 \... @... …

5
与朋友排队
游乐园里,吉姆(Jim)拥有最好的芽,随着您最喜欢的游乐设施出现,您和吉姆(Jim)交换了眼神。自然,您会争先恐后。不幸的是,他赢了,因为您是一名高尔夫球手,而且他参加了一项真正的运动(对不起朋友)。实际上,您太落后了,您和Jim被人分开了x。假设这条线是长的,n并且您在后面,那条线j在每个人之间曲折,那么您和Jim会在同一行中的哪个位置允许您聊天(相隔仅一行)? 输入值 3个整数 n-线的长度。该数字将始终大于或等于j并且将采用y * j其中y为正整数(队列中的行数)的形式。 j-行的一行中的人数(一行中的列数)。此数字将始终大于0。 x-你和吉姆之间的人数如此0 <= x < 2j - 1。提示:如果此数字为奇数,则您的输出应为空。 输出量 Jim与您在同一列中的行中的整数位置列表。 1这些整数可以是0或1的索引,只要您在答案中指定即可。 2这些整数可以假设您从位置0或位置n-1开始,只要您在答案中指定即可。 例 在此示例中,输入为n = 9, j = 3, x = 0。输出应该是2, 5因为当您与Jim处于同一列时,您的排名是2或5 测试用例 [9, 3, 0] -> [2, 5] [12, 3, 0] -> [2, 5, 8] [9, 3, 1] -> [] [9, 3, …
16 code-golf 

9
最小乘数,可显示半素数的因子
给定一个半素数 N,找到最小的正整数m,这样就可以在N * m的二进制表示形式中找到N的两个因子之一的二进制表示形式。 例 让我们考虑半素数N = 9799。 我们尝试从1开始的m的不同值: m | N * m | N * m in binary ---+--------+------------------ 1 | 9799 | 10011001000111 2 | 19598 | 100110010001110 3 | 29397 | 111001011010101 4 | 39196 | 1001100100011100 5 | 48995 | 1011111101100011 6 | 58794 | …

1
检测您的程序是否已被突变
编写一个无错误终止的程序。 如果任何单个字节被任何其他字节替换,则程序应输出 CORRUPTED 不要从文件中读取源代码 您的程序不应产生任何其他输出 这是代码高尔夫球,因此最短的答案以字节为单位。 编辑:删除了“不损坏”要求

7
一1,二1,一2一1
挑战: 创建一个程序,该程序接受一个非零正整数的输入,并按照下面描述的顺序输出下四个数字。 注意:不需要检查输入是否实际上是一个非零的正整数 顺序: 此序列中的每个数字(除第一个数字(输入数字)外)均应由n个数字组成,其中n是偶数。如果我们将数字分为n / 2对,则每对数字的第一个数字应为第二个数字在前一个数字中出现的次数 直观说明: 考虑此示例“序列启动器”或输入序列中6577 的下一个数字应如下所示,161527 因为输入具有1个“ 6”,1个“ 5”和2个“ 7”。 如果输入的位数太多(单个位数超过9个),您将无法获得正确的输出。 示例:111111111111(12个1) 序列中的下一个数字必须描述12个1。因此,我们将其分为9 1和3 1(总和9 + 3 = 12) 下一个数字:9131 您应该对输入进行4次迭代,然后将其输出(返回一个包含4个整数的列表/数组,或者通过用空格分隔它们来输出它,也可以使用换行符) “数字可以用很多方式写,我怎么写?” : 如果考虑到这一点,示例输入6577也可以写为271516(两个7,一个5,一个六个)。但是,这是无效的输出。您应该从左到右迭代该数字。因此为161527。如果7657您要迭代7的数量,则依次迭代6的数量和5的数量,这样有效的输出将是271615 I / O示例: 输入:75 输出:1715 211715 12311715 4112131715 输入:1 输出:11 21 1211 3112 输入:111111111111(12 1's) 输出:9131 192113 31191213 23411912 这与“说您看到的内容”问题不同,因为序列不同:https ://oeis.org/A005150 <-此返回的数字是这样的:输入:1211输出:111221 …

15
前x个素数中的加法素数
附加质数的定义: 其中恰好有2除数的数称为素数。 质数及其位数之和也是质数称为加数质数 任务: 给定一个整数x,计算第一个x素数中的所有加法素数,同时2考虑第一个素数和加法素数。数字以10为基数表示。 规则: 输出由第一个x素数中的所有加法素数组成 0 < x < 151,针对这一挑战,出于功能目的 由于加性质数均为整数,因此不允许使用小数(例如:您应输出2,而不是2.0),并且它们不得显示为小数。 例子: 10 -> 2 3 5 7 11 23 29 说明: 前10个素数是2 3 5 7 11 13 17 19 23 29,并且仅2 3 5 7 11 23 29具有它们的数位素数之和,分别是2,3,5,7,2,5,11,所以它们是加法素数 根据的说明example 1,其他测试用例可能是: 2 -> 2 3 25 -> 2 3 …

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.