编程拼图和代码高尔夫

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

8
拉丁方压缩
一个拉丁方是一个没有重复的行或列符号的方形:。 13420 21304 32041 04213 40132 正如许多Sudoku玩家所知道的那样,您不需要所有数字即可推断出剩余数字。 您面临的挑战是将拉丁方压缩为尽可能少的字节。 您需要提供一个或两个压缩/解压缩程序。 各种信息: 使用的数字将始终为0..N-1,其中N是正方形边缘的长度,以及N<=25 减压时,拉丁方必须与输入相同。 您的程序应该能够解压缩任何拉丁正方形(在最大正方形大小之内),而不仅仅是我提供的。压缩率也应相似。 您实际上必须运行压缩和解压缩器才能获得分数(无宇宙结束时间) 测试用例可以在github上找到。 您的分数是压缩测试用例的总大小。 编辑:从7月7日20:07开始,我更新了测试用例(以解决生成问题)。请在新的测试用例上重新运行您的程序。 谢谢Anders Kaseorg。

11
生成一个“ GitHub”头像
背景/说明 注意:正如@HelkaHomba指出的那样,实际的GitHub identicons 实际上并不是随机的,而是基于用户名的哈希值 默认的GitHub头像是5x5像素的图像。随机选择一种颜色,然后使用该颜色在一侧(右侧或左侧,2x5大小)填充随机像素。然后,将这一侧复制并翻转到y轴的另一侧。剩余的未填充的像素为#F0F0F0或rgb(240,240,240)。 然后使用与以前相同的颜色随机填充中心列的像素(大小为1x5)。 输出量 注意:对于这个挑战,我们将忽略包围GitHub头像的空间 该程序应输出5x5像素的图像文件。见http://meta.codegolf.stackexchange.com/a/9095/42499的细节 例子 注意:这些显然是从5x5放大的,因此您可以看到它们 祝好运!

20
扩展指数
给定两个大于1的整数A和B,按此顺序输出四个数学表达式: 普通表达式A ^ B(A等于幂B)。例如,如果A = 2且B = 3,2^3...。 根据A的重复乘法,A ^ B的展开2*2*2。 A ^ B的扩展以重复添加A为依据,例如 2+2+2+2。 A ^ B在重复加1方面的扩展,例如 1+1+1+1+1+1+1+1。 可以以任何合理的方式输出这四个表达式,只要它们顺序正确且明显不同即可。例如,您可以将它们放在列表中,或将它们打印在单独的行中 2^3 2*2*2 2+2+2+2 1+1+1+1+1+1+1+1 或在等号分隔的一行上: 2^3=2*2*2=2+2+2+2=1+1+1+1+1+1+1+1 可能在数学运算符旁边插入空格,因此 2^3 = 2 * 2 * 2 = 2 + 2 + 2 + 2 = 1 + 1 + 1 + 1 …

30
返回带平方数和的整数
介绍和信誉 我们都知道并喜欢我们很棒的规则,可以测试数字是11还是3的整数倍,这只是数字位数的巧妙总和。现在,通过要求您计算数字的总和,然后检查结果是否为理想的整数平方,这一挑战将其推向了一个新的高度,这两个操作通常都无法在很短的时间内完成。由于在查看数字时也很难看到此属性,因此我们希望对整个数字列表都执行此操作,以节省人工。因此,这就是您的挑战! 这是我大学功能编程课程中的一项作业。这项作业现在已经关闭,并且已经在课堂上进行了讨论,我已经得到了我教授的允许在这里发布(我明确要求)。 规格 输入值 您的输入是采用任何标准I / O格式的非负整数列表。 您可以根据自己的语言选择列表格式 输出量 输出是任何标准I / O格式的整数列表。 该怎么办? 从输入列表中筛选出每个数字的总和不是平方(整数)的整数。 元素的顺序可能不会更改,例如,如果得到[1,5,9],则可能无法返回[9,1] 潜在的极端情况 0 是一个非负整数,从而有效的输入和0也是有效的整数根,例如0计数为整数正方形。 空列表也是有效的输入和输出。 谁赢? 这是代码高尔夫球,因此最短的答案以字节为单位! 标准规则当然适用。 测试用例 [1,4,9,16,25,1111] -> [1,4,9,1111] [1431,2,0,22,999999999] -> [1431,0,22,999999999] [22228,4,113125,22345] -> [22228,4,22345] [] -> [] [421337,99,123456789,1133557799] -> [] 分步示例 Example input: [1337,4444] Handling first number: Sum of the digits …
31 code-golf  math 

