Định nghĩa
Có vô số các số tự nhiên được nối (số nguyên dương, bắt đầu bằng 1):
1234567891011121314151617181920212223...
Thử thách
- Viết chương trình bằng bất kỳ ngôn ngữ nào, chấp nhận số vị trí làm đầu vào và xuất chữ số từ vị trí đó trong hàng được xác định ở trên.
- Số vị trí là số nguyên dương kích thước tùy ý. Đó là vị trí đầu tiên là 1, mang lại chữ số đầu ra '1'
- Đầu vào là số thập phân (ví dụ: 13498573249827349823740000191) hoặc ký hiệu điện tử (ví dụ: 1.2e789) tương ứng với số nguyên dương.
- Chương trình phải kết thúc trong thời gian hợp lý (10 giây trên PC / Mac hiện đại), với chỉ số rất lớn làm đầu vào (ví dụ: 1e123456 - tức là 1 với 123456 số 0). Vì thế, vòng lặp đơn giản không được chấp nhận.
- Chương trình phải chấm dứt với một lỗi trong 1 giây, nếu có bất kỳ đầu vào không hợp lệ. Ví dụ. 1.23e (không hợp lệ) hoặc 1.23e1 (bằng 12.3 - không phải là số nguyên)
- Bạn có thể sử dụng thư viện BigNum công cộng để phân tích / lưu trữ số và thực hiện các phép toán đơn giản trên chúng (+ - * / exp). Không áp dụng hình phạt byte.
- Mã ngắn nhất sẽ thắng.
TL; DR
- Đầu vào: số nguyên bignum
- Đầu ra: chữ số tại vị trí đó trong hàng vô hạn
123456789101112131415...
Một số trường hợp kiểm tra chấp nhận
trong ký hiệu "Đầu vào: Đầu ra". Tất cả nên vượt qua.
- 1: 1
- 999: 9
- 10000000: 7
- 1e7: 7 (giống như hàng trên)
- 13498573249827349823740000191: 6
- 1.1e10001: 5
- 1e23456: 5
- 1.23456e123456: 4
- 1e1000000: 0
- 1.23e: lỗi (cú pháp không hợp lệ)
- 0: lỗi (ngoài giới hạn)
- 1.23e1: lỗi (không phải là số nguyên)
Tiền thưởng!
Số vị trí chữ số đầu ra bên trong số, và số đầu ra chính nó. Ví dụ:
13498573249827349823740000191: 6 24 504062383738461516105596714
- Đó là chữ số '6' ở vị trí 24 của số '50406238373846151610559 6 714'
1e1000000: 0 61111 1000006111141666819445...933335777790000
- Chữ số '0' ở vị trí 61111 trong số 999995 chữ số dài Tôi sẽ không bao gồm ở đây.
Nếu bạn hoàn thành nhiệm vụ tiền thưởng, hãy nhân kích thước mã của bạn với 0,75
tín dụng
Nhiệm vụ này đã được đưa ra tại một trong những cuộc tụ tập của dev club.eu vào năm 2012, mà không yêu cầu số lượng lớn. Do đó, hầu hết các câu trả lời được gửi là các vòng lặp nhỏ.
Chúc vui vẻ!
1.23456e123456
tự ý trừng phạt các ngôn ngữ không thể xử lý các giá trị đó một cách tự nhiên và yêu cầu chúng thực hiện xử lý chuỗi tiếp tuyến với thách thức.