Враховуючи дорогу ascii-art та час, який знадобився мені, щоб перетнути її, скажіть, чи я їхав швидкістю.
Одиниці
Відстань знаходиться в довільній одиниці d
. Час знаходиться в довільній одиниці t
.
Дорога
Ось проста дорога:
10=====
Ці 10
кошти 10 d
в t
. Це обмеження швидкості для дороги. Дорога має 5 =
с, тому її d
5. Тому, якщо я перетну цю дорогу через 0,5 t
, я пішов 10 d
за t
, бо 5 / 0,5 = 10. Обмеження швидкості цієї дороги 10, тому я залишився в межах швидкості.
Але якщо я перетну цю дорогу в 0,25 t
, я пішов 20 d
за t
, тому що 5 / 0,25 = 20. Обмеження швидкості цієї дороги 10, тому я подолав 10 за обмеження швидкості.
Приклади та розрахунки
Зауважте, що вхід 1 - це час, який я взяв для подорожі дорогою, а вхід 2 - сама дорога.
Ось така складна дорога:
Input 1: 1.5
Input 2: 5=====10=====
Найшвидший, який я міг (юридично) проїхати на першій дорозі (перші 5 =
с), - це 5 d
осіб t
. Оскільки 5 (відстань), розділене на 5 (обмеження швидкості), дорівнює 1, найшвидший, який я міг піти на цій дорозі, - 1 t
.
На наступній дорозі обмеження швидкості становить 10, а відстань також 5, найшвидший, який я міг перейти, що становить 0,5 (5/10). Якщо підсумовувати мінімальний раз, це результат у 1,5, тобто я перейшов точно з обмеження швидкості.
Примітка: Я знаю, я, можливо, їхав по одній дорозі дуже швидко і по-справжньому повільно на іншій і все ще переходив у 1,5, але припустимо, що тут найкраще.
Остаточний приклад:
Input 1: 3.2
Input 2: 3.0==========20===
Перша дорога тривала 10 і обмеження швидкості становить 3, тому мінімальний час становить 3 333 333 ... (10/3).
Друга дорога тривала і має обмеження швидкості 20, тому мінімальний час становить 0,15 (3 / 20.)
Підсумовуючи результати в 3,483333333 ... я перетнув його в 3,2, тому мені довелося кудись швидше.
Примітки:
- Ви повинні вивести одне чітке значення, якщо я, безперечно, швидкість, і інше інше значення, якщо я не можу бути.
- Ваша програма або функція може вимагати введення або виводу, щоб мати зворотний новий рядок, але, будь ласка, скажіть це у поданні
- Вашим першим входом буде моя швидкість. Це буде позитивний поплавок або ціле число або рядок.
- Вашим другим входом стане дорога. Він завжди буде відповідати регулярному вираженню
^(([1-9]+[0-9]*|[0-9]+\.[0-9]+)=+)+\n?$
. Тут ви можете перевірити потенційні вклади, якщо вам це цікаво. - Ви можете взяти вхід у двох параметрах функції або програми, у двох окремих файлах, STDIN двічі, або з розділеного пробілом рядка, переданого STDIN, функції, файлу або параметра командного рядка.
- Якщо ви хочете, ви можете змінити порядок введення даних.
- Які-небудь питання? Запитуйте нижче в коментарях та щасливий код-гольф !
^(([1-9]+[0-9]*|(?!0\.0+\b)[0-9]+\.[0-9]+)=+)+\n?$
. (Це було б чистіше з видом на відстань, але тоді йому знадобиться двигун. Net)