Phần mềm mô hình 3D chủ yếu sử dụng UV Mapping để ánh xạ họa tiết lên vật thể 3D. Các giá trị hợp lệ cho cả U và V thường nằm trong một [0..1]phạm vi bao gồm .
Thử thách
Bạn đã mua một phần mềm mô hình 3D mới cực kỳ dễ sử dụng. Tuy nhiên, có một vấn đề với nó: nó cộng hoặc trừ một số nguyên ngẫu nhiên từ các giá trị UV. Nhiệm vụ của bạn là tạo ra một chương trình hoặc một chức năng sửa đổi giá trị đầu vào để có được giá trị nổi trong [0..1]phạm vi bao gồm .
Phao kết quả phải có cùng một phần phân số như bản gốc và càng gần với bản gốc càng tốt. Vì cả hai 0và 1đều nằm trong phạm vi đầu ra, mọi số nguyên 0 trở xuống sẽ thay đổi thành 0 và mọi số nguyên 1 hoặc lớn hơn sẽ thay đổi thành 1.
Một thuật toán ví dụ trong JavaScript:
function modFloat(input) {
while (input < 0 || input > 1) {
if (input < 0) input += 1;
if (input > 1) input -= 1;
}
return input;
}
Quy tắc
- Đầu vào là một số nguyên hoặc giá trị float. Bất kỳ định dạng hợp lý đều được cho phép miễn là nó được chỉ định trong câu trả lời của bạn.
- Đầu ra phải là biểu diễn thập phân của giá trị float.
- Độ chính xác đầu ra phải có ít nhất cùng một số thập phân như đầu vào.
- Số không được phép.
- Hãy chắc chắn mã của bạn chọn chính xác 0 hoặc 1 cho đầu ra số nguyên.
Các trường hợp thử nghiệm
Input | Output
------------+---------
-4 | 0
-1 | 0
0 | 0
1 | 1
2 | 1
1.0001 | 0.000100
678.123456 | 0.123456
-678.123456 | 0.876544
4.5 | 0.5
Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte sẽ thắng!
any reasonable input format is allowed, vì vậy tôi sẽ nói "Tại sao không?".