Questions tagged «code-golf»

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

3
在盒子里画一个螺旋
这种几何螺旋看起来很复杂,但是绘制起来却相当简单。采取以下框: 在框的角和逆时针在下一个角上方的某个设置距离之间绘制一条直线。 向内继续此模式,始终与下一行的拐角保持该设定距离。这里还有几行。 如您所见,随着图案的继续,螺旋线接近中心,绘制的框开始旋转。请注意,无论角度如何,距离都​​保持恒定。 挑战 灵感(也要感谢向我介绍这个概念的出色人<3) 给定从1到25的数字(可能是分数)输入,将图像写入使用此模式的磁盘或在屏幕上显示输出,其中距每个角的距离是盒子的一个初始边的距离除以输入。向内继续图案,直到与指定拐角的距离大于下一个边的长度。 规则 您可能不使用内置函数来进行这种螺旋式创建,但可以使用图像处理内置函数。 如果写入磁盘,则必须以.jpg,.gif,.tiff,.pbm,.ppm和.png中的任何一种格式输出图像。 初始边长必须至少为500像素。 初始拐角可能是您选择的任意一个。 与往常一样,不允许使用“标准漏洞”。

6
给定长度的幻数
您的程序必须接受输入(n出于描述目的)并输出n数字长的数字的所有排列,且没有重复的数字,其中位于其索引之前和包括其索引的每个数字都可以通过其所属数字的位置来整除。 。 您可以在此处阅读有关幻数的信息。 规则: 1 <= n <= 10 不能重复数字 前0必须存在(如果适用) x数字的第1至第一个数字(从第一个字符开始为1)必须可被整除x,即,在中30685,3可被1 30整除,被2 306整除,被3 3068整除,被4整除,并且30685被5 整除。 程序必须采用整数作为输入(通过命令行,作为函数参数等),并打印所有满足规则的排列。 输出必须用1个或多个空格字符分隔 排列可能从零开始(因此从技术上讲不是魔术数字)。 输出顺序无关紧要 你不会需要处理突发输入 以字节为单位的最少字符获胜 例子 给定1: 0 1 2 3 4 5 6 7 8 9 给定2: 02 04 06 08 10 12 14 16 18 20 24 26 28 30 32 …

11
双重奎因:quine!dlroW,olleH
编写一个程序,该程序在运行时将输出其自己的源代码,而没有其他任何输出。看起来很简单,对吧? 问题是,当源代码反向时,您的程序必须输出“ Hello,World!”。完全没有引号。 这是代码高尔夫球,因此最低字节数为准。 编辑:您的奎纳必须是适当的奎纳。

6
谁是比赛的王者?
背景 考虑一个循环锦标赛,其中每个参赛者与其他参赛者进行一场比赛。没有平局,因此每场比赛都有赢家和输家。如果对其他每位竞争者B来说,A击败B或A击败另一位竞争者C,而竞争者C又击败B,那么竞争者A是比赛的王者。可以证明,每场比赛都有至少一位国王(尽管可能有几位)。在这个挑战中,您的任务是找到给定锦标赛的国王。 输入输出 您输入的是N × N布尔矩阵T,还可以N ≥ 2是参赛者人数。每个条目T[i][j]代表选手之间的比赛的胜负i和j,值为1代表一胜i0一胜j。请注意,T[i][j] == 1-T[j][i]如果i != j。的对角线T包括0。 您的输出应为T代表比赛的国王列表,使用基于0或基于1的索引。国王的顺序无关紧要,但不应重复。 输入和输出都可以采用任何合理的格式。 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 这些测试用例使用基于0的索引。对于基于1的索引,增加每个输出值。 2 [[0,0],[1,0]] -> [1] 3 [[0,1,0],[0,0,0],[1,1,0]] -> [2] 3 [[0,1,0],[0,0,1],[1,0,0]] -> [0,1,2] 4 [[0,1,1,1],[0,0,1,0],[0,0,0,0],[0,1,1,0]] -> [0] 4 [[0,1,1,0],[0,0,1,0],[0,0,0,1],[1,1,0,0]] -> [0,2,3] 5 [[0,1,0,0,1],[0,0,0,0,1],[1,1,0,0,0],[1,1,1,0,1],[0,0,1,0,0]] -> [3] 5 [[0,1,0,1,0],[0,0,1,1,1],[1,0,0,0,0],[0,0,1,0,1],[1,0,1,0,0]] -> [0,1,4] 5 [[0,0,0,0,0],[1,0,1,1,0],[1,0,0,0,1],[1,0,1,0,1],[1,1,0,0,0]] -> [1,3,4] …

