Apa pernyataan C # terpendek yang akan mengonversi representasi string dari angka menjadi angka int[]
yang berisi setiap digit?
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();
Adakah yang bisa mengalahkan pendekatan terakhir saya?
Jawaban:
28 byte
Anda dapat membuat pendekatan terakhir Anda sedikit lebih pendek dengan mengganti
'0'
dengan48
. Anda juga dapat menghapus semua spasi yang tidak perlu dan menggunakan nama variabel 1-char (misalnya,number
->n
):sumber
&15
untuk jumlah karakter yang sama.C # tanpa LINQ,
978682 byteSaya telah menggantung di bayang-bayang untuk sementara waktu dan ingin mencoba ini. Saya bukan pegolf, atau bahkan yang berpengalaman dengan C #, tetapi saya ingin melihat seberapa kecil saya bisa mendapatkannya sendiri, tanpa menggunakan LINQ. Tidak ada yang istimewa, tapi setidaknya aku bersenang-senang.
Saya tidak berencana memposting ini pada awalnya, karena ini jauh lebih lama daripada solusi LINQ yang baik dan tidak benar-benar cocok di sini, tapi saya agak penasaran jika ada cara yang lebih singkat untuk melakukannya tanpa LINQ.
Sunting 1 : Alih-alih int.Parse sekarang mengurangi 48 dari kode ASCII char. Yah, itu sudah jauh lebih baik. 2 : Sekarang dengan var bukan string dan int [].
sumber
var
alih-alihstring
danint[]
juga menyimpan 4.76 byte
sumber