본문 바로가기
기타

[개탱][javascript] 꼬맨틀 매크로 만들기

by 개탱 2023. 1. 25.
728x90

(문제시 말씀해 주시면 수정 또는 삭제하겠습니다!)

(게임을 재미없게 만드는 방법이니 공부 또는 재미 목적으로 읽어주시면 감사합니다!)

 

Q. 꼬맨틀은 무엇인가요?

A.꼬맨틀은 오늘의 단어를 맞히는 게임입니다. 정답 단어를 추측하면, 추측한 단어가 정답 단어와 얼마나 유사한지 유사도 점수로 알려줍니다. 가장 유사한 단어의 유사도와 가까운 단어를 추측하면서, 정답 단어를 맞혀보세요.

(자세한 건 하단 꼬맨틀 링크)

https://semantle-ko.newsjel.ly/

 

꼬맨틀 - 단어 유사도 추측 게임 - 뉴스젤리 : 데이터 시각화 전문 기업

하루에 한 번, 오늘의 단어를 맞혀보세요. 단어를 입력하면 정답 단어와의 유사도를 보여줍니다.

semantle-ko.newsjel.ly:443

꼬맨틀 문제를 풀어오던 중 후배님의 요청

 

KKI : 고맨? 고맨틀 매크로 주세요!

 

네..

 

 

과정


먼저 꼬맨틀의 Q&A를 확인해 보면

 

Q. 정답 단어에는 어떤 단어가 포함되어 있나요?
A.
  • 정답 단어는 명사뿐만 아니라 동사, 형용사 등 모든 품사를 포함하며, 품사의 기본형만 해당합니다.
    예시) 행복, 기쁘다, 사랑하다, 야옹, 그래도, 갑자기
  • 정답 단어는 Wiktionary에서 자주 쓰이는 한국어 낱말을 가져와 두 글자 이상의 단어만을 추출, 임의 선택합니다. 정답 단어는 모두 두 글자 이상이지만, 전략적인 이유로 한 글자 단어를 추측해볼 수 있습니다.

정답은 Wiktionary 에 다 있다고 합니다.

 

그럼 여기서 우린 간단한 알고리즘을 설계할 수 있게 됩니다!

1. 꼬맨틀은 단어를 입력창에 넣고 검색을 눌러 정답유무를 체크한다.

2. 정답은 Wikitionary의 한국어 안에 있다.

3. 그럼 Wikitionary의 모든 단어를 다 검색하다 보면 한 개쯤은 맞는다.

 

그럼 Wikitionary의 모든 단어를 배열로 만들어서

반복문으로 돌려가며 하나씩 검색시키다 보면

언젠간 하나쯤은 맞아있지 않을까?! 

 

라는 생각과 함께

 

1. Wikitionary의 모든 단어를 배열로 만들어서

2. 반복문으로 돌려가며 하나씩 검색시키다 보면

3. 언젠간 하나쯤은 맞아있지 않을까?! 

 

라는 순서로 개발을 시작해 봅시다.

 

먼저 Wiktionary 에 진입해서 Element 검색을 켜줘 봅시다.

단어 하나를 검색하여 대에충 훑어보니 각 아이템들은 

<span class="Kore" lang="ko">
	<a href="/wiki/%EA%B5%AC%EC%B2%AD#Korean" title="구청">
    	구청
	</a>
</span>

Kore라는 class명의 span 태그와 <a> 태그로 감싸지고 있었습니다.

그러니 우리는 각 단어를 가져오려면

 

wordList = document.getElementsByClassName('Kore')

를 통해 Kore를 가져와..ㅈ...

 

 

짜잔 이렇게 가져올 수 있게 됩니다!

( 저부분은 직접..! )

여기서 두 글자 이상이라는 조건을 추가하여 

 

 

 

 

 

 

 

 

 

이후는 간단합니다.

 

정답을 집어넣을 input 영역의 id값과

추측버튼을 누를 id값을 받아와

아래와 같이 정의한 다음

input = document.getElementById("guess")
button = document.getElementById("guess-btn")

 

처음 인덱스의 시작값인 i는 0으로 초기화 해준다음

let i = 0;

 

input에 데이터를 밀어 넣고

button을 눌러주는 함수를 생성한 다음

f = (i) => {
    input.value = li_word[i];
    button.click();
}

 

네트워크 부하 방지와 자체적인 메모리 이슈 등등등을 방지하기 위하여

setInterval로 i를 증가시켜 주며 f함수를 실행시켜 주면

setInterval( 실행할 함수, 실행속도 (ms))

//실행할 함수를 실행속도 주기로 실행시켜 줌.

 

 

 

이렇게 자동으로 톡톡톡 넣어주며 단어들을 반복하다 보면

 

 

이렇게 정답 도출이 가능해집니다!

(다만 이렇게 하면 게임을 하는 이유가 없으니.. 직접 풀면서 게임해 봅시다!)

728x90

 

댓글