编程拼图和代码高尔夫

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

1
绘制烷烃的Lewis结构
我刚刚在学校上了一堂关于烷烃的课,并且发现这可能会给高尔夫挑战赛带来很大的挑战!不用担心,它并不像看起来那样复杂! 快速重提 (请注意:为简短起见,并非所有信息都是100%准确的。) 烷烃是碳和氢的串。每个碳原子具有4个键,每个氢原子具有1个键。烷烃的所有碳原子形成一个串,其中每个C原子与另外2个C原子(路易斯结构中的左侧和右侧)和2个H原子(上下)连接,但串的末端除外,其中C原子仅连接1个其他C,但连接3 Hs。这是戊烷(具有5个C原子和12个H原子的烷烃)的基本示例: H H H H H | | | | | H-C-C-C-C-C-H | | | | | H H H H H 烷烃也可以具有分支。但请放心,此挑战中的所有烷烃都只能用1级支链表示。例: H | H-C-H H H H | H | | | | | H-C-C-C-C-C-H | | | | | H H H H …

6
枚举N维向量
给定正整数k > 1和非负整数i,生成非负整数的k-tuple(或- k维向量)。对于每一个k,从ℕ到ℕ地图ķ,必须是双射。也就是说,每个输入i应产生一个不同的元组,并且每个可能的元组必须由某个输入产生i。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行参数或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 您可以对输出使用任何方便,明确的平面列表格式。 您的解决方案不应施加任何人为限制k,i但您可以假定它们适合您语言的本机整数大小。至少,您必须支持最大为的值255,即使您的本机整数大小也要小于该值。 对于any 1 < k < 32,您的代码应该会在几秒钟内产生一个结果(当然,如果您的答案由于先前的规则而不能支持那么大,则会相应地调整限制)。这应该是没有问题的:它可能解决这一难题,使得它的作品多达2 128在几秒钟,但上限是存在的,以避免回答这实际上从迭代来找到结果。i < 231i0i 请在您的答案中包括对所选映射的描述,以及为什么该映射是双射的(这不需要是正式证明)。 这是代码高尔夫球,最短的答案(以字节为单位)获胜。 相关挑战 从非负数生成一对整数 输出所有有理数的列表

20
制作数学竞赛评分者
我喜欢参加由美国数学荣誉学会Mu Alpha Theta举办的数学竞赛。在比赛中,我接受了30个问题的多项选择题测试。每个问题有五个选择,标记为A到E。 我在测试中的得分是,每个正确答案为4分,空白为空则为零分,每个错误答案为负1分。 编写一个程序,根据上述评分系统对测试进行评分。输入应包含两个部分:答案键和响应。留空的问题将作为空格输入。第一个输入必须仅包含字母AE(或ae,由您选择),并且可以假定输入中没有空格。第二个输入只能包含空格和字母AE(或ae)。未执行30个问题的测试的输入必须Invalid test作为输出打印。 输出应为年级或Invalid test。 奖金 如果您的程序在最终得分之后将正确打印数字,将空白打印为空白以及将错误的数字打印为(aR bB cW),则请减去20个字节。 样品输入 CABBDCABECDBACDBEAACADDBBBEDDA //answer key CABEDDABDC BACDBBAADE CBBEDDA //responses 样品输出 没有奖金 73 奖金 73 (20R 3B 7W) 适用标准规则。以字节为单位的最短代码获胜。
17 code-golf  string 

11
伽玛功能高尔夫
给定的实数t中(-10^9,13)(不包括-10^9或13)作为输入,输出Γ(t),也被称为伽玛函数,其定义如下: 您不得使用内置的Gamma函数来解决此任务,也不得使用内置的数字或符号积分函数。您的输出应精确到6个有效数字或在10^-6实际值以内,以对给定值的限制较小为准。Python的内置Gamma函数将用于确定实际值。您可能会假设Γ(t)已定义-即是t正实数或非整数负实数-且那个|Γ(t)| ≤ 10^9。这是一个参考程序,您可以使用它使用Python的内置Gamma函数来获取实际值。 例子 1 -> 1.000000 -2.5 -> -0.945309 3.14159265 -> 2.288038 -2.71828182846 -> -0.952682 12 -> 39916800.000000 0.5 -> 1.772454 8.675309 -> 20248.386956 -10.1 -> -0.000002 规则 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 禁止出现标准漏洞。 输入和输出可以以您的语言视为标准的任何方式执行。 您可以编写完整的程序,函数或通常被认为是您的语言有效答案的任何内容 排行榜 这篇文章底部的堆栈摘录从答案a)生成排行榜,答案是每种语言的最短解决方案列表,b)则是总体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: ## Ruby, <s>104</s> <s>101</s> 96 bytes 如果要在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: …

