Questions tagged «code-golf»

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

1
小钻石方形算法
菱形正方形算法是分形地形(高度图)生成算法。您可以在此处找到不错的说明: http://www.gameprogrammer.com/fractal.html(用作参考。) http://www.playfuljs.com/realistic-terrain-in-130-lines/(很棒的JS实现,也许您可​​能想偷走他的渲染器。在这里看看这种算法可以实现http:// demos的功能。 playfuljs.com/terrain/。) 通常的想法是,您有4个角作为种子(a),并通过平均这四个角并添加一个随机值(例如,介于-0.5和0.5之间)来计算中心点的高度(b)。如果将其应用于网格,您将再次获得菱形网格(正方形斜面45°),并重复相同的(c,d),但随机范围会变小,例如-0.125至0.125等。 您的程序必须接受许多输入: 一个整数l=1,2,3,...,用于确定具有边长的正方形网格的大小2^l+1。在l=10你将不得不储存约一万个号码。 每个角有四个种子(浮点数) 0<h<1确定粗糙度的参数(H在链接中),该粗糙度表示随机范围最初的大小 a,b代表随机范围的初始下限和上限的参数,并h在每个细化步骤中相乘。(随机数在a和之间统一选择b。 输出必须包含完成的2d网格。 因此,粗略算法如下所示: Create a square grid with sidelength 2^l+1 Place seed values in the corners Repeat: | Perform square steps | Refine Range: a = a*h; b=b*h; | Perform diamond steps | Refine Range 您应该注意一个细节:在网格的边界处,您将只有菱形的三个顶点,因此,您也应该仅计算这三个点的平均值。 一些示例的可视化(请告诉我们您使用了哪些参数)是可选的,但值得赞赏,并且当然不会增加字节数。 可以在以下位置找到该算法的稍微变化的实现:并行投影体素地形生成器 我在javascript中创建了一个小的绘图函数,用于将2D高度图替换为灰度图像。http://jsfiddle.net/flawr/oy9kxpsx/ 如果任何人都喜欢3D并可以编写脚本以3D方式查看地图,请告诉我!=)
12 code-golf  random  grid 

5
计算正方形的Delacorte数
挑战:以任何语言实现Delacorte数的计算。最短的代码获胜。 对于不同整数的一个给定的方阵1..n²(可能边长Ñ在3和27之间至少),其德拉科特数是产品的总和满足gcd(A,B)×distance²(A,B)为每个不同的对整数{a,b}。 以下示例显示了Delacorte数为160的3×3正方形。 3 2 9 4 1 8 5 6 7 在这个正方形中,我们有36个不同的对来计算,例如对4和6:gcd(4,6)× 距离 ²(4,6)= 4 另一个用于测试的示例正方形-的Delacorte数为5957: 10 8 11 14 12 21 4 19 7 9 5 13 23 1 16 18 3 17 2 15 24 22 25 6 20 Delacorte Numbers摘自该编程竞赛 -有关详细信息,请参阅此处。竞赛于2015年1月结束。这真是太好了! 规则: 必要的换行符计为1个字符。您可以在打高尔夫球的解决方案中添加换行符,但是只有在必要时才使用该语言进行计数。 您可以选择处理输入和输出的方式,而不必计算必要的语言框架,例如标准包含或主函数标头。仅实际的代码计数(包括快捷方式/别名定义),例如此C#示例: namespace System …
12 code-golf  math 

