Задача здесь состоит в том, чтобы взять строку и вывести все ее вращения, многократно перемещая первый символ в конец, один раз за символ в строке, заканчивающийся исходной строкой:
john -> ohnj, hnjo, njoh, john
Вы также можете перемещаться в другом направлении, перемещая персонажей с конца:
john -> njoh, hnjo, ohnj, john
Вы все равно должны выводить один оборот на букву, даже если до этого было достигнуто оригинальное слово:
heehee -> eeheeh, eheehe, heehee, eeheeh, eheehe, heehee
Допускаются массивы символов, если результат работает, как показано выше.
Кратчайший ответ выигрывает!
heehee
возвращается к исходному порядку за меньшее количество циклов, чем его длина, мы остановимся на этом? Я ожидаю, что это будет иметь большое значение для многих ответов.Ответы:
Желе , 2 байта
Монадическая ссылка, принимающая список символов, который выдает список списков символов
Попробуйте онлайн! (Нижний колонтитул печатает, вызывая ссылку и соединяясь с символами новой строки)
источник
Haskell, 27 байт
Попробуйте онлайн!
источник
APL (Dyalog Unicode) , 6 байтов SBCS
Попробуйте онлайн!
⍳
индексы∘
из≢
подсчет⌽¨
каждый поворот (влево)⊂
вся строкаисточник
Python 2 , 38 байт
Попробуйте онлайн!
источник
JavaScript (ES6),
3732 байтаВозвращает массив строк.
Попробуйте онлайн!
источник
Japt,
53 байтаПринимает ввод как символьный массив, выводит массив символьных массивов
Попробуй здесь
источник
05AB1E , 3 байта
Попробуйте онлайн!
источник
брейкфук , 59 байт
Попробуйте онлайн!
Выводит каждую строку, разделенную нулевыми байтами.
Объяснение:
источник
MATL ,
65 байт1 байт сохранен благодаря @luis!
Попробуйте это в MATL Online !
Пояснение :
источник
Wolfram Language (Mathematica) ,
3526 байтовПопробуйте онлайн!
Принимает список символов в качестве входных данных.
Partition
(но не его вариант,StringPartition
используемый ниже) имеет необязательный четвертый аргумент для обработки его ввода как циклического (и для указания, как именно это сделать), что делает это решение проще, чем строковое - в дополнение к отсутствию 15-символьного построения в функции.Wolfram Language (Mathematica) , 44 байта
Попробуйте онлайн!
То же самое, но принимает строку в качестве ввода.
Превращается
"john"
в"johnjohn"
, затем берет всеStringLength["john"]
подстроки длины этой строки со смещением 1, производя{"john","ohnj","hnjo","njoh","john"}
, а затем отбрасывает первую из них с помощьюRest
.источник
Rest@Partition[#~Join~#,Length@#,1]&
будет 36 байтов.Атташе , 13 байт
Попробуйте онлайн!
объяснение
альтернативы
15 байт :
{_&Rotate!1:#_}
16 байт :
{Rotate[_,1:#_]}
16 байт :
Rotate@Rotations
16 байт :
Rotate#(1&`:@`#)
17 байт :
Rotate#{1+Iota@_}
18 байт :
Rotate#(1&`+@Iota)
19 байтов :
Rotate#(Succ=>Iota)
источник
J 7 байт
Попробуйте онлайн!
Объяснение:
источник
"
подобное очень умно и требует знания словаря языка. Есть ли глагол с рангом1 0
?"#:
. Я узнал об этом здесь от FrownyfrogR , 58 байт
Попробуйте онлайн!
источник
C # (интерактивный компилятор Visual C #) , 34 байта
Попробуйте онлайн!
источник
C (32-разрядный),
585150 байт-1 байт для хорошего округлого числа благодаря потолку
Попробуйте онлайн!
Degolf
источник
~++i+printf("%s%.*s\n",s+i,i,s)
вместоi++<printf("%s%.*s\n",s+i,i,s)-2
flooringcat
.Древесный уголь , 10 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Чтобы повернуть в противоположном направлении, замените
Minus
наPlus
.источник
Красный ,
4943 байтаПопробуйте онлайн!
источник
Python 2 ,
5448 байтПопробуйте онлайн!
Хорошо побитый xnor, но в любом случае опубликован как альтернативный подход.
источник
Perl 6 , 32 байта
Попробуйте онлайн!
m:ex/^(.*)(.+)$/
ex
haustivelym
присоединяется к данному регулярному выражению, разделяя входную строку в каждом возможном месте, за исключением того, что вторая подстрока должна иметь хотя бы один символ - что препятствует тому, чтобы входная строка дважды отображалась в выходных данных. Затем каждая изMatch
групп захвата результирующих объектов сводится ([]
) к одной строке сR~
помощью оператора конкатенации обратной строки.источник
Напористый , 4 байта
Попробуйте онлайн!
источник
V , 8 байт
Попробуйте онлайн!
HexDump:
источник
ýñx$pÙñd
дает 8, убрав необходимостьH
tio.run/##K/v///DewxsrVAoOzzy8MeX/f6/8jDwAý<M-->ñx$pÙ
Powershell, 44 байта
Тестовый скрипт:
выход:
источник
Tcl , 80
91байтПопробуйте онлайн!
источник
proc R t {time {puts [set t [string ra $t 1 end][string in $t 0]]} [string len $t]}
СНОБОЛ4 (CSNOBOL4) , 82 байта
Попробуйте онлайн!
источник
Луа , 61 байт
Попробуйте онлайн!
Разбейте строку по последовательным индексам от одного до длины строки (индексация по одному), объедините фрагменты в обратном порядке, напечатайте.
источник
Рубин , 39 байт
Попробуйте онлайн!
источник
JavaScript,
484336 байт-5 байтов любезно предоставлено @Bubbler * -7 байтов любезно предоставлено @Shaggy
Ввод - это массив символов, а вывод - это массив символьных массивов.
Попробуйте онлайн!
источник
[..."john"]
считается ли обработка входной строки в массив перед вызовом функции?Common Lisp, 88 байт
Попробуйте онлайн!
источник
MBASIC ,
6966 байт-3 байта, благодаря Орджану Йохансену
источник
1 INPUT S$:L=LEN(S$):FOR I=1 TO L:S$=MID$(S$+S$,2,L):PRINT S$:NEXT
.брейкфак , 38 байт
Попробуйте онлайн!
Основано на идее JoKing использовать нулевые символы в качестве пробелов. Этот код отмечает текущие буквы для печати и циклически повторяется, пока не достигнет левого конца.
источник