13
到达矩形相对角的最佳解决方案
您的工作是编写一个程序,以找到从矩形的左下角到相对的右上角所需的最佳移动次数。 您的程序将接受输入作为有序对(width, height)。这些将是您将使用的矩形的尺寸。您的程序将创建解决方案的ASCII艺术形式(.用于空正方形和#部分解决方案,X用于起始正方形),并计算到达端点所需的移动次数。不允许对角移动。如果有多种解决方案,请选择一种解决方案。 以字节为单位的最短程序获胜。 例 输入: (4, 5) 输出: ..## ..#. .##. .#.. X#.. 移动次数:7

11
解决秘书问题
该秘书问题被描述为一个如此著名的问题: 你需要新秘书 您有N个申请人,一次可以面试一次 面试后,您可以为每个申请人评分。您的计分系统永远不会给两个申请人相同的分数 面试申请人后,您必须立即给出“是”或“否” 您想要分数最高的申请人 解决方案是采访第一个floor(N/e)申请人,然后接受分数高于所有先前申请人的第一个申请人。如果没有一个更高的申请人,则返回最后一个申请人。有趣的是,这给了最高的申请人1/e时间百分比。 e指欧拉数。要获取的值e,您可以使用内置的log或将其硬编码为至少5个小数点。 输入: 不大于的唯一非负整数的非空数组2^31-1。 输出: 代表所选候选者的整数。要明确的算法是: floor(N/e)在数组的第一个元素中找到最大元素。 遍历其余元素,并返回比第1步中找到的最大值高的第一个元素。 如果所有元素都不高于,则返回最后一个元素。 例如,假设您的数组是[2,7,4,3,9,20],则N = 6和floor(N/e) = 2。数组的前2个元素是[2,7]。的最大值[2,7]为7。其余元素为[4,3,9,20]。大于第一个元素7是9,所以我们返回9。 测试用例: [0] => 0 [100] => 100 [100, 45] => 100 [0, 1] => 0 [45, 100] => 45 [1, 4, 5] => 4 [1, 5, 4] => 5 [5, …

1
迭代移动平均线
如果我们有一个列表,比如说list [9, 2, 4, 4, 5, 5, 7],我们可以在其中进行移动平均。 假设一个有3个元素的窗口,每个元素都被这样的窗口所代替:[[9], [9, 2], [9, 2, 4], [2, 4, 4], [4, 4, 5], [4, 5, 5], [5, 5, 7]],然后取平均值,得到[9.0, 5.5, 5.0, 3.3333333333333335, 4.333333333333333, 4.666666666666667, 5.666666666666667]。 到目前为止非常简单。但您可以注意到的一件事是,移动平均线可以“平滑”列表。因此,这就引出了一个问题:必须使移动平均值多少次才能使列表“足够平滑”? 你的任务 给定一个浮点数列表,一个整数窗口大小和一个浮点数,输出必须获取移动平均值才能获得小于该浮点数的标准偏差的次数。对于那些不知道的数据,标准差用于衡量一组数据的不平滑程度,可以通过以下公式计算得出: 例如,使用前面的列表和max stddev .5,我们得到如下所示的8迭代: [9.0, 5.5, 5.0, 3.3333333333333335, 4.333333333333333, 4.666666666666667, 5.666666666666667] [9.0, 7.25, 6.5, 4.6111111111111116, 4.2222222222222223, …

3
使用ASCII艺术图可视化长时间添加
完全不受视觉化与ASCII艺术的长期划分的启发;) 您的工作是要用ASCII艺术表现出长手的加法。您可以通过将列从右到左相加,将那些位置的值放在结果中,然后将十位数移到下一列的顶部来解决长期累加问题。 输入值 输入只要输入2到9个数字,基本上就可以采用您想要的任何格式。 输出量 此处的格式可能与您在学校学习的方式相符: carry row number1 number2 ... + numX -------- result 您可以在此处拥有几乎任何数量的尾随空白;) 例子 50, 50 1 50 +50 --- 100 1651, 9879 1111 1651 +9879 ----- 11530 6489789, 9874, 287 1122 6489789 9874 + 287 -------- 6499950

3
这个多边形有几边?
因此,在一年级数学中,您将学习多边形的名称。三个边是三角形,4是正方形,5是五边形。但是,在一年级荣誉中,您可以走得更远。 你的挑战 在多边形的上方有一个命名系统,因此任意大的多边形都有一个名称。 您的任务是编写一个接受多边形名称作为输入并输出其边数的程序或函数。 多边形名称的定义与本维基百科文章的左栏中相同,但有一些例外。 三个面的多边形将被称为三角形而不是三角形,而四个面的多边形将被称为正方形而不是四边形(假定所有多边形都是规则的)。否则,将使用文章中的名称。 规则 输入将是一个字符串值。 程序应将结果打印到STDOUT(或应返回整数)。 仅输入3到99之间的多边形。 您的程序必须满足所有测试用例。 没有标准漏洞。 对于无效/超出范围的输入,程序不需要执行任何操作。 得分以字节为单位。由于这是代码高尔夫球,因此最短的程序为准。 测试用例 3 triangle 4 square 5 pentagon 10 decagon 11 hendecagon 12 dodecagon 13 triskaidecagon 20 icosagon 21 icosikaihenagon 22 icosikaidigon 34 triacontakaitetragon 35 triacontakaipentagon 36 triacontakaihexagon 47 tetracontakaiheptagon 48 tetracontakaioctagon 49 tetracontakaienneagon 64 hexacontakaitetragon 80 …

1
解决SAS宏变量
在SAS编程语言是笨重的,古老的语言可以追溯到1966年的今天这仍然在使用。原始的编译器是用PL / I编写的,实际上许多语法都来自PL / I。SAS还具有从PL / I的语言衍生而来的预处理器宏语言。在这个挑战中,您将解释SAS宏语言的一些简单元素。 在SAS宏语言中,宏%let关键字是使用关键字定义的,并使用进行打印到日志%put。语句以分号结尾。这里有些例子: %let x = 5; %let cool_beans =Cool beans; %let what123=46.lel"{)-++; 宏变量名称不区分大小写,并且始终与正则表达式匹配/[a-z_][a-z0-9_]*/i。出于此挑战的目的,我们将讲以下内容: 宏变量只能保存完全由可打印ASCII字符组成的值,,和除外 ;。&% 值中将没有前导或尾随空格 值的长度不得超过255个字符 值可能为空 值中的方括号和引号可能不匹配 可以有任何空间量前后=的%let语句和这个空间应该被忽略 可以有空间的任何数量的终端之前;的%let声明,这个空间应该同样被忽略 当调用宏变量时,我们说它“解析”为其值。宏变量通过前置来解决&。有一个可选的结尾.表示标识符的末尾。例如, %put The value of x is &X..; 写入The value of x is 5.日志。请注意,需要两个期间,因为单个期间将被消耗&X.并解析为5。还要注意,即使我们x以小写字母定义,&X也是如此,&x因为宏变量名称不区分大小写。 这就是棘手的地方。&可以将多个s串在一起以解析变量,并且&处于同一嵌套级别的s可以同时解析。例如, %let i = 1; %let coolbeans1 = broseph; …

7
找到最佳的移门宽度
滑动门的价格随门的宽度而变化。不同的价格如下: 60-80厘米:¤150 81-100厘米:¤200欧元 101-120厘米:¤220 购买壁橱时,您显然希望将成本降至最低,因此您的任务是根据壁橱的总宽度找到最小化总成本的门宽。 规则: 总宽度将作为输入 所有门的宽度相同 如果两种类型的门价格相同,则选择最小的门 宽度以厘米为单位,整数而不是小数 舍入小数 价格应以整数形式返回(不需要货币符号) 输入和输出格式是可选的,但是输出的顺序必须是:Number of doors, Width, Price。 输入将在范围内[120 1000)。 这是代码高尔夫。以字节为单位的最短代码获胜。 例子: Input: 156 Output: 2, 78, 300 Input: 331 Output: 3, 111, 660 Input: 420 Output: 4, 105, 880

3
将点连接
给定一系列o代表点的,将其垂直或水平连接 例子 输入: o o o 输出: o---o | | o 输入: o o o o 输出: o---o----o | o 规格 如果要用空格填充输入以形成矩形,请在答案中指定 输入中将只有o,空格和换行符 总会有一对点连接 没有两个o将直接相邻 点应分别与|和-连接,分别用于垂直和水平连接 点连接不会重叠

3
说明球场上的足球队编队
足球是运动员踢球而不携带球的运动。一些困惑的人可能会称其为足球。 一支足球队有一名守门员,场上有10名球员。足球中使用了许多形式,规定了每个球员应该在哪里(球员当然会走动,但这是基本位置)。 最常见的阵型是4-4-2,这意味着有4个后卫,4个中场和2个进攻者。其他阵型是(“后卫,中场,进攻者”或“后卫,中场,中场,进攻者”): 4-4-2 4-3-3 5-3-2 3-4-3 3-5-2 4-5-1 5-4-1 4-4-1-1 4-3-1-2 4-1-2-3 4-1-3-2 4-3-2-1 3-4-1-2 3-3-3-1 面临的挑战是要有两个输入,两个团队中的每个输入一个,并输出现场球员的概况。 一般而言:有关ASCII艺术作品布局的大多数信息可以在图中找到(一张图片说超过1000个单词)。仅详细说明了将10个玩家放置在场上的方法: 守门员和罚球区占用3行ASCII字符 布局和数量可以在下图中找到 禁区与防守方之间没有空白行 如果编队中有3个数字(例如4-4-2、4-3-3等,不是4-3-2-1): 防守者和中场之间没有空档 中场和进攻者之间只有一排空 如果编队中有4个数字(例如4-3-2-1、3-3-3-1等,不是4-4-2): 后卫与中场第一排之间没有空白行 第一排中场和第二排中场之间没有空行 第二排中场和进攻者之间没有空排 攻击者和中心线之间没有空行 上半部分x的团队标记为,下半部分的团队标记为o。 如下图所示,每排球员应在球场上分布。在图中可以看到空格的数量。 下图不代表有效的阵型,但用于说明每个玩家之间的布局和所需空间的数量。输入为2 3 4 5和5 4 2: +-----------------+ | | x | | | +-----+ | | x x …

4
解读Pig系列
给定Pig, SickPig, DeadPig, QuinePig或 DeafPig程序的输入,请随机选择这些“语言”之一,并将输入解释为该“语言”。 首先,在“猪系列”的五个成员之一中随机选择: 猪 如果选择是Pig,请执行以下操作来模仿参考口译员: 查找PIG输入中单词的第一个匹配项(区分大小写)。 如果PIG输入中未出现该单词,则输出消息 File must contain the string 'PIG'.并退出。 否则,在第一次出现时拆分输入字符串PIG。将第一次出现后的文本输出PIG到文件名为之前的文件PIG。 PIG可能包含在要输出的文本中(因此,的输入 fooPIGbarPIGbaz应输出barPIGbaz到名为的文件中foo)。 请注意,参考解释器通过命令行参数获取输入,该命令行参数指定要读取的文件名。但是,您的提交可以采用PPCG接受的任何标准方法进行输入。 病猪 如果选择的是SickPig,请遵循与Pig相同的说明。但是,与其将文本写到PIG文件中,不如从下面的列表中随机选择 GRUNT MOAN OINK BURP GROAN WHINE 并将其输出到文件中。此随机选择必须独立于先前的选择(因此,的输出GRUNT总体应具有1/5 * 1/6 = 1/30的机会)。 死猪 DeadPig类似于SickPig,但它始终输出以下字符串,而不是随机选择一个字符串: Your pig has unfortunately died. Please try again. QuinePig QuinePig就像Pig一样,但是PIG它没有将文本写到文件中,而是将整个输入写到文件中(因此,的输入 fooPIGbarPIGbaz应输出fooPIGbarPIGbaz到名为的文件中foo)。 聋猪 如果选择的是DeafPig,则什么也不做。(这只猪是聋的……你期望什么?) 杂项规则: “随机”表示每个选择的可能性大致相同(因此,在90%的时间内选择Pig,而在其他2.5%的时间内选择其他变体都是无效的)。 …

4
使用算术表达式表示给定大整数的策略
我有一个特定的数字,但这是我正在面临的挑战的一部分,并且我不希望人们为我做(所有)工作。 这是一个具有相同数字但乱序的数字: 5713167915926167134578399473447223554460066674314639815391281352328315313091488448321843 8892917486601064146636679920143691047671721184150386045081532202458651561779976236919751 5521854951599379666116678853267398393892536121049731949764192014193648608210652358947001 6332620900065461061195026191178967128001712341637591690941978871368243245270800684616029 6679555942849366434586090627998161441134473428845367022486230724219981658438108844675033 4461550796750244527407413996606134735852639191026103378962082622204359677030054592798927 4145951979523473408718011778751084514127053772614511042703365596651912104541233491744530 87457854312602843967491787086250478422477028164189 该数字有666位数字(十进制)。因为我使用的是Python,所以整数(或从技术上讲是long)会自动为bignums。 我有255个字符,需要描述相同的数字。该描述旨在通过eval()运行以产生原始编号。 我应该考虑什么策略?

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.