Questions tagged «code-golf»

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

5
跳跃和奔跑
马修喜欢解决难题。每当他设法解决一个问题时,他都会开心地跳来跳去。最近,他真的需要这样做,因为流星雨在他不想掉入的地面上开了坑和洞。 您将获得Matthew想要穿越的风景的一部分,希望最终健康。地面以米为单位,每个米要么是普通地面,要么是一个洞。当他跑步时,他设法跨过每一米。另一种选择是跳跃,每步跨越四米。Matthew从第一个地面电表的最左端开始,想要到达最后一个地面电表(不过,不要超出它-想象一下在景观中给出的最后一个电表以外的无尽洞口)。 输入值 输入在标准输入上以单行形式给出,并以换行符终止。该线由短划线(-)或下划线(_)组成,分别表示地面或孔距计。输入示例可以是: ----__--___--- 给定的景观至少为一处,最长为30米,且始终从地面开始。 输出量 输出是在标准输出上给出的,表示对Matthew的一系列运动命令,即run(R)或jump(J)。如上所述, 奔跑命令使马修奔跑一米,而跳跃则使马修正向前进四米。对于上面给出的示例,可以进行以下移动: RRJRJRR 大致如下所示: 如果没有通过景观的安全路径,!则应打印一个感叹号()。 样本输入 -------- ----__--___--- -_______ -_-_-_-_-_- - 样本输出 JRRR RRJRJRR ! ! (最后的输出为空白,因为没有必要进行任何移动,但是我想Markdown无法解析它) 注意 只需一条可能的路径,因此程序输出不必与样本输出完全一致。只要给出解决方案(如果存在)并且每个移动命令都移动到地面并最终到达最后一个仪表,则输出有效。 标准错误的附加输出将被忽略。 获奖条件 最短的代码胜出,这是高尔夫界的惯例。如果出现平局,则以较早的解决方案为准。 测试用例 有两个测试脚本,包含相同的测试用例: bash(感谢Ventero) 电源外壳 在这两种情况下都调用:<test script> <my program> [arguments]例如./test ruby jumprun.rb或./test.ps1 ./jumprun.exe。 另一个注意 该任务是2011-W24期间在我的大学举行的高尔夫比赛的一部分。参赛者的成绩和语言如下: 104 –哈斯克尔 131 –哈斯克尔 154 – C …

13
海盗宝藏
寻找被海盗隐藏的宝藏真的很容易。为此所需的一切只是一张地图。众所周知,海盗们通过手工绘制地图并以以下方式描述寻找位置的算法:“站在一棵孤独的棕榈树附近,朝森林走30步,朝湖走15步,...” 通过这种路线旅行通常是一个欣赏风景的绝好机会...但是,如今没有人有时间这样做。这就是寻宝者要求您编写一个程序的原因,该程序可以使用给定的地图确定寻宝的确切位置。 输入值 输入包含多条指令<Direction> <Distance>,并用逗号分隔(每条指令后跟一个空格)。 方向是以下之一: N-北,S-南,E-东,W-西, NE-东北,NW-西北,SE-东南,SW-西南。 距离是整数(1到1000)。 输出量 结果是坐标完成后的坐标,保留小数点后三位,中间用逗号和空格隔开。起始位置的坐标为零(0,0)。 第一个坐标为X(东表示坐标大于零,西表示小于零)。 第二个坐标为Ÿ(北手段更加大于零,南手段少大于零)。 例子 1。 N 3, E 1, N 1, E 3, S 2, W 1 3.000, 2.000 2。 NW 10 -7.071, 7.071 3。 NE 42, NW 42, SE 42, SW 42 0.000, 0.000 来源(乌克兰文)。输入格式在那里有所不同。
18 code-golf 

