编程拼图和代码高尔夫

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

24
交替斐波那契
在交替的斐波那契数列中,您首先像往常一样从1和开始1。 但是,您不必总是将最后两个值相加以获得下一个数字,而是从加法开始,每隔一次减去就代替。 序列开始如下: 1 1 2 # 1 + 1 -1 # 1 - 2 1 # 2 + -1 -2 # -1 - 1 -1 # 1 + -2 -1 # -2 - -1 -2 # -1 + -1 1 # -1 - -2 -1 # -2 + 1 …

24
阵列的反增量
阵列的反增量 给定一个带符号的32位整数数组,您的任务是使用其反增量重新编译它。例如清单 1 3 4 2 8 包含增量: 2 1 -2 6 然后取反,得到: -2 -1 2 -6 并重新编译,产生: 1 -1 -2 0 -6 作为最终结果。 输入输出 您将得到一个列表/数组/表/元组/堆栈/等。通过任何标准输入法输入的带符号整数的数量。 您必须按照上述增量反转方法,以任何可接受的形式再次输出修改后的数据。 您将收到N个输入,0 < N < 10其中每个数字都在该范围内-1000 < X < 1000 测试用例 5 6 7 8 -> 5 4 3 2 1 3 4 2 …

3
到包含子串的回文的最小汉明距离
这是受一个现已删除的CS.SE问题启发的。 任务 给定两个非空输入字符串A和B,输出从A到包含B作为子字符串的回文的最小距离。距离由字符替换的数量(汉明距离)定义。 限制条件 明智的输入:存在回文。这意味着| A | ≥| B |。 A和B仅包含小写ASCII字符,小写和大写字母是不同的(其他所有字符也一样)。 如果您的语言无法处理ASCII字符,则也可以使用整数(或其他一些合理的数据类型),并且可以选择将范围限制为128个元素。 您可以从标准输入,函数参数,命令行参数等中获取输入。 您可以在标准输出,返回值等上给出结果。 您不需要给出工作回文,到一个最小的距离就足够了。 例子 A B Output thilloaoyreot hello 4 (thelloaolleht) benjonson stack 9 (stackcats) neversaynever! odd 9 (neveroddoreven) ppcggcpp gg 0 (ppcggcpp) stars tat 1 (stats) 计分 这是代码高尔夫,以字节为单位的最短代码获胜。

15
字母替换挑战
这个想法很简单。您必须通过提供3个字符串(输入可以用逗号分隔,单独的输入或作为数组)来创建“可视化”字母替换。第一部分是您要纠正的单词,第二部分是您想要替换的字母,第三部分是第二部分中字母的替换。 例如: | | Input | Starting Word | Output | |----|-----------------------------|---------------|-------------| | #1 | Hello world -wo -ld +Ea +th | Hello world | Hello Earth | | #2 | Hello World -wo -ld +Ea +th | Hello World | Hello Worth | | #3 | Hello -llo +y …
17 code-golf  string 

6
一cube文字݀
上次您制作了一个正方形的文本,但是现在,您可以制作一个立方体的文本了吗? 挑战 给定一个字符串,以多维数据集的形式输出该字符串。 您可以假定该字符串将始终具有2个字符或更多,并且仅具有可打印的ascii字符。 如何制作文字方块 测试用例 Input: Test Output: Test e ss s e e tseT T s e e e ss Test Input: Hello, world! Output: Hello, world! e dd l l l l r r o o o , w w w , , o o o r …

