编程拼图和代码高尔夫

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

9
缩短绝对路径
有时,使用当前工作目录作为参考,可以缩短长的绝对路径,例如linux工具的命令行参数。 $ pwd /home/heh $ cat /home/heh/mydir/myfile my stuff $ cat mydir/myfile my stuff 在这个挑战中,您应该使一个函数或程序接收两个参数: 绝对路径,使用linux格式(以开头/) 当前目录,使用相同格式 输出是以下两者中的较短者: 输入1不变 与绝对路径引用相同文件/目录的相对路径 重点: 如果您的操作系统与linux兼容,则可以使用系统的当前目录而不是将其接收为输入 您可以假定输入仅包含字母数字字符(和路径分隔符) 您可以假设输入的绝对路径/末尾没有路径分隔符 您可以假设输入的当前目录/在末尾有路径分隔符 您不能假定绝对路径引用了一个现有文件,或者该文件的任何部分都是可访问的目录;但是,可以假定当前目录有效 您可以假设在任何一条路径附近都没有符号链接-因为我不想使用任何特殊的方式来处理符号链接 无需支持其中两个输入均为根目录的情况 “当前目录”应输出为.(空字符串无效) 测试用例(输入1,输入2,输出): /home/user/mydir/myfile /home/user mydir/myfile /var/users/admin/secret/passwd /var/users/joe/hack ../../admin/secret/passwd /home/user/myfile /tmp/someplace /home/user/myfile /dir1/dir2 /dir1/dir2/dir3/dir4 ../.. /dir1/dir2 /dir1/dir2 .

1
生活:是创造还是进化?
给定方形的“生命游戏”网格的状态,确定它是否可以从任何先前的状态演变而来,或者只能被创建。即,确定该状态是否为“伊甸园”状态。 输入项 状态的正方形网格,其中1表示“活动”,0表示“死”。如果愿意,可以选择两个可区别的符号,而不是0和1。 网格的边长将不为零,但可以为任何自然数1 <= N <= 20。 输入网格外部的任何或所有单元格可能在此世代中仍处于活动状态,而它们中的任何或全部可能在上一代中已处于活动状态。要考虑的宇宙是无限的,因此没有边界条件。输入的边不是Universe的边。具体来说,网格不环绕。 输入可以采用行分隔字符串或单个字符串的形式。如果需要,可以将边长或网格面积作为附加输入(在网格之前或之后)。 可接受的输入格式: 010,101,010 010101010 010 101 010 3 010101010 输出量 如果没有可能导致下一代输入状态的先前状态(包括大于输入网格的状态),则为“已创建”。 如果存在至少一个可能导致下一代输入状态的先前状态(包括大于输入网格的状态),则为“已演化”。 如果愿意,可以使用任何两个可区分的字符串或数字来代替“ Created”和“ Evolved”。 注意,可能的先前状态不必与输入区分开。如果一个国家拥有自己作为下一代,那么它就应该被认为是进化的。 测试用例 010 101 010 Evolved 0101110100 0010101001 1011100110 0101111101 1001001111 1111001001 1011111010 0110011101 1001010100 0010111010 Created 创建的测试用例取自Achim Flammenkamp的《生命游戏页面》。 注意 感谢trichoplax编写了这个挑战,我从这里接受了它

6
给我披萨
因为是星期六(UTC)并且我很饿,所以我想吃一片披萨。我会给您点菜,我想要一个美味的热ascii艺术披萨。迎接挑战? 直通车 无论您的驱动力是什么,无论是STDIN,函数参数,命令行参数,我都将下订单,但是我不会为您放置变量。(JS函数表达式必须分配给变量。) 命令 我的订单分为两部分。第一个将是从3到的正非零整数6。这是我的比萨饼的大小。例如,6没有浇头的比萨饼看起来像: /=====\ / \ | | | | \ / \=====/ 尺寸5: /====\ / \ | | \ / \====/ 尺寸4: /===\ | | | | \===/ 尺寸 3 /==\ | | \==/ 浇头 我的浇头是一串大写字母。以下是可能的值: P-意大利辣香肠 S-香肠 N-piNeapple J-墨西哥胡椒 B-香蕉辣椒 C-培根 您必须将它们放在披萨的某个地方。如果我订购大小为4和PSPCJ,则这是有效的输出: /===\ |PSPCJ| | | …

