编程拼图和代码高尔夫

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

3
根据要求的天气设置部落图腾
有一个苏城村。它有一个图腾: __ ___| |___ \/ \ / \/ /\ ``| |`` /\ /^^\ | | /^^\ / /\ \ | | / /\ \ '''''''''''''''''''''''''''' 图腾让苏族人可以掌握天气情况,以帮助他们完成不同的任务。帮助村民适当地装饰图腾,以获取充足的天气。图腾包含以下几个部分: __ ___|AA|___ \/ \BBBBBBBB/ \/ /\ ``|CC|`` /\ /^^\ |DD| /^^\ / /\ \ 13 |EE| 42 / /\ \ '''''''''''''''''''''''''''' A适用于太阳 ()或云 ww …

4
这……是……要塞!
Fortress是由Sun编程语言研究小组(RIP Fortress)开发的一种语言,具有独特的属性,可以用不同的字体样式(例如,黑板粗体,粗体,斜体,罗马等)。目标是在HTML标记中表示一个单字符的Fortress变量。 这是一字符变量设防的工作方式(出于代码查询目的,从文档中进行了简化/修改): 如果该变量是重复的大写字母(例如ZZ),则其格式为黑板粗体(𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ) 如果该变量前面带有下划线,则该变量将以罗马字体呈现(单独保留) 如果变量后面带有下划线,则该变量将以粗体(<b>v </b>)呈现。 如果该变量既不带下划线也不带下划线,则该变量以斜体(<i>v </i>)呈现。 黑板粗体的代码点是::𝔸1D538,𝔹:1D539, ℂ:2102,𝔻:1D53B,𝔼:1D53C,𝔽:1D53D,𝔾:1D53E,ℍ:210D,𝕀:1D540,𝕁:1D541,𝕂:1D542,𝕃:1D543,𝕄:1D544,ℕ:2115,𝕆:1D546,ℙ:2119,ℚ:211A,ℝ:211D,𝕊:1D54A,𝕋:1D54B,𝕌:1D54C,𝕍:1D54D,𝕎:1D54E,𝕏:1D54F,𝕐:1D550,ℤ:2124。它们在程序中每个占一个字节(如果您选择的语言完全可以处理这些字符) 输入将是重复的ASCII大写字母,或者是没有下划线,前导下划线或末尾下划线的单个ASCII字母(AKA _a_将不是输入)。这是代码高尔夫球,因此最低字节数为准! 测试用例: a => <i>a</i> BB => 𝔹 c_ => <b>c</b> _d => d E => <i>E</i> G_ => <b>G</b> _H => H ZZ => ℤ 链接:规范,直接下载版本0.1 alpha。 参考实现(这在Fortress中,但是Fortress不喜欢大多数双连字符,因此该实现在D中): dstring fortify(string arg) { import std.string, std.conv; alias D …
11 code-golf 

5
电脑永远不会品尝到令人耳目一新的Cookie
受github.com/JackToaster/Reassuring-Parable-Generator的启发,又受xkcd.com/1263的启发。可能的话是从派生reassuring.cfg该资源库的。 建议查看reassuring.cfg (使用第12次提交)以查看输出匹配的语法(输出是与语法匹配的所有字符串的列表)。 任务:您的程序必须输出pastebin pastebin.com/2SNAJ1VH中包含的所有7968个区分大小写的精确文本行。pastebin的副本保存在Wayback Machine中 这是来自pastebin的33条激励线的示例: Computers can't enjoy a salad. Computers can't enjoy a cake. Computers can't enjoy a ice cream cone. Computers can't enjoy a meal. Computers can't enjoy a drink. Computers can't enjoy a steak. Computers can't enjoy a chicken dinner. Computers can't enjoy a piece …

9
实现一个奇怪的自动机
我在玩蜂窝自动机,发现其中的一种有趣的行为。运作方式如下: 它从左到右读取一个二进制字符串,如果遇到一个1后跟2其他值的二进制字符串,它将0在结果后面追加一个并继续读取。如果遇到a 0(或剩余少于3个值),它将附加当前值和a 1并继续读取。在字符串的末尾,它将1在结果后附加一个。 这是一代人的例子 01011111 ^ 我们首先遇到a,0因此我们将其追加01到结果中 01011111 ^ 01 现在我们遇到一个,1所以我们附加一个零并跳过接下来的两个值 01011111 ^ 010 我们遇到另一个,1所以我们也一样 01011111 ^ 0100 现在,我们还有另一个1但没有足够的空间可以跳转,因此我们附加了当前单元格和一个1(在这种情况下11) 01011111 ^ 010011 我们已经结束了,所以我们追加一个1并终止这一代 01011111 ^ 0100111 任务 给定任何合理格式的输入,您必须创建一个计算一代自动机的函数或程序。 这是一个代码问题,因此答案将以字节计分,而字节越少越好。 实施范例 这是Haskell中的示例实现(定义了一个函数d,但是程序无限期地打印迭代): d('1':_:_:x) = "0" ++ d x d(a:x) = a:'1':d x d x = "1" r x = x:map …

1
正弦ASCII艺术动画文本
我有点想念那些展示计算机功能的旧演示,它们被称为x86而不是i3,i5和i7。我第一次在386上观看的电影之一是Future Crew的Unreal演示,它正在庆祝其25周年。在0:43分钟,演示的第一部分开始,我们看到正弦曲线路径下的滚动文本。让我们尝试模仿ASCII艺术中的效果! 挑战 给出以下路径: *** *** *** *** ** ** * * * * * * * * ** ** *** *** ****** 和输入文本,沿着该路径绘制文本,如下所示: Thi Golf! s i de Yay s Co ! P r d o n g a ra s mmi zle ng Puz 请注意,空格在路径中算作字符,并且如果文本长于示例,则路径会自行重复。 动画部分 绘制文本后,请等待100毫秒(以创建约10 fps的动画)并从路径的下一个位置开始再次绘制文本。因此,对于frame …

4
不饱和度
不饱和度 这并不是一个特别困难的代码难题-但我很想看到您解决问题的多种方式。 不饱和度是原子之间的双化学键的数目和/或化合物中的环数。 您将以XaYbZc的形式得到化合物的分子式(其中a,b和c是化合物中X,Y或Z的原子数)-分子式可以是任何长度,并且可以包含任何化学元素在元素周期表中(尽管C,H,N,F,Cl,Br以外的元素,我可能会被忽略,因为它们不在公式中显示)。该化合物将包含至少一个碳原子。您必须计算并显示其不饱和度。 例如,化合物苯(如下图所示)的DoU为4,因为它具有三个双键(由原子之间的双线表示)和一个单环(成环连接的多个原子): 根据LibreTexts的定义: DoU =(2C + 2 + N-X-H)/ 2 哪里: C 是碳原子数 N 是氮原子数 X 是卤素原子的数量(F,Cl,Br,I) H 是氢原子数 测试用例: C6H6 --> 4 C9H2O1 --> 0 C9H9N1O4 --> 6 U1Pt1 --> Not a valid input, no carbon Na2O1 --> Not a valid input, no carbon C1H1 --> …

5
最小未使用数量共享一个因素
这是工厂问题的一个很好的解决方案。我将定义一个序列,然后您浏览一些代码以输出给定索引的条目。 序列中的第一项是2。 序列中的第n个项目是除n和1以外的最小正整数,与n共享至少一个因子(除1之外),该因子尚未出现在列表中。 测试用例 以下是序列中的前25个项目: 1 2 2 4 3 6 4 8 5 10 6 3 7 14 8 12 9 15 10 5 11 22 12 9 13 26 14 7 15 18 16 20 17 34 18 16 19 38 20 24 21 27 22 11 23 …

3
Lyndon字分解
背景 一个林登字是一个非空字符串,它是严格按字典比所有其他的旋转小。可以将任何字符串唯一地分解为Lyndon单词的串联,这样这些子单词在字典上就不会增加;您的挑战是尽可能简洁地执行此操作。 细节 您应该实现一个函数或程序,该函数或程序枚举任何可打印ASCII字符串的Lyndon字分解,以便将结果子字符串输出为某种数组或流。字符应按其代码点进行比较,并允许使用所有标准输入和输出方法。与通常的代码高尔夫球一样,以字节为单位的最短程序获胜。 测试用例 '' [] 'C' ['C'] 'aaaaa' ['a', 'a', 'a', 'a', 'a'] 'K| ' ['K|', ' '] 'abaca' ['abac', 'a'] '9_-$' ['9_', '-', '$'] 'P&O(;' ['P', '&O(;'] 'xhya{Wd$' ['x', 'hy', 'a{', 'Wd', '$'] 'j`M?LO!!Y' ['j', '`', 'M', '?LO', '!!Y'] '!9!TZ' ['!9!TZ'] 'vMMe' ['v', 'MMe'] 'b5A9A9<5{0' ['b', '5A9A9<5{', …

15
反复互惠
您需要做的是创建一个将小数作为输入的函数/程序,并输出重复取数字小数部分的倒数的结果,直到数字变成整数。 更具体地说,过程如下: 令x为输入 如果x是整数,则将其输出。 否则:x ← 1Fr a c(x)X←1个F[R一种C(X)x \leftarrow \frac{1}{\mathrm{frac}(x)}。回到2。 Fr a c(x)F[R一种C(X)\mathrm{frac}(x)是的小数成分XXx,并且等于X - ⌊ X ⌋X-⌊X⌋x - \left\lfloor x \right\rfloor。⌊ X ⌋⌊X⌋\left\lfloor x \right\rfloor是x的地板上,这是最大的整数小于XXx。 测试用例: 0 = 0 0.1 = 1/10 -> 10 0.2 = 1/5 -> 5 0.3 = 3/10 -> 10/3 -> 1/3 -> 3 0.4 …

19
怎么把HEX2转换成RGBA?
艺术世界充满了色彩,但网络世界比其他色彩及其渲染的艺术世界还要充实。因此,我们需要知道如何将一种颜色格式转换为另一种颜色格式。 挑战不言而喻: 编写程序/函数,然后将给定的十六进制代码(#00ff0080例如)转换为RGBA(如rgba(0, 255, 0, 0.5))。 规则: 禁止使用外部库/内置程序将HEX转换为RGBA。但是,可接受jQuery和类似的语法替换器。 标准输入/输出规则适用。 alpha的格式可以在(1 == 100%)或其他(100 == 100%)之间,这并不是很重要。 只要返回4个转换后的值(如字符串,数组,列表,您可以选择),输出就很灵活。 您可以选择不输入#开头。因此,您可以将输入作为#RRGGBBAA或RRGGBBAA。您可以假定十六进制代码(除外#)将始终为8个字符。 您应将所有值除以255,包括alpha。最小十进制精度(对于alpha来说,将为2个小数位)。 测试用例 Input: 00ff0080 Output: 0, 255, 0, 0.5 计分 code-golf,字节最少的代码获胜。


9
绘制ASCII轮廓图
考虑下面的3x3块,行进平方算法将为每个像元标识(带有从0开始的标记ID): 0: ... ... ... 1: ... ... \.. 2: ... ... ../ 3: ... --- ... 4: ..\ ... ... 5: /.. ... ../ 6: .|. .|. .|. 7: /.. ... ... 8: /.. ... ... 9: .|. .|. .|. 10: ..\ ... \.. 11: ..\ ... ... 12: …

10
我是一个特殊的N-bonacci号码吗?
N-bonacci序列最初是由@DJMcMayhem在此问题中发明的,它是通过以整数0和1开头,然后加上前N个数字以生成下一个数字而生成的序列。特殊的N-bonacci序列是一个以0和1以外的一对数字开头的N-bonacci序列,它们将被命名为X和Y。如果N大于序列中已经存在的项数,只需添加所有可用的条款。 因此,例如正常的斐波那契数列的N为2(取前两项),X和Y为0和1,或者1和1,具体取决于您问谁。 你的任务: 您将编写一个程序或函数来检查输入的整数(A)是否是由接下来的三个整数生成的特殊N-bonacci序列的一部分(将第二个输入用作N,将第三个和第四个用作X和Y) 。确保处理N = 1的特殊情况。 输入: 四个非负整数A,N,X和Y。 输出: 真/假值,指示A是否为N,X和Y输入生成的N-bonacci序列的一部分。 测试用例: Input: Output: 13,2,0,1->truthy 12,3,1,4->falsy 4,5,0,1-->truthy 8,1,8,9-->truthy 9,1,8,9-->truthy 12,5,0,1->falsy [0,1]>[0,1,1]>[0,1,1,2]>[0,1,1,2,4]>[0,1,1,2,4,8]>[0,1,1,2,4,8,16]>etc. 得分: 这是代码高尔夫球,因此以字节为单位的最低分数获胜。

1
我<3有条件
您最终在代码中有很多很长,看起来很无聊的条件: if flag == 1: while have != needed: if type == 7: 这些可以转换为它们更可爱的&lt;3条件副本: if abs(flag - 1) + 2 &lt;3: while 3 - abs(have - needed) &lt;3: if 2 + abs(type - 7) &lt;3: 任务 您的任务是带条件并使其成为条件&lt;3。唯一重要的间距是&lt;和之间没有间距3。 条件语句将是要么分隔两个表达式==,!=,&gt;,&lt;,&gt;=或&lt;=。 表达式将仅包含加,减,一元否定(-something),其中每个变量或数字前面有一个+或-一个(除了第一个没有变量或没有变量或数字-之前)。 数字将为[0-9]+,变量将为[a-z]+。如果需要使用答案|x|(的绝对值x),请使用该abs()函数。您可以假设所有变量都是整数,并且输入中的所有数字常量均小于1000。 输出并没有需要在它的简单形式。它确实需要像上面的条件表达式,这意味着它仅是两个表达式,以一个条件符号分隔,但是它也可以使用abs函数,将有效表达式括起来,然后就有效性而言就像变量一样。 如果输入没有任何变量值的输出,则输出始终为false但仍以表示的条件&lt;3。 挑战的一部分是弄清楚如何做到这一点,但以下是上述步骤have != needed: have != needed have - …

7
详细IP范围生成器
给定两个IP地址a和b,该任务很简单,输出该范围内的所有地址。 例子 范例1: f(a = 192.168.0.1, b = 192.168.0.4) 192.168.0.1 192.168.0.2 192.168.0.3 192.168.0.4 Example#2(TIO将截断它,在测试时使用较小的范围): f (a = 123.0.200.0, b = 124.0.0.0) 123.0.200.0 123.0.200.1 ... # Omitted pattern 123.0.200.255 123.0.201.0 ... # Omitted pattern 123.0.201.255 ... # Omitted pattern 123.0.255.255 123.1.0.0 ... # Omitted pattern 123.255.255.255 124.0.0.0 输入输出 a &lt; b …

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.