집을 옮기고, 삼순이의 보금자리도 변했습니다. 토요일 낮 햇볕 잘 드는 거실에서 처음으로 삼순이의 모습을 담았습니다.

 

처음엔 소파 밑에도 곧잘 숨곤 했는데 삼순이는 역시 방석을 좋아합니다.

 

저렇게 꼬리를 몸에 착 붙이고 몸을 돌돌 말면 잘 준비를 하는 겁니다.

 

 

베란다 창문 밖으로 나무가 울창하게 있었을 텐데 먼저 살던 곳에는 잘 안 보이던 것들이 많아서 신기했나 봅니다.

 

 

소파 위 방석에 누워 자는 모습

젤리같이 말랑말랑한 고양이 발바닥을 보면 참 기분이 좋지요. 만지면 별로 좋아하진 않았지만 고양이의 매력포인트 중 하나라 할 수 있습니다.

화장실 옆에 숨어 있는 걸 찾았습니다. 처음 데려오고 한 일주일 정도는 화장실을 잘 못 가려서 매일 이불을 빨다시피 했었는데 (그때 그 이불은 결국 버렸습니다.) 그다음부터는 따로 가르쳐주지 않았는데도 신기하게 알아서 화장실을 잘 찾아가더군요. 고양이의 놀라운 점이자 자랑이기도 합니다.

삼순이는 다른 고양이와 비슷하게 하얀 끈 같은 걸 재밌어했습니다. 지금은 많이 시크해졌지만 어렸을 땐 시간가는 줄 모르고 놀았더랬습니다.

암튼 삼순이는 새 집에서도 성공적으로 적응한 듯 보입니다. 머리가 작아서 언뜻 보면 어른 고양이처럼 보이는데 (비율 깡패?) 아마도 생후 5개월 정도 추정으로 몸무게도 1킬로그램 정도 밖에 안 나가던 시절이었습니다.

'우리집 고양이' 카테고리의 다른 글

삼순이 (2012. 5 ~ 9)  (2) 2018.05.28
봄, 그리고 삼순 (2012. 3. 24 - 4. 30)  (0) 2018.05.05
삼순이, 2012년 3월  (0) 2018.03.28
새로운 식구를 만나다  (0) 2018.03.20
삼순이 처음 온 날  (0) 2018.03.15
Posted by jujaeuk
,

 

다음과 같은 개념은 독자가 이미 알고 있다고 가정하고 설명 생략합니다:

완전경쟁시장, 독점, 시장의 실패, 사회적 후생

 

독점시장에서 독점공급자는 가격을 올려 사회적 후생을 감소시킬 수 있는데, 여기서 정부의 역할은 규제를 만들어 독점공급자가 마음대로 가격을 올리지 못하게 만들어 사회적 후생을 유지하는 것이다. 정부가 독점시장을 규제하기 위해서는 기준이 필요하다. 첫번째로 해야 할 일은 시장의 범위를 정하는 일이다. 예를 들어, 농부 박씨가 석류 시장의 100%를 차지하고 있으면 박씨가 독점공급자일까? 독점공급자로 지정되어 규제를 받고 싶지 않은 박씨는 '과일 시장에서 석류의 비중은 10%도 안 되니 자신은 독점공급자가 아니'라고 주장할 것이다. 시장을 석류시장으로 하는 것이 맞을까, 과일 시장으로 하는 것이 맞을까. 그 기준은 무엇으로 정할까. 시장의 범위를 정하는 행위를 '시장획정(market definition)'이라 하고, 시장획정을 하기 위해 고안된 도구가 바로 SSNIP (small significant non-transitory increase in price, 작지만 유의미하고 일시적이지 않은 가격 인상) 테스트이다. HM (hypothetical monopolist) 테스트라고도 부른다. 석류 시장을 박씨가 지배하는 독점시장으로 볼 수 있는지를 판단하려면 박씨 혼자 석류 가격을 올려서 이득을 취할 수 있는지에 달렸다. 석류를 팔고 있는 다른 경쟁자가 시장에 있다면 당연히 박씨는 석류 가격을 마음대로 올릴 수 없다. 가격을 올리면 소비자는 모두 경쟁자의 석류를 사게 될 테니까. 그런데 경쟁하는 석류 생산자가 없더라도 박씨가 석류 가격을 올릴 수 없는 상황이 있다. 석류 가격이 올랐을 때 소비자들이 비싼 석류 대신 귤이나, 파인애플, 배 같은 다른 과일을 사 먹는 경우가 그것이다. 시장이 '석류 시장'으로 획정될 지, '과일 시장'으로 획정될 지는 석류가 다른 과일로 얼마나 많이 대체될 수 있느냐에 달렸다.

 

자 이제, 석류 시장에 대한 SSNIP 테스트를 설명하기로 한다. 박씨가 독점사업자인지 아닌지를 알아보는 것이다. 여기서 박씨를 가설적 독점사업자(hypothetical monopolist)라 부른다. 박씨가 석류 가격을 p에서 Δp만큼 올려서 p+Δp가 되었다고 가정해 보자. 우하향하는 수요곡선을 가정했을 때, 판매량은 q에서 Δq만큼 감소해 q-Δq가 될 것이다. 그림으로 그려 보면 다음과 같다.

 

 