15
查找翻译表
给定两个字符串,找到两者之间的转换表(替换密码),如果无法转换,则输出false。必须最小化并从左到右创建答案。单词之间要翻译的第一个字符必须是翻译表中的第一个字符。除此之外,任何未翻译的字母(与原始位置相同)都不应出现在翻译表中。 通过示例可能最容易定义: 有效案例 "bat", "sap" => ["bt","sp"] 请注意顺序,["tb","ps"]此挑战的输出无效。 "sense", "12n12" => ["se","12"] 请注意,n由于它是一对一的关系,因此不翻译。 "rabid", "snail" => ["rabd","snal"] 请注意,i由于它是一对一的关系,因此不翻译。 "ass", "all" => ["s","l"] 不包括A,它保持不变,由于模式匹配而s可以映射到l。 "3121212", "ABLBLBL" => ["312","ABL"] 完美匹配图案。 虚假案件 "banana", "angular" => false (长度不一样,不可能)。 "animal", "snails" => false (每个字符只能在翻译的每一侧一次使用)。 "can","cnn" => false (n在翻译中隐式使用,因此,使用n-> a定义翻译表将无效) 因此,这[aimal,sails]是一个无效的答案,这很虚假。 "a1", "22" => false 参见“腔室”,列为虚假的。在这种情况下,是因为a和1都不能同时映射到2。(每个字符只能在翻译的每一侧一次使用)。 …

3
最大的吃喝玩乐
您已经收到了一袋吃喝玩乐的东西。大家都知道,为了最欣赏不同的口味,您需要在不同的口味之间旋转。 基本: 一次只能吃一吃喝玩乐 吃吃喝玩乐的顺序必须定期。 每个时期最多只能包含一种风味。 你的包里只有这么多吃喝玩乐。吃的吃喝玩乐的味道不能超过包中的味道。 您想吃尽可能多的吃喝玩乐(可能并不总是可能的) 例子: 假设您以3个红色,2个蓝色和3个绿色彩虹糖开始: R B G R B G R G Invalid: The last R must be followed by a B, not a G R B G R B G R Valid, but sub-optimal R R R Valid, but sub-optimal R G B R …
17 code-golf 

8
有多少个孔?
挑战 给定形状的图形输入,确定其中有多少个孔。 不重复 该问题被标记为Count Islands可能重复。我认为这一挑战与Count Island挑战不同,因为在这一挑战中,您必须弄清楚如何消除接触边界的障碍物。 输入项 输入将以2D输入形式给出,即多行字符串,字符串数组或字符数组数组。这代表形状。保证形状只有一件,通过边缘连接。请指定您希望如何输入。 输出量 输出是一个单个整数,说明形状中有多少个孔。尾随换行符是允许的,但不允许其他前导或尾随空格。换句话说,输出必须匹配正则表达式^\d+\n?$。 什么是孔? 这些是单孔: #### # # # # #### #### # # # ## ### ##### # # # # # ##### 这些不是漏洞: ######## ######## # #### # #### # ###### # ######## ### # ### ########## # # ######## # …

13
算术表的整数位
挑战: 根据输入,输出以下六个算术表之一的“整数”: -加法(+); -减法(-); -乘法(*); -除(/); -取幂(^); -模运算(%)。 规则: 我该怎么界定为“整数位”:算术操作数正好是以下情况之一的每一个结果:0,1,2,3,4,5,6,7,8,9。这意味着您将排除每个等于10或更高的结果,每个等于-1或更低的结果以及每个非整数的结果。 我们如何计算算术结果:首先使用高位数字,然后使用左数位的操作数。你被允许这样做,反之亦然(即y/x代替x/y),只要你对输出的所有六个一致!(因此,不允许您使用y-x且x/y答案相同。)† 对于除以0的测试用例,我们将不会输出任何内容(用于除法和模运算表) 我们不会为edge-case输出任何内容0^0。 输出: 因此,输出以下内容(表格式有些灵活(请参见下文):因此,这些行是可选的,主要是为了提高测试用例的可读性而添加的): 加成: + | 0 1 2 3 4 5 6 7 8 9 ----------------------- 0 | 0 1 2 3 4 5 6 7 8 9 1 | 1 2 3 4 5 6 7 …

