Geben Sie eine Zeichenfolge als Eingabe ein und drucken Sie eine neue Zeichenfolge, wobei jeder Buchstabe durch den jeweiligen Alphabetindex nach rechts verschoben wird.
Wir alle wissen, dass A ein langsamer und Z ein schneller Buchstabe ist. Dies bedeutet, dass Z um 25 Felder nach rechts verschoben wird, A überhaupt nicht und B um 1 Feld verschoben wird.
Ihr Programm muss nur Großbuchstaben von AZ und keine anderen Zeichen, keine Leerzeichen und keine Interpunktion verarbeiten.
Beachten Sie, dass das neueste Zeichen verwendet wird, wenn zwei oder mehr Buchstaben nach dem Verschieben auf die gleiche Stelle fallen. (Beispiel: BA
-> A
)
Beispiele
"AZ" -> "A Z"
"ABC" -> "A B C"
"ACE" -> "A C E"
"CBA" -> " A"
"HELLOWORLD" -> " E H DLL OLO R W"
Regeln
- Das ist Code-Golf , also gewinnt der kürzeste Code in einem Sprachbyte.
Standardlücken sind verboten.
Die Eingabe muss als Zeichenfolge empfangen werden.
- Sie können das Ergebnis ausdrucken
stdout
oder eine Zeichenfolge zurückgeben. - Ein einzelnes abschließendes Leerzeichen und / oder eine neue Zeile ist zulässig.
- Sie können auch Kleinbuchstaben als Eingabe oder Ausgabe verwenden, jedoch nur Groß- und Kleinschreibung.
Antworten:
Python 2 , 81 Bytes
Probieren Sie es online!
quelle
MATL , 11 Bytes
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
Die MATL-Indizierung basiert auf 1. Dieser Golftrick wird hier verwendet. Dieser andere kann nicht verwendet werden, da wir eine leere Zeichenfolge und kein leeres numerisches Array benötigen.
Betrachten Sie die Eingabe
'ACE'
als Beispiel. Der Stapelinhalt wird von unten nach oben angezeigt.quelle
(
: nice builtinǝ
? Ah, aber das scheint nicht über die zweite / dritte Eingabe zu vektorisieren0
s füllt und0
als Leerzeichen anzeigt .R ,
14013312974 BytesEs wurden eine Menge Bytes gespeichert, die wie alle anderen einen ASCII-Werteansatz portierten. Traurig, dass ich vorher nicht daran gedacht habe :(
Probieren Sie es online!
ursprüngliche Antwort, 129 Bytes:
Probieren Sie es online!
generiert eine zu lange Liste
o
von Leerzeichen, durchläuft sie danns
, ersetzt die Werteo
durch den richtigen Wert und aktualisiertF
die Position des am weitesten rechts stehenden Zeichens. Druckt dann die erstenF
Elementeo
ohne Trennzeichen aus.quelle
05AB1E ,
2016 Bytes-4 Bytes dank Emigna
Probieren Sie es online!
quelle
ð₄×svyAuykN+ǝ}ðÜ
zumindest verkürzen . Gibt es auch eine Garantie, dass die verschobene Eingabezeichenfolge nicht größer als 1000 Zeichen ist? Wenn nicht,g₂+ð×
sollte funktionieren.JavaScript (ES6), 81 Byte
Etwas baut auf Rick Hitchcocks unvollständiger Antwort auf , endete jedoch etwas anders.
Platziert die Zeichen in den entsprechenden Index eines leeren Arrays und
[...a]
verwandelt die fehlenden Elemente mithilfe von array spread ( ) inundefined
, sodassmap
leere Elemente durch ein Leerzeichen ersetzt werden können.Testfälle
Code-Snippet anzeigen
quelle
Perl 5, 42 Bytes
41 Byte Code + 1 für
-p
. Die\x1b
s im Code sind wörtliche Escapezeichen.Verlässt sich auf ANSI-Escape-Sequenzen, um den Cursor zu positionieren, und funktioniert daher nicht bei TIO.
Verwendungszweck
quelle
-F
) eingehtJava (OpenJDK 8) ,
207191189183178174173170 BytesProbieren Sie es online!
quelle
Perl 5 , 41 + (
-F
) = 43 BytesProbieren Sie es online!
Nur für @lynn
quelle
Brainfuck , 127 Bytes
Probieren Sie es online!
Erläuterung
quelle
Proton , 78 Bytes
Probieren Sie es online!
69 Bytes durch Portierung von Lynns Lösung:
x=>{t=[]i=65for k:x{t+=[' ']*26t[ord(k)-i]=k;i--}"".join(t).rstrip()}
quelle
Gelee , 20 Bytes
Probieren Sie es online!
quelle
Haskell ,
9088 BytesProbieren Sie es online!
quelle
Japt , 23 Bytes
Online testen!
Erster Versuch, vielleicht verbesserungsfähig ...
quelle
V
anstattU
: ethproductions.github.io/japt/…Wolfram Language (Mathematica) , 76 Byte
Nimmt eine Liste von Zeichen als Eingabe. Dadurch werden einige Fehlermeldungen generiert, die ignoriert werden können.
Ich habe
Print
undCharacter
Befehl in der Fußzeile des TIO-Links für die Benutzerfreundlichkeit. (Character
Befehl konvertiert einfach einen String in eine Liste von Zeichen)Probieren Sie es online!
quelle
LetterNumber
ist eine integrierte Funktion zum Ermitteln der Position eines Buchstabens im Alphabet? Heiliger Mist, das ist lächerlich.J,
3731 Bytes[`]`(' '#~(1+>./)@])}(i.@#+65-~a.&i.)
-6 Bytes dank FrownyFrog
Erläuterung
Das Ganze ist ein Haken:
Die rechte Seite berechnet die neuen Indizes für alle Buchstaben.
Die linke Seite verwendet die gerund Form ändert
}
zunächst eine Reihe von der notwendigen Anzahl von Räumen zu erzeugen:(' '#~(1+>./)@])
. Und dann, um jeden Buchstaben der ursprünglichen Zeichenfolge in den entsprechenden Index innerhalb der All-Space-Zeichenfolge einzufügen.Probieren Sie es online!
quelle
(i.@#+65-~a.&i.)
->(i.@#+65-~3&u:)
->(i.@#-65-3&u:)
->(#\-66-3&u:)
(]' '#~1+>./)
Haskell , 88 Bytes
Probieren Sie es online!
quelle
Haskell, 88 Bytes
Probieren Sie es online!
q
ist die Liste der letzten Indizes der Buchstaben der Eingabezeichenfolge (mit einem Offset von65
). Durchlaufen Sie alle Indizes (beginnend bei65
) und suchen Sie alle Buchstaben, wobei Sie ein Leerzeichen voranstellen. Nimm den letzten.quelle
C # (.NET Core) ,
11711084 Bytes7 Bytes gespart dank Ayb4tu .
Der Rückgabetyp wurde von
string
auf geändertchar[]
, um 26 Byte zu sparen.Probieren Sie es online!
quelle
t[i+((int)n[i]-65)]
zut[i+n[i]-65]
.char -> int
Konvertierungen implizit sind.C # .NET,
89 Bytes87 Bytes-2 Bytes dank Lan H.
Probieren Sie es online!
quelle
for
Schleife für -2 Bytes weglassen .Kotlin,
207 Bytes189 Bytes187 Bytes177 BytesWenn das führende Leerzeichen bleiben soll, würde ich einfach anrufen
trimEnd()
anstatttrim()
.Nicht abgeschlossen:
Vielleicht ist Kotlin nicht die beste Sprache für Code-Golf, aber ich mochte die Herausforderung und wollte mich mit Kotlins Standardbibliothek vertraut machen.
quelle
q / kdb + 37 Bytes
Lösung:
Beispiele:
Erläuterung:
Ich denke, dies ist die gleiche Idee wie die J-Lösung, berechnen Sie die richtigen Indizes für das Eingabearray und weisen Sie sie dann einer leeren Zeichenfolge mit der richtigen Länge zu:
quelle
Jq 1,5 , 91 Bytes
Erweitert
Probieren Sie es online!
quelle
Kohle , 16 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
quelle
APL (Dyalog) , 26 Bytes
Anonymes Präfix Lambda, das die Eingabezeichenfolge als Argument verwendet und die Ausgabezeichenfolge zurückgibt. Angenommen
⎕IO
( I ndex O rigin)0
, was auf vielen Systemen Standard ist.Probieren Sie es online!
{
…}
Anonymes Lambda;⍵
repräsentiert das Argument≢⍵
Zusammenfassung des Arguments⍳
als viele Zahlen (0… LengthOfArgument-1)(
…)+
Plus:⎕A⍳⍵
die Indizes des Arguments in Großbuchstaben A lphabeti←
einlagerni
(für i ndices)⌈/
Maximum (Reduzierung)1+
füge eins hinzu''↑⍨
Nehmen Sie so viele Zeichen aus der leeren Zeichenfolge und füllen Sie sie nach Bedarf mit Leerzeichen auf⊢
ergeben, dass (dient zur Trennungi
von''
)⍵@i
ändern Sie dies mit den Argumentationsbuchstaben an deni
Indizesquelle
SOGL V0.12 , 10 Bytes
Probieren Sie es hier aus!
Erläuterung:
quelle
Pyth ,
4438 BytesDurchgestrichen 44 ist immer noch 44 :(
Bloody Pyth Anfänger.
6 Bytes gespart dank @Mr. Xcoder.
Probieren Sie es online!
Wie?
quelle
K*d+lz26Vlz K=XK-C@zN-65N@zN;.WqeHdPZK
.WqeKd K=PK;K
wird.W
natürlich durch (funktional while) und dessen ArgumenteFNrZlz
ersetzt und kann ersetzt werdenVrZlz
,rZ...
bedeutet aberU...
, undU
wird automatisch von generiertV
. SoFNrZlz
wirdVlz
Batch,
418331 BytesFunktioniert nur mit Großbuchstaben und dauert einige Sekunden für längere Zeichenfolgen.
Neue Tricks erlernt man hier, die Zeichen in ASCII-Werte umzuwandeln
%=exitcodeAscii%
. Auchif defined
und "Array" Zugriff mitcall
. Das Golfen mit fast 100 Bytes war auch ein gutes Batchcode-Golftraining.Beachten Sie das nachfolgende Leerzeichen in
set z=set
.quelle
Ruby , 68 Bytes
Probieren Sie es online!
quelle
IBM PC DOS 8088 Assembly ,
3433 BytesUngolfed (nicht zusammengebaut):
Dies ist eine vollständige ausführbare PC-DOS-Datei, die die Eingabezeichenfolge von der Befehlszeile übernimmt und die neue "schnellere" Version auf dem Bildschirm ausgibt. Benötigt mindestens DOS 1.0 ... hoffentlich haben Sie mindestens das.
Ausgabe
quelle
PHP,
127123 BytesProbieren Sie es online aus
Musste einen Fehler beheben, der nicht 'A' ausgeben würde ...
quelle