编程拼图和代码高尔夫

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

8
Zeckendorf表示下的求和
Zeckendorf定理表明,每个正整数都可以唯一地表示为不相邻的斐波那契数之和。在此挑战中,您必须计算Zeckendorf表示形式中两个数字的和。 令F n为第n个斐波那契数,其中 F 1 = 1, F 2 = 2,并且 对于所有k > 2,F k = F k -1 + F k -2。 非负整数n的Zeckendorf表示 Z(n)是一组正整数,使得 Ñ =Σ 我 ∈Z(Ñ) ˚F 我 和 ∀ 我 ∈Z(Ñ) 我 + 1个∉Z(Ñ)。 (在prosa中:数字n的Zeckendorf表示是一组正整数,因此这些索引的斐波那契数之和为n,并且该集合中没有两个相邻的整数) 值得注意的是,Zeckendorf表示法是唯一的。以下是Zeckendorf表示形式的一些示例: Z(0)=∅(空集) Z(1)= {1} Z(2)= {2} Z(3)= {3}({1,2}不是3的Zeckendorf表示) Z (10)= {5,2} …

6
莱利定理
S. Ryley于1825年证明了该定理: 每个有理数可以表示为三个有理立方体的总和。 挑战 鉴于一些有理数r∈Qr∈Qr \in \mathbb Q 发现三个有理数a,b,c∈Qa,b,c∈Qa,b,c \in \mathbb Q,使得r=a3+b3+c3.r=a3+b3+c3.r= a^3+b^3+c^3. 细节 给定足够的时间和内存,您的提交应该能够为每个输入计算一个解决方案,这意味着仅用两个32位int表示一个分数是不够的。 例子 305230717280142=39829338766813−6366005495153−39775055545463=607029013173+239612924543−619227128653=(12)3+(13)3+(14)3=03+03+03=(12)3+(23)3+(56)3=(1810423509232)3+(−1495210609)3+(−25454944)330=39829338766813−6366005495153−3977505554546352=607029013173+239612924543−6192271286533071728=(12)3+(13)3+(14)30=03+03+031=(12)3+(23)3+(56)342=(1810423509232)3+(−1495210609)3+(−25454944)3 \begin{align} 30 &= 3982933876681^3 - 636600549515^3 - 3977505554546^3 \\ 52 &= 60702901317^3 + 23961292454^3 - 61922712865^3 \\ \frac{307}{1728} &= \left(\frac12\right)^3 + \left(\frac13\right)^3 + \left(\frac14\right)^3 \\ 0 &= 0^3 + 0^3 + 0^3 \\ …

18
步行者加入!-艾伦·沃克(Alan Walker)的徽标
您可能会从艾伦·沃克(Alan Walker)曾经流行的歌曲《衰落》(Faded)中了解到。现在,他的“追随者”被称为沃克,并且有一个徽标,这是简化版本: \\ \\ //\\ \\ // \\ // \\ // \\ // \\ // \\ // \\ // \\ // \\ // \\ // \\ // //\\ \\ // \\// // \\ \\// // // \\ \\ //\\ // \\ //\\ \\// \\// \\ \\ 这项挑战的目标是印刷该徽标。 规则: 如果您按照元标准从函数返回字符串列表,请提供一个页脚,将其打印到屏幕上。 以上徽标的所有字符都必须存在。没有捷径! …

7
编码霍夫曼!
否则他会怒气冲天,把你的房子炸毁! 那完全无关紧要。这个挑战实际上与霍夫曼编码有关。要点是给定文本中字符的频率被用来使其表示更短。换句话说,假设我们的字母是a通过z和空格。那是27个字符。它们中的每一个都可以仅用5位进行唯一编码,因为5位有足够的空间容纳32个字符。但是,在许多情况下(例如英语或一般语言),某些字符比其他字符更频繁。对于更频繁的字符,我们可以使用较少的位,对于较不频繁的字符,我们可以使用更多的位。如果做对了,总体上可以节省位数,并且仍然可以唯一地重建原始文本。 让我们以“这个问题与霍夫曼编码有关”为例。该文本的长度为37个字符,通常为37 * 8 = 296位,但是如果每个字符仅使用5位,则只有37 * 5 = 185位。记住这一点。 这是文本中每个字符及其频率的(排序)表,从最频繁到最不频繁(其中_代表空格)排序: _ 5 i 4 n 3 o 3 s 3 t 3 u 3 a 2 f 2 h 2 b 1 c 1 d 1 e 1 g 1 m 1 q 1 相关的最佳编码可以是: _ 101 i …

