编程拼图和代码高尔夫

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

6
电影标题样式字符串
挑战 有没有看过那些电影预告片标题(即火星人,星际等),它们之间的字母之间的巨大间隙慢慢散开? 面临的挑战是通过在字母之间插入适当数量的空格,在给定的字符串,间距倍数和方向的情况下重新创建这种效果。 例 输入:“ INTERSTELLAR”,间隙乘数:1.0,方向:向内增加 Output: I N T E R S T E L L A R 间距为:[1、2、3,...,3、2、1];用“。”替换空格。为了更好地展示间距: I.N..T...E....R.....S......T.....E....L...L..A.R 输入:“ INTERSTELLAR”,间隙乘数:0.5,方向:向内增加 Output: IN T E R S T E L L AR 间距乘以0.5,因此我们从整数除法得到[0,1,1,2,... 2,1,1,0];使用'。': IN.T.E..R..S...T..E..L.L.AR 输入:“ CODEGOLF”,间隙乘数:2.0,方向:向外增加 Output: C O D E G O L F 间距乘以2,向外增加,因此得到[8,6,4,2,4,6,8]; 替换为“。”: …

9
画一些ASCII框
取两个非负整数列表,并输出如下定义的ASCII框。 角和交点为加号:+(ASCII代码43) 垂直线是条形|(ASCII代码124) 水平线是负号-(ASCII代码45) 第一个输入列表指定水平方向上每个加号之间的减号数。 第二个输入列表指定垂直方向上每个加号之间的条形数量。 举几个例子更容易解释: 0 // No minuses between each + sign 0 // No bars between + signs ++ ++ ------------------ 1 2 // First a single minus, then two minuses 1 2 // First one bar, then two bars +-+--+ | | | +-+--+ | …

3
Brainf * ck循环问题
我遇到一个网络俱乐部的问题,要求您打印: ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! 使用不超过29个字节的Brainf ** k,而不使用','字符。 我有一个工作代码: ++++++++++[>++++++>+++++++++<<-]>-->.<[>-.<-] 但是我的循环太长,超出限制发送了16个字节。 有没有更有效的方法将第二个和第三个单元格设置为58和90,以便我可以运行第二个循环?还是有一个更好的方法可以一起完成所有这些,而我只是没有看到?

2
查克·诺里斯(Chuck Norris)vs旅行推销员
介绍 几乎每个人都熟悉旅行商问题(TSP)。任务是在给定N城市列表的情况下,找到最小的汉密尔顿周期,这就是访问每个城市并返回到起点整圈的最短路径。这不是这个挑战的目的。挑战在于如何实现Chuck Norris 的TSP 解决方案: 查克·诺里斯(Chuck Norris)O(1)及时解决了旅行推销员问题:将推销员分为N个;踢每件到另一个城市。 挑战 为了以这种方式解决TSP,我们需要一个足够耐用的推销员,该推销员不会回避肢解之类的琐事。许多城市参观;一套要出售的产品;肢解的具体方法;并计算得分。 规格 城市 N 是我们的业务员将拜访的引用数量 推销员 主程序或功能 用语言写 X 长度N等于0 产品展示 元素的全名元素周期表中 这包括新接受的元素名称 肢解 将推销员切成 N等长的连续片 每个部分都应该是有效的语言功能或程序 X 输出量 执行后,推销员应输出 Chuck Norris,切成薄片的每个应输出不同的产品 仅多余的尾随空格 计分 L推销员的长度(字节)除以城市数量(N)的平方。 Score = L/(N*N) 最低分获胜 发布十进制分数时,请包含3个有效数字 例子 该推销员大约访问了3个城市N=3,并且长度为9个L=9。因此,此答案的分数将是S = 9 / (3 * 3) = 9/9 = 1。 …

