Очень трудно запомнить мой пароль, поэтому я нашел способ сгенерировать пароль.
Я генерирую свой пароль из слова или предложения, выполнив следующие действия:
Начните слева направо
Найти количество каждой буквы
Положите письмо с его счетом в порядке
Письма с более высоким повторением будут в конце
Письма с одинаковым повторением будут упорядочены в алфавитном порядке
Числа и специальные буквы будут игнорироваться, включая пробелы (например, 9, 4, @, (, * и т. Д. Игнорируются)
Групповые буквы игнорируют регистр. В выходных данных используйте регистр последнего вхождения во входных данных.
- Количество букв может быть любым числом, например, 5H17M345K
- Если на входе указаны все цифры или специальные буквы, то на выходе будет пустая строка, например, «12 $ * 34 ^!» затем выведите ""
- когда порядок для того же самого случая в алфавитном порядке не имеет значения, например, 1a1B1c
Пример:
Input: Kitkat Tango
(2k / 1i / 3T / 2a / 1n / 1g / 1o)
Output: 1g1i1n1o2a2k3T
Другой пример:
Input: Database Partitions Task
(1D / 5a / 4T / 1b / 3s / 1e / 1P / 1r / 2i / 1o / 1n / 3s / 1k)
Output: 1b1D1e1k1n1o1P1r2i3s4T5a
Примечание: буквы с 1 повторением в начале располагаются в алфавитном порядке, затем буквы с большим количеством повторений
Это код-гольф , выигрывает самый короткий код.
источник
1.
добавить как минимум 1 контрольный пример, включающий более 9 вхождений одной или нескольких букв,2.
указать, что вывод должен быть строкой (хотя я настоятельно рекомендую не быть таким строгим; он ничего не добавляет к задаче ),3.
укажите, что мы должны обрабатывать вводы, не содержащие букв, и уточните,4.
нужно ли обрабатывать пустую строку в качестве ввода.1
. Кроме того, в будущем вы можете рассмотреть возможность использования нашей Песочницы, чтобы попытаться устранить подобные проблемы, прежде чем отправлять вызов.Ответы:
Japt v2.0a0
-P
, 14 байтПопытайся
источник
05AB1E ,
191716 байтовСохранено 1 байт благодаря Кевину Круйссену
Попробуйте онлайн! или как тестовый набор
объяснение
источник
‚
(пару с) на«
(concat / merge), так что один из двухJ
s (объединений) может быть удален.J
? Изменить: На самом деле, мне нужно было их как пара в 19-байтовой версии, и я не думал менять ее, когда я сделал 17: PJ
зависимости от ответа на этот вопрос,C # (интерактивный компилятор Visual C #) , 105 байт
Попробуйте онлайн!
Спасибо Дане за то, что она уменьшила его до 105 байтов с 138 байтов.
источник
.OrderBy(a=>a)
?Perl 6 ,
6663 байтаПопробуйте онлайн!
объяснение
источник
Сетчатка ,
67664139 байт-25 байт и небольшое исправление ошибки благодаря @Neil .
-2 байта благодаря @Neil и @Shaggy вместе.
Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
Удалите все, кроме заглавных и строчных букв:
т.е.
Kitkat Tango 123!
→KitkatTango
Сортировать отдельные буквы без учета регистра ( спасибо @MartinEnder за это ):
т.е.
KitkatTango
→aagiKknottT
Захват каждый кусок не чувствительны к регистру повторяется соседние буквы:
т.е.
aagiKknottT
→ [aa
,g
,i
,Kk
,n
,o
,ttT
]PREPEND длину каждого матча, и только держать последнюю букву каждого фрагмента:
то есть [
aa
,g
,i
,Kk
,n
,o
,ttT
] →2a1g1i2k1n1o3T
Сортировать цифры и буквенные группы по номерам:
2a1g1i2k1n1o3T
→1g1i1n1o2a2k3T
После чего результат выводится неявно.
источник
"aA" < "aa"
)\w
и.
вO`\w.
использовались, чтобы указать, что мы сортируем пары символов. Не уверен, сможем ли мы отсортировать каждую пару символов, но сортируем только по первому символу. Но, ну, хорошо, предложение Мартина отсортировать каждый символ на основе замещения (который является строчным вариантом совпадения) работает как шарм. :)\P{L}
может работать, что экономит 2 байта.Wolfram Language (Mathematica) ,
102969387 байтПопробуйте онлайн!
источник
Pyth,
272422 байтаПопробуйте это онлайн здесь .
Редактировать: Гольф 3 байта, упорядочив по символам перед группой, предыдущая версия:
sm+ldedo,lNr0eN.gr0kf}r0TGQ
Редактировать 2: Отыграть еще 2 байта, отформатировав вывод перед любым заказом, предыдущая версия:
sm+ldedlD.gr0krD0f}r0TGQ
Редактировать 3: Отключить еще один байт, изменив фильтр, благодаря @FryAmTheEggman. Также пришлось исправить ошибку, когда OP уточнил, что одна буква может появляться более 9 раз, что снова добавляло байт: o (Предыдущая версия:
srD0m+lded.gr0kf}r0TGQ
источник
APL (Dyalog Extended) , 28 байтов SBCS
Функция анонимного молчаливого префикса.
Попробуйте онлайн!
'\PL'
не-буквы⎕R
PCRE R заменены на''
пустыми строками(
...)
Применить следующую молчаливую функцию:⌊
со строчными буквами в качестве клавиш…
⌸
примените нижеприведенную молчаливую функцию к каждой клавише и соответствующему набору значений, а именно⊢
к аргументу(
…)
Применить следующую молчаливую функцию⍤
к⊢
списку значений:⊢/
последнее значение…
,
Добавьте к этому следующее:⍕
stringification⍤
из≢
подсчета⊂
заключить (обрабатывать список символов как одну строку)∊
ε NLIST (Flatten) сортируются по возрастанию-версия , что⍤
∧
источник
Perl 5,
746866 байт-6 байт изменения
-p
в-n
и используяsay
вместо$_=join"",
-2 байт благодаря Абигайль , используя\pL
вместо[a-z]
TIO
59 байт, если не более 9 символов каждого символа
источник
Python 2 , 116 байт
Попробуйте онлайн!
источник
Database Partitions Task
не равен1b1D1e1k1n1o1P1r2i3s4T5a
In the output, use the case of the last occurrence in the input
вам нужноrfind
вместоfind
этого....] for
может стать,...]for
чтобы компенсировать это, хотя.Python 3 , 105 байт
Попробуйте онлайн!
-1 спасибо Арбо .
источник
Haskell ,
114/113105 байт-9 байт благодаря Лайкони (используя список-понимание и
(||)
вместо того , чтобыfilter
сelem
& сократить ,length
чтобы избавиться от уродливойzip
)!Попробуйте онлайн!
источник
Красный ,
220196206 байтПопробуйте онлайн!
Спасибо Shaggy за то, что нашли ошибку.
источник
Желе , 15 байт
Полная программа, печатающая пароль, как указано (как монадическая ссылка, она выдает список списков, каждый из которых содержит целое число и символ).
Попробуйте онлайн!
источник
шелуха , 15 байт
Нет проблем с импортом при использовании Husk, поэтому мы можем использовать различные удобные функции, такие как
groupOn
,sortOn
иtoLower
т.д:Попробуйте онлайн или попробуйте все!
объяснение
источник
JavaScript (Node.js) , 127 байт
Попробуйте онлайн!
parseInt(numberAsString, radix)
попытается проанализировать целое число в начале строки. Например,parseInt('120px', 10)
выдаст 120. При сбое синтаксического анализа возвращаетсяNaN
. Мы подключаем'0'
к началу каждого символа, чтобы он вернулся0
для любых не цифр-букв. По этому алгоритму мы можем сортировать одинаковые буквы вместе и не-буквенный символ в начале.sort
иjoin
,"Hello world!123"
стало бы" !123deHllloorw"
. Сопоставление с/([a-z])\1*/ig
игнорирует любой не-альфа-символ и разбивает строку на куски с одинаковыми буквами. `.map
конвертировать"aaa"
в"3a"
соответствии с требованиями в вопросе."3b"
будет меньше, чем"12a"
в базе 36, как мы и ожидаем: сначала сравнивается число (n div 36
), а потом сравнивается буква (n mod 36
).join
их вместе.JavaScript (Node.js) , 146 байт
Попробуйте онлайн!
источник
f=
. Первый раньше был короче. Но он получает на 4 байта больше, поскольку OP спросил, что вывод может быть пустой строкой. И я просто держал их там ...Java 10,
223209301 байт+92 байта в качестве исправления для входных данных, содержащих более 9 символов одной буквы. Посмотрим, смогу ли я снова это исправить с помощью другого подхода.
Попробуйте онлайн.
Объяснение:
источник
Scala , 103 байта
Попробуйте онлайн!
источник
Swift 4.2.1 / Xcode 10.1 ,
105410501048370368364 байтаПопробуйте онлайн!
@KevinCruijssen также удалил некоторые пробелы.
источник
false
от0>1
иtrue
до1>0
. Попробуйте онлайн 1027 байт . Вероятно, можно сыграть еще много, как и уif let v=$0.key.escaped(asASCII:0>1).lowercased().unicodeScalars.first?.value{return v<$1.key.value}else{return 0>1}
вас, но я оставлю это кому-то, кто действительно знает Swift.true
иfalse
из моего ответа.=
-присвоений: попробуйте онлайн 364 байта . Приятного пребывания! :)Древесный уголь , 30 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Пробежитесь по строчному алфавиту и найдите наибольшее количество символов в строчных буквах. Цикл по неявному диапазону. (Цикл фактически переходит от
0
к,n-1
поэтому я должен увеличивать переменную цикла при каждом использовании.)Снова переберите строчный алфавит.
Если счет текущей буквы равен значению внешнего цикла ...
Объедините текущий счет с последним вхождением текущей буквы и неявно напечатайте.
источник
Желе , 14 байт
Попробуйте онлайн!
Полная программа.
источник
NodeJS, 299 байт, -6 байт благодаря @tsh
Не так красиво, но это работает!
Javascript (ES8) (Firefox или Chrome), 294 байта, -1 байт благодаря @tsh
С новым
.flat
методом я могу сохранить 10 байтов:Попробуйте это онлайн: https://repl.it/repls/ConcernedHorribleHypothesis
источник
.replace
х 3 раза ->[R='replace]
и[R]
х 2 раза.charCodeAt(0)
->.charCodeAt()
(0
по умолчанию)R ,
131129 байтПопробуйте онлайн!
источник
Юлия 1,0 , 158 байт
Оригинальная негольфированная версия с той же логикой:
Попробуйте онлайн!
источник
Perl 6,
8682 байтаисточник