Questions tagged «code-golf»

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

5
高效的科学计数法
前几天,我的化学老师向我们解释了科学记数法(使用小数并乘以十的幂可以更轻松地表达大数),这使我回到了几年前。在学习了基础知识之后,我们做了很多典型的数学问题,其中一些问题如下: 用科学计数法表示以下内容: a)50000000 b)120000000000000 c)90000000000000000000000000000000000000 d)pi ^ e ^ i ^ j ^ k ^ std :: vector ... z)200 ... 我想:“什么?我们被告知,科学记数法被用来提高书写效率,但是某些情况下根本没有效率!” 考虑数字 300 及其科学表示法: 3x10^2 什么,科学标记的版本实际上会占用更多空间?现在我们不能拥有它了吗?(屏幕空间是宝贵的。) 我们可以确定自己是否可以用科学计数法写数字更节省空间,或者... 任务 您的程序或函数应输入n任意大小的正数(取决于语言所支持的大小),并输出科学编号的数字。 但是,如果n在删除尾随零和尾随小数位后,原始数字显示的字符数少于或等于其科学标记版本的字符数,则必须输出该原始数字n。 您的代码必须尽可能短,因为输出也必须尽可能短。 技术指标 高效科学计数法定义如下: bx10^e b是输入数除以10的幂以得出的值1 <= b < 10。该数字必须删除所有结尾的零(如果需要,还包括小数点),但必须具有原始数字的精度(当然,要达到您语言中的小数点限制)。也就是说,90000变成9,13.500变成1.35,0.000675变成6.75等。如果该数字最终包含的小数位数超出了您的语言所能处理的范围,则应四舍五入到最大小数位数。 e是将十提高到的指数n = b x 10^e(请记住,如果n小于1 ,则此数字必须为负)。此数字不应有任何尾随零或小数点(主要是因为如果它不是整数,那是错误的...)。 字符x10^ 必须保留在b和之间的字符串中e。 测试用例 Input …
12 code-golf  string  math 

14
准备多项选择测试
介绍 注意:这不是鼓励作弊的方法。正如C'O'Bʀɪᴇɴ所说的那样,学习是通过测试的最佳解决方案:3。 考虑对多项选择测试的以下答案: ABCBCAAB 下表说明了答案是否匹配: A B C B C A A B A 1 0 0 0 0 1 1 0 B 0 1 0 1 0 0 0 1 C 0 0 1 0 1 0 0 0 这给了我们以下数字: 10000110, 01010001, 00101000 挑战是打印这些二进制数字。但是,重要的是要查看在选择题测试中使用了哪些字母。例如: ABCDCDBCDABC 这个最高字母是字母表中D的第4个字母。因此,我们需要输出4个不同的二进制数。即: 100000000100, 010000100010, 001010010001, …

4
选择电影场景
介绍 最后,电影公司为您的电影筹集资金。他们给了您最大的预算,还设置了电影的放映时间。 现在,您可以开始进行预生产。您已经计划了一堆场景,但是并非所有场景都适合预算,因此电影的拍摄时间也会太长。您知道每个场景的重要性。您的目标是选择场景,使电影不会太贵,太长而平庸。 输入值 您得到了,running time并且budget工作室已经批准: [25, 10] 您具有的场景列表包括running time,costs以及importance每个场景的: [ [5, 2, 4], [7, 1, 3] ] 如果阵列不适合您,请选择另一种最适合您的输入格式。时间以分钟为单位。预算和成本以数百万随机货币计。重要性在到的范围内[1–9]。所有数字均为整数。 输出量 在以下情况下,输出要包括在影片中的场景列表: 的总和importance最大。 费用不超过预算。 长度在允许的运行时间的±5分钟范围内。 场景的顺序无关紧要,不需要保留。 您可以输出数字列表或数组。您的输出可以具有从零开始或从一开始的索引: [0,2,5] – 0, 2, 5 – 0 2 5 [1,3,6] – 1, 3, 6 – 1 3 6 可能有多种解决方案适用于任何给定的输入。您只需要找到一个。 约束条件 场景不能缩短,也不能便宜。 每个场景只能包含一次。 要求 您的程序必须在电影的实际长度之内完成。 …

