编程拼图和代码高尔夫

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

25
代码高尔夫:排列
编写一个函数,该函数接受一组整数(可以是列表,数组或任何其他具有不同数字的容器)作为输入,并输出所有其排列的列表。 Python(95个字符): p=lambda s:s and sum(map(lambda e:map(lambda p:[e]+p,p(filter(lambda x:x!=e,s))),s),[]) or [[]] 用相同的语言击败真是太好了,但是其他语言的实现实在值得欢迎!

8
最快的数独求解器
找到优胜者 好像我们有赢家!除非有人计划与世界上最快的数独求解器竞争,否则用户53x15会以惊人的快速解算器Tdoku获胜。对于仍在使用其求解器的任何人,我将在有时间的时候仍然对新提交的内容进行基准测试。 挑战 数独游戏的目标是用数字1-9填满棋盘,每个单元格中填入一个数字,这样每一行,每一列和每个盒子只包含一个数字。数独难题的一个非常重要的方面是应该只有一个有效的解决方案。 挑战的目标很简单,您应该尽快解决数独难题。但是,您不仅会解决任何旧的Sudoku问题,而且还将解决存在的最困难的Sudoku难题,即17线索Sudokus。这是一个例子: 规则 语言 您可以自由使用任何语言。如果我没有使用您的语言安装的编译器,则应该能够提供安装在Linux上可以运行脚本的环境所需的一组命令行说明。 标杆机 该基准测试将在Dell XPS 9560、2.8GHz Intel Core i7-7700HQ(3.8GHz增强)4核,8线程,16GB RAM上运行。GTX 1050 4GB。该机器运行Ubuntu 19.04。这是uname输出,任何有兴趣的人。 Linux 5.0.0-25-generic #26-Ubuntu SMP Thu Aug 1 12:04:58 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux 输入项 输入将作为文件给出。可以在这里找到。该文件包含49151个数独难题。文件的第一行是拼图的数量,其后每行长81个字符,代表一个拼图。未知细胞是0,已知细胞是1-9。 您的程序应该能够将文件名作为参数,或者具有来自STDIN的文件输入,以便于手动检查解决方案。请提供有关程序如何输入的说明。 时间/计分 通过评论中的讨论和一些反思,评分标准已更改为您整个程序的时间。即使在官方评分中,您的程序也应生成具有正确哈希值的输出文件。这不会干扰任何现有解决方案,也不会改变目前的排名。对计分系统的任何想法都将受到赞赏。 如果两个解决方案的单次运行得分相似,则我将运行多个基准测试,平均时间为最终得分。如果平均分数相差不到2%,我会认为这是平局。 如果您的解决方案运行时间超过一个小时,则不会获得正式评分。在这种情况下,您有责任报告其运行所在的计算机以及您的分数。对于优化的求解器,这应该不是问题。 编辑:引起我注意的是,尽管困难重重,但摆在眼前的问题并不是最困难的。如果有时间,我将尝试将此处介绍的解决方案与较难的难题组合进行基准测试,并将分数添加到每个提交的内容中。但是,这并非官方评分,只是为了好玩。 验证 您的解决方案将通过MD5 / SHA256校验和进行验证。您的脚本应该能够生成包含所有难题及其解决方案的文件。但是,该文件也将被手动检查,因此请勿尝试获取哈希冲突。您的输出文件应匹配: MD5:41704fd7d8fd0723a45ffbb2dbbfa488 SHA256:0bc8dda364db7b99f389b42383e37b411d9fa022204d124cb3c8959eba252f05 该文件将采用以下格式: <num_puzzles> <unsolved_puzzle#1>,<solved_puzzle#1> …

30
e的近似值
我们都知道,用麦克劳林级数展开式可以近似地表示出用e表示的欧拉数对某些变量x的幂次: 通过让x等于1,我们得到 挑战 通过输入N,以任何近似欧拉数的语言编写程序,并计算第N个项的级数。注意,第一项的分母为0 !,而不是1 !,即N = 1对应于1/0!。 计分 字节数最少的程序获胜。

