编程拼图和代码高尔夫

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

4
计算将球放入垃圾箱的方式数
在此任务中,您将获得奇数数量的白球和相同数量的黑球。任务是计算将球放入垃圾箱的所有方法,以使每个垃圾箱中每种颜色的数量均为奇数。 例如,假设我们有3个白球。不同的方式是: (wwwbbb) (wb)(wb)(wb) 两种不同的可能性。 如果我们有5个白球,则不同的方法是: (wwwwwbbbbb) (wwwbbb)(wb)(wb) (wwwb)(wbbb)(wb) (wb)(wb)(wb)(wb)(wb) 您可以按照自己喜欢的任何方式获取输入,它是一个整数。输出只是一个整数。 您的代码必须足够快,这样您才能看到完整的11个白球。 您可以使用任何喜欢的语言或库。

5
解读TwoMega
在这个挑战,你会写一个解释2 Ω(转录为TwoMega),基于松散的语言brainfuck具有无限维存储空间。 语言 2 Ω包含三个部分的状态: 的磁带,它是比特的无穷列表,全部初始化为0。它有一个最左边的元素,但没有最右元素。 的存储器指针,这是一个非负整数,它是在带的元素的索引。较高的内存指针指向更右侧的磁带单元。内存指针0指向最左边的元素。内存指针初始化为0。 该超立方体,这是一个概念性∞维“盒子”细胞,其中的每一个包含一个位初始化为0。超立方体的宽度被绑定在每一个维度为仅2细胞,但尺寸的无穷大装置的数量细胞是不可数的。 指向超立方体的索引是一个无限的位列表,它引用了超立方体中的一个单元(以与使用有限的位列表来引用一个有限维的超立方体相同的方式)。因为磁带是无限的位列表,所以整个磁带始终引用Hypercube的元素;此元素称为引用对象。 2 Ω给出意到7个不同的字符: < 将内存指针减1。将其减少到0以下是未定义的行为,因此您无需处理它。 > 将内存指针加1。 ! 翻转参考对象的位。 . 在参考对象处输出该位。 ^用引用对象的位的倒数替换磁带上的内存指针指向的单元处的位。 [x]x只要引用对象的位为1,就运行代码。 挑战 您的任务是编写一个程序,该程序将字符串作为输入,并以2Ω程序的形式执行该输入。 这是 代码高尔夫球,因此最短的有效答案(以字节为单位)将获胜。 笔记 您可以假定该程序将仅包含字符<>!.^[],并且[]将被正确嵌套。 您的解释器应仅受系统上可用内存的限制。它应该能够在合理的时间内运行示例程序。 样例程序 打印1: !. 打印010: .!.!. 永远打印0: ![!.!] 永远打印0,如果有,!则永远打印1 : [.]![!.!]

1
+-背包问题
给定一组项目,每个项目都有一个权重和一个值,请确定要包含在集合中的每个项目的数量,以使总重量小于或等于给定的限制,并且总值尽可能大。 维基百科获取更多信息 例如,您可以得到最大权重为15的对象,值/质量为的对象,[5,2], [7,4] [1,1]然后输出[7,0,1]7个[5 <value>, 2 <mass>]对象和1个[1 <value>, 1 <mass>]对象,得分为36。 规则 输入可以采用任何合理的格式 输出也是灵活的格式, 您不得使用非标准的库。如果必须安装或下载任何库使用它从初始设置则分离不容许 物体可能具有负质量和负值(即-1,-1) 需要最佳答案 获奖 最短的代码胜出 负数和价值? 这是这一挑战的关键部分。假设您有一个对象(物品,质量,值),例如[4,3],[-1,-1]一个容量为15的袋子。您可以放置​​第一个对象中的3个,得分为9,或者放置第一个对象中的4个和-1,-1中的一个对象得分为11。

