Chuyển đổi một chuỗi đại diện của một số thành int [] trong C #


8

Câu lệnh C # ngắn nhất sẽ chuyển đổi một chuỗi đại diện của một số thành một số int[]có chứa mỗi chữ số là gì?

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();

Bất cứ ai có thể đánh bại cách tiếp cận cuối cùng của tôi?


Bạn có thể không muốn chỉ định ngôn ngữ, vì đây là CodeGolf.
giai đoạn

1
@phase bạn phải đùa tôi. ngôn ngữ là trong tiêu đề và thẻ.
JJS

2
Nhận xét của @ phase đề cập đến thực tế rằng 99% "câu hỏi" trên trang web này thực sự là các cuộc thi lập trình. Tuy nhiên, cộng đồng đã quyết định rằng các câu hỏi "mẹo" dành riêng cho ngôn ngữ như câu hỏi này cũng thuộc chủ đề.
Dennis

@Dennis thx cho lời khuyên. bài đăng đầu tiên trên trang web này, thông thường sẽ đăng trên stackoverflow, nhưng cộng đồng đó xem xét chủ đề tắt golf
JJS

@Dennis Tôi chỉ muốn tìm kiếm meta cho điều đó! Tôi nghĩ rằng đây sẽ là một câu hỏi golf hay, nếu nó chưa được hỏi.
giai đoạn

Câu trả lời:


10

28 byte

Bạn có thể làm cho cách tiếp cận cuối cùng của bạn ngắn hơn một chút bằng cách thay thế '0'bằng 48. Bạn cũng có thể loại bỏ tất cả các khoảng trắng không cần thiết và sử dụng tên biến 1-char (ví dụ: number-> n):

n.Select(i=>i-48).ToArray();

Tuyệt vời - thực sự hiểu rõ rằng một Char xử lý các toán tử arithmatic như một stackoverflow.com.com/1516639/26877
JJS

Phép trừ cũng có thể được thay thế bằng &15số lượng ký tự tương tự.
Peter Taylor

3

C # không có LINQ, 97 86 82 byte

var n=Console.ReadLine();int i=n.Length;var o=new int[i];while(i>0)o[--i]=n[i]-48;

Tôi đã ở trong bóng tối một lúc và muốn thử nó. Tôi không phải là người chơi golf, hoặc thậm chí đã có kinh nghiệm với C #, nhưng tôi muốn xem tôi có thể tự mình lấy nó nhỏ như thế nào mà không cần sử dụng LINQ. Không có gì đặc biệt, nhưng ít nhất tôi đã có niềm vui của mình.

Lúc đầu tôi không định đăng bài này, vì nó dài hơn bất kỳ giải pháp LINQ tốt nào và không thực sự thuộc về nơi này, nhưng tôi hơi tò mò liệu có cách nào ngắn hơn để làm điều đó mà không có LINQ.

Chỉnh sửa 1 : Thay vì int.Pude bây giờ nó tạo ra 48 từ mã ASCII của char. Vâng, điều đó đã tốt hơn nhiều. 2 : Bây giờ với var thay vì chuỗi và int [].


Sử dụng varthay vì stringint[]cũng tiết kiệm 4.
Peter Taylor

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.