Вам дана строка. Выведите строку с одним пробелом на слова.
Вызов
На входе будет строка (не null
пустая), "
заключенная в кавычки ( ), отправленные через stdin
. Уберите из него начальные и конечные пробелы. Кроме того, если между двумя словами (или символами, или чем-то еще) есть несколько пробелов, обрежьте их до одного пробела. Выведите измененную строку с кавычками.
правила
- Строка не должна быть длиннее 100 символов и будет содержать только символы ASCII в диапазоне
(пробел) до
~
(тильда) (коды символов от 0x20 до 0x7E включительно), за исключением того"
, что строка не будет содержать кавычек ("
) и других символов вне диапазон указан выше. См. Таблицу ASCII для справки. - Вы должны принять входные данные
stdin
(или ближайший альтернативный вариант). - Вывод должен содержать кавычки (
"
). - Вы можете написать полную программу или функцию, которая принимает входные данные (из
stdin
) и выводит последнюю строку
Тестовые случаи
"this is a string " --> "this is a string"
" blah blah blah " --> "blah blah blah"
"abcdefg" --> "abcdefg"
" " --> ""
"12 34 ~5 6 (7, 8) - 9 - " --> "12 34 ~5 6 (7, 8) - 9 -"
счет
Это код гольф, поэтому выигрывает самое короткое представление (в байтах).
must take input from stdin
, а потом говорите...or a function which takes input, and outputs the final string
. Означает ли это, что функция также должна принимать данныеstdin
?" "aa" "
->""aa""
(допустимы ли кавычки внутри входной строки?)Ответы:
CJam, 7 байтов
Код Объяснение
CJam зарезервировал все заглавные буквы как встроенные переменные. Так что
S
имеет значение пробела здесь.Это удаляет завершающие и ведущие пробелы, а также
Попробуйте онлайн здесь
источник
/// : 18 символов
Образец прогона:
(Используя интерпретатор Фаубигуя из его Perl-ответа для Interpret /// (произносится как «косая черта») .)
источник
Perl, 22
(20 байтов кода плюс 2 ключа командной строки)
Необходимо запустить с
-np
переключателем, чтобы$_
он автоматически заполнялся через стандартный ввод и выводился на стандартный вывод. Я собираюсь предположить, что это добавляет 2 к количеству байтов.источник
sed -E 's/ +/ /g;s/" | "/"/g'
-p
подразумевает-n
, что вам нужно только взять штраф +1 здесь (при условии, что вы не просто переключаетесь на другой язык, как предлагают другие комментаторы).Рубин,
31292523 байтаОбъяснение кода:
p
выводит строку в двойных кавычкахSTDOUT
( это еще не все ...)$*
массивSTDIN
входных данных,$*[0]
занимает первоеstrip
удаляет начальные и конечные пробелыsqueeze ' '
заменяет> 1 пробел на один пробелТестовые случаи:
источник
ARGV
на$*
сохранение двух байтов.gsub /\s+/, ' '
может быть замененоsqueeze ' '
на еще 4 байта$*
, я этого не знал. Но мы не можем заменитьgsub /\s+/, ' '
с ,squeeze
потому что они не являются одинаковыми .squeeze ' '
будет только сжимать пробелы."yellow moon".squeeze "l" => "yelow moon"
p
и его параметром,squeeze
и его параметром не нужны.Pyth,
17151110 байт(спасибо Ypnypn и FryAmTheEggman )
Возможно, будет в гольф больше.
Если выходные данные можно использовать
'
вместо,"
то мне нужно только 8 байтов:источник
N
вместо\"
d
.d
все, для чего он может быть использован?p
для сохранения нескольких байтов при конкатенации строк вместо многих+
es.pjd-cQdkNN
Баш,
3632 байтаКак функция, программа или просто труба:
объяснение
Первый
xargs
лишает кавычек.Вторая
xargs
обрезает левую сторону и заменяет несколько соседних пробелов в середине строки одним пробелом, беря каждое слово и разделяя каждое пробелом.xargs -i echo '"{}"'
Обрежет правую сторону и rewraps полученной строки в двойных кавычках.источник
x=xargs;$x|$x|$x -i echo '"{}"'
Haskell,
3125 байтwords
разбивает строку на список строк с пробелами в качестве разделителей иunwords
объединяет список строк с одним пробелом между ними. Кавычки"
отбрасываются и возвращаются функциями Haskellread
иshow
(неявно через REPL) в строках.Вывод самой функцией на три байта длиннее, т.е. на 28 байтов:
Редактировать: @Mauris указал на
readLn
функцию, которая сохранила несколько байтов.источник
Parse error: naked expression at top level
когда я тестировал оба кода здесьmain=interact$show.unwords.words.read
. На сайте haskell.org есть онлайн- ответ (требуются файлы cookie), где вы можете попробоватьfmap(unwords.words.read)getLine
.fmap(unwords.words)readLn
иprint.unwords.words=<<readLn
немного короче.readLn
.R, 45 байт
readline()
Функция считывает данные из STDIN, автоматически зачисток любых начальных и конечных пробелов. Лишнее пространство между словами удаляется с помощьюgsub()
. Наконец, двойные кавычки добавляются и добавляются, и результат выводится в STDOUT.Примеры:
источник
[1] "This is a string"
Python2, 37
Уменьшено на 1 байт благодаря @ygramul.
Оригинальная версия:
Тестовые случаи:
источник
print" ".join(raw_input().split())
, но у него был бы заключительный пробел в последнейJavaScript (ES6), 49
52 58Редактируйте на 6 байт, благодаря @Optimizer
Редактировать 2 -3, благодаря @nderscore
Ввод / вывод через всплывающее окно. Использование строки шаблона для вырезания 1 байта в конкатенации строк.
Запустите сниппет для тестирования в Firefox.
источник
alert(`"${eval(prompt()).match(/\S+/g).join(" ")}"`)
- 52alert(`"${prompt().match(/[^ "]+/g).join(" ")}"`)
05AB1E , 9 байт
Попробуйте онлайн!
источник
Mathematica, 75 байт
источник
KDB (Q), 28 байтов
объяснение
Тестовое задание
источник
Java 8, 43 байта
Объяснение:
Попробуй это здесь.
источник
Октава , 44 байта
Попробуйте онлайн!
источник
Perl 5 , 17 байт
16 байт кода + 1 для
-p
Попробуйте онлайн!
источник
Jq 1,5 , 42 байта
Пробный прогон
Попробуйте онлайн
источник
Tcl , 69 байт
Попробуйте онлайн!
Tcl , 79 байт
Попробуйте онлайн!
источник
Japt
-Q
,104 байтаПопытайся
источник
Golfua, 42 байта
Простая замена сопоставления с образцом: найти любые двойные кавычки (
\"
), окруженные 0 или более пробелами (%s*
), и верните одинарную кавычку, затем замените все 1 или более пробелов (%s+
) одним пробелом.Эквивалент Lua будет
источник
Кобра - 68
Как анонимная функция:
источник
Objective-C 215
Несжатая версия:
источник
Баш, 14 байтов
источник
Powershell, 40 байт
Довольно прямолинейно и не очень впечатляет.
объяснение
Возьмите входной параметр через (предварительно заданную) переменную args, замените все несколько пробелов одним, обрежьте начальные и конечные пробелы с помощью метода trim (), добавьте кавычки. Powershell выводит строки на консоль в качестве поведения по умолчанию.
источник
k4, 23 байта
источник
Зш , 15 байт
Попробуйте онлайн!
Входная строка содержит встроенные кавычки. Удалить
Q
за 14 байтов если входная строка не содержит встроенных кавычек, как это делается в некоторых других ответах здесь.Флаги раскрытия параметров:
Q
удаляют кавычки, а затемz
разделяются на слова, как это делает оболочка. Слова затем неявно соединяются пробелами.источник
Рен , 56 байт
Подождите. Замена только один раз ? Теперь я должен использовать комбинацию split-join.
Попробуйте онлайн!
объяснение
источник
GolfScript , 8 байт
Попробуйте онлайн!
объяснение
Логика довольно проста:
источник
Python2, 28 байт
объяснение
Анонимная функция, которая принимает в качестве входных данных s.
Возвращает список слов (которые разделены произвольными строками пробельных символов) строки s.
Объединяет список обратно в строку, каждое слово разделяется пробелом ("").
источник