Die Herausforderung
Bei dieser Herausforderung müssen Sie je nach Reihenfolge der Eingabe zwei verschiedene (aber verwandte) Aufgaben ausführen.
Ihr Programm erhält eine Zeichenfolge s
und eine Ganzzahl n
als Eingabe und wird
s
in Stücke der Länge teilen,n
wenns
zuerst kommt. Das letzte Element wird bei Bedarf kürzer.s
inn
Stücke gleicher Länge teilen, wennn
zuerst kommt. Wennlen(s)
nicht, wird ein Vielfachesn
der erstenlen(s) mod n
Elemente länger sein.
Sie dürfen nur diese 2 Eingänge nehmen. s
wird niemals nur Ziffern enthalten.
Anmerkungen
- Sie können die umgekehrte Zuordnung verwenden. Beachten Sie dies in Ihrer Antwort, wenn Sie dies tun.
s
enthält nur druckbare ASCII-Zeichen (keine Zeilenumbrüche).- Sie dürfen keine integrierten Funktionen verwenden, die diese beiden Aufgaben direkt lösen. Alle anderen Einbauten sind erlaubt.
- Sie müssen beide Argumente aus derselben Quelle entnehmen.
- Sie können die Argumente in einer geordneten Liste oder einem anderen Format verwenden, das ihre Reihenfolge eindeutig angibt, solange sie eindeutig ist.
- Sie können die Eingabe als eine Zeichenfolge / einen Stream verwenden und ein Zeichen verwenden, das keine gültige Eingabe ist (z. B. ein Nullbyte), um sie zu trennen.
n
wird immer gleich oder kleiner als die Länge vons
und größer als Null sein.- Sie können die resultierende Liste in einem beliebigen Format ausgeben, sofern die einzelnen Teile und ihre Reihenfolge eindeutig angegeben sind.
Beispiel
Eingabe: programming, 3
Das letzte Element enthält nur 2 Zeichen, da 11 nicht durch 3 teilbar ist.
Ausgabe: ["pro", "gra", "mmi", "ng"]
Eingabe: 3, programming
11 ist kein Vielfaches von 3, daher sind die ersten 2 Elemente eins länger:
Ausgabe: ["prog", "ramm", "ing"]
Regeln
- Funktion oder volles Programm erlaubt.
- Standardregeln für die Eingabe / Ausgabe.
- Es gelten Standardlücken .
- Dies ist Code-Golf , also gewinnt die niedrigste Byte-Anzahl. Tiebreaker ist eine frühere Einreichung.
Testfälle
Die Testfälle wurden mit diesem Pyth-Programm generiert (verwendet integrierte Funktionen, daher keine gültige Antwort). Vielen Dank an @FryAmTheEggman für die Bereitstellung der Basisversion davon!
3, helloworld -> ['Hölle', 'owo', 'rld'] helloworld, 3 -> ['hel', 'low', 'orl', 'd'] 1, Programmierung -> ['Programmierung'] Programmierung, 1 -> ['p', 'r', 'o', 'g', 'r', 'a', 'm', 'm', 'i', 'n', 'g'] 8, Programmierung -> ['pr', 'og', 'ra', 'm', 'm', 'i', 'n', 'g'] Programmierung, 8 -> ['programmieren', 'ing'] 9, Code Golf -> ['c', 'o', 'd', 'e', '', 'g', 'o', 'l', 'f'] Code Golf, 9 -> ['Code Golf'] 4, 133tspeak -> ['133', 'ts', 'pe', 'ak'] 133tspeak, 4 -> ['133t', 'spea', 'k']
Viel Spaß beim Codieren!
Antworten:
MATL,
462621272942 BytesProbieren Sie es online aus! (Leicht aktualisiert, um mit der neuesten Version der Sprache zu arbeiten)
Erläuterung
quelle
e
ein verbotenes eingebautes nicht?XUZN?...
durchU?...
und tauschen die beidenif
Zweige. Auch brauchen Sie nicht die3$
e
löst das Problem nicht direkt, daher halte ich es nicht für verboten, nein.JavaScript (ES6), 132 Byte
Dies ist wahrscheinlich hoffnungslos überarbeitet.
quelle
JavaScript (Firefox),
8887 ByteNennen Sie es wie
(...)("programming")(3)
Firefox 30+.quelle
Ruby, 119 Bytes
Und ich nehme den ersten Platz mit 2 Bytes ein ...
quelle
x.scan(/.{,#{y}})
funktioniert im ersten Fall genauso gut zum Teilen der Zeichenfolgen. Oder zählt das als eingebaut?AWK,
121130128122 BytesDas einzige Problem ist, wenn der erste Eintrag eine Zeichenfolge ist, die mit einem numerischen Wert beginnt. Dies würde dazu führen
AWK
, dass die Zeichenfolge als diese Nummer und der zweite Eintrag als Zeichenfolge angezeigt wird.OK ... das numerische Problem wurde behoben, aber es wurden 9 Bytes hinzugefügt :(.
Ein bisschen überarbeitet, um ein paar Bytes zu sparen.
Fast wieder auf die ursprüngliche Länge. :) :)
quelle
Haskell, 131 Bytes
Anwendungsbeispiel:
So funktioniert es: Die Hauptarbeit erledigt die Hilfsfunktion,
q
die ein Zahlenpaar(d,m)
und eine Zeichenfolge benötigts
. Zuerst wird eine Liste vonm
Zeiten erstellt,d+1
gefolgt von unendlich vielend
(z . B.(1,3)
->[2,2,2,1,1,1,1,1,...]
). Anschließend werden diesplitPlaces
ins
der Liste angegebenen Längenabschnitte aufgeteilt.splitPlaces
stoppt, wenns
keine Elemente mehr vorhanden sind, sodass eine unendliche Liste in Ordnung ist.Die Hauptfunktion
#
prüft, welcher Parameter die Nummern
/ Zeichenfolge iststr
und ruftq
entweder(div (length str) n, mod (length str) n)
oder(n, 0)
plus aufstr
.quelle
C # (LINQPAD) - 335 Bytes
Der Eingabe-Leseteil nahm etwas Platz ein. Gewinner der längsten Antwort.
Verwendungszweck 1:
Verwendung Nr. 2:
quelle
Pyth, 181 Bytes
Stellen wir uns vor, der längste Code in Bytes gewinnt \ o /
Probieren Sie es hier aus! (Der Online-Interpreter scheint einen Fehler zu haben, er zeigt die Eingabe an, während dies nicht der Fall sein sollte.)
Hier ist die Ausgabe vom Terminal:
Im Ernst, ich bin offen für neue Ansätze. Ich bin neu in Python, daher habe ich wahrscheinlich ein paar Abkürzungen verpasst.
Ich meine, ich denke, meine Antwort ist verzweifelt, da sie länger ist als die Javascript-Antwort ...
quelle
testcases
. Die Testfälle werden von Pyth generiert. Die Lösung ist.xcsJKcJsK
, woJ
undK
sind die beiden Argumente.PHP, 114 Bytes
(Ersetzen
+@$p
mitis_numeric($p)
zu beheben.)(
~
Für druckbares ASCII einfügen,a&
für jedes ASCII vor$t;
dem Fixieren.)-nr
oder versuchen Sie es online .quelle
PowerShell ,
122118 ByteProbieren Sie es online aus!
Weniger Golf:
quelle