lehrkraefte:blc:informatik:ffprg1-2020:start

Freifach Programmieren, Einstieg

Einstieg

  • Finden Sie eine Primzahl, die immer wieder eine Primzahl ergeben, wenn man jeweils die erste Stelle streicht.

Z.B. 337 (prim) → 37 (prim) → 7 (prim). Wer findet die grösste solche Zahl? Wer findet die meisten?

  • Gegeben sind 6 Schalen nebeneinander, nummeriert von 0 bis 5 und jede Schale enthält eine Zauberbohne. Man kann folgende zwei Operationen vornehmen:
    • Aus einer Schale mit Nummer $x \in \{0,\ldots 4\}$ kann eine Bohne entnommen werden und dafür zwei Bohnen in die Schale mit Nummer $x+1$ gelegt werden (die Zauberbohnen materialisieren halt irgendwie).
    • Aus einer Schale mit Nummer $x \in \{0,\ldots 3\}$ kann eine Bohne entnommen werden. Diese verschwindet, dafür wird der Inhalt der Schalen mit Nummern $x+1$ und $x+2$ vertauscht.
    • Frage: Wie viele Bohnen können maximal in der letzten Schale landen? Achtung: Ich vermute, die Antwort ist zu gross für den Computer. Ich glaube die Antwort ist $2 \uparrow \uparrow \uparrow (2^{16})$. Mehr Infos zu dieser Schreibweise: https://en.wikipedia.org/wiki/Knuth%27s_up-arrow_notation. Und schliesslich noch die Inspiration dazu aus diesem Video (das sich auch als ganzes lohnt): https://youtu.be/elQVZLLiod4?t=2717

Code-Skelett zum Experimentieren

Code-Skelett zum Experimentieren

zauberbohnen.py
from gpanel import *
 
# Wie viele Bohnen es in den Schalen hat:
bins = [1 for i in range(6)]
 
def handle(x,y):
    global bins
    x = int(x)
    if isLeftMouseButton():  # Bohne in die naechste Schale verdoppeln
        # 
        # HIER FEHLT IHR CODE
        # 
        pass
    if isRightMouseButton():  # Bohne entfernen und die beiden nächsten Schalen vertauschen
        # 
        # HIER FEHLT IHR CODE
        # 
        pass
 
 
    draw()  # Situation zeichnen
 
def draw():
    global bins
    clear()
    for i in range(6):
        text(i+0.1, 0.1, str(bins[i]))
 
 
makeGPanel(0,6,0,1,mousePressed=handle)
draw()
  • lehrkraefte/blc/informatik/ffprg1-2020/start.txt
  • Last modified: 2020/05/18 17:56
  • by Ivo Blöchliger