그림에서 박스 L은 가격 인상으로 인한 박씨의 손실이 되고, 박스 B는 박씨의 이득이 된다. 만약 가격을 올렸을 때, 박스 B가 박스 L보다 크면 박씨는 가격 인상에 대한 인센티브가 있는 것으로 분명히 가격을 올릴 것이다. 만약 박스 B가 박스 L보다 작으면 박씨는 가격 인상에 대한 인센티브가 없어 가격을 올리지 않을 것이다. 이를 수식으로 표현하면 다음과 같다.

손실은

이득은

이다. 따라서,

 

이면 손실이 이득보다 커서 박씨는 가격을 못 올린다. 즉, 석류 시장은 독점 시장이 아니고 박씨는 가격 규제를 받지 않아도 된다. 양변을 pq로 나누어 식을 손실률 Δq/q 에 관한 식으로 좀 더 예쁘게 정리해 보자.

여기서,

M=(p-mc)/p을 마진율이라 하고, X=Δp/p를 가격 인상율이라 하면 가격인상 시 손실이 이득보다 커지는 조건은 다음과 같이 쓸 수 있다.

이때, X/(X+M)을 임계손실(critical loss)이라 부른다. 즉, SSNIP 테스트는 손실률이 임계손실보다 큰가 작은가를 판정하는 테스트라서 임계손실분석(critical loss analysis)라고도 부른다..

 

석류 시장에서 가설적 독점공급자인 박씨를 대상으로 한 SSNIP 테스트에서 손실률이 임계손실보다 크면 박씨는 독점공급자의 혐의를 벗고, 석류 시장은 관련시장(relevant market)으로 획정(definition)되지 못한다. 그러면 다음 단계는? 시장의 범위를 넓혀서 다시 SSNIP 테스트를 실시하는 것이다. 시장의 범위가 넓어지면 점점 대체 가능성은 낮아지고, 손실률이 임계손실보다 낮아질 가능성은 높아진다. 마침내 손실률이 임계손실보다 낮아졌을 때, 테스트를 종료하고 해당 시장을 관련시장으로 획정한다. 따라서, 관련시장은 다음과 같이 정의된다..

 

관련시장: SSNIP 테스트에서 "손실률이 임계손실보다 작다"는 조건을 만족하는 최소 규모의 시장.

 

실제로, SSNIP 테스트를 할 때 문제가 있다. 첫째, 마진율을 계산하는 데 필요한 기업의 한계 비용(mc)을 알 수가 없다. 그래서 평균가변비용을 대신 쓴다. 평균 가변비용은 기업의 분기 보고서에 나온 총비용 중 보험료, 감가상각 등 고정비용에 해당되는 항목을 제외한 나머지를 총가변비용으로 하고 이를 판매량으로 나눠서 산출한다. 둘째, 실제로 가격을 올려서 시장에서 어떻게 수요가 줄어드는지를 관찰할 수가 없다. 그래서 설문조사를 한다. "석류 가격이 5%(또는 10%) 올랐다면 그래도 석류를 사시겠습니까, 석류를 안 사고 다른 과일로 사시겠습니까?" 이런 식으로 질문을 해서 석류 수요가 얼마나 줄어들 지를 보고 석류에 대한 수요 곡선을 그린다..

 

SSNIP 테스트는 미국 법무부(Department of Justice)가 무역위원회(Federal Trace Commission)와 함께 작성한 'Horizontal Merger Guidelines'에 소개가 되어 있다고 한다. EU에도 비슷한 내용의 합병 가이드라인이 있다고 한다.

Posted by jujaeuk
,

카탄은 건설 게임입니다. 정착지, 도로, 도시를 누가 먼저 많이 짓는가로 서로 경쟁합니다. 건물을 지을 때마다 포인트를 얻으며, 합계 10포인트를 먼저 얻으면 승리합니다. 숙련자인 경우 4인용으로 보통 1시간 정도가 소요됩니다.

 

카탄의 게임 규칙을 설명하려 하는데 너무 길어 1, 2부로 끊어서 하겠습니다. 1부에서는 게임 구성요소를, 2부에서는 경기 규칙을 소개합니다. 이 글은 1부 게임 구성요소입니다.

 

 

4판의 박스 모습입니다. 원래 제목이 'The Settlers of Catan'이라 예전엔 '새틀러'라고 불리기도 했습니다만 일반적으로 '카탄'으로 불리게 됐고, 새로 나온 5판에서는 아예 'Settlers'란 이름이 공식적으로 사라져서  '카탄(Catan)'만 남았습니다.

 

 

육각형 모양의 땅(terrain) 타일입니다. 여섯 종류(Hills, Forest, Desert, Fields, Pasture, Mountains)가 있고, 총 열아홉 개입니다. 이 타일들을 임의로 섞어 벌집 모양으로 붙여 게임판을 만듭니다.

 

 

숫자표입니다. 전부 열여덟 개인데, 사막을 제외한 육각형 타일에 하나씩 올려 놓습니다. 숫자는 주사위 숫자(두 개를 굴릴 거기 때문에 2부터 12까지의 숫자가 있습니다.), 알파벳은 게임판에 배치하는 순서, 밑에 점은 숫자의 확률을 의미합니다. 점의 개수가 많을수록 나올 확률이 높고 붉은 색은 가장 높습니다. (주사위 두 개를 던졌을 때 나올 확률이 가장 높은 숫자인 7은 없습니다.)

 

 

