{2n + 3m + 1 | n、m∈N}をリスト内包式で表現するにはどうすればよいですか? Nは0を含む自然数の集合です。リストの理解形式で{2n + 3m + 1 | n、m∈N}を表現する方法は? (Nは0を含む自然数の集合)
答えて
:それはm = 0
で始まり、すべてのn
を通過した後、m = 1
を持っており、すべてのnを通過する、などしかし、単にm = 0
一部が無限であるので
1:[3..]
リストの理解を使用するように求められた。 – Romildo
[2*n + 3*m +1 | m <- [0..], n <- [0..]]
が動作しません。あなたはm = 1または2または3などになることはありませんので、[2*n + 3*m +1 | m <- [0..], n <- [0..]]
は[2*n + 3*0 +1 | n <- [0..]]
とまったく同じです。
これらのすべてを生成するには、ユーザーvartecやHynek -Pichi- Vychodilのように、必要な数字のセットが自然数{0,2}であることが必要です。または、m、nが負でないように、何らかの方法ですべてのペア(m、n)を列挙する必要があります。これを行うための1つの方法は、「対角線」のそれぞれに沿って行くことです。ここで、m + n
は同じです。だから、m + n = 0
の数字から始まり、m + n = 1
などの対角線の数字が始まります。これらの対角線のそれぞれは有限数のペアを持っていますので、常に次のものに進み、すべてのペア(m、n)は最終的には数えられる。私たちはi = m + n
とj = m
せた場合
は、その後、[(m, n) | m <- [0..], n <- [0..]]
はあなただけで複数存在するため、この方法はまた、(あなたのための複製を生成しますもちろん(
[2*(i-j) + 3*j +1 | i <- [0..], j <- [0..i]]
行うことができ、あなたのため[(j, i - j) | i <- [0..], j <- [0..i]]
そうなりましたあなたの式で同じ数を生成するm、n)のペア)。
次のHaskell関数は、一方または両方が無限であっても、2つのリストのすべてのペアを提供します。各ペアは、一度だけ表示されます:
allPairs :: [a] -> [b] -> [(a, b)]
allPairs _ [] = []
allPairs [] _ = []
allPairs (a:as) (b:bs) =
(a, b) : ([(a, b) | b <- bs] `merge`
[(a, b) | a <- as] `merge`
allPairs as bs)
where merge (x:xs) l = x : merge l xs
merge [] l = l
あなたは、その後、それがどのように動作するかの感触を得る無限1/4平面を描き、そして
の結果を見るために[2 * n + 3 * m + 1 | (n,m) <- allPairs [0..] [0..] ]
としてあなたのリストを書くことができ
take 100 $ allPairs [0..] [0..]
すべての整数のペアを列挙できます。 このコードは
data Pair=Pair Int Int deriving Show
instance Enum Pair where
toEnum n=let l k=truncate (1/2 + sqrt(2.0*fromIntegral k-1))
m k=k-(l k-1)*(l k) `div` 2
in
Pair (m n) (1+(l n)-(m n))
fromEnum (Pair x y)=x+((x+y-1)*(x+y-2)) `div` 2
(0は含まれません)University of California Berkeleyで説明列挙に基づいています。しかし、あなたは別の列挙を使用することができます。
次に、あなたが行うことができます:
[2*n+3*m+1|Pair n m<-map toEnum [1..]]
私の0.2を:
trans = concat [ f n | n <- [1..]]
where
mklst x = (\(a,b) -> a++b).unzip.(take x).repeat
f n | n `mod` 2 == 0 = r:(mklst n (u,l))
| otherwise = u:(mklst n (r,d))
u = \(a,b)->(a,b+1)
d = \(a,b)->(a,b-1)
l = \(a,b)->(a-1,b)
r = \(a,b)->(a+1,b)
mkpairs acc (f:fs) = acc':mkpairs acc' fs
where acc' = f acc
allpairs = (0,0):mkpairs (0,0) trans
result = [2*n + 3*m + 1 | (n,m) <- allpairs]
- 1. f(n)= log(n)^ mはすべての自然数mに対してO(n)
- 2. このバイナリ漸化式の式を見つけますか? f(m、n)= f(m-1、n)+ f(m、n-1)
- 3. regex {m、n}と(正規表現){m、n}の違いは何ですか?
- 4. n&(n-1)この表現は何をしますか?
- 5. PHPでn次の等式を解く方法は? PHPでn番目度方程式を解く方法
- 6. N /(2N - 1)の再帰的和
- 7. A [n-1]> = A [n] <= A [n + 1]
- 8. EFでN-N関係を処理する方法は?
- 9. Javascript、正規表現と{n、m}
- 10. M個のスレッド(1タスクにつき1個)を管理してN個のスレッドのみを同時に管理する方法。 N <MでJavaで
- 11. 2n RAMでn^2要素をソートする方法
- 12. hadoopを\ n \ nから\ nに変換し、ARC形式を破る
- 13. なぜRubyはFixNum nを2n + 1にハッシュしますか?
- 14. n対nの関係1行で結果を得る方法
- 15. 文字列をリストに変換するには、文字列 '\ n \ n \ n \ n \ n'で分割しますか?
- 16. はX^n(1/n)よりも効率的ですか? (nは整数)
- 17. サイズM×NのデータフレームをR
- 18. Entity FrameworkでN-N関係を処理する方法.NET 3.5
- 19. は、合計で一日中乱数N時間を選ぶM
- 20. n> 0の間、nは床(sqrt(n)) - 1になることができますか?
- 21. Numpy:shapewise(n、1)と(n、)の2つのベクトルを要素に掛ける方法は?
- 22. 床(√2n)のO(log log n)アルゴリズム?
- 23. T(n)= 2T(n/2)+ O(n)からO(nlogn)を得る方法
- 24. rinari-consoleでM-pとM-nを動作させる方法
- 25. (m、n)の形のnumpy配列に画像を含むフォルダを解析します。
- 26. tablesorter n [0] undefined
- 27. Django - フォームフィールドを1つの形式でn回繰り返す
- 28. (n、1)と(n、)のnumpy配列
- 29. 複数の\ r \ n(CRLF)を1つに置換する\ r \ n
- 30. 形式0^n(nは素数)の言語が規則的でも文脈自由でもないことを証明する
これは宿題の質問のように見えるが、そのようなとしてタグ付けされていません。対応するFAQをお読みください:http://stackoverflow.com/questions/230510/homework-on-stackoverflow – nominolo
これは具体的なものではありません。回答にセマンティクス(重複しない)を設定しますか?秩序は問題ですか? –