2
用相同的总和对数字分组
给定一个正方形的数字(0-9),您的任务是输出将数字分组的一种方式,以便: 每个数字都是一组的一部分 所有组的位数相同 所有组都由一个多边形状的边界界定(这意味着组中的每个数字至少要与同一组的另一位数字相邻[左,右,上,下],除非每个组都有1个元素)。 所有组的总和相同 输入网格将始终是一个正方形:您可以选择任何输入法(包括为函数或方法提供参数)。另外,输入将提供程序应将数字分组的组数。 输入示例: 假设您的输入格式为stringOfDigits numberOfGroups。 输入示例为: 156790809 3 会转换成(的网格sqrt(9) * sqrt(9)) 1 5 6 7 9 0 8 0 9 您必须将其分为3组,每组应包含9 / 3 = 3具有相同总和的元素。 输出:输出应为数字字符串,带有可选的空格和换行符以进行格式化,每个数字后跟一个字母a-z表示其组。numberOfTotalDigits / numberOfGroups每个组中应该确切地包含元素。您将不必将某物分成26个以上的组。 输出示例: 1a 5a 6b 7c 9a 0b 8c 0c 9b 请注意,更换所有a以s bS和bs的as是同样有效。只要每个组都用不同的字母表示,则输出有效。 另外,我希望大多数程序都可以输出类似的东西,因为换行符/空格是可选的: 1a5a6b7c9a0b8c0c9b 在这种情况下,将组a,b或的所有数字相加为c15。此外,所有组都由某个多边形绑定。 无效的输出: 1a 5a …
12 code-golf 

1
组织万圣节糖果-第4洞
如果您感到困惑,请参见孔#1。 每个孩子在万圣节收集糖果桶后会做什么? 按类型和大小排序,当然是1! 挑战 给定一个袋装了各种形状和大小的糖果,请根据以下说明从左到右对糖果进行排序: 第一:糖果的数量(所以一个糖果中的5个比另一个糖果中的4个要多) 第二个(如果在第一个之后有平局):如果数量相同,则具有更大内部区域(基于字符数)的糖果将排名更高。 如果在第二种排序之后仍然有平局,则可以选择第一种。 输入值 您将通过stdin得到糖果。散落。请参阅下面的示例。 输出量 以正确的顺序输出订购的糖果。注意,糖果,应始终放在非常整齐的列来安抚你的强迫症的鱼2。相同类型的糖果应直接放在彼此下面。请参阅下面的示例。 “内部区域”是什么意思? 一块糖果的内部面积由组成整个糖果的总字符来度量。 “边界”内的任何空格都被视为糖果区域的一部分。 边框是任何相连的字符循环,每个字符对角线或相邻。 例如, +--------+ | | | | | | | | +--------+ 具有比 XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX 即使总体上字符较少。 例子 输入: _ \| |/ _ _ lllllll -*------------*- -\ /- lllllll lllllll lllllllll | /\ /\ …

8
计算巨魔通行费以安全通过
受/puzzling//q/626启发 在您的冒险旅程中,您会到达一系列必须跨越的7座桥梁。每座桥下都有一个巨魔。为了过桥,您必须首先为巨魔提供一定数量的蛋糕,占所携带蛋糕的百分比。因为这些都是善意的巨魔,所以它们会把一定数量的蛋糕还给您。 每天开始时,当地巨魔国王设置每个旅行者必须支付的蛋糕税百分比,然后将巨魔蛋糕退款-每个巨魔必须退还给旅行者的蛋糕数量。 您的工作是计算当天在给定条件下通过所有7个巨魔桥所需的最少蛋糕数量。 假设: 输入两个参数:蛋糕税百分比(0到100之间的整数)和巨魔蛋糕退款。 没有人,甚至没有巨魔,都想要被另一只巨魔部分吃掉的蛋糕。如果剩下的只是一块蛋糕,那么巨魔就会得到它。 如果一个巨魔接受了蛋糕税,但是又不得不把所有蛋糕还给你(剩下的蛋糕比以前少或少),它就会生气并吃掉你和你的蛋糕。 每个巨魔必须至少保留一个完整的蛋糕。 您最多只能携带100个蛋糕。 您需要结束当前所在的日子或所有7座桥梁的另一端。 挑战: 编写一个完整的程序以输出当天要行驶的最小蛋糕数,如果今天不能安全行驶,则输出零个蛋糕-您将等待观察明天的数字。 输入应作为标准输入,命令行参数或文件输入传递。 最短的代码(字节数)获胜。 例: 蛋糕税25%,巨魔蛋糕退还2。 从 巨魔1:(19 * 0.75)= 14.25 巨魔1:(14 + 2)= 16之后开始 巨魔2之前:(16 * 0.75)= 12 巨魔2之后:(12 + 2)= 14 等等 19个蛋糕-> 16-> 14-> 12-> 11-> 10-> 9-> 8 18个蛋糕-> 15-> 13-> 11-> 10-> 9-> 8-> …
12 code-golf 