프레임입니다. 게임판을 둘러싸는 역할을 하고 '항구(harbor)'의 위치가 표시됩니다.

 

 

플레이어가 지어야 하는 건축물들입니다. 왼쪽부터 도로(road), 정착지(settlement), 도시(city)입니다.

 

 

기본형은 3인 또는 4인 플레이가 가능합니다. 플레이어마다 15개의 도로, 5개의 정착지, 4개의 도시가 주어집니다.

 

 

다섯 종류의 자원 카드를 해당 땅 타일과 짝을 지어 배치한 모습입니다. 왼쪽부터:

 

1) 산(mountain)에서는 광석(ore)이,

2) 밭(field)에서는 곡식(grain)이,

3) 숲(forest)에서는 목재(lumber)가,

4) 초원(pasture)에서는 양털(wool)이,

5) 언덕(hills)에서는 벽돌(brick)이

나옵니다.

 

각 자원마다 19장씩 총 95장의 자원카드가 있습니다.

 

 

개발 카드(development card)의 모습입니다. 크게 세 종류가 있는데 붉은 색이 기사(knight), 노란색이 승점(victory point), 초록색이 발전(progress)입니다. 기사 카드는 내 땅에 들어온 도둑을 쫓을 때 사용하고, 발전 카드는 자원 없이 도로를 짓거나, 자원을 공짜로 가져오거나, 상대 플레이어한테서 자원을 빼앗아 오는 등 자신에게 유리한 기능들이 있습니다. 승점은 한장당 1점씩 줍니다.

 

 

보너스 점수 카드입니다. '가장 긴 도로(longest road)'는 도로를 가장 길게 연결해 지은 사람이 받을 수 있으며, 2점입니다. '가장 큰 군대(largest army)'는 기사 카드를 가장 많이 사용한 사람이 받을 수 있으며, 2점입니다.

 

 

두 개의 주사위와 도둑입니다. 본격적인 게임 규칙은 2부에서 설명하도록 하겠습니다.

'보드게임' 카테고리의 다른 글

카탄 도시와 기사 진보 카드  (0) 2018.07.05
카탄 도시와 기사(Catan - Cities and Knights)  (2) 2018.06.25
카탄 영문판 5th 에디션  (0) 2018.05.24
보드게임 카탄 (2) 게임 규칙  (0) 2018.04.14
시타델 (Citadel)  (0) 2018.03.23
Posted by jujaeuk
,
Error in as.POSIXct.POSIXlt(what, tz = tzone) : invalid 'tz' value​

nza.RData
다운로드

파일을 다운로드한 뒤에 R에서 불러보자.

 

> load("nza.RData")
> head(nza,20)
               time   name  lbmp
1  12/01/2017 00:00 CAPITL 28.00
2  12/01/2017 00:00 CENTRL  8.96
3  12/01/2017 00:00 DUNWOD 22.16
4  12/01/2017 00:00 GENESE  8.20
5  12/01/2017 00:00    H Q  6.46
6  12/01/2017 00:00 HUD VL 21.73
7  12/01/2017 00:00 LONGIL 30.48
8  12/01/2017 00:00 MHK VL  9.03
9  12/01/2017 00:00 MILLWD 22.35
10 12/01/2017 00:00 N.Y.C. 22.27
11 12/01/2017 00:00  NORTH  6.37
12 12/01/2017 00:00    NPX 25.33
13 12/01/2017 00:00    O H  8.70
14 12/01/2017 00:00    PJM 16.12
15 12/01/2017 00:00   WEST  8.70
16 12/01/2017 01:00 CAPITL 27.50
17 12/01/2017 01:00 CENTRL  8.23
18 12/01/2017 01:00 DUNWOD 21.54
19 12/01/2017 01:00 GENESE  7.50
20 12/01/2017 01:00    H Q  5.72

 

보다시피 time별로, name별로 lbmp라는 값이 있는 데이터의 첫 20행을 본 것이다. 16번째 데이터부터 첫번째 name이 다시 반복되는 것을 보니 매 시간 열 다섯개의 name에 대해 lbmp 값이 있는 데이터로 보인다. 이 데이터를 time by name으로 바꿔서 각각의 name을 변수 이름으로 하는 hourly data로 만들고 싶을땐 어떻게 하면 될까? 바로 cast() 함수를 쓰면 된다. cast() 함수는 reshape라는 패키지에 있다.

reshape 패키지를 아직 설치하지 않았으면 설치부터 한다.

 

> install.packages("reshape")

 

설치했으면 reshape 라이브러리를 부른다.

 

> library(reshape)

 

cast() 함수의 사용 방법은 간단하다.

 

> nzb<-cast(nza,time~name,value="lbmp")
> head(nzb,20)
               time CAPITL CENTRL DUNWOD GENESE   H Q HUD VL 
