编程拼图和代码高尔夫

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

22
数字三角形
挑战: 输入:正整数nnn 输出: 在[1,n][1,n][1,n]范围内创建一个列表,并将其连接到一个字符串(即n=13n=13n=13将是字符串12345678910111213)。 现在,根据输入整数,使用以下字符串的四个方向之一,使用此字符串的前缀或后缀输出三角形: 如果,将其输出为三角形◣n≡0(mod4)n≡0(mod4)n\equiv 0\pmod 4 如果,将其输出为三角形◤n≡1(mod4)n≡1(mod4)n\equiv 1\pmod 4 如果,将其输出为三角形◥n≡2(mod4)n≡2(mod4)n\equiv 2\pmod 4 如果,将其输出为三角形◢n≡3(mod4)n≡3(mod4)n\equiv 3\pmod 4 例: 输入:n=13n=13n=13 因为,所以形状为◤。这里是三个可能的有效输出:13≡1(mod4)13≡1(mod4)13\equiv 1\pmod 4 12345678910111213 11111111111111111 12345678910111213 1234567891011121 2222222222222222 2345678910111213 123456789101112 333333333333333 345678910111213 12345678910111 44444444444444 45678910111213 1234567891011 5555555555555 5678910111213 123456789101 666666666666 678910111213 12345678910 77777777777 78910111213 1234567891 8888888888 8910111213 123456789 999999999 910111213 12345678 …

10
我可以说您的程序多快?
我最近决定下载一些听写软件,以帮助我写作。但是,当我编码时,它不能很好地工作,因为我必须从说单词变成符号,然后再返回。当我使用所有符号的深奥语言编写代码时,情况甚至更糟。 为了使听写程序的使用更加一致,我决定将其切换到字符模式,在这里我只说每个字符的名称。问题解决了!虽然这确实延迟了我的小说的发行日期... 因此,假设角色名称越长,说的时间就越长,那么我要花多长时间才能拼出我的某些程序/句子? 技术指标 给定仅包含可打印ASCII的字符串,请返回每个字符的Unicode名称之和。例如,/被称为SOLIDUS具有7个字符,并且A是LATIN CAPITAL LETTER A与22个字符。 但是请记住,我必须大声说出您的程序才能执行它们,所以它们的得分将取决于我说它们所花费的时间,即每个字符的unicode名称的长度之和。 测试用例: 格式input => output为在输入中没有尾随/前导空格。 A => 22 / => 7 Once upon a time... => 304 slurp.uninames>>.comb.sum.say => 530 JoKing => 124 !" #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ => 1591 Double-check your \s on the last test case ;) => 755 <say "<$_>~~.EVAL">~~.EVAL => 388 …

15
建立ASCII平台
在体育比赛中,经常会出现获奖者出现在领奖台上的情况,第一名的人排在中间最高,第二名的人排在中间高度的左侧,第三名的人排在最低和在右边。我们将在此处进行一些特殊的调整来重新创建它。 领奖台如下: @---@ | @ | @---@| | | | @ || | | | | || | |@---@ | | || | || @ | 这将构成这一挑战的基础。下一步是使讲台足够宽,以适合讲台上的人员(可打印ASCII字符串)。但是,我们要确保美观(因为这是一次绝佳的拍照机会),因此每个讲台的宽度必须相同,并且宽度必须为奇数。此外,人们(显然)会希望站在讲台的中央,因此,弦线必须尽可能地居中。(您可以向左或向右对齐,并且不需要保持一致。)上面的讲台是最小的尺寸,被认为是3宽的。 例如,假设输入分别["Tom", "Ann", "Sue"]代表第一,第二和第三名,则输出以下讲台: Tom @---@ Ann | @ | @---@| | | | @ || | | Sue | | || | |@---@ …