10
更改,循环和显示标志的填充最少
输入: 两个整数:一个负数,一个正数。 输出: 在第一行上,输出从最低到最高。在第二行中,我们删除了最高和最低数字,并对所有单个数字进行了符号更改。在第三行中,我们再次删除了最高和最低数字,并再次对所有单个数字进行了符号更改。等等。(下面的示例应该使挑战更加清楚。) 重要提示:此外,我们添加空格以使一列中的数字全部对齐(在右侧)。 最小对齐是此挑战的主要部分,这意味着您不能仅使每个数字都具有相同的宽度。列的宽度基于该特定列的最大数字宽度(并且带符号更改的顺序是使数字每列的宽度有所不同)。 例如: Input: -3,6 Output: -3,-2,-1, 0, 1, 2, 3, 4,5,6 // sequence from lowest to highest 2, 1, 0,-1,-2,-3,-4,-5 // -3 and 6 removed; then all signs changed -1, 0, 1, 2, 3, 4 // 2 and -5 removed; then all signs changed again …

11
递归查找素数
递归素数是素数的序列,使得 p(1) = 2 p(n) = the p(n-1)th prime 这是一个示例,说明如何计算第四个递归素数。 p(4) = the p(3)th prime p(3) = the p(2)th prime p(2) = the p(1)th prime p(1) = 2 p(2) = the 2nd prime p(2) = 3 p(3) = the 3rd prime p(3) = 5 p(4) = the 5th prime p(4) …

8
可视化欧几里得算法
欧几里得算法是用于计算两个正整数的最大公约数(GCD)的广为人知的算法。 算法 为解决这一挑战,算法描述如下: 将两个输入显示为某个字符的相邻行, 例如的输入3,4可以由相邻行000和0000 将length(short_line)较长行中的第一个字符转换为另一个字符,- 现在说看起来像000和---0 删除length(short_line)较长行中的第一个字符。 现在000,0 重复步骤2和3,直到两个具有相等的长度,使用较短和较长的线在每次迭代之后,例如 000,0 -00,0 00,0 -0,0 0,0 您可以选择是在此处停止还是继续迭代,然后将其中一行转换为空行。 这些步骤中的每个步骤之间应间隔0.3秒至1.5秒。 挑战 编写一个程序,给定两个自然数作为输入,它会创建一个输出,该输出看起来与上述算法的输出完全相同。您可以使用其他非空白打印的ASCII字符比0和-,但要一致,仅使用两个字符。如果输出(包括时序)与上述算法产生的输出完全相同,您也可以使用其他算法。 例子 这是input的示例24,35,它们是互质数,因此它们的GCD为1。 这是带有16,42GCD 2的input的示例。 规则 这是一个代码高尔夫球,因此最短字节获胜 适用标准漏洞 您可以假设输入为正十进制整数 除非您使用sed,Retina,///等,否则您可以使用一元 澄清说明 代表数字的线需要保持其原始顺序,即,在所有后续帧中,第一个显示的“框架”的第一和第二行分别必须是第一和第二行。 算法结束后,不应再出现其他可见实体。但是,这也意味着如果确保最后一个“帧”显示的时间至少与消隐之前所有其他帧的显示时间相同,则可以将行消隐。