16
(KevinC)三角DeciDigits序列
输入: 一个正整数n,它是1 <= n <= 25000。 输出: 在此序列中,我们从十进制数字1 / n开始。 然后我们将数字的总和取到逗号后的第n个数字(1索引);然后是数字总和,直到第(n -1)个,然后是(n -2)个,依此类推。继续直到n为1。 输出是所有这些总和的总和。 例如: n = 7 1/7 = 0.1428571428... 7th digit-sum = 1+4+2+8+5+7+1 = 28 6th digit-sum = 1+4+2+8+5+7 = 27 5th digit-sum = 1+4+2+8+5 = 20 4th digit-sum = 1+4+2+8 = 15 3rd digit-sum = 1+4+2 = …

5
重新创建Windows ME屏幕保护程序为ASCII
这种挑战来自灵感这个答案在向Ubuntu的堆栈交换。 介绍 还记得带有管道的Windows ME屏幕保护程序吗?是时候带回怀旧了! 挑战 您应该编写一个程序或函数来输出屏幕保护程序的ASCII表示。在屏幕保护程序中,应该有一个沿半随机方向增长的管道。 管道的起点将随机放置在屏幕的任何边界处,并且管件应垂直于边界(拐角的第一根管道可以是水平的也可以是垂直的)。每次滴答时,管道都会朝着其面对的方向(水平/垂直)生长,80%或者会偶然发生拐角20%。 管道表示 要创建管道,将使用6个unicode字符 ─ \u2500 horizontal pipe │ \u2502 vertical pipe ┌ \u250C upper left corner pipe ┐ \u2510 upper right corner pipe └ \u2514 lower left corner pipe ┘ \u2518 lower right corner pipe 输入项 程序/功能将采用3个输入值,这些值可以通过功能参数收集或提示给用户。 刻度线数量 屏幕宽度 屏幕高度 刻度线数量 对于每个刻度,都会在屏幕上添加一条管道。如果管道在同一位置生成,管道将覆盖旧管道。 例如,以3x3大小的屏幕 ticks …

30
打印数字根
这与My Word可以打败您的Word有所不同,因为它不那么复杂,只需要您对其进行计算,而不进行比较。 要找到数字根,请获取一个数字的所有数字,将它们相加,然后重复直到获得一个数字。例如,如果数字是12345,你会增加1,2,3,4,和5,越来越15。然后,您将添加1和5,然后给您6。 你的任务 通过STDIN给定整数N(0 <= N <= 10000),请打印N的数字根。 测试用例 1 -> 1 45 -> 9 341 -> 8 6801 -> 6 59613 -> 6 495106 -> 7 请记住,这是code-golf,所以字节数最少的代码将获胜。

14
残缺查询
我知道您一直想着通过网络代理体验生活乐趣的磨难和磨难。老实说,谁没有呢?今天,您的任务是实现这个目标(至少是其中的一部分)。由于大量用户坚持通过查询参数传递敏感信息(用户很愚蠢),因此网站X每天都有大量流量,并且正在寻找PaaS(显然这是指代理即服务)。您的任务是在将请求转发到其原始目的地之前,从请求中删除所有敏感查询参数。 输入项 遵循RFC3986第3节中 URI语法的格式正确的绝对HTTP URL 。 您可以假设没有碎片 简短格式示例,其中方括号中的任何内容表示可选: http[s]://[user:pass@]host.name.com[:port]/[?param1=value1&param2=value2...] 要删除的查询参数列表。 输出量 修改后的HTTP URL,不包含输入列表中定义的参数。 例子 http://example.com/ [foo] > http://example.com/ http://example.com/?foo=bar [] > http://example.com/?foo=bar http://example.com/ [] > http://example.com/ http://example.com/?foo=1&bar=2&baz=3 [foo,baz] > http://example.com/?bar=2 http://example.com/?foo=1&bar=2&baz=3 [foo,bar,baz] > http://example.com/ http://example.com/?foo&bar=2&baz= [foo,baz] > http://example.com/?bar=2 http://example.com/?abc=1&def=2&baz=foo [foo,bar] > http://example.com/?abc=1&def=2&baz=foo http://example.com/?foobar=baz [foo] > http://example.com/?foobar=baz http://foo:foo@foo.com:8080/?foo=1&bar=foo [foo] > http://foo:foo@foo.com:8080/?bar=foo …
19 code-golf 