4
分配议会席位
介绍 在大选中,人们想计算每个议会席位的不变价格。这意味着N >= 0要分配席位和ns每个政党的投票清单,我们希望找到一个数字d,以便 sum(floor(n/d) for n in ns) == N 为了使事情变得有趣(更像现实世界),我们添加了两个事实: 两党可以聚集在一个“联盟”中,这样​​,“联盟”的席位就由该联盟中所有各方的票数之和决定。然后,“联盟”获得的席位以类似的方式在各方之间分配(找到除数等) 没有获得一定比例票数(例如3.25%)的政党自动获得0席,其票数不计入“同盟”。 挑战 给你: 列表列表,每个嵌套列表都包含整数(投票数),单方长度为1,“联盟”长度为2。 获得席位的最低票数百分比(又称“弹幕”的“巴”),即分数(因此3.25%表示为0.0325) 各方之间分配的席位总数(整数) 您将打印出相同的嵌套列表结构,并用议席数代替票数。 优胜者是字节数最少的代码。 角落案例: 除数可能(通常会)有一个以上。由于它不在输出中,因此它并不重要。 想象N=10和ns = [[1]],所以除数可以是0.1(不是整数) 有些案件不能得到解决,例如ns=[[30],[30],[100]],bar=0,N=20。d=7.5下限的总和从19跳到21,这是一个边界。您不希望解决这些情况。(感谢社区成员Arnauld指出此案) 输入和输出示例 一个未优化的Python3示例: from math import floor def main(_l, bar, N): # sum all votes to calculate bar in votes votes = sum(sum(_) for …

