Questions tagged «code-golf»

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

6
翻倒沙堆
(存在有关无限沙堆以及查找沙堆的标识元素的相关问题。) 给定非负整数矩阵,返回尺寸相同但倒塌的矩阵: 如果矩阵不包含任何大于4的值,则将其返回。 每个大于3的“单元”都会减少4,并且所有直接相邻的单元(上方,下方,左侧和右侧)(如果存在)都会递增。 转到1。 例子: 0 1 0 0 2 0 2 4 0 -> 3 0 1 0 0 3 0 1 3 1 2 3 2 3 4 2 5 1 4 1 2 0 3 3 0 3 3 0 3 3 4 5 6 -> …

10
洛达打高尔夫球的技巧
Röda是fergusq创建的基于流的脚本语言。 您在Röda打高尔夫球有哪些一般秘诀?我正在寻找可以应用于代码高尔夫问题并且至少在某种程度上特定于Röda的想法(例如,“删除评论”不是答案)。 请为每个答案发布一个提示。
12 code-golf  tips 

3
网格可以弯曲。你多久了?
考虑在W宽x H高的文本网格上绘制一条简单的,开放的二维曲线,其中X该曲线.表示曲线的一部分,表示空白,不使用其他任何字符。 每个网格空间都有8个相邻的网格空间,即Moore邻域。边界之外的网格空间被认为是空的。 网格包含曲线,如果有且只有一个X OR,如果有一个以上的X地方: 正好2个X只有一个相邻X。这些是曲线的端点。 X除端点外,每个端点都恰好相邻2 Xs。这些构成了曲线的主体。 例如,此W = 9而H = 4的网格包含一条曲线: ....X.... .X.X.X.X. X..X..X.X .XX.....X 同样,这些网格(W = 4,H = 3)具有曲线: .... .X.. .... .... .X.X .... X..X ..X. XX.. X.X. ..X. .XX. .X.. .... .... 但是,这些网格不包含曲线: .... .XX. ...X XX.. .... X.X. .... X..X ..XX XX.. .X.X .X.. …

1
稳定的婚姻问题
背景 假设有2*n要结婚的人,并且进一步假设每个人n在以下约束下完全被其他人吸引: 吸引力是对称的 ; 即如果人A被人吸引B,则人B被人吸引A。 吸引力是反传递的 ; 也就是说,如果一个A人和一个人B都被一个人吸引C,那么一个A人和B另一个人就不会被彼此吸引。 因此,吸引力网络形成(无向)完整的二部图 Kn,n。我们还假设每个人都对他们吸引的人进行排名。这些可以表示为图中的边缘权重。 一个婚姻是一个配对(A,B)地方A和B被吸引到对方。如果存在另一场婚姻,婚姻中的婚姻是不稳定的,那么每一次婚姻中的一个人都可以与伴侣离婚并结婚,并且双方最终都会得到比其前夫更高的伴侣。 目标 您的任务是编写一个完整的程序或函数,以每个人的喜好作为输入并为每个人输出一个婚姻,以使每个婚姻稳定下来。 输入值 输入可以采用任何方便的格式;例如加权图,首选项的有序列表,字典/关联等。您可以选择将总人数作为输入,但不允许其他输入。 输出量 输出也可以采用任何方便的格式;例如,元组列表,最小边缘覆盖,与每个人的伴侣相关的功能等等。请注意,唯一的约束是每次婚姻都是稳定的,没有其他最优性要求。 笔记 您可以O(n^2)在Wikipedia或此Numberphile视频上找到更多信息和解决此问题的算法。但是,您可以自由使用任何算法。 禁止出现标准漏洞。 这是代码高尔夫球。最短答案(以字节为单位)获胜。

