lehrkraefte:blc:informatik:ffprg1-2019:arrays-lists

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:ffprg1-2019:arrays-lists [2019/02/19 15:16]
Ivo Blöchliger [Listen vs. Arrays]
lehrkraefte:blc:informatik:ffprg1-2019:arrays-lists [2019/02/26 10:02] (current)
Ivo Blöchliger [Aufgabe 1]
Line 24: Line 24:
  
  
-===== Aufgabe 1 ===== 
-Erzeugen Sie ein Array der Länge 20 so, dass das erste Element 0, das zweite 1, und jedes folgende Element die Summe der beiden vorhergehenden ist: 
-  [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181] 
-  
  
  
 ===== Erzeugung von Arrays ===== ===== Erzeugung von Arrays =====
 <code python> <code python>
-q = [i*i for i in range(11)]   # Quadratzahlen von 0 bis 100 +# Mit einer for-Schlaufe
-print(q)    # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100] +
 w = []    # Leeres Array w = []    # Leeres Array
 for i in range(11): for i in range(11):
Line 40: Line 34:
    
 print(w)  # [0, 1, 8, 27, 64, 125, 216, 343, 512, 729, 1000] print(w)  # [0, 1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
 +
 +
 +# The fancy way:
 +q = [i*i for i in range(11)]   # Quadratzahlen von 0 bis 100
 +print(q)    # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
 +
 </code> </code>
 +
 +
 +==== Aufgabe 1 ====
 +Erzeugen Sie ein Array der Länge $n$ (z.B. 20) so, dass das erste Element 0, das zweite 1, und jedes folgende Element die Summe der beiden vorhergehenden ist. Die Länge $n$ soll sich ganz einfach im Code anpassen lassen. Für $n=20$ sollte das Resultat
 +  [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181]
 +sein.
 +
 +<hidden Lösungsvorschlag>
 +<code python>
 +n = 20
 +fib = [0,1]
 +for i in range(2,n):
 +  fib.append(fib[i-2]+fib[i-1])
 +print(fib)
 +</code>
 +Der Quotient nähert sich $\frac{1}{\varphi}$, dem Kehrwert des Golden Schnitts, positive Lösung der Gleichung $1:x = x:(1-x)$. $\varphi$ ist auch als die "irrationalste" Zahl bekannt. D.h. um die Zahl mit gegebener Präzision durch eine Bruchzahl anzunähern ist Nenner grösser als für andere irrationale Zahlen.
 +</hidden>
 +
 +Erzeugen Sie daraus ein Array der Länge $n-1$, das die Quotienten zweier aufeinanderfolgenden Einträge vom obigen Array enthält. Resultat:
 +  [0.0, 1.0, 0.5, 0.6666666666666666, 0.6, 0.625, 0.6153846153846154, 0.6190476190476191, 0.6176470588235294, 0.6181818181818182, 0.6179775280898876, 0.6180555555555556, 0.6180257510729614, 0.6180371352785146, 0.6180327868852459, 0.6180344478216818, 0.6180338134001252, 0.6180340557275542, 0.6180339631667066]
 +
 +Wissen Sie, welcher Zahl sich diese Folge nähert?
 +
 +<hidden Lösungsvorschlag>
 +<code python>
 +n = 20
 +fib = [0,1]
 +for i in range(2,n):
 +  fib.append(fib[i-2]+fib[i-1])
 +print(fib)
 +
 +quotients = []
 +for i in range(1,n):  # Achtung: es gibt nur n-1 Quotienten!
 +  quotients.append(fib[i-1]/fib[i])
 +
 +print(quotients)
 +</code>
 +</hidden>
 +
 +==== Aufgabe 2 ====
 +Erzeugen Sie ein Array mit den ersten $n$ (z.B. 100) Primzahlen.
 +
 +Bonus: Benutzen Sie das teilweise erstellte Array von Primzahlen, um effizienter die Primalität weiterer Kandidaten festestellen zu können.
 +
 +==== Aufgabe 3 ====
 +Erzeugen Sie ein Array mit $n$ Einträgen, die alle True sein sollen, ausser die Einträge mit den Indizies 0 und 1 sollen False sein.
 +
 +Setzen Sie dann jeden zweiten Eintrag (ab Index 4) auf False (weil nicht prim).
 +
 +Dann jeden dritten Eintrag (ab Index $9=3\cdot 3$) auf False (weil nicht prim).
 +
 +Dann jeden fünften Eintrag (ab Index 25), etc.
 +
 +Dand jeden $p$-ten Eintrag (ab Index $p^2$), wobei $p$ eine Primzahl ist.
 +
 +Am Schluss erhalten Sie ein Array, das für jeden Index angibt, ob der Index prim ist oder nicht.
 +
 +
 +
 +
  
 ===== Mehrdimensionale Arrays ===== ===== Mehrdimensionale Arrays =====
  • lehrkraefte/blc/informatik/ffprg1-2019/arrays-lists.1550585769.txt.gz
  • Last modified: 2019/02/19 15:16
  • by Ivo Blöchliger