14
有趣的排列
谁不绝对喜欢排列,对吗?我知道,它们很棒-非常有趣! 好吧,为什么不把这个乐趣变得有趣呢? 这是挑战: 给定精确格式的输入:nPr,其中n是从中获取的池,r是从该池中选择的项的数量(and n和r是整数),输出/返回排列的确切数量。对于那些对术语有些生疏的人:排列,定义。2a。 但是,这是挑战发挥作用的地方(使其变得不太容易): 您不能将任何内置库,框架或方法用于您的置换功能。您可能不使用阶乘方法,置换方法或任何种类的方法;您必须自己编写所有内容。 如果需要进一步澄清,请随时在评论中告诉我,我将立即采取行动。 这是一个I / O示例: 样本函数为 permute(String) -> int 输入: permute("3P2") 输出: 6 这是代码高尔夫球,所以最短的代码胜出!

7
查找无和分区
执行摘要 给定input k,找到整数分区,1将其划分n为无k和子集,以n在10分钟内找到最大的子集。 背景:舒尔数 一组A是免费的总和,如果其自我总结A + A = { x + y | x, y in A}有没有相同的元素吧。 对于每个正整数,k都有一个最大的整数S(k),以便{1, 2, ..., S(k)}可以将集合划分为无k和子集。该编号称为第k 个 Schur编号(OEIS A045652)。 例如,S(2) = 4。我们可以将分区{1, 2, 3, 4}为{1, 4}, {2, 3},这是唯一的分区,分为两个无和子集,但是现在不能在这5两个部分中添加。 挑战 编写一个执行以下操作的确定性程序: 以正整数k作为输入 将当前的Unix时间戳写入stdout 按照当前的Unix时间戳,将每个序列的划分为1to 的一系列划分n为无k和子集,以进行递增n。 获胜者将是在n输入后10分钟内在我的计算机上打印最大分区的程序5。纽带将以最快的时间断开,以找到最大的n,平均3次运行的分区:这就是为什么输出应包含时间戳的原因。 重要细节: 我有Ubuntu Precise,因此如果不支持您的语言,我将无法评分。 我有一个Intel Core2 Quad CPU,所以如果您要使用多线程,那么使用4个以上的线程是没有意义的。 如果您希望我使用任何特定的编译器标志或实现,请在您的答案中清楚记录。 您不应对代码进行特殊处理以处理输入5。 您无需输出发现的所有改进。例如,对于输入,2您只能输出的分区n …

4
奇异硬币带来的优化挑战
您有n硬币,每个硬币的重量为-1或1。每个硬币都标有从0到的标记,n-1以便您可以区分硬币。您也有一个(魔术)称重设备。在第一轮时,您可以在称重设备上放置任意数量的硬币,该设备可以测量负重和正重,它会准确告诉您它们的重量。 但是,称重设备确实有些奇怪。如果您x_1, x_2, ..., x_j是第一次将硬币放置在设备上,则下次必须将硬币(x_1+1), (x_2+1) , ..., (x_j+1)放置在秤上,但您当然不能放置数量大于的硬币n-1。不仅如此,对于每个新称重,您还可以选择是否还要将硬币0放在秤上。 在此规则下,能始终准确告诉您哪些硬币的重量为1,哪些硬币的重量为-1的最小称量数是多少? 显然,您可以只0在第一轮中将硬币放在设备上,然后才需要精确n称重即可解决问题。 语言和图书馆 您可以使用自己喜欢的任何语言或库(不是针对此挑战而设计的)。但是,我希望能够在可能的情况下对您的代码进行测试,因此,如果您可以提供有关如何在Ubuntu中运行代码的明确说明,将不胜感激。 得分了 对于给定n的分数n,最坏情况下需要除以所需的称量数。因此,分数越高越好。这个难题没有任何输入,但您的目标是找到一个n可以获得最高分的游戏。 如果有平局,则第一个答案将获胜。在极不可能的情况下,有人找到了获得无限分的方法,该人立即获胜。 任务 您的任务只是编写得分最高的代码。您的代码必须既聪明地选择n,又要为此优化权重数n。 领先的作品 4/3 7/5在Python中由Sarge Borsch Java / 26/14的作者Peter Taylor

