반응형
루비에서 배열의 교차점, 결합 및 하위 집합을 어떻게 얻을 수 있습니까?
멀티셋이라는 클래스에 대해 다른 메소드를 만들고 싶습니다.
저는 필요한 모든 방법을 가지고 있지만, 교차법, 결합법, 부분 집합법을 어떻게 써야 할지 잘 모르겠습니다.
교차로와 결합의 경우, 내 코드는 다음과 같이 시작합니다.
def intersect(var)
x = Multiset.new
end
다음은 예입니다.
X = [1, 1, 2, 4]
Y = [1, 2, 2, 2]
그 다음 교차점X
그리고.Y
이라[1, 2]
.
아마X
그리고.Y
어레이는 무엇입니까?그렇다면 매우 간단한 방법이 있습니다.
x = [1, 1, 2, 4]
y = [1, 2, 2, 2]
# intersection
x & y # => [1, 2]
# union
x | y # => [1, 2, 4]
# difference
x - y # => [4]
어레이에 대한 설정 작업을 수행할 수 있다는 사실을 활용하여&
(교차로),-
(차이), 및|
(노조).
MultiSet을 사양에 맞게 구현하지 않은 것은 분명하지만, 이를 통해 다음을 시작할 수 있습니다.
class MultiSet
attr_accessor :set
def initialize(set)
@set = set
end
# intersection
def &(other)
@set & other.set
end
# difference
def -(other)
@set - other.set
end
# union
def |(other)
@set | other.set
end
end
x = MultiSet.new([1,1,2,2,3,4,5,6])
y = MultiSet.new([1,3,5,6])
p x - y # [2,2,4]
p x & y # [1,3,5,6]
p x | y # [1,2,3,4,5,6]
한다면Multiset
에서 확장됩니다.Array
학급
x = [1, 1, 2, 4, 7]
y = [1, 2, 2, 2]
z = [1, 1, 3, 7]
유니온
x.union(y) # => [1, 2, 4, 7] (ONLY IN RUBY 2.6)
x.union(y, z) # => [1, 2, 4, 7, 3] (ONLY IN RUBY 2.6)
x | y # => [1, 2, 4, 7]
차이
x.difference(y) # => [4, 7] (ONLY IN RUBY 2.6)
x.difference(y, z) # => [4] (ONLY IN RUBY 2.6)
x - y # => [4, 7]
교차로
x.intersection(y) # => [1, 2] (ONLY IN RUBY 2.7)
x & y # => [1, 2]
Ruby 2.6의 새로운 방법에 대한 자세한 내용은 이 블로그 게시물에서 Ruby 2.6의 새로운 기능을 참조하십시오.
언급URL : https://stackoverflow.com/questions/5678108/how-can-i-get-the-intersection-union-and-subset-of-arrays-in-ruby
반응형
'programing' 카테고리의 다른 글
Ubuntu의 MongoDB가 서비스로 시작되지 않고 로그에 아무것도 기록되지 않습니다. (0) | 2023.06.04 |
---|---|
현재 사용자를 얻는 방법과 MVC5에서 사용자 클래스를 사용하는 방법은 무엇입니까? (0) | 2023.06.04 |
루비를 사용하여 단말기로 출력되는 텍스트를 컬러화하려면 어떻게 해야 합니까? (0) | 2023.06.04 |
Node.js에서 종료하는 방법 (0) | 2023.06.04 |
깃 - 원격:리포지토리를 찾을 수 없음 (0) | 2023.06.04 |