13
逆排列索引
介绍 具有n个元素的列表的字典排列可以从0到n编号!-1.例如3!= 6个置换(1,2,3)将是(1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1)。 将排列应用于列表时,其元素的排列顺序与排列中的数字相同。例如,将置换(2,3,1)应用于l = (a,b,c)yield (l[2],l[3],l[1]) = (b,c,a)。 排列的逆定义为颠倒此操作的排列,即应用排列,然后其逆(反之亦然)不会修改数组。例如,(2,3,1)is 的逆(3,1,2),因为将其应用于(b,c,a)yields (a,b,c)。 同样,应用于排列本身的排列的逆值会产生整数1… n。例如,应用(3,1,2)到(2,3,1)产率(1,2,3)。 现在,我们将函数revind(x)定义为索引为x的排列的逆排列的索引。(如果您有兴趣,这是A056019。) 由于与指数置换我只修改了最后ķ列表中的项目当且仅当 0≤ 我 < ķ!,我们可以添加任意数量的元素到列表的开始,而不会影响revind(我)。因此,列表的长度不影响结果。 挑战 您的任务是实现revind(x)。您将编写一个完整的程序或函数,以单个非负整数x作为输入/参数,并以单个非负整数输出/返回结果。 输入和输出可以是0索引或1索引,但是它们之间必须保持一致。 禁止按索引生成排列,返回排列的索引或找到逆排列的内建函数。(允许生成所有排列或下一个排列的构建体。) 适用标准代码高尔夫球规则。 例子 下面的示例是0索引的。 Input Output 0 0 1 1 2 2 3 4 4 3 5 5 6 6 13 10 42 51 100 41 1000 …
17 code-golf  combinatorics  permutations  code-golf  image-processing  brainfuck  encode  steganography  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  ascii-art  fibonacci  code-golf  string  code-golf  sorting  popularity-contest  statistics  code-golf  ascii-art  kolmogorov-complexity  code-golf  code-golf  ascii-art  tic-tac-toe  code-golf  string  code-challenge  classification  test-battery  binary-matrix  code-golf  math  arithmetic  code-golf  ascii-art  random  code-golf  string  code-golf  number  binary  bitwise  code-golf  number  arithmetic  code-golf  math  ascii-art  code-golf  string  ascii-art  code-golf  string  ascii-art  code-golf  string  code-golf  counting  code-golf  number  binary  bitwise  decision-problem  code-golf  array-manipulation  code-golf  tips  brain-flak  code-challenge  quine  source-layout  code-generation  code-golf  linear-algebra  matrix  abstract-algebra  binary-matrix  code-golf  string  palindrome  code-golf  puzzle-solver  sudoku  code-golf  ascii-art  code-golf  graphical-output  internet  code-golf  ascii-art  kolmogorov-complexity  code-golf  math  code-golf  clock 

12
尺寸倒计时
编写一个函数f(n,k),显示从n开始的k维倒数。 从5开始的一维倒数看起来像 54321 从5开始的二维倒数如下 54321 4321 321 21 1 最后,从5开始的3维倒数如下 54321 4321 321 21 1 4321 321 21 1 321 21 1 21 1 1 正式定义 从任何n开始的一维倒数是一行,数字n,n-1,...,1连接在一起(后跟换行符)。 对于任何k,从1开始的k维倒数是单行 1 对于n> 1和k> 1,从n开始的k维倒数是从n开始的(k-1)维倒数,然后是从n-1开始的k维倒数。 输入项 您选择的任何格式的两个正整数k和n <= 9。 输出量 从n开始的k维倒数,每个1维倒数后都有换行符。输出中允许额外的换行符。 计分 标准高尔夫得分。 奖金示例 这是一个示例,其中k> n,是从3开始的4维倒数(带有多余的注释,这些注释不包含在实际解决方案中): -- 3-dimensional countdown from 3 321 21 …
17 code-golf  string 

3
用绳子带领你的乌龟
编写一个程序或函数,该程序或函数采用非空单行字符串,该字符串包含可打印的ascii字符(不包括空格): !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 您可以假设输入有效。 根据输入,按照乌龟图形-像这样的规则,在乌龟始终占据一个栅格空间并且只能面对基本方向的情况下,在文本空间和换行符的文本网格上绘制新的字符串。 将输入字符串中的第一个字符打印到文本网格中。乌龟从这里开始朝右。遍历输入字符串中的其余字符(仅在乌龟被卡住时才停止),重复此过程: 如果与海龟直接相邻的4个网格空间都被填充了(即它们都不是一个空间),请停止迭代。乌龟被卡住,网格已尽可能完整。 查看输入中的当前字符与前一个字符的比较: 如果当前角色在词汇上比前一个更早,将乌龟向左旋转四分之一圈。 如果当前角色在词汇上在前一个之后,则将乌龟向右旋转四分之一圈。 如果当前角色与前一个角色相同,请不要旋转乌龟。 如果乌龟现在面对的网格空间不为空(即不是一个空间),请反复将乌龟向左旋转四分之一圈,直到乌龟面对一个空的网格空间。 将乌龟朝着她所面对的方向向前移动一个格,并在乌龟的新位置将当前角色打印在格上。 打印或返回结果文本网格字符串,没有多余的行或列的空白。行的行尾空格可以一直到最右边的列,且不能有空格,但不能超过。可选地允许单条尾随换行符。 以字节为单位的最短代码获胜。 例 这是输入的所有步骤spattuuxze。所述^V<>字符显示龟面对的方向,他们是不输入或输出的一部分。 s> ^ p s <ap s ^ t ap s ^ t t ap s tu> t ap s tuu> t ap s tuu t x apV s tuu <zx ap s 此时,乌龟被卡住了,所以e永不打印,最终输出为: tuu …
17 code-golf  string  grid 

