Truly Beautiful Code [updated]
In einer Sitzung heute kamen wir auf das Thema Beautiful Code zu sprechen, und natürlich auch auf das gleichnamige Buch. Bei InfoQ-Kollege Stefan Tilkov habe ich gerade ein wirklich schönes Stück Ruby-Code gesehen:
fib = Hash.new{ |h, n| n < 2 ? h[n] = n : h[n] = h[n - 1] + h[n - 2] }
puts fib[15]
Nicht wahr?
Update, 23. Mai
Ok, ich hätte vielleicht etwas mehr erklären sollen was da genau abgeht. Dazu kann man das ganze etwas schöner schreiben:
fib = Hash.new{ |h, n| h[n] = h[n - 1] + h[n - 2] }
fib[0] = 0
fib[1] = 1
puts fib[15]
Hash.new nimmt einen Block entgegen, welcher jeweils aufgerufen wird, wenn ein Element nicht im Hash vorhanden ist. Wenn also fib[15] evaluiert wird, kommt unser Block zum Zug, welcher dann das aktuelle Element bestimmt, wobei das ganze wieder von vorne beginnt, und zum Schluss im Hash ablegt. Schön daran ist, dass jede Zahl nur einmal berechnet wird, Memoization kriegt man also fast umsonst.
Leave a comment
You must be connected to write a comment.