5
确定长方体的类型
介绍: 我是一个曲折的难题收藏家。在这里,您可以看到我目前收藏的±300个拼图。 我想每个人都知道常规的魔方(3x3x3多维数据集),它是一个NxNxN多维数据集。还有长方体(块状拼图),它们以不同的形式出现,也许SuperAntionioVivaldi可以在这里更好地解释一下: 常规Domino 长方体(例如2x2x3;2x3x3;3x3x4等)-它们以NxNx(N + O)或Nx(N + O)x(N + O)的形式出现,具有两个奇数维,并且一个偶数或偶数或奇数两个。 变形者长方体(例如2x2x4 ; 3x3x5; 3x3x9 ; 4x4x6 ;等) -它们有形式NxNx(N + P) ,其顾名思义,shapeshifts(在所有方向上)。这三个维度都是奇数或偶数。 软盘长方体(例如1x3x3;2x4x4等)-它们以Nx(N + P)x(N + P)的形式出现,与Shapeshifter几乎相同,但是具有所谓的Floppy Parity。 砖块长方体(例如2x3x4;3x4x5; 2x3x5等)-以Nx(N + O)x(N + P)的形式出现,就像常规的Domino长方体具有两个奇数维和一个偶数,或两个偶数和一个奇数;但没有相同的尺寸。 终极Shapeshifter(例如2x4x6、3x5x7、2x4x10等)-它们以Nx(N + O)x(N + R)的形式出现,并且可以在任何方向上变形。这三个维度都是奇数或偶数。但没有相同的尺寸。 挑战: 输入: 具有以下限制的正整数n:8 <= n <= 125. n可以唯一地解码为三个值(维度)的乘积,每个值在2到5之间(含2和5)。 我将其限制为2-5的原因是为了防止重复输入(例如1x2x4 = 8和2x2x2 …

23
用集合构造自然数
这种构造是表示自然数的一种方式。 在此表示形式中,0被定义为空集,而对于所有其他数字,n是{0}和{n-1}的并集。 例如,构造3我们可以遵循以下算法: 3 = {ø, 2} = {ø, {ø, 1}} = {ø, {ø, {ø}}} 任务 您可能已经猜到,您的任务是取一个自然数(包括零)并输出其构造。 如果您选择的语言支持这样的对象,则可以将其输出为字符串或设置为对象。 如果选择输出为字符串,则应使用花括号({})表示一个集合。您可以选择将空集表示为ø(否则,它应该是没有条目的集{})。您也可以选择在集合中的条目之间和之后添加逗号和空格。 顺序并不重要,但是输出的集合中可能没有重复的元素(例如{ø,ø}) 这是代码高尔夫球,因此目标是拥有最少的字节数 测试用例 这是一些带有一些示例输出的测试案例。 0 -> {} 1 -> {{}} 2 -> {{}{{}}} 3 -> {{}{{}{{}}}} 4 -> {{}{{}{{}{{}}}}}

9
地毯机场
2015年,波特兰国际机场开始更换其标志性地毯。我希望您编写一个程序以尽可能少的字节数绘制它们的旧地毯。 地毯: 技术指标 这是指向一个图块的可缩放pdf图像的链接。您的输出应匹配该图像的相对尺寸和位置。 最终图像中的所有颜色应在指定图像中每个RGB值的15以内。为方便起见,以下列出了这些内容。 Red Green Blue Teal: 0, 168, 142 Magenta: 168, 108, 185 Orange: 247, 58, 58 Light Blue: 90, 166, 216 Dark Blue: 0, 77, 117 您的输出必须至少为150x150像素,并且应为正方形。如果选择以可缩放格式(如矢量图像)输出,则应完全匹配该图像。 您可以以任何预先存在的图像格式输出图像。 这是代码高尔夫球,因此您应努力减少代码中的字节数。

1
德州扑克还是德州扑克?
您的朋友在最后一刻邀请您参加一场高风险的扑克游戏,作为计算机科学家,您决定利用自己的技能在游戏中取得优势。给定2 cards(您的手)和0, 3, 4 or 5 cards(已发牌),您的任务将必须决定,您能得到的最佳手牌是什么。如果将所有7张卡都作为参数给出,答案很明确。如果给予较少,问题将变得更加复杂。但是,这还不足以为您提供所需的优势,您还必须从其余的牌中计算出最好的一手牌,以了解对手的实力。 Hold'em刷新器 如果您不了解Hold'em,则游戏中的每个玩家都以2张牌作为其“手牌”开始。在3个“回合”的过程中,所有其他玩家之间共享了额外的卡。第一轮,显示3张牌。第二张,另外一张,第三张显示最终的牌。先给出的两张牌代表您的手,而后者则表示连续转弯给出的0、3、4或5张牌。 可能的数字: [2,3,4,5,6,7,8,9,T(10),J,Q,K,A] 可能的西装: [S,C,H,D] 全甲板: [2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS, # Spades. 2C,3C,4C,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC, # Clubs. 2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH, # Hearts. 2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD] # Diamonds. 手牌排名: 1:Royal Flush (A-K-Q-J-10, all from the same suit). 2:Straight Flush (Sequential cards, all from the same suit). 3:Four-of-a-Kind (Self explanatory). 4:Full House (3-of-a-kind …

5
扭曲的句子
规则 该程序应接收一个字符串/单词数组作为输入。对于字符串/数组中的每个单词,它将通过从单词的正面和背面以交替方式获取字符来重建单词。 12345 678 9-> 15243 687 9。 然后,它将以字符串中最早出现的单词和最新出现的单词之间交替的方式重新排列单词。 15243 687 9-> 15243 9 687 最后,它将通过在输出结果之前将空格,制表符和换行符放置在它们最初所在的索引处来重建字符串。 12345 678 9-> 15243 687 9-> 15243 9687-> 15243 968 7 输出应与输入具有相同的数据类型。 禁止标准漏洞 例子 输入: 敏捷的棕色狐狸跳过了懒狗。 输出: Teh d.ogq kucil yaz bnrwo tehf xoo rvej supm 输入: 敏捷的棕色狐狸跳过 了懒狗。 输出: Teh d.ogq kucil yaz …

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.