Ihre Aufgabe ist es, ein Programm zu schreiben, das die Zeichenkette anhand einer Zahl und einer Zeichenkette in Stücke dieser Größe aufteilt und sie umkehrt.
Regeln
Ihr Programm erhält eine positive Ganzzahl n
sowie eine Zeichenfolge s
mit mindestens einer Länge, die nur aus druckbarem ASCII (ohne Leerzeichen) besteht. Die Zeichenfolge sollte dann in Abschnitte mit einer Länge aufgeteilt werden n
, wenn die Länge der Zeichenfolge nicht durch n
Reste am Ende teilbar ist, und als eigener Abschnitt betrachtet werden soll. Kehren Sie dann die Reihenfolge der Stücke um und setzen Sie sie wieder zusammen.
Testfälle
n s Output
2 abcdefgh ghefcdab
3 foobarbaz bazbarfoo
3 abcdefgh ghdefabc
2 a a
1 abcdefgh hgfedcba
2 aaaaaa aaaaaa
2 baaaab abaaba
50 abcdefgh abcdefgh
6 abcdefghi ghiabcdef
Dies ist Codegolf , daher sollten Sie so wenig Bytes wie möglich anstreben.
Antworten:
Gelee , 2 Bytes
Ein vollständiges Programm, das das Ergebnis druckt.
Probieren Sie es online!
Wie?
quelle
Python 3 , 35 Bytes
Probieren Sie es online!
quelle
and
Keyword hier? @ Tennis05AB1E ,
5 43 Bytes-1 dank Dennis
-1 dank carusocomputing
Probieren Sie es online!
quelle
¹
wird nicht benötigt.JavaScript (ES6), 37 Byte
Nimmt die Eingabe durch Curry vor: Nummer zuerst, dann Zeichenfolge, wie
f(2)("abcdefgh")
.Code-Snippet anzeigen
quelle
Perl 6 ,
2820 BytesVersuch es
Versuch es
Erweitert:
quelle
Bash + Coreutils, 22
Probieren Sie es online aus .
quelle
Haskell , 32 Bytes
Probieren Sie es online!
quelle
PHP, 53 Bytes
quelle
Röda , 36 Bytes
Probieren Sie es online!
Es ist eine Funktion, die ein Argument akzeptiert. Die Zeichen der Zeichenfolge müssen im Stream enthalten sein.
try
wird verwendet, um Fehler zu verwerfen, falls diehead
Funktion keinen-1
Werte lesen kann .Erläuterung:
Nicht so verschleiert wie sonst. Ich finde es ziemlich schön. :)
quelle
[[try head n]]
statt[[_]..[try head n-1]]
?_
der Ausdruck in einer Schleife ausgeführt wird.[[try head n]]
würde n Werte einmal annehmen , aber es[[_]..[try head n-1]]
dauert n Werte, solange noch Werte übrig sind.CJam , 5 Bytes
Die Eingabe ist eine Zahl und eine Zeichenfolge in doppelten Anführungszeichen, die durch Leerzeichen getrennt sind.
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
quelle
Batch, 74 Bytes
Es ist eher ärgerlich, dass dies eher rekursiv als rekursiv endet.
quelle
V ,
13-10BytesProbieren Sie es online!
In Aktion:
verwandelt sich in
was wird
bevor alle Zeilenumbrüche entfernt werden
quelle
Brainfuck , 78 Bytes
Das erste Byte der Eingabe ist die Blockgröße, angegeben durch den Bytewert. Die restlichen Bytes werden als Zeichenfolge betrachtet.
Probieren Sie es online!
Erweitert und kommentiert
quelle
PowerShell,
5649 Byte-7 Bytes dank mazzy
Probieren Sie es online!
quelle
.ps1
und versuchen Sie, dieses Skript anstelle Ihres Codes aufzurufen. Wenn es funktioniert, war der Test erfolgreich.Mathematica, 46 Bytes
Anonyme Funktion. Nimmt eine Zahl und eine Zeichenfolge als Eingabe und gibt eine Zeichenfolge als Ausgabe zurück. Hier gibt es nicht viel zu sehen.
quelle
Javascript -
544746 BytesNeu gemacht:
Benutzt als
Vielen Dank an @ETHproductions für einige RegEx-Verbesserungen. Vielen Dank an @Shaggy für ein zusätzliches Byte in der Auswertung!
Original:
quelle
eval('/.{1,'+n+'}/g')
s=>n=> ...
eval("/.{1,${n}}/g")
, indem Sie Backticks anstelle von Anführungszeichen verwenden.Pyth, 5 Bytes
Probieren Sie es online aus .
Erläuterung
quelle
Retina , 38 Bytes
1 Byte gespart dank @LeakyNun
(Beachten Sie das Leerzeichen in der zweiten Zeile und das nachfolgende Leerzeichen)
Dieses Programm nimmt die Eingabe in der ersten Zeile als unär und die Eingabe in der zweiten Zeile als unär an.
Probieren Sie es online!
Test Suite! (leicht verändert)
Erläuterung
Der erste Schritt ist das Voranstellen eines Leerzeichens (wird später wichtig).
Jetzt kehren wir um. Hierbei werden die Bilanzkreise von .NET verwendet. Es ist wichtig zu beachten, dass Gruppen hier als Stapel fungieren, sodass jedes Match im Wesentlichen auf den Stapel geschoben wird. Hier erfassen wir jede Ziffer in der unären Zahl in Gruppe 2. Jedes Mal, wenn ein Zeichen in der Zeichenfolge gefunden wird, wird eine Übereinstimmung aus Gruppe 2 gezogen. Dadurch wird sichergestellt, dass die Anzahl der Zeichen die der unären Zahl nicht überschreitet.
Und schließlich entfernen Sie die unäre Nummer und die neue Zeile.
quelle
\d
durch.
ein Byte zu speichern.^
ist ebenfalls überflüssig.\d
mehr. Und danke, dassJava,
147138 BytesString r(String s,int n){String r="";int l=s.length();for(int i=l/n*n;i>=0;i-=n)if(!(i>=l))r+=(i+n)>=l?s.substring(i):s.substring(i,i+n);return r;}
Dank Kevin Cruijssen 9 Bytes gespart!
In erweiterter Form:
Dies ist eigentlich mein erster Versuch, überhaupt Codegolf zu spielen, daher ist jedes Feedback willkommen!
quelle
int l=s.length();for(int i=l/n*n;
die manint l=s.length(),i=l/n*n;for(;
so nurint
einmal haben kann. Undif(!(i>=l))
kann seinif(l<i)
. Undr+=(i+n)>=l?
ohne die Klammer sein:r+=i+n>=l?
. Wenn Sie es noch nicht gesehen haben, kann ich Ihnen empfehlen, die Tipps zum Golfen in Java zu lesen, um einige ziemlich coole Golftipps zu finden. :) Nochmals herzlich willkommen.Perl 5 , 25 Bytes
Verwendet die
-lnM5.010
Fahnen.Probieren Sie es online!
Grüße Grinnz, dass er mir davon erzählt hat
=~ m/.{1,$n}/g
-M5.010
ermöglicht die Verwendung dersay
Funktion, die für unsere Zwecke mit einem kürzeren Namen gedruckt wird.-n
Fügt die erste Eingabezeile in die Zeile ein$_
und-l
schneidet die nachfolgende neue Zeile ab.Wir erhalten dann die zweite Eingabezeile mit
<>
und wenden sie auf den regulären Ausdruck an.{1,$_}
: ein beliebiges Zeichen, das zwischen 1 und $ _ (der ersten Eingabe) liegt. Da dies standardmäßig gierig ist, wird versucht, immer mit $ _ -Zeichen übereinzustimmen. Die1,
wird für den eventuell am Ende verbleibenden Brocken benötigt.Der
/g
Modifikator gibt uns jede Übereinstimmung dieses regulären Ausdrucks in der Eingabezeichenfolge als Liste an, die dann umgekehrt und gedruckt wird. In Perlsay
wird standardmäßig eine Liste ohne Begrenzer übergeben, um der Liste beizutreten.quelle
Dyalog APL Gesamt ,
1615 BytesProbieren Sie es online!
quelle
f←
,/
→∊
∊∘⌽⊢⊂⍨≢⍤⊢⍴1↑⍨⊣
Python, 62 Bytes
Probieren Sie es online!
quelle
f=lambda n,s:s and f(n,s[n:])+s[:n]
Gestapelt , 9 Bytes
Probieren Sie es online!
#<
Blöcke,rev
Umkehrungen und''#`
Verknüpfungen durch leere Zeichenfolge. Ziemlich einfach.quelle
QBIC , 24 Bytes
Dies nutzt die neue Teilzeichenfolge-Funktion, die ich kürzlich zu QBIC hinzugefügt habe, hervorragend aus:
quelle
Pyth, 4 Bytes
Nimmt Eingabe als
"s",n
: Probieren Sie es aus!quelle
Konvex , 2 Bytes
Probieren Sie es online!
quelle
C 69 Bytes
Das Ergebnis wird in der Standardausgabe ausgedruckt.
quelle
Scala,
57-55BytesDanke Jacob! Probieren Sie es hier aus .
Hinweis: Mit der Symbolform foldLeft ("/:") konnte ich noch ein paar Bytes entfernen.
quelle
mkString
stattdessenreduceLeft
und rasieren Sie 7 Bytes ab:(n:Int,s:String)=>s.grouped(n).toSeq.reverse.mkString("")
Ohm , 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
R ,
6960 BytesProbieren Sie es online!
Vielen Dank an Kirill L. für den Vorschlag, ihn zu entfernen
seq
.quelle
:
und durch einige Manipulationen das Nachstellen beseitigen-1
.