Questions tagged «code-golf»

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

30
用户赞赏挑战#1:Dennis♦
我有一个自发的想法,即向用户提出一系列挑战,这些挑战已经帮助并将继续帮助PPCG社区成为每个人(或者可能只是我个人)一个愉快的地方。:P 如果将Dennis的名称转换为1s和0s 的数组,其中每个辅音为1,每个元音为0,则该数组为[1, 0, 1, 1, 0, 1],这是对称的。因此,您面临的挑战是确定其他类似名称。 挑战 给定ASCII字符串,请删除所有不是字母的字符,并确定元音和辅音的配置是否对称。y不是元音 请注意,您的程序本身不必是这种类型的字符串。 测试用例 Dennis -> truthy Martin -> truthy Martin Ender -> truthy Alex -> falsy Alex A. -> truthy Doorknob -> falsy Mego -> falsy 参考实施 给定一个测试用例,此Python 3代码将提供正确的输出。这是我能做到的,但又不荒谬。 Python 3 s = input() l = [] for c in s: …

26
解密那些区分大小写(非常敏感)的字符串
目标 这是一个简单的挑战。您的目标是通过将每个字母与相同大小写的下一个字母交换来对字符串进行加扰,同时保持非字母字符不变。 逐步说明 第一个字符是E。我们寻找大写的下一个字母:这是一个C。我们交换了这些字符,从而导致CdoE!。 我们前进到下一个字符:这是一个d。我们寻找小写的下一个字母:这是一个o。我们交换了这些字符,从而导致CodE!。 我们前进到下一个字符:这就是d我们刚刚移到此处的字符。我们将其忽略,因为它已被处理。 我们前进到下一个字符:这是E在步骤#1中移到的字符。我们将其忽略,因为它已被处理。 我们前进到下一个字符:这是一个!。我们忽略它,因为它不是字母。 规则 您可以假设输入字符串仅由可打印的ASCII字符组成,范围为32-126。 您可以编写完整的程序或函数,以打印或返回结果。 如果输入字符串包含奇数个字母,则无论大小写如何,最后一个剩余的字母都不能与另一个字母互换,并且应保留在原位。如果字符串包含偶数个字母,但奇数个大写字母和奇数个小写字母,则适用相同的逻辑。 这是代码高尔夫球,因此最短的答案以字节为单位。禁止出现标准漏洞。 测试用例 Input : lLEhW OroLd! Output: hELlO WorLd! Input : rpGOZmaimgn uplRzse naC DEoO LdGf Output: prOGRamming puzZles anD COdE GoLf Input : eIt uqHKC RBWOO xNf ujPMO SzRE HTL EOvd yAg Output: tHe quICK BROWN fOx …
53 code-golf  string 

30
你能把我做成六角形吗?
今天,我们将制作一个ASCII六边形。您必须编写一个程序或函数,该程序或函数采用正整数n,并输出大小为n的六边形网格,该网格由星号组成。例如,大小为2的六边形如下所示: * * * * * * * 虽然大小为3的六边形如下所示: * * * * * * * * * * * * * * * * * * * 您可以使用任何默认的输入和输出方法,例如STDIO / STDOUT,函数参数和返回值或读取/写入文件。 您可能会认为输入始终有效,因此,如果输入的值不是正整数,则您的程序可以执行您想要的任何操作。你做但是必须处理大小为1六边形,这恰好是一个星号的特殊情况: * 只要输出在视觉上相同,就允许前导和尾随空格。 例子: 1: * 2: * * * * * * * 3: * * * * …

