Das lernst du heute
- lbns über viele Schalen
- Mittel und Minimum
- Schwächste Schale finden
Ein großes Gewächshaus hat zwölf Schalen. Eine davon kränkelt, und bis du sie findest, ist sie hin. Der Chip soll dir zwei Dinge sagen: wie es dem Gewächshaus im Mittel geht und welche Schale die schwächste ist.
Viele Schalen mit einem Namen
Gibst du allen Schalen denselben Namen, liest lbns sie mit einem Befehl:
lbns summe SCHALE HASH("Beet") 0 Health Sum
lbns zahl SCHALE HASH("Beet") 0 Occupied Sum
lbns minh SCHALE HASH("Beet") 0 Health Minimum # Vorsicht: −1
Das ist schnell, hat aber zwei Haken:
- Leere Schalen zählen mit. Eine leere Schale liefert
Health−1.Minimummeldet dann −1, obwohl alle Pflanzen gesund sind, undAveragewird nach unten gezogen. - Kein Name im Ergebnis.
Minimumsagt dir den kleinsten Wert, aber nicht, welche Schale ihn hat.
Leere Schalen herausrechnen
Für den Mittelwert gibt es einen Rechentrick. Jede leere Schale steuert −1 zur Summe bei. Kennst du die Zahl der Schalen, kannst du das zurückrechnen:
- bepflanzt = Summe von
Occupied - leer = Schalen − bepflanzt
- Mittel = (Summe von
Health+ leer) / bepflanzt
Das klappt, solange ANZAHL stimmt. Baust du eine Schale dazu, musst du das define anpassen.
Die schwächste Schale finden
Um zu wissen, welche Schale schwach ist, braucht jede einen eigenen Namen: „Beet1“ bis „Beet4“. Die Hashes der Namen legst du einmal beim Start in den Stack. Eine Schleife holt sie mit get … db und liest jede Schale einzeln:
poke 0 HASH("Beet1")
poke 1 HASH("Beet2")
start:
yield
move idx 0
schleife:
get name db idx
lbns wert SCHALE name 0 Health Average
bnan wert weiter
bltz wert weiter
Leere Schalen (−1) und fehlende (NaN) überspringt die Schleife mit bltz und bnan. Für den Rest merkt sie sich den kleinsten Wert und dessen Nummer.
poke vor start: läuft nur einmal beim Start. Der Stack ist Arbeitsspeicher: Überschreibst du Adresse 0 bis 3 später mit push, sind die Namen weg. Halte sp aus diesem Bereich heraus oder lege die Tabelle weiter oben ab.
Vier Schalen sind vier Durchläufe mit je etwa zehn Befehlen. Bei zwölf Schalen sind es 120 – das passt gerade noch in einen Takt.
Schaubild
Übung
Aufgabe
Vier Hydrokultur-Geräte heißen „Beet1“ bis „Beet4“. Die Namen liegen schon im Stack. Schreibe die Schleife:
- Anzeige „Schwach“: Nummer (1–4) der bepflanzten Schale mit dem kleinsten
Health, 0 wenn keine bepflanzt ist - Anzeige „Mittel“: mittleres
Healthder bepflanzten Schalen in ganzen Prozent, −1 wenn keine bepflanzt ist - leere Schalen (−1) und fehlende Schalen (NaN) zählen nicht mit
Hinweise
Hinweis 1
get name db idx holt den Namen, lbns wert SCHALE name 0 Health Average liest die Schale.
Hinweis 2
bnan wert weiter und bltz wert weiter überspringen fehlende und leere Schalen.
Hinweis 3
Starte minh mit 2 – größer als jedes echte Health. Die Nummer ist idx + 1.
Quiz
4 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.
Tag abschließen
- Übung im Simulator bestanden
- Quiz mit mindestens 60 % bestanden
Ohne Konto wird der Fortschritt nur in diesem Browser gespeichert.
Fehler in dieser Lektion melden
Zum Melden bitte anmelden. Anmelden