Codieren Sie die Zeichenfolge mit einer zu codierenden Zeichenfolge und einer Anzahl von Spalten (dem Schlüssel) wie folgt:
Ich werde das Beispiel Hello, world!
und den Schlüssel verwenden3
Schreiben Sie zunächst die Anzahl der Spalten auf:
1 2 3
Schreiben Sie als Nächstes den Text beginnend oben links mit einem Zeichen pro Spalte. Wenn Ihnen die Spalten ausgehen, fahren Sie mit der nächsten Zeile fort.
1 2 3
H e l
l o ,
w o
r l d
!
Um Ihren codierten Text zu erhalten, lesen Sie den Text ab der oberen linken Ecke. Lesen Sie diesmal jedoch zuerst eine Spalte und dann die nächste und so weiter. Wenn sich kein Zeichen im Steckplatz befindet, setzen Sie ein Leerzeichen.
Hl r!eowl l,od
Beachten Sie, dass hier ein nachgestelltes Leerzeichen vorhanden ist.
Dies ist Ihr verschlüsselter Text.
Ein weiterer Testfall ist Programming Puzzles and Code Golf SE
mit Schlüssel 5
:
1 2 3 4 5
P r o g r
a m m i n
g P u z
z l e s
a n d C
o d e G
o l f S
E
Der verschlüsselte Text ist PagzaooErm lndl omPedef gius rnz CGS
.
Weitere Testfälle
"abcdefghijklmnopqrstuvwxyz", 2 -> "acegikmoqsuwybdfhjlnprtvxz"
"codegolf.stackexchange.com", 4 -> "cg.ccgoooskhemdltea. efaxnc "
"Pen Pineapple Apple Pen!!!", 7 -> "PeAeeapnnpp! pl!Ple!ie n P "
"1,1,2,3,5,8,13,21,34,55,89", 10 -> "18,,,5115,3,2,8,2931 ,, 53 ,4 "
Denken Sie daran, dies ist Code-Golf , also gewinnt der Code mit den wenigsten Bytes.
Programming Puzzles and Code Golf
,3
.Antworten:
MATL , 4 Bytes
Probieren Sie es online aus!
Dies ist so einfach wie möglich.
e
ist ein eingebautes Element, das eine Matrix in n Zeilen umformt . Also lesen wir input1 als String ein und formen eine Matrix mit input2- Zeilen:Dann transponieren wir es, um Folgendes zu erhalten:
Danach rufen wir einfach
1e
auf, um es in eine einzelne Zeile umzuformen und als Zeichenfolge anzuzeigen.Wie Sie in diesem Beispielprogramm sehen können , fügt die Funktion "Umformen" bequem so viele Nullen hinzu, wie erforderlich sind, damit die Matrix ein perfektes Rechteck ist. Bei der Anzeige als Zeichenfolge behandelt MATL Nullen als Leerzeichen, sodass automatisch die erforderliche Anzahl von Leerzeichen für keine zusätzliche Arbeit ausgefüllt wird.
quelle
Gelee , 3 Bytes
TryItOnline!
Wie?
quelle
PHP, 85 Bytes
PHP, 90 Bytes
quelle
Ruby,
786765 BytesSiehe es auf eval.in: https://eval.in/668412
Ungolfed
quelle
Pyth - 5 Bytes
Probieren Sie es hier online aus .
quelle
Python 2, 46 Bytes
Die Idee ist, die Eingabezeichenfolge zu nehmen, sie
n
mit dem ersten Zeichen aus dem entfernten zu kopieren und dann jedesn
dritte Zeichen zu nehmen.Schauen wir uns zum Beispiel an
s="abcdef", n=3
, wo die Länge ein Vielfaches von istn
:Der erste Zyklus durch die Zeichenfolge nimmt jedes
n
th-Zeichen vom ersten. Dann verschiebt jeder nachfolgende Zyklus einen Index nach rechts, da das erste Zeichen übersprungen wird. Um sicherzustellen, dass die Länge ein Vielfaches von istn
, wird die anfängliche Zeichenfolge mit Leerzeichen aufgefüllt.quelle
Japt, 15 Bytes
Testen Sie es online!
In Japt ist "alle Unterabschnitte der Länge N" integriert, aber weder "alle nicht überlappenden Unterabschnitte" noch "jedes N-te Zeichen". Plötzlich gibt es ein klaffendes Loch in meinem Leben ...
Erläuterung
quelle
Python 2, 58 Bytes
Testen Sie es auf Ideone .
quelle
def f(s,n):t=[*s,' '];del t[print(end=s[::n]):f(''.join(t),n-1):n]
es wirklich , aber es ist zu lang ...JavaScript (ES6), 84 Byte
Es ist eine rekursive Lösung.
quelle
R,
9281 BytesProbieren Sie es auf R-Geige
Dies stellte sich als Kopfschmerz heraus, da R den Eingabevektor automatisch wiederverwendet, wenn die in der Matrixerstellung angegebenen Zeilen oder Spalten nicht ein Vielfaches der Länge der Eingabe sind. Daher müssen wir den Vektor mit
-nchar(x)%%n
Leerzeichen auffüllen, bevor wir ihn an die Matrixfunktion übergeben.Der letzte Schritt besteht darin, die Matrix zu transponieren und zu drucken.
quelle
l=nchar(x)
? Sie scheinenl
nirgendwo zu verwenden. Funktionel
ist allerdings die Entdeckung, +1.Perl, 61 Bytes
54 Bytes an Codes und
-F -pi
Flags.Nimmt die Eingabezeichenfolge ohne letzten Zeilenumbruch und der Schlüssel sollte nach dem
-i
Flag platziert werden :quelle
Mathematica,
4340 BytesVielen Dank an Meilen für die Einsparung von drei Bytes!
Unbenannte Funktion mit zwei Argumenten, einem Array von Zeichen und einer Ganzzahl; Gibt ein Array von Zeichen zurück. Der größte Teil des schweren Hebens wird von der
Thread
Funktion ausgeführt, die (in diesem Zusammenhang) Zeilen und Spalten austauscht.Partition
muss mit ein paar nutzlosen Argumenten aufgerufen werden, damit es mit dem fünften Argument aufgefüllt wird" "
.quelle
Thread
auch anstelle vonTranspose
Join@@Thread@Partition[##,#2,1," "]&
Ruby, 89 Bytes
Schreckliche Punktzahl, Tipps geschätzt.
quelle
size
stattlength
für ein Byte.Perl, 87 Bytes
Akzeptiert zwei Argumente als Parameter und Verwendung:
quelle
Pyth, 40 Bytes
Testen Sie es hier
Wahrscheinlich der hässlichste Pyth-Code aller Zeiten, aber dies ist mein erster Versuch mit Pyth.
Wenn jemand Tipps zur Verbesserung meines Golfspiels hat, hinterlasse bitte einen Kommentar!
quelle
(-len(Z))%Q
, so dass Sie ersetzen können ,+Q-*Q/lZQlZ
mit%_lZQ
. (Alternativ können Sie neu anordnen+Q-*Q/lZQlZ
zu+-*/lZQQlZQ
Es ist nicht kürzer, aber.+-*/
Blicke kühlen;))Eigentlich 12 Bytes
Golfvorschläge sind willkommen, insbesondere wenn Sie eine Golfart finden, um Räume aufzufüllen. Probieren Sie es online aus!
Ungolfing
Eine weitere 12-Byte-Version
In dieser Version ist die Reihenfolge der Eingaben umgekehrt, dies kann jedoch geändert werden, wenn dies nicht zulässig ist. Golfvorschläge willkommen. Probieren Sie es online aus!
Ungolfing
quelle
Pyke, 10 Bytes
Probieren Sie es hier aus!
quelle
C #, 161 Bytes
Es tut mir so leid.
quelle
GolfSharp , (nicht konkurrierend) 82 Bytes
quelle
Groovy, 90 Bytes
Füllen Sie die Eingabe durch die Decke der Größe, die in
n
Stücke unterteilt ist.Holen Sie sich die aufgefüllte Zeichenfolge als Liste von Zeichen.
In n Stücke zusammenfassen und transponieren.
Ergebnisse in:
quelle
Python 3, 48 Bytes
quelle
Powershell, 57 Bytes
Testskript:
Ausgabe:
quelle
SINCLAIR ZX81 / TIMEX TS-1000/1500 BASIC, 134 tokenisierte BASIC-Bytes
Der erste Parameter
A$
ist der Zeichenfolgenwert, den Sie verschlüsseln möchten, und der zweiteA
ist die Anzahl der Spalten, in die Sie verschlüsseln möchten. Die VariableC
wird verwendet, um nachA
Zeichen eine neue Zeile einzufügen.In den Zeilen 4 bis einschließlich 6 werden die Spaltennummern oben im Bildschirmbereich ausgedruckt.
Zeile 7 fügt eine neue Zeile hinzu (
"\r\n"
äquivalent).Die Zeilen 8 bis 13 drucken dann jedes Zeichen von aus
A$
.Für dieses Programm ist keine RAM-Erweiterung erforderlich.
quelle
K (oK) , 27 Bytes
Lösung:
Probieren Sie es online aus!
Erläuterung:
quelle
05AB1E (Legacy) , 3 Bytes
Die Python-Legacy-Version wird anstelle des Elixir-Umschreibens verwendet, da die neue Version bei der Verwendung nicht implizit Zeichenfolgen in Zeichen konvertiert
zip
, wie dies bei der alten Version der Fall war .Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle