编程拼图和代码高尔夫

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

13
现在是西班牙时间!
我有一个简单的任务,应该相对容易通过代码来实现。您的目标是编写一个程序,该程序以HH:MM格式给出输出以西班牙语编写的时间。很多人可能不知道该怎么做,所以我将详细说明。 用西班牙语的时间是很合逻辑的。它通常遵循“ Es la / Son las(小时)y(分钟)”的模式。小时采用12小时格式,仅当小时为1(即一点钟)时才使用 “ Es la” 。分钟是一个不同的故事。如果分钟小于30,则表示为上图。但是,如果分钟超过30分钟,则将小时四舍五入并减去分钟。例如,将7:35转换为相当于“ 8小时减去25分钟”。下面将给出更多示例。可以在此处找到所需的西班牙语编号列表。有些数字带有重音符号,但并非必需。 注意:消息来源说“ uno”,但是为了语法上的正确,它应该是“ una”。到目前为止,这不应影响任何答案。 注2:同样,“ cero”不是必需的。如果您的程序输出“ Es la una”或“ Son las tres”,那对我来说很好。抱歉,这些规则更改。 规则 输入将通过STDIN或您所用语言的等效语言提供。 没有从外部图书馆阅读。 您的代码可以使用无效的输入执行任何操作。 奖金 如果您的代码添加了这些额外的短语,则为-10-“ 15”的“ y cuarto”,“ 30”的“ y media”和“ 45”的“ menos cuarto”(向上取整)。 如果您的代码可以处理AM和PM,则返回-15,并相应地返回“ de lamañana”和“ de la tarde”。 如果没有提供输入,则您的代码可以转换当前时间为-15。 计分 这是一个代码高尔夫挑战,它将由字节而不是字符来计分。 例子 输入: 8:10 …

3
用王瓷砖填充屏幕
已经证明,以下的13平方的Wang块总是不定期地对平面进行平铺。这意味着,当正方形排列成网格时,所有相邻边的颜色都相同,图案的平移将永远不会与其自身匹配。 我们将通过一个3×3网格以文本形式表示每个图块,该网格在中心和拐角处都填充有空格,数字1到5代替了边缘处的红色,绿色,蓝色,黄色,灰色。 2 2 2 1 1 1 4 3 2 2 4 3 2 1 2 1 3 2 3 2 1 3 1 3 2 4 4 4 4 4 5 4 5 5 5 5 5 5 4 3 2 3 2 3 2 1 2 1 …

4
显示未来的鼠标指针轨迹!
受到使用d3js的示例的启发,我挑战您创建一个画布(或您选择的等效语言),其中将显示鼠标指针轨迹,但有以下变化: 扭曲 你不应该显示的鼠标指针在步道是,但它在哪里“创新” 将(可能)是未来。 您可以使用以下任一方法来做到这一点: 时间机器,或 基于先前鼠标移动的概率估计 假设条件 如果您没有选择时间机器实现,则当鼠标移动的时间不超过阈值毫秒时,您将不会显示任何轨迹。(阈值由您选择)。 光标图像取决于您,并且不必与操作系统的光标相同(您甚至可以画一个普通的小圆圈或点)。 没有邪恶的输入将被测试:您可以假设动作是平稳的。在这种情况下,“平滑”的定义是:如果鼠标移动是画布的x和y轴上的函数-它将是连续函数。 获奖 代码中字符最少的有效答案将获胜。如果出现平局-首先发布的将获胜。 编辑:投票最多的有效答案将获胜。如果出现平局-首先发布的将获胜。您可以在实现上保持创新,也可以在预测时保持精确。我不再是法官了,我们都是:) 一个有效的答案必须包括在在线工具上或在可免费下载的编译器/解释器/运行时/等等上进行游戏的一种方法(测试!我的意思是测试)。

