Questions tagged «function»

对于要求功能或以某种方式涉及功能的挑战。(也称为方法或子例程。)

15
半回文之谜
回文是一个本身相反的词。 现在有些单词看起来像回文,但看起来却不然。例如,考虑单词 sheesh, sheesh不是回文,因为它的反向是hseehs不同的,但是如果我们认为sh是单个字母,那么它的反向是sheesh。我们将这种词称为半回文。 具体来说,如果我们可以将单词拆分成一定数量的块,则该单词为半回文,这样当块的顺序颠倒时,便形成了原始单词。(因为sheesh这些块是sh e e sh),我们也将不要求任何块包含两个单词的字母(否则每个单词都是半回文)。例如rear,不是半回文,因为它r ea r具有一个块(ea),其中包含来自原始单词两边的字母。我们认为奇数长度的单词的中心字符不在单词的两侧,因此对于奇数长度的单词,中心字符必须始终位于其自己的块中。 您的任务是获取正整数列表,并确定它们是否为半回文。您的代码应输出两个一致的不相等值,如果输入是半回文,则应输出一个,否则将输出另一个。但是,代码的字节序列本身必须是半回文。 答案将以字节计分,而字节数越少越好。 测试用例 [] -> True [1] -> True [2,1,2] -> True [3,4,2,2,3,4] -> True [3,5,1,3,5] -> True [1,2,3,1] -> False [1,2,3,3,4,1] -> False [11,44,1,1] -> False [1,3,2,4,1,2,3] -> False 程序生成更多的测试用例。 borrible指出,这些与广义Smarandache回文相似。因此,如果您想做进一步的阅读,那是一个开始的地方。

10
自然日志上的蚂蚁
这是一个很好的初学者挑战,也是一个很好的时间杀手。 我只说了-自然-对数,因为标题太短了,这与对数无关。 给定2个变量: 蚂蚁数量n。 日志的宽度w。 输出日志宽度w与n蚁(实施例示出w=3,n=6) | | | \O/ \O/ \O/ | | -O- -O- -O- | | /o\ /o\ /o\ | | ^ ^ ^ | | | | \O/ \O/ \O/ | | -O- -O- -O- | | /o\ /o\ /o\ | | ^ ^ ^ | …