1  12/01/2017 00:00  28.00   8.96  22.16   8.20  6.46  21.73  
2  12/01/2017 01:00  27.50   8.23  21.54   7.50  5.72  21.11  
3  12/01/2017 02:00  27.15   7.72  21.11   6.97  5.26  20.69  
4  12/01/2017 03:00  26.20   7.58  20.42   6.86  5.21  20.01  
5  12/01/2017 04:00  27.73   7.84  21.53   7.09  5.27  21.09  
6  12/01/2017 05:00  27.62  11.82  22.88  11.04  9.54  22.52  
7  12/01/2017 06:00  32.95  23.82  30.92  22.64 21.76  30.68  
8  12/01/2017 07:00  31.53  30.37  32.42  29.45 28.71  32.33  
9  12/01/2017 08:00  30.65  29.33  31.57  28.32 27.75  31.40  
10 12/01/2017 09:00  30.64  29.17  31.64  28.03 27.59  31.32  
11 12/01/2017 10:00  29.01  27.71  29.99  26.62 26.17  29.75  
12 12/01/2017 11:00  27.57  26.25  28.58  25.20 24.52  28.16  
13 12/01/2017 12:00  26.73  25.48  27.80  24.48 23.09  27.31  
14 12/01/2017 13:00  26.19  25.01  27.18  24.02 23.21  26.90  
15 12/01/2017 14:00  25.51  24.24  26.47  23.42 22.23  26.23  
16 12/01/2017 15:00  26.47  25.22  27.36  24.45 24.01  27.14  
17 12/01/2017 16:00  32.49  30.74  33.48  29.74 29.43  33.16  
18 12/01/2017 17:00  39.19  37.27  40.26  36.14 35.73  40.00  
19 12/01/2017 18:00  36.44  34.80  37.50  33.77 33.29  37.30  
20 12/01/2017 19:00  33.41  31.80  34.48  30.83 30.57  34.29  

 

name 필드의 값이 변수 이름이 된 것을 볼 수 있다. 다른 방법도 있긴 한데 cast()가 제일 편하기 때문에 알 필요 없다.

 

여기서 한 가지 문제가 생길 수 있다. 만약에 time 변수를 strptime() 같은 함수를 써서 POSIXlt 포맷으로 만든 경우에 cast 함수를 쓰면 다음과 같은 에러가 발생한다.

 

Error in as.POSIXct.POSIXlt(what, tz = tzone) : invalid 'tz' value

 

tz 값을 제대로 해 주면 해결이 되런지 모르겠으나 그보다 제일 편한 방법은 cast를 하기 전에 POSIXlt 포맷의 시간을 문자열로 바꿔 버리는 것이다.

 

nza$time<-as.character(nza$time)
nzb<-cast(nza, time~name value="lbmp")
nzb$time<-strptime(nzb$time, "%m/%d/%Y %H:%M")

 

원한다면 cast()를 쓰고 나서 다시 strptime()을 써서 POSIXlt 포맷으로 변환하면 된다.

'R' 카테고리의 다른 글

R, data sorting하기 order()  (0) 2018.05.21
R, data에서 특정 변수 제외하기  (0) 2018.04.12
R 시계열 데이터 변환 aggregate()  (0) 2018.03.22
R 데이터 변형하기 - subset(), which()  (0) 2018.03.19
R에서 데이터 다루기  (0) 2018.03.13
Posted by jujaeuk
,

처음 우리집에 오고 보름 정도가 지나, 2012년 3월 경에 찍은 사진을 모아 봤습니다. 인터넷 까페에 분양 공고가 떴을 때 4개월 추정이라 했으니 이때 삼순이 나이는 5개월 쯤 됐겠지요. 아기 길고양이는 처음엔 엄마 고양이가 돌봐 주다가, 태어나 3개월이 되면 강제로 독립한다고 합니다. 야생 고양이의 습성인지는 모르겠으나 엄마도 살아야 하기 때문이겠지요. 그렇다고 3개월된 고양이가 어엿한 어른 고양이냐 하면 그건 아니고 여전히 아기 고양이라서 어른 고양이가 될 때까지 혹독한 고생을 하지 않을까 싶습니다. 삼순이는 어렸을 때 길에서 몹쓸 사람을 만나 꼬리를 잃었습니다.

 

 

고양이들은 침대 시트나 의자 쿠션처럼 뽀송뽀송하고 폭신폭신한 걸 좋아합니다.

 

 

삼순이는 지금도 살이 찐 편은 아니지만 어렸을 때도 많이 말랐더랬습니다.

 

 

수술을 하느라 꼬리에 털을 밀었는데 아직 다 자라지 않아 저런 모습이었습니다.

 

 

고양이 발바닥은 정말 귀엽습니다. 삼순인 고등어 태비라 흰털과 까만 털이 섞여 있었는데 발바닥 맨살도 분홍색과 까만색이 섞여 있었습니다.

 

 

캣타워에 올라 앉아 있는 모습

 

 

삼순이는 빨간 천을 덮은 이케아 포앙 의자를 좋아했는데, 저때 이후 우리집에서 저 의자는 사람이 앉는 일은 거의 없게 됐습니다. 이 의자에 앉아 있을 땐 바쁘게 돌아다니지도 않고 그냥 같은 자리에서 꼼지락거려서 사진 찍기에도 참 좋았던 거 같습니다. 예쁜 사진이 많아 한꺼번에 올립니다.

 

 

