Questions tagged «code-golf»

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

1
黑色星期五队列管理
介绍 您是一家大型零售商店中电子部门的经理,一年中最大的销售日是本星期五。为了帮助管理人群,您的商店正在实施最大交易的票务系统,客户必须在购买商品之前出示票证。您的工作是编写一个程序来验证票证。 由于商店中唯一可用的计算机(由于预算削减)是一台损坏了键盘的恐龙(而且您所拥有的都是USB键盘,这些键盘不兼容),因此您必须用鼠标输入程序。因此,您的程序应尽可能短。 产品展示 您的商店正在使用以下五种不同的产品进行销售。每个产品都有一个全小写的名称,以及在一天中的什么时候可以购买多少个不同的规则。 television:有5库存的平板电视可能从00:00:00(午夜)到采购00:59:59。 smartphone:有10智能手机库存,但从00:00:00(午夜)起排队的所有客户在00:59:59用完时会收到一张代金券。 tablet:有些10平板电脑可以随时购买。 laptop:从00:00:00(午夜)到可以购买数量不限的笔记本电脑07:59:59。 lightbulb:随时可以购买无限数量的灯泡。 输入值 多行字符串,每行采用以下格式。行按时间戳排序。 <time stamp> <product name> <ticket number> 票证号码为8位数字。最后一位数字是一个校验位,等于前七个数字模10的总和。要生效,票证号必须具有正确的校验码,并且必须严格大于所有先前的票证号。 产品名称是上面列出的字符串之一。 时间戳是一天中的格式的时间HH:MM:SS,其中HH是从00-23两位数小时,MM并且SS是两位数分钟和秒分别。 输出量 输出是以下字符串之一,每张票证一行。必须按顺序应用条件。 Expired offer (适用于电视,智能手机和笔记本电脑。)门票的时间戳是在购买产品的截止日期之后。 Invalid ticket 票证号小于或等于前一张票证的号,或者校验位无效。 Give voucher (适用于智能手机。)该产品缺货,但是在报价过期之前排队的所有客户都可以进行雨淋检查。 Out of stock(适用于电视和平板电脑。)所有产品均已售出。抱歉,数量有限。 Accepted满足所有条件,所以给他们产品。请注意,只有接受的票证才能减少库存的物品数量。 例 Input Output ---------------------------- -------------- 00:00:00 television 00010001 Accepted 00:00:25 smartphone 00011697 Accepted 00:01:25 …

3
生成牙签序列
什么是牙签序列? 根据维基百科 在几何形状中,牙签序列是一个二维图案序列,可以通过将线段(“牙签”)重复添加到序列中的先前图案来形成。 设计的第一阶段是单个“牙签”或线段。第一阶段之后的每个阶段均采用先前的设计,并针对每个裸露的牙签末端,在该末端以直角居中放置另一个牙签。 此过程导致增长的模式,其中阶段n的段数以分形模式在0.45n2和0.67n2之间振荡。如果T(n)表示阶段n的段数,则当n接近2的幂时,出现T(n)/ n2接近其最大值的n值。发生在大约是2的幂的1.43倍的数字附近。牙签序列中各阶段的结构通常类似于T平方形或Ulam-Warburton细胞自动机中的细胞排列。 该图案中所有被牙签包围的边界区域(但不能被牙签交叉)必须是正方形或矩形。据推测,牙签图案中的每个开放矩形(即,一个完全被牙签包围但内部没有牙签的矩形)的边长和面积为2的幂,其中边长之一最多两个。 任务 您必须制作一个程序或函数,使其从STDIN,函数自变量或命令行自变量中获取输入,并在该阶段进行嘟嘟分形。除不可避免的情况外,禁止在行尾使用换行符。边界框必须最小,包括前导和尾随空间。对于初始线,我们\在空间中设置两个对角线。输入保证小于2000。至少一行具有非空格字符。允许尾随空格。 测试用例 1 \ \ 5 \ /\ /\ / /\ \/\/\ \ \ \ \ \/\/\ \/ / \/ \/ \

