¿Cuál es la declaración C # más corta que convertirá una representación de cadena de un número en una int[]
que contenga cada dígito?
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();
¿Alguien puede vencer mi último enfoque?
Respuestas:
28 bytes
Puede hacer que su último enfoque sea un poco más corto reemplazando el
'0'
by48
. También puede quitar todos los espacios innecesarios y usar nombres de variables 1-char (por ejemplo,number
->n
):fuente
&15
el mismo recuento de caracteres.C # sin LINQ,
978682 bytesHe estado colgando en las sombras por un tiempo y quería probar esto. No soy un jugador de golf, ni siquiera ese experimentado con C #, pero quería ver qué tan pequeño podría obtenerlo por mi cuenta, sin usar LINQ. No es nada especial, pero al menos me divertí.
Al principio no estaba planeando publicar esto, ya que es mucho más largo que cualquier buena solución LINQ y realmente no pertenece aquí, pero tengo curiosidad si hay una forma más corta de hacerlo sin LINQ.
Edición 1 : en lugar de int.Parse, ahora resta 48 del código ASCII del personaje. Bueno, eso ya está mucho mejor. 2 : Ahora con var en lugar de string e int [].
fuente
var
lugar destring
yint[]
también ahorra 4.76 bytes
fuente