1
是否有变相括号?
有人给了我们一个字符串,但所有类似方括号的字符都已更改为普通字符,我们不知道是哪一个,甚至不知道有多少个。我们所知道的是,如果L1,L2,L3,...,LN是不同种类的左括号和R1,R2,R3,...,RN不同种类的相应右括号,它们都是不同的(2N个不同的括号字符),则字符串是有效的,前提是它是其中的一个(+是普通字符串串联): L1+X+R1,,L2+X+R2...,,LN+X+RN哪里X是有效的字符串, X+Y,其中X和Y是有效字符串, 不是方括号字符的任何单个字符。 空字符串 我们知道,在更改括号之前,它们以有效的字符串开头,并且没有将其更改为字符串中已经存在的任何字符。每个支架也至少存在一对。您可以重构哪些字符最初是左括号和右括号对(找到Li和Ri遵循给定条件)? 输出括号内的字符对。例如,如果(){}[]实际上是方括号字符,则可能输出(){}[]或{}[]()或[](){}等。对于字符串,可能有多种方式执行此操作,您只需要返回一个,这样就不会有带有更多对的方括号分配(请参见示例)。请注意,输出字符串应始终具有偶数长度。 例子: abcc- c不能为方括号,因为没有其他字符出现两次,但ab可以为方括号对,因此您将精确输出ab。 fffff -任何最多包含一个字符的字符串都不能带有方括号,因此您将返回空字符串或不输出任何内容。 aedbedebdcecdec -该字符串不能有任何括号,因为有1 a,2 bs,3 cs,4 ds和5 es,因此两个字符不会出现相同的次数,这是必须有括号的。 abcd-可能的分配是ab,cd,abcd,cdab,adbc,bcad,ac,ad,bc和bd,(以及空分配,其中所有的人都有),但你必须返回最长的任务之一,所以你必须返回abcd,cdab,adbc,或bcad。 aabbcc,abc-这些都有ab,ac和bc为有效对。您必须返回这些对中的一个,无论哪一个都没有关系。 abbac-a和b具有相同的字符数,但是它们实际上不能工作,因为其中一个出现在所有其他出现的左侧和右侧。什么也没返回。 aabcdb- cd和ab是精确的两个括号对,因此输出cdab或abcd。 abcdacbd-只有一对可以立即实现,但是ab,ac,bd,cd,和ad都可能对你可以退货。无论选择哪个对,都有一个实例,其中有一个其他字符,它禁止任何其他对,除非是的情况下ad,其中的其他对bc和cb也不能单独出现,因此不可能与ad。 这是代码高尔夫,因此以字节为单位的最短代码获胜。如果可能的话,来自STDIN的输入。如果不可能,请在答案中指出输入法。

1
绘制并标记ASCII六角形网格
在上一个挑战中,我主要是手工绘制了第一张图(借助vim的可视块模式)。但是肯定有更好的方法... 给定一个二维输入(宽度和高度),则输出具有这些尺寸的六边形网格(在ASCII艺术中)。 这是在简介中引用的图表(进行少量修改),它应该是输入的输出width=7, height=3: _____ _____ _____ / \ / \ / \ _____/ -2,-1 \_____/ 0,-1 \_____/ 2,-1 \_____ / \ / \ / \ / \ / -3,-1 \_____/ -1,-1 \_____/ 1,-1 \_____/ 3,-1 \ \ / \ / \ / \ / \_____/ -2,0 \_____/ 0,0 \_____/ …