7
莫尔斯解码高尔夫
我已经变得越来越警觉的空间仇和这个答案一直激励着我,以确保莫尔斯电码是从这个阴险去除空白的安全。 因此,您的任务是创建一个程序,该程序可以在删除所有空格的情况下成功翻译摩尔斯电码。 规则: 输入将是仅由破折号和点组成的字符串(ASCII 2D和2E)。对于包含任何其他字符的输入,输出是未定义的。随意使用任何适合您选择的语言的方法来接收输入(stdin,文本文件,提示用户等)。您可以假设摩尔斯电码输入仅包含字母AZ,并且不需要匹配的数字或标点符号。 输出应仅包含此词典文件中包含的单词(再次,可以使用任何方便的方法访问词典文件)。所有有效的解码都应输出到stdout,并且必须使用输入中的所有点和破折号。输出中每个匹配的单词都应以空格分隔,每个可能的解码均应以换行符分隔。您可以方便地使用大写,小写或大小写混合的输出。 如上所述,对标准漏洞的所有限制都适用,但有一个例外,如果您确实愿意,可以通过Internet连接访问要求2中引用的词典文件。URL缩短是可以接受的,我认为goo.gl/46I35Z可能是最短的。 这是代码高尔夫球,最短的代码获胜。 注意:将字典文件发布到Pastebin上后,所有行尾都更改为Windows样式0A 0E序列。您的程序可以假定行尾仅以0A,仅0E或0A 0E结尾。 测试用例: 输入: ......-...-..---.-----.-..-..- .. 输出必须包含: 你好,世界 输入: .--..-.---------..-..-----..-...--...---..--...-.... ...--.-..-.-.----......--.---.-....- 输出必须包含: 编程难题和代码高尔夫 输入: -.....--....-..-.-.-.--....-.---.---...-.----..-.- --..---.--....---...-..-.-......-...---..-.---..-- ---。 输出必须包含: 敏捷的棕色狐狸跳过了懒狗
24 code-golf  morse 

5
{0、3、2、5、0、3、5、1、4、6、2、4}的最短表达式
给定的整数列表{0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4}。对于那些感兴趣的人,这些数字将用于工作日计算。 工作日= (m[n] + d + y + y>>2 + y/400 - y/100) % 7;,m[n]我要搜索的表达式d-月中的某天y- year - (month <= 2)。 构造由算术,逻辑和按位运算符组成的表达式,该表达式将输出正整数n整数,m以便m % 7等于列表中的第n个数字。 不允许使用分支,三元运算符,表查找和指针。 得分: 1- | & ^ ~ >> <<运营商 1.1- + - < > <= >= …

1
打印歌词“ Twinkle Twinkle Little Star”
您的目标是在演奏每个音符时将歌词打印到歌曲“ Twinkle Twinkle Little Star”上。 电脑的麦克风会听到音符。如果音符的音高(但不一定是音高)正确,请打印适当的音节。否则,什么都不做。每个音符将至少有半秒长,并且音符之间的间隔至少为四分之一秒。 使用此处提供的音符和以下歌词:(垂直线表示音节休止符。) 双| kle,双| kle,点燃的星星, 我怎么想你是什么。 在如此高的世界上 像天空中的钻石。 双| kle,双| kle,点燃的星星, 我怎么想你是什么。 音乐的录音可以在这里找到。 例 电脑听到中间的C并打印“ Twin” 它听到另一个中间C并打印“ kle”, 然后它听到另一个中间的C(错误的音符),并且什么也不做。 然后,它听到中间C上方的G并打印“双胞胎”,依此类推。 规则 标点必须如图所示。 间距必须如图所示(带有空格和换行符)。 可以将空白与上一个或下一个音节一起打印。
24 code-golf  music  audio 


9
象棋比赛
这是具有简化规则的国际象棋-象棋(因为国际象棋本身已经很复杂,通过简单的程序玩国际象棋并不容易)。目前,它仅限于Java(版本8),但是创建包装器类并不那么困难(以防有人想要这样做)。 棋盘 控制程序中的棋盘使用ICCF数字符号的修改版本。它是从零开始的,表示左下角的字段是位置0,0,而右上角的字段是position 7,7。 修改规则 传递将被忽略。 卡丁车是不可能的。 在五十移动规则适用自动(意为平局的游戏结束)。 当棋子到达棋盘末端时,棋子自动升为皇后。 如果玩家需要超过2秒的移动时间,他将输掉比赛。 返回无效的举动将导致游戏失败。 为了赢得胜利,您必须抓住敌人的国王。扼杀敌人还不够。 这也使您可以将国王移到敌人可以俘获您的领域。 怀特开始比赛。 白色位于字段的“底部”(y = 0),黑色位于顶部(y = 7)。 禁止访问除您的漫游器以外的其他资源(互联网,文件,其他漫游器,...)。 计分 获胜将使您获得3分,平局1分,而输0分。 每个提交将与对方提交进行10次对战(白色5次,黑色5次)。 控制者 您可以在github上找到控制程序。 要参与,您必须在player包内创建一个类,并且该类必须是的子类Player。例如,查看 TestPlayer(也将包含在评分中)。 在每个游戏中,控制器都会创建您的玩家的新实例。然后,每转一圈您都必须返回一个动作。控制器为您提供了Board的副本,其中包含8x8的Field数组。甲字段包含关于它的颜色,它的位置和信息片就可以了,如果有一个。 控制器还为您提供有关敌方玩家的信息,例如isCheck和getPieces()。召唤getMove()敌人会使您失去参赛资格。 计分板 01)AlphaBetaPV:229 02)AlphaBeta:218 03)计件器:173 04)奶酪:115 05)ThreeMoveMonte:114 06)StretchPlayer:93 07)不要想太多:81 08)SimplePlayer:27 09)TestPlayer:13 该竞赛仅限于Java,因为它使创建答案更加容易,因为您可以从控制器提供的方法中受益。但是,如果有人创建包装器,我将使用其他语言。

