编程拼图和代码高尔夫

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

6
打印数字三角波
给定波形的幅度和周期,打印波形。有关更多详细信息,请参见示例输出。波形总数等于周期,每个波形的高度等于振幅。幅度和周期小于10。您可以忽略尾随空格,但不能忽略前导空格。 Sample Input 3 2 Sample Output 3 3 232 232 12321 12321 12321 12321 232 232 3 3

12
下2月29日的星期几
编写一个带有日期并返回该日期之后的下一个2月29日的星期几的函数。 输入是ISO扩展格式的字符串:YYYY-MM-DD(例如,2010年5月27日为“ 2010-05-27”)。 输出是一个字符串,它是星期几的名称(例如“ Monday”)。大写字母无关紧要,但是请使用英文全名。 如果给定的日期是2月29日,则返回下一个 2月29日的星期几。 使用Proleptic Gregorian Calendar的计算(因此,它使用整个公历的Gregorian year年计算)。不用担心朱利安日历或何时从朱利安切换为公历。只要为所有事情假设格里高利安。 该功能至少应在“ 0001-01-01”至“ 2100-01-01”范围内工作。 可以随意使用您选择的语言提供的任何标准库,但不要使用第三方库,除非您希望将该代码包含在解决方案中。 最短的代码(最少的字符)获胜。 例子: func("0001-01-01") -> "Sunday" func("1899-12-03") -> "Monday" func("1970-01-01") -> "Tuesday" func("1999-07-06") -> "Tuesday" func("2003-05-22") -> "Sunday" func("2011-02-17") -> "Wednesday" func("2100-01-01") -> "Friday" (而且,您不必命名该函数func) 提示: 请记住,以00结尾的年份不能被400整除,这并不是leap年。 0001年1月1日为星期一。
14 code-golf  date 

4
免费提供打高尔夫球的书籍吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 您是否可以推荐任何关于代码高尔夫的免费书籍,特别是Java和C ++?
14 code-golf  tips 

20
随机骰子小费
在标准骰子(骰子)中,数字的排列方式是使相对的面数增加到七个。用您喜欢的语言编写最短的程序,该程序输出一个随机抛出,然后输出9个随机小费。翻斗是骰子的四分之一转,例如,如果骰子面向5,则所有可能的翻斗都是1,3,4和6。 所需输出示例: 1532131356

