タグ付けされた質問 「functional-programming」

このタグは、関数型プログラミングパラダイムに関連する課題のためのものです。

30
小さな「H」から「H」を作成する
チャレンジ 整数を指定するとsize、次のことを行う関数またはプログラムを作成します。 size1に等しい場合、出力 H H HHH H H 場合はsize1、出力よりも大きく、 X X XXX X X どこXのプログラム/関数の出力size - 1 (必要に応じて0、回答で指定する限り、ベースケースをに対応させることができます) 次の出力形式のいずれかが受け入れられますが、どちらがより便利です。 任意の二つの異なる文字に対応する必要な構造の文字列Hとspace 対応する任意の二つの別個の値を要求される構造を有する二次元アレイ、H及びspace 任意の二つの別個の値は、対応する各列における出力の一つの行と列/文字列のリスト、Hおよびspace 各行に一定量の先行スペースがある限り、先行スペースを使用できます。2つの異なる出力文字は、異なる限り、選択したものに依存します。 コードが返す出力形式を指定します。 テストケース 1 H H HHH H H 2 H H H H HHH HHH H H H H H HH HH H HHHHHHHHH H HH HH …
73 code-golf  ascii-art  fractal  code-golf  code-golf  string  code-golf  string  matrix  code-golf  graph-theory  maze  binary-matrix  code-golf  kolmogorov-complexity  random  code-challenge  metagolf  test-battery  brain-flak  text-processing  code-golf  matrix  code-golf  number-theory  primes  code-golf  string  matrix  code-golf  binary  bitwise  code-golf  number  factorial  floating-point  code-golf  number  sequence  code-golf  sequence  cops-and-robbers  code-golf  sequence  cops-and-robbers  code-golf  string  code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

30
任意の長さのカレー
機能、書くf正の整数に取り、関数を返します、。 返される新しい関数はと同一である必要がありますf。ただし、「終了呼び出し」が発生した場合、f代わりに渡されたすべての整数の合計を返す必要があります。 たとえば、g=f(4)(f最初の関数の場合)g別の関数に設定する必要があります。h=g(3)同じことをします。ただし、h引数なしで呼び出した場合(詳細については以下を参照)、7を出力する必要があります。これは前の関数引数の合計であるためです。別の言い方をすればf(3)(4)() == 7。 これはと同じではないことに注意してくださいf(3,4)()。 「終了コール」は、次のオプションのいずれかです(選択)。 引数なしで呼び出す 引数としてnull 非正の値 任意の量の関数呼び出しをサポートする必要があります。事前に定義された制限はありません。 合計が1'000を超えないことが保証されています。 「終了呼び出し」の前に少なくとも1つの呼び出しが行われていると想定できます。 コードでは静的なプログラムごとの変数を使用しないでください。そのため、同じランタイムで実験を複数回実行し、まったく同じ動作を観察できるようにする必要があります。 例: f(1)() == 1 f(4)(2)(7)() == 13 f(4)(2)(7)(5)(2)() == 20

30
P Pr Pre Pref Prefi Prefix Prefixe Prefixes
いくつかの有限リストが与えられた場合、空のリストを含むすべてのプレフィックスのリストを長さの昇順で返します。 (基本的にHaskell関数を実装しますinits。) 詳細 入力リストには数字(またはより便利な場合は別のタイプ)が含まれます。 出力はリストのリストでなければなりません。 サブミッションは機能である必要はありますが、デフォルトのI / Oを使用できます。 すべての些細な解決策にCWの答えがあります。 例 [] -> [[]] [42] -> [[],[42]] [1,2,3,4] -> [[], [1], [1,2], [1,2,3], [1,2,3,4]] [4,3,2,1] -> [[], [4], [4,3], [4,3,2], [4,3,2,1]]

19
教会ブール
教会のブール値 A 教会ブールは戻って、その関数でx真のためにとy偽のためには、どこxの関数の最初の引数で、y関数の第二引数です。さらに機能が表現これらの関数から構成することができるand not or xorとimpliesの論理演算を。 チャレンジ 教会のブール値および構築and not or xorやimpliesお好みの言語で教会の門を。and orそしてxor、2つの関数(Churchブール値を表す)を取り、関数(別のChurchブール値を表す)を返す必要があります。同様に、notそれがとる関数を反転し、impliesゲートがブール値を実行する必要があります。impliesが2番目の。 得点 教会を作成するために必要なすべてのコードの全長、trueおよびfalseあなたの言語and not or xorとimplies教会の門は、機能の名前を除きます。(たとえば、false=lambda x,y:yPythonでは13バイトになります)。これらの名前は、コードの後半で再利用でき、そのゲートの合計バイト数に1バイトをカウントします。 擬似コードの例: 作成する関数は、コードの後半で呼び出すことができるはずです。 true(x, y) -> x false(x, y) -> y and(true, true)(x, y) -> x and(true, false)(x, y) -> y # ... etc

