{"action":"opened","issue":{"url":"https://api.github.com/repos/SOLOPlugins-PocketMine/SMarket/issues/1","repository_url":"https://api.github.com/repos/SOLOPlugins-PocketMine/SMarket","labels_url":"https://api.github.com/repos/SOLOPlugins-PocketMine/SMarket/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/SOLOPlugins-PocketMine/SMarket/issues/1/comments","events_url":"https://api.github.com/repos/SOLOPlugins-PocketMine/SMarket/issues/1/events","html_url":"https://github.com/SOLOPlugins-PocketMine/SMarket/issues/1","id":343505886,"node_id":"MDU6SXNzdWUzNDM1MDU4ODY=","number":1,"title":"상점가격점검 기능이 고장남","user":{"login":"solo5star","id":20203944,"node_id":"MDQ6VXNlcjIwMjAzOTQ0","avatar_url":"https://avatars0.githubusercontent.com/u/20203944?v=4","gravatar_id":"","url":"https://api.github.com/users/solo5star","html_url":"https://github.com/solo5star","followers_url":"https://api.github.com/users/solo5star/followers","following_url":"https://api.github.com/users/solo5star/following{/other_user}","gists_url":"https://api.github.com/users/solo5star/gists{/gist_id}","starred_url":"https://api.github.com/users/solo5star/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/solo5star/subscriptions","organizations_url":"https://api.github.com/users/solo5star/orgs","repos_url":"https://api.github.com/users/solo5star/repos","events_url":"https://api.github.com/users/solo5star/events{/privacy}","received_events_url":"https://api.github.com/users/solo5star/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-07-23T06:39:38Z","updated_at":"2018-07-23T06:39:38Z","closed_at":null,"author_association":"MEMBER","body":"PocketMine-MP 의 Crafting API가 업데이트되면서 **이전에 구현하였던 알고리즘을 더 이상 쓸 수가 없습니다.** 새로운 알고리즘을 짜야 하지만 아직까진 실력이 부족하여 해결이 어려울 것 같습니다. 해결이 정말 불가능한 경우 **기능 자체를 없애는 것도 고려**하고 있습니다.\r\n\r\n번외로, 골머리를 앓고 있는 알고리즘 구현을 문제로 만들어보았으니 관심있으신 분들은 읽어보세요.\r\n\r\n이제 막 서버를 운영하기 시작한 어드민이 상점 플러그인을 서버에 넣어, 전체 아이템 중 일부 아이템에 판매가/구매가를 설정하여 상점을 구성했다.\r\n\r\n어드민은 유저들이 상점에서 싼 가격으로 재료(Ingredients)를 모아, 비싼 가격으로 되파는 행위, 즉 조합법을 악용하는 것을 막고싶다.\r\n\r\n`Server`로 부터, 조합법`Recipe` 목록을 받아와 그래프`Graph`를 구성한다.\r\n* 하나의 Item은 구매가 또는 판매가를 가질수도, 가지고 있지 않을수도 있다.\r\n* 부모 노드는 `Recipe`의 결과(Result) 즉 조합 결과 `Item` 의 배열.\r\n* 자식 노드는 `Recipe`의 재료(Ingredients) 즉 조합에 필요한 `Item` 의 배열이다.\r\n* 물론 하나의 노드는 위에서 명시한 것처럼 여러 개의 `Item`을 가질 수 있다.\r\n* 하나의 부모 노드는 여러개의 자식 노드를 가질 수 있다, 즉 Result Item을 만들기 위한 조합법(Recipe)이 하나 이상일 수 있다.\r\n* 하나의 `Item`은 구매가/판매가를 가지고 있을 수도, 가지고 있지 않을 수도 있다. 가지고 있지 않은 경우 순회(Ordering)하여 자식 노드로 부터 최저 구매값(가장 싸게 살 수 있는 가격)을 구해야 한다.\r\n\r\n그래프를 구성한 후\r\n\r\n* 사이클(Cycle)이 발생할 수도 있다. 이 경우 사이클을 가지는 부분 그래프의 모든 노드들은 같은 비용(Cost)을 가져야 한다. 그렇지 않은 경우 부분 그래프의 모든 노드들을 출력한다.\r\n* 자식 노드가 부모 노드보다 비용(Cost)이 적으면 출력한다.\r\n\r\n아래는 그래프의 예시이다.\r\n+는 간선이 향하는 방향을 표기한 것\r\n![](https://i.imgur.com/5LcAUnT.png)"}}
{"actor":{"display_login":"solo5star"}}