앞에서 뭔가 신기한 걸 계속 보여줬는데, 조금은 귀찮아 하는 표정입니다.

 

 

식빵 자세로 마시마로랑 속닥속닥 하는 모습

 

 

자는 모습

 

 

... 발라당 애교 떠는 모습 등 다채롭지요.

 

 

아마도 카메라 옆에서 낚싯대라도 흔들었을 겁니다.

 

 

놀고, 먹고, 잠만 자는 고양이 팔자가 참 부럽다고 생각했던 적이 많았는데, 고양이는 내가 처음 기르기로 결심했을 때 생각했던 것보다 훨씬 많은 걸 우리에게 줬습니다.

 

 

삼순이는 위험에 처할 일도 없고, 배고플 일도 없이 편한 팔자라는 건 분명합니다. 그럼에도 우리 집에서 삼순이가 사는 모습을 보면 내가 어떻게 살면 좋을지에 대한 힌트를 줄 때도 참 많았습니다.

 

 

고양이를 기르면 고양이처럼 사는 법을 조금은 배우게 되고, 그건 사람이 행복해지는 데 도움이 됩니다. 삼순이 덕분에 저도 많이 변했다고 생각합니다.

 

 

아직 어려서 서툴고, 힘들어 하면서도 잡아 보려고 애쓰는 모습은 귀엽고도 기특합니다.

 

 

가까이서 찍으면 솜털이 보송보송한게 아기 고양이 티가 확 납니다.

 

 

표정이 좀 예사롭지 않습니다. 저 때만 해도 뭔가 의욕이 있어 보였는데, 불행인지 다행인지는 모르겠으나, 삼순이의 사냥솜씨는 6년이 지난 지금 거의 퇴화되었습니다.

 

 

언젠가 파란 하늘과 구름과 참새들을 직접 구경할 수 있게 바깥에 데리고 나갔으면 하는 생각이 있습니다. 그러면 퇴화된 본능이 다시 깨어날지도... 물론 삼순이가 좋아할 가능성은 없어 보입니다.

'우리집 고양이' 카테고리의 다른 글

삼순이 (2012. 5 ~ 9)  (2) 2018.05.28
봄, 그리고 삼순 (2012. 3. 24 - 4. 30)  (0) 2018.05.05
토요일 아침 삼순 (2012. 3. 17-23)  (0) 2018.04.11
새로운 식구를 만나다  (0) 2018.03.20
삼순이 처음 온 날  (0) 2018.03.15
Posted by jujaeuk
,

시타델 (Citadel)

보드게임 2018. 3. 23. 13:22

시타델은 여덟 가지의 서로 다른 캐릭터를 가지고 견제, 또는 발전을 통해 자신의 왕국을 건설해 가는 게임입니다.

 

 

공격을 성공시키기 위해서는 공격의 대상이 되는 플레이어의 캐릭터를 알아 내야 하는데, 누가 어떤 캐릭터를 선택했는지는 약간의 힌트만 주어져 있을 뿐 내가 알고 있지 못합니다.

 

한편, 내가 발전하기 위해서는 발전에 필요한 캐릭터를 선택해야 하며 동시에 상대방의 공격을 피해야 합니다. 뻔한 캐릭터를 선택하면 공격 받기 십상이고, 필요한 캐릭터를 선택하지 않으면 발전할 수 없는 딜레마에 빠지는데, 이렇게 상대와 나 사이에 캐릭터 선택을 놓고 벌어지는 수 싸움이 이 게임의 묘미라고 할 수 있겠습니다.

 

 

위의 그림은 여덟 가지 캐릭터들입니다. 캐릭터마다 번호가 매겨져 있는데, 1) 암살자(Assassin), 2) 도둑(Thief), 3) 마술사(Magician), 4) 왕(King), 5) 추기경(Bishop), 6) 상인(Merchant), 7) 건축가(Architect), 8) 장군(Warlord) 순서로 되어 있습니다. 나중에 다시 설명하겠지만 캐릭터의 번호는 각각의 캐릭터가 플레이되는 순서입니다.

 

 

구역(district) 카드입니다. 결국 이 구역을 누가 먼저 많이 짓느냐로 게임의 승부가 결정납니다. 

 

 

그 밖의 피스들입니다. 노란색의 크라운 카운터는 왕에게 주어지는 것으로, 왕이란 라운드에서 처음으로 캐릭터를 선택하는 사람을 의미합니다. 첫번째 플레이어가 먼저 캐릭터를 선택하고 다음 플레이어는 남은 캐릭터들 중에서 선택하는 것이기 때문에 첫번째 플레이어는 캐릭터 선택에서 이점을 가지게 됩니다.

 

경기는 2인용부터 7인용까지 가능하지만 일반 룰이 적용되는 경기는 4인용에서 6인용입니다. 먼저, 4-6인용을 중심으로 경기 규칙을 설명하겠습니다.

 

- 준비

 

여덟장의 캐릭터 카드를 따로 준비해 섞어 놓고, 디스트릭트 카드를 따로 섞어서 안보이게 쌓아 둡니다. 각각의 플레이어는 금 두개와 디스트릭트 카드 네 장을 갖고 시작합니다.

 

