编程拼图和代码高尔夫

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

2
给定一张输赢表,输出体育比赛中每场比赛的结果
这个问题的灵感来自正在进行的“先生们玩的流氓比赛” 橄榄球世界杯,该比赛刚刚结束了撞球阶段。锦标赛中有20支队伍,分成4组,每组5支。在小组赛阶段,每个团队与小组中的所有其他团队进行比赛(每个小组总共进行10场比赛),并且每个小组中排名前2的团队进入淘汰赛阶段。 在撞球阶段结束时,每个撞球都有一张表格,显示每个团队的胜利,失败和平局数量。这个问题的挑战是编写一个程序,输入一组中每个团队的获胜,失败和平局数,然后从该信息输出10场比赛中每场比赛的个人结果(谁赢,谁输,谁对谁)(如果可能),否则输出错误消息。 例如,这是今年锦标赛台球D的表: Win Loss Draw Canada 0 4 0 France 3 1 0 Ireland 4 0 0 Italy 2 2 0 Romania 1 3 0 从这些信息中,我们可以推断出爱尔兰赢了加拿大,法国,意大利和罗马尼亚,因为他们赢得了所有比赛。法国一定赢了加拿大,意大利和罗马尼亚,但输给了爱尔兰,因为他们只输了一个,而且一定是不败的爱尔兰。我们刚刚得出的结论是意大利输给了爱尔兰和法国,因此他们一定赢了加拿大和罗马尼亚。加拿大输掉了所有比赛,因此罗马尼亚的胜利一定是对加拿大。 Canada France Ireland Italy Romania Canada - L L L L France W - L W W Ireland W W - W …
11 code-golf 

1
Hadamard问题的优化版本
首先,一些定义。 甲Hadamard矩阵是方阵,其条目是+1或-1,并且其行是相互正交的。所述哈达玛猜想提出的顺序4k的Hadamard矩阵存在每一个正整数k。 甲循环矩阵是一类特殊的矩阵,其中每一行向量是一个旋转元件的相对前述行向量权。那就是矩阵是由它的第一行定义的。 据已知的是,除了4×4的矩阵,有没有循环Hadamard矩阵。 具有m行和n> = m列的矩阵是局部循环,如果是一些循环矩阵的第一m行。 任务 对于从2开始的每个偶数n,输出具有+ -1项和n列的最大部分循环矩阵的大小,该矩阵的所有行都相互正交。 得分了 您的分数是最高的n,因此k <= n,没有任何人比您发布的正确答案更高。显然,如果您拥有所有最佳答案,那么您将获得n您发布的最高分数。但是,即使您的答案不是最佳答案,如果没有其他人能打败它,您仍然可以获得分数。 语言和图书馆 您可以使用任何喜欢的语言和库。在可行的情况下,能够运行您的代码将是一件好事,因此,请尽可能提供有关如何在Linux中运行/编译代码的完整说明。 领先的作品 Mitch Schwartz在Python中撰写的64

3
可能的俄罗斯方块序列
编写代码以弄清楚官方的Tetris算法是否可以生成一系列Tetris。最少的字节数获胜。 官方的俄罗斯方块游戏以特殊方式生成掉落序列。IJLOSTZ以随机顺序删除这七个片段,然后删除另一个随机排列,依此类推。 JTLOISZ STJOLIZ LISJOTZ ... 此示例包含连续的片段 SZSTJOLIZLIS 请注意,它跨越了一个由7组组成的边界。 SZOTLZSOJSIT 不能是任何俄罗斯方块序列的子字符串,因此在正式的俄罗斯方块游戏中永远不会看到它。 输入:一个非空的字母字符串IJLOSTZ。 输出:一个True或Falsey值,表示输入是官方Tetris Random Generator可以生成的序列的子字符串,即七个字母的排列的串联。 测试用例: 真正: T JJ (unique breakdown: J J) JTJ (possible breakdown: JT J) LTOZIJS SZSTJOLIZLIS (possible breakdown: SZ STJOLIZ LIS) JTLOISZSTJOLIZLISJOTZ (possible breakdown: JTLOISZ STJOLIZ LISJOTZ) LIJZTSLIJZTS (unique breakdown: LIJZTS LIJZTS) 假: SZOTLZSOJSIT ZZZ ZIZJLJ …