3
帮我关上箱子
在发布时,这一挑战的灵感应该非常明显。 任务 您必须创建一个Shut the Box样式程序(不是功能程序)。关闭盒子的基本知识是: 玩家尝试通过转动一组标有1-9的杠杆来关闭盒子。他们必须通过翻转操纵杆来这样做。每个回合的事件顺序如下: 显示了杠杆的当前位置。 在新游戏中,操纵杆的位置应显示为123456789。 在带有关闭杆的游戏中,所有关闭杆均显示为-。例如,在关闭了1、5和9的游戏中,输出为-234-678-。 di(c)e被滚动。 如果杠杆7、8和9都断开,则仅抛出一个六面模。否则,将抛出2个六面骰子。 提示玩家选择他们希望翻转的杆数。 如果玩家选择数字> 9或<0,则游戏结束。 如果玩家选择了已经关闭的手柄,则游戏结束。 玩家选择那么多杠杆。 如果杠杆总和不等于掷出的di(c)e的值,则游戏结束。 如果所有杠杆都关闭,那么恭喜您,您赢了。否则,请返回步骤1。 计划规则 在每一转,您都应该输出控制杆的当前位置。 您必须输出带有短语的纸卷值You rolled:(注意空格)。 您必须提示(并等待)要使用短语切换的操纵杆数量How many levers to flip:(请注意空格)。 您必须提示(并等待)与短语指定的播放器一样多的操纵杆Which lever to flip:(注意空格)。 您必须翻转指定的控制杆。 如果游戏结束,您必须输出Game Over。 如果玩家在没有拉杆的情况下完成转弯,则必须输出 You win! 游戏范例 123456789 You rolled: 5 How many levers to flip: 5 Which lever …
12 code-golf  game  random 