- 라운드 순서

 

경기는 매 라운드마다, 1) 캐릭터를 선택하고, 2) 캐릭터 순서 대로 액션을 하고, 3) 구역을 건설하는 순서로 진행됩니다. 라운드가 끝나면 캐릭터를 다시 회수하여 다음 라운드에서 다시 반복합니다.

 

캐릭터 선택

 

크라운 카운터를 가진 사람이 첫번째 플레이어입니다. 경기 초반에 첫번째 플레이어는 가장 나이 많은 사람으로 합니다. 첫번째 플레이어는 여덟장의 캐릭터 카드를 잘 섞어서 그중 한 장을 랜덤하게 뽑아서 카드가 안 보이게 테이블 중앙에 놓습니다. 이 카드는 이번 라운드에서 사용하지 않습니다. 그 다음엔 카드를 랜덤하게 뽑는데 이번엔 카드가 보이게 뒤집어 테이블 중앙에 놓습니다. 이 카드 또한 이번 라운드에서 사용하지 않습니다. 뽑아서 안 보이게 놓는 캐릭터 카드는 언제나 한 장이지만, 보이게 놓는 카드는 몇인용이냐에 따라 다릅니다. 4인용에서는 두장, 5인용에서는 한장을 보이게 놓고, 6-7인용에서는 보이게 놓는 카드가 없습니다.

 

이제 남아 있는 캐릭터 카드 중에서 선택을 할 차례입니다. 첫번째 플레이어가 한장을 선택한 뒤 왼쪽 옆 사람한테 남은 카드들을 넘깁니다. 다음 사람도 캐릭터 선택을 하고 또 남은 카드를 옆사람에게 넘겨 주고, 이런 식으로 반복하면 마지막 플레이어는 두 장의 남은 캐릭터 카드를 받게 됩니다. 마지막 사람은 이 중에서 한장을 선택하고 남은 카드를 보이지 않게 테이블 중앙에 놓습니다. 이런 식으로 캐릭터를 나누어 갖고 나면 모든 플레이는 다른 플레이어가 무슨 캐릭터를 갖고 있는 지에 대해서 정확히 알고 있진 않지만 약간의 힌트를 얻게 됩니다.

 

액션

 

캐릭터 나누기가 끝났으면 이젠 캐릭터 순서대로 액션을 할 차례입니다. 1번 캐릭터부터 순서대로 캐릭터를 공개하고 액션을 합니다. 액션에는 캐릭터랑 상관 없이 하는 일반 액션과 각각의 캐릭터만이 할 수 있는 특수 액션이 있습니다. 일반 액션이란, 다음 둘 중에 하나를 선택해서 하는 것을 말합니다.

 

 1. 금 두 개를 받는다. 또는,

 2. 구역카드 덱에서 구역 카드 두 장을 뽑아 와서 보고 한장을 가지고 한 장을 버린다.

 

캐릭터의 액션은 자기 액션 순서에서 아무 때나 할 수 있습니다. 여기서 각각 캐릭터들의 능력을 설명하겠습니다.

 

 

1) 암살자(Assassin) - 캐릭터 하나를 지목하고 죽입니다. 죽은 캐릭터는 그 라운드에서 아무 것도 할 수 없게 됩니다. 대신 암살자는 1번 캐릭터이기 때문에 다른 모든 캐릭터가 공개되지 않은 상태에서 누굴 죽일지를 정해야 합니다. 암살당한 캐릭터는 일단 자신을 밝히지 않고 있다가 자기 캐릭터가 공개되는 순서가 왔을 때 자신의 정체와 자신이 죽었음을 알립니다.

 

 

 

2) 도둑(Thief) - 캐릭터 하나를 지목하면 지목된 캐릭터를 가진 사람으로부터 가진 금을 전부 뺏어 옵니다. 단 암살자와 암살자에게 죽은 캐릭터의 돈을 뺏을 수 없습니다. (암살자와 마찬가지로, 도둑의 타겟은 자기 차례가 올 때까지 알리지 마라...라고 되어 있습니다. 그때까지 가만히 있다가 자기 차례가 되었을 때 도둑에게 가진 금을 주면 됩니다.) 

 

 

 

3) 마술사(Magician) - 둘 중에 하나를 할 수 있습니다.

 1. 손에 들고 있는 구역 카드 전부를 몇장인지 상관 없이 다른 플레이어의 구역 카드 전부와 맞바꿉니다. 마술사가 구역 카드를 한장도 안 갖고 있는 경우엔 다른 플레이어의 구역 카드를 전부 그냥 뺏어 오는 겁니다. (이건 암살자나 도둑이랑은 달라서 캐릭터를 지목하는 것아니라, 그냥 사람을 지목하는 겁니다.) 또는,

2. 원하는 장수 만큼 구역 카드를 버리고 구역 카드 덱에서 같은 장수 만큼의 구역 카드를 가져 옵니다.

 

 

4) 왕(King) - 여기서부터 색깔이 있습니다. 왕 캐릭터의 번호를 보면 노란색 동그라미에 4라고 써져 있습니다. 왕은 크라운 카운터를 가지고 다음 라운드에서 첫번째 플레이어가 됩니다. 또한 자신이 건설한 구역 카드들 중 노란색 카드가 있으면 그 카드의 갯수 만큼 금을 하나씩 가져 옵니다.

 

 