4
近似方阵
背景 我有一堆相等大小的正方形盒子,由于我是个整洁的人,所以我想将它们全部排列成正方形。但是,它们的数量不一定是完美的正方形,因此我可能不得不近似正方形。我希望您找到我最美的安排-当然是通过编程。 输入值 您的输入是一个正整数k,代表盒子的数量。 输出量 您的程序应选择两个正整数m, n使之m*(n-1) < k ≤ m*n成立。它们代表了我们正在排列的大正方形形状的宽度和高度。由于我们正在寻找具有美学美感的形状,因此数量应尽可能少,以使形状接近正方形,并且面积接近。如果该对还有几个候选者,请选择宽度最大的那个。(m - n)2 + (m*n - k)2k(m, n)m 现在,您的实际输出将不是数字m和n。取而代之的是,您应使用字符#来表示框来打印框的排列。更具体地说,您应打印n-1行,每行包含m字符#,然后打印一行k - m*(n-1)字符#。请注意,输出中完全包含k字符#。 规则和计分 输出中不得包含任何前导或尾随空格,除非需要,最后一行可以用尾随空格填充,该尾随空格的长度应为length m。可能只有一个尾随的换行符,但没有前面的换行符。#如果需要,可以使用任何可打印的ASCII字符代替。 您可以编写完整的程序,或从函数返回字符串。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 这是一些输入值的正确输出。 1 # 2 ## 3 ## # 4 ## ## 8 ### ### ## 13 ##### ##### ### 17 ###### ###### ##### 18 …

2
数树
甲树是一个连接,无向图,没有周期。您的任务是计算给定数量的顶点中有多少棵不同的树。 如果两棵树不是同构的,则认为它们是不同的。如果两个图的各自顶点可以以如下方式配对,则两个图是同构的:当且仅当与另一个图中的那些顶点配对的顶点之间存在边时,一个图中的两个顶点之间才存在边。有关更完整的描述,请参见上面的链接。 要查看大小为1到6的所有不同树的外观,请在此处查看。 您要输出的序列是OEIS上的A000055。 限制:您的解决方案必须在几分钟或更短的时间内才能在输入上运行6。这并不是要消除指数时间算法,而是要消除双指数时间算法,例如对所有边缘集的强行强制。 输入:任何非负整数。 输入可以通过任何标准方式进行,包括STDIN,命令行参数,功能输入等。 输出:顶点数量与输入数量相同的不同树的数量。 输出可以通过任何标准方式进行,包括STDOUT,函数返回等。 示例: 0, 1, 2, 3, 4, 5, 6, 7应返回1, 1, 1, 1, 2, 3, 6, 11。 评分:按字节编码高尔夫。愿最短的代码获胜! 禁止出现标准漏洞。

5
平均两个清单
平均两个清单 挑战 给定两个正整数列表,请确定是否有可能将元素重新排列为两个新列表,以使新列表具有相同的算术平均值(平均值)。 输入值 输入可以通过STDIN或作为函数参数获取。输入可以视为列表,或者如果您的语言不支持列表(或类似的数组/字典),则可以将输入作为逗号或空格分隔的字符串。那是, "1 4 8 2 5,3 1 5 2 5" 是相同的: [ [1,4,8,2,5], [3,1,5,2,5] ] 所有输入列表的长度将相同。 输出量 如果可以创建两个具有相同平均值的新列表,则程序/函数应打印或返回平均值。如果不能,则程序应输出一张悲伤的脸:(。 请注意,具有相等均值的重新排列的列表(如果存在)不必具有相同的长度。可以进行任意数量的交换以创建新列表。 例子 1 4 8 2 5,3 1 5 2 5 -> 1 4 8 2 3,5 1 5 2 5 (swapped 3 and 5) -> 3.6 1 …

5
CipherSaber加密
实施一个CipherSaber加密程序,如下所述。指导原则: 以字节为单位的最小条目获胜。 但是,与规范高尔夫球规范不同的是,欢迎您发布有趣的条目,即使它们不是认真的高尔夫条目。 条目通常是一个程序,该程序从标准输入中获取纯文本,并将密文写入到标准输出中,并使用您喜欢的某种方式(由用户指定)来指定密钥。 但是,如果您希望将此作为一个过程来实现,那也很好。 IV必须来自加密安全的伪随机数生成器。如果您的语言不支持,请选择其他语言。;-) 请不要使用任何特定于加密货币的库,系统调用或指令(上述PRNG除外)。当然,通用的低级按位运算也可以。 CipherSaber是RC4 / Arcfour的变体,因此我将先描述后者,然后再对CipherSaber进行更改。 0. RC4 / Arcfour Arcfour在其他地方已完全指定,但出于完整性考虑,我将在此处进行描述。(如果互联网草稿与本说明存在任何差异,则前者为规范性。) 按键设定 设置两个数组S和S2,两个数组的长度均为256,其中k_1是密钥的第一个字节,k_n也是最后一个。 S = [0, ..., 255] S2 = [k_1, ..., k_n, k_1, ...] (S2一次又一次地填充密钥的字节,直到所有256个字节都被填充。) 然后,初始化j为0,并随机播放256次: j = 0 for i in (0 .. 255) j = (j + S[i] + S2[i]) mod 256 swap …