22
使用最低值减少
挑战 创建一个函数,该函数接受一个数字数组,并从每个元素中减去该数组中尚未从另一个元素中减去的最低元素。 使用最小值后,将无法再次使用。 数组中的数字是十进制数字,不一定是整数。 例: Input: [6, 4, 7, 8, 9, 2, 1, 4] Next lowest value: Output: [6, 4, 7, 8, 9, 2, 1, 4] [6, 4, 7, 8, 9, 2, 1, 4] ^ ^ 6-1 = 5 [6, 4, 7, 8, 9, 2, -, 4] [5, 4, 7, …

15
最大的广场
这个问题类似于网格中的最大广场。 挑战 给定一个矩阵,该矩阵为,1并且0为字符串格式"xxxx,xxxxx,xxxx,xx.."或数组格式["xxxx","xxxx","xxxx",...],您将创建一个函数,该函数确定包含全部的最大正方形子矩阵的面积1。 正方形子矩阵是宽度和高度相等的子矩阵,您的函数应返回仅包含的最大子矩阵的面积1。 例如: 给定"10100,10111,11111,10010",这看起来像下面的矩阵: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 您可以看到粗体字1创建了最大的2x2的正方形子矩阵,因此您的程序应返回面积为4的子矩阵。 规则 子矩阵必须是宽度和高度相等的子矩阵之一 子矩阵只能包含值 1 您的函数必须返回最大子矩阵的面积 如果找不到子矩阵,请返回 1 您可以通过计算的数量计算子矩阵的区域1在子矩阵 测试用例 输入: "10100,10111,11111,10010" 输出: 4 输入: "0111,1111,1111,1111" 输出: 9 输入 "0111,1101,0111" 输出: 1 这是 代码高尔夫球,因此以字节为单位的最短答案会获胜。

3
模拟撞车
介绍 我有一些具有速度和方向的ASCII汽车。它们的速度由其数量表示。如果有汽车,<>那么它已经停止。例如: <> 1> 2> 3> 一秒钟后,我得到 <> 1> 2> 3> 两点之后,我得到 <> 1> 2> 3> 如果两辆车距离太近,它们会崩溃。 1> <1 1> <2 一秒钟后,这变成 ### ## 如果两辆汽车相交,它们将成为它们的标签。 如果一辆车的速度足以使其“跳上”另一辆车,则不会导致撞车。 3><1 2><1 4><> 变成 <13> ### <>4> 如果汽车离开屏幕,它将消失(除非发生碰撞)。汽车无法在屏幕外行驶。 <11> <1 1> 1 1> 1> 挑战 根据给定的汽车物理特性,您必须创建一个程序,该程序可以将时间推迟一秒钟。输入将是具有空间且最大速度为5(匹配正则表达式(<[1-5]|[1-5]>|<>| )+)的汽车。模拟将在一行上进行,但是该行没有固定的大小。 测试用例 <> 1> 2> 3> 4> 5> …

2
多行创建函数
我试图在多行上创建一个函数。 挑战的参数: 函数返回“野蛮人” 每行仅2个字符 最多40条线。我一直尝试使用粗箭头来声明我的功能,但是如果您未连接粗箭头,则粗箭头似乎无效。 挑战来源:https://www.codewars.com/kata/multi-line-task-plus-plus-hello-world 我目前的工作: f= ( )=> '\ b\ a\ r\ b\ a\ r\ i\ a\ n\ s\ ' 这有效,但是')=>'的长度为3个字符。我真的只想知道如何扩展功能的创建。我在任何地方都找不到任何信息,因为它显然不太实用。

5
抽象重写挑战(强盗)
这有点 证明高尔夫球-喜欢 警察和强盗挑战。这是强盗的线索。警察的线在这里。 强盗 警察将发布摘要重写系统。您的任务是通过应用重写规则来证明从源字符串可以到达或不能到达目标字符串,从而破解他们的提交。(您可以通过发布一系列以源字符串开头并以目标字符串结尾的重写规则,或者通过数学方式证明该规则存在或不存在来执行此操作。) 有关详细信息和定义,请参见警察的线程。

5
滴答奎因炸弹!
挑战: 创建一个采用整数输入的程序或函数,该程序或函数输出一个新的程序/函数,如下所示。 输入: 整数n:时间炸弹爆炸前的时间(以秒为单位)。 输出: 以秒n为单位的时间输入的原始程序将输出执行以下操作的新程序/功能: 已经n过去了秒自上次程序运行?打印BOOM! 否则:打印一个程序/函数,该程序/函数在自身运行时将计时器重置为n秒(并且与第一个输出的程序/函数相同)。 注意:它与第一个输出的程序/函数不完全相同(至少在大多数语言中是这样),因为开始时间已更改(请参见下面的说明示例)。 伪代码示例: 假设原始程序是ABC,输入是60秒: ABC&60输出DEF(60)。 如果DEF(60)在60秒内运行,它将输出DEF_G(60),其作用与DEF(60),但是具有新的开始时间。 如果DEF(60)在60秒后运行,它将输出BOOM!。 澄清示例“开始时间”的含义: 输入60秒的基本程序在处运行12:00:00。它以开始时间输出第一个输出程序12:00:00。 开始时间为的第一个输出程序在12:00:00处运行12:00:45。它以开始时间输出第二个输出程序12:00:45。 开始时间为的第三个输出程序在12:00:45处运行12:01:25。它输出开始时间为的第四输出程序12:01:25。 开始时间为的第四个输出程序在12:01:25处运行12:05:00。它将输出BOOM!。 请注意,第一个输出将BOOM!在之后输出12:01:00,但是输出程序已进行,因此即使12:01:25在第3步,它仍将输出下一个程序,而不是输出BOOM!(因为输出程序的开始时间超过了第一个输出程序) 。 挑战规则: 默认的规则是规则。 至少n应该过去几秒钟。因此,如果输入为60,开始时间为12:00:00,12:01:00则仍然会输出v2程序,但12:01:01会输出BOOM!。 输出程序将不接受任何输入(除了较短的空未使用参数外)。开始时间应以“硬编码”值的形式提供给下一个程序(这就是为什么输出程序的输出与前一个程序(在大多数语言中)不完全相同的原因。 仅以字节为单位计算主程序/功能的大小。 您可以将程序/函数输出为字符串(或相当合理的格式,例如字节/字符数组/列表),如果您的语言支持,则输出为函数,也可以输出其他合理格式(请询问您是否不确定)。 通用规则: 这是 代码高尔夫球,因此以字节为单位的最短答案会获胜。 不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能简短的答案。 标准规则适用于您的答案,因此您可以使用STDIN / STDOUT,具有正确参数的函数/方法和返回类型的完整程序。您的来电。 默认漏洞是禁止的。 如果可能的话,请添加一个带有测试代码的链接。 另外,如有必要,请添加说明。
9 code-golf  quine  date 

12
星号病毒
给定正整数N(“病毒性”),您的程序应创建一棵ASCII艺术图的树,该树的长度为N的两个分支从左上角向下和/或向右延伸。 在第一个星号之后,每个分支所采用的方向可以是向右或向下,并且此选择应在接下来的每一步中随机选择1。 例如,假设输入为5,则输出可能类似于: *** * *** ** ** 允许两个分支接触(在相邻的单元格上),但不能重叠(在同一单元格上),因此不允许以下操作: *** * * ***** * * 例子 对于input 1,唯一可能的输出是: ** * (这将出现在所有有效输出中,因为使两个分支采用相同的路径将导致它们重叠。) 输入的可能输出3包括: *** * * ** ** *** * * 输入7: **** * ** * ** * *** * 输入10: **** * * ********* * ***** 这是 代码高尔夫球,因此最短的有效答案(以字节为单位)将获胜。 1.这应该是均匀随机的(即每个方向有50/50的机会),或者与在普通硬件上获得的均匀随机接近。

30
输出一些保留字
对于计算机语言,保留字是不能用作标识符的字,例如变量,函数或标签的名称。对于其他计算机语言,可以将关键字视为语言说明的集合。 挑战 使用您选择的语言,使用所选语言编写代码,给定一个介于1到10之间的数字1<=n<=10,输出n所选语言的任何保留字(关键字)。 细节 如果选择的语言区分大小写,则输出的关键字也必须是区分大小写的。 如果所选语言不区分大小写,则输出的关键字在任何情况下都可以。 如果所选语言的关键词少于10个p,则代码必须输出和n之间的所有保留字。p10 如果可能,请在答案中指定是否将运算符视为关键字。 Java(JDK10)的可能示例 n=1 --> true n=3 --> try new interface n=4 --> continue this long break > <>的可能样本 n=1 --> > n=3 --> > < ^ n=4 --> > < \ / Brain-Flak的可能样本 n=1 --> ( n=3 --> ( ) [ ] n=9 …

2
Quarto中有多少次平局?
介绍 此挑战类似于欧拉计划问题。我之所以提出这个建议,是因为我在玩一个看似简单的棋盘游戏,却无法提出一个有效的解决方案来回答有关其机制的简单问题。 Quarto是连续4个有趣的变体。它在4 x 4板上演奏,有16个独特的乐段(没有乐段重复)。每位玩家每回合将1个棋子放在棋盘上。每块都有4个二进制特征(短/高,黑/白,正方形/圆形,空心/实心)。目标是针对四个特征中的任何一个,水平,垂直或沿2个对角线连续制作四个!因此有4个黑​​色块,4个白色块,4个高块,4个短块,4个正方形块,4个圆形块,4个空心块或4个实心块。 上图显示了完成的游戏,由于有4个正方形棋子,所以连续有四个。 挑战 在Quarto中,某些游戏可能以平局结束。 可能的最终头寸总数16!约为20万亿。 这些平局中有多少是平局? 规则 解决方案必须是一个程序,该程序计算并输出绘制的最终位置总数。正确答案是414298141056 您只能使用人工推导的游戏规则信息(无计算机辅助证明)。 可以对问题进行数学简化,但是必须在解决方案中(手动)进行说明和证明。 赢家是在CPU运行时间方面最优化的解决方案。 为了确定获胜者,我将在MacBook Pro 2.5 GHz Intel Core i7和16 GB RAM上运行每个报告的运行时间少于30m的解决方案。 提出与其他尺寸的电路板都兼容的解决方案没有任何加分。即使那会很好。 如果适用,您的程序必须在1分钟内在上述硬件上编译(以避免滥用编译器优化) 不允许默认漏洞 意见书 请发表: 该代码或指向该代码的github / bitbucket链接。 代码的输出。 您本地测量的运行时间 您的方法的说明。 最后期限 提交截止日期为3月1日,因此还有很多时间。

5
折叠式德语
给定德语字符串和大小写指示(小写/大写/标题),将字符串折叠到该大小写。 技术指标 输入仅包含a– z加号äöüß-,.;:!?'"(大写和/或小写)。 目标案例可以视为一致类型的任何三个唯一值(请指定它们是什么);三个字符或三个数字或三个位模式。(当前不允许使用其他格式来阻止将案例说明“外包”。如果您认为应该允许使用其他格式,请添加注释。) Titlecase表示除字母后的字母(字母为a– z加号äöüß)以外的所有字母均为大写。 陷阱 当ß需要大写时,它必须变为ẞ。某些折叠式内置程序和库无法执行此操作。 当ß需要为大写字母时,它必须变为Ss。某些折叠式内置程序和库无法执行此操作。 ss可能出现在文本中,并且绝对不能转换为ß或ẞ。 例子 大写die Räder sagen "ßß ss" für dich, wegen des Öls! 是DIE RÄDER SAGEN "ẞẞ SS" FÜR DICH, WEGEN DES ÖLS! 小写 die Räder sagen "ßß ss" für dich, wegen des Öls! 是 die räder sagen "ßß ss" für …


4
现在我们正在考虑n维!
的问题:给定一个数n≥2,多少不同成对的点上的n维n x n x n x n x n x n ... x n点阵,其中坐标范围从0到n - 1,是一个距离至少 n分开?成对的{(2,1,3,1), (3,2,1,3)}和{(3,2,1,3), (2,1,3,1)}不会被视为彼此不同,因为它们由相同的两个相反点组成。请注意,对的总数增长非常迅速。总对数去6,351,32 640,4 881 250,1 088 367 840,等。 测试用例: 2 -> 0 (all pairs are at most a distance of sqrt(2) < 2 apart) 3 -> 28 (They must either be (2,2,1) or …

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.