Các số đơn nguyên thường chỉ đại diện cho các số nguyên không âm, nhưng chúng ta có thể mở rộng chúng để biểu diễn tất cả các số nguyên như sau:
- Một số nguyên dương N được biểu diễn dưới dạng N
1
's:5 -> 11111
- Một số nguyên âm -N được biểu diễn
0
theo sau bởi N1
's:-5 -> 011111
- Không được đại diện là
0
Sau đó, chúng ta có thể trình bày một danh sách các số này một cách rõ ràng nếu chúng ta sử dụng 0
làm dấu phân cách:
3,-2,0,1
111,011,0,1
111 0 011 0 0 0 1
11100110001
Nhiệm vụ của bạn: lấy một chuỗi biểu thị một danh sách các số đơn nguyên đã ký và dịch nó thành một danh sách các số thập phân.
Chi tiết
Bạn có thể giả định rằng đầu vào là một danh sách đầy đủ các số đơn nguyên đã ký. Cụ thể, chương trình của bạn sẽ không phải xử lý 1) đầu vào trống hoặc 2) đầu vào kết thúc bằng dấu phân cách.
Bạn có thể giả sử rằng độ lớn của mỗi số sẽ không vượt quá 127. Đối với các ngôn ngữ có kích thước chuỗi hoặc danh sách tối đa, bạn có thể cho rằng đầu vào và đầu ra sẽ phù hợp với cấu trúc dữ liệu của ngôn ngữ của bạn, nhưng về mặt lý thuyết thuật toán của bạn sẽ hoạt động theo danh sách bất cứ kích thước nào.
Chương trình hoặc chức năng của bạn có thể thực hiện I / O theo bất kỳ cách tiêu chuẩn nào . Đầu vào có thể là một chuỗi hoặc một danh sách các ký tự, chuỗi ký tự đơn, số nguyên hoặc booleans. Bạn có thể sử dụng bất kỳ hai ký tự để đại diện 1
và 0
; nếu bạn không sử dụng 1
và 0
, vui lòng chỉ định những ký tự bạn đang sử dụng.
Đầu ra phải là số thập phân ở bất kỳ định dạng danh sách hợp lý nào (đặc biệt, phải có một loại dấu tách giữa các số). Số âm nên được biểu thị bằng dấu trừ, mặc dù nếu ngôn ngữ của bạn có định dạng khác cho số nguyên âm, tôi cũng sẽ chấp nhận điều đó. Không có thể được biểu diễn trong đầu ra là 0
hoặc -0
.
Các trường hợp thử nghiệm
1 -> 1
0 -> 0 (or -0, and similarly for the other test cases)
011 -> -2
1101 -> 2,1
1100 -> 2,0
11001 -> 2,-1
110001 -> 2,0,1
11100110001 -> 3,-2,0,1
00000001 -> 0,0,0,-1
01111011111111001111111111111110111111111111111100111111111111111111111110111111111111111111111111111111111111111111 -> -4,8,-15,16,-23,42
01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 -> -127
0
) và tiền tố dấu âm ( 0
) giống nhau, mặc dù vẫn không rõ ràng, vì bạn không thể có dấu âm ở giữa một số (là 182--693-1
số? Không, và không phải là 1111011000101111
cho cùng một lý do chính xác).
'0's
, nó không đơn nhất về mặt kỹ thuật. Thử thách tốt mặc dù!