11
做一个序列
如果此序列中任何两个连续数字之间的差为-1或1并且其第一个元素为0,则整数序列为一个序列。 更精确地说:a1,a2,...,an是一个单序列,如果: For any k (1 ≤ k < n): |a[k] - a[k+1]|=1, a[1]=0 输入值 n -序列中的元素数 s -序列中元素的总和 输出量 如果可能的话,一个单序列集/列表/数组/等的长度n加上元素的总和s 空集/列表/数组/等(如果不可能) 例子 对于输入8 4,输出可以是[0 1 2 1 0 -1 0 1]或[0 -1 0 1 0 1 2 1]。可能还有其他可能性。 对于input 3 5,输出为空[],因为无法完成。 规则 这是一个代码高尔夫,最短答案以字节为单位。提交的内容应为程序或功能。输入/输出可以以任何标准方式给出。

3
9洞标准高尔夫-开球
已经有一个9洞挑战赛(这里还有另一个挑战),但是去年真是太糟糕了。而且,我只待了2个月(尽管似乎永远)。而且有很大的不同。 排行榜:(请注意,孔的权重尚未确定) +---------------+------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+ |Competitor | Language | Hole 1 | Hole 2 | Hole 3 | Hole 4 | Hole 5 | Hole 6 | Hole 7 | Hole 8 | Hole 9 | Total | +----------------------------------------------------------------------------------------------------------------------+ |Dennis |CJam | | 31 | | | | | | | | …

4
一天中的时间表不确定性
假设您的闹钟在一个早晨将您叫醒,但您打了贪睡使您可以再睡8分钟。当它再次响起时,您会苦苦地起身去洗个澡,估计需要15到17分钟。然后,您只需刷牙2分钟,然后穿好衣服,大约需要3至5分钟。最后,您在6至8分钟内吃了一份匆忙的早餐,然后跑出了门。 我们可以将该时序表示为8 15-17 2 3-5 6-8。 鉴于您早上的例行活动不确定,自您第一次醒来以来在特定的分钟数内完成每项任务的概率是多少? 假设每个任务需要花费几分钟,我们可以绘制不确定时间跨度的每种可能组合(例如,刷牙需要3、4和5分钟)。该图表显示了所有27种可能性,时间在右边增加,每项N分钟的任务用(N-1)短划线和一个竖线表示,以标记其结束时间。字符之间存在微小的边界,因此8和9列之间的间隔8 min 59 sec变为9 min。 1111111111222222222233333333334 1234567890123456789012345678901234567890 <-- Minute -------|--------------|-|--|-----| -------|--------------|-|--|------| -------|--------------|-|--|-------| -------|--------------|-|---|-----| -------|--------------|-|---|------| -------|--------------|-|---|-------| -------|--------------|-|----|-----| -------|--------------|-|----|------| -------|--------------|-|----|-------| -------|---------------|-|--|-----| -------|---------------|-|--|------| -------|---------------|-|--|-------| -------|---------------|-|---|-----| -------|---------------|-|---|------| -------|---------------|-|---|-------| -------|---------------|-|----|-----| -------|---------------|-|----|------| -------|---------------|-|----|-------| -------|----------------|-|--|-----| -------|----------------|-|--|------| -------|----------------|-|--|-------| -------|----------------|-|---|-----| -------|----------------|-|---|------| -------|----------------|-|---|-------| -------|----------------|-|----|-----| -------|----------------|-|----|------| -------|----------------|-|----|-------| 1234567891111111111222222222233333333334 <-- Minute 0123456789012345678901234567890 显然,该例程最多可能花费40分钟,至少花费34分钟。 问题是,在特定的某个分钟(例如第29分钟),您执行这5个任务中的每一个的机会是多少?假设每个不确定的时间范围均匀地分布在确切的整个分钟内。因此4-7任务有25%的机会需要花费4、5、6或7分钟。 从图表中可以看出,在第29分钟有一个... …

