Questions tagged «haskell»

这一挑战与Haskell语言有关。请注意,通常不建议要求答案使用特定语言的挑战。

30
哈斯克尔高尔夫技巧
您在Haskell打高尔夫球有哪些一般秘诀?我正在寻找可以应用于编码高尔夫问题的想法,这些想法至少在某种程度上特定于Haskell。每个答案请只发表一个提示。 如果您是Haskell的高尔夫新手,请参阅Haskell的高尔夫规则指南。还有一个专门的Haskell聊天室:Monads and Men。

30
无糖语法
在Haskell中,列表符号: [a,b,c] 只是语法糖,用于: a:b:c:[] 和字符串符号: "abc" 只是语法糖,用于: ['a','b','c'] 这意味着字符串: "abc" 是相同的: 'a':'b':'c':[] 任务 给定一个字符串,您应该输出在Haskell中看起来像无语法的版本。 规则 您将通过任何有效的输入方法收到一个字符串,您应该输出一个字符串,该字符串以:[]输入中的每个字符结尾,并用包围'并用分隔:。空字符串应该输出[]。 您可以假设您不会收到任何需要转义的字符(例如',换行符,制表符...),并且输入内容处于可打印的ascii范围内 这是代码高尔夫球,您应尽量减少答案的字节数 测试用例 "" -> [] "a" -> 'a':[] "Hello, World" -> 'H':'e':'l':'l':'o':',':' ':'W':'o':'r':'l':'d':[]

30
等等,这是什么语言?
最近,我很高兴编写了一个Haskell程序,该程序可以检测到NegativeLiterals扩展是否被使用。我想出了以下几点: data B=B{u::Integer} instance Num B where{fromInteger=B;negate _=B 1} main=print$1==u(-1) 在线尝试! 它将True正常打印,False否则打印。 现在,我的工作非常有趣,我将挑战扩展到了所有人。您还可以破解其他哪些Haskell语言扩展? 规则 要破解特定的语言扩展,您必须编写一个Haskell程序,该程序可以同时编译有无语言扩展(警告很好),并在使用该语言扩展运行并关闭时输出两个不同的非错误值(通过将No前缀添加到语言扩展)。这样,上面的代码可以简化为: data B=B{u::Integer} instance Num B where{fromInteger=B;negate _=B 1} main=print$u(-1) 打印1和-1。 您用来破解扩展程序的任何方法都必须特定于该扩展程序。如果不允许的话,可能有一些方法可以任意检测启用了哪些编译器标志或LanguageExtensions。您可以启用其他语言扩展或更改编译器优化-O,而无需花费任何字节数。 语言扩展 你无法破解任何语言扩展,没有一个No对应物(例如Haskell98,Haskell2010,Unsafe,Trustworthy,Safe),因为这些不属于上文所列的条款。所有其他语言扩展都是公平的游戏。 计分 您是第一个破解的人,每种语言扩展都会获得一分,而您破解最短(以字节为单位)的每种语言扩展将获得一分。对于第二点,将打破联系以支持较早的提交。分数越高越好 您将无法为首次提交打分,NegativeLiterals或者QuasiQuotes因为我已经破解了它们并将其包含在帖子正文中。但是,您将能够在每一个裂缝中得分最短的地方得分。这是我的裂缝QuasiQuotes import Text.Heredoc main=print[here|here<-""] -- |] 在线尝试!