5) 추기경(Bishop) - 8번에 보면 장군(Warlord)이라는 캐릭터가 있는데 이 캐릭터는 다른 플레이어의 구역을 파괴하는 기능을 가지고 있습니다. 추기경의 구역은 장군이 파괴할 수 없습니다. 또 하나, 추기경은 파란색 캐릭터입니다. 왕과 마찬가지로, 자기가 건설한 파란 구역의 갯수 만큼 금을 받습니다.

 

 

6) 상인(Merchant) - 상인은 자기 액션을 한 뒤에 금을 하나 더 받습니다. 자기가 지은 초록색 구역카드 갯수만큼 금을 받습니다.

 

 

7) 건축가(Architect) - 일반 액션에서 누구나 한 장까지는 구역카드를 가져 올 수 있지만 건축가는 여기에 두 장의 구역카드를 추가로 가져 올 수 있습니다. 구역을 건설하는 순서에서 다른 캐릭터를 가진 플레이어들은 단 한장의 구역만 건설할 수 있지만 건축가는 돈만 있다면 한번에 세 장까지 구역을 건설할 수 있습니다.

 

 

8) 장군(Warlord) - 다른 플레이어가 건설한 구역 한 장을 파괴할 수 있습니다. 구역을 파괴하기 위해선 구역을 건설할 때 낸 비용보다 금 하나가 적은 비용을 내야 합니다. 또한, 자기가 지은 빨간색 구역 카드의 숫자만큼 금을 받습니다.

 

구역 건설

 

액션이 끝나고 나면 구역을 하나 건설할 수 있습니다. 손에 들고 있는 구역 카드 중 원하는 카드를 해당하는 건설 비용을 지불하고 카드가 보이게 자기 앞에 놓으면 하나의 구역을 건설한 것입니다. 아래는 구역 카드의 한 예입니다.

 

 

배틀필드라는 구역 카드입니다. 왼쪽에 있는 세개의 동그라미는 건설 비용이자, 그 구역의 포인트입니다. 금 세개를 내고 지을 수 있으며, 짓고 나면 3 포인트에 해당합니다. 왼쪽 아래의 빨간 동그라미는 빨간색 구역 카드라는 뜻입니다. 즉, 배틀필드를 짓고 나면 내가 장군(Warlord) 캐릭터를 선택했을 때 금 하나를 더 받을 수 있습니다.

 

구역 건설에는 한 가지 제약이 있습니다. 같은 이름의 구역은 하나만 지을 수 있습니다. 즉 한 플레이어가 배틀필드 하나를 건설했으면 그 플레이어가 배틀필드를 또 건설할 수 없습니다.

 

경기 종료

 

한 라운드에서 어느 한 플레이어가 여덟개의 구역을 건설하고 나면 그 라운드를 끝으로 경기가 종료됩니다. 즉, 누군가 먼저 여덟개의 구역을 건설했어도 마지막 캐릭터까지 플레이를 끝내야 합니다. 누군가 여덟번째의 구역을 짓고 나서 그 라운드 맨 마지막에 장군(Warlord) 캐릭터를 가진 플레이어가 그 여덟번째 구역을 파괴할 수도 있습니다. (게임 설명서에 여기에 대한 언급은 없지만 아마도 라운드가 끝났을 때 여덟개의 구역을 무사히 건설한 플레이어가 없으면 경기는 계속되는 것이 맞다고 봅니다.)

 

경기가 종료되면 각각의 플레이어가 가진 포인트를 합산합니다.

 

- 건설한 구역 카드의 포인트 합

- 다섯가지 색깔(노랑, 파랑, 녹색, 빨강, 보라) 모두에 대해서 최소한 하나 이상의 구역을 건설한 사람은 보너스 3 포인트

- 최초로 여덟번 째 구역을 건설한 사람은 보너스 4 포인트

- 최초는 아니지만 라운드가 종료되었을 때 역시 여덟개의 구역을 건설한 사람은 보너스 2 포인트

 

저렇게 계산된 포인트의 합이 가장 높은 사람이 승자가 됩니다.

 

시타델은 비교적 단순한 룰이지만, 이기기 위해선 제한된 정보를 이용하여 상대방의 심리를 읽는 능력이 요구되기 때문에 복잡한 심리전의 양상을 띠며, 특정 플레이어를 지목하여 노골적으로 공격을 해야 하기 때문에 플레이어들을 상당히 흥분시키는 게임입니다. 그 만큼 재미있다는 뜻이기도 하겠지만...

 

*블로그를 새로 만들면서 옛날 블로그에서 퍼왔습니다.

Posted by jujaeuk
,

nzb.RData
다운로드

Q. 시계열 데이터 분석할 때 hourly data의 날짜별 평균을 구해 daily data로 바꾸려면 어떻게 하면 될까?

본 데이터는 2017년 12월 1일부터 2018년 1월 31일까지 미국 뉴욕주 15개 지역에서 매 시간마다 기록된 전력 가격(단위: $/MWh)이다. 다운 받아서 불러보면 이렇게 생겼다. 관측치는 총 1488개(=62일 x 24시간)이다. (모바일 화면에서는 head()의 결과가 엄청 지저분하게 보이는데 방법이 없다. 양해를.)

 