20
法鲁洗牌数组
阿法鲁洗牌是经常使用的魔术到“洗牌”甲板的技术。要执行Faro随机播放,您首先将卡座切成相等的两半,然后将这两个半插入。例如 [1 2 3 4 5 6 7 8] 法鲁洗牌是 [1 5 2 6 3 7 4 8] 可以重复多次。有趣的是,如果重复此次数足够多,您将总是回到原始数组。例如: [1 2 3 4 5 6 7 8] [1 5 2 6 3 7 4 8] [1 3 5 7 2 4 6 8] [1 2 3 4 5 6 7 …
31 code-golf  permutations  card-games  code-golf  graphical-output  random  code-golf  image-processing  color  code-golf  primes  code-golf  math  arithmetic  combinatorics  decision-problem  code-golf  sequence  number-theory  binary  code-golf  number-theory  set-theory  code-golf  hashing  code-golf  game  card-games  code-golf  ascii-art  code-golf  arithmetic  array-manipulation  jelly  code-golf  string  array-manipulation  code-golf  sorting  code-challenge  code-golf  number  date  binary  code-golf  arithmetic  code-golf  math  number  linear-algebra  polynomials  code-golf  ascii-art  code-golf  grid  decision-problem  code-golf  string  combinatorics  code-golf  string  kolmogorov-complexity  arithmetic  date  code-golf  number  data-structures  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation 

30
慢慢地将一串变成另一个
挑战 给定两个字符串/一个字符串数组,输出第一个字符串缓慢缩小并扩展回第二个字符串。 您可以假设字符串始终以相同的字符开头。 例 Input: "Test", "Testing" Output: Test Tes Te T Te Tes Test Testi Testin Testing 首先,您输出第一个单词: Test 然后,您继续删除一个字母,直到字符串长度为一个字符为止: Tes Te T 然后继续添加第二个单词的一个字母,直到完成: Te Tes Test Testi Testin Testing (如果两个字符串都长一个字符,则只需将其中一个输出一次。) 测试用例 "Hello!", "Hi." Hello! Hello Hell Hel He H Hi Hi. "O", "O" O "z", "zz" z zz …
31 code-golf  string 

30
这个数字是什么基数?
这是一个很好的简单挑战: 给定一个代表未知基数的字符串,请确定该数字可能位于的最低基数。该字符串仅包含0-9, a-z。如果您愿意,可以选择使用大写字母而不是小写字母,但是请指定。您必须以十进制输出这个最低的底数。 这是一个更具体的例子。如果输入字符串为“ 01234”,则该数字不可能为二进制,因为2、3和4都未定义为二进制。同样,此数字不能以3或4为底。因此,此数字必须以5或更高的底数为基础,因此应输出“ 5”。 您的代码必须适用于以1为底(一元,全为0)和以36为底(“ 0-9”和“ a-z”)的任何底。 您可以接受输入并以任何合理的格式提供输出。允许进行基本转换内置函数。像往常一样,存在标准漏洞,而最短的答案是以字节为单位! 测试IO: #Input #Output 00000 --> 1 123456 --> 7 ff --> 16 4815162342 --> 9 42 --> 5 codegolf --> 25 0123456789abcdefghijklmnopqrstuvwxyz --> 36

30
这是一个ump撞的词吗?
(受难题上的挑战启发- 该难题的SPOILERS在下面,因此如果您想自己解决难题,请在这里停止阅读!) 如果单词中的字母在字母上出现的时间晚于单词中的前一个字母,我们称这为两个字母之间的上升。否则,包括同一个字母在内,就称为坠落。 例如,单词ACE有两个上升(Ato C和Cto E)并且没有下降,而THE有两个下降(Tto H和Hto E)并且没有上升。 如果上升和下降的顺序交替出现,我们将其称为“ 颠簸”。例如,BUMP上升(B至U),下降(U至M),上升(M至P)。请注意,第一个序列不必是上升- BALD下降-下降-下降,并且也是颠簸的。 挑战 给定一个单词,输出是否为Bumpy。 输入值 仅由ASCII字母([A-Z]或任何形式)组成的单词(不一定是词典单词)。[a-z] 您选择输入是全部大写还是全部小写,但必须一致。 该单词的长度至少为3个字符。 输出量 输入的单词是Bumpy(真)还是Bumpy(假)的真实/假值。 规则 完整的程序或功能都是可以接受的。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常见的高​​尔夫规则都适用,并且最短的代码(以字节为单位)获胜。 例子 真相: ABA ABB BAB BUMP BALD BALDY UPWARD EXAMINATION AZBYCXDWEVFUGTHSIRJQKPLOMN 虚假: AAA BBA ACE THE BUMPY BALDING ABCDEFGHIJKLMNOPQRSTUVWXYZ 排行榜 这是一个堆栈片段,用于按语言生成常规排行榜和获胜者概述。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 # Language Name, N bytes …

18
光束会命中吗?
激光沿正交的四个方向之一发射直光束<>^v。确定它是否会击中O矩形网格上的目标。 这些都将击中(True): ..... ...O. ..... ...^. ..... >O. ... v.... O.... ........... ........... O.........< ........... 这些会错过(错误): ...... ...... .^..O. ...... .....> O..... ...... ...... .O. ... .v. .....<. ..O.... 输入:.大小至少为2x2的矩形网格,正好有一个目标O,一个激光是之一<>^v。这些行可以是字符串列表,二维数组或嵌套的字符列表,也可以是单个新行分隔的字符串,并带有可选的尾随新行。 输出:如果激光束击中目标,则真值保持一致,如果未击中,则真值保持不变。 我将考虑不使用正则表达式(或内置的基于模式的字符串匹配)的提交作为单独的类别。如果(no regex)在语言名称后面加上空格,您的答案将单独出现在排行榜中。 显示代码段 var QUESTION_ID=80196,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/80196/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var …

9
线之间
前几天在方形纸上乱涂乱画时,我想到了上面的负数数字字体。如果尚未发现,上述形状之间的间隔会产生黄金分割率1.618033988749。在此挑战中,您的任务是将数字作为输入并完全按照上面的示例所示呈现它。 这些是如何创建的。所有行将位于规则的网格上,因此各个数字由少量的网格单元组成。这是10位数字的形状(此挑战我们将忽略小数点): 是的,这7与顶部的黄金分割率示例不同。我有点搞砸了。我们将继续进行。 请注意每个数字是五个单元格高,三个单元格宽。要渲染数字,您可以想象将其所有数字彼此相邻放置,以使每对数字之间恰好有一个空列。例如,以319输入为例: 注意,我们添加了一个前导和尾随的空列。现在我们反转单元格: 然后,输出应为所得多边形的边界: 当然,您可以通过任何其他方式生成结果,只要呈现的输出看起来相同即可。 输入值 您可以编写程序或函数,将通过STDIN(或最接近的替代方案)的输入,命令行参数或函数参数作为字符串或数字列表。(您不能输入数字,因为那将不允许您支持前导零。) 您可以假设输入中将不再有16位数字。 输出量 输出可以显示在屏幕上或以通用图像格式写入文件。 您可以同时使用光栅图形和矢量图形。 在任何一种情况下,基础网格的单元的纵横比都必须为1(即,单元应为正方形)。 对于光栅图形,每个像元应至少覆盖20 x 20像素。 这些线的宽度不得超过像元大小的10%。由于这里的别名,我愿意留出一两个像素的余地。 线条和背景可以是任何两种可以明显区分的颜色,但是线条所形成的形状一定不能填充(也就是说,内部也应该是背景颜色)。 每个闭环内不得有间隙。 当然,整个结果必须可见。 测试用例 这是10个输入,它们一起涵盖所有可能的相邻数字对,以及每个可能的前导和尾随数字: 07299361548 19887620534 21456837709 39284106657 49085527316 59178604432 69471338025 79581224630 89674235011 97518264003 这是这些的预期结果: 确保您的代码在给出一个数字时也可以工作(我不想在这里包括预期的结果,因为它们应该很明显,并且测试用例部分已经足够膨胀了)。

9
建立一个扭曲的“ Hello world!”
您的工作很简单,编写一个可打印的程序Hello, world!,将其扭曲即可创建一个可打印的程序Twister!。 弦如何扭曲 扭曲算法非常简单。每列均按其索引向下移动(col 0下移0,col 1下移1,...)。列移位换行到顶部。看起来像这样: a ba cba ---- cba cb c 线下的所有内容都环绕到顶部。真实的例子: Original: \\\\\\\\\\\\ ............ ............ ............ Twisted: \...\...\... .\...\...\.. ..\...\...\. ...\...\...\ (其他示例和您喜欢的语言在这里) 计分 您的程序必须是填充矩形。这是代码高尔夫球,因此最低字节数为准! 规则 您的第一个程序必须打印Hello, world!。只允许一个尾随换行符。 您的第一个和第二个程序必须使用相同的语言。 您的第二个程序必须打印Twister!。只允许一个尾随换行符。 您的程序必须至少有2行2列。

8
对这些詹姆斯·邦德评分进行排序
介绍 我的祖父是詹姆斯·邦德(James Bond)的粉丝,但他始终不确定如何对他最喜欢的演员进行排名。因此,他总是在列出清单,这是很多工作。他要求我制作一个程序,使他的生活更轻松,但是我没有时间这样做,我必须工作!所以我指望你们。 挑战 挑战很简单。输入将包含一个列表,格式如下: <number> <space> <actor's name> <newline> 您的任务是根据行首,从末尾到第一个结束的数字对它们进行排序。所有号码都应删除。 但是,我爷爷有时会犯错误。因此,您将需要验证数据。如果列表中的名称之一不涉及扮演邦德的演员之一,则需要将其丢弃。万一重复,应该删除重复,名称应保持与之关联的最低权重(示例3)。 对可以有多少行没有限制。 输出只需是某种形式的列表,无论是数组,逗号分隔的字符串,仅由空格分隔的值还是其他所有内容,即 Pierce Brosnan, Sean Connery, David Niven 尾随换行符或空格是允许的。 输入和输出示例 输入: 1肖恩·康纳利 2艾玛·沃特森 5蒂莫西·道尔顿 4罗杰·摩尔 3丹尼尔·克雷格 输出: 蒂莫西·道尔顿,罗杰·摩尔,丹尼尔·克雷格,肖恩·康纳利 输入: 2蒂莫西·道尔顿 4乔治·拉岑比 5乔治·拉岑比 3鲍勃·西蒙斯 输出: 乔治·拉岑比,鲍勃·西蒙斯,蒂莫西·道尔顿 输入: 3肖恩·康纳利 2皮尔斯·布鲁斯南 1肖恩·康纳利 输出: 皮尔斯·布鲁斯南(Sean Connery) 因为这是代码高尔夫球,所以最短的代码(以字节为单位)获胜! 附录 扮演邦德角色的演员名单: 巴里·尼尔森 鲍勃·西蒙斯 肖恩·康纳利 …

27
密码化字符串
您的挑战是密码字符串!您问什么是密码? 以字符串作为输入。该字符串将仅包含大写字母,小写字母,数字和空格。 您必须用下划线替换所有空格,并按从左到右的顺序将所有数字移动到字符串的末尾。然后,对于字符串中的每个字母,将其随机更改为大写或小写。 示例(字符大小写每次都不同): Input Hello world Output HElLo_wORld Input pa55 w0rd Output pA_Wrd550 Input 14 35 Output _1435 Input 0971 Output 0971 Input [space] Output _ 以字节为单位的最短代码胜出! 谁在Information Security SE上问这是否是一个好的哈希算法,那会取胜!-不用担心SE霸主,我只是在开玩笑。

19
反函数
如果编程功能可以像它们实现的数学功能一样反转,那不是很整洁吗? 编写一个函数(或程序),以x任何形式输入一个输入,然后输出ln(x)。 当对程序字节进行重新排序/反转,以便第一个字节现在是最后一个字节时,它应采用x任何形式的一个输入并e^x取而代之。 您的答案必须至少包含3个正确的有效数字。 近似值可以,只要它们具有至少3个正确的有效数字即可。 您的代码向前和向后都必须使用相同的编程语言。 假设这个程序实现了ln(x): abc你好 然后该程序必须实现e^x: \xBD\xA5\xE5\xA0\xBD\xE4cba 如果您使用的语言没有浮动支持,则为金星。 这是代码高尔夫球的一种怪异形式,因此最短的程序为准。

4
元胞自动机的多元投票
细胞自动机中有一个非常重要的问题,称为多数问题: 多数问题或密度分类任务是找到准确执行多数投票的一维元胞自动机规则的问题。 ... 给定一个总状态为i + j的两态细胞自动机的配置,其中i处于零状态,j处于一个状态,对投票问题的正确解决方案必须最终将所有单元设置为零i> j,并且如果i <j,最终必须将所有单元格设置为1。如果i = j,则未指定所需的最终状态。 尽管已经证明,没有任何一种细胞自动机可以在所有情况下解决多数问题,但是有许多规则可以在大多数情况下解决。Gacs-Kurdyumov-Levin自动机在随机初始条件下的准确度约为78%。GKL规则并不复杂: 半径为3,表示该单元格的新状态取决于之前的7个单元格:自身,右侧的3个单元格和左侧的3个单元格。 如果当前是一个单元格O,则其新状态是其自身的大部分状态,该单元格位于其左侧,而单元格3向左移动。 如果当前是一个单元格1,则其新状态是其自身的大部分状态,该单元格位于其右侧,而单元格3则位于其右侧。 这是一个例子: 0 1 0 1 1 1 0 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 1 1 1 1 …

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.