4
帮助琼斯先生享受他的自行车往返
琼斯先生想骑自行车往返。他想以任意顺序参观几个城市,但是他的路线一定不能越过它,因为他不想在假期里两次到同一个地方。因为他真的很喜欢骑自行车,所以路线的长度完全无关紧要,但是他不喜欢在没有目标的情况下绕着风景行驶。他喜欢的路线是从城市直线延伸到另一条,没有任何弯路。 琼斯先生是一位热情的标准高尔夫球手,他希望您找到一个计划,给他计划一个给定的往返城市的计划。输入具有形式A (B|C)。A是一个城市的名字,B并C为它的坐标。您可以假设坐标为正且小于1000。城市的数据集以行分隔。这是一个示例,示例输入可能如下所示: SomeTown(1 | 10) 交流(3 | 4) 无论在哪里(7 | 7) 家(5 | 1) 琼斯先生不是书呆子,他只是想有一个有用的程序。因此,只要满足以下条件,您就可以自行决定输出的外观: 输出是城市地图,并在城市之间绘制了路线。如果正确,则路线不应重叠,应在起点处结束 坐标类似于常规编程:(1 | 1)在NW角。在地图边框上添加标尺,以方便阅读 必须在地图上写下城市名称,但可以随意使用缩写,这在地图上的其他地方都有说明 该地图可以是ASCII图片或图像 保持输出可读 输出可能如下所示: 1234567 1天 2 * * 3 * * 4 B * 5 * * 6 * * 7 * C 8 * ** 9 * * …

15
时间旅行家
以最短的代码在时钟上生成正确时间的获胜。 您是一位经验丰富的时光旅行者,在旅途中会停在许多行星上。每个行星以不同的速度旋转,因此,一天的时间长度不同于我们通常的24小时工作日。结果,行星使用不同小时数的时钟。带有x小时的时钟上的小时与我们的(1、2、3,...,x)排列相似,数字顺时针旋转,x在顶部。 此外,每个行星在一小时内的分钟数不同,在一分钟内的秒数不同。系统将为您提供开始时间和经过的秒数,您必须从中确定结束时间。 输入可以直接从作为参数传递的文件或标准输入中获取。输入的第一行将是您需要处理的时钟数。之后,每个时钟都有三行输入,其中包含以下格式的整数: x y z h m s t 每个字母的含义如下。 x =一天中的小时数(2 <= x <= 99) y =一小时中的分钟数(2 <= y <= 100) z =一分钟中的秒数(2 <= z <= 100) h =起始时间的小时(1 <= h <= x) m =起始时间的分钟(0 <= m <y) s =起始时间的秒数(0 <= s <z) t =经过的秒数 自开始时间起经过t秒后,输出必须是每个时钟的结束时间。您的输出必须格式化为标准时钟时间(HH:MM:SS)。必要时应对数字进行填充,以确保所有数字均为两位数。 测试用例 …
18 code-golf 

5
打印二叉树
受最近关于SO的问题启发... 编写函数以以下格式打印二叉树: 3 / \ 1 5 \ / \ 2 4 6 输出应由一行节点组成,然后由一行/和\表示关系的字符组成,再由一行节点等。 您可以假设所有节点都可以表示为单个字符。 最低层的相邻节点应至少隔开一个空间,上方的节点应适当分开。 有两个孩子的节点应精确地放置在其直接孩子的中间。 亲子关系应该在父母和合适的孩子之间的中间位置(无论您选择哪种方式)。 输入: 输入将作为函数的参数提供。我不会指定树的确切结构,但是它必须可用作实际的二叉树。在我的程序中,没有“树以字符串的形式同时显示为预期的输出”。 您可以打印到输出流或返回包含您选择的输出的字符串。 最短代码的要点,但是与90%正常工作的短解决方案相比,我更喜欢完整工作的长期解决方案。 更新赏金: 为了奖励,我(优化程序)进行了一些小的更改: 输入可以来自STDIN,ARGV或函数参数。 输出必须在STD​​OUT上(或console.log对于JS) 您可以假设输入为数组形式,例如。[1,2,3]要么[1 2 3] 更新2-二进制树实际上应该是二进制搜索树。由于我最初没有提到这一点,因此我将允许用户将将普通数组转换为二进制搜索树数组作为单独的程序对待,而最终字节数仅用于程序将数组作为参数并打印出来像二叉树。

5
修复损坏的随机函数
朋友的计算机上有一个附加卡,该附加卡可生成一个从1到5(含1和5)的完美随机数。不幸的是,他们以某种方式将可乐洒在上面,现在它从1到4的所有数字仅生成2。幸运的是,随机性得以保留,但是2的概率为80%,5的概率为20%,并且没有生成1、3或4。使用此随机源(称为“随机源” BrokenRand()或类似名称),编写一个工作的随机数生成器,该生成器以与原始源相同的完全随机性,以相等的20%概率产生1到5个数字。 最短的程序获胜。BrokenRand由按人口统计选择的客户服务中心咨询机构公正地拨打最少电话的奖励积分,按年龄和性别(即我)细分。

