Das Video von Quiz Knock wurde neulich veröffentlicht. [University of Tokyo] Fordern Sie die Google-Aufnahmeprüfung in der Google-Zentrale heraus! enthielt ** Look-and-Say-Sequenz **. Dies ist eine Folge von Zahlen, die sich gemäß der Regel ändert, dass der erste Term 1 ist und die aus dem vorherigen Term ausgelesenen Zahlen im nächsten Term angeordnet sind, wie unten gezeigt.
1 =1 ist 1(One 1) → 1 1
1 1 =2 1s(Two 1s) → 2 1
2 1 =2 ist 1,1 ist 1(One 2, One 1) → 1 2 1 1
1 2 1 1 =1 ist 1,2 ist 1,2 1s...
Ich wusste zum ersten Mal in diesem Video, dass es so viele Zeilen gibt, und fand das interessant Ich habe ein Programm in Python geschrieben, das diese Zahlenfolge generiert.
def lookAndSay(initialValues, maxIteration=None):
x = initialValues
yield x
iteration = 1
while True:
if maxIteration is not None and iteration >= maxIteration:
break
new_x = []
prev = x[0]
count = 1
for n in x[1:]:
if n == prev:
count += 1
else:
new_x.append(count)
new_x.append(prev)
prev = n
count = 1
new_x.append(count)
new_x.append(prev)
x = new_x
yield x
iteration += 1
Wenn Sie wie folgt vorgehen, wird eine Look-and-Say-Sequenz mit dem ersten Term 1 bis zum 10. Term generiert und ausgegeben.
>>> for li in lookAndSay([1], 10):
... print(li)
...
[1]
[1, 1]
[2, 1]
[1, 2, 1, 1]
[1, 1, 1, 2, 2, 1]
[3, 1, 2, 2, 1, 1]
[1, 3, 1, 1, 2, 2, 2, 1]
[1, 1, 1, 3, 2, 1, 3, 2, 1, 1]
[3, 1, 1, 3, 1, 2, 1, 1, 1, 3, 1, 2, 2, 1]
[1, 3, 2, 1, 1, 3, 1, 1, 1, 2, 3, 1, 1, 3, 1, 1, 2, 2, 1, 1]
Lassen Sie uns in den Kommentaren wissen, ob es einen besseren Weg gibt!
Recommended Posts