Lấy cảm hứng từ http://xkcd.com/710/ đây là một sân gôn mã dành cho nó.
Các thách thức
Cho một số nguyên dương lớn hơn 0, hãy in ra dãy hailstone cho số đó.
Trình tự Hailstone
Xem Wikipedia để biết thêm chi tiết ..
- Nếu là số chẵn, hãy chia nó cho hai.
- Nếu số lẻ, hãy nhân ba số đó và thêm một số.
Lặp lại điều này với số được tạo cho đến khi nó đạt đến 1. (nếu nó tiếp tục sau 1, nó sẽ đi theo vòng lặp vô hạn của 1 -> 4 -> 2 -> 1...
)
Đôi khi mã là cách tốt nhất để giải thích, vì vậy đây là một số từ Wikipedia
function collatz(n)
show n
if n > 1
if n is odd
call collatz(3n + 1)
else
call collatz(n / 2)
Mã này hoạt động, nhưng tôi đang thêm vào một thách thức bổ sung. Chương trình không được dễ bị tràn ngăn xếp . Vì vậy, nó phải sử dụng phép lặp hoặc đệ quy đuôi.
Ngoài ra, điểm thưởng nếu nó có thể tính toán các số lớn và ngôn ngữ chưa có nó. (hoặc nếu bạn thực hiện lại hỗ trợ số lớn bằng cách sử dụng các số nguyên có độ dài cố định)
Trường hợp thử nghiệm
Number: 21
Results: 21 -> 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1
Number: 3
Results: 3 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1
Ngoài ra, mã gôn phải bao gồm đầu vào và đầu ra đầy đủ của người dùng.