15
分配号码
在这个挑战,你会使用BE 分配了金额和数量的不同产品,如解释在这里。 例子 Input | Output -------------|------------- 23(12+42) | (23*12)+(23*42) 9(62-5) | (9*62)-(9*5) 4(17+8-14) | (4*17)+(4*8)-(4*14) 15(-5) | -(15*5) 2(3) | (2*3) 8(+18) | +(8*18) 8(-40+18) | -(8*40)+(8*18) 规格 输入将是形式为字符串的字符串n(_),带有单个正无符号整数,n后跟一个带括号的表达式_。该表达式_将由以+和-号分隔的多个正整数项之一的和与差组成。第一项之前可以带有+符号,-符号或没有符号。 在输出中,n应分配初始数字以乘以每个项。a应该将的每个术语左乘以n产生带括号的表达式(n*a),并且这些新术语应与+和-符号以与原始术语完全相同的方式进行组合。 输入无效 这些是您不必处理的输入示例。 3(5 plus 3) 6(5 13) (5+8)(6+6) (5+3)8 获奖 这是代码高尔夫球,因此以字节为单位的最短代码获胜。

2
学习GolfScript的最佳场所?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 4年前关闭。 它看起来像是一种有趣的语言,但是官方站点已关闭,并且EsoLangs页面无法很好地解释它,并且看起来好像缺少了东西。该语言是否有记录在案的地方?
11 tips  golfscript 

