Nhiệm vụ của bạn là viết một chương trình hoặc hàm xác định xem một số có chia hết cho một số khác hay không. Điều hấp dẫn là nó sẽ đưa ra câu trả lời càng sớm càng tốt , ngay cả khi không phải tất cả các chữ số của số đã được đưa ra.
Chương trình của bạn sẽ lấy một số nguyên D 2 và sau đó là một chuỗi các chữ số làm đầu vào. Chúng đại diện cho các chữ số của một số nguyên N 1 khác, bắt đầu từ chữ số có nghĩa nhỏ nhất. Tại thời điểm đầu tiên mà N hoặc phải hay không được divisble bởi D , chương trình của bạn nên đầu ra câu trả lời thích hợp và thoát. Nếu sự kết thúc của đầu vào được đạt tới, nó nên đầu ra cho dù toàn bộ N chia hết cho D .
Dưới đây là danh sách các định dạng đầu vào có thể chấp nhận cho N (để lại nhận xét nếu bạn nghĩ rằng cái gì đó không được bao gồm nên được cho phép):
Đầu vào tiêu chuẩn : chữ số được đưa ra trên các dòng riêng biệt; cuối của đầu vào là EOF hoặc một giá trị đặc biệt; thoát có nghĩa là hàm trả về hoặc chương trình thoát.
Đầu vào tương tự : thông qua các tổ hợp phím hoặc mười nút đại diện cho mỗi chữ số; cuối của đầu vào là một giá trị đặc biệt; thoát có nghĩa là hàm trả về hoặc chương trình thoát.
Hàm với trạng thái toàn cục : được gọi lặp lại với các chữ số liên tiếp; cuối của đầu vào là một giá trị đặc biệt; thoát có nghĩa là hàm trả về giá trị khác null. Lưu ý rằng nếu bạn sử dụng trạng thái toàn cục, nó phải bị xóa sau khi giá trị được trả về hoặc đặt lại để chức năng hoạt động nhiều lần .
Hàm Curried : trả về một hàm khác sẽ được gọi với chữ số tiếp theo hoặc một giá trị; cuối của đầu vào là một giá trị đặc biệt hoặc gọi hàm không có đối số; thoát có nghĩa là hàm trả về một câu trả lời thay vì một hàm khác.
GUI nhắc hoặc tương tự : hiển thị nhiều lần; kết thúc đầu vào là "hủy" hoặc tương đương, hoặc một giá trị đặc biệt; thoát có nghĩa là nhắc nhở dừng xuất hiện.
Hàm lặp : đầu vào là một đối tượng hoặc hàm trạng thái trả về chữ số tiếp theo khi được gọi, kết thúc đầu vào là một ngoại lệ hoặc giá trị đặc biệt; thoát có nghĩa là iterator dừng được gọi.
Đầu vào cho D và đầu ra có thể thông qua bất kỳ phương pháp tiêu chuẩn chấp nhận được .
Các trường hợp thử nghiệm:
2; 6 => true
5; 6 => false
20; 0 3 => false
20; 0 4 => true
100; 1 => false
100; 0 0 => true
100; 0 2 => false
4; 2 4 => false
4; 2 5 => true
4; 2 [eof] => false
4; 4 [eof] => true
625; 5 5 => false
625; 5 7 2 => false
625; 5 7 3 6 => false
625; 5 7 3 4 => true
7; 9 3 4 [eof] => false
7; 9 3 4 5 [eof] => true
140; 0 3 => false
140; 0 4 5 [eof] => false
140; 0 4 5 1 [eof] => true
14; 4 5 1 4 [eof] => false
14; 4 5 1 4 1 [eof] => true
digits
đầu vào có giá trị đặc biệt cho EOF?
[]
và [2]
trở lại bất cứ điều gì khác ngoài false
hoặc true
(bao gồm các chức năng riêng của mình vv ...) trong khi [2,3]
, [2,3,1]
và [2,3,1,EOF]
trở lại true
. Nó tấn công tôi gần với tùy chọn nhà nước toàn cầu.