30
获取一个具有不同数字的随机n位数字,第一个不是0
我读了这个问题,并认为这将是一个不错的挑战。 任务 给一个输入0<n<10生成一个随机数 正好n位数字 第一个不是 0 所以 f(n)>10**(n-1)-1 不同的数字 获奖标准 这是代码高尔夫球,因此最短的代码获胜。 随机 我的意思是随机分布均匀。因此,从程序的角度来看,每个可能的数字都有相同的机会。如果您使用的语言具有一个奇怪的随机数生成器,则可以使用该生成器。 例 要从中随机选择的值的列表n=2是: [10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 48, …
22 code-golf  number  random  grid  game  king-of-the-hill  javascript  code-golf  arithmetic  statistics  code-golf  math  code-golf  math  code-golf  string  palindrome  code-golf  string  interactive  code-golf  quine  polyglot  code-golf  string  stack-exchange-api  code-golf  number-theory  decision-problem  code-golf  tips  code-golf  string  internet  code-golf  graphical-output  image-processing  fractal  code-golf  ascii-art  geometry  hexagonal-grid  code-golf  string  restricted-source  hello-world  code-golf  game  code-golf  cipher  code-golf  permutations  cops-and-robbers  permutations  cops-and-robbers  code-golf  internet  stack-exchange-api  code-golf  ascii-art  random  code-golf  tips  code-golf  ascii-art  code-golf  code-golf  kolmogorov-complexity  code-golf  string  unicode  code-golf  number  sequence  primes  palindrome  code-golf  game  decision-problem  code-golf  math  geometry  code-golf  graphical-output  interactive  code-golf  set-partitions  code-golf  number  arithmetic  restricted-source  code-golf  decision-problem  python  recursion  code-golf  ascii-art  code-golf  source-layout  code-golf  function  recursion  functional-programming  code-golf  game  combinatorics  permutations  code-golf  string  file-system  code-golf  string  hashing  code-golf  stack-exchange-api  code-golf  string  code-golf  math  number  arithmetic  polyglot 

7
半指数函数
阿半指数函数是一个当它与本身组成给出了一个指数函数。例如,如果为f(f(x)) = 2^x,则将f为半指数函数。在此挑战中,您将计算一个特定的半指数函数。 具体来说,您将使用以下属性计算从非负整数到非负整数的函数: 单调递增:如果x < y,则f(x) < f(y) 至少有一半指数:对于所有的x,f(f(x)) >= 2^x 词典上最小的:在具有以上属性的所有函数中,输出一个使maximums最小的函数f(0),给定选择,minimizes f(1),然后f(2),依此类推。 对于输入,此函数的初始值为0, 1, 2, ...: [1, 2, 3, 4, 8, 9, 10, 11, 16, 32, 64, 128, 129, 130, 131, 132, 256, 257, ...] 您可以通过以下任意一种方法将其输出为函数或完整程序: 以x作为输入,输出f(x)。 采取x作为输入,输出所述第一x值f。 无限输出所有f。 如果要取x并输出f(x),x必须为零索引。 参考实施 这是代码高尔夫-以字节为单位的最短代码获胜。一如既往,禁止出现标准漏洞。

18
在给定数组中查找最接近的数字
这是受到我遇到的一个现实世界问题的启发。我很好奇,看看是否有任何聪明的方法可以解决这个问题。 给您两个未排序的数组A和B,每个数组包含任意数量的浮点数。A和B的长度不一定相同。编写一个函数,该函数顺序获取A的元素并在数组B中找到最接近的值。结果必须包含在新数组中。 获胜条件 最短的代码获胜(照常)。

13
让我来点咖喱
有一个函数f带有参数x 1,x 2,…,x n –即 f:X 1 ×X 2 ×…×X n →Y – currying将f重新定义为带有单个参数a 1的函数,该参数映射到另一个函数。这项技术对于部分应用很有用,例如具有pow我们可以编写的curried 函数exp = pow(e)。 例 假设我们有以下函数f接受三个参数(f:X 1 ×X 2 ×X 3 →Y): def f(a,b,c): return a + b * c 调用此函数将使我们留下f_curry:X 1 →(X 2 →(X 3 →Y)),如果我们现在两次调用该函数,f_curry(1)(2)我们将得到一个h等于以下返回值的函数(): def h(c): return 1 + 2 * c curried函数f可以这样编写(Python …

9
使用Riemann和求近似定积分
左右黎曼和和是定积分的近似值。当然,在数学中我们需要非常精确,因此我们的目标是使用许多接近无穷大的细分来计算它们,但对于本挑战而言,并不是必需的。相反,您应该尝试编写最短的程序,以任何编程语言通过任何默认方法获取输入并提供输出,该语言可以执行以下操作: 任务 给定两个有理数一种一种a和bbb(定积分的极限),一个正整数ññn,代表左/右的布尔ķķk和一个黑盒函数 FFf,计算∫的左或右黎曼和(取决于ķķk)b a f (x )d x,使用n个相等的细分。∫b一种F(x )d x∫一种bF(X)dX\int_a^b f(x)\mathrm{d}xññn I / O规格 一种一种a和bbb可以是有理数/浮点数或分数。 ķķk可以由任意两个不同且一致的值表示,但请记住,不允许您将完整或部分函数用作输入。 FFf是黑盒功能。引用上面链接的meta答案,可能无法访问黑盒功能的内容(即代码),您只能调用它们(如果适用,则传递参数)并观察其输出。如果需要,请提供有关您的语言使用的语法的必要信息,以便我们测试您的提交。 作为输出,您必须提供一个有理数/浮点数/分数,代表您想要的黎曼和。如过去所讨论的,只要四舍五入到最接近的1/1000的倍数(例如1.4529999,可以代替1.453),您的输出至少可以精确到小数点后三位,就可以忽略浮点不精确度。 数学规格 FFf保证在一种一种a和bbb之间是连续的(没有跳跃,没有孔,没有垂直渐近线)。 您必须处理三种可能的情况:a = b一种=ba = b(结果应为000或等效值),a &lt; b一种&lt;ba < b或a &gt; b一种&gt;ba > b。 如果b &lt; ab&lt;一种b < a,则积分会更改其符号。此外,在这种情况下,整体的正义感是朝着一种一种a。 图表下方的区域为负,图表上方的区域为正。 示例/测试用例 分辨率不是最佳的,因为我不得不将它们缩小一点,但是它们仍然可读。 F(X )= 2 X + 1 ,a = …

25
增量博彩
几个月前,我把这个问题当作一次面试的难题。最近,在考虑博客材料时,它突然成为一个很好的例子,可用于从功能上解决问题。写完博客文章后,我将立即发布解决方案。 注意:这个问题是一年前在StackOverflow上提出的,在回答了几个(不正确)答案后被否决。我认为这是一个显而易见的面试或作业问题,因此被否决了。我们在这里的答案应该是经过深思熟虑的代码,以便有人不要考虑使用它们! 在比赛中,您使用以下策略下注。每当您输掉一个赌注时,就将下一轮的赌注值翻倍。每当您获胜时,下一轮的赌注将为一美元。您通过下注一美元开始本轮比赛。 例如,如果您以20美元开始,并且在第一轮中赢得赌注,在接下来的两轮中输掉赌注,然后在第四轮中赢得赌注,您将得到20 + 1-1-2 +4 = 22美元。 您应该完成函数,该函数带有g两个参数: 第一个参数是一个整数a,它是我们开始下注时所拥有的初始资金。 第二个参数是一个字符串r。结果的第i个字符将是“ W”(胜利)或“ L”(失败),表示第i回合的结果。 您的函数应该返回所有回合之后您将拥有的金额。 如果在某个时候您的帐户中没有足够的资金来支付下注的价值,那么您必须停止并退还当时的金额。 样品运行 1st round - Loss: 15-1 = 14 2nd round - Loss: 14-2 = 12 (Bet doubles) 3rd round - Loss: 12-4 = 8 4th round - Win: 8 + 8 = 16 5th …

12
组成填空
假设我们在字符串上有一组特定的函数。这些函数有点像填入空格或madlib,不同之处在于它们仅接受一个输入并使用该输入来填入所有空白。例如,我们可能有一个看起来像 I went to the ____ store and bought ____ today. 如果我们将此功能应用于字符串cheese,结果将是: I went to the cheese store and bought cheese today. 我们可以将这些函数表示为字符串的非空列表,其中的空格只是字符串之间的空白。例如,我们上面的函数将是: ["I went to the ", " store and bought ", " today."] 在这种表示形式下,此类每种功能只有一种表示形式,而每种表示形式仅一种功能。 一件真正整洁的事情是,这些功能的集合在组合时是封闭的。也就是说,我们两个功能的组合始终是这些功能中的另一个。例如,如果我用 ["blue ", ""] (添加blue到输入的函数)我们得到函数: ["I went to the blue ", " store and …

7
希尔伯特二进制酒店
在此挑战中,系统将要求您实现具有两个属性的任何功能(或完整程序)。这些属性是: 您的函数必须是从具有非负整数系数的多项式到非负整数的内射(可逆)函数。这意味着没有两个不相等的输入可以映射到相等的输出。 您的函数必须保留从输入到输出的“按位”总数。这意味着,如果您计算多项式每个系数的1位,则它们的总和应与输出的二进制表示形式中1位的数目相同。例如,它9是1001二进制的,所以它有2 1位。 IO 非负整数多项式与非负整数的无限列表相同,因此在某个点之后所有整数均为零。因此,多项式可以由无限列表表示(尽管这可能是不希望的),也可以由列表末尾带有隐式零的有限列表表示。 多项式与有限列表之间的主要区别在于,在列表的末尾添加零将更改列表: 在多项式的末尾添加零不会更改其值: 因此,如果您的函数采用表示多项式的有限列表作为输入,则添加零不得更改其结果。 当将多项式表示为列表时,可以用代表常数项的第一个或最后一个条目来表示它们。例如,您可能具有以下两种可能性之一: 在第一种情况下,将零添加到列表的末尾不应更改结果。在第二种情况下,加零到前方列表的不应该改变的结果。 当然,如果您的语言支持多项式,则可以将其作为输入。 通过任何标准方法,输出应为非负整数输出。 这是代码高尔夫球,因此答案将以字节计分,而字节越少越好。

4
计算实际数字
定义 正整数n是一个实际数字(OEIS序列A005153),前提是所有较小的正整数都可以表示为的不同除数之和n。 例如,18是一个实际数字:其除数为1、2、3、6、9和18,小于18的其他正整数可以形成如下: 4 = 1 + 3 5 = 2 + 3 7 = 1 + 6 8 = 2 + 6 10 = 1 + 9 11 = 2 + 9 12 = 3 + 9 = 1 + 2 + 9 = 1 + 2 + 3 …
18 code-golf  sequence  number-theory  code-golf  code-challenge  sorting  c  code-golf  restricted-source  code-golf  natural-language  code-golf  tree-traversal  file-system  popularity-contest  pi  polyglot  code-golf  game  sliding-puzzle  code-golf  game  minesweeper  code-challenge  ascii-art  code-challenge  popularity-contest  graphical-output  code-challenge  popularity-contest  hello-world  underhanded  obfuscation  code-golf  code-golf  function  code-golf  code-golf  code-golf  popularity-contest  rosetta-stone  code-golf  primes  code-golf  restricted-source  popularity-contest  number  sequence  code-golf  restricted-source  popularity-contest  graphical-output  code-golf  popularity-contest  code-golf  primes  code-golf  game  code-golf  math  popularity-contest  popularity-contest  code-generation  popularity-contest  code-bowling  code-golf  popularity-contest  underhanded  code-golf  metagolf 

15
在任意(受限制的)无穷集与无序对之间设计一个交换式内射函数
相关,但这只需要正整数,而不必是可交换的 Cantor配对功能在此Wikipedia文章中进行了描述。本质上,这是一种操作,当将其应用于两个值X和Y时,只要给出结果,就可以获得原始值X和Y。 您的任务是设计两个功能:一个执行X, Y -&gt; Z,另一个执行Z -&gt; X, Y。X, Y -&gt; Z要注意的是:必须是可交换的。这意味着Z -&gt; X, Y将无法确定输入是X, Y还是Y, X。 这个挑战的正式定义是: 选择一个可数的无穷大数字S。 设计执行以下任务的两个功能: 给定S中的无序值对,则返回S中的值 给定初始函数的返回值,返回无序的一对值,当通过第一个函数时,该值对将得出输入整数。如果输入不是第一个函数的返回值,则我不关心此反函数的行为。 要求 运行之间的结果应相同。 {a, a} 是无序对 注意:如果您提供证据,您的答案更有可能获得我的支持,但是当我获得答案时,我会进行测试,并在相当确定的情况下对其进行支持。

30
消失的元素
给定一个字符串S和一个索引列表X,S通过删除每个索引处的元素来进行修改,并将S结果作为的新值S。 例如,给定S = 'codegolf'和X = [1, 4, 4, 0, 2], 0 1 2 3 4 5 6 7 | c o d e g o l f | Remove 1 c d e g o l f | Remove 4 c d e g l f | Remove 4 c …
17 code-golf  string  array-manipulation  code-golf  string  ascii-art  code-golf  number  sequence  pi  code-golf  number  array-manipulation  code-golf  string  ascii-art  code-golf  math  number  game  code-golf  math  sequence  polynomials  recursion  code-golf  math  number  sequence  number-theory  code-golf  permutations  balanced-string  code-golf  string  ascii-art  integer  code-golf  decision-problem  hexagonal-grid  code-golf  ascii-art  kolmogorov-complexity  code-golf  number  code-golf  matrix  binary-matrix  code-golf  math  statistics  code-golf  string  polyglot  code-golf  random  lost  code-golf  date  path-finding  code-golf  string  code-golf  math  number  arithmetic  number-theory  code-golf  tetris  binary-matrix  code-golf  array-manipulation  sorting  code-golf  number  code-golf  array-manipulation  rubiks-cube  cubically  code-golf  grid  optimization  code-golf  math  function  code-golf  string  quine  code-golf  ascii-art  grid  code-golf  decision-problem  grid  simulation  code-golf  math  sequence  code-golf  path-finding  code-golf  ascii-art  grid  simulation  code-golf  number  whitespace  code-golf  sequence  code-golf  sequence  code-golf  sequence  integer  code-golf  math  game  code-golf  internet  stack-exchange-api  code-golf  sequence  code-golf  internet  stack-exchange-api  code-golf  math  factoring  code-challenge  sequence  polyglot  rosetta-stone  code-golf  string  browser  code-golf  date  code-golf  base-conversion  code-challenge  cops-and-robbers  hello-world  code-golf  cops-and-robbers  hello-world 

14
任意长度散列
考虑您有一个哈希函数 HH\mathcal{H},该哈希函数接收长度为2n2n2n字符串并返回长度为nnn字符串,并且具有耐碰撞的好特性,即很难找到具有相同哈希H的两个不同的字符串s≠s′s≠s′s \neq s'(s )= H(s ')。H(s)=H(s′)H(s)=H(s′)\mathcal{H}(s) = \mathcal{H}(s') 现在,您想构建一个新的哈希函数H′H′\mathcal{H'},该函数采用任意长度的字符串并将它们映射到长度为nnn字符串,同时仍具有抗碰撞性。 幸运的是,在1979年已经发布了一种现在称为Merkle–Damgård构造的方法,可以实现此目的。 这项挑战的任务是实现该算法,因此在逐步执行示例之前,我们将首先对Merkle–Damgård构造进行正式描述,该示例应表明该方法比以下方法更简单。它可能会首先出现。 给定一些n&gt;0n&gt;0n > 0整数,如上所述的哈希函数HH\mathcal{H}和任意长度的输入字符串sss,新的哈希函数H′H′\mathcal{H'}执行以下操作: 设置l=|s|l=|s| l = |s|,的长度sss和将sss拆分为长度为nnn的块,必要时用尾随零填充最后一个块。这产生m=⌈ln⌉m=⌈ln⌉m = \lceil \frac{l}{n} \rceil 许多块被标记c1,c2,…,cmc1,c2,…,cmc_1, c_2, \dots, c_m 。 添加一个前导和尾部块c0c0c_0和cm+1cm+1c_{m+1},其中c0c0c_0是由以下组成的串nnn零和cm+1cm+1c_{m+1}是nnn二进制,填充与领先零长度nnn。 现在,将HH\mathcal{H}迭代地应用于附加到先前结果r i - 1的当前块cicic_i上:r i = H(r i - 1 c i),其中r 0 = c 0。(查看下面的示例后,此步骤可能会更加清楚。)ri−1ri−1r_{i-1}ri=H(ri−1ci)ri=H(ri−1ci) r_i = \mathcal{H}(r_{i-1}c_i)r0=c0r0=c0r_0 = c_0 …

4
无点的元组添加
表达功能的最短方法是什么 f(a,b)(c,d)=(a+c,b+d) 用无点表示法? pointfree.io给了我们 uncurry (flip flip snd . (ap .) . flip flip fst . ((.) .) . (. (+)) . flip . (((.) . (,)) .) . (+)) 只需一点点工作就可以缩短到 uncurry$(`flip`snd).((&lt;*&gt;).).(`flip`fst).((.).).(.(+)).flip.(((.).(,)).).(+) 为76个字节。但这似乎还是真的对于如此简单的任务来说漫长而复杂。有什么方法可以将成对加法表示为较短的无点函数? 为了清楚理解我所说的无点,函数的无点声明涉及获取现有函数和运算符,并以创建所需函数的方式将它们相互应用。反引号,括号内文字值([],0,[1..3]等)允许的,但像关键字where和let不是。这表示: 您不得分配任何变量/功能 您不得使用lambda 您可能无法导入 这是CMC时的相同问题

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.