2
程序员花园
程序员花园 作为专业的软件开发人员,您不会冒险将自己暴露在强烈的非人工阳光下,但是您对鲜花也情有独钟,并希望全年保持花园良好的状态。 为此,每个月都会雇用一名园丁来整理房子脚下的花坛。但是,您需要确保园丁工作正常,并为辛勤工作的同事制定适当的薪酬。自然,软件解决方案是最好的。 输入值 将为您的程序提供输入,以描述花坛当前的状态以及需要删除的项目的详细信息。该程序必须输出没有混乱的花园,并打印出园丁的工资明细。输入可以来自STDIN,也可以作为单个命令行参数。 输入的第一行格式为 width height unwanted_item_type_count width花圃的宽度在哪里,花坛height的高度(都是ASCII字符),并unwanted_item_type_count告诉您接下来将出现几行,其中包含要从花园中移除的物品类型的描述。 每种不需要的商品类型的每一行的格式为 width height string_representation name fee_per_item 其中width是项目的宽度,是项目height的高度(均以ASCII字符表示),string_representation是不带换行符的项目的字符串表示形式,是项目name类型的标识符(空格将由下划线替换),以及fee_per_item是指园丁为清除每种物品而需要支付的费用。 例如 3 2 .R.\|/ rouge_flower 3 表示name的项目类型,该项目类型rouge_flower需要花费3来删除,如下所示: .R. \|/ 这些项目将不包含空格,并且任何项目都不能具有完全由点组成的边框,并且字符串表示形式也将是所述的确切大小。因此,以下所有都是无效输入: 3 1 ( ) space 0 1 1 . dot 0 2 1 .! bang 0 3 2 .@.\|/. plant 0 请注意,0是有效费用(费用始终是大于-1的整数)。 还要注意,花坛主要由点(.)而不是空格组成,您可以放心地将空格用作所有输入的定界。花坛总是以点本身为界。 …
12 code-golf 

7
混合基数转换
背景 这里的大多数人应该熟悉几种基本系统:十进制,二进制,十六进制,八进制。例如,在十六进制系统中,数字12345 16将代表 1*16^4 + 2*16^3 + 3*16^2 + 4*16^1 + 5*16^0 请注意,我们通常不希望基数(此处为16)从数字更改为数字。 这些常用的位置系统的一般化使您可以为每个数字使用不同的数字基础。例如,如果我们在十进制和二进制系统之间切换(从最低有效数字的底数为10开始),则数字190315 [2,10]表示 1*10*2*10*2*10 + 9*2*10*2*10 + 0*10*2*10 + 3*2*10 + 1*10 + 5 = 7675 我们将此基准表示为[2,10]。最右边的基数对应于最低有效数字。然后,当您浏览数字(左边)时,您要经过底数(左),如果位数比基数多,则四处循环。 有关更多阅读,请参阅Wikipedia。 挑战 编写一个程序或函数,给定一个D由输入基数I和输出基数组成的数字列表O,将所表示的整数D从base 转换I为base O。您可以通过STDIN,ARGV或函数参数获取输入,然后返回结果或将其打印到STDOUT。 您可以假设: 在数字I和O都大于1。 在I与O非空。 输入数字在给定的基数中有效(即,没有比其基数大的数字)。 D可以为空(表示0)或可以有前导零。您的输出不应包含前导零。特别是,表示结果的结果0应作为空列表返回。 您不得使用任何内置或第三方基本转换功能。 这是代码高尔夫球,最短的答案(以字节为单位)获胜。 例子 D I O Result [1,0,0] [10] [2] [1,1,0,0,1,0,0] …

