Vì vậy, tôi đang cố gắng làm điều gì đó tương tự như một người làm trang (danh sách số trang), nơi số hiện tại ở giữa hoặc gần nhất có thể làLấy số xung quanh một số
Mọi cách tôi giải quyết Thật khó và lạ, chỉ tự hỏi nếu có một cách mathy tốt đẹp để làm điều đó :)
đưa ra:
a
: hiện số trangx
: số trang đầu tiêny
: trang cuối cùng sốn
: số lượng yêu cầu
Tôi muốn tạo ra một danh sách các số nơi a
là càng gần trung tâm như có thể, trong khi lưu trú trong vòng x
và y
do đó f(5, 1, 10, 5)
sẽ trả lại [3, 4, 5, 6, 7]
nhưng f(1, 1, 10, 5)
sẽ trả về [1, 2, 3, 4, 5]
và f(9, 1, 10, 5)
sẽ trả về [6, 7, 8, 9, 10]
Có ai có thể nghĩ ra một cách tốt đẹp để nhận được loại điều đó không?
Thực hiện theo cách có thể phức tạp trong ruby, có thể thực hiện đơn giản hơn không?
def numbers_around(current:, total:, required: 5)
required_before = (required - 1)/2
required_after = (required - 1)/2
before_x = current - required_before
after_x = current + required_after
if before_x < 1
after_x += before_x.abs + 1
before_x = 1
end
if after_x > total
before_x -= (after_x - total)
after_x = total
end
(before_x..after_x)
end
trong đó ngôn ngữ? – Nidhoegger
Bất kỳ ngôn ngữ nào, tôi rất dễ dàng –
Bạn muốn điều gì xảy ra nếu (y-x)