반응형

안녕하세요

이번에는 신호 감지기에 대해서 알아보도록하겠습니다.

신호감지기의 주요 질의는 다음과 같습니다.


초기조건 : A,B의 기본값을 0으로 설정합니다.

반복

1. 신호값을 하나 입력받아 B에 입력합니다.

2. A와 B를 비교를 하여 10 이상 차이가 나면 1을 출력하고 아니면 0을 출력합니다.

3. B의 값을 A에 입력합니다.

이런 형태의 구조가 나옵니다.

X같은경우 해당값을 바로 출력하면 되기때문에 따로 저장을 하지 않아도 괜찮습니다.

따라서 다음과 같은 코드가 나오게됩니다.

단계별로 설명 하자면

1.값을 받아서 B에 저장합니다.

그 후 0보다 크면 B-A 크면 A-B가 되게 순서를 조절합니다.

2.초기 출력값 0을 미리 출력합니다.

그 후 위에서 내려오는 값을 받습니다.

그리고 오른쪽에서 들어오는 값을 빼줍니다.(B-A or A-B가 됩니다.)

결과값이 음수일경우 NEG를 통하여 양수로 변경합니다.

10을 뺀 후 0이하의 값이 나올경우 0을 출력하고 아닐경우 1을출력합니다.



반응형
반응형

뭔가 콘텐츠의 부족을 느끼네...
콜렉션류 게임을 너무 즐겼나..?

반응형

'잡담' 카테고리의 다른 글

요리차원 출시됬네요  (0) 2018.04.30
기다림의 미학  (0) 2018.04.26
잔소리 싫어요  (0) 2018.04.23
으앙  (0) 2018.04.21
왜?  (0) 2018.04.18
반응형

오랫동안 기다리고있던 벽람항로가 드디어나왔네요 

나온지는 좀 됐지만 ㅎㅎㅎ

그래도 예전에 재밋게 하던 게임이 한국에 정발되는 걸보니 기분은 좋네요



반응형

'게임 > 노래' 카테고리의 다른 글

Mili - Camelia  (0) 2018.04.21
Overhit - Fullmetal Princess  (0) 2017.12.11
potal 2 - Want You Gone  (0) 2016.01.11
potal - Still Alive  (0) 2016.01.11
영웅의 군단 OST  (0) 2016.01.05
반응형

게임도 재밌고 애니도 재밌고
세상엔 재밌는게 너무많은데
왜이렇게 심심할까...?

반응형

'잡담' 카테고리의 다른 글

요리차원 출시됬네요  (0) 2018.04.30
기다림의 미학  (0) 2018.04.26
잔소리 싫어요  (0) 2018.04.23
으앙  (0) 2018.04.21
벽람항로 재미는 있는데  (0) 2018.04.20
반응형

이번에는 시퀀스 카운터에 대해 알아볼께요


SEQUENCE COUNTER SEGMENT에 들어갑니다.


그럼 다음과 같은 화면이 나올거에요

인풋값은 하나인데 아웃풋은 2개인데다가 인풋값보다 짧군요.

지문을 읽어보도록 하죠

SEQUENCES ARE ZERO-TERMINATED

READ A SEQUENCE FROM IN

WRITE THE SUM TO OUT.S

WRITE THE LENGTH TO OUT.L

해석해보자면

0을 기준으로 하나의 출력값을 만듭니다.

IN값을 받아서

OUT.S에는 더한 값을 출력하고 

OUT.L에는 더한 갯수를 출력하세요.

군요


이제 이 로직을 어떻게 만들까에 대해서 생각해보도록 하죠.

우선 0이 들어오기 전까지의 갯수를 카운트 하는 모듈이 하나 필요하고 

그다음은 0이 들어오기전까지 값을 더하는 모듈이 하나 필요 할듯하네요.

그리고 0이 여러번 들어왔을때의 처리방법도 생각해둬야 겠네요.


그런 끝에 만들어진 로직이 다음과 같습니다.

뛰어넘는 구간이 많고 조잡해보이지만 이 로직을 참고로만 보신다면 더 줄일 수 있으실겁니다.

물론 무조건 줄인다고 좋다는건 아니지만 말이죠


잡설은 그만하고 코드분석을 하도록 하죠.

첫라인의 값들은 인풋으로 들어온 값을 좌,우,아래로 보내주는 역활을 하고있습니다.

매우 심플합니다.

그 다음 라인을 보죠

첫번째 모듈부터 보도록 하겠습니다.


입력값을 받아서 ACC에 저장합니다.

0인지 비교하여 0이면 ZERO: 로 넘어가고 아니면 아래 로직을 실행합니다.

SWP  BAK과 ACC값을 바꿉니다.

오른쪽에서 들어오는 값을 저장합니다.

END로 이동합니다.

0일 경우 이후 로직이 수행됩니다.

BAK과 ACC 값을 바꿉니다.

ACC의 값을 아래로 보낸 후 0으로 초기화합니다.

이후 END: 로직으로 BAK값을 ACC로 돌려둡니다.


첫번째 모듈은 0값을 기준으로 입력값을 누적하는 모듈입니다.


두번째 모듈을 보죠

위에서 보내온 값을 받습니다.

0인지 확인 합니다.

0일 경우 ZERO: 로 이동합니다.

그렇지 않을경우 ACC의 값을 왼쪽으로 이동합니다.

그 후 1을 오른쪽으로 이동합니다.







두번째 모듈은 ACC의 값을 가지고있다가 0이 필요할때 보내주고 갯수를 증가해주는 부분입니다.

여기서는 따로 처리하는 부분이 크지않습니다.

입력값을 보내던가 갯수를 추가하기위한 값을 보내는 정도라서 다시 잘 수정한다면 이 로직은 없어도 될거같은 부분이네요.

일단 지금까지는 합을 구하는 부분까지만 나왔으니 다음 모듈이 갯수를 구하는 모듈이라는 것을 짐작하실수 있을겁니다.


그럼 세번째 모듈을 보도록 하죠

위에서 값을 받아 ACC에 저장합니다.

0인지 확인하여 0이면 ZERO로 이동합니다.

아닐경우 BAK 값과 ACC값을 바꿉니다.

그리고 왼쪽에서 오는 값을 더합니다.

END로 이동합니다.

0일 경우 다음로직을 수행합니다.

BAK값과 ACC값을 바꿉니다.

ACC값을 아래로 보냅니다.

ACC값을 0으로 초기화합니다.

BAK값과 ACC값을 바꿉니다.


첫번째 모듈과 비교를 해보면 달라진 부분이업습니다.

네 똑같아요

단지 왼쪽으로 받느냐 오른쪽으로 받느냐의 차이뿐입니다.

마지막 세번째 라인은 해당값을 OUT으로 보내는 것 뿐이네요.


이상으로 SEQUENCE COUNTER를 마치도록 하겠습니다.


반응형
반응형



반응형

+ Recent posts