编程拼图和代码高尔夫

编程益智爱好者和代码高尔夫球手的问答

6
正整数的部分分解
正整数的集合是正整数d_1 d_2 ... d_k的因式分解,n如果 d_1 * d_2 * ... * d_k = n 每个正整数都有一个唯一的素因式分解,但通常它们也具有其中某些项是复合的分解。例如 12 = 6 * 2 = 4 * 3 = 3 * 2 * 2 编写一个程序,函数,动词或类似物,将单个正整数作为输入并返回或打印其不同因式分解的完整列表。分解可以以任何顺序生成,并且它们的项可以以任何顺序生成,但是彼此之间不应有两个置换。1除两个例外,分解可能不包括:对于输入,n您可以给出分解n*1而不是n; 对于输入,1您可以给出因式分解1而不是空白列表。 您可以假定输入将在带符号的32位整数范围内。如果输出为字符串,则分解中的数字定界与分解中的定界之间应该有明显的区别,但是(例如)没有必要将因子与连在一起*。 您的代码应能够在合理的台式机上在10分钟内处理任何有效输入。 例子 1 [[]] or [[1]] or [[1 1]] 7 [[7]] or [[7 1]] or [[1 7]] 12 …

12
排列的循环数
考虑整数... ... 的置换,例如1nn = 6: [5,2,4,3,6,1] 如果将置换视为从[1,2,3,4,5,6]到的映射[5,2,4,3,6,1],则置换可以分解为不相交的周期。循环是相互映射的元素的子集。例如,1被映射到5,被映射到6,被映射回1。所以一个周期是[1,5,6]。其他周期是[2]和[3,4]。因此,此置换的周期数为3。 通常,排列的周期是唯一的(按顺序排列),大小排列的周期数n从1到变化n。 挑战 给定非空排列,输出其循环数。 输入是由形成的阵列n的整数1,2,..., n,其中n > 0。每个整数仅出现一次。如上例所示,它们出现的顺序定义了排列。 可以使用列表,在数字之间使用分隔符的字符串,每个数字的单独输入或任何合理的方法来代替数组。 对于大小的排列n,而不是基于1的整数集1,......,n你可以一直使用基于0套0,... n-1。如果是这样,请在您的答案中指出。 该代码应努力n达到20在合理的时间,说不到一分钟。 代码高尔夫。允许所有内置。 测试用例 假定基于1的数组输入。 [1] -> 1 [3,2,1] -> 2 [2,3,4,5,1] -> 1 [5,2,4,3,6,1] -> 3 [8,6,4,5,2,1,7,3] -> 2 [4,5,11,12,7,1,3,9,10,6,8,2] -> 1 [4,2,5,11,12,7,1,3,9,10,6,8] -> 5 [5,8,6,18,16,9,14,10,11,12,4,20,15,19,2,17,1,13,7,3] -> 3 [14,5,17,15,10,18,1,3,4,13,11,16,2,12,9,7,20,6,19,8] -> 7 有关 这个相关的挑战要求排列的实际周期,而不是数量。仅要求周期数可以导致产生实际周期的较短算法。

16
按素数分解数字除数
给定一个整数≥2的输入,输出一个除数的列表,该除数的列表按指数在其素因数分解中按升序排列,先按最大质数排序,然后按第二大质数排序,依此类推。 例如,取整数72,即2 3 3 2。它有除数 1 3^0 · 2^0 2 3^0 · 2^1 3 3^1 · 2^0 4 3^0 · 2^2 6 3^1 · 2^1 8 3^0 · 2^3 9 3^2 · 2^0 12 3^1 · 2^2 18 3^2 · 2^1 24 3^1 · 2^3 36 3^2 · 2^2 72 …

6
分数精确到小数
编写一个给定两个整数a,b的程序或函数,输出一个字符串,该字符串包含一个十进制数字,精确地表示分数a / b 。 如果a / b是整数,则只需输出该值,不带小数点或前导零: 123562375921304812375087183597 / 2777 -> 44494913907563850333124661 81 / 3 -> 27 -6 / 2 -> -3 如果a / b不是整数,但以10为底的有限表示形式,则输出该值时不带前导或尾随零(点之前的单个零除外): 1 / 2 -> 0.5 3289323463 / -250000000 -> -13.157293852 最后,当且仅当(so no 0.999...)a / b不是整数并且没有有限表示形式时,才输出有限部分,然后在括号中输出重复部分。重复部分必须尽可能小,并尽早开始。 -1 / 3 -> -0.(3) 235 / 14 -> 16.7(857142) …

8
“添加一个”到图像中的每种颜色
您只需拍摄此图像,然后将每种颜色加到每个十六进制数字上即可。例如,#49de5f将变为#5aef60(通过9循环到a和f循环到0。) 这也意味着所有白色(#ffffff)将变为黑色(#000000),因为所有f循环都返回0,但是所有黑色将变为黑色(#111111)的浅色阴影。 评分基于使用的最少字节数,因为这是一个代码高尔夫问题。 使用下面的图像作为代码的输入图像,并将代码的输出图像放入答案中。 如果需要,您还可以使用其他彩虹图像:

