Was ist die kürzeste C # -Anweisung, die eine Zeichenfolgendarstellung einer Zahl in eine konvertiert int[]
, die jede Ziffer enthält?
string number = "1234";
number.Array.ConvertAll(line.ToCharArray(), c => Int32.Parse(c.ToString()));
number.ToCharArray().Select(i => Convert.ToInt32(i.ToString())).ToArray();
number.Select(i => Int32.Parse(i.ToString())).ToArray();
number.Select(i => i - '0').ToArray();
Kann jemand meinen letzten Ansatz schlagen?
Antworten:
28 Bytes
Sie können Ihre letzte Ansatz ein bisschen kürzer durch das Ersetzen der machen
'0'
durch48
. Sie können auch alle unnötigen Leerzeichen entfernen und 1-stellige Variablennamen verwenden (z. B.number
->n
):quelle
&15
bei gleicher Zeichenanzahl ersetzt werden.C # ohne LINQ,
978682 BytesIch habe eine Weile im Schatten gehangen und wollte das ausprobieren. Ich bin kein Golfer oder sogar so erfahren mit C #, aber ich wollte sehen, wie klein ich es alleine bekommen kann, ohne LINQ zu verwenden. Es ist nichts Besonderes, aber zumindest hatte ich meinen Spaß.
Ich hatte zunächst nicht vor, dies zu veröffentlichen, da es viel länger ist als jede gute LINQ-Lösung und nicht wirklich hierher gehört, aber ich bin ein bisschen neugierig, ob es einen kürzeren Weg gibt, dies ohne LINQ zu tun.
Edit 1 : Anstelle von int.Parse wird jetzt 48 vom ASCII-Code des Zeichens abgezogen. Nun, das ist schon viel besser. 2 : Jetzt mit var anstelle von string und int [].
quelle
var
anstelle vonstring
undint[]
spart auch 4.76 Bytes
quelle