15
确定字符串的拼字游戏得分和有效性
您的任务是确定给定的字符串长度是否合适,并可以用Scrabble磁贴表示,如果是,则输出每个字母的分数之和。 如果您不知道如何玩Scrabble :,则有100个磁贴,上面印有字母A–Z,以及两个可代表任何字母的通配符。每个字母都有一定数量的点,每个图块(但不一定是单词)只能使用一次。演奏单词时,将所使用的每个图块的点值相加,即为分数。由于可用的字母数量有限,因此一个单词只能将某个字母的次数与该字母具有图块+任何未使用的通配符的次数相同。拼字游戏板的大小为15×15,因此该单词的长度必须在2到15个字符之间。 有关英文版本中每个字母的数量和分数的列表,请参见下面或http://boardgames.about.com/od/scrabble/a/tile_distribute.htm(存档)。 字母数量积分字母数量积分 ------------------- ------------------- A 9 1 O 8 1 B 2 3 P 2 3 C 2 3 Q 1 10 D 4 2 R 6 1 E 12 1 S 4 1 F 2 4 T 6 1 G 3 2 U 4 1 H …

4
愿4日与您同在!
为了纪念《星球大战》纪念日,编写一个程序来显示以下文本,滚动起来就像《星球大战》的开始抓取: It is a period of civil war. Rebel spaceships, striking from a hidden base, have won their first victory against the evil Galactic Empire. During the battle, Rebel spies managed to steal secret plans to the Empire's ultimate weapon, the Death Star, an armored space station with enough power …

24
最短Minmod函数
该minmod功能是熟悉的一种变型分钟,出现在偏微分方程斜率限制性高分辨率方案。给定许多坡度,它会选择最平坦的坡度,同时注意坡度之间的相对符号。 该函数接受任意数量的参数。然后将minmod(x 1,x 2,...,x n)定义为: min(x 1,x 2,...,x n),如果所有x i都严格为正 max(x 1,x 2,...,x n),如果所有x i均为负 0,否则。 我们将仅考虑整数输入,因为这实际上不会影响实现,并且对于某些(深奥)语言应具有更大的包容性。 编写程序或函数,该程序或函数通过STDIN,ARGV或函数参数(如果要比可变参数函数更方便,则可以使用数组)接收n个有符号整数(对于n> 0),然后返回或打印(到STDOUT)结果的minmod(a,b)。 您一定不能使用内置的min或max函数(显然,如果可以实际找到的话,也没有内置的minmod)。此外,除对固定的少量项目(少于5个)进行分类外,不得使用任何内置的分类功能。 如果您的语言没有带符号的类型,则可以使用无符号的类型并将其解释为二进制补码。例如,如果您的语言仅使用无符号字节,则可以使用255代表-1和128代表-128,等等。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 测试用例 Input Output 2 2 -3 -3 0 0 3 -5 0 2 4 1 1 0 1 2 0 -1 1 2 0 -4 -2 -3 -2 …