25
不動点を見つける
整数とブラックボックス関数を指定すると、で定義されたシーケンス内のの固定小数点を見つけます。x1 f: ℤ → ℤfxk+1 := f(xk) 詳細 値xはfifの固定小数点と呼ばれますx = f(x)。 たとえばf(x) := round(x/pi)、開始点がある場合、get 、then 、then 、およびfinally が返されます。x1 = 10x2 = f(x1) = f(10) = 3x3 = f(x2) = f(3) = 1x4 = f(x3) = f(1) = 0x5 = f(x4) = f(0) = 00 生成されたシーケンスには実際に固定小数点が含まれていると想定できます。 整数のネイティブ型をの代わりに使用できますℤ。 標準のIOメタポストでブラックボックス関数の入力にデフォルトがある任意の言語を使用できます。ご使用の言語にそのようなデフォルトがない場合は、ブラックボックス関数の定義の意味で自由に追加して、その定義に提案をリンクしてください。また、それらに投票することを忘れないでください。 例 f(x) = …

27
一般化されたマトリックストレース
インスピレーション。 与えられた(とにかく): 2つの引数(または2つの要素のリストで構成される単一の引数)ブラックボックス関数、(入力と出力は1、2、3、…)f: ℤ+ × ℤ+ → ℤ+ 少なくとも2行2列の厳密に正の整数行列 行列の関数traceを返します。 関数トレースとは何ですか? 通常のマトリックストレースは、マトリックスの主な対角線(左上から右下)の合計です。 [[1,2,3],[4,5,6],[7,8,9]]→ [1,5,9]→ 1+5+9→15 しかし、加算する代わりfに、対角線に沿って適用したい: [[1,2,3],[4,5,6],[7,8,9]]→ [1,5,9]→ f(f(1,5),9)かf(1,f(5,9)) 左から右または右から左のどちらを使用するかを明記してください。 指定された行列とすべての中間値は、言語の整数ドメイン内の厳密に正の整数になります。行列は非正方形の場合があります。 例 f(x,y) = xy、[[1,2,3],[4,5,6],[7,8,9]]→ 1×5×9→45 f(x,y) = xy、[[1,2,3],[4,5,6],[7,8,9]]→ →1591 f(x,y) = x-y、[[4,5,6],[1,2,3]]→ 4-2→2 f(x,y) = (x+y)⁄2、[[2,3,4],[5,6,7],[8,9,10]]→ 5または7 f(x,y) = x+2y、[[1,2,3],[4,5,6],[7,8,9]]→ 47または29 f(x,y) = max(x,y)、[[1,2,3],[4,5,6],[7,8,9]]→ max(1,5,9)→9 f(x,y) = 2x、[[1,2,3],[4,5,6],[7,8,9]]→ 2または4 …

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\ | | ^ ^ ^ | …

13
ロングタイプの署名を作成する
チャレンジ 最長のタイプシグネチャを持つ最大100バイトの式を見つけます。 ルール 型推論を持つ静的型付け言語はすべて許可されます 型は曖昧でない必要がありますが、定義されたインスタンスのない型を含めることができます。例えばNum [a]とEq [a]も定義されたインスタンスなしに、許可されています STDIN / STDOUTを使用してプログラムをコンパイルするために最低限必要な以外のインポートはありません 無限型は許可されていません 回答に複数の表現がある場合、スコアに貢献できるのは1つだけです。たとえば、作曲のタイプシグネチャは(.) :: (b -> c) -> (a -> b) -> a -> c20のスコアですが、25コピーの回答(.)\nのスコアは500ではなく20です。 式は最大100バイトでなければなりません スコアは、関数の名前と空白を除く、タイプシグネチャの文字数です。たとえばf :: (a -> b) -> a -> b、12のスコアがあります 最高のスコアが勝ちます! 例 他の言語も使用できますが、次の例はHaskellにあります。 Score: 112 map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map f :: (a -> b) -> [[[[[[[[[[[[[[[[[[[[[[[[[a]]]]]]]]]]]]]]]]]]]]]]]]] -> [[[[[[[[[[[[[[[[[[[[[[[[[b]]]]]]]]]]]]]]]]]]]]]]]]] Score: …