13
进行气泡排序
创建一个需要两个输入的函数或程序: 应当排序的整数列表(少于20个元素) 一个正整数,N表示您应该进行多少次比较 函数将停止,并在N比较后输出结果的整数列表。如果在进行N比较之前对列表进行了完全排序,则应该输出排序后的列表。 在冒泡排序算法是众所周知的,我想大多数人都知道它。以下伪代码和动画(均来自链接的Wikipedia-文章)应提供必要的详细信息: procedure bubbleSort( A : list of sortable items ) n = length(A) repeat swapped = false for i = 1 to n-1 inclusive do /* if this pair is out of order */ if A[i-1] > A[i] then /* swap them and remember something changed …

4
将表达式转换为Panfix表示法
我正在浏览esolangs,偶然发现了这种语言:https : //github.com/catseye/Quylthulg。 关于这种语言的一个有趣的事情是,它不使用前缀,后缀或中缀,它使用 这三个名称,将其称为“ panfix”表示法。 这是一个例子。为了1+2在panfix中表示普通的中缀,它变为:+1+2+。注意操作符在操作数之前,之间和之后的状态。另一个例子是(1+2)*3。这变成了*+1+2+*3*。再次注意*关于操作数的所有三个地方情况如何+1+2+和的3。 挑战 正如您可能已经猜到的那样,此挑战中的任务是将表达式从infix转换为panfix。 一些澄清: 您只需要处理四个基本操作: +-*/ 您将不必处理那些一元版本,只需二进制 你必须处理括号 假设*/那时的正常优先级规则+-和所有左关联性。 这些数字将是非负整数 您可以选择在输入和输出中都留一个空格 测试用例 1+2 -> +1+2+ 1+2+3 -> ++1+2++3+ (1+2)*3 -> *+1+2+*3* 10/2*5 -> */10/2/*5* (5+3)*((9+18)/4-1) -> *+5+3+*-/+9+18+/4/-1-* 这是代码高尔夫球,因此以字节为单位的最短代码胜出!

16
突出显示边界框,第一部分:笛卡尔网格
您会得到一个由.和组成的矩形网格#,如下所示: .......... ..#....... ....#..#.. ...#...... .......... 你的任务是填补的整个轴线对齐边框#进一步#: .......... ..######.. ..######.. ..######.. .......... 轴对齐的边框是包含所有的最小矩形#。 想要更多?尝试第二部分! 规则 您可以使用任意两个不同的打印的ASCII字符(0x20至0x7E的,包容性的),代替#和.。我会继续提到他们作为#和.对规范虽然剩下的时间。 输入和输出可以是单个换行符分隔的字符串,也可以是字符串列表(每行一个),但是格式必须一致。 您可以假定输入至少包含一行,#并且所有行的长度均相同。 您可以编写程序或函数,并使用我们的任何标准方法来接收输入和提供输出。 您可以使用任何编程语言,但是请注意,默认情况下,这些漏洞是禁止的。 这是代码高尔夫球,因此以字节为单位的最短有效答案为准。 测试用例 每个测试用例具有彼此相邻的输入和输出。 # # ... ... #.. #.. ... ... ... ... #.. ### ..# ### .#. ### #.. ### ..# ### ..... ..... .#.#. .###. ..... ..... ... …

14
目录计算
对于此挑战,将为您提供一条绝对路径和一条“新”路径(可以是绝对路径,也可以是相对路径),并且您需要返回最终路径。 例如,如果您当前的目录是/var/tmp/test: my_dir 要么 my_dir/ 应返回/var/tmp/test/my_dir ../../my_dir 应该回来 /var/my_dir /my_dir/./ 应该回来 /my_dir ../../../../../ 应该回来 / 要更加学究: 目录是由字母数字字符的非空字符串和符号-,_或. 路径是0或多个目录的列表,用分隔/。绝对路径以a开头/,相对路径则不是。路径可以包含结尾/。 给定第一个路径,您需要“解析”第二个路径。 解决的过程是: 测试第二条路径是否相对。如果是这样,则将绝对路径的目录插入第二个路径的开头。 如果任何目录为..,则将其和上一个目录删除。如果它是第一个目录,则只需将其删除。 如果任何目录为.,则将其删除。 输出最终的绝对路径。您不应该输出结尾/。 您不需要处理不正确的输入。无论所传递的目录在您的计算机上是否实际存在,这些命令都应该起作用。您可以假定所有内容都是目录,即使它具有扩展名。 测试用例 Absolute New Output "/a/b/c" "d" -> "/a/b/c/d" "/a/b/c/" "d" -> "/a/b/c/d" "/a/b/c/" "d/" -> "/a/b/c/d" "/a/b/c" "/d" -> "/d" "/a/b/c" "/d/" -> "/d" "/../a/b/c/" …

11
你到底是什么问题?
介绍 当您收到无聊的文本时,您只想尽快解决它。让我们观察以下文本: Ens colligi timenda etc priorem judicem. De quascunque ii at contingere repugnaret explicetur intellectu. Adjuvetis hoc fortassis suspicari opportune obversari vix eam? Dei praemia prudens hominum iii constet requiri haberem. Ima sane nemo modi fuit lus pro dem haud. Vestro age negare tactum hoc cui lor. Ne et …

30
反转布尔数组
一个不错的简单的 输入项 给定一个布尔数组(或可接受的替代方法),您可以假定该数组的长度永远不会超过32个元素。 [false, false, true, false, false] 输出量 反转数组的每个元素并将其输出。 [true, true, false, true, true] 规则 您可以编写完整的程序或仅编写函数 适用标准漏洞 每种语言以字节为单位的最短代码胜出! 测试用例 Input: [true, false] Output: [false, true] Input: //Example of acceptable alternative [0,1,1] Output: [1,0,0]

4
确定战争游戏的赢家
该卡的游戏战争是在最后的结局是完全由甲板的初始配置决定的,只要一定的规则并遵守在卡片从比赛场地拿起并移动到甲板的顺序有趣。在这次挑战中,将只有2个玩家,大大简化了事情。 游戏 每位玩家将获得26张牌。 每个玩家将顶牌正面朝上放置在卡组中。拥有较高排名卡(Ace > King > Queen > Jack > 10 > 9 > 8 > 7 > 6 > 5 > 4 > 3 > 2)的玩家赢得回合,并将其卡放置在对手卡的顶部,将其翻转,然后将其添加到其牌组的底部(因此,他们的获胜牌位于牌组的底部) ,而另一位玩家的输家牌正好在其上方)。直到玩家之一的卡用完为止。 如果这些牌的等级相同,则每个玩家将其牌组的前2张牌面朝上放置在其前一张牌的顶部(这样,位于牌组顶上的卡牌便是堆叠中的第二张牌,并且排名第二的卡片位于顶部)。然后,再次比较(每叠顶牌的排名),获胜者将其整个叠放在输家的整个叠层之上,将其上下颠倒,然后将其放在牌组的底部。如果还有其他平局,则以相同的方式玩更多的牌,直到选择获胜者或一个玩家的牌用完为止。 如果任一位玩家需要从其牌组中抽出一张牌,但其牌组为空,则他们立即输掉比赛。 挑战 给定玩家牌组中的两张纸牌列表,采用任何方便的格式,如果玩家1获胜,则输出真实值,如果玩家2获胜,则输出假值。 为方便起见,将用表示10张卡T,并且将面部卡缩写(Ace -> A, King -> K, Queen -> Q, Jack -> J),以便所有卡都长一个字符。或者,等级可以用十进制整数2-14(Jack -> 11, Queen -> 12, …

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.