# JS Crossword - 단서 = eval(answer)인 크로스워드

> Clean Markdown view of GeekNews topic #29856. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=29856](https://news.hada.io/topic?id=29856)
- GeekNews Markdown: [https://news.hada.io/topic/29856.md](https://news.hada.io/topic/29856.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-05-25T20:01:53+09:00
- Updated: 2026-05-25T20:01:53+09:00
- Original source: [lyra.horse](https://lyra.horse/fun/jscrossword/)
- Points: 1
- Comments: 1

## Topic Body

- **JS Crossword**는 답을 `eval()`로 실행한 결과가 단서가 되는 퍼즐로, `7`은 `3+4`, `[object Object]`는 `[]+{}`로 풀 수 있음
- 퍼즐은 잘 알려지지 않았거나 난해한 **JavaScript 기능**을 활용해, JavaScript에 어느 정도 익숙한 사람에게 권장됨
- 사용 가능한 문자는 ``A-Za-z0-9!"()*+-./<=>[]`{}``로 제한되며, 공백·쉼표·세미콜론은 쓸 수 없고 **대소문자**를 구분함
- 답은 `eval()` **샌드박스**에서 평가되며, DevTools·MDN·검색은 허용되지만 AI로 푸는 것은 권장하지 않음
- 진행 상황은 **로컬에 저장**되고, 전체 보드를 풀면 엔딩과 리플레이 기능을 볼 수 있으며 통계는 수집하지 않음

---

### 퍼즐 규칙
- **JS Crossword**는 크로스워드 답을 `eval()`로 실행한 결과가 단서가 되는 퍼즐임
- 단서 `7`은 `3+4`, 단서 `[object Object]`는 `[]+{}`로 풀 수 있음
- 잘 알려지지 않았거나 다소 난해한 **JavaScript 기능**을 사용하므로, JavaScript에 어느 정도 익숙한 사람에게 권장됨
- 사용할 수 있는 문자는 ``A-Za-z0-9!"()*+-./<=>[]`{}``로 제한되며, 공백·쉼표·세미콜론은 사용할 수 없음
- 크로스워드는 **대소문자를 구분**하며, 최종 답은 영어 단어만으로 구성되어 `A-Za-z`와 일치해야 함
- 답은 `eval()` 샌드박스 안에서 평가되며, 페이지 아래 플레이그라운드에서 직접 시험할 수 있음
- DevTools, MDN, 검색 같은 외부 리소스는 허용되지만, AI로 푸는 것은 권장하지 않음
- 입력 방향은 칸을 클릭하거나 `ctrl`을 눌러 바꿀 수 있고, 진행 상황은 **로컬에 저장**됨
- 색상은 정답 가능성, 잘못된 문자, 오류, 미리 채워진 칸을 구분함

### 완료와 공유
- 최종 답은 **`horses gonna answer`** 로 표시됨
- 전체 보드를 풀면 별도 엔딩이 나오며, 오디오와 강한 시각 효과가 포함된다는 안내가 있음
- 완료 후 브라우저를 새로고침하고 JavaScript 콘솔에서 `replayCapture()`를 실행하면 플레이 리플레이를 볼 수 있음
- 리플레이 데이터는 모두 **로컬에만 저장**되며, 크로스워드 관련 데이터나 통계는 수집하지 않는다고 밝힘
- 엔딩 음악은 [revolea - its giving music](https://soundcloud.com/fortheinternet/its-giving-music)임
- 제작자는 [Lyra Rebane](https://lyra.horse/)이며, 플레이테스트에는 [Jorian Woltjer](https://jorianwoltjer.com/)가 참여함
- 의견 공유 링크: [fedi](https://infosec.exchange/@rebane2001/116632169141393181), [bsky](https://bsky.app/profile/rebane2001.bsky.social/post/3mmn4tooht223), [twitter](https://twitter.com/rebane2001/status/2058693153121542388)

## Comments



### Comment 58198

- Author: neo
- Created: 2026-05-25T20:01:55+09:00
- Points: 1

###### [Lobste.rs 의견들](https://lobste.rs/s/nkrgmr/js_crossword_crossword_where_clue_eval) 
- 진한 선이 보이는데 무슨 뜻인지 궁금함. 문자열을 나누는 건가? 십자말풀이에서 그런 건 처음 봤음  
  수정: 관련 칸이 강조되는 걸 보니 확실히 그런 듯함. 이제는 당연해 보이지만 첫 단서에서는 꽤 헷갈렸음
  - 맞음, 답을 **끊어 주는 선**임. 십자말풀이에서는 꽤 표준적이고, 적어도 내 나라에서 만드는 퍼즐에는 흔함

- 해답이 **유일하지 않다**는 점이 약간 아쉬웠음. `tr:nth-child,td:nth-child` 표기법으로 보면 `2,6`, `10,18`, `13,14`, `16,16`, `18,8`의 단일 칸들이 제약이 부족함  
  접근법이 여러 개인 것도 적어도 하나, 아마 더 있음. 38-down은 `this`를 쓰도록 의도한 것 같지만, 완성 스크린샷을 올린 다른 사람은 `/h/s`를 썼고 그것도 동작함  
  교차 칸에서 수정을 하면 하나는 고쳐지고 하나는 깨지는 식으로 **정답 검증**이 가끔 실패하거나 이상하게 동작했음. 초록색을 보려면 문자를 다시 입력해야 했음  
  페이지 새로고침 후 재생은 내 38-down을 해결된 것으로 인식하지만, 마지막 연출 재생은 그렇지 않았음. 더 크게는 9-down이 마지막 미해결이었고 22-across를 그와 호환되지 않는 방식으로 풀어 둔 상태였는데, 교차 칸을 바꿔 9-down을 고치자 22-across가 깨졌는데도 “whoaw!!”까지 뜨며 완료로 처리됐음. 새로고침 후 재생은 아직 끝나지 않았다고 제대로 인식함  
  몇 번은 글롭과 맞는 이름을 찾으려고 JavaScript 표준 라이브러리를 검색해야 했음. 로컬 MDN 사본이 없어서 `find -name "??x?x.html"` 같은 걸 못 했다면 어떻게 풀었을지 모르겠음  
  29-down은 아직도 반칙처럼 느껴짐. 그래도 정말 재미있었고, 내 오전 시간을 꽤 가져갔음 🙂
  - 플레이해 줘서 고마움 ^^!  
    **유일하지 않은 해답**은 의도한 것임. 여러 접근으로 푸는 것도 마찬가지임. 해커스러운 도전 과제라서, 영리한 다른 해법을 떠올릴 수 있다면 허용하는 게 맞다고 봄  
    교차 칸의 정답 검증 실패는 안정적으로 재현할 방법이 있는지 궁금함  
    교차 풀이 문제는 잘 잡아냈음. 아마 재미있는 비동기 JavaScript 경쟁 조건일 것 같고, 그래도 꽤 고치기 쉬울 듯함

- 정말 훌륭했음! 몇 시간 걸렸고 중간에 몇 번 쉬면서 곱씹어야 했지만 결국 풀었음. 이런 경험을 좋아하고, **정규식 십자말풀이**도 아주 좋아함. 만들어서 공유해 줘서 고마움

- 절반 정도밖에 못 풀었지만, 그 과정에서 몇 가지를 배웠음. JavaScript에는 이상한 경계 사례만큼이나 **오래된 찌꺼기**도 많음  
  긴 단서들은 너무 열려 있어서 시작조차 하기 어려웠음. 마음에 들었던 건 1-down, 33-down임  
  어쨌든 인상적인 작품임

- 세상에, 이건 너무 어려움 :)

- 브라우저의 **뒤로 가기 버튼**을 가로채거나 방해하는 사이트는 스팸으로 표시해야 함
  - 수정: 고쳤음. 일부 브라우저가 `iframe.src` 대입을 **탐색**으로 간주한다는 걸 알게 됨
