Вступ
Нещодавно я перекинувся з купою друзів, і нам стало нудно і нічого робити, тому ми "придумали" "гру" (деякі люди в коментарях зазначали, що ця гра в Інтернеті і дуже популярна, тому ми визначаємо не вигадував цього, хоча я його раніше не бачив). Причиною я ставлю слово "гра" в лапки, тому що це не фактична комп'ютерна гра, але вона грається у Вікіпедії.
Це дуже просто грати: хтось обирає якусь статтю у Вікіпедії як мету. Припустимо для цього прикладу Code Golf . Після цього всі гравці повинні починати з випадкової статті (натискаючи Random Article на бічній панелі або переходячи до цієї URL-адреси) і повинні якомога швидше дістатися до "мети", використовуючи лише пов'язані статті статті, в якій ви зараз перебуваєте . Правила включають:
- Функція пошуку заборонена (очевидно)
- Ви можете натискати лише посилання в основному тексті статті (зокрема, весь текст всередині
<div id="bodyContent">) - Якщо ваша випадкова сторінка або будь-яка інша сторінка, на яку ви зіткнулися, не має дійсних посилань (мертві посилання, петлі тощо) або взагалі немає посилань, ви можете прокрутити знову.
Змагання
Ось куди ви заходите: на жаль, я дуже поганий у цій грі, але я також брудний шахрай. Тому я хочу, щоб ви реалізували цього бота для мене. Я також програміст, тому природно мій жорсткий диск переповнений такими речами, як код, бібліотеки тощо, і мені залишається лише кілька байтів пам'яті. Тому цей виклик - Code Golf, відповідь з найменшими байтами виграє.
Деталі щодо впровадження:
- Звичайно, вам не доведеться впроваджувати інтелектуальний бот, який знає зв'язки між темами і автоматично визначає оптимальний маршрут. Насильницької грубих дій більш ніж достатньо для цілей цього виклику
- У реальній грі час рахується. Ваша програма не повинна займати більше однієї години, щоб знайти статтю (це уникнути лазівки, як випадкові пошуковики, які "зрештою" знайдуть мету)
- Якщо шляху до цілі неможливо знайти (наприклад, мертві посилання чи цикл), ви можете вибрати, що робити зі списку нижче:
- Вийти (оцінка залишається незмінною)
- Отримайте ще одну випадкову статтю та спробуйте ще раз і нічого не робите на циклі (бал - = 10)
- Отримайте ще одну випадкову статтю на мертвій посилання або циклі (автоматично визначайте цикли) (оцінка - = 50)
- (Під "балом" я маю на увазі ваш рахунок байтів)
- Ще 20 байтових бойтів буде віднято, якщо ви «простежите» маршрут, тож ви надрукуєте заголовок кожної окремої сторінки, яку відвідуєте.
- Можливо використовувати стандартні мережеві бібліотеки (щоб уникнути лазівки, наприклад "Я створив власну мережеву бібліотеку, яка сканує статті у Вікіпедії")
- Єдине, що має робити ваша програма, - це надіслати HTTP-запит на завантаження сторінки вікіпедії
- Якщо ваша програма знайде сторінку, вона повинна вийти, але якось сигналізувати, що вона закінчена (достатньо роздрукувати символ "f" або заголовок сторінки)
- Стандартні лазівки слід уникати
Весело гольфу!
(Це моє перше питання тут, тому, будь ласка, вкажіть очевидні лазівки та застереження в коментарях, перш ніж використовувати їх - дякую: D)