12
沃兹监视器
挑战 最近,我进入了8位计算机,并对它们以及其他方法的工作着迷。因此,此代码高尔夫的目标是复制由Steve Wozniak为Apple I设计的Woz Monitor的一部分。 您将存储一个22个十六进制值的数组,其宽度为两个字节(最小值$ 10,最大值$ FF),然后接受n个输入。(通常是两种;像Brainfuck这样的语言可能会遇到困难)。 输入将指向数组中从哪里开始打印以及从哪里停止打印;具有定义行为的输入的起始值将小于或等于终止值。然后,您的程序必须能够打印输入的十六进制之间(包括该十六进制)的每个十六进制值。 一个例子: Array 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 Values FF F4 B6 D7 40 00 00 A4 F0 00 FF 0D 9C 21 65 C4 …

21
从15个字符的字母生成6个字符串
在我们正在进行的一个项目中,我们最近发现了一种特别大的方法,可以从15个字符的字母生成6个字符串。我们中的一些人声称“我敢打赌我们可以一站式得到”,这开始了一些代码高尔夫的内部游戏。 您的任务是击败我们,我毫不怀疑会花很长时间! 原始算法使用字母0-9A-E,但是我们已经尝试了其他字母。因此,存在三个子任务。 生成6从任意硬编码15字符字母(例如)中随机选择的字符串ABC123!@TPOI098。(这只是一个示例,应该可以自定义而不影响字节数。) 生成6从15字符字母中随机选择的字符串0123456789ABCDE。 6从15您选择的字符字母中随机生成一个字符串(请仅打印字符)。 每个角色都应该有相等的选择机会,并且应该可以重复。 我们能够为每个子任务管理的最好的是: “ ABC123!@ TPOI098”- 24 bytes “ 0123456789ABCDE”- 21 bytes 自定义字母- 13 bytes 您的分数是每个子任务解决方案中字节的总和。即我们的分数目前是58。 我们尝试过使用CJam和Ruby。原来是C#。使用您喜欢的任何语言,但我们将特别关注这些语言的解决方案

9
整数随着时间的推移来回移动
输入: 一个整数。 输出: 首先将整数转换为等效的罗马数字。 然后,将该罗马数字的每个大写字母转换为其ASCII / UNICODE十进制值。 并输出这些总和。 例: 1991 -> MCMXCI -> 77+67+77+88+67+73 -> 449 ^ input ^ output 罗马数字: 这是一个可能有用的罗马数字转换器。 挑战规则: 标准的罗马数字规则适用,因此没有其他替代形式 IIII或VIIII替代IV和IX*。 罗马数字超过1000的马克龙线是¯(UNICODE nr。175)。因此,一线算作+175,两线算作+350。 您可以使用任何类型的输入和输出类型,只要它代表整数即可。 测试用例将在 1 - 2,147,483,647。 *罗马数字规则(引自维基百科): 数字是通过组合符号并加上值而形成的,所以II两个(两个)和XIII十三(一个十和三个)也是如此。因为每个数字都有一个固定值,而不是代表10、100等的倍数,所以根据位置,不需要像207或1066这样的“位置保持”零。这些数字写成CCVII(两百,五和二)和MLXVI(一千,五十,十,五和一)。 符号从左到右按值的顺序排列,从最大开始。但是,在某些特定情况下,为避免连续重复四个字符(例如IIII或XXXX),通常按如下方式使用减法表示法: I放在前面V或X表示少一,所以四是IV(一小于五)而九是IX(一小于十) X放在前面L或C表示减去十,所以四十是XL(十小于五十),九十是XC(十小于一百) C放在前面D或M表示少一百个,因此四百个CD(一百个小于五百)和九百个CM(一百个小于一千) 例如,MCMIV一千零九十四个,1904年(M一千个,CM是九百零四IV)。 现代使用罗马数字的一些例子包括: 1954年为MCMLIV;1990年为MCMXC; 2014年作为MMXIV SOURCE 通用规则: 这是代码高尔夫球,因此最短答案以字节为单位。 不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能短的答案。 适用标准规则于您的答案,因此允许您使用STDIN / STDOUT,具有正确参数的函数/方法,完整程序。你的来电。 默认漏洞是禁止的。 …

