Я уверен, что большинство, если не все, сталкивались с этим в тот или иной момент:
Приезжая на поиски в Cmabrigde Uinervtisy, он не имеет ничего общего с тем, какой он есть, и который находится на первом месте. Rset может быть очень полезен, и вы можете читать его без изменений. Это слово не только не из-за истерики, но и изредка.
Создайте программу, которая вводит любое количество текста. Для тестирования используйте расшифрованную версию приведенного выше текста, найденную ниже.
Затем программа должна случайным образом транспонировать буквы каждого слова длиной 4 или более букв, кроме первой и последней буквы каждого слова.
Все остальные форматы должны оставаться неизменными (использование заглавных букв и знаков препинания и т. Д.).
Тестовый текст:
По словам исследователя из Кембриджского университета, не имеет значения, в каком порядке располагаются буквы в слове, важно только, чтобы первая и последняя буквы были в нужном месте. Остальное может быть полным беспорядком, и вы все равно можете прочитать его без проблем. Это потому, что человеческий разум читает не каждую букву отдельно, а слово в целом.
Как обычно, это код-гольф. Самый короткий код выигрывает.
rscheearch
в ваш образец текста.don't
оставаться в том же положении? Спецификация говорит,All other formatting must remain the same (capitalization and punctuation, etc.).
но я не уверен, как это работает здесь ...Ответы:
Ruby -
5048 символов, плюс-p
параметр командной строки.Спасибо @primo за -2 символа.
Тестовое задание
источник
\K
утверждение с нулевой шириной? Кроме того, внутренняя группировка не нужна,$&
вместо нее используется$1
.$&
совет :)codegolf
сценарии[*$&.chars]
=>$&.chars
, сохраняя 3 байта.Питон, 118
Python ужасно неловкий для таких вещей, как это!
бонус
Я пробовал некоторые другие вещи, которые, на мой взгляд, были бы умными, но вы должны импортировать все виды вещей, и многие методы не имеют возвращаемых значений, но их нужно вызывать отдельно как собственное утверждение. Хуже всего, когда вам нужно преобразовать строку в список, а затем снова
join
вставить ее в строку.В любом случае, вот некоторые из вещей, которые я пробовал:
Regex! Перестановки! Вы не можете перетасовать раздел списка напрямую иshuffle
вернутьNone
, ура!источник
PHP 84 байта
Использование регулярного выражения для захвата слов длиной не менее
43 букв † и тасование внутренних символов. Этот код может обрабатывать ввод с несколькими строками.Если требуется только одна строка ввода (как в примере), это можно уменьшить до 68 байтов
† Есть только одна буква в середине, поэтому не имеет значения, если вы ее перемешаете.
источник
J (48)
Объяснение:
1!:1[3
: прочитать все входные данные из stdinrxapply
: применить данную функцию к частям ввода, которые соответствуют регулярному выражению({~?~@#)
: последовательность глаголов, которая перетасовывает свои входные данные:#
подсчитывает длину, это применяется к обеим сторонам,?
давая N отличных чисел от 0 до N,{
затем выбирает элементы с этими индексами из входного массива.('\w(\w+)\w';,1)
: использовать это регулярное выражение, но использовать только значение из первой группы[1!:2&4
: отправить неформатированный вывод на стандартный вывод''[
: подавить форматированный вывод. Это необходимо, потому что в противном случае он выводит только ту часть вывода, которая умещается на терминальной линии, а затем заканчивается на...
.источник
Сетчатка , 10 байт
Попробуйте онлайн!
Эй, этот старый вызов был сделан для новой Retina!
объяснение
\B\w+\B
сопоставляет группы букв между неограницами, то есть группы букв, которые не начинаются и не заканчивают слово. Поскольку регулярные выражения являются жадными, это будет соответствовать всем буквам слова, кроме первой и последней.V
является «обратной» стадией, которая меняет порядок символов в каждом совпадении регулярного выражения. С?
опцией он шифрует их вместо этого.источник
APL 107
К сожалению, мой интерпретатор APL не поддерживает регулярные выражения, поэтому вот домашняя версия, в которой зашифрованный текст хранится в переменной t:
По сути, код разбивает текст на слова только на основе букв алфавита, а затем на буквы между первой и последней буквами этих слов. Затем эти буквы скремблируются, и вся строка символов собирается заново.
источник
APL,
5849Я считаю, что это работает в IBM APL2 (у меня нет IBM APL)
Если нет, то в Dyalog APL добавьте вперед:
который добавляет 6 символов
Предполагается, что единственными несловесными символами являются пробел, запятая и точка.
источник
VBA, 351
373/409Альтернативный (больший) метод:
Оба эти метода изменяют значение переменной, передаваемой в
Sub
. т.е.выведет что-то вроде этого:
Кроме того, это рандомизирует пунктуацию в середине слова, так что это может не соответствовать спецификации на 100%.
источник
APL NARS 172 символа
13 + 17 + 18 + 44 + 41 + 8 + 17 + 5 + 9 = 172; Эта функция g () имеет ввод в виде строки; имеет вывод в виде строки. Я добавил команду ввода, потому что я не знаю, как вставить \ 'в строку в кавычках. комментарии
результат
источник
PHP 7.1, не конкурирует, 80 байт
принимает входные данные из аргументов командной строки. Беги с
-nr
. (очевидно, потерпит неудачу при пунктуации)источник
PHP, 94 + 1 байт
+1 за
-R
флагТрубный ввод через
php -nR '<code>'
.Примечание:
preg_replace_callback
пришел в PHP в 4.0.5; замыкания были введены в php 5.3;так что для этого требуется PHP 5.3 или новее.
К сожалению, совпадение всегда отправляется в виде массива, даже если нет под-шаблонов,
поэтому я не могу просто использовать
str_shuffle
в качестве обратного вызова, который бы сэкономил 29 байт.источник
JavaScript,
7667 байтспасибо Арно за -9 байт.
Попробуйте онлайн!
Ungolfed
источник
/\B\w+\B/g
. (Но для награды обратите внимание, что длина кода не важна. )R 179
Используя функцию, которую я написал для рандомизации букв в слове задачи :
Входные данные:
Решение:
Результат:
источник
Pyth, 23 байта
Не конкурирует, потому что Pyth был создан после того, как этот вызов был опубликован.
Попробуйте онлайн
источник
Japt , 32 байта
Попробуйте онлайн!
источник
Java,
1557834 байта Спасибо @JoKing за советы.Немного опоздал на соревнования. Забыл, что я начал с этой проблемы.
Golfed
Non-golfed
источник
Сайдф ,
8985 байтБлок (анонимный вызов):
Вывод, когда используется как
{ ... }('..')
:Немного негольфированный
источник