Python/Python Challenge

[Python Challenge 10] 뚠뚠

Python Challenge 10의 url은 다음과 같다.

Python challenge 10 : http://www.pythonchallenge.com/pc/return/bull.html


구성

화면에는 성의 없는 글자가 있다.

 

len(a[30])

 

다른 말로하면

 

"야 내가 a라는 배열을 어디 숨겼는데 그거 찾아서 30번째 인덱스 항목의 길이 좀 가져와바"

 

이다 허허... 싹수없는 새 X가

소머리를 누르면 sequence.txt라는 페이지로 이동한다.

 수열도 답이 없어 보이는데... 규칙을 찾아보자


해결 아이디어

개미 수열이라는 수열이 있다, 아래를 참고하자

https://ko.wikipedia.org/wiki/%EC%9D%BD%EA%B3%A0_%EB%A7%90%ED%95%98%EA%B8%B0_%EC%88%98%EC%97%B4

 

읽고 말하기 수열 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 이 선들은 23 (빨강), 1 (파랑), 13 (보라), 312 (초록)으로 시작하는 읽고 말하기 수열의 자릿수를 나타낸다. 이 선은 (로그 수직 척도로 나타냈을 때) 기울기가 콘웨

ko.wikipedia.org

즉 다음과 같은 규칙을 가진다.

이지하다 이제 다음의 아이디어를 구현하자

### 10.py

if __name__ == "__main__" :
    a = ["1"]
    
    while(len(a)<31) :
        base = a[-1][0]
        cnt = 1
        next_val = ""
        for i in range(1,len(a[-1])) :
            if(a[-1][i] != base) :
                next_val += str(cnt)+str(base)
                base = a[-1][i]
                cnt = 1
            else :
                cnt +=1
        next_val += str(cnt)+str(base)
        a.append(next_val)
    
            
    print(len(a[30]))

출력은 다음과 같다.

5808

찾았다.

Answer Url : http://www.pythonchallenge.com/pc/return/5808.html


여담인데, 이 개미 수열은 신기하게도 다음 원소를 분자로 하고 현재 원소를 분모로 하는 경우 콘웨이 상수라는(약 1.3) 곳에 수렴한다고 한다.