Учитывая непустую строку, продолжайте удалять первый и последний символы, пока не получите один или два символа.
Например, если строка была abcde
, ваша программа должна напечатать:
abcde
bcd
c
Однако, если это так abcdef
, он должен останавливаться на двух символах:
abcdef
bcde
cd
Конечные символы новой строки и конечные пробелы в конце каждой строки являются необязательными. Вы можете иметь столько, сколько хотите, или ни одного.
Контрольные примеры
ABCDEFGHIJKLMNOPQRSTUVWXYZ -> ABCDEFGHIJKLMNOPQRSTUVWXYZ
BCDEFGHIJKLMNOPQRSTUVWXY
CDEFGHIJKLMNOPQRSTUVWX
DEFGHIJKLMNOPQRSTUVW
EFGHIJKLMNOPQRSTUV
FGHIJKLMNOPQRSTU
GHIJKLMNOPQRST
HIJKLMNOPQRS
IJKLMNOPQR
JKLMNOPQ
KLMNOP
LMNO
MN
ABCDEFGHIJKLMNOPQRSTUVWXYZ! -> ABCDEFGHIJKLMNOPQRSTUVWXYZ!
BCDEFGHIJKLMNOPQRSTUVWXYZ
CDEFGHIJKLMNOPQRSTUVWXY
DEFGHIJKLMNOPQRSTUVWX
EFGHIJKLMNOPQRSTUVW
FGHIJKLMNOPQRSTUV
GHIJKLMNOPQRSTU
HIJKLMNOPQRST
IJKLMNOPQRS
JKLMNOPQR
KLMNOPQ
LMNOP
MNO
N
A -> A
AB -> AB
Помните, что это код-гольф , поэтому выигрывает код с наименьшим количеством байтов.
Ответы:
V , 10 байт
Попробуйте онлайн!
Объяснение:
источник
Python, 45 байт
Рекурсивно выводит строку, плюс новую строку, плюс начальные пробелы для следующей строки, а также рекурсивный результат для укороченной строки с дополнительным пробелом в префиксе.
Если разрешен начальный символ новой строки, мы можем сохранить байт:
Сравните с программой (49 байт в Python 2):
источник
ES6 (Javascript),
47,4843 байтаРЕДАКТИРОВАТЬ: Заменить троичный оператор с &&, префикс строки дополнения с новой строки. Спасибо @Neil за отличный совет!
РЕДАКТИРОВАТЬ: включил имя функции для рекурсивного вызова, обрезать один байт с помощью буквального перевода строки
Golfed
Тестовое задание
источник
p
равенства строки и пробела; Может быть, это может помочь вам тоже.s&&
вместоs?...:''
.Python 2, 50 байт
Простая рекурсивная функция, которая сокращает строку до тех пор, пока она не исчезнет.
Вызов как f ('строка')
Вывод
источник
Perl, 31 байт
30 байтов кода +
-p
флаг.Чтобы запустить это:
Пояснения :
\S
и.$
соответствуют первому и последнему символу,(.+)
середине и( *)
завершающим пробелам, которые добавляются каждый раз, когда мы удаляем один символ из начала. Таким образом, регулярное выражение удаляет один символ с начала, один с конца, и каждый раз добавляет один пробел.источник
Brainfuck , 67 байт
Это должно работать на все вкусы.
Попробуйте онлайн!
Код Ungolfed:
Здесь все еще должно быть несколько байтов для отсечки; Я только недавно начал использовать brainfuck, поэтому мое движение указателя, вероятно, очень неэффективно.
источник
MATL , 9 байт
Это создает конечные пробелы и переводы строки.
Попробуйте онлайн!
объяснение
источник
Пакет, 92 байта
Принимает участие в STDIN.
источник
C 73 байта
Ungolfed:
Применение:
источник
05AB1E , 8 байтов
Код:
Объяснение:
Использует кодировку CP-1252 . Попробуйте онлайн!
источник
Пайк, 10 байт
Попробуй это здесь!
источник
Haskell,
4743 байтаПопробуйте это на Ideone . Вывод - это список строк, которые были разрешены в комментариях к заданию. Чтобы распечатать, запустите
(putStr.unlines.f)
вместо простоf
.Редактировать: Сохранено 4 байта после того, как замечено, что конечный пробел разрешен.
источник
Perl 6 , 42 байта
Expanded:
источник
GNU sed 24 байта
Включает +2 для
-rn
Печатает, заменяет первый непробельный символ пробелом и удаляет последний символ, пока ничего не изменится.
источник
Сетчатка , 17 байт
Попробуйте онлайн!
источник
C ++ 14, 117 байт
Предполагается, что ввод
s
являетсяstd::string
и возвращает анимированный текст.Ungolfed:
Применение:
источник
Vim - 14 нажатий клавиш
Объяснение:
Vim автоматически убивает макрос, когда у нас заканчиваются символы
источник
Щелчок! - 16 блоков
Выход самоцентрирующийся. «Ожидание» для людей.
источник
PHP, 91 байт
Использование: сохранить в файл и вызвать из браузера:
источник
Mathematica, 71 байт
источник