12
查找所有
介绍 在数论中,我们说一个数为kkk光滑的数,当它的主要因子最多为kkk。例如,2940是7-平滑因为2940=22⋅3⋅5⋅722940=22⋅3⋅5⋅722940=2^2\cdot3\cdot5\cdot7^2。 在这里,我们将kkk平滑对定义为两个都是kkk平滑的连续整数。7光滑对一个例子将是(4374,4375)(4374,4375)(4374,4375),因为4374=2⋅374374=2⋅374374=2\cdot3^7和4375=54⋅74375=54⋅74375=5^4\cdot7。有趣的事实:这实际上是最大的7平滑对。 斯托默(Størmer)在1897年证明,对于每kkk,只有有限的kkk平滑对,并且这一事实被称为斯托默定理。 挑战 您的任务是编写一个程序或函数,给定素数输入kkk,以您想要的任何顺序输出或返回所有kkk平滑对,而没有重复(对内的顺序无关紧要)。 请注意,对于质数ppp和qqq,假设p&lt;qp&lt;qp<q,则所有ppp平滑对也是qqq平滑对。 样品I / O Input: 2 Output: (1, 2) Input: 3 Output: (1, 2), (2, 3), (3, 4), (8, 9) Input: 5 Output: (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (8, 9), (9, 10), (15, 16), (24, 25), (80, 81) Input: …

17
将数字转换为表情符号数学[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 10个月前关闭。 在用户创建的视频游戏“保持说话且没人爆炸”模块Emoji Math中,数字被写成表情符号字符串,其中每个表情符号代表以10为基数的数字。以下是数字和表情符号之间的转换表。 Digit | Emoticon 0 | :) 1 | =( 2 | (: 3 | )= 4 | :( 5 | ): 6 | =) 7 | (= 8 | :| 9 | |: 给定一个数字,将其输出为Emoji Math编码。您可以假定没有非数字字符。 这是代码高尔夫球,因此最短的答案以字节为单位。
13 code-golf  number 

7
使用最少数量的唯一字符生成整数阶梯(在C ++中)
我是标准高尔夫运动的新手。我正在尝试使用C ++中最少数量的唯一字符来生成整数阶梯。 假设我们给了整数4。 我们将生成以下阶梯: 1 1 2 1 2 3 1 2 3 4 简而言之,我的程序将从stdin读取一个正整数并将此梯形图输出到输出。我正在尝试使用尽可能少的唯一字符。 我的程序如下: #include&lt;iostream&gt; int i; int ii; int iii; int iiii; main() { std::cin &gt;&gt; i; for(ii++; ii &lt;= i; ii++) { int iii = iiii; for(iii++; iii &lt;= ii; iii++) { std::cout &lt;&lt; iii &lt;&lt; …

30
ASCII Meme箭头生成器
技术指标 给定一个数字n,输出大小为的ASCII“模因箭头”(大于符号,&gt;)n。 n 始终是一个大于0的正整数。 例子 n = 2 \ \ / / n = 5 \ \ \ \ \ / / / / / 样例代码 这是一个用Crystal编写的示例程序,可以返回正确的结果。以方式运行./arrow 10。 arrow.cr: def f(i) i.times { |j| j.times { print ' ' } puts "\\" } i.times { |j| (i-j-1).times { print ' …

1
交互式迷宫求解器
鲍勃被绑架,被困在迷宫中。您的工作是帮助他找到出路。但是由于这是一个非常黑暗和可怕的迷宫,他什么都看不到。他只有在碰到墙壁时才能感觉到墙壁,并且知道何时找到出口,但仅此而已。 由于他必须通过内存运行您的程序,因此它必须尽可能短。 注意:我从http://acmgnyr.org/year2016/problems.shtml中解决了这个问题,但略加修改,并亲自编写了法官程序/测试案例。 规格 这是一个交互式问题,因此您的程序将把输出输出到stdout,并接收来自stdin的响应。 招式您的程序可以输出一个right,left,down,up。 然后它将获得以下之一作为输入: wall-这意味着鲍勃撞墙了。鲍勃将留在同一个地方。 solved-鲍勃找到了出口!您的程序现在也应该退出而不打印其他任何东西。 ok -鲍勃能够朝着给定的方向移动。 如果迷宫没有出口,那么您的程序应该输出,no exit以让Bob知道他应该放弃。然后,您的程序应退出而不打印其他任何内容。 由于Bob急于离开,因此您的程序不应做任何无关紧要的动作。换句话说,您的程序不允许从相同的正方形向相同的方向移动两次。 这是代码高尔夫球,所以最短的程序胜出! 例子 在以下示例中,S是起始正方形,X是出口,#是墙,并且空格是有效正方形。由于没有一个正确的答案,因此这些只是解决方案的示例。还要注意,迷宫的图形就在那儿供您查看,您的程序不会将其作为输入。 ######## #S # ###### # # # #X# right ok right ok right ok right ok right ok right wall down ok right wall down ok right wall down solved ##### # S …

13
分解游戏
输入值 单个整数。1 ≤ X ≤ 10151≤x≤10151 \leq x \leq 10^{15} 输出量 具有乘积的不同正整数的最大数量。Xxx 例子 输入:1099511627776。输出:9.一种可能的最佳因子列表是:(1、2、4、8、16、32、64、128、4096)。 输入:127381。输出4。一种可能的最佳因子列表是:(1、17、59、127)。 与这个老问题有关。
13 code-golf  math 

4
石头,纸,剪刀,蜥蜴,斯波克锦标赛
在5月4日之后挑战星际迷航参考可能会让人皱眉,但这是可行的。 您,卢克(Luke),阿纳金(Anakin),帕尔帕廷(Palpatine),尤达(Hoda Solo)和汉·索罗(Han Solo)参与了摇滚,造纸,剪刀,蜥蜴,史波克的疯狂比赛。 这里的要点是只允许您使用固定顺序的移动。如果您的订单为“ R”,则您必须使用Rock,直到您输给所有人或输给每个人。如果您的订单是RRV,那么您必须使用2个Rocks和一个Spock,并不断重复直到您赢了或输了。 卢克(Luke),阿纳金(Anakin),帕尔帕廷(Palpatine),尤达(Yoda)和汉·索罗(Han Solo)分别提交了他们的订单,而作为专家级的黑客,您将掌握他们的每份订单! 有了这些知识,您就可以设计锦标赛的订购。因为每个人都想赢,所以您想创建一个订单,以便击败每个人来赢得比赛。但这并非在所有情况下都可行。 如果有可能的中奖订单,请打印出来。如果您无法取胜,请打印-1(或0或False或“不可能”) 输入:5个订单清单 输出:单个订单或-1 样本输入1 R P S L V 样本输出1 -1 说明1 无论您采取什么第一步,都将至少有一个人击败您,因此您不可能获胜。 样本输入2 RPS RPP R SRR L 样本输出2 RPSP 说明2 在第一步中打出Rock之后,您最终击败了“ L”和“ SRR”,并与其余的并列。这是因为蜥蜴和剪刀输给了Rock。当您接下来玩Paper时,您将击败“ R”并与其余的2并列。这是因为Rock输给了Paper。当您接下来玩剪刀时,当剪刀击败Paper时,您将赢得“ RPP”的胜利。 最后,您将在Paper击败Rock时用Paper击败“ RPS”。 以下是符号列表(您可以使用任意5个文字,但请在您的答案中指定): R : Rock P : Paper S : Scissor L : …
13 code-golf 

9
换词器可达性
换词器是一款您试图通过单字符编辑将一个单词变成另一个单词的游戏,每个步骤都是自己的单词。对于这个挑战,编辑可能是替换,插入或删除。例如,WINNER→LOSER可以使用以下路线来完成(可能还有其他路线): WINNER DINNER DINER DINE LINE LONE LOSE LOSER 换一种说法,您必须每次只能在Levenshtein距离为1的情况下通过另一个单词到达另一个单词。 编码 您将得到一个单词列表和两个单词,如果存在一条路由,则必须输出从一个单词到另一个单词的有效路由;如果不存在任何路由,则必须输出一个不同的常数值或一致的行为。 您可以假设输入的单词都在单词列表中 单词列表可以通过任何方便的平面格式输入。 列表,集合,尝试,空格分隔的字符串和行分隔的文件都是有效的(例如),但Levenshtein邻接关系的预先计算的图形无效。 输出路径应该包括两个输入词,但是开始和结束都没有关系。 如果未找到路由,则可以输出特定的常量,错误的值,空列表,引发异常,使用非零代码退出或在限定时间内发生的任何其他行为。 路线不一定是最佳路线,也没有要求应该采用哪条路线 计算复杂性无关紧要,但是必须证明您的程序在有限的时间内终止。(即使它超越了宇宙的热死) 您可以假设所有单词在相同情况下完全由字母组成 示例测试用例 猫→狗; [CAT,DOG,COG,COT,FROG,GROG,BOG] 猫,狗,狗,狗 浴室→淋浴; [沐浴,淋浴,卫生,帽子,BAT,SAT,锯,母猪,显示,如何] 找不到路线 BREAK→FIX;[BREAK,FIX,BEAK,BREAD,READ,BEAD,RED,BED,BAD,BID,FAD,FAX] BREAK,BREAD,BEAD,BAD,FAD,FAX,FIX 建造→毁灭; [建造,毁灭,建造,公会,公会,吉尔,吉尔,比尔,莳萝,填充,破坏,结构,构造] 找不到路线 卡→板; [卡,板,板] 卡,板,板 恶魔→天使; [天使魔鬼] 找不到路线 最后→过去;[最后,过去,爆炸,投射,黑色,幽灵,后期,夸张] 最后,过去 插入→删除; 这个单词表 插入,倒置,侵入,弯曲,弯曲,弯曲,弯曲,变暗,达林,成骨,成骨,成丝,成串,丝氨酸,成年神经,有色,硅酸盐,硅酸盐,陶土,降级,删除

2
Pólya缸翻转
问题陈述 Pólya再次玩着他的骨灰盒,他希望您能帮助他计算一些概率。 在此骨灰盒实验中,Pólya的骨灰盒最初包含1个红色和1个蓝色珠子。 对于每次迭代,他进入并取回珠子,然后检查颜色并将珠子放回back。 然后,他掷出一枚普通硬币,如果硬币落在硬币头上,他会在缸中插入相当数量的6面相同颜色的彩色骰子骰子,如果硬币落在尾巴上,他将从缸中取出一半的相同颜色的硬币(使用整数除法-因此,如果所选颜色的珠子数量为奇数,他将删除(c-1)/2c是该颜色的珠子数量) 给定整数n≥0且十进制r&gt; 0,则将n次迭代后珠子颜色之间的比率在最短的字节数中大于或等于r的概率赋予2个小数位。 一组示例迭代: 令(x,y)定义骨灰盒,使其包含x个红色小珠和y个蓝色小珠。 Iteration Urn Ratio 0 (1,1) 1 1 (5,1) 5 //Red bead retrieved, coin flip heads, die roll 4 2 (5,1) 5 //Blue bead retrieved, coin flip tails 3 (3,1) 3 //Red bead retrieved, coin flip tails 4 (3,4) 1.333... //Blue bead …

3
计算长度为n的莫比乌斯梯子上的受限森林数量
OEIS序列A020872对Möbius梯 M n上的限制林进行计数。 挑战 面临的挑战是编写一个程序,该程序将整数作为输入n &gt; 1并返回A020872(n)Möbius梯子M n上的受限林数。这是代码高尔夫球,因此最短的代码获胜。(别有用心的是也许将此序列的长度延长一点。) 定义 甲受限森林是图的一个分区,使得每个部分可以是一个(无向)路径或分离的顶点。 所述莫比乌斯梯子中号Ñ是可以想到的2n边形与所有相对顶点之间画出的对角线的曲线图。 例 这是M 2(画有对角线的正方形)上的34个受限森林。请注意,第一个图被划分为四个孤立的顶点,第二个图被划分为一个路径和两个孤立的顶点,依此类推。

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.