30
最初に0ではなく、個別の数字でランダムなn桁の数字を取得します
私はこの質問を読み、それがいい挑戦になると思った。 仕事 入力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 

9
関数型プログラミングパラダイムを実装する
あなたの会社はプロジェクトを始めたばかりで、初めて関数型プログラミングコードスタイルを使用することに決めました。しかし、上司は本当に気が進まないため、組み込み関数を使用したくないため、メイン関数を自分で実装する必要があります。特に、あなたは関数を記述する必要があります:Map、Nest、Apply、Range、FoldとTableお好みの言語で。上司は本当に忙しいので、プログラムをできるだけ短くしたいので、読書に時間を浪費しません。彼はまた、ループを使用しないことを望んでいるため、ループを使用しない場合のバイトカウントが10%削減されます。 機能の詳細な要件は以下のとおりです。 地図 Mapこの関数は2つのパラメータを取りますfし、listどこf関数であり、list値のリストです。のf各要素に適用されたを返す必要がありlistます。したがって、次のように機能します。 Map(f,{a,b,c}) 返す { f(a), f(b), f(c) } そして Map(f, {{a,b},{b,c}}) 返す { f({a,b}), f({b,c})} ネスト Nest機能は同様に3つのパラメータを取ります:f、arg、timesどこf機能があり、argその開始引数で、times関数が適用される回数です。にf適用されたtimes時間を含む式を返す必要がありargます。したがって、次のように機能します。 Nest(f, x, 3) 返す f(f(f(x))) そして Nest(f, {a,b}, 3) 返す f(f(f({a,b}))) 適用する Applyこの関数は2つのパラメータを取りますfし、argsどこfの機能とあるargsリスト。に適用fする必要がありますargs。したがって: Apply(f, {a,b,c}) 返す f(a,b,c) 範囲 このRange関数は1つの整数rを取り、その数までの整数を出力します。したがって: Range(5) 返す { 1, 2, 3, 4, 5} 折ります Foldこの関数は3つのパラメータを取りf、arg、othersどこfの関数である、arg簡単なパラメータ、及びあるothersリスト。以下のように機能します: Fold(f, …

13
カレーにして
引数x 1、x 2、…、x nをとる関数fを持つ –すなわち。 f:X 1 ×X 2 ×…×X n →Y – カリー化は、fを、さらに別の関数にマップする単一の引数a 1をとる関数として再定義します。このテクニックは、部分的に適用する場合に便利です。たとえば、カリー化したpow関数を使用して記述できますexp = pow(e)。 例 3つの引数(f:X 1 ×X 2 ×X 3 →Y)を取る次の関数fがあると仮定します。 def f(a,b,c): return a + b * c この関数をカリー化すると、f_curryが残ります:X 1 →(X 2 →(X 3 →Y))、その関数を2回呼び出すと、次と同等のf_curry(1)(2)関数(h)が返されます: def h(c): return 1 + 2 * c カリー化された関数fは次のように書くことができます(Python 3): …

14
これは切り捨てられた三角形の数ですか?
関連するOEISシーケンス:A008867 切り捨てられた三角数 三角形の数の一般的なプロパティは、三角形に配置できることです。たとえば、21を取り、osの三角形に配置します。 o ああ おー おおおお ああ おっと 各角から同じサイズの三角形を切り取る「切り捨て」を定義しましょう。21を切り捨てる1つの方法は次のとおりです。 。 。。 おー おおおお 。おー。 。。oo。。 (の三角形は.オリジナルからカットされます)。 o残りは12 秒なので、12は切り捨てられた三角形の番号です。 仕事 あなたの仕事は、整数を取り、数値が切り捨てられた三角形の数であるかどうかを返す(または標準出力メソッドのいずれかを使用する)プログラムまたは関数(または同等のもの)を書くことです。 ルール 標準的な抜け穴はありません。 入力は負でない整数です。 カットの辺の長さは元の三角形の半分を超えることはできません(つまり、カットは重なり合うことができません) カットの辺の長さはゼロにすることができます。 テストケース 真実: 0 1 3 6 7 10 12 15 18 19 偽物: 2 4 5 8 9 11 13 14 16 17 20 …
20 code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

1
λ式をSK式に変換
λ計算、又はラムダ計算は、匿名関数に基づいて、論理システムです。たとえば、これはλ式です。 λf.(λx.xx)(λx.f(xx)) ただし、この課題のために、表記を簡略化します。 に変更λします\(入力しやすくするため):\f.(\x.xx)(\x.f(xx)) .我々はそれをドロップすることができますので、ラムダヘッダーのは、不要です。\f(\xxx)(\xf(xx)) 使用Unlambdaとスタイルのプレフィックス表記を`(これを行う方法の完全な説明については、参照ではなく2つの関数を書くよりもアプリケーションのためのラムダ計算表記間の変換を):\f`\x`xx\x`f`xx これは最も複雑な代替です。各変数を、その変数が属するラムダヘッダーに対してどれだけ深くネストされているかに基づいて、括弧内の数字で置き換えます(つまり、0ベースのDe Bruijnインデックスを使用します)。たとえば、\xx(恒等関数)では、式を変数から最後までトラバースするときに遭遇する最初の(0から始まる)ヘッダーに属するためx、本文のはに置き換えられ[0]ます。\x\y``\x`xxxyに変換され\x\y``\x`[0][0][1][0]ます。ヘッダーに変数をドロップして、を残すことができます\\``\`[0][0][1][0]。 組み合わせ論理は、基本的にλ計算から作成されたチューリングターピットです(まあ、実際は最初に来ましたが、ここでは無関係です)。 「組み合わせロジックはラムダ計算の変形と見なすことができ、ラムダ式(機能の抽象化を表す)は限定されたコンビネータのセット、バインドされた変数が存在しないプリミティブ関数に置き換えられます。」1 組み合わせロジックの最も一般的なタイプはSKコンビネーター計算で、次のプリミティブを使用します。 K = λx.λy.x S = λx.λy.λz.xz(yz) コンビネータI = λx.xが追加されることもありますが、SKK(または実際SKxにはx)と同等であるため、冗長Iです。 必要なのは、λ計算の任意の式をエンコードできるようにするためのK、S、およびアプリケーションだけです。例として、関数λf.(λx.xx)(λx.f(xx))から組み合わせロジックへの変換を次に示します。 λf.(λx.xx)(λx.f(xx)) = S(K(λx.xx))(λf.λx.f(xx)) λx.f(xx) = S(Kf)(S(SKK)(SKK)) λf.λx.f(xx) = λf.S(Kf)(S(SKK)(SKK)) λf.S(Sf)(S(SKK)(SKK)) = S(λf.S(Sf))(K(S(SKK)(SKK))) λf.S(Sf) = S(KS)S λf.λx.f(xx) = S(S(KS)S)(K(S(SKK)(SKK))) λx.xx = S(SKK)(SKK) λf.(λx.xx)(λx.f(xx)) = S(K(S(SKK)(SKK)))(S(S(KS)S)(K(S(SKK)(SKK)))) プレフィックス表記を使用しているため、これは```S`K``S``SKK``SKK``S``S`KSS`K``SKK`です。 1出典:ウィキペディア チャレンジ 今までに、あなたはおそらく何であるかを推測しました:有効なλ式(上記の表記法)を入力および出力(または返す)としてSKコンビネーター計算で書き直されたプログラムを書く。これを書き換える方法は無限にあることに注意してください。無限の方法のいずれかを出力するだけです。 これはcode-golfであるため、最短の有効な送信(バイト単位で測定)が優先されます。 …

13
ディリクレ畳み込み
ディリクレ畳み込みは、特別な種類のあるコンボリューション数論において非常に有用なツールとして表示されます。算術関数のセットで動作します。 チャレンジ 2つの算術関数f,gf,gf,g(関数f,g:N→Rf,g:N→Rf,g: \mathbb N \to \mathbb R)が与えられた場合、ディリクレ畳み込み (f ∗ g )を計算します:N → R(f∗g):N→R(f∗g):N→R(f * g): \mathbb N \to \mathbb R以下に定義します。 詳細 我々は、規則を使用0∉N={1,2,3,…}0∉N={1,2,3,…} 0 \notin \mathbb N = \{1,2,3,\ldots \}。 ディリクレ畳み込みf∗gf∗gf*g 2つの算術関数のf,gf,gf,g再び演算機能であり、それは以下のように定義される(f∗g)(n)=∑d|nf(nd)⋅g(d)=∑i⋅j=nf(i)⋅g(j).(f∗g)(n)=∑d|nf(nd)⋅g(d)=∑i⋅j=nf(i)⋅g(j).(f * g)(n) = \sum_\limits{d|n} f\left(\frac{n}{d}\right)\cdot g(d) = \sum_{i\cdot j = n} f(i)\cdot g(j).(両方和は表現と等価であるd|nd|nd|n手段は、d∈Nd∈Nd \in \mathbb N分割nnn従って総和は自然の上にある、除数の nnn同様に、我々はsubsituteすることができる。i=nd∈N,j=d∈Ni=nd∈N,j=d∈N i …

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.