Qual é a instrução C # mais curta que converterá uma representação de seqüência de caracteres de um número em uma int[]
que contenha 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();
Alguém pode vencer a minha última abordagem?
Respostas:
28 bytes
Você pode tornar sua última abordagem um pouco mais curta substituindo a opção
'0'
by48
. Você também pode remover todos os espaços desnecessários e usar nomes de variáveis com 1 caractere (por exemplo,number
->n
):fonte
&15
mesma contagem de caracteres.C # sem LINQ,
978682 bytesEstou nas sombras há um tempo e queria experimentar isso. Não sou jogador de golfe ou tenho experiência com C #, mas queria ver o quão pequeno eu poderia conseguir sozinho, sem usar o LINQ. Não é nada de especial, mas pelo menos eu me diverti.
Eu não estava planejando postar isso no começo, já que é muito mais longo do que qualquer boa solução LINQ e realmente não pertence aqui, mas estou meio curioso se há uma maneira mais curta de fazer isso sem o LINQ.
Edit 1 : Em vez de int.Parse agora substratos 48 do código ASCII do char. Bem, isso já é muito melhor. 2 : Agora com var em vez de string e int [].
fonte
var
vez destring
eint[]
também salva 4. #76 bytes
fonte