Hier besteht die Herausforderung darin, eine Zeichenfolge zu nehmen und alle ihre Rotationen auszugeben, indem das erste Zeichen einmal pro Zeichen in der Zeichenfolge bis zum Ende verschoben wird und mit der ursprünglichen Zeichenfolge endet:
john -> ohnj, hnjo, njoh, john
Sie können auch in die andere Richtung fahren und die Zeichen vom Ende verschieben:
john -> njoh, hnjo, ohnj, john
Sie sollten immer noch eine Umdrehung pro Buchstabe ausgeben, auch wenn das ursprüngliche Wort zuvor erreicht wurde:
heehee -> eeheeh, eheehe, heehee, eeheeh, eheehe, heehee
Zeichenarrays sind zulässig, solange das Ergebnis wie oben gezeigt funktioniert.
Kürzeste Antwort gewinnt!
heehee
in weniger Zyklen als in ihrer Länge zur ursprünglichen Reihenfolge zurückkehrt, hören wir dann dort auf? Ich gehe davon aus, dass dies für viele Antworten einen großen Unterschied bedeuten wird.Antworten:
Gelee , 2 Bytes
Ein monadischer Link, der eine Liste von Zeichen akzeptiert, die eine Liste von Zeichenlisten ergibt
Probieren Sie es online! (Die Fußzeile wird hübsch gedruckt, indem der Link aufgerufen und mit Zeilenumbruchzeichen verbunden wird.)
quelle
Haskell, 27 Bytes
Probieren Sie es online!
quelle
APL (Dyalog Unicode) , 6 Byte SBCS
Probieren Sie es online!
⍳
die Indizes∘
von≢
die Bilanz⌽¨
jeweils drehen (nach links)⊂
die gesamte Zeichenfolgequelle
Python 2 , 38 Bytes
Probieren Sie es online!
quelle
JavaScript (ES6),
3732 BytesGibt ein Array von Zeichenfolgen zurück.
Probieren Sie es online!
quelle
Japt,
53 BytesÜbernimmt die Eingabe als Zeichenarray und gibt ein Array von Zeichenarrays aus
Probieren Sie es hier aus
quelle
05AB1E , 3 Bytes
Probieren Sie es online!
quelle
Brainfuck , 59 Bytes
Probieren Sie es online!
Gibt jede durch Null-Bytes getrennte Zeichenfolge aus.
Erläuterung:
quelle
MATL ,
65 Bytes1 Byte gespart dank @luis!
Probieren Sie es bei MATL Online !
Erklärung :
quelle
Wolfram Language (Mathematica) ,
3526 BytesProbieren Sie es online!
Nimmt eine Liste von Zeichen als Eingabe.
Partition
(aber nichtStringPartition
die unten verwendete Variante ) verfügt über ein optionales viertes Argument, um die Eingabe als zyklisch zu behandeln (und anzugeben, wie genau dies erfolgen soll), wodurch diese Lösung einfacher als die Zeichenfolge ist - zusätzlich dazu, dass keine 15 Zeichen erstellt werden -in Funktionen.Wolfram Language (Mathematica) , 44 Byte
Probieren Sie es online!
Das gleiche, nimmt aber einen String als Eingabe.
Turns
"john"
in"johnjohn"
nimmt dann alle längen-StringLength["john"]
Strings dieser Zeichenfolge mit Offset 1, produziert{"john","ohnj","hnjo","njoh","john"}
, dann fällt die erste von diesen mitRest
.quelle
Rest@Partition[#~Join~#,Length@#,1]&
wären das 36 Bytes.Attache , 13 Bytes
Probieren Sie es online!
Erläuterung
Alternativen
15 Bytes :
{_&Rotate!1:#_}
16 Bytes :
{Rotate[_,1:#_]}
16 Bytes :
Rotate@Rotations
16 Bytes :
Rotate#(1&`:@`#)
17 Bytes :
Rotate#{1+Iota@_}
18 Bytes :
Rotate#(1&`+@Iota)
19 Bytes :
Rotate#(Succ=>Iota)
quelle
J , 7 Bytes
Probieren Sie es online!
Erläuterung:
quelle
"
benutzen ist sehr clever und erfordert Wörterbuchkenntnisse der Sprache. Gibt es auch ein Verb mit Rang1 0
?"#:
. Das habe ich hier von FrownyfrogR , 58 Bytes
Probieren Sie es online!
quelle
C # (Visual C # Interactive Compiler) , 34 Byte
Probieren Sie es online!
quelle
C (32 Bit),
585150 Bytes-1 Byte für eine schöne runde Zahl dank ceilingcat
Probieren Sie es online!
Degolf
quelle
~++i+printf("%s%.*s\n",s+i,i,s)
stattdessen vori++<printf("%s%.*s\n",s+i,i,s)-2
flooringcat
.Kohle , 10 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Um in die entgegengesetzte Richtung zu drehen, ersetzen Sie
Minus
durchPlus
.quelle
Rot ,
4943 BytesProbieren Sie es online!
quelle
Python 2 ,
5448 BytesProbieren Sie es online!
Gut geschlagen von xnor, aber trotzdem als Alternative gepostet.
quelle
Perl 6 , 32 Bytes
Probieren Sie es online!
m:ex/^(.*)(.+)$/
ex
Dientm
zum schnellen Abgleichen des angegebenen regulären Ausdrucks und Aufteilen der Eingabezeichenfolge an jeder möglichen Stelle, mit der Ausnahme, dass die zweite Teilzeichenfolge mindestens ein Zeichen enthalten muss. Dadurch wird verhindert, dass die Eingabezeichenfolge in der Ausgabe zweimal angezeigt wird. Dann wird jedeMatch
Erfassungsgruppe der resultierenden Objekte[]
mitR~
dem umgekehrten Zeichenfolgenverkettungsoperator auf eine einzelne Zeichenfolge reduziert ( ) .quelle
Aufdringlich , 4 Bytes
Probieren Sie es online!
quelle
V , 8 Bytes
Probieren Sie es online!
Hexdump:
quelle
ýñx$pÙñd
ergibt 8, indemH
tio.run/##K/v///DewxsrVAoOzzy8MeX/f6/8jDwAý<M-->ñx$pÙ
Powershell, 44 Bytes
Testskript:
Ausgabe:
quelle
Tcl ,
80-91BytesProbieren Sie es online!
quelle
proc R t {time {puts [set t [string ra $t 1 end][string in $t 0]]} [string len $t]}
SNOBOL4 (CSNOBOL4) , 82 Bytes
Probieren Sie es online!
quelle
Lua , 61 Bytes
Probieren Sie es online!
Teilen Sie die Zeichenfolge bei aufeinanderfolgenden Indizes von 1 auf die Länge der Zeichenfolge auf (einseitige Indizierung), verketten Sie die Teile in umgekehrter Reihenfolge, und drucken Sie sie aus.
quelle
Ruby , 39 Bytes
Probieren Sie es online!
quelle
JavaScript,
484336 Bytes-5 Bytes mit freundlicher Genehmigung von @Bubbler * -7 Bytes mit freundlicher Genehmigung von @Shaggy
Die Eingabe ist ein Zeichenarray und die Ausgabe ist ein Array von Zeichenarrays.
Probieren Sie es online!
quelle
[..."john"]
nicht als Manipulation der Eingabezeichenfolge für ein Array vor dem Funktionsaufruf?Common Lisp, 88 Bytes
Probieren Sie es online!
quelle
MBASIC ,
6966 Bytes-3 Bytes, danke an Ørjan Johansen
quelle
1 INPUT S$:L=LEN(S$):FOR I=1 TO L:S$=MID$(S$+S$,2,L):PRINT S$:NEXT
.Brainfuck , 38 Bytes
Probieren Sie es online!
Basierend auf der Idee von JoKing, Nullzeichen als Leerzeichen zu verwenden. Dieser Code markiert die aktuell zu druckenden Buchstaben und führt eine Schleife durch, bis das linke Ende erreicht ist.
quelle