5
实施网址缩短器
网址太长。因此,您必须实现一种缩短URL的算法。 一世。URL的结构 URL有两个主要部分:域和路径。域是第一个斜杠之前的URL的一部分。您可以假定URL不包含协议。道路就是一切。 ii。领域 URL的域将类似于:xkcd.com meta.codegolf.stackexcchhannnge.cooom。每个部分都是按周期分隔的,例如在中blag.xkcd.com,这些部分是“ blag”,“ xkcd”和“ com”。这是您将要执行的操作: 如果它包含两个以上的部分,则将最后两部分放在一边,并连接其余部分的第一个字母。 然后,将其连接到第一个字母到倒数第二个字母。 添加句号以及倒数第二部分的第二个和第三个字母。 丢弃最后一部分。 iii。路径 路径将类似于:/questions/2140/ /1407/。和以前一样,“部分”由斜杠分隔。对于路径中的每个部分,请执行以下操作: 加上斜线 如果它完全由十进制数字组成,则将其解释为数字并转换为36进制整数。 否则,添加零件的第一个字母。 最后,添加一个斜线。 iv。杂项 这是代码高尔夫球,因此最短的代码获胜。 路径可以为空,但URL始终以斜杠结尾。 不会有一个协议(例如http://,file:///) 域中永远不会少于两个部分。 有标准漏洞。 例子 进:xkcd.com/72/ 出:x.kc/20/ 进:math.stackexchange.com/a/2231/ 出:ms.ta/a/1pz/ 进:hello.org/somecoolcodeintrepreteriijjkk?code=3g3fzsdg32,g2/ 出:h.el/s/

4
平滑vs.矮胖vs.断花体
基于块状vs.平滑字符串。 /\_/\/\__/\/\/\/\_/\_/\当您真的很无聊时,在键盘上制作花粉很有趣。但是,并非所有的花鼓都是一样的。有些花鼓是光滑的,例如\___/,而有些是矮胖的,例如/\/\/\/\。其他人则完全崩溃,例如////_\\\ 在每个N字形字符中,都有字形N-1连接点。每个弯头连接点分为以下三种类型之一: 平滑(角度>“ 90度”): \_ __ _/ 矮胖(角度=“ 90度”) /\ \/ 坏了(没有连接的任何东西) // \\ /_ _\ 让我们来定义的平滑度是那些光滑,结的比例chunkiness和破碎类似定义。每个值的范围在0和之间1。花样的光滑度,粗大度和断裂度之和始终等于1。 例如,该花体/\/\\_//\_具有3个平滑结,4个块状结和2个折断结。因此0.3333,它是光滑,0.4444厚实和0.2222破碎的。 空字符串和只有一个字符的字符串具有未定义的值,所有输入的长度至少为2个字符。 挑战 编写一个程序,接受任意长度的花样,并输出其平滑度,块度和破损值中的任意两个。 您可以编写程序或函数,并通过STDIN,命令行或字符串参数输入。 您可以假定输入的长度至少为> = 2,并且仅由/\_带有可选尾随换行符的字符组成。 打印(或返回一个函数)两个浮点数的精度至少为四舍五入,四舍五入或截断。如果真实值为2/3,可接受的值包括0.6666和之间的任何值0.6667,甚至是诸如0.666637104。如果确切值为1/3,则任何包含的答案0.3333都是有效的。如果值小于1,则可以省略尾随零,也可以省略前导零。 根据需要输出三个值中的任意一对,只需确保说明两个值和顺序。 以字节为单位的最短代码获胜。 例子 /\/\\/\//\\→平滑0,Chunkiness 0.7,残破0.3 _/\\_/\\/__/\\\//_→平滑0.29411764705,Chunkiness 0.29411764705,残破0.41176470588 //\\__/_\/→平滑0.3333333,Chunkiness 0.2222222,残破0.4444444 奖励问题:您更喜欢哪个,平滑的,粗大的或折断的花形?

10
9忍者之死
受到聊天中此对话的启发。 您在此挑战中的目标是模仿忍者并计算他留下的死亡人数。 眼镜 您的忍者开始时还有9人死亡。他还获得了不可或缺的开始健康状况作为输入。 然后,他将改变自己健康状况的事件清单作为输入。这些可以是负整数,正整数或零整数。 在任何时候,如果他的健康状况达到或低于零,他就会丧命,并且健康状况会恢复到最初的健康状况。 您的程序应报告他留下的死亡人数。如果他的剩余零个或更少,则应dead改为输出。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 测试用例 3, [] -> 9 100, [-20, 5, -50, 15, -30, -30, 10] -> 8 10, [-10, -10, -10, -10] -> 5 10, [-10, -10, -10, -10, -10, -10, -10, -10, -10] -> dead 0, [] -> dead 0, [1] -> dead …

1
做一个青蛙解算器
🐸🐸 您必须制作最短的程序,才能始终在9x9网格上找到简化Frogger游戏的最佳解决方案。 课程内容: L-日志(长度:3-4)。当您跳上日志时,它将随身携带。 V -车辆(长度:1-2) 速度(1-2):在该行的左侧是该行中元素移动的速度。 空格:元素之间始终至少有两个空格。 方向:在“车辆”和“对数”部分中,每个车道的移动方向在左右方向上交替。 课程结构: 如果是资本,那就行了;如果是小写,则向左移动。连续的所有元素都朝着相同的方向。一旦元素的一部分离开屏幕,它就会出现在屏幕的另一侧。 第一行是安全区域。青蛙始于F,始终是同一地点。 接下来的3行是载有车辆的道路。 下一行是安全区域。 接下来的3行是带有Logs的水(接触水==死亡)。 一旦到达W车道,您就赢了。 如果青蛙死了,它会回到 F 播放器控件: L - 剩下 R - 对 U -向上 D - 下 W -等一下 移动后,另一帧通过。(请注意,帧是在移动之后通过的,而不是在移动的同时通过。)您的程序必须提供最佳解决方案,例如字符序列URWUUL。如果课程没有解决方案,则程序应输出N。 示例:(由于我是手工完成的,所以我不知道它们是否是最佳解决方案。) 0WWWWWWWWW 1升 2 LLLL 2 llll 0 1 vv vv 1 V V 1 vv 0楼 …

22
10 9 8 7 6 5 4 3 2 1…打印2016
为了解决我在Puzzling遇到的挑战,您的目标是输出2016。 规则: 您必须10 9 8 7 6 5 4 3 2 1按该顺序包括数字。它们可以用作单独的整数,也可以串联在一起(例如1098),但是它们10不能分隔为1和0-数字之间不能存在任何字符。请注意,在某些语言中,10可能实际上并不表示整数文字10,这是可以接受的。 您的代码不得包含任何其他数字或预定义的数字变量或常量(因此T,不允许使用Pyth,因为它是数字常量)。 您必须使用数字进行计算 2016。2016不允许简单地输出而不对所需的数字执行任何操作(例如,通过解码仅包含字母字符的编码字符串)。也不允许分段输出2016(例如20,16则为);您必须具有由数值组成的单个输出2016。 字节最少的有效答案将获胜。

7
屏蔽IP地址并广播
背景 受这个Unix.SE问题(当然还有我自己的回答)的启发。 当为接口指定IP地址时,通常以点分十进制形式给出: a.b.c.d e.f.g.h 其中a.b.c.d,实际地址e.f.g.h是子网掩码。 当用二进制表示时,网络掩码基本上是一堆1比特,然后是一堆0比特。当将网络掩码与给定的IP地址按位与时,结果将是地址的网络部分,或者只是网络地址。这将被编程到主机的路由表中,以便主机知道从该接口发送发往该网络的任何内容。 通过从上面获取网络地址并将所有主机位设置为1,可以得出网络的广播地址。广播地址用于发送到给定网络内的所有地址。 挑战 给定点分十进制的IP地址和有效的网络掩码作为输入,请以点分十进制格式提供网络地址和广播地址作为输出。 输入的地址和掩码必须为点分十进制格式的两个字符串。您可以将其作为2个单独的字符串,作为2个字符串元素的列表或数组,或者将地址和掩码由一些合理的分隔符分隔的单个字符串传递。 输出格式受与输入格式相同的约束。 例子 Input Output 192.168.0.1 255.255.255.0 192.168.0.0 192.168.0.255 192.168.0.0 255.255.255.0 192.168.0.0 192.168.0.255 192.168.0.255 255.255.255.0 192.168.0.0 192.168.0.255 100.200.100.200 255.255.255.255 100.200.100.200 100.200.100.200 1.2.3.4 0.0.0.0 0.0.0.0 255.255.255.255 10.25.30.40 255.252.0.0 10.24.0.0 10.27.255.255

12
说明小数
给定十进制形式的<float>, <precision>,您将绘制浮点数小数部分(即小数)的图形表示。例子: 输入:6.75, 4,输出: 6||| 7 ---- 6.75(输入中的第一个数字)是要解释的数字,4(输入中的第二个数字)是管道下方的破折号。 6是7底数6.75,是天花板6.75。管道数是decimal part of first input number * second input number。 输入:10.5, 6,输出: 10||| 11 ------ 输入:20.16, 12,输出 20|| 21 ------------ .16 实际需要1.92根管,但是由于我无法绘制1.92根管,因此我将其最高拉至2。 输入:1.1, 12,输出: 1| 2 ------------ .1 在这种情况下为1.2根管道,因此将其设置为1根管道。 此外,边缘情况。输入:(5, 4即数字为整数),输出: 5 6 ---- 要说明的数字是正浮点数,仅受您的语言能力的限制。 精度数是一个偶数整数,大于2(即,最低要求精度为4)。也可以任意大。 > =将n.5个管道四舍五入到n + 1(即1.5被四舍五入为2,2.5被四舍五入为3)。<n.5个管道四舍五入为n(即1.4 近似为1,2.4近似为2)。 如果您的语言更方便,则可以将输入作为数组,例如[6.75, …

3
重新造句
这一挑战包括两个部分。获胜者将是总字节数最少的解决方案。两种挑战都必须使用相同的语言。 第1部分: 编写一个函数或程序,该函数或程序将仅包含有效词的句子作为输入,并输出所用字符的列表,每个字母的使用次数以及原始句子中每个词的字母数。该程序的输出必须是对下一个程序的有效输入(与输出一样) 我将在后面添加示例和详细规则。 第2部分: 编写一个函数或程序,将第一个程序的输出作为输入,并使用此英语单词列表,并使用来自输出的信息重新创建一个句子。该句子不必与原始句子相同。 更多信息。规则和限制: 第1部分: 第一个输入可以是任何合适的格式,带或不带引号,作为函数参数或来自STDIN,带或不带括号等。 输入的句子将不包含任何标点符号或特殊字符,但最后一个句点/点除外。除句点符号外,输入中的所有字符都将在单词列表中。 句子的第一个字母为大写,其余字母为小写。 第2部分的输出必须以与原始句子相同的大写字母开头(因此不建议将输入转换为小写(但可以)。 输出可以是任何合适的格式: 必须可以将输出直接复制粘贴到下一个程序/函数中 粘贴粘贴时不能进行任何更改,必须将整个输出整体复制并粘贴,而不是部分粘贴。 例如,您可以输出字母表中所有字母的直方图,或仅输出所使用字母的直方图(通常,完成第二部分所需的一切) 您无法输出重复出现多次的字符列表。例如,The queue不能产生output:,Teeehquu (3,5)它应该类似于:Tehqu, (1 3 1 1 2),(3 5)。 第2部分: 程序/函数必须完全像第1部分一样接受输入(一个例外,请参阅以下有关将文件名作为输入的注释。) 如果必须使用方括号,引号或类似内容来解析输入,则这些必须是第1部分输出的一部分。 单词列表可以在这里找到。 单词列表可以在本地另存为w.txt,也可以从url中获取。该网址仅计为5个字节,因此您不需要网址缩短器。 如果程序无法打开文件,而不必读取名称从标准输入的输入(我相信这就是是为Pyth至少的情况下),然后将文件名可以作为一个独立的输入参数。 输出必须仅是一个句子(有效单词列表),以句点和可选的换行符结尾。 输出中的单词数必须与第1部分中原始句子的字母数相同(顺序正确) 原始句子中使用的所有字母都必须在新输出中使用。 句子必须以与原始输入句子相同的大写字母开头,并以句点结尾。 两个部分: 这两个部分的执行时间都不会超过2分钟(随机选择单词,直到无法解决为止)。 使用上面列出的规则,应该有很大的机会复制完全相同的句子,但这不是必须的。 例子: 在以下示例中,显示了一些不同的输入和输出格式。接受更多。 第1部分: 输入: Zulus win. 输出类型1: Z i l n s …

1
为2B写一个口译员
为2B写一个口译员 我喜欢大卫·卡特(David Catt)的深奥语言2B,将内存存储在磁带中,其中每个单元是一个单独的字节带(“子带”)。为此写一个翻译! 语言规范 官方规格可以在这里找到。在本说明书中,"表示范围内的数字0-9(0解释为10),_表示任意长度的字符串。每个像元都存储一个在range范围内的值0-255,上溢/下溢会像BF一样回绕。(感谢@MartinBüttner)。要将文本转换为数字0-255,请使用ASCII码。因为我找不到详细信息,所以我要说磁带长度应该255最小,但是如果您另外知道,请进行编辑。 +-------------+----------------------------------------------------------------------------------------------------------------------------------------+ | Instruction | Description | +-------------+----------------------------------------------------------------------------------------------------------------------------------------+ | 0 | Zeroes the current cell and clears the overflow/underflow flag. | | { | If the current cell is zero, jump to the matching }. | | } | A placeholder for the { instruction. | …

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.