5
手机键盘打字
手机键盘打字 不久前有人问了这个问题,但由于规格不佳而被关闭。因此,我将以更好的规格重做它。这个问题是相关的,但方向相反。 在T9出现之前,为了在短信中输入字符,您必须多次按数字键之一才能获得所需的字符。供参考,以下是标准映射: +-------+-------+-------+ | 1 | 2 | 3 | | .?!1 | ABC2 | DEF3 | +-------+-------+-------+ | 4 | 5 | 6 | | GHI4 | JKL5 | MNO6 | +-------+-------+-------+ | 7 | 8 | 9 | | PQRS7 | TUV8 | WXYZ9 | +-------+-------+-------+ | …

2
生成一些安全的PIN
受到这个深受好评的移民职位的启发。 您公司的安全负责人会担心您的PIN生成系统给您之后12345。他也不是很欣赏您为自己付出的代价而开玩笑的太空球笑话,因此您被委托重写PIN生成器。由于它必须适合某些特殊的硬件,因此您必须使其尽可能小。 你的任务 您有两个输入-PIN数和PIN码的位数。 随机生成指定数量的指定大小的PIN 并打印出来。 即使不是统一概率,所有大小相同的有效PIN也必须能够打印出来。 但是,PIN有一些限制-这是无效的: 如果所有对都是相同的数字:(114422注意:显然,这将包括所有相同的数字PIN)。 日益线性销(MOD 10): 246802。 3所有群体的键盘上的物理线路1 2 3;4 5 6;7 8 9;bksp 0 enter;:147369。 PIN可以从规则1和规则3完全分为几组。 这是代码高尔夫球,因此以字节为单位的最短代码胜出!

14
根据国际象棋FEN字符串评估分数
挑战 福赛斯·爱德华兹符号(FEN)是一种标准符号,用于描述国际象棋游戏中特定的棋盘位置。您面临的挑战是使用FEN字符串评估分数。这是FEN字符串的示例: 5k2/ppp5/4P3/3R3p/6P1/1K2Nr2/PP3P2/8 使用此字符串,您可以使用以下得分表来计算每种颜色的材料得分: p / P =典当= 1点 n / N =骑士= 3分 b / B =主教= 3分 r / R =白嘴鸦= 5分 q / Q =皇后= 9分 k / K = King,这些没有任何意义,因为每个法律职位的每一侧都包含King 白色部分使用大写字母(“ PNBRQK”)指定,而黑色部分使用小写字母(“ pnbrqk”)指定。使用1到8的数字(空白方块的数量)标注空白方块,“ /”分隔等级。 从示例FEN字符串中,我们可以计算每一面的材料得分: 对于黑色: 5 k 2 / ppp 5 / 4P3 / 3R3 …
17 code-golf  chess 

6
乌兰螺旋之素
乌兰(Ulam)的螺旋式是一个真正令人着迷但令人困惑的数学主题。可以在这里找到它的详细工作原理,但简短的摘要可以这样解释: 我先写一个,然后在右边写一个二。在两个上方,我写三个,在左边左侧,我写四个。我继续无限循环(或直到被告知停止)围绕1(以及我与1之间的任何数字)盘旋的这种模式,形成了螺旋模式。(请参见下面的示例) 目标 制作一个程序,该程序接受n(始终为大于零的奇数)作为与行数相关的输入,然后逐行打印Ulam螺旋的素数值。格式可以是任何方式,但必须易于阅读且显而易见。 例如,给定输入3,您的程序应输出5,3,2,7,因为3行会产生以下螺旋: 5 4 3 <-- first row has the primes 5 and 3 6 1 2 <-- second row has the prime 2 7 8 9 <-- third row has the prime 7 由于这是一场代码高尔夫,因此,字节数最少的答案将获胜(无论效率如何)!标准漏洞是不可接受的。
17 code-golf  math  primes 