> load("nzb.RData")
> head(nzb)
                 time CAPITL CENTRL DUNWOD GENESE  H Q HUD VL 
1 2017-12-01 00:00:00  28.00   8.96  22.16   8.20 6.46  21.73  
2 2017-12-01 01:00:00  27.50   8.23  21.54   7.50 5.72  21.11  
3 2017-12-01 02:00:00  27.15   7.72  21.11   6.97 5.26  20.69  
4 2017-12-01 03:00:00  26.20   7.58  20.42   6.86 5.21  20.01  
5 2017-12-01 04:00:00  27.73   7.84  21.53   7.09 5.27  21.09  
6 2017-12-01 05:00:00  27.62  11.82  22.88  11.04 9.54  22.52  

 

time 변수가 시간 class가 맞는지 확인해 본다. 만약 character라면 strptime() 함수를 써서 변환해 줘야 한다. (참조: R에서 시간 처리하기 strptime())

 

> class(nzb$time)
[1] "POSIXlt" "POSIXt" 

 

time 변수는 초단위까지의 정보를 가지고 있다. hourly로 바꾸기 위해선 일단 날짜변수가 있어야 한다.

 

> nzb$date<-as.Date(nzb$time)
> head(nzb)
                 time CAPITL CENTRL DUNWOD GENESE  H Q      date
1 2017-12-01 00:00:00  28.00   8.96  22.16   8.20 6.46 2017-12-01
2 2017-12-01 01:00:00  27.50   8.23  21.54   7.50 5.72 2017-12-01
3 2017-12-01 02:00:00  27.15   7.72  21.11   6.97 5.26 2017-12-01
4 2017-12-01 03:00:00  26.20   7.58  20.42   6.86 5.21 2017-12-01
5 2017-12-01 04:00:00  27.73   7.84  21.53   7.09 5.27 2017-12-01
6 2017-12-01 05:00:00  27.62  11.82  22.88  11.04 9.54 2017-12-01

 

> nzc<-aggregate(nzb$CAPITL,list(nzb$date),mean)
> head(nzc)
     Group.1        x
1 2017-12-01 29.08375
2 2017-12-02 26.18875
3 2017-12-03 26.27917
4 2017-12-04 30.10625
5 2017-12-05 28.71000
6 2017-12-06 27.29917

 

변수 이름을 안 정했으니까 저렇게 나온다. 맘에 드는 다른 이름으로 바꾸면 완성

 

> names(nzc)<-c("date","CAPITL")
> head(nzc)
        date   CAPITL
1 2017-12-01 29.08375
2 2017-12-02 26.18875
3 2017-12-03 26.27917
4 2017-12-04 30.10625
5 2017-12-05 28.71000
6 2017-12-06 27.29917

'R' 카테고리의 다른 글

R, data에서 특정 변수 제외하기  (0) 2018.04.12
R 데이터 재구조화 - cast()  (0) 2018.03.30
R 데이터 변형하기 - subset(), which()  (0) 2018.03.19
R에서 데이터 다루기  (0) 2018.03.13
R 막대그래프 barplot(), ggplot()  (0) 2018.03.09
Posted by jujaeuk
,

 

 

아이맥 만지는 삼순이. 삼순이는 처음 봤을 때부터 소심하고 겁 많은 고양이였지만 그래도 저 때는 어릴 때여서 그랬는지 이것 저것에 호기심이 참 많았습니다.

 

 

안지가 강의준비 하느라 전공책을 펴 놓으면 그 위에 올라가서 본다거나

 

 

다리 위에 앉아서 애교를 부렸습니다. 신기하게도 저한테는 늘 경계하고 도망가기 바쁘던 삼순이가 안지한테는 쪼르르 달려오고 착 달라 붙고 이럽니다. 고양이가 남자 사람보다 여자 사람에게 더 우호적이라는 얘기는 자주 들었습니다만 제가 뭘 잘못했는지는 아직도 잘 모르겠습니다.

 

 

안지가 안고 있는 모습. 안지도 동물을 만져보는 것은 처음이라 무서워했는데 둘은 빨리 친해졌습니다.

 

 

안지랑 놀던 삼순이는 졸린 듯 침실로 들어가 잠시 쉬더니,

 

 

다시 나와 영양을 보충하고,

 

 

또 이렇게 착 붙어서 애교를 떨었습니다.

 

 

안지가 만져 주면 저렇게 좋아했어요.

 

 

눈빛 보소.

 

 

서로 손도 잡고...

 

그 후로 삼순이는 집에 데려온 나는 쌩까고 안지만 따라 다니는 천하에 배은망덕한 고양이가 되었습니다.

 

 

'우리집 고양이' 카테고리의 다른 글

삼순이 (2012. 5 ~ 9)  (2) 2018.05.28
봄, 그리고 삼순 (2012. 3. 24 - 4. 30)  (0) 2018.05.05
토요일 아침 삼순 (2012. 3. 17-23)  (0) 2018.04.11
삼순이, 2012년 3월  (0) 2018.03.28
삼순이 처음 온 날  (0) 2018.03.15
Posted by jujaeuk
,