13
超排列
介绍 您是窃取新技术创业公司Dejavu的一些秘密计划的罪犯。您潜入后墙,但发现一扇需要用别针打开的门。您可以识别出锁的型号,并且知道它需要使用5位数的密码,并且使用从0到4的所有数字。在输入每个数字之后,锁会检查输入的最后5位数,并在密码正确的情况下打开。您必须快速通过此锁定。 简而言之,超置换 排列是一组特定数字的所有可能组合。例如,数字0、1、2的所有排列为: 012、021、102、120、201和210。 如果将所有这些置换连接在一起,则会得到一个超置换: 012021102120201210 此超置换包含0、1、2的所有置换,但可以使该置换短一些。我将在这里略过一些,但是这些数字的最短置换是: 012010210 就我们的意图和目的而言,这实际上是最短的数字字符串,其中包含这些数字的所有可能排列,即超排列。 任务 您的任务比上面的超级置换示例要难一些,因为您还有两个数字需要担心。-如果您还没有阅读有关超置换的文章,或者我上面的例子不清楚,我强烈建议您阅读Patrick Honner撰写的有关该主题的出色文章(这一挑战受到他的文章的启发很大,因此对他表示敬意):https://www.quantamagazine.org/unscrambling-the-hidden-secrets-of-superpermutations-20190116/。您的目标是编写尽可能最短的程序,以产生数字0到4的超排列。 计分 您的程序不接受任何形式的任何输入,并且产生从0到4的数字的超置换。此超置换必须打印到控制台或以您选择的语言提供的可视化方式显示给用户。这不必是最短的排列,而必须是有效的超排列。因此,目标是编写具有最短超置换的最短程序,因此您应该像这样计算分数: 文件大小(字节)*生成的超置换长度(数字) 例如,如果我有一个40字节的程序,并且我的超置换长度为153位数字,那么我的分数将是: 40 * 153 = 6120 与往常一样,目标是使该分数尽可能低。 模板 这是发布答案的方法: 语言| 得分 链接到工作环境中的代码(如果可能) code snippet 代码说明等 结局 这是我对此网站的第一个问题。因此,请告诉我是否遗漏了任何东西,或者尚不清楚我的挑战的一部分。谢谢,打高尔夫愉快!

11
这个集合代表自然数吗?
在集合理论中,自然数NN={0,1,2,3,...}\mathbb{N} = \{0, 1, 2, 3, ...\}通常被编码为纯集,即仅包含空集或其他纯集的集。但是,并非所有的纯集都代表自然数。挑战在于确定给定的纯集是否表示自然数的编码。 自然数的编码以下列方式1起作用: 零是空集:Set(0)={} Set(0) = \{\} 对于许多n>0n > 0:Set(n)=Set(n−1)∪{Set(n−1)} Set(n) = Set(n-1) \cup \{Set(n-1)\} 因此,前几个自然数的编码是 0⇝{} 0 \leadsto \{\} 1⇝{0}⇝{{}} 1 \leadsto \{0\} \leadsto \{\{\}\} 2⇝{0,1}⇝{{},{{}}} 2 \leadsto \{0,1\} \leadsto \{\{\},\{\{\}\}\} 3⇝{0,1,2}⇝{{},{{}},{{},{{}}}} 3 \leadsto \{0,1,2\} \leadsto \{\{\},\{\{\}\},\{\{\},\{\{\}\}\}\} 4⇝{0,1,2,3}⇝{{},{{}},{{},{{}}},{{},{{}},{{},{{}}}}} 4 \leadsto \{0,1,2,3\} \leadsto \{\{\},\{\{\}\},\{\{\},\{\{\}\}\},\{\{\},\{\{\}\},\{\{\},\{\{\}\}\}\}\} 任务 …

