Das lernst du heute
- Kürzeste Lösungen
- Tricks und ihre Kosten
- Wann es zu weit geht
Code-Golf ist ein Spiel unter Programmierern: Wer löst die Aufgabe mit den wenigsten Zeilen oder Zeichen? Für IC10 ist das mehr als ein Spaß, denn 128 Zeilen und 4096 Zeichen sind echte Grenzen. Wer die Tricks kennt, bekommt ein großes Script noch auf einen Chip.
Die wichtigsten Tricks
| Trick | spart | kostet |
|---|---|---|
select statt bedingtem Sprung | Label und Sprungzeilen | nichts, oft sogar lesbarer |
Vergleich als Zahl: sgt gibt 0 oder 1 | ganze Verzweigungen | etwas Nachdenken beim Lesen |
clamp statt max und min | eine Zeile | nichts |
| Register mehrfach nutzen | Register | Verwechslungsgefahr |
| rohe Zahl statt define | eine Zeile | Wartbarkeit |
| Kommentar weglassen | Zeichen | Verständnis in drei Monaten |
Ein Vergleich, der als Zahl weiterrechnet, ersetzt eine ganze Verzweigung:
sgt tmp temp GRENZE
mul leistung tmp 100 # 0 oder 100, ohne Sprung
Und oft gibt es den Befehl schon, den man umständlich nachbaut:
max r1 r0 280
min r1 r1 300 # zwei Zeilen statt clamp: gleiches Ergebnis
clamp r1 r0 280 300
Wann es zu weit geht
Die ersten drei Tricks machen Code kürzer und besser. Die letzten drei machen ihn nur kürzer. Ein Script, das 40 Zeilen hat und trotzdem ohne defines und Kommentare auskommt, ist kein Kunststück, sondern eine Falle für den nächsten, der es ändern muss – meistens du selbst.
Die Werkstatt golft deshalb erst, wenn eine Grenze wirklich drückt, und dann in dieser Reihenfolge: Sprünge durch select ersetzen, Wiederholungen in Schleifen oder Unterprogramme packen, Kommentare kürzen. NaN-Schutz und defines bleiben.
Ein gestrichener NaN-Schutz spart eine Zeile und kostet im Ernstfall die Basis. Kürze nie an der Sicherheit.
Schaubild
Übung
Aufgabe
In r0 steht eine Temperatur in Kelvin (setzt der Test). Rechne ohne einen einzigen Sprung:
r1= 1 unter 18 °C, sonst 0r2= Abstand zu 20 °C als Betragr3= r0 begrenzt auf 280 bis 300 Kr4=Color.Greenvon 290 bis 296 K einschließlich, sonstColor.Red
Die defines stehen schon da. Schaffst du es in acht Zeilen unter dem alias-Block?
Hinweise
Hinweis 1
r1 ist ein einziger Vergleich: slt.
Hinweis 2
r2: sub, dann abs. r3: clamp.
Hinweis 3
r4: sge und sle mit and verknüpfen, dann select zwischen GRUEN und ROT.
Quiz
3 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