24
十针保龄球得分-世界保龄球版
世界保龄球计分 许多人去了当地的保龄球中心打了几场保龄球,而且许多人仍在努力计算分数。世界保龄球馆引入了简化的计分系统,以吸引更多的人参加这项运动。该计分系统用于国际比赛。 计分系统的工作方式如下(来自Wikipedia): 世界保龄球计分系统(称为“当前帧计分” [32])按以下方式授予图钉: 罢工:30(无论随后的掷骰结果如何) 备用:当前帧的第一卷上有10多个掉落 打开:当前帧的总落差 如果您不熟悉十针保龄球,这里有个回顾。 保龄球道的尽头有10个插脚,目标是用保龄球将它们全部击倒。您得到2卷球来尝试将它们全部击倒,最好是在第一卷时将它们全部击落(称为打击)。如果确实有罢工,则说明该帧已经完成,您无需再次掷球。罢工价值30。 如果您没有全部淘汰十人,您将获得一卷。如果您击倒所有其余的引脚,则称为备用。得分价值10针+第一卷击倒的针数。例如,如果我击倒7个针脚,然后设法击倒其余3个针脚,那将值17。 如果在第二次掷骰后未能击倒全部十个骰子,则称为开架。得分值相当于该帧被击倒的引脚总数。 一个游戏中有10帧。如果您熟悉传统的保龄球计分,那么在第10帧中,World Bowling Scoring并不会增加您的得分。在传统的保龄球计分中,需要12次连续击球才能获得300分的完美分数,而世界保龄球计分仅需要连续10次击球。 挑战 您的挑战是从分数表中计算给定值的分数。 在得分表上,未命中用破折号(-),带X的罢工和带斜杠(/)的备用项表示。如果这些都不适用,那么落下数量将简单地用数字(1-9)表示。犯规和分裂也会记录在得分表上,但是您不必担心这些。 输入项 系统会为您提供一个字符串,其中包含每帧的乐谱,总共有10帧。每个帧最多可以有两个值,如果有罢工,则每个帧将只有1个值。您的输入可能是函数的字符串参数,是从文件中还是从STDIN中读取的。 例如,如果我在第一卷上按了1个销,然后按了2个,则框架看起来像“ 12”。这并不意味着12(十二),而是意味着1和2,总计为3。 如果我错过了两个滚子(装订线球)的每个销钉,它将看起来像这样的“-”(0分)。 每个帧将由一个空格分隔。 样品输入 -- 9- -9 X -/ 8/ 71 15 44 X 为了分解这个例子, 框架1(-)-两个投掷都错过了。得分0 帧2(9-)-第一局9落败,第二局错过。得分9 赛局3(-9)-第一局全败,第二局9分。得分9 赛局4(X)-强袭,淘汰了全部10人。得分30 框架5(-/)-备用,第一个错过全部,第2个落下全部失败。得分10 + 0 = 10 框架6(8 /)-备用,第一卷上有8根针,第二卷上的另一根被击倒。得分10 + 8 = …

16
Sigmafy表达
对于那些不知道的人,Sigma 是希腊字母,在数学中被大量用作求和符号。给定一个表示根据表达式的字符串,我们将表示È (ķ ),计算结果之和为È (ķ ),对于每个ķ ∈ { 1 ,2 ,3 ,4 ,5 }。简而言之,您应该找到S使得:kkkE(k)E(k)E(k)E(k)E(k)E(k)k∈{1,2,3,4,5}k∈{1,2,3,4,5}k\in\{1,2,3,4,5\}SSS S=∑k=15E(k)S=∑k=15E(k)S=\sum^5_{k=1}E(k) 表达式的示例:E(k)=k2+k2E(k)=k2+k2E(k)=\frac k 2 + k^2 眼镜 您可以保证: 该表达式有效,因此不包含任何错误,并且取决于所选择的语法(例如:如果仅支持2*k,则不会存在2k) 只能在结果中定义值,因此不会出现1/0,inf或之类的值nan 您可以假定上面的表达式适合您选择的编程语言的限制,因此不会导致溢出或任何其他与限制有关的错误 k可以选择其他任何非空白ASCII字符代替 您的程序必须支持以下操作: 此外(+,plus(),add(),sum()) 减法(-,minus(),subtract()) 幂(**,^,pow()或他人,应注明),与负基地和指数支持 平方根的形式sqrt(k),k^0.5,k**0.5,或者其他但是你想 乘法与除法 提交可以是完整程序,也可以是函数,同时提及其用法 输出时允许任何尾随/前导空格 最低精度:2位小数 测试案例(带有k) +---------------+--------------+ | Input = E(k) | Output | |---------------+--------------| |2*k | 30 | |---------------+--------------| …

