JetBrains 퀘스트는 도대체 무엇인가요?

게시일: 작성자: Jessie Cho

JetBrains에는 많은 개발자가 있으며, 대부분이 게임, 그것도 도전 의식을 북돋우는 게임을 좋아합니다. 그래서, 각 퍼즐에 대한 해답이 다음 퍼즐의 힌트가 되는 보물찾기 게임을 만들어 보기로 하였습니다. 부활절 달걀처럼 JetBrains 소스 안에 퍼즐을 숨겨놓는거죠. 오랜 시간에 걸친 브레인스토밍 끝에 JetBrains 퀘스트가 탄생하였습니다.

JetBrains 퀘스트는 다양한 JetBrains 페이지와 제품에 흩어져 있는 일련의 퍼즐입니다. 이 게임은 3개의 퀘스트로 구성되어 있으며, 각 퀘스트에는 풀어야 할 퍼즐이 4-6개가 있습니다. 첫 번째 퀘스트는 향후 진행 방법을 예상할 수 있도록 비교적 쉽게 짜여져 있으며, 진행하는 동안 난이도가 올라갑니다. 이 퀘스트는 3월 9일 JetBrains 소셜 미디어 네트워크(
Twitter, FacebookLinkedin)에 게시되면서 시작되어 3월 15일 오후 12시(중앙 유럽 표준시 기준)에 종료되었습니다. 지금은 모든 퍼즐이 삭제된 상태입니다.

저희 커뮤니티의 반응은 매우 뜨거웠습니다!

Group_noblocks-2-2-2

고전하신 분들도 계셨습니다.Group_3_noblock-2-2-2

사용자들은 더 많은 퀘스트를 요청하기도 했습니다.Group_2_block-2

댓글을 분석한 결과 가장 풀기 어려운 퀴즈는 피보나치(Fibonacci) 문제였던 것 같습니다. 이 퍼즐은 IntelliJ IDEA Community Edition의 특정 버전에 있는 오늘의 팁 안에 숨겨져 있었습니다.
오늘의 마지막 퀘스트 팁

JetBrains 퀘스트를 발견하셨습니다! 이것이 무엇인지 모르실 경우 처음부터 시작하세요.
이것이 마지막 퍼즐입니다. 영예로운 순간이 바로 눈 앞에 있습니다!
이제 퀘스트 페이지의 잠금을 해제할 열쇠만 있으면 됩니다.
열쇠는 피보나치 수열 50 * 10^6번째 항(F(5000만))의 처음 및 마지막 4자리 수입니다.
지금쯤은 이미 답을 알고 있겠지만, 반짝인다고 모두가 금은 아닙니다. 이 퍼즐을 풀려면 명백한 답으로 바로 가서는 안 됩니다. 영예로운 선택을 하시기 바랍니다.
기한은 3월 15일 오후 12시(중앙 유럽 표준시 기준)임을 기억하세요.

이것이 전체 퀘스트의 마지막 퍼즐이었습니다. 직접적인 접근 방법을 사용해 해결하려고 하면 해답을 찾는 데 몇 시간 또는 심지어 며칠이 걸릴 수 있습니다. 이 퍼즐을 해결하는 데 주로 두 가지 접근 방법이 사용되었습니다. 쉬운 방법은 Wolfram|Alpha를 사용해 처음마지막 4자리 수를 구하는 것이었습니다.

두 번째 방법은 비교적 어렵지만 한 가지 장점이 있는데, 더 많은 성취감을 얻을 수 있다는 것입니다! 피보나치 수열을 더 빠르게 계산하는 알고리즘이 있습니다. 저희는 다음 방법 중 하나를 구현하기를 기대했습니다. 다음은 예입니다.

import math
def last_fib_digits(fib_number, last_digits):
   prev, cur = 0, 1
   q = 10 ** last_digits
   while fib_number > 0:
       prev, cur = cur, prev + cur
       fib_number -= 1
       cur %= q
   return prev
def first_fib_digits(fib_number):
   phi = (math.pow(5.0, 0.5) + 1) / 2
   logF = fib_number * math.log10(phi) - 0.5 * math.log10(5.0)
   return math.pow(10.0, logF - int(logF))
print(last_fib_digits(50000000, 4))
print(first_fib_digits(50000000))

처음 4자리 수: 4602
마지막 4자리 수: 3125

이 퀘스트를 완료하지 못하신 경우 이곳에서 모든 퍼즐 및 답안을 확인하실 수 있습니다.

JetBrains 퀘스트에 참가해 주신 모든 분들께 감사 드립니다. 아래에 댓글을 남겨서 어떤 퍼즐이 가장 재미있었는지 알려 주세요.

참가해 주셔서 감사합니다! 여러분의 인생에 재미있는 모험이 많기를 바랍니다!
– JetBrains 퀘스트 팀

본 게시물은 Oscar RodriguezWhat on Earth Was the JetBrains Quest?를 번역한 글입니다.