Erstellen Sie ein Programm, das das eingegebene Wort aufnimmt und dieses Wort minus dem Anfangsbuchstaben auf die Rückseite setzt. Wiederholen Sie das Programm, bis alle Buchstaben verschwunden sind. Zum Beispiel cat
würde werden catatt
, und hello
würde werden helloellolloloo
.
Eingabe
Beliebiger der 26 Buchstaben des englischen Alphabets. Es kann mehrere Wörter geben, die durch Leerzeichen voneinander getrennt sind, und die Änderung sollte auf jedes Wort angewendet werden.
Ausgabe
Das / die eingegebene (n) Wort (e), wobei jedes Wort nach dem ersten Buchstaben fehlt und dann der zweite Buchstabe fehlt und so weiter, bis keine Buchstaben mehr hinzugefügt werden müssen.
Mehr Beispiele:
ill eel
Ausgänge illlll eelell
laser bat
Ausgänge laserasersererr batatt
darth vader
Ausgänge dartharthrththh vaderaderdererr
Dies ist Codegolf, also gewinnt der kürzeste Code.
Erläuterung:
Sie können die Eingabe oder Ausgabe als Liste behandeln. Sie können Wörter mit Zeilenvorschub anstelle von Leerzeichen trennen. Sie können der Eingabe ein Leerzeichen hinzufügen.
1.
Bitte aktualisieren Sie die Spezifikation mit den neuen Zulassungen (Array-E / A, nachfolgender Speicherplatz usw.).2.
Bitte informieren Sie die vorhandenen Lösungen, falls durch die Nutzung dieser Zulassungen Byte eingespart werden können.Antworten:
Japt
-m
,63 BytesEingabe und Ausgabe sind Arrays von Wörtern.
Versuch es
Erläuterung
quelle
£
zwei Bytes in UTF-8?Brainfuck ,
6056 BytesProbieren Sie es online!
Benötigt ein nachfolgendes Leerzeichen und druckt ein führendes Leerzeichen. Beide könnten umgangen werden, aber das ergibt 112 Bytes .
Erläuterung
quelle
Haskell,
3621 BytesProbieren Sie es online!
Edit: -15 Bytes, aufgrund des neuen E / A-Formats (Liste der Wörter anstelle von durch Leerzeichen getrennten Wörtern)
quelle
scanr (:) ""
mittails
.import Data.List
die der Punktzahl 17 Bytes hinzufügt.Perl
-p
,362523 BytesProbieren Sie es online!
Dies ist eine einzelne Regsub. Zunächst werden alle Wortgrenzen oder Nicht-Leerzeichen abgeglichen:
Beachten Sie, dass jede dieser Übereinstimmungen durch den Rest des Wortes ersetzt werden sollte:
Dies können wir mit der speziellen Variablen erreichen
$'
, die den Teil des Strings nach dem Match speichert. Wir müssen jedoch das verschachtelte regsub darauf anwendens/ .*//
, wodurch alles nach dem ersten Leerzeichen in entfernt wird$'
, um die verbleibenden Wörter in der Eingabe zu entfernen .Danke an @nwellnhof für 2 Bytes.
quelle
[^ ]
mit\S
.Python 3 , 49 Bytes
Probieren Sie es online!
Dies macht sich die Tatsache zunutze, dass
"".split()
ein leeres Array zurückgegeben wird, das als Prüfung für den Basisfall in der Rekursion dient.quelle
Gelee , 3 Bytes
Probieren Sie es online!
Benötigen Sie das
K
s nicht mehr, da Array-Ein- / Ausgabe jetzt zulässig ist.quelle
ḊƬẎ)
(oderḊƬF)
, wenn Sie es vorziehen).APL (Dyalog),
199 Bytes{⌽∊,\⌽⍵}¨
Danke an @ H.PWiz für das Joggen meines Gehirns
Dies funktioniert, weil alle Zeichenfolgen in APL Zeichenarrays sind.
TIO
quelle
JavaScript (ES6), 33 Byte
1 Byte dank @ShieruAsakoto gespeichert
E / A-Format: Array von Wörtern.
Probieren Sie es online!
JavaScript (ES6), 35 Byte
E / A-Format: Array von Wörtern.
Probieren Sie es online!
quelle
s=>s.replace(/\S+/g,g=s=>s&&s+g(s.slice(1)))
$'
(oder$<backtick>
).R ,
827567 BytesProbieren Sie es online!
Dank JayCe konnten mehrere Bytes eingespart werden
Trennt die Ausgabe mit Zeilenumbrüchen.
Der
sapply(...)
Ausdruck generiert einen Matrix- / Spaltenvektor der entsprechenden Teilzeichenfolgen und füllt diese""
nach Bedarf auf.write
druckt dann die Elemente der Matrixy
zeilenweise aus und trennt sie mit""
.quelle
...substring,1:1e6,1e6)...
oder ähnlichemBrainfuck ,
9493 BytesProbieren Sie es online!
.[-]>[.>]<[<]>
bis[.>]<[<]>[-]>
.Erläuterung
Probieren Sie es online!
Zuschreibung
Esolangs Brainfuck-Konstantensammlung wurde für die anfängliche Raumbelastung verwendet.
quelle
05AB1E , 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
í€ηJí
(Da Präfixe ein 1-Byte-Builtin anstelle von 2-Byte-Suffixen sind, ist immer noch eine zusätzliche Umkehrung erforderlich - jedoch zu Beginn, sodass die Byteanzahl 5 bleibt.)Vim , 47 Bytes (38 Tastenanschläge)
Beginnen Sie mit Ihrer Eingabe als einzige Zeile in einem Vim-Puffer.
Erläuterung
Dies setzt jedes Wort in eine eigene Zeile, iteriert über jede Zeile und verbindet sie dann wieder alle. Bricht ab, wenn Wörter länger als 99 Zeichen sind oder wenn Ihre Eingabe mehr als 99 Wörter enthält.
:s/<Space>/\r/g<CR>
ersetzt Leerzeichen durch neue Zeilen (\r
)gg
positioniert den Cursor am Anfang der ersten Zeileqa
beginnt mit der Aufnahme von Makro a :yw
reißt den Rest des WortesP
setzt es hinter den Cursorlx
Entfernt den ersten Buchstaben des letzten Wortesq
stoppt die Aufzeichnung von Makro aqb
beginnt mit der Aufnahme von Makro b :99@a
Makro führt eine neunundneunzig mal (führt die Zeichengrenze)j0
positioniert den Cursor am Anfang der nächsten Zeileq
stoppt die Makroaufnahme b99@b
Makro ausführt b neunundneunzig Zeiten (führt die Wortgrenze)gg
positioniert den Cursor in der ersten Zeile99J
Verbindet die folgenden neunundneunzig Zeilen mit Leerzeichen (wieder Wortbegrenzung)Für weitere 2 Bytes (2 Tastenanschläge) können Sie das Wortlimit auf 999 verlängern. Weitere 4 Bytes, 9999 usw.
quelle
Schale ,
64 Bytes-2 Bytes dank Jonathan Allan (Eingabe als Liste)!
Probieren Sie es online!
Erläuterung
Übernimmt die Eingabe als Liste von Zeichenfolgen und ordnet die folgende Funktion zu:
quelle
Retina 0.8.2 , 15 Bytes
Probieren Sie es online! Hinweis: Leerzeichen am Ende. Erläuterung:
Auf Leerzeichen aufteilen.
Fügen Sie jedem Buchstaben das Suffix hinzu. Das
%
bedeutet, dass wir nur das Suffix des Wortes erhalten.Mit Leerzeichen verbinden.
quelle
Pepe ,
167153 BytesProbieren Sie es online!
quelle
16-Bit-x86-Assemblycode, 24 Byte
Aufruf mit si = Zeiger auf Quelltext, di = Zeiger auf Ausgabepuffer.
Die Quellzeichenfolge benötigt zum Beenden ein Null-Byte.
Der Code ist derselbe in 16- oder 32- oder 64-Bit (si / di wird entweder zu esi / edi oder rsi / rdi).
Der 32-Bit-Code ist aufgrund des erweiterten Aufrufs zwei Byte größer.
64-Bit-Code ist immer noch drei Bytes größer, da das Inc / Dec von RSI / RDI ein Präfix anzieht (wenn jedoch bekannt ist, dass sie sich innerhalb des 32-Bit-Speicherbereichs befinden, können sie erneut esi / edi sein, um diese Strafe zu vermeiden). .
quelle
MATL ,
1816 BytesDie Eingabe ist ein Zellenarray von Wörtern. Probieren Sie es online!
Erläuterung
quelle
K4 / K (oK) , 9 Bytes
Lösung:
Probieren Sie es online!
Erläuterung:
quelle
C ++ (clang) , 174 Bytes
Probieren Sie es online!
Es ist meine erste Einreichung, und ich wusste nicht, ob es in Ordnung ist, einen String zurückzugeben, anstatt ihn zu drucken :)
quelle
return w!=""?
zu speichern - lassenreturn""!=w?
.Stax , 3 Bytes
Führen Sie es aus und debuggen Sie es
Erläuterung:
quelle
Holzkohle , 14 Bytes
Probieren Sie es online! Hinweis: Leerzeichen am Ende. Link ist eine ausführliche Version des Codes. Erläuterung:
quelle
C (gcc) , 79 Bytes
Probieren Sie es online!
quelle
Pip
-s
, 11 BytesNimmt die durch Leerzeichen getrennte Liste der Wörter von stdin. Probieren Sie es online!
Erläuterung
quelle
Ruby , 42 Bytes
Probieren Sie es online!
quelle
Python 2 , 63 Bytes
Probieren Sie es online!
quelle
Canvas , 6 Bytes
Probieren Sie es hier aus!
5 Bytes mit einem verrückten Ausgabeformat
quelle
C #,
11190 BytesProbieren Sie es online!
Durch Ändern der Eingabe und Ausgabe in Arrays habe ich ein paar Bytes gespart:
Probieren Sie es online!
quelle
K (oK) ,
1713 BytesProbieren Sie es online!
Präfix anonyme Funktion; Die Eingabe erfolgt als Liste von Zeichenfolgen, bei denen es sich wiederum um Zeichenlisten handelt.
Danke @streetster für 4 Bytes.
Wie:
quelle
{|,/,\|x}'
Common Lisp , 179 Bytes
Probieren Sie es online!
Dies ist mein erster Versuch, Golf zu spielen. Änderungen sind willkommen
quelle
car
anstelle vonfirst
undcdr
anstelle vonrest
Golf Ihre Vorlage weiter verwenden.Lua , 70 Bytes
Probieren Sie es online!
Erläuterung
Die Argumente in Lua sind in der Tabelle gespeichert
arg
bei Index beginnend 1. Die unärer Operator#
gibt die Größe der Tabelle und Funktions:sub(a,b)
gibt eine Teilzeichenfolge basierend aufs
abgegrenzt durch ganze Zahlena
undb
, falls B nicht bestanden wird den Rest des Strings zurück.Ich hatte zu verwenden ,
io.write()
anstattprint()
zu vermeiden Zeilenumbrüche und fügteprint()
am Ende für den entgegengesetzten Grund.quelle