30
棋盘图案
输入: 从stdin或作为命令行参数输入一个小于80的正数。 输出:方形棋盘图案,输入数字的大小。暗场用字母“ X”表示,白场用空格表示。左上角的字段应为“ X”。 需要完整的程序。 例子: 输入 1 输出: X 输入 8 输出: X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X

2
在六角形平铺上计数生物
这项挑战将让您在拼贴游戏Palago中计算“生物”。 生物是可以由六边形网格中匹配颜色的Palago瓷砖形成的任何闭合形状。 游戏Palago由如下图块组成: 这些砖可以旋转120∘120∘120^\circ,240∘240∘240^\circ,或者根本不与任何地方放置在六边形网格上。例如,这是一个需要12个图块的(红色)生物。 挑战 挑战的目标是编写一个程序,该程序将整数n作为输入并计算需要n图块的生物数量(包括旋转和反射)。该计划应能处理多达n=10上TIO。这是代码高尔夫球,因此最少的字节获胜。 示例数据 这些值应与创建者网站的“ 创建计数和估算”部分中找到的数据相匹配。即 n | output ---+------- 1 | 0 2 | 0 3 | 1 4 | 0 5 | 1 6 | 1 7 | 2 8 | 2 9 | 9 10 | 13 11 | 37 12 | 81

15
我乘以源,您(可能)乘以输出!
任务 任务是编写一个程序,该程序输出一致但任意的正整数xXx(因此严格大于0)。这是要抓住的地方:当源重复NñN次(代码被附加/串联N−1ñ-1个N-1到自身)时,程序应该具有的输出的概率以及剩余的概率。输出不变。1N1个ñ\dfrac{1}{N}N⋅xñ⋅XN\cdot xN−1Nñ-1个ñ\dfrac{N-1}{N}xXx 例 假设您的初始来源是XYZ并产生integer 3。然后: 对于:还应该输出的概率为(50%的时间),并输出的概率也为(50 % 的时间)。N=2ñ=2N=2XYZXYZ333121个2\frac{1}{2}2⋅3=62⋅3=62\cdot 3=61212\frac{1}{2} 对于N=3N=3N=3:XYZXYZXYZ应输出333的概率为2323\frac{2}{3}(的时间66.666%)和3⋅3=93⋅3=93\cdot 3=9的概率为1313\frac{1}{3}(33.333%的时间) 对于N=4N=4N=4:XYZXYZXYZXYZ应输出333的概率为3434\frac{3}{4}(的时间的75%)和4⋅3=124⋅3=124\cdot 3=12 的概率为1414\frac{1}{4}(25%的时间) 等等.... 规则 您必须构建一个完整的程序。输出必须打印到STDOUT。 从理论上讲,您的程序应输出具有上述概率的每个可能值,但是由于实现了随机而与之略有偏差是可以的(前提是实现的分布不相同-您不能使用正态分布以节省字节)。 该程序应该(再次,理论上)适用于任意大的NNN值,但是由于精度引起的技术限制对于大NNN是很好的。 输出必须以10为底(禁止以其他任何底数或以科学计数法输出)。允许尾随/前导空格和前导零。 初始来源(当然)必须至少为1个字节长。您可能不会在源副本之间使用换行符。该程序不应接受输入(或具有未使用的空输入)。 这是代码高尔夫球,因此答案的分数是(原始)源的长度(以字节为单位),分数越低越好。 注:此挑战的(多)更难版这一个。

21
从一个开始
给定一个严格的正整数n,请按照下列步骤操作: 用n 1 s 创建一个数组A。 如果A仅具有一个元素,则终止。否则,从第一个元素开始,用A的和替换每对A,如果A的长度为奇数,则保留最后一个元素,然后重复此步骤。 在从第一步到最后一步的每一步之后,输出应包含A的状态。禁止使用标准漏洞。这是一个代码挑战,因此每种语言中字节数最少的解决方案将获胜。 测试用例 这些示例输出中的每一行都是一个状态。您可以通过任何合理的格式输出。 输入: 1 [1] 输入: 4 [1, 1, 1, 1] [2, 2] [4] 输入: 13 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2, 2, 2, 2, 2, 2, 1] [4, 4, 4, 1] [8, 5] [13] …