10
从前到后的排列索引
挑战 给定项目数n,在非空的已排序列表中,输出索引, 如果按字典顺序对排列进行排列,则i(n)其 “ 从前到后排列 ” 将位于所有排列的列表中。 结果可能是基于0或1的,只说哪个(即i不是n)。 从后到前的排列 ...是通过重复获取向前排序的列表(从左至右)的后(右)然后前(左),直到所有项都移至新列表,来构建项列表的结果,就像这样: Input being consumed Output being built ----------------------+---------------------- [1,2,3,4,5,6,7] | [] [1,2,3,4,5,6] | [7] [2,3,4,5,6] | [7,1] [2,3,4,5] | [7,1,6] [3,4,5] | [7,1,6,2] [3,4] | [7,1,6,2,5] [4] | [7,1,6,2,5,3] [] | [7,1,6,2,5,3,4] ----------------------+---------------------- Result: [7,1,6,2,5,3,4] 排列指数 如果n为7(如上面的从前到后的示例)7! = 5040,则(不同的)项目可能存在排列。 所有这些排列的按字典顺序排序的列表中的第一个(如果愿意,则为零)项目[1,2,3,4,5,6,7]本身就是它自己。 第二项是[1,2,3,4,5,7,6]。 …

4
熵奎因!
您的任务是编写一个程序或函数,其中: 首次运行时,输出其源代码。 在随后的执行中,它应该输出先前输出的内容,但是会随机更改一个字符(定义如下)。它不必是一致的随机变化,但是每个可能的变化都应该有非零的发生机会。 第一次执行后,您的程序将不再是奎因。输出将已更改(该程序也可以自由修改自己)。 例如,如果您的quine是ABCD,则反复运行它可能会打印: ABCD A!CD j!CD j!CjD 技术指标 字符更改是: 插入一个随机字符, 删除随机字符,或 用新的随机字符替换字符。请注意,新字符允许与其替换的字符相同,在这种情况下,将不会进行任何更改。 当然,从空字符串中删除或替换字符不是有效的更改。 尽管将其标记为quine,但禁止阅读源代码的规则并不适用。 您可以使用任何字符集,只要它包含源代码中使用的字符即可。

18
简单的CSV / DSV导入器
略大于此的倒数。 输入: 多行DSV数据和单个定界符。DSV可以视为文件,文件名,以换行符分隔的字符串,字符串列表等。所有记录的字段数均相同,并且没有字段为空。数据不包含定界符,也没有引用或转义机制。 Out: 表示DSV的数据结构,例如,字符串列表列表或字符串矩阵。 例子 ["here is,some,sample","data,delimited,by commas"]和",": [["here is","some","sample"],["data","delimited","by commas"]] ["hello;\"","\";world","\";\""]和";":( [["hello","\""],["\"","world"],["\"","\""]]转义,因为此示例使用JSON) ["to be or not","that is the question"]和" ": [["to","be","or","not"],["that","is","the","question"]]

13
模量验证
给定一个全部为true的数学表达式列表,该数学表达式包含 具有两个数字和结果的模余数计算,您的任务是得出n列表中所有语句均成立的第一个数字。 例如: [m % 3 = 0, m % 4 = 1, m % 5 = 3],其中%是取模运算符。 对于n= 3,适合该序列的前3个数字(从0开始计数)是33, 93, 153,因此您的结果将是(依您的格式)。 规则/ IO 您需要一个正数n和一个事实列表。当然,您需要做的只是模运算的RHS和结果。 n事实列表中的数字将始终在1-> 2 ^ 31-1的范围内,结果也是如此。 您可以采用任何方便的形式输入并以任何方便的形式输出。例如,输入:3 [3 0, 4 1, 5 3]和输出:33 93 153。 可以保证该解决方案在数学上是可行的。 输入源可以来自文件,函数参数,stdin等。输出也是如此。 没有漏洞。 这是代码高尔夫球,因此最低的字节数为准。 测试用例 # Input in the form <n>, <(d …
12 code-golf  number 