6
最近的分数
任务: 您的程序将使用格式正确的,正的简单分数<numerator>/<denominator>。 对于此输入,它必须找到两个分数。 小于输入的分数。 大于输入的分数。 两个分数的分母都必须小于输入的分母。在所有可能的分数中,它们与输入的差异应该最小。 输出: 程序的输出必须为: 小于输入的小数,格式为<numerator>/<denominator>。 后面跟一个空格字符(ASCII码32)。 后跟一个大于输入的小数,格式为<numerator>/<denominator>。 如下: «fraction that is < input» «fraction that is > input» 规则: 输出的所有分数必须使用最低的术语。 输出的所有分数必须是正确的分数。 如果规则没有允许的任何适当分数,则必须输出0而不是分数<输入,而1不是分数>输入。 您可以选择是要接收分数作为命令行参数(例如yourprogram.exe 2/5)还是提示用户输入。 您可能会认为您的程序不会收到无效的输入。 最短的代码(以任何语言表示的字节数)为准。 任何非标准的命令行参数(运行脚本通常不需要的参数)都计入总字符数。 您的程序不得执行的操作: 取决于任何外部资源。 取决于具有特定的文件名。 输出所需输出以外的任何内容。 需要非常长的时间才能运行。如果您的程序在一分钟的179565/987657时间内用普通家庭用户的计算机上的分数用6位数字的分子和分母(例如)运行一分钟,则它无效。 输出分数以0作为分母。你不能被零除。 输出分数0作为分子。您的程序必须输出0而不是小数。 减少输入分数。如果作为输入给出的分数是可约的,则必须使用输入的分数。 发布此挑战之前,不得使用没有公开可用的编译器/解释器的编程语言来编写您的程序。 例子: 输入: 2/5 输出: 1/3 1/2 输入: 1/2 输出: 0 …

30
从列表中生成带有牛津逗号的单个字符串
有什么巧妙的(简短而惯用的)方法来获取字符串列表,并返回一个从列表中构建的正确标点的字符串,并用引号将每个元素引起来。 这是我在尝试Groovy时想到的,对于我来说,我的字面意思是,但过于说明性的解决方案是 def temp = things.collect({"\'${it}\'"}) switch (things.size()) { case 1: result = temp[0] break case 2: result = temp.join(" and ") break default: result = temp.take(temp.size()-1).join(", ") + ", and " + temp[-1] break } 也就是说,['1']应该yield '1',['1','2']应该yield '1 and 2',[请参阅我在那里做的吗?],并且['1','2','3']应该yield '1, 2, and 3'。 对于Groovy,我有一些很好的答案,但我想看看其他语言可以做什么。 在各种语言中,有什么紧凑的巧妙方法可以利用这些语言的功能和习惯用法?

21
该日期最后一次是什么时候可以被n整除?
日期可以用无符号整数表示,例如:YYYYMMDD。您需要做的是编写最短的程序或函数,找出最接近的日期,该日期或日期可被给定的数字整除n(包括今天的日期),然后以上面显示的格式返回该日期。如果从未有过可被给定整数整除的日期(介于00000101和今天之间),则应返回-1。 例子 Current Date Input Output 30 July, 2014 4 20140728 30 July, 2014 7 20140729 28 July, 2014 4 20140728 28 July, 2014 7 20140722 28 July, 5 90000 -1 输入项 您可以从STDIN读取或接受函数参数,甚至可以期望将输入存储在变量中。输入将是一个无符号整数。 输出量 写入STDOUT或以YYYYMMDD格式返回(或保存在变量中)表示日期的整数。 限制条件 您可以使用您的语言提供的任何标准库。有标准漏洞。 获奖条件 这是一个代码高尔夫球,因此以最小的程序(以字节为单位)获胜。如果是平局,则以票数最多的答案为准。
24 code-golf  date 

4
安全地在C中添加两个数字
众所周知,C是一种可爱,安全,高级的编程语言。但是,作为编码员,您需要设置以下任务。 编写一个程序,将两个数字相加。 输入:两个以空格分隔的整数。 输出:输入中两个数字的总和。 不同之处在于您的代码必须是100%安全的。换句话说,无论输入是什么,它都必须正常运行。如果输入确实是两个用空格分隔的整数,且两个整数均小于100位,则必须输出和。否则,它必须输出错误消息并安全退出。 到底有多难? 病理输入案例会给别人以其他的答案:) 使用ubuntu上的gcc -Wall -Wextra,代码必须在没有警告的情况下进行编译。 澄清。 输入来自标准输入。 水平空格仅是单个空格字符。第一个数字前不应有任何内容,并且输入应以换行符+ EOF或仅以EOF终止。 用增强Backus-Naur形式指定的唯一有效输入是: NONZERODIGIT =“ 1” /“ 2” /“ 3” /“ 4” /“ 5” /“ 6” /“ 7” /“ 8” /“ 9” POSITIVENUMBER = NONZERODIGIT * 98DIGIT NEGATIVENUMBER =“-” POSITIVENUMBER NUMBER = NEGATIVENUMBER / POSITIVENUMBER /“ 0” VALIDINPUT …
24 code-golf  c 

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.