stationeers.de Mod-Werkstatt · Dominik1199
EN Anmelden
  1. Start
  2. IC10-Akademie
  3. Tag 327

Tag 327 von 365 · Experte · Monat 11: Optimierung und Fehlersuche

Code-Golf

Code-Golf: die kürzeste Lösung finden, Tricks wie Vergleiche als Zahlen und select statt Sprung kennen – und wissen, wann Kürze den Code kaputtmacht.

Lektion 16 Min. Woche 47

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

Trickspartkostet
select statt bedingtem SprungLabel und Sprungzeilennichts, oft sogar lesbarer
Vergleich als Zahl: sgt gibt 0 oder 1ganze Verzweigungenetwas Nachdenken beim Lesen
clamp statt max und mineine Zeilenichts
Register mehrfach nutzenRegisterVerwechslungsgefahr
rohe Zahl statt defineeine ZeileWartbarkeit
Kommentar weglassenZeichenVerstä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.

Achtung

Ein gestrichener NaN-Schutz spart eine Zeile und kostet im Ernstfall die Basis. Kürze nie an der Sicherheit.

Schaubild

Vergleich und select als Weiche temp = 313 sgt r1 temp 303 r1 = 1 select Color.Red Color.Green 4 wenn r1 ≠ 0 wenn r1 = 0
Ein Vergleich wird zu 0 oder 1, select macht daraus eine Weiche. Zusammen ersetzen sie fast jeden kurzen Sprung.

Übung

Aufgabe

In r0 steht eine Temperatur in Kelvin (setzt der Test). Rechne ohne einen einzigen Sprung:

  • r1 = 1 unter 18 °C, sonst 0
  • r2 = Abstand zu 20 °C als Betrag
  • r3 = r0 begrenzt auf 280 bis 300 K
  • r4 = Color.Green von 290 bis 296 K einschließlich, sonst Color.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

Esc
↑ ↓ wählenEnter öffnen/ öffnet die Suche überall