30
尝试做一个正方形!
任务 给定一个非空白可打印字符,对该输入进行3x3正方形表示。例如,如果输入为#,则输出为: ### # # ### 规则 输出格式是严格的,尽管允许使用尾随换行符。这意味着中间需要空格,并且需要分隔三行的两个换行符。 测试用例 输入: # 输出: ### # # ### 输入: A 输出: AAA A A AAA 输入: 0 输出: 000 0 0 000 计分 这是代码高尔夫球。以字节为单位的最短答案将获胜。

9
莱文施泰因邻居
最平方数具有至少1个不同的平方数与它们的Levenshtein距离正好1.对于一个给定的正方形,每个满足该条件被称为正方形的Levenshtein邻居的。例如,是Levenshtein的邻居,因为只需要1次编辑()。但是,不是Levenshtein的邻居,因为它至少需要进行2次编辑。具有前导0的数字()不是 Levenshtein邻居。Xxxx 36 16 1 → 3 64 16 2025 → 025Xxx3636361616161 → 31→31 \to 36464641616162025 → 0252025→0252025 \to 025 您的任务是将平方数用作输入,并以任何合理的格式输出Levenshtein邻居的完整列表。如果愿意,您可以在列表中包括重复的邻居,但是您可以不包括原始输入,因为它本身不是Levenshtein邻居。 任何合理的格式都应在输出之间包含某种分隔符(例如,或换行符),并且可以输出具有相应Unicode值(即Brainfuck)而不是数字本身的字符。输出的顺序无关紧要。 此输入将始终是大于的平方数。您的程序应该没有理论上的限制,但是如果由于实际原因(例如超过32位数字)而导致大量失败,那就完全可以了。000 如果输入没有任何Levenshtein邻居,则输出必须清楚地反映这一点,例如不输出任何内容,空数组/字符串,负整数,等。000 这是code-golf,因此以字节为单位的最短代码获胜。 测试用例 这些是到的平方的结果:1个11202020 1: 4, 9, 16, 81 4: 1, 9, 49, 64 9: 1, 4, 49 16: 1, 36, 169, 196 25: 225, 256, 625 …

20
重新排列矩阵两次
您将得到一个平方矩阵,以及一个长度为的列表(或向量),包含数字到(或到)。您的任务是根据指定的顺序对矩阵的列和行重新排序。n×nñ×ñn \times nA一种Auüunñn11个1nñn000n−1ñ-1个n-1A一种Auüu 也就是说,你将构造一个矩阵其中个元素是第元件。您还应该输出该动作的逆函数;即,第(i,J)个元素将在位置结束在一个新的矩阵。B乙B(i,j)(一世,Ĵ)(i,j)(u(i),u(j))(ü(一世),ü(Ĵ))(u(i),u(j))A一种AA一种A(u(i),u(j))(ü(一世),ü(Ĵ))(u(i),u(j))CCC 例如,假设A=⎡⎣⎢112131122232132333⎤⎦⎥,u=[312]一种=[111213212223313233],ü=[31个2]A = \begin{bmatrix} 11 &12& 13 \\ 21& 22& 23 \\ 31& 32& 33 \end{bmatrix},\quad u=\begin{bmatrix}3 & 1 & 2\end{bmatrix} 输出应为B=⎡⎣⎢331323311121321222⎤⎦⎥,C=⎡⎣⎢223212233313213111⎤⎦⎥乙=[333132131112232122],C=[222321323331121311]B = \begin{bmatrix}33 & 31 & 32 \\ 13 & 11 & 12 \\ 23 & 21 & 22 \end{bmatrix},\quad C= \begin{bmatrix}22 & 23 & 21 …

