タグ付けされた質問 「haskell」

30
Haskellでのゴルフのヒント
Haskellでゴルフをするための一般的なヒントは何ですか?私は、少なくともHaskellに特有のゴルフ問題全般のコーディングに適用できるアイデアを探しています。回答ごとに1つのヒントのみを投稿してください。 Haskellでゴルフをするのが初めての場合は、Haskellのゴルフ規則ガイドをご覧ください。また、専用のHaskellチャットルーム:Of 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
待って、これは何の言語?
最近、NegativeLiterals拡張機能が使用されているかどうかを検出できるHaskellプログラムを作成することができました。私は次のことを思いつきました: data B=B{u::Integer} instance Num B where{fromInteger=B;negate _=B 1} main=print$1==u(-1) オンラインでお試しください! これはTrue正常に印刷され、Falseます。 今、私はこれをするのがとても楽しかったです。私はあなた全員に挑戦を広げています。他にどのHaskell言語拡張機能をクラックできますか? ルール 特定の言語拡張をクラックするには、言語拡張ありとなしの両方でコンパイルし(警告は問題ありません)、言語拡張を使用して実行したときに2つの異なる非エラー値を出力する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これらは、上で概説条項に該当しないために)。他の言語拡張機能はすべて公平なゲームです。 得点 あなたが最初にクラックする言語拡張機能ごとに1ポイント、最短(バイト単位で)クラックするすべての言語拡張機能に1ポイント追加されます。2番目の点については、以前の提出を支持して関係が破られるでしょう。スコアが高いほど良い 最初の投稿でポイントを獲得することはできません。NegativeLiteralsまたはQuasiQuotes、既にそれらをクラックして投稿の本文に含めているためです。ただし、これらのそれぞれの最短クラックのポイントを獲得できます。ここに私の亀裂がありますQuasiQuotes import Text.Heredoc main=print[here|here<-""] -- |] オンラインでお試しください!

12
ダイエットハスケルを作ろう
Haskellには、次のように記述できるタプルがあります。 (a,b,c) ただし、これは (,,)a b c 一般に、nタプルは、... の間にn-1が 続くスペースで区切られた要素で構成されます。例えば、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の後)または前には表示しないでください。( 括弧。括弧は、タプル関数を作成するとき、またはタプルをネストするときにのみ使用する必要があります。 これはコードゴルフの質問なので、回答はバイト単位で記録され、バイト数は少ない方が良いでしょう。 テストケース (1,2) -> (,)1 2 (1,2,3) -> (,,)1 2 3 ((1,2),3) -> (,)((,)1 2)3 (1,2,3,4) -> (,,,)1 2 3 4 (1,(2,3)) …

3
Haskellの最短のa-> b->(a-> b)関数
テストで次の質問がありました。 f次のタイプの関数を作成しますa -> b -> (a -> b)。aまたb、いかなる意味においても束縛されるべきではありません。コードが短いほど良いです。 私は思いついたf a b = \x -> snd ([a,x],b)。もっと小さなものを見つけることができますか? 現在の勝者は: f _=(.f).const

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はありません。これの意味は: 変数/関数を割り当てることはできません ラムダは使用できません インポートできません これは、CMCであったときの同じ質問です

30
プライムパワーからプライムを回復する
定義:素数はp nの形式で表現できる自然数です。pは素数で、nは自然数です。 タスク:プライムパワーp n > 1の場合、プライムpを返します。 テストケース: input output 9 3 16 2 343 7 2687 2687 59049 3 得点:これはcode-golfです。バイト単位の最短回答が優先されます。
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 

2
Haskellを使用して配列を必要とするタスクを処理する良い方法は何ですか?
多くの場合、タスクには実際の配列が必要です。たとえば、Befungeまたは> <>を実装するタスクを取ります。私はArrayこのためにモジュールを使用しようとしましたが、非常に冗長でコーディングしているように感じるので、本当に面倒です。そのようなコードゴルフのタスクをより冗長で機能的にする方法を誰かが私に助けてもらえますか?

7
コードゴルフ:フェイリーシーケンス(I)
チャレンジ このタスクでは、整数N(10 ^ 5未満)が与えられ、次数NのFareyシーケンスが出力されます。 入力Nは1行で指定され、入力は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 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.