23
吉米可以挂在绳子上吗?
他原父亲的另一个吉米挑战。看看这些其他 可爱的 挑战。 众所周知,最近我们在平台上看到了与Jimmy相关的挑战。现在,吉米是我之前提到的杂技演员,而他还有其他技巧。 这些技巧之一是用绳子吊起来。这是吉米可以悬挂的绳索的示例: || || || || || || 当吉米挂在绳子上时,看起来像这样: || || /o\ || || || 他可以挂在绳子的左侧或右侧,因此: || || || /o\ || || 也有效。但是他不能只垂悬一个身体部位,所以像这样: || || || /o\| || || 是无效的。请注意,当他垂悬在身体的一部分上时,可以看到绳的另一半,因为吉米没有遮住它。 另外,吉米(Jimmy)不喜欢挂在绳子的底部-吓到他了-因此: || || || || || /o\ 是无效的。 挑战 像上面那样输入吉米的情况,并通过真实或虚假的值输出吉米是否会坚持到底。 细节 编写一个需要输入的程序。这可以通过函数或任何其他适当的输入方法。 输入应该是一个吉米和一根绳子的场景,如上面示例所示。 程序应分别根据Jimmy可以挂在绳子上还是从绳子上掉下来,向控制台输出真实或虚假的值。 吉米能够胜任的标准: 他的两个身体部位都在绳子上。 他不在绳底。 …

19
厄米矩阵?
请注意,此挑战不需要处理或理解复数。 给定一个非空方阵,其中每个元素都是一个由两个元素组成的(Re,Im)整数列表,请确定(给出任何真伪值或任何两个一致值)这是否代表一个埃尔米特矩阵。 注意,输入是一个3D整数数组。不是复数的2D数组。如果您的语言不能直接采用3D数组,则可以采用平面列表(如果有帮助,可以使用n×n或n×n×2形状)。 如果矩阵等于其自身的共轭转置,则为Hermitian。换句话说,如果将它跨过其左上角到右下角的对角线,并取反所有两个元素的叶列表的第二个元素,则它与输入矩阵相同。请注意,翻转和否定的顺序无关紧要,因此您可以先取反,然后再取反。 步行示例 本示例使用带有多余空白的JSON来简化阅读: [[ [2, 0] , [2, 1] , [4, 0] ], [ [2,-1] , [3, 0] , [0, 1] ], [ [4, 0] , [0,-1] , [1, 0] ]] 转置(跨NW-SE对角线翻转): [[ [2, 0] , [2,-1] , [4, 0] ], [ [2, 1] , [3, 0] …

15
在任意(受限制的)无穷集与无序对之间设计一个交换式内射函数
相关,但这只需要正整数,而不必是可交换的 Cantor配对功能在此Wikipedia文章中进行了描述。本质上,这是一种操作,当将其应用于两个值X和Y时,只要给出结果,就可以获得原始值X和Y。 您的任务是设计两个功能:一个执行X, Y -> Z,另一个执行Z -> X, Y。X, Y -> Z要注意的是:必须是可交换的。这意味着Z -> X, Y将无法确定输入是X, Y还是Y, X。 这个挑战的正式定义是: 选择一个可数的无穷大数字S。 设计执行以下任务的两个功能: 给定S中的无序值对,则返回S中的值 给定初始函数的返回值,返回无序的一对值,当通过第一个函数时,该值对将得出输入整数。如果输入不是第一个函数的返回值,则我不关心此反函数的行为。 要求 运行之间的结果应相同。 {a, a} 是无序对 注意:如果您提供证据,您的答案更有可能获得我的支持,但是当我获得答案时,我会进行测试,并在相当确定的情况下对其进行支持。

18
Japt高尔夫技巧
既然我已经完全沉迷于Code Golf,那么现在大概是时候尝试一些高尔夫语言了。 鉴于我几乎只使用JavaScript进行游戏,因此Japt似乎是一门逻辑语言。我将在下一次获得的机会中深入阅读文档,但与此同时,请在下面的答案中发布您对Japt的任何建议。 因为我通常是Japt和高尔夫语言的初学者,所以如果可以的话,如果可以将技巧“翻译”为JavaScript,那将对我有所帮助有很大帮助。
18 code-golf  tips  japt 

23
用n显示n
我想要的是: 非常简单,我想要一个基于文本的显示,要求输入n,然后在显示上显示该值!但是有一个陷阱。每个“真实”“像素”(填充的像素)都必须用该数字表示n。 范例: 系统会为您提供输入n。您可以假设n将是一个数字 Input: 0 Output: 000 0 0 0 0 0 0 000 Input: 1 Output: 1 1 1 1 1 Input: 2 Output: 222 2 222 2 222 Input: 3 Output: 333 3 333 3 333 Input: 4 Output: 4 4 4 4 444 4 4 Input: …

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.