Про серію
По-перше, ви можете ставитися до цього, як і до будь-якого іншого виклику коду для гольфу, і відповісти на нього, не турбуючись про серію взагалі. Однак існує лідери у всіх викликах. Ви можете знайти таблицю лідерів разом з додатковою інформацією про серію в першій публікації .
Отвір 8: Перемішайте нескінченний список
Ви повинні написати функцію або програму, яка приймає нескінченний список як вхідний і повертає перетасовану версію цього списку.
Про нескінченний ввід / вивід
Існує кілька способів взяти внесок і отримати вихід для цього завдання:
- Ви можете або взяти список натуральних чисел, або їх рядкове представлення, або рядок або список друкованих символів ASCII (0x20 до 0x7E включно). Формат виводу повинен відповідати вхідному формату. Я просто буду називати дані "списком" відтепер, незалежно від того, який варіант ви обрали.
- Ви можете прочитати список з нескінченного стандартного вхідного потоку і записувати вихід безперервно в нескінченний стандартний вихідний потік. Рішення не повинно залежати від якогось конкретного значення або послідовності значень, щоб забезпечити регулярний запис та вимивання потоку виходів (наприклад, ви не можете просто записувати вихід, коли
5
у списку вводу є запис). Звичайно, якщо ви читаєте рядкове представлення списку, непогано почекати, поки не зустрінеться з роздільником списку. - Мовами, які їх підтримують, ви можете написати функцію, яка приймає та повертає ледачий нескінченний список чи рядок.
- На мовах, які їх підтримують, ви можете реалізувати нескінченний генератор, який приймає інший генератор як вхідний.
- Крім того, ви можете написати функцію, яка не бере аргументів і повертає одне вихідне значення кожного разу, коли воно викликається. У цьому випадку можна припустити, що визначена функція, яка не бере аргументів і повертає наступне вхідне значення кожного разу, коли воно викликається. Ви можете вільно вибрати ім'я цієї функції.
Ви можете припустити, що ваша програма працює вічно і що нескінченна пам'ять доступна. (Це можна вирішити за допомогою обмеженого обсягу пам'яті, але це означає, що вам дозволяється просочувати пам'ять.)
Про випадковість
Для будь-якого значення v, яке зчитується у позиції i нескінченного вводу, повинна бути позитивна ймовірність того, що воно опиниться в будь-якому з позицій i-9 до i + 9 нескінченного виходу (якщо тільки ця позиція не буде негативною ). Ці ймовірності не повинні бути однаковими для різних вихідних позицій або навіть для різних позицій вводу. Добре, якщо ваше рішення також може перемістити значення в іншу позицію, яка знаходиться далі.
Отже, не обов’язково, щоб ваше рішення пересувало перше значення дуже далеко вниз по списку, або що воно може переміщувати дуже пізнє значення до першої позиції, хоча це добре, якщо так, поки всі позиції 9 кроків від поля введення можливе.
Наприклад, якщо ви взяли наступний рядок в якості введення, ___
вказує всі позиції, які X
повинні бути в змозі потрапити у висновку:
___________________
abcdefghijklmnopqrstuvwxyzXabcdefghijklmnopqrstuvwxyz...
Якщо у вашій мові відсутній вбудований генератор випадкових чисел або ви не хочете користуватися нею, ви можете взяти додаткове значення насіння в якості введення та реалізувати власний відповідний RNG за допомогою насіння. Ця сторінка може бути корисною для цього.
Незалежно від реального розповсюдження, яке використовує ваше рішення, воно повинно майже напевно виробляти наступне значення через обмежений (але довільний) час.
Додайте коротке пояснення про те, як ваша реалізація відповідає цим вимогам.
Оцінка балів
Це код-гольф , тому найкоротший вірний відповідь - вимірюється в байтах - виграє.
Таблиця лідерів
Перший пост серії генерує таблицю лідерів.
Щоб переконатися, що ваші відповіді відображаються, будь ласка, почніть кожну відповідь із заголовка, використовуючи такий шаблон Markdown:
# Language Name, N bytes
де N
розмір вашого подання. Якщо ви покращите свій рахунок, ви можете зберегти старі бали у заголовку, прокресливши їх. Наприклад:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(Мова наразі не відображається, але фрагмент вимагає і аналізує його, і я можу в майбутньому додати таблицю лідерів за мовою.)