12
LípínguapuadopoPêpê
“LínguadoPê”(或P语言)是在巴西和葡萄牙与葡萄牙语一起使用的语言游戏。它也以其他语言(例如荷兰语和南非荷兰语)而闻名。(维基百科) 这个语言游戏中有一些方言。玩游戏时使用的不同语言甚至都有自己独特的方言。有些人会说流利的P语言,最好的人甚至可以当场将任何文本翻译成他们喜欢的方言! P语言 在此挑战中,我们将使用双向通话方言。 要将文本翻译成P语言,文本中的任何元音序列都附加一个p字符,后跟该元音序列的副本。 挑战 编写一个接受字符串作为输入并以P语言输出其翻译的函数或程序。 输入仅包含可打印的ASCII字符。 输出仅包含翻译后的输入和可选的尾随换行符。 元音是以下任何字符aeiouyAEIOUY。 元音序列由任何其他字符定界。该字符串"Aa aa-aa"具有三个元音序列。 可以选择从翻译的输出字符串中省略前导和尾随空格。 例子 "" => "" "Lingua do Pe" => "Lipinguapua dopo Pepe" "Hello world!" => "Hepellopo woporld!" "Aa aa-aa" => "AapAa aapaa-aapaa" "This should be easy, right?" => "Thipis shoupould bepe eapeasypy, ripight?" "WHAT ABOUT CAPS?" => "WHApAT …
20 code-golf  string 

11
使所有方块爆炸
您将得到一个宽度为的方阵,其中包含平方数。≥2≥2\ge2≥1≥1\ge1 您的任务是使所有平方数“爆炸”,直到它们都消失。您必须打印或返回最终矩阵。 进一步来说: 在矩阵中寻找最高的平方。x2x2x^2 寻找其最小的相邻邻居(水平或垂直且不环绕)。nnn 将替换为,将替换为。x2x2x^2xxxnnnn×xn×xn\times x 重复从步骤1开始的过程,直到矩阵中不再有正方形为止。 例 输入矩阵: (62519636324)(62536196324)\begin{pmatrix} 625 & 36\\ 196 & 324 \end{pmatrix} 最高的正方形爆炸成两个部分,并与最小的邻居合并,变成:625625625625−−−√=25625=25\sqrt{625}=2536363636×25=90036×25=90036\times 25=900 (25196900324)(25900196324)\begin{pmatrix} 25 & 900\\ 196 & 324 \end{pmatrix} 最高的方块爆炸并与最小的方块合并:900900900252525 (75019630324)(75030196324)\begin{pmatrix} 750 & 30\\ 196 & 324 \end{pmatrix} The highest square 324324324 explodes and merges with its smallest neighbor 303030: (75019654018)(75054019618)\begin{pmatrix} …
20 code-golf  matrix 

8
在圆环上循环
挑战 这一挑战将让你写一个程序,它在两个整数n和m输出的数量不相交的环n通过m由开始做圆环(0,0),只有采取措施,并在右边。您可以将环面视为顶部和底部以及侧面均具有环绕效果的网格。 这是代码高尔夫球,因此最少的字节获胜。 例 例如,如果输入为n=m=5,则一个有效的步行路线为 (0,0) -> (0,1) -> (0,2) -> (1,2) -> (2,2) -> (2,3) -> (2,4) -> (2,0) -> (3,0) -> (4,0) -> (4,1) -> (4,2) -> (4,3) -> (0,3) -> (1,3) -> (1,4) -> (1,0) -> (1,1) -> (2,1) -> (3,1) -> (3,2) -> (3,3) -> (3,4) …

