Абзац текста состоит из цифр и букв алфавита. Ваша задача - разделить цифры слева и буквы алфавита справа в том же порядке каждой строки.
Правила:
- Числа представляют собой простые целые числа; так что нет десятичной точки и нет отрицательных / положительных знаков.
- Числа могут быть или не быть смежными, но в любом случае они должны быть перенесены на левую сторону в том же порядке.
- Числа могут встречаться между словами.
- Текст содержит только буквы и цифры ASCII, а также пробелы, подчеркивания, запятые и точки.
- Тот, кто делает это с минимальными нажатиями клавиш (например, макросами vim) или наименьшим количеством байтов в случае сценариев, является победителем.
Пример текста:
A word can have any number of text like 433884,
but all the numb89ers has to be moved left side
but alph6abetical va9lues has to be pas46ted on right side.
The text might con4tain chara29cters s2huffled like hlep or dfeintino or even
meaningless1 words co43mbined togeth81er.
Ожидаемый результат:
433884A word can have any number of text like ,
89but all the numbers has to be moved left side
6946but alphabetical values has to be pasted on right side.
4292The text might contain characters shuffled like hlep or dfeintino or even
14381meaningless words combined together.
Ответы:
Сетчатка , 14 байт
Попробуйте онлайн!
объяснение
O
вводит этап сортировки.%
говорит Retina применить преобразование к каждой строке отдельно.$
говорит ему отсортировать совпадения по результату указанной замены.Само регулярное выражение -
\d|(.)
это то, что либо соответствует цифре, либо чему-либо еще, что записано в группу1
. Это заменяется$#1
на число захватов группы1
. То есть ключ сортировки для цифр есть,0
а ключ сортировки для всего остального есть1
. Поскольку сортировка в Retina стабильна, это просто перемещает цифры влево и все остальное вправо.источник
05AB1E,
1410 байтКод:
Объяснение:
Пример ввода:
Пример вывода:
Попробуйте онлайн
источник
Python 3, 64 байта
Три эквивалентных решения! Я не могу выбрать.
источник
while 1:print(*sorted(input(),key=lambda x:-('/'<x<':')),sep='')
Perl, 17 байт
16-байтовый код + 1 переключатель
требует
-p
.использование
В качестве альтернативы:
требует
-n
.использование
источник
Хун ,
9283 байта++lore
разбивает многолинейный шнур на(list cord)
,(trip +<)
превращает его в ленту.++skid
разделяет список на две части: одна сторона, где функция возвращает да, другая сторона, где она возвращает нет. Наша функция пытается проанализировать символ с помощью++nud
(числового) и проверяет, полностью ли он анализируется, а затем мы свариваем два списка обратно в ленту.источник
MATL ,
1312 байтВыход с ошибкой (разрешено по умолчанию), выдающий правильный вывод.
Попробуйте онлайн!
объяснение
источник
V, 12 байт
V, это незаконченный 2D-язык для игры в гольф. Хотя эта программа еще не завершена, она работает с коммитом 45 , который был опубликован вчера вечером, что делает этот ответ конкурентным. (Большинство моих предыдущих V ответов были неконкурентными.)
Обратите внимание, что завершающий перевод новой строки необходим, хотя это связано с ошибкой.
Попробуйте онлайн!
Объяснение:
¨Ä©¨ä©/²±
расширяется в регулярное выражение vim:это не цифра,
(\D)
за которой следует цифра(\d)
, и поменяйте их местами.Так как это заполнено грубыми символами Юникода, вот обратимый hexdump:
источник
Javascript ES6, 40 байт
a=>a.replace(/\D/g,'')+a.replace(/\d/g,'')
Пробовал несколько других решений, но не смог получить его меньше, чем этот.
Моя первая попытка была,
a=>[...a.match(/\d/g),...a.match(/\D/g)].join``
но это на 5 байт длиннееПопробуй здесь
Показать фрагмент кода
источник
CJam,
91316 байтТам нет
f$
...Эта 13-байтовая версия почти работает:
источник
PowerShell v2 +, 55 байт
В связи с необходимостью поддержки многострочного ввода, мы должны инкапсулировать наши
-replace
операторы в цикле и-split
в новых строках. В остальном в основном эквивалентно решению JavaScript .источник
Pyth - 11 байт
Не нравится мой групповой тест. Принимает ввод как список строк, скажите мне, если это не хорошо.
Попробуйте это онлайн здесь .
источник
Пиф,
1615 байт1 байт благодаря @FryAmTheEggman .
Попробуйте онлайн!
Пример ввода:
Пример вывода:
Как это устроено
источник
U
потому что карты автоматически приводят целые числа к диапазонам.Сетчатка, 16 байт
Стабильный пузырьковый сорт.
Пример ввода:
Пример вывода:
Попробуйте онлайн!
источник
C #, 59 байт
Простая лямбда-функция C # с использованием регулярных выражений.
Образец вывода
источник
C # (LINQ), 110 байт
Пока что это не самое короткое решение, но я подумал, что это будет хорошим вариантом использования LINQ.
источник
char.IsDigit
существует ...Фактор 61
Это наивный подход.
"\n"split
разбивает строку в верхней части стека на строки. Тогда дляeach
строки:[ digit? ] partition
разбивает каждую строку на только цифры и только цифры[ write ] bi@
выводит как, так иnl
печатает новую строку.PS:
Как слово 90 байтов (71, если заменить имя-факториста длинным на 1 букву):
источник
Pyth, 14 байт
Попробуйте онлайн!
Объяснение:
Логика решения такая же, как в ответе Линн .
источник
Java 8,
13012686 байт-4 байта преобразует Java 7 в 8 и удаляет неиспользуемый символ
-40 байт преобразует программу в функцию и изменяется
[^\\d]
на\\D
Объяснение:
Попробуй это здесь.
источник
GNU Sed, 28
Оценка включает в себя +1 для
-r
опции для sed.Повторно переключается один нечисловой символ, за которым следует один числовой символ, до тех пор, пока больше не будут сделаны замены.
К сожалению, регулярные выражения sed не имеют
\d
или\D
, поэтому они должны быть записаны от руки.Ideone.
источник
Октава,
3732 байтаисточник
Clojure, 113 байт
Сортирует цифры по началу строки.
источник
Oracle SQL 11.2, 131 байт
Строки во входной строке разделены символом «¤». Таким образом, нет необходимости создавать таблицу для использования в качестве входных данных.
Запрос:
Un-golfed
источник
APL, 28 символов
источник
Haskell, 60 байт
использование
источник
Sed, 35 байт
Это создает копию строки, удаляет цифры из одной копии и буквы из другой, прежде чем объединять их.
источник
Баш, 42 байта
Имейте в виду, что эта рекурсивная реализация создает новый процесс для каждой строки ввода!
источник
Japt v2 ,
1412 байт-2 байта благодаря ETHproductions
Запустить его
источник
Юлия 0,6 , 77 байт
Анонимная функция, берущая строку и печатающая вывод. Перебирает символы, добавляя их в левый
l
или правыйr
буферы, пока не найдет новую строку, затем напечатает и очистит буферы. Много потенциальных полезных конструкций, таких какsort
,filter
и логической индексации (индексация с массивом логических значений) не работают на нитях.Попробуйте онлайн!
источник
Vim, 30 нажатий клавиш
Запишите действие поиска и замены, которое перемещает цифры слева от нецифровых чисел. Вызывайте макрос рекурсивно до тех пор, пока не будет сгенерировано исключение из-за того, что шаблон не найден (когда справа от любых нецифров больше нет цифр).
источник
C (gcc) , 106 байт
Попробуйте онлайн!
источник