2
最快的最长公共子序列查找器
你的任务是解决最长公共子序列的ň长度为1000的字符串。 给LCS问题的一个有效的解决方案为两个或多个字符串小号1,内容S Ñ是任意字符串Ť使得字符最大长度的Ť出现在所有s ^ 我,以相同的顺序在Ť。 注意,T不必是S i的子字符串。 我们已经用最短的代码解决了这个问题。这次,大小无关紧要。 例 字符串axbycz和 xaybzc具有8个常见的长度为3的子序列: abc abz ayc ayz xbc xbz xyc xyz 这些中的任何一个都是解决LCS问题的有效解决方案。 细节 如上所述,编写一个完整的程序来解决LCS问题,并遵守以下规则: 输入将由两个或多个长度为1000的字符串组成,这些字符串由代码点在0x30和0x3F之间的ASCII字符组成。 您必须从STDIN读取输入。 输入格式有两种选择: 每个字符串(包括最后一个字符串)后跟一个换行符。 字符串被链接在一起,没有分隔符,也没有尾随换行符。 字符串数将作为命令行参数传递给您的程序。 您必须将输出(即,对LCS的任何有效解决方案之一)写入STDOUT,然后再写入一个换行符。 您选择的语言必须具有针对我的操作系统(Fedora 21)的免费(例如在啤酒中)编译器/解释器。 如果您需要任何编译器标志或特定的解释器,请在您的文章中提及。 计分 我将使用2、3等字符串运行您的代码,直到花费超过120秒才能打印出有效的解决方案。这意味着每个n值都有120秒。 您的代码及时完成的​​最大字符串量就是您的得分。 如果得分为n,则在最短时间内解决n个字符串问题的提交将被宣布为获胜者。 所有提交都将在我的计算机上计时(Intel Core i7-3770、16 GiB RAM,无交换)。 第(n-1)个测试的n个字符串将通过调用(并在需要时剥离换行符)生成,其定义如下:rand nrand rand() { head -c$[500*$1] /dev/zero | openssl …

16
主功率因数分解的除数和
任务是计算给定素数分解的数的除数和。 输入值 长度为n的两个数组(或等效的数组),一个包含素数因子,另一个包含相应的指数。 输出量 所有除数的总和(包括数字本身)。 例 数字240以2、3和5为素数,分别以4、1和1为指数。预期输出为744。 Input: [2,3,5] [4,1,1] Output: 744 计分 以字节为单位的最短代码胜出! 如果您的解决方案的运行时复杂度是O(指数的总和)而不是O(指数的乘积),则您的分数可能会乘以0.8。 这里也有类似的问题,但这不是挑战。我认为这个问题足够有趣。 获胜者将在本周末选出
11 code-golf  math  primes 

1
非回文式多语种虫
介绍 数字101是回文,因为它前后读相同。数字105不是。但是,以八为底的105表示为151,这是回文的。另一方面,从2到101的任何碱基,103都不是回文。因此,103 严格来说是非回文的。 精确的定义是:如果非负整数n在2到n-2之间(包括2和n-2)之间的任何碱基都不是回文,则它严格是非回文的。 前几个严格非回文数是0, 1, 2, 3, 4, 6, 11, 19, 47, 53, 79, 103, 137, 139, 149, 163, 167, 179, 223, 263, 269...(A016038) 编写一个完整的程序,该程序从STDIN 中获取数字x并打印第x个严格的非回文数。例如,输入5将产生输出4。 挑战 面临的挑战是编写多个(一个或多个)程序,每个程序以不同的语言解决此任务。 然后,您必须将所有程序放在矩形的字符网格中。可以使用Boggle样式访问程序。也就是说,从一个字符到相邻字符(包括对角线),切勿使用同一字符超过一次。 例如,以下网格: abc bdc 包括的话abc,ccd,bbad,和bcdb,但不是ac,bdd,bcb,或cbbc。 必须使用这些规则在网格中找到每个程序。但是,您可以在多个程序中使用相同的字符。 得分了 您的分数是网格中的字符数除以程序数。最低分获胜! 规则 如果两种语言通常使用不同的名称,而忽略版本号,则认为它们是不同的。例如,C和C ++是不同的,但是Python 2和Python 3是相同的。 网格中的字符必须全部来自可打印的ASCII,即从到~代码点20到FE。 每个程序只能由可打印的ASCII加上换行符组成。将程序插入网格时,请用空格替换每个换行符。 网格中的空格可以代表一个程序中的空间,而换行则代表另一个程序。 网格必须是矩形。 并非每个字符都需要在程序中使用。

5
最短最长公共子序列码
解决SLCSC问题的任务是,找到可能的最短代码以解决最长公共子序列问题。 给LCS问题的一个有效的解决方案为两个或多个字符串小号1,内容S Ñ是任意字符串Ť使得字符最大长度的Ť出现在所有s ^ 我,以相同的顺序在Ť。 注意,T不必是S i的子字符串。 例 字符串axbycz和 xaybzc具有8个常见的长度为3的子序列: abc abz ayc ayz xbc xbz xyc xyz 这些中的任何一个都是解决LCS问题的有效解决方案。 细节 如上所述,编写程序或函数以解决LCS问题,并遵守以下规则: 输入将包含两个或更多个仅包含小写字母的字符串。 您可以将这些字符串读取为字符串数组,也可以将单个字符串与您选择的分隔符一起读取。 您的代码必须输出该问题的任何一种可能的解决方案,可以选择后跟换行符或用引号引起来。 您可以假设字符串少于1000个字符,并且最多有20个字符串。 在这些限制内,您的代码应能在理论上按预期工作(给定无限的时间和内存)。 您的代码必须在我的机器(Intel Core i7-3770,16 GiB RAM)上不到一个小时的时间内完成下一部分的组合测试用例。 仅对所有可能的子序列进行迭代的方法将不符合时间限制。 LongestCommonSequence不允许使用琐碎此任务的内置程序,例如。 适用标准代码高尔夫球规则。 测试用例 a ab 输出: a aaaaxbbbb bbbbxcccc ccccxaaaa 输出: x hxbecqibzpyqhosszypghkdddykjfjcajnwfmtfhqcpavqrtoipocijrmqpgzoufkjkyurczxuhkcpehbhpsuieqgjcepuhbpronmlrcgvipvibhuyqndbjbrrzpqbdegmqgjliclcgahxoouqxqpujsyfwbdthteidvigudsuoznykkzskspjufgkhaxorbrdvgodlb qnnprxqpnafnhekcxljyysobbpyhynvolgtrntqtjpxpchqwgtkpxxvmwwcohxplsailheuzhkbtayvmxnttycdkbdvryjkfhshulptkuarqwuidrnjsydftsyhuueebnrjvkfvhqmyrclehcwethsqzcyfvyohzskvgttggndmdvdgollryqoswviqurrqhiqrqtyrl 输出:hxbbpyhogntqppcqgkxchpsieuhbncvpuqndbjqmclchqyfttdvgoysuhrrl或其他任何相同长度的公共子序列 riikscwpvsbxrvkpymvbbpmwclizxlhihiubycxmxwviuajdzoonjpkgiuiulbjdpkztsqznhbjhymwzkutmkkkhirryabricvhb jnrzutfnbqhbaueicsvltalvqoorafnadevojjcsnlftoskhntashydksoheydbeuwlswdzivxnvcrxbgxmquvdnfairsppodznm kzimnldhqklxyezcuyjaiasaeslicegmnwfavllanoolkhvqkjdvxrsjapqqwnrplcwqginwinktxnkfcuuvoyntrqwwucarfvjg …

1
查找栅栏
背景 原子弹在栅栏工厂附近爆炸了!由于栅栏对于我们的文明生存至关重要,因此我们必须营救尽可能多的人。我们正在派出抗辐射的机器人搜索该区域,对它们的人工视觉进行编程是您的任务。 输入值 输入的字符是一个矩形网格|-#,代表两种栅栏部分和瓦砾,以换行符分隔的字符串形式给出。爆炸造成的伤势严重,有些甚至被高温融化了。我们将候选栅栏定义为开始于此并且结束于它们之间|并且具有一个或多个-s 的水平模式(例如|-|或|---|不是||),或者是开始于并且结束于其之间-具有一个或多个|s 的垂直模式。水平候选栅栏旋转90度)。一个实际的栅栏柱是候选栅栏柱不与另一位候选人栅栏柱共享任何部件。 输出量 您的输出是输入网格中实际栅栏的数量。 例 考虑输入网格 |#|-|#|## #||--|||# ###|#|--# ###-||--| -#-|#-|#- #---#-#-| #-#-|#--| 此网格中有5个候选栅栏,但其中只有2个是实际栅栏(以粗体显示)。因此正确的输出是2。 规则 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。 其他测试用例 输入: ##-- ||## -#|- |#|# 输出:0(0个候选栅栏) 输入: -##|-##-- #|#-|#||- --|-#|#|| ##||||-## ||#|--|-| -#|-#--|# |####|#-# 输出:0(5个候选栅栏) 输入: #|--|---|-|# ####|##--||- -|-##||#|--- -#|#-|-#-||| #|-##--###|- ---#-||-#-## #|---|###|-# -|---#-#|#|# |#--|####-|- 输出:4(8条候选栅栏) 输入: -|-||---##|# ---|######-# …

17
三角形平方数
平方数是以n^2n为整数形式的数字。这些也称为完美平方,因为当您求平方根时,您会得到一个整数。 前10个平方数是:(OEIS) 0, 1, 4, 9, 16, 25, 36, 49, 64, 81 三角数是可以形成等边三角形的数。第n个三角数等于1到n之间所有自然数的总和。 前10个三角形数字是:(OEIS) 0, 1, 3, 6, 10, 15, 21, 28, 36, 45 正方形三角形数字是正方形和三角形的数字。 前10个方形三角数为:(OEIS) 0, 1, 36, 1225, 41616, 1413721, 48024900, 1631432881, 55420693056, 1882672131025, 63955431761796 有无限多个平方数,三角形数和正方形三角形数。 编写一个给定输入(参数或标准输入)数的程序或命名函数n,计算出n第平方三角数并输出/返回,其中n是一个非零正数。(对于n = 1返回0) 为了使程序/功能有效提交,它至少应返回所有小于2 ^ 31-1的正方形三角形。 奖金 -4字节,能够输出小于2 ^ 63-1的所有平方三角数 -4个字节,理论上可以输出任何大小的平方三角数。 对于采用非多项式时间的解决方案,+ …
11 code-golf  number 

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.