Вызов:
Чтение ввода (в пределах видимого диапазона ASCII) и вывод с несколькими модификациями:
- В каждом наборе 10 символов ввода случайным образом (50/50):
- заменить один символ * (случайным ** в видимом диапазоне ASCII) (например,
lumberjack
становитсяlumbeZjack
) - или удалить один символ (например,
lumberjack
становитсяlmberjack
)
- заменить один символ * (случайным ** в видимом диапазоне ASCII) (например,
* Если набор содержит менее 10 символов, вам не нужно его изменять, но вы можете.
** Символ может быть таким же, как один вход, если он все еще случайный.
Пример:
Input: Go home cat! You're drunk!
Output: Go hom cat! YouLre drunk!
(просто пример, поскольку выходные данные могут быть случайными, не используйте в качестве контрольного примера)
Правила:
- Код-гольф , выигрывает минимум персонажей!
Ответы:
Pyth,
2725 байтТестовый набор доступен здесь.
Спасибо Maltysen за то, что он сбрил 2 байта.
объяснение
Как это часто бывает, я чувствую, что это немного наивный метод, который можно улучшить. Обычно я нахожу что-то очевидное, когда набираю объяснения, но на этот раз у меня ничего не получилось
источник
OC\¾
такое же количество байтов, как иO190
, и присвоение K удаляемому символу также не экономит место.*> <> ,
44465250 байтПопробуй это здесь!
Это использует любой символ ascii около / выше пробела для случайных символов. Это всегда редактирует 6-й символ, если только это не конец строки и длина этой строки не кратна 10. Это имеет 50% шанс удалить 7-й символ вместо редактирования 6-го.
вход
Выход
Изменить:
Этот ответ, вероятно, не всегда в видимом диапазоне ASCII, редактирование ...Исправлено.Edit2:
не видел, что должен быть шанс 50/50 удалить персонажа, редактирование снова ...Я верю, что теперь все в порядке :).источник
Perl 6 ,
7867 байтПопробуй
Объяснение:
источник
Pyth - 21 байт
Попробуйте это онлайн здесь .
источник
Python 3 , 75 байт
75-байт применяет преобразование к первому символу каждой группы и выбирает только из 2 случайных символов, например, в ответе Jelly (который разрешен OP):
Попробуйте онлайн!
Это рекурсивная функция, которая на каждой итерации добавляет либо ничего
'a'
, либо'b'
, а затем вызывает себя с обрезанными первыми 10 символами. На последней итерации короткое замыкание вs and
(пустая строка ложно), избегая бесконечной рекурсии.Результаты всех отдельных вызовов затем объединяются и возвращаются в контекст, который вызвал функцию.
120 байт
Конечно, это немного похоже на мошенничество, так что вот что совершенно случайно:
Попробуйте онлайн!
источник
Желе ,
15 1413 байтов 13 символовTryItOnline!
Заменяет или удаляет первый из каждых десяти символов, включая символы последних 1-9, если есть такой фрагмент. Выбирает из, по общему признанию, небольшого набора символов
1
:;2
,Как?
Чтобы выбрать из всех печатных ASCII, а не только
1
и2
(все еще заменяя или удаляя 1-й символ каждого блока) в 21 байте:Для полностью случайной версии (удаление / замена 50/50, равномерная случайная печать ASCII и равномерно случайное расположение символов в каждом чанке) у меня есть 30 байтов (возможно, неоптимальных):
Это вращает каждый кусок, оставленный случайным количеством, выталкивает последний символ и затем вызывает случайную одну из первых двух ссылок, одна из которых пуста, а другая объединяется со случайным печатаемым символом ASCII; затем он снова вращает кусок.
источник
Python3,
188186184114 символовКажется слишком долго Скорее всего, можно сократить с помощью лямбды.Очевидно, ОП позволил выбрать случайный символ из списка из двух символов, и индекс заменяемого символа может быть константой. После внесения изменений мой ответ выглядел бы точно так же, как @FlipTacks Python, так что это форма, с которой я остаюсь.
@FlipTack сэкономил 5 байт!
источник
Clojure,
135139 байтИзменить: Забыл использовать
partition-all
вместоpartition
.Ungolfed:
У этих имен функции длинные ... В любом случае, он разбивает входные данные на разделы по 10 символов, разбивает их в произвольной точке на две половины, случайным образом вставляет пустую строку или случайный символ между ними и отбрасывает первый символ 2-й половины.
источник
Mathematica 133 байта (129 символов)
76 символов, чтобы написать имена 8 функций: /
Использование
⌊..⌋
вместоFloor[]
сохраняет 5 символов, 1 байт.источник
Python 3, 129 байт
Чтобы сохранить несколько байтов, вместо импорта случайного модуля Python, я просто выполнил несколько операций по модулю над идентификатором строки, которые каждый раз должны отличаться. Например, программа решит, удалять или нет символ или нет, в зависимости от того,
id(string)//10
является ли он четным (делю целое число на 10, поскольку последняя цифра всегда будет четной).источник