Questions tagged «code-golf»

Code-golf是在最小的源代码字节中解决特定问题的竞赛。

26
N个最接近零的数字保持平衡
目标:给定一个正整数n: 如果n是奇数,输出列表中n最接近的数字来0递增的顺序 如果n是偶数,则输出Falsey值。 测试用例: 5 -> [-2,-1,0,1,2] 4 -> false (or any Falsey value) 1 -> [0] 参考实施 function update(){ var num = +document.getElementById("yield").value; if(num){ var out = document.getElementById("output"); if(num % 2 == 1){ // base is balanced var baseArr = []; for(var i=0;i<num;i++){ baseArr.push(i-Math.floor(num/2)); } out.innerHTML = baseArr.join(" "); …

4
从对角线条重建文本矩形
这一挑战的灵感来自一个SO问题,即通过枚举矩阵的所有对角线来遍历矩阵。 代替矩阵,考虑一段文本: ABCD EFGH IJKL 从左上角到右下角从左到右遍历此块的SW-NE对角线,将得到以下输出: A EB IFC JGD KH L 挑战 编写执行与上述过程相反的程序或函数。也就是说,给定一组SW-NE对角线,输出产生它的文本块。 输入输出 输入和输出都可以表示为带换行符的字符串,也可以表示为字符串的数组/列表。 尾随换行符是可选的。 输入将至少包含一个可打印字符,并且可以假定是正确的(行长度不会不一致)。 输出块的列数始终大于或等于行数。 测试用例 输入: A 输出: A 输入: . LI PO. PV. CE G 输出: .I.. LOVE PPCG 输入: M DA AIT LAR SGI /OX /N / 输出: MATRIX DIAGON ALS///
10 code-golf 

4
Avast,你们吓死了!
黑胡子是早期18的英国海盗个世纪。尽管他以抢劫和乘船着称,但他在船员的允许下命令了他的船。没有关于他曾经伤害或谋杀他的俘虏的报道。 此挑战是为了纪念臭名昭著的黑胡子,并受到“像海盗一样的国际谈话日(9月19日)”的启发。这也是Pyrrha 挑战的反面。 挑战 创建一个程序,将藏宝图作为输入(由下面列出的字符组成),并输出其方向。 输入值 所有的投入将包括v,>,<,^,空格和单一X。 您可以假设以下内容: 地图永远不会循环或交叉 起始箭头将始终是最左列中的最底字符 永远会有宝藏(X) 输入示例如下所示。 >>v >>>>>>v ^ v ^ v ^ v ^ v<< ^ v ^ v ^ >>>>^ >>X ^ >>^ 输出量 输出应为- ", "分隔的方向字符串。以下是上面地图的正确输出。 E2, N6, E2, S4, E4, N4, E6, S2, W2, S2, E2 允许使用尾随换行符或空格。 例子 In: >>>>>>>>>>>>>>>v …
10 code-golf 

5
INTERCAL打高尔夫球的秘诀
您在INTERCAL打高尔夫球有哪些一般提示?我正在寻找可用于编写高尔夫挑战赛的想法,并且至少在某种程度上特定于INTERCAL(即“删除评论”不是有用的答案)。 我知道使用外语对赢得高尔夫比赛非常有用,但是我在这里看不到太多的INTERCAL代码。您有什么建议可以帮助人们使用INTERCAL获得具有竞争力的代码大小吗?这种语言有竞争力吗? INTERCAL未被充分利用,甚至没有标签。好难过...
10 code-golf  tips 

2
傍的ASCII游戏
乒乓球 挑战在于以尽可能短的代码重新创建ASCII字符的经典游戏“ pong”。 要求/规格 “屏幕”应为45x25字符。 空格实际上应该是空格。 球拍应为9个等号:=========并且应位于最上面和最下面的行中(我知道原著是左右并排演奏,而不是上下演奏,但我认为这对ascii pong更好)。 球可以是小写或大写o或零。 任何类型的两个输入按钮(如果用户按下使输入中显示字母的键也很好,也可以),以一次左右移动播放器的一个或两个字符。 球在击中桨或壁时需要以适当的角度跳动(提示:取反x或y差值)。 分数应显示在输出中的某处。得分是玩家成功击球的次数。 如果球未击中球员的球拍,请终止程序。 应该有某种AI(即使AI的球拍刚好与球的x值匹配)。 球不能垂直或水平直线移动。 开始屏幕/第一帧应如下所示: ========= o ========= score: 0 计分 这是代码高尔夫球,因此最短的代码获胜...但是,有一些好处可以减少字符数: -30个字符:根据球在球拍上的击打位置来改变球的轨迹 -10个字符:使游戏随着时间的推移而加速 -20个字符:使AI出色 -20个字符:避免出现任何情况,即玩家保持静止并且游戏永远进行而不会输赢(由某些轨迹和AI模式引起) -20个字符:使球开始以(半)随机轨迹运动 -25个字符:添加重置选项 这是一个在JavaScript中没有奖金的简单例子: //init var x = 22, y = 12, xd = Math.random() < 0.5 ? -1 : 1, yd = 1, …

3
Knödel数字-查找Kn
克诺德尔数 克诺德尔数是一组序列。具体而言,马铃薯丸子号码的正整数n是该组合数m,使得所有i < m,互质到m,满足i^(m-n) = 1 (mod m)。n表示特定的Knödel数集Kn。(维基百科)。 例如,K1是Carmichael编号和OEIS A002997。他们去,如:{561, 1105, 1729, 2465, 2821, 6601, ... }。K2是OEIS A050990,就像这样{4, 6, 8, 10, 12, 14, 22, 24, 26, ... }。 你的任务 您的任务是编写程序/函数/等。需要两个数字,n和p。它应该返回pKnödel序列的第一个数字Kn。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 例子 1, 6 -> [561, 1105, 1729, 2465, 2821, 6601] 2, 3 -> [4, 6, 8] 4, 9 -> …

5
任意长度的甲板完美洗净的循环长度
挑战 用最短的代码: 计算的任何大小的一副牌上的完美洗牌排列周期的长度Ñ(其中Ñ ≥2和Ñ是偶数)。 输出所有周期长度的2≤表Ñ ≤1000(Ñ偶数)。 请注意,定义完美混洗有两种基本方法。有一个out-shuffle,将第一张卡放在顶部,最后一张卡在底部,还有in-shuffle,将第一张和最后一张卡向中心移动一个位置。您可以选择进行混洗还是混洗。两者之间的算法几乎相同。 10张牌的随机洗牌次数:[1,2,3,4,5,6,7,8,9,10]↦[1,6,2,7,3,8,4,9,5, 10]。 10张牌的随机洗牌:[1,2,3,4,5,6,7,8,9,10]↦[6,1,7,2,8,3,9,4,10, 5]。 图形示例 在这里,我们看到20张卡片组的洗牌周期为18个步长。(这仅用于说明;您的解决方案不需要以图形方式输出周期。)另一方面,经典的52张卡座的洗牌周期只有8个步长(未显示)。 一个在洗牌 20卡甲板上具有仅6步骤的循环长度。 输出的表格示例 您的程序应该输出与此类似的内容,尽管您可以选择最喜欢的任何表格格式。这是为了洗牌: 2 1 4 2 6 4 8 3 10 6 12 10 14 12 16 4 18 8 20 18 22 6 24 11 26 20 28 18 30 28 32 5 34 …

10
通过填充空白填充空白
编写一个函数(例如placeAt),该函数需要一个非负整数数组和一个非负整数索引。它应该在给定的索引处放置1,可能将其他条目移动一个位置以腾出该位置,而0表示空白位置。 如果所需索引处的条目为0,则用1填充。 否则,请在索引左侧寻找最接近的0。将条目左移一位到该0处以腾出空间,然后用1填充索引。 如果左侧没有0,请执行相同的操作。 如果两者都不可行(即,如果没有0),则返回不变的数组。 这些项目的索引为0。函数名称可以是任何您想要的。 例子: (字母代表任何正整数。) [a, b, 0, c, d, 0] placeAt 2 // output [a, b, 1, c, d, 0] place 2 is 0, just fill [a, b, 0, c, d, 0] placeAt 3 // output [a, b, c, 1, d, 0] place 3 is filled, …
10 code-golf 

8
创建不同的总和
您应该编写一个程序或函数,该程序或函数接收一个整数作为输入,然后输出或返回两个总和为第一个整数的整数。 还有另一个要求:对于两个不同的输入,没有数字可以成为输出的一部分。 细节 您应该至少能够处理该范围-32768 .. 32767(包括该范围)的输入。 如果您的数据类型不能处理任意整数,那很好,但是从理论上讲,您的算法应适用于任意大小数。 例子 每个块以的格式显示正确或不正确解决方案的一部分input => output。 1 => 6 -5 2 => -2 4 15 => 20 -5 Incorrect, as `-5` is used in two outputs. -5 => -15 10 0 => 0 0 1 => 5 6 2 => -5 7 Incorrect, as `5 …
10 code-golf  number 

15
7 l8r比9好吗?(七点比九点晚吗?)
这是一个相当简单的高尔夫代码挑战。给定一个ASCII字符串,您的程序将把该字符串解析为两个字符串,它将对其求值。如果第二个字符串比第一个字符串“晚”,则将返回1;如果比第一个字符串“早”,则将返回-1;如果相同,则将返回0。弄清楚“稍后”和“更早”的含义,让我们看一下ASCII字符代码。您需要比较字符串中的每个字符,将每个字符视为一个数字。后来是指较大的数字,出现在较小的数字之后。字符串将使用连字符格式化,以分隔两个输入组。 看一下这个例子: 7-9作为输入应该返回1。 7转换为ASCII代码55,然后9转换为ASCII代码57。 如57数字后所示55,9晚于7。 另一个例子: LKzb-LKaj 作为输入应该返回 -1 为此的ASCII代码序列是76-75-122-98和76-75-97-106 这是一场高尔夫挑战赛,字节计数是对参赛作品进行评分的方式。 可以接受来自95个可打印ASCII字符的任何输入,但空格和连字符除外,除了分隔输入之外,都可以使用连字符。另外,不能保证字符串的长度相同。 祝好运! 编辑:更清楚地说,每个字符将被视为数字中的数字。在这个例子中LKzb-LKaj,虽然j是迟b,z迟于a,并且由于它是一个更显著的数字,它的优先级。提供的字符串将始终至少包含3个字符,从而从此问题的范围中消除了空字符串。 编辑:这是一些更多的测试用例,为您提供帮助: A-9 -> -1 11-Z -> -1 3h~J*-3h~J* -> 0 Xv-Y0 -> 1

5
高尔夫练习:Pyth [关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 2年前关闭。 这是在Pyth打高尔夫球时可以使用的技巧和优化的挑战。Pyth高尔夫球手可能会意识到其中涉及的许多技巧。但是,可能会涉及到不熟悉的方法和构造,因此如果遇到困难,请查看Pyth技巧以及Pyth角色参考。解决方案可以在这里进行测试。 目标:有8个问题,每个问题都有一个Pyth代码段供您优化。您的目标是创建等效但更短的对象。参考解决方案总共80个字节。您的目标是尽可能地击败它。 获胜者将参加以最小总字节数解决所有8个问题的提交。Tiebreaker是较早的帖子。 回答:除了总分,请破坏您的整个答案。您打算在提交自己的答案之前不要看别人的答案。 每个提交都应回答每个问题并给出相应的字节数,但是如果无法改进参考实现,请随意使用。 详细说明:如果一定值或输出的问题通话,q平等是需要的,所以1和!0是等价的。如果问题要求测试条件是否为真,则条件为真时输出必须为真,如果条件为假则输出为假,但不受此限制。您可能无法将true替换为false,或者将false替换为true。如果问题要求打印某些内容,则除了尾随换行符外,其他任何内容都无法打印。 自问题发布以来,所有答案都必须对最近的Pyth提交有效。 问题1:给定Q中的集合,以任何顺序输出包含Q元素的列表。 ; 3 bytes f1Q 问题2:输出列表[1, 1, 0, 0, 1, 1, 0]。 ; 9 bytes [J1JZZJJZ 问题3:给定Q中的正整数,请测试Q的所有数字是否均为正(而不是零)。 ; 7 bytes !f!TjQT 问题4:给定z中的字符串,请测试z是否包含引号- "或'。 ; 9 bytes |}\'z}\"z 问题5:将 Q = 1映射为“赢”,将Q = 0映射为“平局”,将Q = -1映射为“输”。 …
10 code-golf  pyth 

8
打印英国国旗!
受到美国国旗印刷的启发!这是直接复制,但带有英国国旗,因为它具有一些对称性,但仍然相当复杂! 您面临的挑战是如何以尽可能少的字节产生以下ASCII艺术!将您的头部/屏幕(不要同时!)旋转90度以正确观看。 __________________________________________ |\ \XXXXXXXXXXXX 000000 XXXXXXXXXXXX//0/| |0\ \XXXXXXXXXXX 000000 XXXXXXXXXXX//0/ | |\0\ \XXXXXXXXXX 000000 XXXXXXXXXX//0/ | |\\0\ \XXXXXXXXX 000000 XXXXXXXXX//0/ /| |X\\0\ \XXXXXXXX 000000 XXXXXXXX//0/ /X| |XX\\0\ \XXXXXXX 000000 XXXXXXX//0/ /XX| |XXX\\0\ \XXXXXX 000000 XXXXXX//0/ /XXX| |XXXX\\0\ \XXXXX 000000 XXXXX//0/ /XXXX| |XXXXX\\0\ \XXXX 000000 XXXX//0/ /XXXXX| |XXXXXX\\0\ \XXX 000000 …

2
玩完美的4x4十六进制游戏
背景 Hex是在K×K六角形菱形菱形上玩的两人抽象策略游戏。菱形的两个相对的边都被涂成白色,另外两个被涂成黑色,两个玩家(黑与白)轮流将其颜色的标记放置在一个空置的瓷砖上。首先设法在其颜色的相对两侧之间建立路径的玩家是获胜者。众所周知,游戏无法以平局告终,并且不管棋盘大小如何,第一位玩家都有获胜的策略(有关详细信息,请参阅Wikipedia页面)。 任务 在此挑战中,我们将板子尺寸固定为K = 4,并将板子表示为以下网格。粗线表示相邻的图块。 您的任务是为第一个玩家制定一个获胜策略,您可以选择是黑人还是白人。这意味着无论对方球员采取何种合法行动,您的比赛都必须取得胜利。您的输入是一个游戏位置(板上的代币排列),而您的输出是合法移动,采用以下指定的格式。如果您想自己找到一个成功的策略,请不要阅读以下内容: 假设白人先行,则可能的制胜策略概述。 首先选择5。之后,如果您有从5到最底行的路径,或者黑色在任何时候都选择0或1,请选择0或1中的任何一个作为响应。如果黑色选择9或13,则选择10,然后选择14或15中的任何一个。如果黑色未选择9、13或14,则选择9,然后选择13或14中的任一个。如果黑色选择14,则通过选择15进行响应。接下来,如果空白则选择10;否则,选择10。如果黑色选择10,则响应为11。如果黑色选择6,则响应7,然后选择2或3中的任一个。如果黑色未选择6,请选择它,因此您具有从5到最底行的路径。 输入输出 您输入的字符串是16个字符WBE,代表白色,黑色和空白。它们代表了上面所列举的板块。您可以从以下选项中选择输入法(这也决定了您的输出法): 从STDIN输入,输出到STDOUT。 输入作为一个命令行参数,输出到STDOUT。 输入为16个单字符命令行参数,输出到STDOUT。 输入作为命名函数的参数,输出作为返回值。 您的输出代表您放置下一个标记的磁贴,因为该旋转了。您可以从以下输出格式中选择: 从零开始的索引(如上图所示)。 一个基于索引的索引。 输入字符串与一个E由两者的替代W或B您选择您的播放器。 规则 您的策略必须是确定性的。您不需要使用您的策略来正确处理空局无法到达的游戏位置,或已经为任一位玩家赢得的位置,您可能会因此而崩溃。相反,在使用您的策略可以到达的板上,您必须返回合法举动。 这是代码高尔夫球,因此最低的字节数为准。不允许出现标准漏洞。 测试中 我已经编写了一个Python 3控制器来验证条目,因为手工操作非常繁琐。你可以在这里找到它。它支持前三种输入格式和Python 3函数(必须将其他语言的函数包装到程序中),所有三种输出格式以及这两种播放器。如果某策略没有获胜,它将输出发现的失败游戏,因此您可以调整程序。

5
计数交叉词
考虑以下标准的15×15 填字游戏拼图网格。 我们可以通过将#方块和(空格)用于白方块来用ASCII艺术表示。 # # # # # # # ### ## ## ## # # # # ## ## ## ### # # # # # # # 给定上述ASCII艺术格式的填字游戏网格,请确定其包含多少个单词。(以上表格有78个字。碰巧是上周一的《纽约时报》难题。) 单词是垂直或水平延伸的两个或两个以上连续空间的组。单词以块或网格边缘开始和结束,并且始终从上到下或从左到右运行,从不对角或向后。请注意,单词可以跨越拼图的整个宽度,就像上面拼图的第六行一样。一个单词不必与另一个单词相连。 细节 输入将始终是包含字符#或(空格)的矩形,并且行之间用换行符(\n)分隔。您可以假定网格由任意2个不同的可打印ASCII字符(而不是#和)组成。 您可以假定存在可选的尾随换行符。尾随空格字符确实会计数,因为它们会影响单词的数量。 网格并不总是对称的,它可能是所有空格或所有块。 从理论上讲,您的程序应该可以在任何大小的网格上工作,但是对于这一挑战,它永远不会大于21×21。 您可以将网格本身作为输入或包含网格的文件的名称。 从stdin或命令行参数获取输入,然后输出到stdout。 如果愿意,可以使用命名函数而不是程序,将网格作为字符串参数,然后通过stdout或function return输出整数或字符串。 测试用例 输入: # # # 输出:(7每个空格之前有四个空格#。如果删除每个数字符号,结果将是相同的,但是Markdown将从其他空行中删除空格。) 输入: ## # ## …

4
秩序与混沌与密码高尔夫
Order and Chaos是在6x6板上播放的Tic-Tac-Toe的变体。然而,使游戏与众不同的是,两个玩家都可以放置X或O!每回合(从订购开始),玩家将在任何未占用的方块中放置X或O。 获胜很简单。如果板上连续有5个X或O(垂直,水平或对角线),则订单获胜。如果棋盘已满,并且棋盘上没有5个X或O的字符串,则混沌获胜。你的工作?好吧,由于这是《Programming Puzzles》和《 Code Golf》,因此您将对游戏进行编程,然后进行高尔夫。 规则 您必须接受输入为x y t,其中x和y是坐标,并且t是图块类型(X或O)。坐标从0 0左上角开始,一直增加到5 5(右下角)。 您必须接受q退出,并INVALID在用户输入无效的坐标,磁贴,任何非形式的输入时进行打印x y t,或尝试将磁贴放置在已经存在的位置。(唯一的例外是q,因为这会退出程序。) 如果Order获胜,您将输出P1 WINS。如果混沌获胜,您将输出P2 WINS。 必须先下订单。 空格由表示.。 磁贴为X和O(大写)。您不必接受小写字母,但必须使用大写字母。 您的董事会只能由组成.XO。 您实际上是在模拟两个玩家在玩游戏,而不是获得董事会和检查谁获胜。它接受一个动作作为输入,然后打印棋盘,接受另一个动作,依此类推,直到一个玩家获胜。 起始板如下所示: ...... ...... ...... ...... ...... ...... 在第一个玩家(订购)输入之后1 2 X,它应该如下所示: ...... ...... .X.... ...... ...... ...... 同样,当下一个玩家(混沌)输入时3 3 O,它将如下所示: ...... ...... .X.... ...O.. ...... ...... 直到一位玩家获胜为止。 …

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.