関数型プログラミング言語 Haskell について語るスレです。
haskell.org (公式サイト)
http://www.haskell.org/
前スレ
関数型プログラミング言語Haskell Part28
http://echo.2ch.net/test/read.cgi/tech/1428597032/
探検
関数型プログラミング言語Haskell Part30 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
2017/01/15(日) 23:43:54.28ID:Vh4eztBk
987デフォルトの名無しさん
2017/09/24(日) 10:57:49.47ID:G5x2bhDn >>986
とりあえず先に進めるようになりました。
アドバイスありがとうございました。
たしかに私は ArchLinux を使っています。
Haskell の問題にディストリビューションの違いが絡んでくるとは考えていませんでした。
はじめ ncurses5-compat-libs をインストールしただけでは解決されませんでした。
(ログインし直しても)
そこで stack を一度綺麗にアンインストールしてから再インストールし、
それでもダメで、更にビルド時に -fPIC オプションを付けたらエラー無く通りました。
何が原因で処置がどう働いてこういう結果になったのか、まだ何となくでしか分かりませんが、
とにかく SDL を用いたプログラムを試すことができるようになり良かったです。
とりあえず先に進めるようになりました。
アドバイスありがとうございました。
たしかに私は ArchLinux を使っています。
Haskell の問題にディストリビューションの違いが絡んでくるとは考えていませんでした。
はじめ ncurses5-compat-libs をインストールしただけでは解決されませんでした。
(ログインし直しても)
そこで stack を一度綺麗にアンインストールしてから再インストールし、
それでもダメで、更にビルド時に -fPIC オプションを付けたらエラー無く通りました。
何が原因で処置がどう働いてこういう結果になったのか、まだ何となくでしか分かりませんが、
とにかく SDL を用いたプログラムを試すことができるようになり良かったです。
988デフォルトの名無しさん
2017/09/25(月) 22:51:00.48ID:xypOJPnn 集合Aと整数mを引数に取り、Aの可能なm分割全体から成る集合Mを返す関数を作りたいです。
(m分割とは集合論的にm個の集合に分割することとする)
例:
集合 A = {a, b, c, d} と m=2 を引数に取ると、下記の集合Mを返す。
M = {{{a}, {b,c,d}}, {{b}, {a,c,d}}, {{c}, {a,b,d}}, {{d}, {a,b,c}}
, {{a,b}, {c,d}}, {{a,c}, {b,d}}, {{a,d}, {b,c}} }
集合を表す型は何でも良いです。
Data.List でも Data.Set でも、その他の型でも。
Haskell で効率よく書けるでしょうか。
ここでいう効率とは、空間よりも時間を優先します。
空間も小さければ尚良いですし、ソースが綺麗ならいっそう良いです。
かれこれ一週間ほど考えていますが (と言っても四六時中ではありませんが)、
なかなか良いアイデアが浮かびません。
前もって言っておきますが、実際の集合Aのサイズはせいぜい20程度で、分割数も2に固定です。
質問のきっかけとなった問題は愚直に実装して解決しました。
なので、この質問は純粋に頭の体操、ゲームです。
(m分割とは集合論的にm個の集合に分割することとする)
例:
集合 A = {a, b, c, d} と m=2 を引数に取ると、下記の集合Mを返す。
M = {{{a}, {b,c,d}}, {{b}, {a,c,d}}, {{c}, {a,b,d}}, {{d}, {a,b,c}}
, {{a,b}, {c,d}}, {{a,c}, {b,d}}, {{a,d}, {b,c}} }
集合を表す型は何でも良いです。
Data.List でも Data.Set でも、その他の型でも。
Haskell で効率よく書けるでしょうか。
ここでいう効率とは、空間よりも時間を優先します。
空間も小さければ尚良いですし、ソースが綺麗ならいっそう良いです。
かれこれ一週間ほど考えていますが (と言っても四六時中ではありませんが)、
なかなか良いアイデアが浮かびません。
前もって言っておきますが、実際の集合Aのサイズはせいぜい20程度で、分割数も2に固定です。
質問のきっかけとなった問題は愚直に実装して解決しました。
なので、この質問は純粋に頭の体操、ゲームです。
989デフォルトの名無しさん
2017/09/26(火) 00:11:58.02ID:lGqC8DP/ 集合の任意の要素m個(nCm)に1〜mの番号を重複なく振る(順列m!)、残りの要素に1〜mの番号を適当に振る(m^(n-m))
990デフォルトの名無しさん
2017/09/26(火) 07:15:14.90ID:YKUYL+7U >>989
その方法ですと重複が起きます。
極端な話、集合 {a, b} を 2 つに分割する場合、
番号 1 と番号 2 を重複無く振る方法は2通りあります。
1. a=1、b=2
2. a=2、b=1
残りの要素は無いのでそのまま目的の集合を作ると、
どちらの方法で作っても同じ集合 {{{1}, {2}}} になります。
最後に重複をまとめて排除するのでしょうか。
その方法ですと重複が起きます。
極端な話、集合 {a, b} を 2 つに分割する場合、
番号 1 と番号 2 を重複無く振る方法は2通りあります。
1. a=1、b=2
2. a=2、b=1
残りの要素は無いのでそのまま目的の集合を作ると、
どちらの方法で作っても同じ集合 {{{1}, {2}}} になります。
最後に重複をまとめて排除するのでしょうか。
991デフォルトの名無しさん
2017/09/26(火) 07:27:48.34ID:8PxDtYJG 部分集合作って差集合とのタプルにして最後に重複省くくらいしか思いつけない
992デフォルトの名無しさん
2017/09/26(火) 07:50:17.87ID:gfUhXOzb {a, b, c, d, e}でm=3なら
{a, b, c, d}でm=3のときの答えのリストにmap(:)'e'
それに加えて、{a, b, c}でm=2のときの答えに(:)'e'
集合の長さとmが同じならそのまま返す
みたいな感じじゃダメ?
{a, b, c, d}でm=3のときの答えのリストにmap(:)'e'
それに加えて、{a, b, c}でm=2のときの答えに(:)'e'
集合の長さとmが同じならそのまま返す
みたいな感じじゃダメ?
993デフォルトの名無しさん
2017/09/26(火) 07:51:32.23ID:gfUhXOzb 訂正
{a, b, c, d}でm=2のときの答えに(:)'e'
{a, b, c, d}でm=2のときの答えに(:)'e'
994デフォルトの名無しさん
2017/09/26(火) 10:27:56.68ID:g1C4tf16995デフォルトの名無しさん
2017/09/26(火) 10:46:10.91ID:cHfS1yYI inter :: a -> [[a]] -> [[[a]]]
inter x = go
where
go [] = []
go (y:ys) = ((x:y):ys) : map (y:) (go ys)
part :: Int -> [a] ->[[[a]]]
part _ [] = []
part 1 xs = [[xs]]
part k (x:xs) = map ([x]:) prev_ks ++ concatMap (inter x) ks
where
prev_ks = part (k-1) xs
ks = part k xs
main = print $ part 3 [1..4]
inter x = go
where
go [] = []
go (y:ys) = ((x:y):ys) : map (y:) (go ys)
part :: Int -> [a] ->[[[a]]]
part _ [] = []
part 1 xs = [[xs]]
part k (x:xs) = map ([x]:) prev_ks ++ concatMap (inter x) ks
where
prev_ks = part (k-1) xs
ks = part k xs
main = print $ part 3 [1..4]
996デフォルトの名無しさん
2017/09/26(火) 21:54:38.15ID:YKUYL+7U997デフォルトの名無しさん
2017/09/26(火) 23:41:18.71ID:pHNMsW6Q n個の異なる要素のリストから[3,3,4,1,8,...]などとサイズ指定リストに従って分割するときの全列挙をするにはどうしますか?
分割はサイズ以外に見分けはつかないものとします
[[a,b,c],[d,e,f]]
と
[[d,e,f],[a,b,c]]はダブルカウントです
分割はサイズ以外に見分けはつかないものとします
[[a,b,c],[d,e,f]]
と
[[d,e,f],[a,b,c]]はダブルカウントです
998デフォルトの名無しさん
2017/09/26(火) 23:55:56.84ID:LAGAI/jv 分割の言葉のお前の定義からきかせてもらおうか。英語でok
999デフォルトの名無しさん
2017/09/27(水) 00:47:00.32ID:wiD7jN/4 bunkatsu "abcdefghij" [1,2,3,4]
なら
[["a","bc","def","ghij"],...みたいにです
なら
[["a","bc","def","ghij"],...みたいにです
1000デフォルトの名無しさん
2017/09/27(水) 01:19:52.15ID:iTQClNYA >>999
listl take 自然変換
listl take 自然変換
10011001
Over 1000Thread このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 254日 1時間 35分 58秒
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 254日 1時間 35分 58秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- アメリカ、入国時に「日本人を含む外国人観光客の最大5年分のSNS履歴の提出」義務化 過去10年間に使用のメールアドレスや電話番号等も [Hitzeschleier★]
- 日本語が話せない「外国籍」の子が急増中、授業がストップ、教室から脱走も…先生にも大きな負担「日本語支援」追いつかず★2 [七波羅探題★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★3 [Hitzeschleier★]
- 【芸能】デパートで見つけたランドセルが衝撃価格! つまみ枝豆「どこかで規制しないと」に共感の声殺到 「全て同感」「高すぎます」★2 [冬月記者★]
- 【速報】年収の壁の自民案判明、26年は168万円 [蚤の市★]
- 「ワールドトリガー」原作1話から完全新作アニメ化、よりパワーアップした1stシーズンとして [爆笑ゴリラ★]
- 【高市朗報】鈴木農水大臣「アホ進次郎の備蓄米放出で米卸売と倉庫業者に迷惑かけた。反省し税金で損失を補償します」 [517459952]
- 男だけどおっぱいがある
- 【悲報】鈴木農水大臣、国民から「こいつひょっとしてアホなんじゃね?」と思われ始めてしまうwww [793117252]
- 「ミニトマトがボウルに入ってるから使ったら残りはラップして輪ゴムしといてー」👉アスペ系旦那、とんでもない行動に出てしまう [242521385]
- 自閉症児の父親「中絶しておけば良かった。 家族が欲しかったのに、手に入れたのは人間たまごっち」 [777114754]
- 性獣フェラチオンが出現
