JavaScript 17일차

펭도리·2021년 2월 21일
0

JavaScript

목록 보기
17/32
post-thumbnail

루빅스 큐브 구현하기

cube라는 빈 배열을만들어주고 push해주는데 new Array(3)은 3개의 요소를 추가한다. .fill(new Array(3).fill('W')));는 앞에서 만든 3개의 요소 각각의 요소에 3개의 W를 채워준다. 따라서 총 1x3 'W'의 배열이 3개 생긴다.

check함수를 통해 내가 받아온 문자열을 나누어 주는 작업을 하였고 2차 테스트에선 문자열을 나누어주고

다시 합치는 과정에서 뒤에 빈 공간이 생기게 되었다.

그래서 생각한 것은 splice였고 생각한 것처럼 뒷 빈 배열을 삭제할 수 있었다.

rotate 함수를 만들어 알고리즘을 생각하였고 비슷하게 동작하는 것들끼리 짝을 지어 한 묶음으로 생각하였다.

U 와 D는 큐브를 펼쳐놨다고 가정하였을 경우 윗면과 아랫면이 시계방향으로 돌아갔을 때 가운데 4개의 배열만 움직이게 된다. 윗방향을 돌렸을 경우 윗줄이 움직이게 되고 아랫방향을 돌렸을 경우 아랫줄이 움직이게 된다.

이와 괕이 나머지 2묶음도 동시에 움직이게 구성해 보었다.

toConsole 함수를 통해서 초기상태를 출력하였다.

큐브를 펼쳐논 모습을 출력하여야 하기에 윗부분,전면부4개,아랫부분 이렇게 3개로 나누게 되었고

결과적으로 큐브를 펼쳐논것과 같은 모양을 얻을 수 있었다.

U 와 D 만 판단하는 함수 입니다.

삼항연산자를 사용하여 참 거짓을 이용하였습니다. 이렇게하면 8줄을 4줄로 줄일 수 있습니다.

U일 경우 arr에 push해준 배열을 왼쪽으로 한칸씩 미뤄주었습니다.

EX) W O G Y -> O G Y W

D일 경우에는 오른쪽으로 한칸씩 미뤄주었습니다.

EX) W O G Y -> Y W O G

이렇게 하여 U일경우와 D일경우를 따로 출력하는 함수를 만들어 주었습니다.

profile
풀스택 개발자가 되고싶은 코린이 이한글

0개의 댓글