8
在棋盘上捕获
您应该编写一个程序或函数,该程序或函数接收代表棋盘的字符串,并仅以棋子作为输入和输出,或者返回是否可以在棋盘上进行任何捕获。 输入采用类似于FEN的表示法,描述白色和黑色棋子的位置,没有其他片段。您应该确定是否有可以捕获敌人的棋子。 每个等级都有描述,从等级8开始到等级1结束;在每个等级内,从文件“ a”到文件“ h”描述每个方块的内容。每个典当都由一个字母标识(白色典当=“ P”,黑色典当=“ p”,)。使用1到8的数字(空白方块的数量)标注空白方块,“ /”分隔等级。(部分取自维基百科) 例如 8/pppppppp/8/8/4P3/8/PPPP1PPP/8 描述董事会 -------- pppppppp P PPPP PPP -------- 如果一个黑色的棋子位于对角线的上方(黑色是左上或右上),则一个黑色的棋子可以捕获一个黑色的棋子(如果白色的棋子位于对角线的下方),则黑色的棋子可以捕获一个白色的棋子。左下或右下)。不应考虑其他捕获动作(绕过)。 输入项 一个FEN样串组成的字符12345678pP/。 输入内容描述了有效国际象棋游戏位置的棋子。这意味着(除其他更复杂的约束之外)每侧最多有8个棋子,等级1和8上没有棋子。 输出量 如果双方都有可能被捕获,则应输出真实值,否则输出虚假值。 例子 具有真实输出的输入(每行一个) 8/7p/6P1/8/8/8/8/8 8/8/p7/1P6/3P3p/8/8/8 8/2P5/8/4P1p1/2p2P2/3p4/3p1P2/8 8/P7/8/5P2/2pp4/3P2p1/3pP3/8 8/P7/p7/p1P1P3/1P3p2/8/1p6/8 8/4p1P1/2P2P1P/2p1pPpp/8/6P1/pP1p4/8 输入具有虚假输出(每行一个) 8/8/8/8/8/8/8/8 8/7P/6p1/8/8/8/8/8 8/7p/7P/8/8/8/8/8 8/pppppppp/8/8/8/8/PPPPPPPP/8 8/p7/8/1p6/5P2/8/8/8 8/p7/P7/2P1p1p1/2p5/8/PP6/8 这是代码高尔夫球,因此最短的入场券获胜。

6
颂高尔夫-信件删除
给定一个字典文件(一个文本文件,每行包含一个单词或短语,可能带有标点符号,但不带数字;行均按字母顺序排列),您必须输出单词的每种组合,其中一个单词可以从一个单词中删除以换成另一个;删除的字母应放在括号中。 例如,输入 cat cart code golf ode verify versify 应该输出 ca(r)t (c)ode ver(s)ify 获得同一对的多种方法只能显示一次。您可以输出scra(p)ped或scrap(p)ed,但不能两者都输出。 输出应按较长的条目按字母顺序排序; mart mar mat ma 应该有一个输出 ma(r) ma(t) ma(r)t mar(t) 而后两个可以是任意顺序。 词典文件可以包含大写字母,空格,连字符或撇号;这些应该被忽略。例如, inlay in-play 应该产生in(p)lay。您的输出应该全部在相同的情况下。允许额外的空格。 输入可以是STDIN或来自文件;它之间用换行符分隔。输出可以是函数或STDOUT的返回值(或根据需要写入文件)。 这是code-golf,因此以字节为单位的最短代码获胜。 (这是我在PPCG上遇到的第一个挑战-如果做错了任何事情,请告诉我,我将对其进行修复。)
17 code-golf  string 

3
切换,打印,重复
挑战来自未实施的esolang Pada。 考虑一个8位的数组,所有位都初始化为零。我们将引入一个非常简约的指令集来打印任意字符串。有两条指令,两条指令都带有一个参数N,该参数是位的索引: t N对于牛逼 oggle:这会改变位的值N。 p Nfor p rint:这会将所有8位都解释为一个字节,从bit开始N并环绕在end。与此字节对应的字符被打印到STDOUT。 让我们来看一个例子。我们要打印:=。我们天真地实现了以下目标(基于0的位索引): t 2 [0 0 1 0 0 0 0 0] t 3 [0 0 1 1 0 0 0 0] t 4 [0 0 1 1 1 0 0 0] t 6 [0 0 1 1 1 0 1 …

16
像这样打印
编写一个程序,将输入输入到STDIN,并使2k-1第一个单词的所有小写​​字母(包括重音字母)都变为大写,而第一个单词的所有大写字母(也包括带重音字母)都变为2k小写(k是一个正整数)。该程序不应影响任何单词中的任何其他字符。例如,如果字符串为Ook! O0k!,则输出应为OOK! o0k!。 当非空格字符后的空格数量非零时,将形成一个新单词。输入开头的空白应忽略。如果单词不包含任何更改的字符,程序仍应将其视为单词并继续。 样本输入(不同的输入用空白换行符分隔) Nineteen Eighty-Four (1984) Programming Puzzles & Code Golf - Hooray for Code Golf Stack Exchange! 2be or not 2be, that is the ~~~QuEsTiOn~~~ ++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++. 样本输出 NINETEEN eighty-four (1984) PROGRAMMING puzzles & code GOLF - HOORAY for CODE golf STACK exchange! 2BE or NOT 2be, THAT …
17 code-golf 

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.