6
整数情绪
写一个程序或函数“起反应”,以一个给定的整数Ñ(通过函数输入参数/ ARGS /标准输入) 该程序不在乎负数,喜欢偶数,不喜欢奇数,而害怕数字13。 它应该输出以下内容: 如果n <0: -------------------------- | | | | (| _ _ |) | | | | | | | | | oooooooooo | | | | | | | -------------------------- 如果n%2 == 0且n> -1: -------------------------- | | | | (| ^ ^ |) | | | …

15
在没有比较运算符的情况下比较C或C ++中的两个整数
产生最短的程序,该程序将两个有符号整数作为输入(通过stdin或作为参数)并显示3个不同的输出,具体取决于第一个数字是(1)大于,(2)小于还是(3)等于第二个数字数。 赶上 您不能在程序中使用以下任何一项: 该标准比较操作符:<,>,<=,>=,==,!=。 任何库文件除conio,stdio或iostream。 任何非ASCII或不可打印的ASCII字符。 赢家 字符数最少的程序获胜。

7
找到最大的操作
挑战在于使用基本算术运算符(加法,减法,乘法,一元负数)从整数列表中找到最大数目 输入值 整数列表 输出量 使用 intput中的每个整数的最大结果。 输入顺序无关紧要,结果应该相同。 您不需要输出完整的操作,只需输出结果即可。 例子 Input : 3 0 1 Output : 4 (3 + 1 + 0) Input : 3 1 1 2 2 Output : 27 ((2+1)*(2+1)*3)) Input : -1 5 0 6 Output : 36 (6 * (5 - (-1)) +0) Input : …

5
提升力量
挑战 挑战是编写一个程序,该程序需要一个正数a和一个非零数b并输出a^b(a升为幂b)。您只能+ - * / abs()用作数学函数/运算符。这些只能应用于标量值,而不能应用于整个列表或数组。 例子: 1.234 ^ 5.678 = 3.29980 4.5 ^ 4.5 = 869.874 4.5 ^-4.5 = 0.00114959 相关:http : //xkcd.com/217/ 细节 您可以编写在控制台中使用的函数或类似构造。如果您不能使用控制台输入,则可以假定两个数字都通过标准输出或写入文件的形式保存在变量和输出中。输出必须正确至少为4个有效数字。您可以假定a和b均为非零值。超过1分钟的运行时间是不可接受的。最少的字节数将获胜。请说明您的程序和算法。 编辑:只需要考虑积极的基础。你可以假设a>0。请注意,两个数字都不必是整数!!!

8
这些矿山永远是实线
让我们创建一个N×N的空格和下划线网格,可用于直观地确定数字是否为质数。(N可以是任何正整数。) 该网格具有三个简单规则: 第n列包含n-1下划线的重复模式,后跟一个空格。此模式从第一行开始,并在第N行停止(可能在中间模式)。(行和列为1索引)。 第一列将替换为所有下划线而不是所有空格。 如果行索引等于列索引的某个位置出现空格,则将其替换为下划线。 示例:N = 10 1 1234567890 <-- column indices 1__________ 2__________ 3__________ 4_ ________ 5__________ 6_ _______ 7__________ 8_ _ ______ 9__ _______ 10_ __ _____ ^ row indices 索引只是为了清楚起见。普通网格本身(程序必须输出的)是: __________ __________ __________ _ ________ __________ _ _______ __________ _ _ ______ __ _______ _ __ …
12 code-golf  primes 

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.