10
孩子们洗牌
洗牌对孩子来说很难,因此他们必须想出办法,尽可能简单地获得合理的洗牌。 一种取得相当好的结果的方法是: 取出顶部卡并将其随机插入卡座中 取出底部卡并将其插入卡座中的随机位置 继续,直到您认为足够好为止。 请注意,切勿将卡插入顶部或底部,应将其放置在卡座中的某个位置。 取而代之的洗牌中,我们将洗牌字母数字字符:0-9,A-J,a-j,q-z和Q-Z。 从下面显示的字符串开始,然后按照上述方法对字符进行随机排列。您可以选择是否要继续无限次随机播放或随机播放100张卡片(顶部100张卡片,底部100张卡片)。 0123456789abcdefghijqrstuvwxyzABCDEFGHIJQRSTUVWXYZ 挑战在于显示正在改组的字符。每个“随机播放”(取出并插入卡)应花费0.25至0.35秒。 下面的gif显示了示例输出: 这是代码高尔夫球,因此以字节为单位的最短代码获胜。 “你为什么不有a-t,而不是a-j,q-z?” 因为这将说明卡片套装,而不仅仅是字符。是的,有5套西装。 注意:我已决定停止在code-golf -challenges 上使用选中标记。这里和这里的相关元文章。

1
有效地生成所有向量分区
向量分区是将向量分割为一系列向量,以使它们的和为原始向量。这是几个分区: [3, 1, 2] = [3, 1, 2] [3, 1, 2] = [0, 0, 1] + [0, 0, 1] + [0, 1, 0] + [1, 0, 0] + [2, 0, 0] [3, 1, 2] = [1, 1, 2] + [2, 0, 0] 在这里,矢量加法是逐个元素地完成的。有效分区不包含任何带有负整数的矢量或全零矢量。 现在的挑战是编写一个程序或函数,以给定目标向量生成所有可能的向量分区。这听起来相对容易... ...但是有一个转折。如果输入向量的大小为L,并且它生成的最大分区具有M个元素,则使用的内存不得超过O(L * M)。 您可以假定整数使用O(1)内存。这意味着您必须在生成分区时输出分区。最重要的是,每个分区只能输出一次。例如,这些是相同的分区: [3, 1, …

2
BINGO的最佳作弊
您已经厌倦了其他玩家自鸣得意地宣布“ BINGO”并胜利地走过您领取他们的奖金。这次将有所不同。您贿赂了呼叫者,让他们按呼叫顺序提前给您BINGO呼叫。现在,您只需要创建一个BINGO板,就能尽快赢得这些电话,从而确保您获胜(或平局)。 给定定界的呼叫字符串或呼叫列表,以典型的BINGO格式(包含的字母,例如B9或G68,请参阅规则以了解更多信息),输出代表这些呼叫的最佳BINGO板的矩阵或2D列表。假设输入将始终有效。 宾果规则: 5x5板 “宾果”是指您的卡上到目前为止有5个连续的数字。 中心正方形是免费的(自动计入BINGO),并且可以由空格,空白列表-1或表示0。 5列由字母表示B,I,N,G,O,分别。 第一列可以包含数字1-15,第二列16-30,...和第五列61-75。 输入的字母和数字可以有选择地定界(通过有意义的东西,例如a ,或空格)定界,或作为字符和数字的元组。 输出仅需要矩阵中每个位置的数字。 不会对您的早期BINGO有所贡献的平方必须是有效的,但不一定是最佳的。 这是代码高尔夫,最短的代码胜利 例子: 我在示例中使用这种输入格式,因为它更短。有关可接受的输入/输出格式,请参见上文。 O61 B2 N36 G47 I16 N35 I21 O64 G48 O73 I30 N33 I17 N43 G46 O72 I19 O71 B14 B7 G50 B1 I22 B8 N40 B13 B6 N37 O70 G55 G58 G52 B3 B4 …
12 code-golf 

9
构造高斯矩阵
高斯模糊是一种用于平滑模糊图像的方法。它涉及创建一个矩阵,该矩阵将通过与图像像素卷积来使用。在这个挑战中,您的任务是构造用于高斯模糊的矩阵。为了构造一个尺寸为(2 r + 1×2 r + 1)的矩阵,您将使用输入r作为模糊半径,并使用输入σ作为标准偏差。该矩阵中的每个值都有一个(x,y)值,该值取决于其在每个方向上距中心的绝对距离,并将用于计算G(x,y),其中G是 例如,如果r = 2,我们想生成一个5 x 5的矩阵。首先,(x,y)值的矩阵为 (2, 2) (1, 2) (0, 2) (1, 2) (2, 2) (2, 1) (1, 1) (0, 1) (1, 1) (2, 1) (2, 0) (1, 0) (0, 0) (1, 0) (2, 0) (2, 1) (1, 1) (0, 1) (1, 1) …
12 code-golf  math  matrix 

5
Unicode现在几点钟了?
给定输入时间为以下任何一种格式的字符串,挑战是简单化的: hh,hh:mm或hh:mm:ss有0 ≤ hh ≤ 23,0 ≤ mm ≤ 59和0 ≤ ss ≤ 59。 使用以下符号输出当前几点钟: AA LABEL FOR CHARACTER CODE POINT HEXADECIMAL == ==================== ========== =========== 🕐 Clock Face 01 Oclock 128336 0x1F550 🕑 Clock Face 02 Oclock 128337 0x1F551 🕒 Clock Face 03 Oclock 128338 0x1F552 🕓 Clock Face …

2
教授的基地楼号转换器
这位坚果数学教授希望使用一种系统来对他们的所有研究进行编码,该系统可以欺骗甚至最灵活的竞争对手! 为此,教授决定不仅改变他们正在写的数字的基数,而且改变该数字中的每个数字,根据数字所处的位置(从右边开始,从1开始)。例如: 数字0有一位数字,因此以基数1:0表示 数字1的底数为10,但是在我们教授的系统中无效。第一位仅保留基数1的位数!这意味着必须将其撞到允许以2为底的第二位置:10 数字2要求至少以3为底数:100 但是现在可以通过更改第二位的数字来写数字3:110 和4这样:200 这里有一些更多的例子可以帮助您理解: 5:210 6:1000 7:1010 8:1100 9:1110 10:1200 11:1210 12:2000 13:2010 14:2100 15:2110 16:2200 17:2210 18:3000 使用这个系统,教授的笔记对除了他们之外的任何人都没有意义,他们最终可以掌控整个世界!!!晚上睡得好。 当然,编码方法必须尽可能模糊。 您的任务是编写10个代码段,每个代码段代表基数10的一位 0 1 2 3 4 5 6 7 8 9 当按要转换的数字的顺序组合时,将产生一个写在教授的医学编号系统中的数字(输出方法可以选择,但必须是人类可读的数字,仅使用数字0-9) 例如,如果我的片段是: 0 =猴子1 =示例,2 =代码,3 =高尔夫,9 =测试 然后 19 =示例测试-> 3010 20 = CODEMONKEY-> …

3
自然派#2-河
目标 给定一个带有一列哈希的字符串,计算其总长度并除以从开始到结束的距离。 模拟 我们在模拟什么?根据本文,河流的长度与起点和终点之间的距离之比约为Pi!(这可能在经验上得到了证明,但是我可以找到数据,对于这一挑战,我们认为它是正确的)。 我们如何模拟这一点? 接受空格和哈希的字符串输入 每个哈希将与其他两个相邻 除了第一个和最后一个散列,该散列只有1个 每个字符都位于格点上 (x, y) x 是字符在其行中的索引 例如c,第四个字符是0123c567 y 是字符的行号 例如c在第三行: 0line 1line 2line 3c... 求和相邻散列之间的距离,将其称为 S 取第一个和最后一个哈希之间的距离,称为 D 返回 S/D 规格 输入值 灵活,可以采用任何标准方式(例如,函数参数,STDIN)和任何标准格式(例如,字符串,二进制)进行输入 输出量 灵活,以任何标准方式(例如退货,打印)提供输出 可以使用空格,尾随空格和前导空格 精度,请提供至少4位小数位数(即3.1416) 计分 最短的代码胜出! 测试用例 这些是我对河流的近似值。我的估算值可能很差,或者我对河流人口的估算值很差。另外,我是手动进行计算的。我本来想念的。 黄河 ### #### # # # # # # # # # …

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.