Look and Say Sequence에 관해서 나는 일관을 가장 싫어한다
개시하다
가끔 아이들에게 산수, 수학에 관한 이야기를 할 기회가 있지만, 수열을 말할 때 꼭 하고 싶은 좋아하는 수열을 Look and Say Sequence(보기엔 수열)로 간략하게 정리해보자.
이 몇 열의 성질 중에는 존 호튼 콘웨이(John Horton Conway)가 분명히 한 성질이 있지만, 콘웨이는 지난해 코로나바이러스로 사망했다.
콘웨이 하면 생태계 시뮬레이션 프로그램'필생 게임'이 탄생해 유명한 수학자다.이렇게 위대한, 과학·기술 방면에서 위대한 쪽이 일관에서 잃어버려서 정말 슬프다.
3월 21일 두 달 반 동안 이어진 코로나 긴급사태 선언을 해제했지만 그 이후에는 어떻게 될까.
원격근무를 계속하느라 고생이 많았지만 열심히 공부해야 했어요
이른바 Look and Say Sequence 1, 11, 21, 1211, 111221, 312211, 13112221,・・・
이런 수열을 Look and Say Sequence라고 합니다.
이 몇 열은 앞의 (look)설(say)을 볼 수 있는 것에 근거하여 다음 숫자를 결정한다.
\begin{align}
1&・・・初項 \\
11&・・・前項が 1つの1 \\
21&・・・前項が 2つの1 \\
1211&・・・前項が 1つの2と1つの1 \\
111221&・・・前項が 1つの1と1つの2と2つの1 \\
\end{align}
첫 번째 항목이 5시이면 다음과 같다.(캉웨이 선생의 논문 도입은 55555에서 시작되었다)55555, 55, 25, 1215, 11121115,・・・
첫 번째는 22인 상황에서 변화가 없었다.아래와 같다.22,22,22・・・
그나저나 초등학생과 중학생은 매번 다음과 같은 형식으로 질문을 한다.1, 11, 21, 1211, 111221, ?
대략적으로 50명 중 2, 3명은 정답을, 1명은 몇 분, 몇 십 분을 거치면서 알게 됐고, 1명은 매일 고민하며 정답을 유도했다.아이도 무서워한다.(열심히 공부해야 하는데...)
참고로 구글 입사 시험에 나왔어요.
python으로 써볼게요.
def cal(x):
r = []
l = [1, x[0]]
for n in (x + "x")[1:]:
if n is l[1]:
l[0] += 1
else:
r.extend(l)
l = [1, n]
return "".join(map(str,r))
def look_and_say(a1, n):
s = str(a1)
r = [str(a1)]
for i in range(n-1):
s = cal(s)
r.append(s)
return r
실행하다n = 10
print(look_and_say(1, n))
// 実行結果
['1', '11', '21', '1211', '111221', '312211', '13112221', '1113213211', '31131211131221', '13211311123113112211']
Look and Say Sequence의 성격
수열에는 1, 2, 3을 제외한 숫자가 나오지 않는다.
"자릿수가 줄어들지 않아요".
"자릿수 무한대로 발산".
기다리다
제일 재밌었던 게...\lim_{n \to ∞} \frac{l_{n+1}}{l_n} =λ \\
λ = 1.303577・・・(コンウェイの定数)
왜 이렇게 변했는지 정말 불가사의하다.
이른바 망관 상수
\begin{align}
x ^ {71} &&&&-x ^ {69} &&-2x ^ {68} &&-x ^ {67} && + 2x ^ {66} && + 2x ^ {65} && + x ^ {64} &&-x ^ {63}\\
-x ^ {62} &&-x ^ {61} &&-x ^ {60} &&-x ^ {59} && + 2x ^ {58} && + 5x ^ {57} && + 3x ^ {56} &&-2x ^ {55} &&-10x ^ {54} \\
-3x ^ {53} &&-2x ^ {52} && + 6x ^ {51} && + 6x ^ {50} && + x ^ {49} && + 9x ^ {48} &&-3x ^ {47} &&-7x ^ {46} &&-8x ^ {45} \\
-8x ^ {44} && + 10x ^ {43} && + 6x ^ {42} && + 8x ^ {41} &&-5x ^ {40} &&-12x ^ {39} && + 7x ^ {38} &&-7x ^ {37} && + 7x ^ {36} \\
+ x ^ {35} &&-3x ^ {34} && + 10x ^ {33} && + x ^ {32} &&-6x ^ {31} &&-2x ^ {30} &&-10x ^ {29} &&- 3x ^ {28} && + 2x ^ {27} \\
+ 9x ^ {26} &&-3x ^ {25} && + 14x ^ {24} &&-8x ^ {23} &&&&-7x ^ {21} && + 9x ^ {20} && + 3x ^ {19} &&-4x ^ {18} \\
-10x ^ {17} &&-7x ^ {16} && + 12x ^ {15} && + 7x ^ {14} && + 2x ^ {13} &&-12x ^ {12} &&-4x ^ {11} &&-2x ^ {10} && + 5x ^ {9} \\
&& + x ^ {7} &&-7x ^ {6 } && + 7x ^ {5} &&-4x ^ {4} && + 12x ^ {3} &&-6x ^ {2} && + 3x &&-6
\end{align}
가장 큰 것.
matplotlib으로 보여드릴게요.
코드는 다음과 같습니다.import matplotlib.pyplot as plt
#
# <省略>
#
n = 20
x = list(range(1, n + 1))
list = [1 ,13, 23, 312, 55555]
for a1 in list:
s = look_and_say(a1, n)
plt.plot(x, [len(d) for d in s], label=f'a1={a1}')
plt.yscale('log')
plt.legend()
plt.show()
네.예쁘다.
50항까지 해보면 1.303에 가깝다.놀라다.
$\frac{l_{20}}{l_{19}}$
$\frac{l_{30}}{l_{29}}$
$\frac{l_{40}}{l_{39}}$
$\frac{l_{50}}{l_{49}}$
a1=1
1.337
1.309
1.304
1.303
a1=13
1.313
1.314
1.305
1.303
a1=23
1.226
1.299
1.305
1.304
a1=312
1.244
1.313
1.309
1.304
a1=55555
1.334
1.316
1.305
1.303
Reference
이 문제에 관하여(Look and Say Sequence에 관해서 나는 일관을 가장 싫어한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kiddayo/items/756c1b0d49a7d4e2c9fb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
1, 11, 21, 1211, 111221, 312211, 13112221,・・・
이런 수열을 Look and Say Sequence라고 합니다.이 몇 열은 앞의 (look)설(say)을 볼 수 있는 것에 근거하여 다음 숫자를 결정한다.
\begin{align}
1&・・・初項 \\
11&・・・前項が 1つの1 \\
21&・・・前項が 2つの1 \\
1211&・・・前項が 1つの2と1つの1 \\
111221&・・・前項が 1つの1と1つの2と2つの1 \\
\end{align}
첫 번째 항목이 5시이면 다음과 같다.(캉웨이 선생의 논문 도입은 55555에서 시작되었다)55555, 55, 25, 1215, 11121115,・・・
첫 번째는 22인 상황에서 변화가 없었다.아래와 같다.22,22,22・・・
그나저나 초등학생과 중학생은 매번 다음과 같은 형식으로 질문을 한다.1, 11, 21, 1211, 111221, ?
대략적으로 50명 중 2, 3명은 정답을, 1명은 몇 분, 몇 십 분을 거치면서 알게 됐고, 1명은 매일 고민하며 정답을 유도했다.아이도 무서워한다.(열심히 공부해야 하는데...)참고로 구글 입사 시험에 나왔어요.
python으로 써볼게요.
def cal(x):
r = []
l = [1, x[0]]
for n in (x + "x")[1:]:
if n is l[1]:
l[0] += 1
else:
r.extend(l)
l = [1, n]
return "".join(map(str,r))
def look_and_say(a1, n):
s = str(a1)
r = [str(a1)]
for i in range(n-1):
s = cal(s)
r.append(s)
return r
실행하다n = 10
print(look_and_say(1, n))
// 実行結果
['1', '11', '21', '1211', '111221', '312211', '13112221', '1113213211', '31131211131221', '13211311123113112211']
Look and Say Sequence의 성격
수열에는 1, 2, 3을 제외한 숫자가 나오지 않는다.
"자릿수가 줄어들지 않아요".
"자릿수 무한대로 발산".
기다리다
제일 재밌었던 게...\lim_{n \to ∞} \frac{l_{n+1}}{l_n} =λ \\
λ = 1.303577・・・(コンウェイの定数)
왜 이렇게 변했는지 정말 불가사의하다.
이른바 망관 상수
\begin{align}
x ^ {71} &&&&-x ^ {69} &&-2x ^ {68} &&-x ^ {67} && + 2x ^ {66} && + 2x ^ {65} && + x ^ {64} &&-x ^ {63}\\
-x ^ {62} &&-x ^ {61} &&-x ^ {60} &&-x ^ {59} && + 2x ^ {58} && + 5x ^ {57} && + 3x ^ {56} &&-2x ^ {55} &&-10x ^ {54} \\
-3x ^ {53} &&-2x ^ {52} && + 6x ^ {51} && + 6x ^ {50} && + x ^ {49} && + 9x ^ {48} &&-3x ^ {47} &&-7x ^ {46} &&-8x ^ {45} \\
-8x ^ {44} && + 10x ^ {43} && + 6x ^ {42} && + 8x ^ {41} &&-5x ^ {40} &&-12x ^ {39} && + 7x ^ {38} &&-7x ^ {37} && + 7x ^ {36} \\
+ x ^ {35} &&-3x ^ {34} && + 10x ^ {33} && + x ^ {32} &&-6x ^ {31} &&-2x ^ {30} &&-10x ^ {29} &&- 3x ^ {28} && + 2x ^ {27} \\
+ 9x ^ {26} &&-3x ^ {25} && + 14x ^ {24} &&-8x ^ {23} &&&&-7x ^ {21} && + 9x ^ {20} && + 3x ^ {19} &&-4x ^ {18} \\
-10x ^ {17} &&-7x ^ {16} && + 12x ^ {15} && + 7x ^ {14} && + 2x ^ {13} &&-12x ^ {12} &&-4x ^ {11} &&-2x ^ {10} && + 5x ^ {9} \\
&& + x ^ {7} &&-7x ^ {6 } && + 7x ^ {5} &&-4x ^ {4} && + 12x ^ {3} &&-6x ^ {2} && + 3x &&-6
\end{align}
가장 큰 것.
matplotlib으로 보여드릴게요.
코드는 다음과 같습니다.import matplotlib.pyplot as plt
#
# <省略>
#
n = 20
x = list(range(1, n + 1))
list = [1 ,13, 23, 312, 55555]
for a1 in list:
s = look_and_say(a1, n)
plt.plot(x, [len(d) for d in s], label=f'a1={a1}')
plt.yscale('log')
plt.legend()
plt.show()
네.예쁘다.
50항까지 해보면 1.303에 가깝다.놀라다.
$\frac{l_{20}}{l_{19}}$
$\frac{l_{30}}{l_{29}}$
$\frac{l_{40}}{l_{39}}$
$\frac{l_{50}}{l_{49}}$
a1=1
1.337
1.309
1.304
1.303
a1=13
1.313
1.314
1.305
1.303
a1=23
1.226
1.299
1.305
1.304
a1=312
1.244
1.313
1.309
1.304
a1=55555
1.334
1.316
1.305
1.303
Reference
이 문제에 관하여(Look and Say Sequence에 관해서 나는 일관을 가장 싫어한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kiddayo/items/756c1b0d49a7d4e2c9fb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def cal(x):
r = []
l = [1, x[0]]
for n in (x + "x")[1:]:
if n is l[1]:
l[0] += 1
else:
r.extend(l)
l = [1, n]
return "".join(map(str,r))
def look_and_say(a1, n):
s = str(a1)
r = [str(a1)]
for i in range(n-1):
s = cal(s)
r.append(s)
return r
n = 10
print(look_and_say(1, n))
// 実行結果
['1', '11', '21', '1211', '111221', '312211', '13112221', '1113213211', '31131211131221', '13211311123113112211']
수열에는 1, 2, 3을 제외한 숫자가 나오지 않는다.
"자릿수가 줄어들지 않아요".
"자릿수 무한대로 발산".
기다리다
제일 재밌었던 게...
\lim_{n \to ∞} \frac{l_{n+1}}{l_n} =λ \\
λ = 1.303577・・・(コンウェイの定数)
왜 이렇게 변했는지 정말 불가사의하다.이른바 망관 상수
\begin{align}
x ^ {71} &&&&-x ^ {69} &&-2x ^ {68} &&-x ^ {67} && + 2x ^ {66} && + 2x ^ {65} && + x ^ {64} &&-x ^ {63}\\
-x ^ {62} &&-x ^ {61} &&-x ^ {60} &&-x ^ {59} && + 2x ^ {58} && + 5x ^ {57} && + 3x ^ {56} &&-2x ^ {55} &&-10x ^ {54} \\
-3x ^ {53} &&-2x ^ {52} && + 6x ^ {51} && + 6x ^ {50} && + x ^ {49} && + 9x ^ {48} &&-3x ^ {47} &&-7x ^ {46} &&-8x ^ {45} \\
-8x ^ {44} && + 10x ^ {43} && + 6x ^ {42} && + 8x ^ {41} &&-5x ^ {40} &&-12x ^ {39} && + 7x ^ {38} &&-7x ^ {37} && + 7x ^ {36} \\
+ x ^ {35} &&-3x ^ {34} && + 10x ^ {33} && + x ^ {32} &&-6x ^ {31} &&-2x ^ {30} &&-10x ^ {29} &&- 3x ^ {28} && + 2x ^ {27} \\
+ 9x ^ {26} &&-3x ^ {25} && + 14x ^ {24} &&-8x ^ {23} &&&&-7x ^ {21} && + 9x ^ {20} && + 3x ^ {19} &&-4x ^ {18} \\
-10x ^ {17} &&-7x ^ {16} && + 12x ^ {15} && + 7x ^ {14} && + 2x ^ {13} &&-12x ^ {12} &&-4x ^ {11} &&-2x ^ {10} && + 5x ^ {9} \\
&& + x ^ {7} &&-7x ^ {6 } && + 7x ^ {5} &&-4x ^ {4} && + 12x ^ {3} &&-6x ^ {2} && + 3x &&-6
\end{align}
가장 큰 것.matplotlib으로 보여드릴게요.
코드는 다음과 같습니다.
import matplotlib.pyplot as plt
#
# <省略>
#
n = 20
x = list(range(1, n + 1))
list = [1 ,13, 23, 312, 55555]
for a1 in list:
s = look_and_say(a1, n)
plt.plot(x, [len(d) for d in s], label=f'a1={a1}')
plt.yscale('log')
plt.legend()
plt.show()
네.예쁘다.
50항까지 해보면 1.303에 가깝다.놀라다.
$\frac{l_{20}}{l_{19}}$
$\frac{l_{30}}{l_{29}}$
$\frac{l_{40}}{l_{39}}$
$\frac{l_{50}}{l_{49}}$
a1=1
1.337
1.309
1.304
1.303
a1=13
1.313
1.314
1.305
1.303
a1=23
1.226
1.299
1.305
1.304
a1=312
1.244
1.313
1.309
1.304
a1=55555
1.334
1.316
1.305
1.303
Reference
이 문제에 관하여(Look and Say Sequence에 관해서 나는 일관을 가장 싫어한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kiddayo/items/756c1b0d49a7d4e2c9fb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)