16
古巴总理
给定自然数,返回第个古巴质数。nñnnnn 古巴Prime 古巴素数是形式的素数 p=x3−y3x−yp=x3−y3x−yp = \frac{x^3-y^3}{x-y} 其中且或y>0y>0y>0x=1+yx=1+yx = 1+yx=2+yx=2+yx = 2+y 细节 您可以使用最适合您的索引(基于0或1)。 您可以返回给出的指数个主要或第一按升序排列的素数,或者你可以返回一个无限列表/发电机产生递增的顺序的素数。nñnnñnnñn 测试用例 前几个术语如下: (#1-13) 7, 13, 19, 37, 61, 109, 127, 193, 271, 331, 397, 433, 547, (#14-24) 631, 769, 919, 1201, 1453, 1657, 1801, 1951, 2029, 2269, 2437, (#25-34) 2791, 3169, 3469, 3571, 3889, 4219, 4447, …

8
爱丽丝的第一个代码审查
爱丽丝是一家公司的实习生,该公司使用Brainfuck作为客户端和服务器端开发的主要语言。爱丽丝(Alice)刚刚编写了她的第一个代码,在为第一次代码审查做准备时,她有点紧张。 爱丽丝(Alice)希望使代码正确格式化并看起来不错,但是她没有时间阅读328页的公司代码样式指南,因此她决定将其格式化为一个完美的正方形。code,代码长度可能不足以形成正方形,因此她决定在中间留一个矩形间隙。间隙必须完全居中,并尽可能接近正方形。 例子 ++++++ +++++ +++++ +++++ +++++ +++++ ++++++ +++++ +++++ + ++ ++ ++ +++++ ++++++ ++ ++ + + + ++ + + ++++++ +++++ +++++ +++++ ++ ++ +++++ ++++++ +++++ +++++ +++++ +++++ +++++ Perfect OK Acceptable Unacceptable No way! Nope. 编写程序或函数来帮助Alice。给定Alice的代码作为输入字符串,请尽可能输出如下所述的格式正确的代码。如果无法格式化,请输出哭泣的表情符号:~(。 这是代码高尔夫,因此答案以字节计分,目标是减少字节数。 约束条件 您的程序或函数应将单个字符串作为输入并输出一行或多行文本(如果实现函数,则返回多行字符串或字符串数​​组)。 …

22
整数的旋转位置
挑战: 输入: 正整数的排序列表。 输出: 在将每个整数中的数字向左旋转其索引次数并再次对修改后的列表进行排序后,仍处于完全相同索引的整数数量。 例: 输入:[8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788] 输出(基于0的索引):6 输出(基于1的索引):5 为什么? 基于0的索引: After rotating each: [8,94,73,102,592,276,8227,3338,9217,63784,89487,7887471] Sorted again: [8,73,94,102,276,592,3338,8227,9217,63784,89487,7887471] Input indices: 0 1 2 3 4 5 6 7 8 9 10 11 Original input-list: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788] Modified list: [8,73,94,102,276,592,3338,8227,9217,63784,89487,7887471] Modified indices: 0 2 1 3 5 4 7 6 8 9 …

17
整数的平方根距离
给定十进制数k,请找到最小的整数n,以使的平方根n在k整数之内。但是,距离应为非零- n不能是完美的正方形。 给定k,十进制数或分数(以您更方便为准),这样0 < k < 1,输出最小的正整数n,使得的平方根n与最接近的平方根的整数之n差小于或等于k但非零。 如果i是与的平方根最接近的整数n,则寻找第一个n位置0 < |i - sqrt(n)| <= k。 规则 您不能使用语言对非整数的充分实现来解决问题。 否则,您可以假定这k不会导致任何问题,例如,浮点舍入。 测试用例 .9 > 2 .5 > 2 .4 > 3 .3 > 3 .25 > 5 .2 > 8 .1 > 26 .05 > 101 .03 > 288 .01 > 2501 .005 > …

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.