프로젝트

일반

사용자정보

Wiki » 이력 » 버전 10

백흠경, 2020/03/13 19:39

1 1 백흠경
h1. Wiki
2 1 백흠경
3 3 백흠경
# 아래 그림에서 주어진 조건으로 grouping하여 두번째와 같은 결과를 만드는 문제입니다.
4 5 백흠경
## [1,2,3,5], [4,11,7,8,9], [6,10] 각각 같은 조건을 가지고 있음
5 2 백흠경
{{drawio(SMAP-Page-1.xml)}}
6 3 백흠경
## 조건 : Package, Fluid, Material이 같고 연결된 아이템(물리적으로 연결되어 있으나 노즐이나 OPC에서는 끊김)
7 4 백흠경
## 기능 : 아이템에서 연결된 아이템들은 찾을 수 있음(1번에 연결된 아이템은 2,3임)
8 2 백흠경
{{drawio(SMAP-Page-2.xml)}}
9 6 백흠경
10 7 백흠경
-----
11 7 백흠경
12 7 백흠경
h2. 알고리즘
13 7 백흠경
14 6 백흠경
# [그림 1]을 다음과 같이 간략화 시킬수 있습니다.
15 6 백흠경
{{drawio(SMAP-Page-3.xml)}}
16 7 백흠경
# all = [1,2,3,4,5,6,7,8,9,10,11,12]
17 7 백흠경
# 조건에 맞게 grouping합니다.
18 7 백흠경
<pre>
19 7 백흠경
packages = []
20 7 백흠경
while all:
21 7 백흠경
  item = all.pop()
22 7 백흠경
  package = group(item)  
23 7 백흠경
  packages.append(package)
24 7 백흠경
  package.consume(all)
25 7 백흠경
</pre>
26 7 백흠경
# group 클래스
27 7 백흠경
<pre>
28 7 백흠경
class group:
29 7 백흠경
  def __init__(self, item):
30 7 백흠경
    self.members = [item]
31 7 백흠경
32 7 백흠경
  def consume(self, all):
33 7 백흠경
    """group을 구성한다"""
34 7 백흠경
    stack = self.members
35 7 백흠경
    while stack:
36 7 백흠경
      item = stack.pop()
37 7 백흠경
      connected_items = self.get_connected_items(item, all)
38 7 백흠경
      for connected in connected_items:
39 7 백흠경
         if connected is Equipment or connected is OPC:
40 7 백흠경
           all.remove(connected)
41 7 백흠경
           continue
42 7 백흠경
43 7 백흠경
         if self.members[0].package == connected.package and self.members[0].fluid == connected.fluid and self.members[0].material == connected.material:
44 7 백흠경
           stack.append(connected)
45 7 백흠경
           self.members.append(connected)
46 7 백흠경
           all.remove(connected)
47 7 백흠경
48 7 백흠경
  def get_connected_items(self, item, all) -> list:
49 7 백흠경
    """item에 연결된 아이템들 중 all에 있는 것을 리턴한다"""
50 7 백흠경
    return [connected for connected in item.connecteds if connected in all]
51 7 백흠경
</pre>
52 8 백흠경
** member 하나와 connected 만 비교하면 됩니다.
53 8 백흠경
어떤 구슬을 같은 색의 주머니에 넣기 위해 색깔을 비교할때 주머니에 있는 구슬 하나만 꺼내 비교하면 됩니다.(주머니에 있는 구슬들은 모두 같은 색깔이므로)
54 9 백흠경
55 9 백흠경
----
56 9 백흠경
57 9 백흠경
h2. 검증
58 10 백흠경
59 10 백흠경
{{drawio(SMAP-Page-4.xml)}}
클립보드 이미지 추가 (최대 크기: 500 MB)