const n = 1000, k = 3, start = 0;
n und k - typisch Mathematiker. Diese Bezeichner gehen zwar so aus der Aufgabenstellung hervor, aber zum Verständnis ihrer Funktion sind sie nicht besonders geeignet.
Die Kritik trifft auch auf meine Lösung zu. Tatsächlich hatte ich in meiner Implementierung zunächst sprechende Bezeichner gewählt, bin dann allerdings auf die kurzen Bezeichner umgestiegen aus zwei Gründen: i
und k
sind geläufige Namen für Index-Variablen. Wenn man es allerdings genau nimmt, dann ist weder i
noch k
ein Index, i
ist ein Offset, k
eine Länge oder eine Range, das fand ich aber nicht so gravierend. Der zweite Grund ist, dass die sprechenden Bezeichner deutlich länger sind, und sie in Ausdrücken dadurch mehr in den Vordergrund treten als die Berechnungen. Vgl. (i + k - 1) `mod` (length xs)
und (offset + countTo - 1) `mod` (length prisoners)
. Der zweite Grund ist für mich der entscheidende gewesen. Diese Argumentation kann man auch ins Extrem treiben, das machen zum Beispiel Concatenativen Programmiersprachen, da werden Values überhaupt nicht mehr benannt, sondern nur noch implizit zwischen Funktionen hin und her gereicht.