У нас недостаточно (полу) простых задач для начинающих. Все больше и больше легких уже занято. Поэтому я попытался придумать что-то, что может быть достигнуто новичками, но это не дубликат.
Входные данные:
Одна строка, разделенная новой строкой вашей ОС (то есть \r\n
),
или массив с несколькими строками.
Выход - Лестница :
Удалите все не алфавитные и не числовые символы. Так что все, что осталось, это [A-Za-z0-9]
. А затем «построить лестницу»; в основном упорядочение их по длине с наименьшим сверху и самым широким снизу.
Правила соревнований:
- Когда две строки имеют одинаковую длину, мы объединяем их друг с другом в одну большую строку (порядок не имеет значения, поэтому он может быть от первого к последнему или от последнего к первому, в зависимости от того, что вы предпочитаете).
- Приведенное выше правило может складываться, когда объединенные строки снова имеют одинаковую длину (см. Контрольный пример 2).
Основные правила:
- Ввод STDIN и содержит только символы ASCII. И вывод STDOUT.
- Случай вывода должен быть таким же, как и вход.
Каждое представление должно быть полной программой, способной компилироваться и запускаться, а не просто методом / функцией.РЕДАКТИРОВАТЬ: Я довольно новичок, так что, возможно, с этого момента действительно лучше использовать значение по умолчанию , хотя я предпочитаю полную программу самостоятельно. Извините за всех, кто уже разместил полную программу. Не стесняйтесь редактировать, и в следующий раз я постараюсь не менять пост-вызов.- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах. Я, вероятно, принимаю самый короткий ответ через год.
Не позволяйте ответам code-golf отговаривать вас от публикации в гольфе не-Codegolf языков, таких как C # и так далее! Попробуйте найти самый короткий ответ для любого языка программирования. - Не стесняйтесь использовать более новые языки, чем этот вопрос.
Тестовые случаи:
Вход 1:
This is a sample text,
that you will have to use to build stairs.
The wood may be of excellent quality,
or pretty crappy almost falling apart and filled with termites.
Bla bla bla - some more text
Ok, that will do
Выход 1:
Okthatwilldo
Thisisasampletext
Blablablasomemoretext
Thewoodmaybeofexcellentquality
thatyouwillhavetousetobuildstairs
orprettycrappyalmostfallingapartandfilledwithtermites
Вход 2:
A
small
one
that
contains
equal
length
strings
for
the
special
rule
Выход 2:
A Or alternatively: A
length length
oneforthe theforone
smallequal equalsmall
stringsspecial specialstrings
thatrulecontains containsrulethat
Шаги объяснили 2:
Первый заказ по длине:
A
one
for
the
that
rule
small
equal
length
strings
special
contains
Первое слияние:
A
oneforthe
thatrule
smallequal
length
stringsspecial
contains
Второй порядок по длине:
A
length
thatrule
contains
oneforthe
smallequal
stringsspecial
Второе слияние:
A
length
thatrulecontains
oneforthe
smallequal
stringsspecial
Третий порядок по длине:
A
length
oneforthe
smallequal
stringsspecial
thatrulecontains
Вход 3:
Test,
test.
This
is
a
test.
Выход 3:
a Or alternatively: a
is is
TesttestThistest testThistestTest
Вход 4:
a
bc
d!
123
Выход 4:
123 Or alternatively: 123
adbc dabc
contains
не должно быть в выходных данных 2. Это объединено сthatrule
Ответы:
Шелуха , 11 байт
Попробуйте онлайн!
Хаска моложе этого испытания (что официально не имеет значения, но все же).
объяснение
источник
mf□
, вы должны ревновать. Когда «группа по длине»ġL
, вы должны быть поражены.Python 3, 264 байта
Я не очень хорош в код-гольфе, поэтому я уверен, что это не будет лучшим ответом на Python 3. При этом используются рекурсия и упорядоченный словарь со всеми словами для каждой длины.
Принимает ввод из stdin в виде списка, например, протестируйте его с этим списком:
Будет выводить:
источник
filter(str.isalnum, l)
вместо"".join
частиСетчатка,
6963 байтаПопробуйте онлайн!
источник
[^\w¶]|_
. Хотя я все еще не уверен, что это оптимально.Oracle SQL 11.2, 346 байт
Строки во входной строке разделены символом «¤». Таким образом, нет необходимости создавать таблицу для использования в качестве входных данных.
Запрос:
Un-golfed
источник
[\W_]
0-9
на\d
. Может быть, правила регулярных выражений в sql отличаются от правил в python / php / javascript? (JS по-прежнему особый случай из-за lookbehinds)Haskell, 129 байт
Принимает и печатает массив строк. Если результат можно вернуть из функции (в отличие от вывода на стандартный вывод), вы можете опустить
print.
и сохранить 6 байтов.Как это работает (обратите внимание, я использую
x
для входного параметра, который, конечно, не появляется в версии pointfree выше):источник
Python 3,
184180 байтФункция, которая принимает входные данные по аргументу в виде списка строк и печатает результат в STDOUT. При выполнении возникает ошибка (из-за использования оператора + перед оператором print), но не раньше, чем вывод будет напечатан.
Как это устроено
Попробуйте это на Ideone
источник
J , 48 байтов
Попробуйте онлайн!
ungolfed
объяснение
(#~e.&AlphaNum_j_)&.>
удалить не алфавит(#&> ,&.>//. ])
комбинировать предметы одинаковой длины^:_
продолжайте комбинировать, пока не перестанет меняться(/: #&>)
сортировать по длинеисточник
Javascript
198188186179 байтЭто моя вторая по длине программа для игры в гольф на JavaScript
Вероятно, можно играть в гольф дальше
источник
t
переменную?.split()
вы можете использовать[y]()
Perl 5 , 112 байт
Попробуйте онлайн!
источник
Желе , 17 байт
Попробуйте онлайн!
Не уверен, почему
Ẏf¥€ØWṖ¤L€ĠịµÐLY
не работает ...Объяснение:
источник
Pyth, 22 байта
Попробуй это здесь.
Объяснение:
источник
Pyth, 39 байт
Вернуться к игре в гольф!
Есть программа:
Проверьте это здесь!
Пояснения
источник
R
иL
вместоm
Java 8, 268 байт
Пустая лямбда, принимающая изменчивый
List<String>
(т.е. реализуетadd
иremove
; напримерArrayList
). Вывод выводится на стандартный вывод, разделенный символом новой строки, с завершающим символом новой строки. В роляхConsumer<List<String>>
.Попробуйте онлайн
Это оказалось намного дольше, чем я ожидал. Как заметил Кевин, все сложнее, чем кажется на первый взгляд.
Неуправляемая лямбда
Во-первых, я сокращаю ввод на месте до букв и цифр. Затем я обрабатываю входные данные в группах по длине. Я добавляю элементы к первому в списке, пока не будет достигнута следующая длина, удаляя их по ходу дела. Если был использован только первый элемент, это будет единственная строка такой длины, поэтому она печатается. В противном случае присоединенная строка добавляется в список для следующей итерации. Я сортирую список по длине каждую итерацию перед использованием.
Я начал с прекрасного решения, которое использовало приоритетную очередь для отслеживания промежуточных строк. К сожалению,
java.util.PriorityQueue<String>
это довольно долго (и использование необработанного типа было длиннее), так что пришлось идти.источник
Japt v2.0a1
-h
, 11 байтВвод и вывод в виде массивов строк.
Попытайся
источник
[a-zA-Z0-9]
вместо[a-zA-Z]
).JavaScript, 119 байт
Я чувствую, что это должно быть намного короче ...
Включает в себя 2 ведущих новых строки в выводе.
Попробуйте онлайн
источник
g
на 118Perl 6 , 85 байт
Попробуйте онлайн!
Вход и выход в виде списков строк.
источник
Pyth, 21 байт
Ввод представляет собой список строк. Попробуйте онлайн здесь или проверьте все тесты здесь .
источник
05AB1E , 16 байтов
Ввод в виде списка строк.
Попробуйте онлайн или проверьте все контрольные примеры .
Могло бы быть 14 байтов,
εžKÃ}Δé.γg}J}»
еслиΔ
бы работал со списком строк.Объяснение:
источник
Powershell, Windows 10, 63 байта
Так что вход ...
и код ...
Это охватывает ввод / вывод 1, работая на 2 и 3 ...
источник