8
感恩节火鸡
(希望它仍然是您的感恩节) 您在感恩节晚餐上得到了火鸡,但您不知道如何均匀分配。问题是,有些人比其他人吃得更多,所以您需要找到解决方案 输入值 将有两个输入。首先将是各种人的ASCII艺术。 o o \|/ \|/ | | | / \ / \ 技术规格 每个人占用3列的宽度。每个人都由一列空格分隔。每个人的最上层是一个o。在下方,分别o以1和偏移-1x \和/。从输入o到的第二行到最后一行,|每人这些的数量即为它们的“高度”。您需要从每个人中提取的唯一数据是他们的“身高”。 总会有至少一个人。每个人的身高至少为 2。程序应处理的最大高度至少为64。 如果您想用空格填充输入以形成矩形,请在答案中指定。 第二个输入是土耳其。火鸡并不是真正的火鸡,而是更大的NxM火鸡尺寸。如果第二个输入为3x2,则土耳其的尺寸为3 * 2,总面积为6。 输出量 输出可能是列表,或者是您语言最接近的替代项(例如Array)。您也可以输出一个字符串,其值之间用空格分隔。 每个人的值应按输入顺序输出。 挑战 您的目标是在人们之间划分火鸡的面积。 一个示例场景: 假设他们是两个人,身高分别为3和6。如果有火鸡5x3。土耳其需要分配的总面积为15。 现在,您将如何在所有人之间分配它?就是这样: the_persons_height TurkeyForAPerson = -------------------- * turkey_area sum_of_all_heights 这意味着,对于第一个身高为的人3,他们将得到3/9*15火鸡,或5,对于第二个身高为的人,6他们将获得6/9*15或10火鸡。 输出量 输出必须仅由数字和组成.,除非您选择获得奖金。在这种情况下,它只能由数字,空格()和斜杠(/)组成。 完整的例子 输入: 6x5 o | o \|/ \|/ …

7
在下雨吗?我不知道
这些是雨滴: ! | . " : 这些是云粒子: ( ) _ @ $ & 我想让您验证一下,是否有文本在下雨。如果在每个雨滴上方都存在一个云团,则在下雨。每个雨滴都必须有一个云粒子。输出表示您的结论的真实或虚假值。 有效的例子 (@@@@@@) ( $ & ) Q ( ) .. . ! : . |" ! . ()()() ...... @_$ & errrr h_r-5 .:. . " 无效的例子 ! () $$$$$ ( ) ::::: ..... 这是一个代码高尔夫球,因此最短的字符程序胜出。

8
四舍五入之前需要加1的小数位数是多少?
当四舍五入一个数字时,如果下一位数字是>= 5您加1。例如: 3.1415926535 rounded to 1dp is 3.1 3.1415926535 rounded to 4dp is 3.1416 <-- Note the 5 changed to 6 3.1415926535 rounded to 5dp is 3.14159 3.1415926535 rounded to 9dp is 3.141592654 <-- Note the 3 changed to 4 您面临的挑战是接收一个整数作为输入并输出小数位数,然后在该位数之前四舍五入该数字的平方根-即出现的数字位数之前的小数位数>= 5。 整数将在0到100,000之间(含0和100,000),因此对于59752的边缘情况,您需要支持17个小数点(以检查第17位)。 如果您的编程语言无法更改小数点位数,则可以显示“?” 给用户的信息。 例: Input Root Output 5 …
10 code-golf  math 