2
给定一个真值表,输出一个满足它的Stackylogic程序
Stackylogic是我在上一个挑战中提出的一种编程语言:运行Stackylogic。请阅读该帖子以获取完整的详细信息和示例,但是下面解释了它的工作方式: Stackylogic采用0和1来输入和输出单个0 或1完成时。 程序由仅包含字符01?以及其中一行<的末尾恰好包含一个字符的行组成。行不能为空,并与该行<必须至少有一个0,1或 ?之前。 这是一个示例程序,用于计算两位的NAND: 1 ?< 11 ? 0 程序中的每一行都被视为一个堆栈,其底部在左侧,顶部在右侧。隐式地,在程序的第一行之前和最后一行之后有一个空栈(即空行)。 在<运行程序时,称为光标,标记堆栈开始。执行过程如下: 将顶部字符从光标当前指向的堆栈中弹出。 如果该字符为?,则提示用户输入a 0或a,1并像该字符一样进行操作。 如果字符是0,则将光标向上移动一个堆栈(到当前行上方的行)。 如果字符是1,则将光标向下移动一个堆栈(到当前行下方的行)。 如果光标移动到的堆栈为空,则输出从堆栈弹出的最后一个值(始终为a 0或1),然后结束程序。 否则,如果光标移动到的堆栈不为空,请返回步骤1并重复该过程。 应对这一挑战的关键是,所有Stackylogic程序都等同于一个真值表。输入一些预定数量的布尔值,并确定性地输出一个布尔值。 因此,您的任务是生成一个满足或模拟的Stackylogic程序,即与任何给定的真值表具有相同的输出。但是Stackylogic 可以模拟任何真值表并不明显,因此这是归纳法的证明: 基本情况 两个0输入真值表是始终输出0或 的表1。这些表的Stackylogic等效项 分别为0<和1<。 归纳步 假设Stackylogic可以模拟任何N输入的真值表。令M = N + 1。 M输入表T可以表示为两个N输入表T 0和T 1以及附加输入位B。当B为0时,使用T 0的结果。当B为1时,将使用T 1的结果。 例如,对应于伪代码的3输入真值表 if B: result = x OR y else: result = …

8
在Copeland–Erdős常数中查找数字
背景 所述克柏兰-尔杜斯常数是“0”的串联 以10为底的质数表示法。它的值是 0.23571113171923293137414... 另请参阅OEIS A033308。 Copeland和Erdős证明这是一个正常数。这意味着可以在Copeland-Erdős常数的十进制扩展的某个点上找到每个自然数。 挑战 给定一个正整数,将其以10为基数(不带前导零)并输出其在Copeland-Erdős常数的十进制数字序列中的第一个出现的索引。 允许使用任何合理的输入和输出格式,但输入和输出应以10为底。在这种情况下,可以假定不包含前导零。 从常量的第一个小数开始,输出可以是从0开始或从1开始。 实际结果可能会受到数据类型,内存或计算能力的限制,因此该程序在某些测试案例中可能会失败。但: 理论上,任何输入都应该工作(即不考虑这些限制)。 实际上,它至少应在前四个案例中起作用,并且每个案例的结果都应在不到一分钟的时间内得出。 测试用例 输出在此基于1给出。 13 --> 7 # Any prime is of course easy to find 997 --> 44 # ... and seems to always appear at a position less than itself 999 --> 1013 # Of course …

2
阻碍勒普顿压缩
Dropbox最近发布了Lepton(GitHub),该方法可无损地压缩JPEG图像往返,平均节省22%。 由于信鸽原理,不能保证任何常规的压缩算法都会导致文件更小(一般是因为它不适用于限制为特定格式的输入)。Lepton充分利用了JPEG的共同特征,如果这些特征被颠覆了,可能会导致其产生比源更大的文件。 要求 编写一个生成以下内容的程序: 有效的JPEG / JFIF图像, 大小介于0.5 MB和1 MB之间, 不小于256×256 px, 不大于4096×4096像素, Lepton可以识别(它可以成功地“压缩”为.lep图像),并且 解压缩为相同的 .jpg(作为输入)。 APPx,COM以及其他元数据,非图形标记部分在JPEG中受到限制(向图像中注入任意数量的随机字节以渐近地接近1:1压缩是la脚的。) 允许使用APP0JFIF标记,但不允许使用缩略图(应为16个字节) tl; dr如果您不是故意将元数据推入EXIF段中,并且禁用了您希望选择的语言库想要放入图像的任何缩略图,那应该没问题。 发布代码和图像。 如果要编写一个生成Lepton图像的程序,该程序在转换时会产生符合条件的JPEG,那就很好。在任意多个JPEG→轻子→JPEG→...循环中,它必须保持相同。 计分 Lepton图像的字节大小除以源JPEG图像。更高(更轻的Lepton压缩)更好。使用默认标志和开关运行Lepton。 到达莱普顿 5秒钟的速成课程来构建Lepton: git clone https://github.com/dropbox/lepton.git cd lepton ./autogen.sh && ./configure && make # fish shell: ./autogen.sh ;and ./configure ;and make 那./lepton --help应该告诉你的事情。

16
Narayana-Zidek-Capell数
给定输入n,生成第n个Narayana-Zidek-Capell数。最低字节获胜。 f(1)= 1,f(n)是上一层(n / 2)Narayana-Zidek-Capell项的总和。 测试用例: f(1)=1 f(9)=42 f(14)=1308 f(15)=2605 f(23)=664299

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.