30
正整数之和。[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 3年前关闭。 问题: 给定一组整数,找到其中的所有正整数之和。 输入: t –测试用例数[ t <1000] 在每个下一个的吨系,整数Ñ [-1000≤ Ñ ≤1000] 输出量 程序应输出所有正整数的和。 在在线裁判中检查您的代码 得分了 分数等于程序源代码的大小,但ASCII码≤32的符号除外。 以下是最佳成绩列表:Python最佳成绩(最高成绩为29)

2
测试给定数字是否是吸血鬼数字
编辑:为了增加复杂性,我为挑战添加了更多内容。 在数学中,吸血鬼数(或真正的吸血鬼数)是一个复合自然数v,具有偶数个数字n,可以分解为两个整数x和y,每个整数具有n / 2个数字,而不能同时带有尾随零,其中v精确地包含x和y的所有数字(以任意顺序计数)。x和y称为the牙。 有关吸血鬼编号的更多信息 伪吸血鬼数 伪吸血鬼编号与吸血鬼编号相似,只不过n位伪吸血鬼编号的尖牙不必具有n / 2位数字的长度。伪吸血鬼数字可以具有奇数个数字,例如126 = 6×21。 输入值 从命令行或标准输入接受数字 输出量 “ 1260 = 21 * 60” (如果数字是吸血鬼,则以较小的毒牙开头。) “ 1261不是吸血鬼编号。” (如果该号码不是吸血鬼号码) “ 126 = 6 * 21”。(如果该号码是伪吸血鬼号码) 编辑:如果数字有多个毒牙,则显示它。 x = fang1a * fang1b = fang2a * fang2b
14 code-golf  math 

17
随机播放无局部变量的牌组
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 2年前关闭。 这个难题的目的是拿出52张纸牌并洗牌,以使每张纸牌处于随机位置。 鉴于: deck代表卡片的52个不同整数组成的数组。当您开始时,deck仅以未知顺序包含每张卡中的一张。 函数,该函数int rand(min, max)返回ins min和max(含)之间的随机整数。您可以假定此函数是真正随机的。 一种功能,void swap(x, y)可以交换卡片组中的两张卡。如果您致电swap(x, y),则这些卡将在位置x,y并将切换位置。 什么时候: 程序调用shuffle()(或shuffle(deck),deck.shuffle()或者您的实现喜欢运行), 然后: deck 应该完全随机地包含每张卡中的一张。 抓住: 您不能声明任何变量。随心所欲地调用swap和rand,但是您不能声明自己的任何变量。这包括for循环计数器-甚至是隐式计数器(如)foreach。 说明: 您可以更改次要详细信息以适合您选择的语言。例如,您可以编写swap以通过引用切换两个整数。所做的更改应该是使它与您的语言配合使用,而不是使难题变得更容易。 deck 可以是全局变量,也可以将其作为参数。 您可以对的内容进行任何操作deck,但不能更改其长度。 您的卡可以编号为0-51、1-52或您喜欢的任何编号。 您可以用任何一种语言编写此代码,但不会欺骗您的语言的内置shuffle功能。 是的,您可以在同一行中编写52次。没有人会留下深刻的印象。 执行时间并不重要,但真正的随机性却很重要。 这并不是真正的代码高尔夫球,但是请随时最小化/混淆您的代码。 编辑:样板代码和可视化工具 如果您使用.NET或JavaScript,以下一些测试代码可能会有用: JavaScript: 带有JavaScript脚本源的快速,肮脏的JavaScript可视化工具:https : //gist.github.com/JustinMorgan/3989752bdfd579291cca 可运行的版本(只需粘贴到您的shuffle()函数中):http : //jsfiddle.net/4zxjmy42/ C#: 带有C#代码的ASP.NET可视化工具:https : //gist.github.com/JustinMorgan/4b630446a43f28eb5559 仅存有swap和rand实用程序方法的存根:https …

23
字符串中整数的总和,用非数字(例如“ a”和“ Y”)分隔
创建一个程序,该程序将在字符串中找到的所有整数求和,该字符串在程序中设置为变量(因此,该程序不必处理任何输入)。整数用非数字分隔(0、1、2、3 ... 9以外的任何数字)。 例子: e7rde f ,fe 43 jfj 54f4sD = 7 + 43 + 54 + 4 = 108 5 = 5 64 545,5445-32JIFk0ddk = 64 + 545 + 5445 + 32 + 0 = 6086 0ab0 = 0 + 0 = 0 额外说明: Unicode支持不是必需的,但允许 -n(其中,n是一个整数)的不计数为负n,但作为一个连字符,接着n。 答案可能会打印在屏幕上(但不是必需的)。 最短答案(以字符为单位)获胜。
14 code-golf  string 

11
输出不同因子长方体
输出不同因子长方体 今天的任务非常简单:给定一个正整数,输出可通过其因子形成的每个长方体的代表。 说明 长方体的体积是其三个边长的乘积。例如,第4卷,其边长是整数可以具有侧面的长方体[1, 1, 4],[1, 2, 2],[1, 4, 1],[2, 1, 2],[2, 2, 1],或[4, 1, 1]。但是,其中一些代表相同的长方体:例如[1, 1, 4]和[4, 1, 1]旋转相同的长方体。只有两个不同的长方体,分别是体积4和整数边:[1, 1, 4]和[1, 2, 2]。输出可以是第一个长方体的任何表示形式,也可以是第二个长方体的任何表示形式。 输入值 程序必须采用一个正整数1≤n≤231−11≤n≤231−11 \le n \le 2^{31}−1。 输出量 您将需要以列表或任何其他可接受的方式输出所有可能的长方体。例如 Input Output 1 [[1, 1, 1]] 2 [[1, 1, 2]] 3 [[1, 1, 3]] 4 [[1, 1, 4], …

3
是将死吗?
鉴于网站上存在大量的国际象棋难题,这完全尚未发布,对此他感到十分惊讶。当我自己想到这个时,应该感谢Anush 于三月份将其发布到沙箱中。但是我认为已经足够长的时间可以自己进行了。 一个将死的棋是在国王被攻击,也没有动,可以保卫它的位置。如果您不熟悉棋子的移动方式,可以在Wikipedia上熟悉一下自己。 挑战 对于这个挑战,您的输入将是您喜欢的任何符号的棋盘位置。为了明确起见,您的输入将描述棋盘上的棋子,棋子的颜色和位置,以及可能的被动捕捉方块(如果有)。(城堡的能力无关紧要,因为您不能超越城堡。)您可能会发现FEN标记很有用,但是任何方便的格式都可以。为简单起见,您可以假设玩的是Black玩家 -这意味着Black永远是被淘汰的玩家。怀特处于支票,将军或僵局的职位将被视为对此挑战无效。 如果该位置是将死,则必须输出一个真实值,如果不是,则必须输出一个虚假值。请注意,僵局不是将军 -国王必须受到攻击! 真实的测试案例 1k5R / 6R1 / 8/8/8/8 / 6K1 b-- rn2r1k1 ​​/ pp1p1pQp / 3p4 / 1b1n4 / 1P2P3 / 2B5 / P5PP / R3K2R b-- kr5R / rB6 / 8/8/8 / 5Q2 / 6K1 / R7 b-- 2K5 / 1B6 / 8/8/8 …

28
从两根弦注入到一根弦
挑战 编写一个应用内射函数的程序,该函数将一对有序的字符串作为输入,一个字符串作为输出。换句话说,每个输入必须映射到唯一的输出。 细节 该输入可以是任何任意长度的两个字符串,但将仅由可打印的ASCII字符(码)。[ 32 ,126 ][32,126][32, 126] 同样,输出字符串没有长度限制,但必须仅由可打印的ASCII字符组成。 如果您的语言无法处理任意长度的字符串,则该程序理论上仅可用于任何大小的字符串。 从输入到输出的映射在程序执行之间应保持一致。否则,您使用的映射完全取决于您,只要是注入即可。 输入是有序的。如果两个输入字符串不同,则它们应产生与被交换时不同的输出。s ≠ t⟹F(s ,t )≠ f(t ,s )s≠t⟹f(s,t)≠f(t,s)s \neq t \implies f(s, t) \neq f(t, s) 并非每个字符串都必须是可能的输出。 每种语言中最短的答案将获胜! 测试用例 以下输入均应导致不同的输出。为避免混淆,字符串被双音节(«»)包围,并用单个空格分隔。 “你好,世界” «lelho»«拖网» «差异»«_rent» “不一样” «代码»«高尔夫» «公司»«高尔夫» «CodeGolf»«» «»«» «»«» «»«» «»«» «»«» «abc”,»«def» «abc»«,“ def» «abc'»«'def» «abc'»«'def» «\»«“» «\\»«\“»
14 code-golf  string 

14
爱尔兰快照:变体规则
介绍 最近,我和我的几个朋友决定玩几张纸牌,其中之一推荐了游戏“爱尔兰快拍”,这就是挑战的灵感来源。但是,我后来了解到,游戏具有许多不同的规则供您使用,此处列出了其中的一些规则 。当前未在该页面上列出面临该挑战的规则,因此名称为“变体规则” 挑战 给定由3张牌组成的数组,请根据在爱尔兰快速抽奖游戏中是否进行有效快速抽奖来输出真值或虚假值。 输入值 输入将是3个数字的数组,范围从1-13(含1-13),其中1代表王牌,11代表杰克,12代表皇后,13代表国王。输入可以是上,中,下的任何顺序。 规则 卡牌是否能使爱尔兰人抢购的4个不同标准是: 顶卡和中间卡相同 顶部和中间的牌相差一 顶部和底部卡片相同 顶部和底部的卡相差一 如果满足任何这些条件,则必须输出真实值。除此之外,对于两个要求纸牌相差一的标准,它会“环绕”,这意味着王牌和国王被认为相差一,反之亦然。 测试用例 Input (Bottom, Middle, Top) -> Output 1 13 7 -> False 1 4 13 -> True 9 3 6 -> False 8 9 7 -> True 2 6 5 -> True 12 5 11 -> …

2
玩井字游戏,永不丢失
(存在一些挑战,需要使用最佳策略,但在这里我们不需要。即使您能够获胜,也可以平局) 挑战 编写一个玩井字游戏的程序。它一定不能输(因此,应该以平局或获胜结束游戏)。 允许的I / O方法 输入可能是当前板。您可以假设第二个玩家的所有先前举动都是由您的引擎进行的。 输入的内容可能是第一个玩家的举动,而您的函数将存储过去发生过的举动。在这种情况下,该函数被多次调用,每次移动一次。或多次输入功能/程序提示。 允许您输入额外的信息,例如您是第一位玩家,还是编写两个(可能是相关的)函数来解决第一位玩家和第二位玩家的问题。如果程序需要使用输入法2(多次调用),则可以决定在第一次调用中传递了什么。 轮到您后,输出可能是板。 输出可能是您的举动。 移动可以表示为一对数字(可以是0索引或1索引),0到8范围内的数字或1到9范围内的数字。 木板可以表示为3×3数组或长度为9的数组。即使语言具有0索引数组,也可以使用1索引。 网格上的细胞可以使用任何3个不同的值,以指示X,O并清空。 获奖标准 每种语言中最短的代码将获胜。

5
单词扑克,谁赢?
输入将是两个五个字母的单词。实际上,它们不一定是字典单词,每个单词只需要五个字母(全部小写或全部大写)即可。输入的单词中只会出现AZ,并且长度始终为5个字符。 您的程序是对他们都打分,就像他们是扑克手一样,并输出较高的手牌。当然,西装不会在这里适用,仅适用于排名,因此不会出现同花顺。 典型的扑克排名系统为:“ 1对”,“ 2对”,“ 3类”,“直发”,“满屋”,“ 4类”,“ 5类”,当然这只手(或本例中的单词)可能一文不值。 如果是平局,则认为字母A较接近,因此一对As胜过一对B。在某些情况下,两只手可能是相同的,但顺序不同(或不相同),在这种情况下,输出的要么是手,要么是手的替代版本。 该外部页面包含有关如何识别获胜者的信息,特别是解决特定排名中的平局的情况,以防您不熟悉如何得分。 如果是直线,则字母必须在字母表中相邻,并且不能环绕。因此,“ defgh”在任何顺序上都是直的,“ xyzab”则不是。 如何单手得分的示例: word | scored as --------------------- ccccc | 5 of a kind <-- highest ranking woooo | 4 of a kind opopo | full house vurst | straight vovvu | 3 of a kind ppoww | 2 …
14 code-golf  string 

8
我的货源井井有条,是您的吗?
您面临的挑战是编写一个程序,函数等,以计算所传递的字符串是否“按顺序”。这意味着字符串的字符具有从最小到最大的顺序的字符代码。最小的字符代码必须是第一个。我的意思是最低的unicode代码点到最高的。使用哪种代码页都没有关系。 如果输入是“按顺序”,则必须返回一个值,否则输入另一个值。这些值必须是不同的,但是对输出值没有其他限制。例如,你可以打印/返回/输出true的!1AQaq¡±(按顺序),并false为aq!QA。这两个不同的值不必是真实的或虚假的或类似的东西,只需两个不同的值即可。重复的字符串(例如aa)是按顺序排列的。 您只需要支持unicode U+007E(~)(ASCII 126) 但是,程序的字符本身必须是有序的。祝你好运,打高尔夫球!

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.