Giới thiệu
Thử thách hôm nay là tất cả về răng. Cụ thể, mất bao lâu để chải từ răng này sang răng khác. Thử thách của bạn là, đưa ra vị trí của hai chiếc răng, đưa ra khoảng thời gian ngắn nhất có thể để chải từ lần đầu tiên đến lần thứ hai.
Thử thách
Đối với thử thách này, chúng tôi sẽ sử dụng cách bố trí miệng người trưởng thành trung bình:
Sơ đồ này cho thấy hệ thống đánh số ISO được sử dụng rộng rãi . Hệ thống chia miệng thành bốn phần và gán cho chúng một số: phía trên bên phải (1), phía trên bên trái (2), phía dưới bên trái (3) và phía dưới bên phải (4). Sau đó, họ đánh số răng của từng phần từ giữa miệng ra từ 1-8. Do đó, răng thứ tư từ trung tâm ở phía trên bên phải (phần 1) là răng số 14.
Giả sử đánh răng một lần mất 1 đơn vị thời gian. Di chuyển từ một răng sang một bên kế tiếp mất 0 đơn vị thời gian. Bạn cũng có thể chuyển từ răng sang răng trực tiếp bên trên hoặc bên dưới nó, cũng mất 1 đơn vị thời gian. Vậy bạn mất bao lâu để chải từ răng 14 đến răng 31? Bằng cách nhìn vào sơ đồ trên, bạn sẽ thấy nó mất 7 đơn vị thời gian. Đây là cách tính toán:
Action : Unit of time
Brushing tooth 14 : 1 unit
Brushing tooth 13 : 1 unit
Brushing tooth 12 : 1 unit
Brushing tooth 11 : 1 unit
Brushing tooth 21 : 1 unit
Cross to bottom of mouth : 1 unit
Brushing tooth 31 : 1 unit
------------------------------
Total: 7 units
Lưu ý rằng đây không phải là tuyến đường duy nhất chúng tôi có thể đi, nhưng không có tuyến đường nào ngắn hơn.
Vì vậy, thách thức của bạn là:
- Bạn sẽ viết một chương trình hoặc hàm đầy đủ chấp nhận hai đối số là số răng và đầu ra (hoặc trả về) thời gian ngắn nhất để chải từ cái này sang cái kia.
- Bạn thực hiện lấy đầu vào dưới dạng số hoặc chuỗi và xuất bao giờ bạn muốn ( trong các phương thức có thể chấp nhận ).
- Các sơ hở tiêu chuẩn bị cấm theo mặc định.
- Câu hỏi này là golf-code , vì vậy, chiến thắng của người chơi ngắn nhất.
Dưới đây là một số thử nghiệm ( Cảm ơn Jonathan Allan ):
14, 21 => 5 14, 44 => 3 14, 14 => 1 33, 37 => 5
Chúc may mắn!
