본문 바로가기

대외활동/TNS Internship

100204 TNS Korea Internship (38/53)

1. 

오늘도 어제에 이어 S프로젝트 Scripting.
어제의 internal error 해결됐다.

if (orig[2].toBoolean() && a[2].toBoolean() )
이렇게 이어지던 조건문들에 문제가 있었다.

위의 화면에서 a에만 입력됐다면 위의 코드도 문제가 없었겠지만
a에 입력하지 않고 직접 구입하지 않음에 찍는 경우도 있을 테니까

if (orig[2].toBoolean() && ( a[2].toBoolean() || b[2].toBoolean() ) )

이렇게 바꿨어야했다.

그렇게 첫번째 문제 해결.


2. 

두가지의 mask 조건을 하나로 합쳐야 할 일이 있었다.
i) A,B,C,D,E,F,G,H,I 중 써본 제품은?

ii) B,C,D,E,Z 중에 직접 구입해서 써본 제품은?

이제 질문을 만든다.
iii) A,B,C,D,E,F중에서 (직접 구입했을 가능성을 가진) 써본 제품은? 

이 상황에서 어떻게하면 iii번 문제의 보기(answer list)인 A,B,C,D,E를 추려낼 수 있을까?
아니. 그게 다가 아니다.
맨 처음 보기를 제시할 때 A,B,C,D,E,F 중에서 확실히 직접 구입하지 않은 제품은 제외를 시켜야 한다.

이럴때 iii)의 masking tab에다가

f('1번문항').isect( set(A의precode, F의precode) ) .union ( f('1번문항').isect(f('2번문항a')) )

이렇게 넣어주면 된다.

isect는 인터섹션intersection[교집합]을 의미한다. 
1번 문항과 A,F와의 교집합과
1번 문항과 2번문항a와의 교집합
의 합집합을 구하는 것.

2번문항a라고 한 이유는 
2번문항이 단순한 multi문항이 아니고 3DGrid의 항목들이기 때문이다.
즉 3DGrid 각각의 column이 (직접 구입하지 않았음)을 inc하고 있어야 한다.
그걸 그대로 가져다 쓸 수 없으므로, 2번문항a를 만들어 recode를 한 것이다.

써 놓고 보니, 뭔소린지..

결론은, 위대한 발견이었다! (나에겐)


3.

오류가 났다면,
에러가 발생했다면,
컴퓨터의 실수는 없다.
다 내 실수다.
컴퓨터는 단 한글자의 오타도 허용하지 않는다.
가끔은 이 사실이 정말 짜증이 날 때도 있지만,
나에게 완벽할 것을 요구하는 것만큼, 컴퓨터는 완벽한 답을 되돌려준다.

[i]  ← 이 부분을 빼먹고 한참을 고생하다가 찾아낸 뒤 얻은 결론.