1
堆叠交换
问题 说你有N个堆命名小号1至S Ñ,其中每个小号ķ(k = 1至N)中包含数k的N份。 例如,当N = 3时,堆栈如下所示: 1 2 3 <- top of stack 1 2 3 1 2 3 <- bottom of stack ======= 1 2 3 <- stack index 这里有3个索引为1、2和3的堆栈,每个堆栈包含N个自己索引的实例。 目的是重新排列N个堆栈,以使它们中的每个堆栈都按从上到下的顺序完全包含数字1到N。 例如,对于N = 3,目标是将堆栈重新排列为: 1 1 1 2 2 2 3 3 3 ======= 1 2 3 …

11
合理排名值
任务 给定整数的输入列表中X 1 ... X Ñ,计算行列的列表- [R 1个 ...ř Ñ(的置换{1 ... N} ),使得X - [R 1 ≤X - [R 2 ≤...≤X - [R Ñ。然后,对于每个x i,用x中等于x i的所有值的秩的算术平均值替换其秩。(即,每当有相等的值之间的粘结X,相当重新分配在所有它们的行列。)输出等级的改性列表R“ 1 ... R”n。 (对于统计极客:在Mann-Whitney U检验中使用了这样的观察结果排名(方法2,步骤1。)) 例 给定输入列表[3,-6,3,3,14,3],排名的第一个列表将是[2,1,3,4,6,5],将列表分类为[-6, 3,3,3,3,14]。然后,输入列表中所有3 s 的等级被平均为(2 + 3 + 4 + 5)÷4 = 3.5。最终输出为[3.5,1,3.5,3.5,6,3.5]。 测试用例 [4, 1, 4] -> [2.5, …

30
输入可除的最小回文
给定一个正整数N,输出最小的正整数,以使该数字是回文数(即它本身的逆数)并且可以被整除N。 回文(即输出)必须不需要前导零才能成为回文,例如080,不是的有效答案16。 由于先前的原因,输入将永远不会是10的倍数。 您的程序可能需要花费尽可能多的时间,即使在实践中输出答案的时间太长。 输入和输出 您可以通过接受输入STDIN,作为函数参数,或类似的东西。 您可以将输出打印到STDOUT,从函数返回它或类似的东西。 输入和输出必须以十进制为基础。 测试用例 N Output 1 1 2 2 16 272 17 272 42 252 111 111 302 87278 1234 28382 计分 这是代码高尔夫球,因此最短的答案以字节为单位。

8
我还需要多少声望?
编程拼图和Code Golf已从Beta毕业。很快,我们将获得一个自定义的网站设计,并且特权的声誉边界将上升。许多用户将失去该网站的特权。因此,您的任务是编写一个程序,该程序告诉我们保持特权所需的额外声誉。 任务 您的任务是编写最短的代码,以找到在给定信誉点数量的情况下,用户在网站设计后仍需要保留其当前特权所需的额外信誉。 输入输出 您可以接受输入并以您喜欢的任何方式提供输出,只要它遵循以下规则: 输入 -1到250000(含)之间的整数。您的程序或函数应该能够接受大于此的数字,但是它必须接受该范围内的数字。 输出 -一个整数,代表用户毕业后保持其现有特权所需的声誉点数。 请没有标准漏洞。 示例算法 将变量设置i为输入 将变量设置r为variable i。 虽然r不在列表中beta: 减去1从r。 设置n到的位置r在beta。 设置r项n的graduated。 将变量设置o为的结果r - i。 如果o < 0: 将变量设置o为0。 输出变量o。 桌子 特权表将改变 | privilege name | beta rep | graduation rep | -+-----------------------------+----------+----------------+- | create tags | 150 | 1500 | | access …
23 code-golf  number 

8
平均图像
这是一张图片: %%%%%%%%%%%%% % Hello, % % world! % %%%%%%%%%%%%% 但这太小了,我们的大脑无法计算。因此,我们将其平均如下: 将其分成2 x 2的部分。如果图片在一个部分完成之前结束,请想象那里有空格。 平均每个部分中ASCII字符的值。 四舍五入此平均值并将其转换为ASCII字符。 最后,将部分中的所有字符替换为平均字符。 对所有部分重复此操作。 因此,上图的平均值如下所示: $$>>II99###### $$>>II99###### $$##88KKGG#### $$##88KKGG#### 您的任务:编写一个程序,以ASCII图像作为输入并输出其平均值。 注意整数按函数floor(x+0.5)或类似函数取整-换句话说,向上对半取整。

15
证券交易所
股市全与知识的速度有关。与以前的挑战不同,当前的股价不是随机的:它是由玩游戏的人确定的。 如果您能在其他任何人之前发现低价股票,那么您已经为自己编写了赚钱程序。 价格是指人们交易股票的数量,价值是指游戏结束时股票的价值。 每个玩家以每只股票1000头开始,相对净资产为0。 每只股票都有一个秘密价值,您在游戏结束时的得分是(stockValue for each ownedStock) + netWorth。您的净资产可能为负。在N玩家游戏中,有N只股票。 脚步: 游戏遵循以下步骤: 您将获得单只股票的秘密价值。 您提出要价以$ Z卖出X股Y股票 所有玩家都获得了优惠,每个人都可以选择一个接受 通知所有玩家已接受的报价 返回步骤2 每个步骤的详细信息如下: void secretValue(int stockType, int value): 您学到的价值不会透露给其他任何玩家。 值介于0和之间1000 低值比高值更容易发生(平方均匀分布) Offer makeOffer(List<Stock> currentStock) 您可以返回null不提供任何报价。 Offer acceptOffer(List<Offer> offers) 您可以返回null接受任何一个 如果没有可用的报价,则不会调用此报价 如果您接受,则您的资产净值下降$ Z(可能变为负数)并获得X的Y股票。与卖方相反。 如果您接受报价,则交换将立即发生,并且报价将被删除,因此其他玩家将无法接受。 void acceptedOffers(List<Offer> offers) 包括您接受的优惠 不允许使用静态变量或写入文件。(游戏之间不存在持久数据)允许非严重竞争者。 接口: public final class Stock { …

5
写一个摩尔斯计算器
编写一个程序或函数,以摩尔斯电码的数学表达式作为输入,然后以摩尔斯电码返回解决方案。 有效操作为加号:+和减号:(_下划线)。您可以假设您只会收到非负整数输入,并且结果将是非负整数。 该表达式将至少包含两个词,最多包含十个词。不会有两个相邻的运算符.----+_-....,也就不会有括号。 数字用单个空格分隔。您可以选择将运算符与数字分开,每边用一个空格隔开(请参见示例)。 数字0-9的摩尔斯等效项是: 0 ----- 1 .---- 2 ..--- 3 ...-- 4 ....- 5 ..... 6 -.... 7 --... 8 ---.. 9 ----. 例子: Input Output .----+.---- (1+1=2) Optional input: .---- + .---- ..--- -...._...-- (6-3=3) Optional input: -.... _ ...-- ...-- ..---_...--+..--- (2-3+2=1) 1 ..---+...--_....-+---.._..... (2+3-4+8-5=4) ....- …

28
创建一个交叉的正方形
创建一个交叉的正方形 您将输入一个或多个整数,然后输出一个由您选择的任何可打印字符构成的正方形,并在中心穿过对角线。 通常的想法是输出是一个空心正方形,其中有一个对角交叉。 Input: 7 Output: ******* *# #* * # # * * # * * # # * *# #* ******* 在上面的示例中,“ *”表示外框,“#”表示对角线。 请注意,上面的示例使用两个不同的字符,以便更轻松地查看输出内容,程序应仅使用一个字符。 输入项 1或更大的整数,保证是奇数。 输出量 由您选择的字符组成的正方形,中间有一个十字。 十字架必须是对角线 平方可以通过函数输出或写入输出 尾随换行符可以 如果您愿意,也可以输出为图形,图表或图像 例子 Input: 1 Output: * Input: 3 Output: *** *** *** Input: 5 Output: ***** ** …

9
排序嵌套列表
您必须编写对嵌套列表进行排序的程序或函数。以下是对嵌套列表进行排序的规则: 让我们以这个清单为例: ((5, 2), 2, 7, (2, 1, (3, 4)), 9) 此列表中的每个元素都有一个“优先级”。元素计为数字或子列表。首先,在相同深度获得每个元素的优先级。如果元素只是数字,则其优先级与数字本身相同。如果元素是子列表,则其优先级是其中所有数字的总和,不包括任何子子列表。 因此,深度1的所有元素的优先级为: ( 7 ) 2 7 ( 3 ) 9 ((5, 2), 2, 7, (2, 1, (3, 4)), 9) 按优先级对每个元素进行排序。如果有平局,则必须保持与原始列表相同的顺序。 2 ( 3 ) ( 7 ) 7 9 (2, (2, 1, (3, 4)), (5, 2), 7, 9) …

10
高度复合数
甲高合成数是具有多个除数比任何小的正整数具有一个正整数。这是OEIS序列A002182。它的前20个学期是 1, 2, 4, 6, 12, 24, 36, 48, 60, 120, 180, 240, 360, 720, 840, 1260, 1680, 2520, 5040, 7560 例如,4由于序列中有3个除数(即1、2、4),而3中只有2个除数,所以2也具有2个除数,而1具有1个除数。 挑战 给定正整数输入n,根据您的选择输出第n个高复合数或前n个高复合数(但每个输入n的选择必须相同)。 规则 程序或函数在理论上应该在给定无限时间和内存的情况下用于任意大的输入,而不考虑数据类型的限制。本质上,这意味着无需对有限数量的值进行硬编码。 在实践中,程序或函数应在合理的时间内运行,例如少于1分钟,最多n到20。最大输入或输出可能受您的语言标准数据类型的限制(但同样,算法在理论上应该可以工作对于任意大数)。 允许使用任何合理的输入和输出格式,包括一元。 代码高尔夫。最少的字节数获胜。

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.