30
我太冷了,调高温度
这是我的第一次高尔夫比赛。 你需要做什么 用最短的字节为我构建AC远程控制系统。我的房间现在太冷了,我想念我的遥控器。 现在,我不希望您从字面上构建它或任何东西,只需打高尔夫球: 缓慢的温度增量,从40度开始,恰好在72度结束。增量时间必须始终为每次增量500毫秒。最后可以再等待500毫秒。我希望它停止。增量本身每次必须增加两次,就像我的遥控器一样。 您不应该清除屏幕。您应该有换行符。 应该发生什么 示例输出(不应该输出括号中的所有内容)。 40 (wait 500 millis) 42 (wait 500 millis) 44 (..repeat until 72..) 72 (stop or wait 500ms) 请记住, 这是我的第一场高尔夫,因此对打高尔夫球太困难了,我深表歉意。:( 祝您好运,高尔夫球手!

4
虚空传送门检测
电子游戏Minecraft就是要在构成虚拟世界的3D 整数格子中放置和移除不同类型的块。每个晶格点可以只包含一个块,也可以是空的(正式为“ air ”块)。在此挑战中,我们将只关注3D世界的一个垂直2D平面和一种块:obsidian。 当黑曜石在垂直平面上形成一个空矩形的轮廓时,可以创建一个下界门户。空矩形的大小可以从2个单位宽乘以3个单位高到22个单位宽乘以22个单位高。矩形的角不需要以黑曜石为边界,而仅是边。 例如,假设X为黑曜石,.为空:(这些数字仅用于标识目的,也为空。) ................................... ..XXXX....XXXX....XXXXXXXXX........ ..X..X...X....X..X.........X..XXXX. ..X.1X...X.2..X..X...3...X.X..X.... ..X..X...X....XXXX.........X..X.6X. ..XXXX....XXXX...XXXXXXXXXXX..X..X. .............X.4.X....X.5.X...XXXX. .............X...X....X...X........ ..............XXX......XXX......... ................................... 该网格包含3个有效门户: 传送门1由2个单位乘以3个单位,完全为空,并以黑曜石为边界。因此,它是有效的。 传送门2为4 x 3,完全为空,以黑曜石为边界。因此,它是有效的。 门户3并非完全为空。因此无效。 传送门4为3 x 3,完全为空,以黑曜石为边界。因此,它是有效的。 传送门5为3 x 2单位,太小。因此无效。 门户6缺少边界的一部分。因此无效。 挑战 编写一个程序或函数,以这些字符串形式表示黑曜石和空虚的网格,并打印或返回存在的有效下层门户的数量。 输入可以来自stdin或文件或函数参数。 您可能会假设输入的格式总是正确的-例如,一个完美的矩形文本网格,宽度和高度至少为1个字符,仅包含X和.。您可以选择假设最后一行后面有换行符。 如果需要,可以使用任意两个不同的可打印ASCII字符代替X和.。 黑曜石可能在网格的边界上。边界之外的任何东西都被认为是空的。 输入示例-输出应为4: ................................................................ ...................................XXXXXXXXXXXXXXXXXXXXXXXXX.... ..XXXX....XXXX....XXXXXXXXX........X.......................X.... ..X..X...X....X..X.........X..XXXX.X.......................X.... ..X..X...X....X..X.......X.X..X....X.......................X.... ..X..X...X....XXXX.........X..X..X..XXXXXXXXXXXXXXXXXXXXXXXX.... ..XXXX....XXXX...XXXXXXXXXXX..X..X.X......................X..XXX .............X...X....X...X...XXXX.X......................X..X.. .............X...X....X...X........X......................X..X.. ..............XXX......XXX........XXXXXXXXXXXXXXXXXXXXXXXX...X.. ..................................XX.........................XXX 计分 字节最少的提交将获胜。
53 code-golf 

9
创建一个简单的2048游戏克隆
2048是一款非常有趣且令人上瘾的游戏,其目标是创建一个上面带有2048的图块。 这是游戏的简短说明: 按下箭头键将沿该方向滑动舞台上的所有块。例如,如果x代表一个块,那么在这种情况下您按下了向上箭头: ...x .x.. ..x. xx.. 然后董事会将成为 xxxx .x.. .... .... 此外,从处开始编号2。如果两个相同编号的块一起移动,它们将合并为下一个编号。例如,在此板上按“向上”: .2.. ..22 .2.. .... 将创建以下内容: .422 .... .... .... 然后,在按“向右”之后,它将变为..44,因此再次按向右将创建一个“ 8”块,依此类推。 每转一圈,都会在随机的正方形上创建一个新的“ 2”块。(实际上,它不一定总是 “ 2”,但为简单起见,让我们保持该水平。)如果没有可能的移动(即,棋盘已满,并且您无法合并任何东西),那么游戏将会失败,如果创建一个2048区块,您赢了! 您的挑战是重新制作这个打高尔夫球的游戏! 对于边缘情况,例如在此板上按“向右”: .... .222 .... .... 您必须合并最靠近按下箭头键边缘的图块。例如,这将变为..24,因为第二和第三个“ 2”最接近右边缘。 如果玩家按下无效的举动(例如板上的“向上” 2.2. / .... / .... / ....),则您必须忽略该举动。 可以通过任何方式接受移动,例如单击,箭头键ULRD等。 这些图块都必须具有相同的形状-“ 1024”图块的大小应与“ 2”图块的大小相同。 磁贴必须以某种方式分开。例如,|1024| 2|1024|1024|是行的有效示例(假设图块是正方形),而1024 …

30
你会打高尔夫球吗?
您需要生成一个随机的18洞高尔夫球场。 输出示例: [3 4 3 5 5 4 4 4 5 3 3 4 4 3 4 5 5 4] 规则: 您的程序必须输出正好18个孔的孔长度列表 每个孔的长度必须为3、4或5 整个过程中,孔长总计必须为72 您的程序必须能够产生具有某些非零概率的每个可能的孔配置(每个配置的概率不必相等,但是在这种情况下,可以随时要求额外的荣誉)

30
测试一些自恋的人
一个水仙花数是一个数字这是它自己的数字的总和,每个调至位数的力量。 例如,取153(3位数字): 1 3 + 5 3 + 3 3 = 1 + 125 + 27 = 153 1634年: 1 4 + 6 4 + 3 4 + 4 4 = 1 + 1296 + 81 + 256 = 1634 挑战: 您的代码必须接受用户的输入,并根据给定的数字是否为自恋数字输出True或False。 不需要对文本字符串或其他无效输入进行错误检查。输出为1或0是可接受的。仅生成自恋数字列表或对照列表检查用户输入的代码不符合要求。 OEIS A005188

21
1P5:嵌套盒
此任务是“ 首次定期Premier Programming Puzzle Push”的一部分。 您将获得以下格式的项目层次结构: 2 Hat 1 Gloves 需要放在盒子里,就像这样: .------------. | Hat | | .--------. | | | Gloves | | | '--------' | '------------' 在输入格式中,数字以一个框开头,其中包含与数字指定数量一样多的项目。第一个盒子里面有两个物品(帽子和包含手套的盒子),第二个盒子只包含一个物品–手套。 可以看出,盒子也可以放在盒子里面。而且它们总是圆的……有点(尖角是伤人的危险,我们不希望这样)。 对于那些想要利用规范给出的每条细微回旋余地的人来说,下面是令人讨厌的细节。请注意,不阅读规格并不是提交错误解决方案的借口。最后有一个测试脚本和一些测试用例。 规格 框由以下字符构成: | (U + 007C)用于构造垂直边缘。 - (U + 002D)用于构造水平边缘。 ' (U + 0027)是圆形的下角。 . (U + 002E)是圆形的上角。 因此,一个框如下所示: .--. …

30
让我们高尔夫一个BIBABOBU解码器
当我将来旅行时,我注意到大约2275岁的孩子之间发生了一场有趣的游戏。当他们不希望他们的曾曾曾祖父母明白他们在说什么时,他们会用BIBABOBU说话。显然,我在半机器人之前的时代无法理解任何事情,而且我(或者从技术上:我会觉得)真的很愚蠢。因此,我下次访问时需要解码器。 BIBABOBU? 尽管已被弃用很长时间,但ASCII在2275的流行文化中仍然很常用,并且该语言基于它。 字符串是用BIBABOBU编码的: 将所有字符转换为其ASCII码。 取每个代码的2位十六进制表示形式,并使用下表对其进行转换: 0: BI 4: BIDI 8: BADI C: BODI 1: BA 5: BIDA 9: BADA D: BODA 2: BO 6: BIDO A: BADO E: BODO 3: BU 7: BIDU B: BADU F: BODU 例 "Hello!" → 48 65 6C 6C 6F 21 → "BIDIBADI BIDOBIDA …

12
芬兰电影院的座位
您会得到一个布尔值矩阵的电影院地图:0代表一个免费座位,1代表已占用。每个进入的芬兰人都从最近的被占领者那里选择最远的座位(欧几里得距离),如果有多个座位的话,则按行顺序排列。输出一个矩阵,显示最终将占用的订单;也就是说,将0替换为2、3、4等 // in 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 // out 2 8 3 9 1 10 5 11 6 12 4 13 14 15 7 16 17 1 1 18 // in 0 0 0 …
52 code-golf  matrix 

15
无味和其他错误
标准Android计算器应用程序的某些版本允许您按一个键,例如“ sin”,然后按“ del”键使其变为“ si”。可能只是一个bug,他们不能为删除而烦恼。 以下字母/字母分组是可键入的: 罪 si s cos 合作 C 棕褐色 ta Ť ln 升 日志 罗 Ë 因此,“无味”是典型的,因为ta-steless,“木s”也是如此,因为“ c-log-s”。但是,“ got”不是可键入的,“ an”或“ xyz”也不是可键入的。 编写一个程序,该程序将单个单词(或字母序列,输入中仅包含z)作为输入,并生成输出以指示单词是否可键入。 输出可以是单个字符/字母/数字/等。或可能更大。所有可打字的单词应产生相同的输出。所有非典型词也应产生相同的输出。 PS只是出于好奇,“无味”是最长的可打字的字典单词吗?

30
禁止内置
在标准漏洞中,禁止以下行为: 声称您的答案是用“ MyOwnLanguage”编写的,该命令的x意思是“读取数字序列,将它们分成三组,并打印第二组小于第一个的那些组的最后一个数字” 在这里,我们将做完全相同的事情。 任务 给定一个正整数序列(其长度可被3整除),将它们分为三组,并打印第二组小于第一个的那些组的最后一个数字。 测试用例 Input Output [] [] [1,2,3,4,5,6,7,8,9] [] [2,1,3,5,4,6,8,7,9] [3,6,9] [3,1,4,1,5,9,2,6,5] [4] [100,99,123] [123] [123,123,456] [] [456,123,789] [789] 计分 这是代码高尔夫球。以字节为单位的最短答案将获胜。 存在标准漏洞,因此请记住不要使用内置命令x来执行此任务。

30
我的操作系统是32位还是64位?
它不再是太重要了,但是偶尔有人需要知道。 这是一个简单的练习:没有用户输入,请告诉我运行代码的计算机是在64位操作系统还是32位操作系统上! 如果代码在32位操作系统上运行,则打印“ 32”,如果代码在64位操作系统上运行,则输出“ 64”。重要: 如果不是32位或64位字符,请打印其他任何非空的字母数字字符字符串。 请注意,在具有64位操作系统的计算机上运行的32位程序应输出“ 64”。您可以假设用户将尽可能使用64位软件。 为了有资格进入,您的代码必须能够在Windows 4.10或更高版本的 Microsoft支持的Windows系统上运行,并且至少可以选择一种Linux(只要免费提供)。只要程序仍然返回正确的值,就可以安装兼容性模块。 通常使用代码高尔夫球规则。 注意:如果您的答案仅打算打印32或64,而不是alt大小写,我会接受的,但这不是竞争性答案。 稍后,我将尝试发布在不同操作系统上运行这些代码的一些结果!

30
我适合多少位
对于任何正的32位整数(1 ≤ n ≤ 0xFFFFFFFF)输出,代表该整数所需的位数。 测试用例 | n | n in binary | bits needed | |----------------------------------| | 1 | 1 | 1 | | 2 | 10 | 2 | | 3 | 11 | 2 | | 4 | 100 | 3 | | 7 | 111 | …
52 code-golf  binary 

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.