25
产生密码
记住密码非常困难,因此我想出了一种生成密码的方法。 按照以下步骤,我是通过单词或句子生成密码的: 从左到右开始 查找每个字母的数量 按顺序把字母和数量放在一起 重复度更高的字母将在结尾 重复相同的字母将按字母顺序排列 数字和特殊字母将被忽略,包括空格(例如9、4,@,(,*等)将被忽略) 组字母忽略大小写。在输出中,使用输入中最后一次出现的情况 字母的计数可以是任何数字,例如5H17M345K 如果输入为全数字或特殊字母,则输出为空字符串,例如输入“ 12 $ * 34 ^!” 然后输出“” 当相同出现的顺序按字母顺序大小写无关紧要时,例如1a1B1c 例: Input: Kitkat Tango (2k / 1i / 3T / 2a / 1n / 1g / 1o) Output: 1g1i1n1o2a2k3T 另一个例子: Input: Database Partitions Task (1D / 5a / 4T / 1b / …

12
密集包装的十进制(DPD)到十进制
对于nandgame爱好者:请在逻辑门中也尝试DPD十进制! 背景 密集包装的十进制(DPD)是一种以二进制有效存储十进制数字的方法。它以10位存储三位十进制数字(000至999),这比朴素的BCD(以4位存储一位数字)的效率要高得多。 记号 小写字母ato i是复制到十进制表示形式的位。 0和1是输入或输出位模式中的确切位。 x 转换中将忽略这些位。 换算表 以下是从10位DPD到三位十进制数字的转换表。每个十进制数字都表示为4位二进制(BCD)。双方都从最高位到最低位从左到右书写。 Bits => Decimal (Digit range) a b c d e f 0 g h i => 0abc 0def 0ghi (0-7) (0-7) (0-7) a b c d e f 1 0 0 i => 0abc 0def 100i (0–7) (0–7) (8–9) …

24
任意随机
随机性很有趣。没有意义的挑战很有趣。 编写一个函数,在给定整数输入的情况下n,将输出介于和(包括)之间的一组(无序,唯一的)精确n随机整数,以使所有整数的总和等于。1n^2n^2 随机性也不会是均匀的,只要每个有效集有发生非零机会。 以字节为单位的最短答案(每种语言)获胜。 例子 Input (n) = 1, Target (n^2) = 1 Sample of possible outputs: 1 Input = 2, Target = 4 Sample of possible outputs: 3, 1 1, 3 Input = 3, Target = 9 Sample of possible outputs: 6, 1, 2 3, 5, 1 4, 3, …

23
均衡数组
挑战 给您整数数组。通过移动,您可以将数组的元素增加或减少1。您的任务是均衡数组,即通过执行一些moves使数组的所有元素相等。但这还不够!你也想使尽可能少的动作尽可能。一种aa 输入项 非空阵列 整数的一种aa 任选地,该长度的。一种aa 输出量 均衡数组所需的最小移动次数。一种aa 规则 标准规定了有效的意见,I / O,漏洞适用。 这是代码高尔夫球,因此最短的解决方案(以字节为单位)获胜。像往常一样,不要让可笑的简短的高尔夫语言解决方案阻止您以您选择的语言发布更长的答案。 这不是规则,但是如果包含测试解决方案的链接以及其工作原理的说明,您的答案会更好。 例子 Input --> Output [10] --> 0 [-1, 0, 1] --> 2 [4, 7] --> 3 [6, 2, 3, 8] --> 9 [5, 8, 12, 3, 2, 8, 4, 5] --> 19 [1,10,100] --> 99

18
使它们总计为10,000
最近,我们在PPCG上已达到10,000个问题的门槛。万岁!让我们用一个简单的挑战来庆祝这一点。 输入项 两个整数和都在,因此。一种AA乙BB[ 1..9999 ][1..9999][1..9999]A + B &lt; 10000A+B&lt;10000A+B<10000 任务 您的任务是将一个数字加到这些整数之一,或者将一个数字加到两个整数,使得。如果将数字添加到和,则不必一定是相同的数字。A + B = 10000A+B=10000A+B=10000一种AA乙BB 可以在原始整数的开头,结尾或中间的任意位置添加新数字。但是,您不能添加前导零。 例: 对于,以下转换有效:A = 923A=923A=923 1 92392 7 3923 8192392739238\color{red}1923\\92\color{red}73\\923\color{red}8 但是这些是无效的: 0 92310 9239 4 2 7 309231092394273\color{red}{0}923\\\color{red}{10}923\\9\color{red}{4}2\color{red}{7}3 给定和,有两种可能的解决方案:A=923A=923A=923B=72B=72B=72 9238+762=100009273+727=100009238+762=100009273+727=10000923\color{red}8 + 7\color{red}62 = 10000\\92\color{red}73 + 72\color{red}7 = 10000 输出量 您必须打印或输出所有可能解决方案的列表。 对于上述示例,预期输出为[[9238,762],[9273,727]]。 规则 I / O可以以任何合理,明确的格式进行处理。您可以使用字符串,数字列表等代替整数。 …

24
比较版本号
发布某些软件时,我们会为其分配一个版本号。用户可能需要更新到某些软件的最新版本。因此,现在是时候找出哪个版本应该较新。 输入项 输入两个版本号作为字符串。 在此挑战的背景下,我们仅支持版本号,该版本号是一些由点组成的数字。 版本号是一个字符串,只能包含数字(0〜9)和点(.)。 点号不是版本号的第一个/最后一个字符。 点之间必须有一些数字。不能连续出现两个点。 版本号中的所有数字都应小于2 16。 输出量 比较输入的版本号并输出是否第一个大于/等于/小于第二个。您可以选择以下演示文稿之一: 使用正数/零/负数,而零表示相等; 使用三个恒定的不同值; 比较中 您无需实施本节中描述的算法。您的提交是有效的,只要它与该算法产生相同的输出即可。 版本号是一些小数点,由点连接。我们首先将两个版本号拆分为数字数组; 用零填充数组的末尾以使它们具有相同的长度; 比较第一项和最后一项: 如果两个数组项不同,则数字越大表示版本号越大 如果相同,则继续比较以下项目; 如果数组中的所有项目都相等,则两个版本相等。 测试用例 version1 version2 result 2 1 &gt; 1.0.0 1 = 1.0 1.0.0 = 1.2.42 1.2.41 &gt; 1.1.56789 1.2.0 &lt; 1.10 1.2 &gt; 1.20 1.150 &lt; 18.04 18.4 = 7.010 …

16
罗马军盾
沙盒帖子(已删除) 古老的罗马军队在世界范围内非常有名。在这些阵型中,罗马军团以几何形状(通常是矩形)分组,使用盾牌保护侧翼及其上半部分。内部位置的军团士兵将上盾放置在头顶上方,侧面的军团士兵携带2个或多个盾牌:一个用于保护上半部分,一个或多个盾牌用于保护侧面(如果有人在角落里)他有3个盾牌,如果有人一个人有5个盾牌,是的,我知道一个人不可能带5个盾牌,但是他们以某种方式做到了。利用这一阵型,所有罗马军团保护自己,并成为当时最坚强的对手。 历史告诉我们,有一位罗马将军说,最好的编队形状是正方形(行和列的军团人数相同)。问题在于弄清楚他应该分裂多少个编队(和规模),以便: 不要将任何军团排除在编队之外(尽管他承认只有一个军团编队) 减少所需的防护罩数量 这位将军在做一些数学和计算后,得出完成这两个条件的最佳方法是从可能的最大平方开始,然后重复直到没有军团成员离开为止。 例: 如果他的军队中有35个军团, 一个5x5的军团正方形(这是可能的最大正方形)。 与其余军团一起(10) 3x3正方形 与其余军团一起(1) 1x1正方形。 最后,它看起来像这样: 5x5 * * * * * 3x3 * * * * * * * * 1x1 * * * * * * * * * * * * * * * * * * * * …
26 code-golf  matrix 

6
两打接吻数近似
给定一个从1到24的数字,请根据目前的知识输出接吻数字(某些数字会有一个以上的可接受输出)。几何知识不是必不可少的,因为下面列出了所有输出。 从Wikipedia页面上的Kissing Number问题: 接吻数定义为不重叠的单位球的数量,可以将它们排列成每个都接触另一个给定的单位球 也就是说,给定一个单位球,在没有任何单位球重叠的情况下,还有多少个单位球可以接触它?该问题将在N维空间中提出,其中一个球体被理解为N-1维球体。 例如: 在二维空间中,一个单位圆可以触摸其他6个单位圆。 在3维空间中,一个单位球可以接触其他12个单位球。 Wikipedia页面列出了1到24维空间的值。但是,其中一些尚不准确,因此仅给出了下限和上限。在此复制该表,以便无论将来由于新的证明而缩小范围,该表都将保持不变。即使将来修改了Wikipedia页面,也将根据此固定表来判断解决方案。 界限表 Dimension Lower bound Upper bound 1 2 2 2 6 6 3 12 12 4 24 24 5 40 44 6 72 78 7 126 134 8 240 240 9 306 364 10 500 554 11 582 870 12 840 …

11
显示剩余电量百分比
显示电池剩余电量,以最大电量的百分比表示 请记住,如果您无法在手机,计算器等上运行代码,则可能至少可以在笔记本电脑上安装环境。如果您绝对不能在装有电池的设备上运行,那么很遗憾,您的语言不符合要求,因为您没有打印有用的价值。 您必须在屏幕上显示结果。从理论上讲,这对于用户检查电池是一种方便的工具。将电池电量百分比写入文件太笨拙,需要用户随后检查文件。因此,在屏幕上显示是规范的一部分,默认IO不能覆盖它。就是说,您可以认为没有什么可以阻止STDOUT之类的东西以通常的方式显示在屏幕上。 如果操作系统已经一直在屏幕上显示电池电量百分比,就像在许多手机上一样,这并不意味着您有一个零字节的解决方案。您必须假定不存在内置显示器,然后在其他位置再次显示电池电量百分比。 编辑:正在打开输出格式。您可以自由显示仅显示百分比的数字,也可以显示带有一些额外输出的数字。 Edit2:代表百分比的数字必须出现在输出中的已知位置,距离输出末端不超过50行,并且该位置在两次调用之间不应更改。代表百分比的数字必须与其他输出分开,每边至少要有一个非数字字符。 供参考的是更改之前的旧输出格式: Remaining battery is ddd% 要么 Remaining battery is ddd percent
26 code-golf 

7
肮脏而独特
在这个问题中,我将以字符串形式讨论程序,这是字节字符串,而不是字符。如何呈现或显示结果程序对于此挑战并不重要,只有它在内存中的显示方式很重要。 甲原始程序是一个程序,当运行不错误,然而将错误,每当大小的连续子,其中, 已移除。Ñ 1 ≤ Ñ &lt; | S |SSSnnn1≤n&lt;|S|1≤n&lt;|S|1\leq n < \left|S\right| 肮脏的程序则相反,程序在运行时会出错,但是每当大小为的连续子串出现时,其中,被删除,不会出错。Ñ 1 ≤ Ñ &lt; | S |SSSnnn1≤n&lt;|S|1≤n&lt;|S|1\leq n < \left|S\right| 对于此挑战,错误是非空输出到STDERR。 您面临的挑战是编写一个使用尽可能多的唯一字节的肮脏程序。这意味着您的代码中出现的每个唯一字节将获得一分,分数越大越好。因此,最大分数为256。

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.