12
让我们做Diet Haskell
Haskell有可以写成的元组 (a,b,c) 但这只是语法糖 (,,)a b c 在一般的Ñ元组可以与形成n-1个 , S之间(... )接着它的元素用空格分开。例如7元组(1,2,3,4,5,6,7)可以由 (,,,,,,)1 2 3 4 5 6 7 由于Haskell没有1元组,因此无法形成它们。您也不会对空元组负责。 嵌套元组可以使用括号来覆盖操作顺序。 ((1,2),3) == (,)((,)1 2)3 作为我们从Haskell删除所有语法糖的追求的一部分, 我要请您编写一个程序,从Haskell的元组中删除语法糖。 您的程序应采用一个元组,一个数组或一个表示含糖元组的字符串,并应输出一个表示“无糖”元组的字符串。输入元组将只包含正整数或其他元组。 由于我们在这里打高尔夫球,您的输出应该很短。它不应包含不必要的内容 空格。空格仅应用于分隔元组函数的参数,并且不应出现在a )或a之后( 括号。仅在形成元组函数或嵌套元组时才应使用括号。 这是一个代码问题,因此答案将以字节计分,而字节数越少越好。 测试用例 (1,2) -> (,)1 2 (1,2,3) -> (,,)1 2 3 ((1,2),3) -> (,)((,)1 2)3 (1,2,3,4) -> (,,,)1 2 3 …


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

30
从原动力中恢复原动力
定义:素数幂是自然数,可以以p n的形式表示,其中p是素数,n是自然数。 任务:给定素数p n > 1,返回素数p。 测试用例: input output 9 3 16 2 343 7 2687 2687 59049 3 计分:这是代码高尔夫球。以字节为单位的最短答案将获胜。
13 code-golf  arithmetic  primes  king-of-the-hill  python  board-game  code-golf  number  subsequence  code-golf  ascii-art  code-golf  array-manipulation  decision-problem  grid  fastest-algorithm  logic-gates  logic  code-golf  cards  code-golf  rational-numbers  code-golf  math  number  sequence  code-golf  array-manipulation  integer  code-golf  number  array-manipulation  code-golf  number  sequence  decision-problem  code-golf  ascii-art  number  code-challenge  sequence  arithmetic  sorting  code-golf  date  fastest-algorithm  code-golf  string  number  random  combinatorics  code-golf  combinatorics  code-golf  ascii-art  base-conversion  code-golf  array-manipulation  code-golf  string  code-golf  string  number  arithmetic  code-golf  kolmogorov-complexity  code-golf  string  array-manipulation  json  code-golf  puzzle-solver  code-golf  binary  graph-theory  code-golf  arithmetic  haskell  code-golf  string  cipher  code-golf  code-golf  string  parsing  alphabet  code-golf  string  code-golf  ascii-art  code-golf  string  number  code-golf  string  balanced-string 


7
高尔夫代码:弗雷序列(I)
挑战 在此任务中,您将得到一个整数N(小于10 ^ 5),输出N阶的Farey序列。 输入N在单行中给出,输入由EOF终止。 输入项 4 3 1 2 输出量 F4 = {0/1, 1/4, 1/3, 1/2, 2/3, 3/4, 1/1} F3 = {0/1, 1/3, 1/2, 2/3, 1/1} F1 = {0/1, 1/1} F2 = {0/1, 1/2, 1/1} 约束条件 输入数量不会超过10 ^ 6个值 您可以使用任何选择的语言 最短的解决方案获胜!
10 code-golf  math  code-golf  math  code-golf  number  number-theory  code-golf  math  arithmetic  repeated-transformation  code-golf  geometry  popularity-contest  code-golf  code-golf  tips  haskell  math  fastest-algorithm  code-golf  combinatorics  code-golf  math  polynomials  rational-numbers  code-golf  code-golf  popularity-contest  javascript  code-golf  kolmogorov-complexity  code-golf  code-golf  math  combinatorics  permutations  code-challenge  restricted-source  random  array-manipulation  code-challenge  generation  code-golf  code-golf  ascii-art  arithmetic  division  code-challenge  number  code-golf  math  number  binary  code-golf  ascii-art  code-golf  interpreter  stack  code-golf  internet  networking  code-golf  math  code-golf  ascii-art  code-golf  math  sequence  code-golf  hello-world  restricted-source  code-golf  ascii-art  code-golf  geometry  code-golf  kolmogorov-complexity  pi  code-golf  math  combinatorics  permutations  code-golf  math  code-challenge  ascii-art  code-golf  string  code-golf  quine  code-golf  math  floating-point  golfscript  code-golf  string  code-golf  sliding-puzzle  code-challenge  arithmetic  code-golf  math  code-golf  geometry  optimized-output 

3
解释算术
一个鲜为人知的事实是,如果您打开足够多的语言扩展(ghc),Haskell会成为一种动态类型的解释语言!例如,以下程序实现加法。 {-# Language MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances, UndecidableInstances #-} data Zero data Succ a class Add a b c | a b -> c instance Add Zero a a instance (Add a b c) => Add (Succ a) b (Succ c) 看起来真的不再像Haskell了。对于一个而不是对对象进行操作,我们对类型进行操作。每个数字都是它自己的类型。除了函数,我们有类型类。函数依赖使我们可以将它们用作类型之间的函数。 那么我们如何调用我们的代码?我们使用另一类 class Test a | -> a where test …
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.