编程拼图和代码高尔夫

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

1
确定Connect 4的获胜者
系统会为您提供部分填充的Connect 4网格(7x6)。 O X O X X O X O O X O X O X X O X X X O O X O O O X X O X (输入可以一维或二维数组以及字母或数字等形式给出。) 假使,假设 X开始游戏。 还没有人赢。 玩家可能直到现在还没有打得很好,但是从现在开始,他们都将采用最佳策略。 输入网格没有故障。 您必须输出一个值来指示哪个玩家获胜(或平局) 挑战高尔夫挑战赛;所以最短的代码胜出。您的程序不必在合理的时间内实际计算输出,但是您应该能够证明在有限的时间内可以正确获得输出。

1
从日期算起一个数学方程式
在我的经济学课上,我和我的朋友们想出了一些方法来重新排列日期(以MM / DD / YY格式)中的数字,以创建有效的数学方程式。在大多数情况下,除级联外,我们还可以使用加,减,乘,除,括号和幂运算。 您的程序应该执行类似的操作。该程序应导入当前日期并插入运算符以根据以下规则打印表达式。 必须按顺序使用数字。不允许重新排列数字。 结果表达式必须在数学上准确。 允许加,减,乘,除,取幂和使用括号。数字的串联也是如此。但是,并非所有操作都是必需的。您不能使用减号使数字为负(例如-1+1+11=102010年11月11日)。 该程序必须在标准计算机上运行60秒。 例如,此挑战写于2015年11月10日。程序会将其解释为11/10/15。样本输出为(1+1)/10=1/5。 奖金 对于程序支持的以下每个选项,您可以将代码中的字节数乘以0.9。 该程序将打印所有可能形成的表达式,并用换行符分隔。如果以附加符号的升序列出表达式,则再乘以0.95。 该程序还适用于MM / DD / YYYY日期,除了可能的日期外,还可以打印年份的前两位数字。如果该奖金与第一笔奖金相结合,则必须打印出该年份的前两位数字的所有可能性。 该方案还打印当有多个等式用于方程(例如,11月11日,2011,1=1=1=1=1=1将被印刷的,除了可能性,例如1*1=1=1=1=1,1*1*1=1=1=1,和1*1*1*1=1=1。所有这样的情况下必须打印为所要达到的第一奖励。 该程序支持转换为2到16之间的基数。请注意,如果基数不是10,则表达式中的所有数字都必须以相同的基数 (Base b)编写,并且必须在表达式之后编写(并相应地b替换)。 这是代码高尔夫球,因此适用标准规则。以字节为单位的最短代码获胜。

21
产生一个XOR表
介绍 XOR是实现异或的数字逻辑门。大多数情况下,显示为^。二进制可能出现的四种结果: 0 ^ 0 = 0 0 ^ 1 = 1 1 ^ 0 = 1 1 ^ 1 = 0 这也可以看作二进制的加模2。在十进制中,我们需要将十进制转换为二进制,35 = 100011然后25 = 11001。为了计算XOR值,我们将它们彼此叠加: 100011 11001 ^ -------- 111010 = 58 in decimal 任务:给定大于1的整数N时,输出大小为N + 1的XOR表。例如,N = 5: 0 1 2 3 4 5 1 0 3 …

19
卢卡斯-纳奇数
背景 大多数人都熟悉斐波那契数 F(n): 0、1、1、2、3、5、8、13、21 ... 这些由F(n) = F(n-1) + F(n-2)与F(0)=0和的递归函数形成F(1)=1。0000 一个密切相关的序列是卢卡斯数 L(m): 2、1、3、4、7、11、18、29 ... 这些由L(m) = L(m-1) + L(m-2)与L(0)=2和的递归函数形成L(1)=1。0000 我们可以根据偶数/奇数索引在两个序列之间进行交替,并使用 A(x) = F(x)if x mod 2 = 0和A(x) = L(x)else 的构造。例如,A(4)等于F(4)以来4 mod 2 = 0。我们称这个序列中的卢卡斯- nacci号码,A(x): 0、1、1、4、3、11、8、29、21、76 ... 这可以通过递归函数来形成A(x) = 3*A(x-2) - A(x-4)与A(0)=0,A(1)=1,A(2)=1,和A(3)=4。005 挑战 给定输入n,输出n+1直至和包括A(n)如上所述的数字序列。最小字节(或等效字节,例如对于LabVIEW,由Meta分别确定)获胜。 输入项 单个非负整数 n。 输出量 对应于Lucas-nacci数字从A(0)到的子序列的数字列表A(n)。如上所述,列表必须按顺序排列。 …

6
反向Boustrophedon文字
Boustrophedon是一种双向文本,其中连续的行在从左到右和从右到左的阅读之间交替。字符方向也相对于读取方向是镜像的。在反向牛头文字书写系统中,字符被旋转180,而不是镜像。 挑战 编写一个程序/函数,该程序/函数接受文本字符串和许多列,然后将格式设置为指定数目的列的字符串输出,并将其交替上下翻转。 输入项 您的程序应接受两个参数: S,要格式化的文本字符串 N,列数 输出量 您的程序应输出N列包裹的S,并交替翻转180度。 第一行的读取方向始终是从左到右。 不必担心在何处放置换行符,可以在任何字符处分割行,而无需添加单词。 您可能会假设输入字符串将不包含任何换行符。 以下是程序在翻转时应支持的字符: Uppercase: ABCDEFGHIJKLMNOPQRSTUVWXYZ ∀qƆpƎℲפHIſʞ˥WNOԀQɹS┴∩ΛMX⅄Z Lowercase: abcdefghijklmnopqrstuvwxyz ɐqɔpǝɟƃɥᴉɾʞlɯuodbɹsʇnʌʍxʎz Punctuation: &_?!"'., ⅋‾¿¡„,˙' 测试用例 S: The quick brown fox jumps over the lazy dog. N: 30 Output: The quick brown fox jumps over ˙ƃop ʎzɐl ǝɥʇ S: Lorem ipsum dolor sit …

15
命理计算器
这项挑战的目标是从包含字符和数字的字符串中计算一种命理数字。 输入可以通过任何方便的方法(标准输入,参数,分隔的文件)。 该输入可以包含任何可打印的ASCII字符,而只是字母数字(A-Z,a-z,和0-9)必须被考虑。 如果找不到字母,也没有数字,则输出必须是介于1和之间的数字,9或者是星号*...(或即使0输入中包含任意数量的0 ,也没有其他内容,但这无关紧要)。 字母值以这种方式映射: 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z 的命理位是通过将串的每个值来计算,然后重复,直到只有一个数字。样本13579,Hello, world!,00 0 00,!@#$%^&*();,和3.141592: 13579 => 1 + 3 …
19 code-golf 

18
从输入字符串中删除n个以上连续的元音
我不喜欢连续三个以上元音的琴弦。您可以编写一个程序从单词中删除所有我不需要的元音吗? 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行自变量或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 输入是仅包含可打印ASCII字符(包括0x20至0x7E)的字符串。 输出是一个字符串,其中最多只能包含3个连续的元音。如果输入字符串中连续运行的元音超过3个,则程序应生成一个输出字符串,其中包含该运行中遇到的前三个元音,并丢弃其他任何连续的元音。 对于此挑战,Y不是元音。 这是代码高尔夫,所以最短的代码(以字节为单位)获胜。 测试用例 "Aeiou" => "Aei" "screeeen" => "screeen" "We're queueing up for the Hawaiian movie." => "We're queung up for the Hawaiin movie." "Spaces break runs: aei iou." => "Spaces break runs: aei iou."
19 code-golf  string 

19
反向和平方
在此挑战中,您将根据好奇的序列计算数字。 您的输入是一个十进制非负整数。反转此整数中的位,然后对数字求平方即可得到所需的输出。 反转位时,不得在输入中使用任何前导零。例如: 26 (base 10) = 11010 (base 2) -> 01011 (base 2) = 11 -> 11*11 = 121 此序列的前25个输入/输出: 0: 0 1: 1 2: 1 3: 9 4: 1 5: 25 6: 9 7: 49 8: 1 9: 81 10: 25 11: 169 12: 9 13: 121 14: …

2
Koopa Shell序列
在各种《超级马里奥》游戏中,绿色和红色的 Koopa Troopa弹壳可以在平坦表面上无摩擦地滑动,并破坏挡在途中的砖块。当壳碰到砖块时,块破裂,将其变成空白空间,而Koopa壳反转方向。例如,在这里观看红色外壳。 假设“超级马里奥”级别只有一个街区高,并且每个网格单元都是砖块或空白空间,但最左边的单元包含向右移动的外壳。该关卡也是周期性的,因此,如果壳退出该关卡的右边缘或左边缘,它将在另一侧重新进入。在这种情况下,壳将继续弹起并破坏该关卡中的所有砖块,直到不再有。最后一块砖块破裂后,壳会走多远? 挑战 编写一个包含非负十进制整数的程序或函数。这个数字以二进制形式表示,没有前导零(唯一的例外是0本身),对一个块的高级布局进行编码。A 1是砖块,a 0是空白空间。 Koopa外壳插入到水准仪的最左边缘,并且最初向右移动。例如,与输入关联的级别39为 >100111 因为100111是二进制39,以及>和<右表示和左侧分别移动壳。 一旦最后一块积木(aka 1)损坏,您需要打印或返回壳体行进的总距离。 对于输出39IS 7和水平看起来像这样的变化: Level Cumulative Distance >100111 0 <000111 0 >000110 0 0>00110 1 00>0110 2 000>110 3 000<010 3 00<0010 4 0<00010 5 <000010 6 000001< 7 000000> 7 <-- output 类似地,输出为6IS 1: Level Cumulative Distance >110 …

2
女士们,做点数学吧!
运算顺序PEMDAS是数学中的基本规则,它告诉我们应该执行哪些顺序运算: “括号,指数,乘法和除法以及加法和减法” 问题是,PEMDAS不是很通用!如果您想以其他顺序执行该怎么办?我们不会把括号弄乱,所以我们将它们放在第一个位置。 创建一个带有两个参数的程序: 一个字符串,告诉操作应该遵循的顺序。一些例子是"DAMES","SAD, ME","ME SAD","MEADS"。是的,空格和逗号都可以,因为这样可使顺序更容易记住。 在聊天中遵循以下建议:支持空格和逗号现在是可选的。 如果其中一个字母丢失,或者还有其他不应该出现的字母,则可以认为输入无效,并根据需要对其进行处理。 字符串或包含应求值的表达式的表达式。 以十进制数或整数形式返回表达式的结果。如果答案不是整数,则必须以十进制数形式返回。 规则: 如果您的语言更简单,可以将两个输入参数合并为一个。 它不必是字符串,但必须有字母。您不能将Addition替换为1,Division替换为2,依此类推。 您可以选择第一个输入。 该表达式从右到左从左到右求值。(规则的更改。在开始的12小时内,具有相反方向的所有提交者将被接受)。 这些操作使用以下符号:( ) ^ * / + -。例如,您不能使用¤代替+添加。 输入表达式中的空格无效作为输入 如果一元+/-直接在+或-后面,则该输入无效。考虑3+-2为无效的输入。可以按照您喜欢的方式对待它(不必产生错误)。如果+或-跟随除加号或减号之外的任何其他运算符,则按通常的方式处理:3*-3 = -9,sin(-2)=-0.909 该程序必须严格遵循字母,so "EMDAS", 1-3+4 => -6和"EMDSA", 1-3+4 => 2。 例子: Input: "EMDAS", "3+6*2/4-1" // -> 3+12/4-1 -> 3+3-1 -> 6-1 -> 5 Output: 5 …

11
计算向量的有界累积和
向量的累加总和可以通过简单地取所有先前元素的总和来计算。例如: vec = [1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1] cum_vec = [1 2 3 2 1 0 -1 -2 -1 0 1 2 1] 现在,施加一个上限和一个下限,这意味着如果累加总和处于上限,则停止增加,而如果累加总和处于下限,则停止减小。一个简单的例子: upper_lim = 2 lower_lim = -1 vec = [1 1 1 -1 -1 -1 -1 -1 1 1 …

30
分数混合不正确
分数混合不正确 在此挑战中,您将把带分数转换成不正确的分数。 由于不正确的分数使用较少的数字,因此您的代码将需要尽可能短。 例子 4 1/2 9/2 12 2/4 50/4 0 0/2 0/2 11 23/44 507/44 规格 您可以假设输入的分母永远不会为0。输入将始终采用x y/zx,y,z为任意非负整数的格式。您无需简化输出。 这是代码高尔夫球,因此以字节为单位的最短代码获胜。

10
投币时间旅行者
将来,当“时光旅行”(Time Travel,简称TT)盛行时,抛硬币将成为一种严肃的思想运动。为了为未来做准备,我们为参赛作品创建了竞赛,从参赛作品的角度出发,时空旅行将真正发生。 比赛是循环式的山丘之王,由Java类之间的抛硬币比赛组成。 投币比赛规则 有两个玩家和100个回合。 在每一轮中,掷出一枚硬币,并且根据结果一名玩家得到1分。每个玩家都有50%的机会得分。 投掷后,两个玩家都有机会通过拉杆来控制时间。 如果您拉动蓝色手柄(回位限位器),则无法对使用该手柄的那一轮或之前的任何一轮进行TT操作。TT尝试进行这些回合不会产生任何效果。 如果您拉动红色手柄(还原器),则尝试将时间还原为前一轮。如果成功,则在选择的回合之前,对手的记忆将恢复到其记忆,并且从选择的回合开始的抛硬币结果也将被删除。对于您的对手来说,唯一可能的关于TT的信号是其未使用的操纵杆数量,这些数量不会恢复原状。 比赛开始时,每位球员有5个蓝色和20个红色未使用的操纵杆。这些杠杆不受TT的影响。 如果在第100局结束时没有TT,则游戏结束,得分较高的玩家获胜。 细节 轮次具有从1开始的索引(形式1至100)。 回合之前x,向您提供了可用的蓝色和红色杠杆数量,抛硬币的结果一直到x(包括)回合为止,并且记忆了您的(最后一个)x-1回合。 一圈拉动蓝色操纵杆将x停止在目的地x或之前有目的地的所有TT (如果它也发生在同一确切的回合中,则会阻止TT)。 恢复到一轮x意味着下一轮将是一轮x。 如果两个玩家都选择在回合结束时还原,则时间将还原到未被阻止的较早目的地。尝试还原到此时间的播放器将保留其记忆。 技术细节 您应该编写实现提供的Bot接口的Java类。 将您的机器人添加到项目中。 将Bot的实例添加到Bot文件中的Controller.java。 您的班级不应在通话之间保留信息。(在大多数情况下,只有final函数外部的变量才能满足此要求。) 您可以在memory返回Action对象的字段中向控制器提供信息。如果未发生任何TT,这将在下一轮退还给您。如果发生TT,您将收到相应的较早记忆。 您可以使用该类的totalScore()方法Game来获取历史记录字符串的分数。 协议 在任何时候都takeTurn(...)使用5个参数调用您的方法: 未使用的蓝色杠杆数 未使用的红色杠杆数量 抛硬币的历史记录,一个由1和0组成的字符串,表示您在前几轮中的得失。第一个字符对应于第一次掷硬币。(在第一轮中,字符串的长度为1。) 字符串,您上一轮存储的内存 本轮基于1的索引 在任何时候,您的方法都会返回一个Action包含 move描述您的操作的字段中的整数: 0 不采取行动 -1 拉一个蓝色的杆并阻止TT通过本轮 一个正整数x,不大于当前的回合,以拉动红色杠杆并尝试恢复为回合x 无效的整数被视为0。 一个字符串,其中包含您要保留的这一轮记忆。请注意,存储内存并不是挑战的关键部分。您可以进行良好的输入,而无需在字符串中存储任何有用的数据。在第一轮中,该字符串将为空字符串。 在一场比赛中,您的方法平均每轮不超过10毫秒。 定期超过时限会导致失格。 计分 赢得一场比赛均获得2分,而两人平局则获得1分。损失不赚分。 机器人的分数将是其收集的总分。 每对参赛者之间进行比赛的次数将取决于参赛作品的数量及其速度。 发布了两个简单的示例机器人作为答案。 控制器和前几个机器人在这里可用。 在11月3日之前提交的机器人测试结果: …

1
避免急剧下降!
背景 几个月前,您的人生冒险才刚刚开始。现在,在这个确切的时刻(是的,现在),经过几个月的苦难和辛勤工作,您和一群朋友正站在世界之巅。是的,你是对的,你在萨加玛塔山的山顶上。 但是,事情进展得并不理想。浓雾笼罩着您,一场令人难以置信的糟糕风暴即将来临。您没有在向上固定任何绳索,并且脚印已被雪覆盖。如果要生存(至少到今天为止),则需要尽快离开那里,但是您必须首先找到一种方法来知道那座山的哪一面应该降落。 幸运的是,您带来了旅行前修改过的卫星电话,因此您可以在其中编程和执行程序。 挑战 您已经能够以ASCII老式,无法在世界顶上看的方式将山脉的地图下载到手机上。您的任务是确定哪座山面的下降最容易,因此您可以增加生存的机会。为此,您有一个绝妙的主意,那就是在手机上编写一个程序,该程序将告诉您最简单的方法。(免责声明:这些活动是由专业人员完成的。在叙述中没有程序员受到伤害。请不要在家中尝试。) 地图仅由字符/和\(以及空格和换行符)组成。在任何地图中,山顶始终以 /\ \/ 从山顶的每一侧(1,2,3或4),您总会在山上找到“可能”的方式。 1 /\ 2 3 \/ 4 路线总是以以下方式显示: \ Steep-> / / / / <-Flat / \ Flat-> \ \ / \ <-Steep /\ \/ 每个新角色都位于其前任角色的左/右位置。每个字符的含义是: 如果斜线/反斜线与其顶峰侧平行->视为“陡峭”部分。 如果斜线/反斜线垂直于其顶峰侧->视为“平坦”部分。 *有关更多参考,请参见上图。 注意:边的长度可以不同,构成峰顶的字符也算作边的一部分。万一抽签,您可以选择其中任何一个。 不允许出现标准漏洞。 输入项 代表山脉地图或包含相同信息的纯文本文件的字符串。 要么 C:\....\file.txt 要么 \ / / / / …
19 code-golf 

12
我看到了即将到来
编写一个使用大于1或小于-1的整数的程序或函数。也就是说,输入将不是0、1或-1。 如果输入为2,则输出应为: |\_/| |___| 如果输入为3,则输出应为: |\_/\_/| |______| 如果输入为4,则输出应为: |\_/\_/\_/| |_________| 对于较大的输入,该模式以相同的精确方式继续。例如,如果输入为10,则输出应为: |\_/\_/\_/\_/\_/\_/\_/\_/\_/| |___________________________| 如果输入为-2,则输出应为: ____ | | |_/\_| 如果输入为-3,则输出应为: _______ | | |_/\_/\_| 如果输入为-4,则输出应为: __________ | | |_/\_/\_/\_| 对于较小的输入,该模式以相同的精确方式继续。例如,如果输入为-10,则输出应为: ____________________________ | | |_/\_/\_/\_/\_/\_/\_/\_/\_/\_| 输出可以打印或作为字符串返回,并带有可选的尾随换行符。负输入的输出的右上角“空”角可能是空格,也可能保持为空。 以字节为单位的最短代码获胜。

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.