4
重排不等式
背景 该排序不等式是基于重排数的不平等。如果我有两个长度相同的数字列表,则x 0,x 1,x 2 ... x n-1和y 0,y 1,y 2 ... y n-1相同长度,其中I允许重新排列列表中的数字,最大化和x 0 y 0 + x 1 y 1 + x 2 y 2 + ... + x n-1 y n-1的一种方法是对2个列表进行排序非递减顺序。 在此处阅读Wikipedia文章。 任务 您将编写一个从STDIN接受输入的程序,或者接受2个数字(长度相同)的数组(或相关容器)的函数。 假设您编写了一个接受两个数组(a和b)的函数,您将找到重新排列第二个数组(b)中的数字以最大化的方法: a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+...+a[n-1]*b[n-1] 在这种情况下,如果阵列b为[1 0,2 1,2 2,3 3,3 4 ](指数为清楚起见), [1 0,2 1,2 2,3 …

4
将文本对齐块
任务 您的任务是编写整个程序,该程序会将给定的输入与给定大小的块对齐。 输入: 40 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse …

5
实施dog bash实用程序
dog 是一个命令行实用程序,它接受任意数量的参数,其中第一个是要写入的文本,其他则是任意多个文件。 该dog实用程序将在这些文件上等分文本。如果还有余数n,则第一个n文件会再增加一个字节 dog与catforall 相反,x以下内容应成立。 $> dog x a.txt b.txt ... $> cat a.txt b.txt ... x$> 其中...表示任意多个文件。 一个示例(12个字节,3个文件,可以平均分割): $> ./dog.py "Dogs vs Cats" a.txt b.txt c.txt $> cat a.txt Dogs$> cat b.txt vs $> cat c.txt Cats$> cat a.txt b.txt c.txt Dogs vs Cats$> 带有余数的示例(13个字节,5个文件,余数3): 9$>./dog.py "0123456789abc" a.txt b.txt …

5
Levenshtein距离偏差
用具有A给定字符串S的名称的语言编写程序,以输出另一种编程语言的名称B。的长度B必须等于该Levenshtein距离之间(缩写“LD”)A和S。要被视为一种编程语言,B必须具有esolangs页面或Wikipedia页面。 例: (Suppose the program is coded in Python) Input: Jython Output: R Input: Pyt4oq Output: Go Input: Rs7hon Output: C++ Python和之间的LD Jython为1,因此输出R 您最多只需要掩盖最多LD 12。您可以假设LD 0永远不会发生。 这是代码高尔夫球,因此以字节为单位的最短程序获胜。 (这是我的第一个挑战!感谢您的反馈) 排行榜 显示代码段 var QUESTION_ID=58974,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o …
10 code-golf  string 

11
“我”有“我”发生的机会
设计一个随机数生成器,其中第i个数字对于所有0 <i <14都有i%的出现几率。0应该恰好有9%的出现几率。生成器的种子应该是系统时间。您不能将预定义函数用于随机数生成。 基本上1发生的机率是1%,2发生的机率是2%,依此类推,直到13发生的机率是13%。这是代码高尔夫球,因此最短的代码获胜。

7
Base85编码
挑战 编写一个程序,该程序可以接受包含任何ASCII可打印字符的单行字符串的输入,并输出以Base85编码的相同字符串(使用big-endian约定)。您可以假设输入将始终≤100个字符。 Base85指南 四个八位位组被编码为(通常)五个Base85字符。 Base85字符的范围从!到u(ASCII 33-117 )和z(ASCII 122)。 要进行编码,您需要对四个八位位组(一个32位数字)连续执行除以85的操作,然后将余数加33(每次除法后)以获得编码值的ASCII字符。例如,此过程的第一个应用程序在编码的块中产生最右边的字符。 如果一组四个八位位组仅包含空字节,则将它们编码为,z而不是!!!!!。 如果最后一个块短于四个字节,则将其填充为空字节。编码后,将从输出末尾删除与填充相同数量的字符。 编码的值应在之前<~和之后~>。 编码值不应包含空格(针对此挑战)。 例子 In: easy Out: <~ARTY*~> In: test Out: <~FCfN8~> In: code golf Out: <~@rGmh+D5V/Ac~> In: Programming Puzzles Out: <~:i^JeEa`g%Bl7Q+:j%)1Ch7Y~> 以下代码段将编码给定输入到Base85。 显示代码段 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>String.prototype.toAscii85=function(){if(""==this)return"<~~>";for(var r=[],t=0;t<this.length;t+=4){for(var i=(this.substr(t,4)+"\x00\x00\x00").substr(0,4),o=0,n=0;4>n;n++)o=256*o+i.charCodeAt(n);var s=[];for(n=0;5>n;n++){var e=o%85;o=(o-e)/85,s.unshift(String.fromCharCode(e+33))}r=r.concat(s)}var a=4-this.length%4;return 4!=a&&r.splice(-a,a),"<~"+r.join("").replace(/!!!!!/g,"z")+"~>"};</script><style>#in,#out{margin:20px;width:400px;resize:none}</style><input id="in" type="text" value="Base85"><button onclick="$('#out').text($('#in').val().toAscii85())">Submit</button><br><textarea id="out" rows=5 disabled></textarea> Run …

1
缩短长号
在打代码时处理长数字时,很难减少代码的长度,那么您有一些技巧来使数字更短并且更易于管理吗? 例如,下面的Pyth代码显示“ Hello world”,但以44字节为单位,这并不令人满意: Vcjkj85942000775441864767076 2 7=k+kCiN2)k 那么如何缩短长号85942000775441864767076呢?
10 code-golf  tips  pyth 

1
用数字速记计算表达式
您在一家想要制作用户友好型计算器的公司工作,因此,您要承担增加用户使用“数字速记”(即表示数字的字母,例如kfor)功能的任务1000。因为您的公司希望在上述计算器中节省存储空间,所以您必须尽可能减少代码,以降低存储成本。 你的任务 您将创建一个函数,该函数要么从STDIN读取表达式作为输入,要么将其用作参数并返回其求值或将其打印到STDOUT。 一些澄清 让我做一些定义。首先,我们有输入,我称之为表达式。可能类似于以下内容: x + y / z 在此表达我们有三个数字:x,y,和z,由运营商(分离+和/)。这些数字不一定是正整数(甚至整数)。使事情变得复杂的是,当我们必须评估数字中包含的速记时。例如, 2k15 为了进行评估,我们将其分为三个数字:2,1000(即k)和15。然后,根据规则,我们将它们组合以获得 2*1000 + 15 = 2015 希望这会使理解以下规则更加容易。 规则 注意:除非另有说明,否则您可以解释单词“数字”或其同义词以包括速记。 以下是您的函数必须能够处理的数字速记形式:k, m, b, t, and e。分别k, m, b, and t对应值1000, 1000000, 1000000000, and 1000000000000(一千,一百万,十亿和一万亿)。该e速记将永远跟着另一个号码,n和代表10^n。您必须允许数字速记出现在n之前和之前e。例如,kek计算为1000*10^1000。 为简单起见,如果数字中有简写形式e,则只会使用一次。 速记之前的任何数字(包括速记)都将与其相乘。例如120kk将被评估为120 * 1000 * 1000。如果前面没有数字,则必须假定数字为1(就像在数学中将变量x隐式地视为一样1x)。例如e10计算为10^10。另一个示例:2m2k计算结果为2*1000000*2*1000(未添加任何内容)。 在包含简写的数字中,最后一个简写之后的任何数字(不应用简写)都会添加到该数字中。例如2k12将被评估为2*1000 + 12。例外e是使用速记,在这种情况下,后面的数字(包括速记)e将被视为n并被评估为10^n(请参阅第一条规则)。 您的函数必须能够处理+, -, *, and /分别为加法,减法,乘法和除法的运算符。如果您愿意,它可能会处理更多。 根据操作顺序评估操作。 …
10 code-golf 

4
向后关系
编写一个程序或函数,给定两个ASCII字符串A和B,它们将产生字符串,A'并且B'在公共子字符串的位置将其反转。查找过程A'如下: A' 最初是空的。 如果的第一个字符A位于中B,则找到的最长前缀A是的子字符串B。从中删除此前缀A,并将其反转添加到中A'。 否则,从中删除该第一个字符A并将其添加到中A'。 重复步骤2-3,直到A为空。 查找B'的方法与此类似。 例 让我们考虑一下字符串A = "abc bab"和B = "abdabc"。对于A',会发生以下情况: A = "abc bab":第一个字符"a"在B中,而A的最长前缀在B中发现"abc"。我们从A删除此前缀,并将其反转添加"cba"到A'。 A = " bab":第一个字符" "不在B中,因此我们从A中删除了该字符并将其添加到A'中。 A = "bab":第一个字符"b"在B中,并且在B中找到的A的最长前缀是"b"。我们从A删除该前缀,并将其反转(仍为"b")添加到A'。 A = "ab":第一个字符"a"在B中,而A的最长前缀在B中发现"ab"。我们从A删除此前缀,并将其反转添加"ba"到A'。 A = "":A为空,因此我们停止。 这样我们得到A' = "cba" + " " + "b" + "ba" = "cba bba"。对于B',过程类似: B = "abdabc" -> "a" …
10 code-golf  string 

1
绘制双曲平面细分
在双曲平面上绘制细分图(Poincare盘),例如: 该程序有四个输入: 1)多少个边/多边形(在此示例中为3个)。 2)每个顶点有多少个相交(在此示例中为七个)。 3)要渲染的距离中心顶点有几步(如果仔细观察,此示例中为5)。这意味着包含一个顶点,前提是可以从中心以5步或更少的步长到达该顶点。如果同时包含两个顶点,则渲染边缘。 4)图像的分辨率(单个像素,图像为正方形)。 输出必须是图像。边缘必须渲染为圆弧,而不是直线(庞加莱圆盘投影将线变成圆)。点不需要渲染。当用户放入非双曲线的内容时(即在每个顶点处有5个三角形相交),该程序不必正常工作。这是代码高尔夫球,因此最短的答案为准。

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.