Bei einer Zeichenfolge aus unsortierten alphanumerischen Zeichen, z
ABC321STPpJqZZr0
Eine durch "," getrennte Liste von Zeichenbereichen ausgeben, sortiert nach ASCII-Wert, Groß- und Kleinschreibung ignorieren und Duplikate entfernen ( dh nur Großbuchstaben und numerische Zeichen ausgeben), z
0-3, A-C, J, P-T, Z
Regeln
- Die Länge Ihres Programms entspricht wie gewohnt Ihrer Grundpunktzahl.
- Sie müssen initialisiert werden (hard) das obige Beispiel in Ihrem Programm, aber Sie können die Länge dieses Beispiels aus dem Programm Länge Rabatt, zB für
char* s="ABC321STPpJqZZr0";
Sie 16 Zeichen diskontieren können, die anderen 11 Zeichen in Richtung Ihrer Programmlänge zu zählen.
Bonus (+50 Kopfgeld)
- Da dies ein echtes Problem war, auf das mein Kollege heute gestoßen ist und das in Tcl 8.0.5 geschrieben werden muss (eine alte Version, in der viele der neuesten Tcl- Integrationen fehlen), werde ich jedem, der die kürzeste Tcl 8.0 schreibt, 50 Punkte geben .5 Lösung, wenn es mindestens 2 gültige Einsendungen in Tcl 8.0.5 gibt.
", "
, um das Leerzeichen einzuschließen , aber wir können Ihre Bearbeitung verlassen und diesen Kommentar als diese Anzeige dienen lassen.Antworten:
Rubin, 87-16 = 71
BEARBEITEN: Es mussten einige Zeichen hinzugefügt werden, damit die Bereiche mit zwei Zeichen korrekt angezeigt werden. Verwenden Sie auch
?[
anstelle von?Z
, um einen Fehler mit Bereichen zu beheben, die auf Z enden.Sie können das Ideone hier sehen .
quelle
gsub(/[]/i)
kürzer alstr(''.upcase)
2 Zeichen ist. Außerdem spartscan(/.+/)
->split
5 und$><<
anstelle einesputs
anderen.Julia, 131
Wird von Ideone.com nicht unterstützt und wird wahrscheinlich sowieso zerstört.
quelle
221 Bytes
quelle
C 193
quelle
GolfScript
575452Probieren Sie es hier aus .
Der Code setzt zuerst alles in Großbuchstaben:
Ruft dann eindeutige Zeichen ab und speichert sie in einer Variablen:
Dann erhalten wir die Zeichen, deren direkte Vorgänger nicht in der Zeichenfolge enthalten sind (so dass sie den Anfang eines Bereichs darstellen):
Ebenso bekommen wir die Bereichsenden mit
x..{)}%&-
.Bilden Sie nun die Bereiche, indem Sie die Listen verketten, sortieren und in Zweiergruppen aufteilen:
Der Rest ist nur die Formatierung mit
*
als String-Join.quelle
.95>{32-}{}if
->.95>32*-
speichert 5 Zeichen.Q, 94
quelle
Python 2.x, 304-16 = 288
Dies kann sicherlich weiter golfen werden, alle Kommentare sind willkommen!
quelle
Rebol (218 - 16 = 202)
Nicht verkleinerte Version:
quelle
q [116 Zeichen]
Verwendung
AusgabeEs gibt einen Bereich zum Speichern von Zeichen, ich werde eine andere Methode ausprobieren und es veröffentlichen.
quelle
Tcl 8.0.5, 344 (360 Bytes)
Tcl 8.0.5, 340 (356 Bytes)
Das Basteln mit dem
rename
Befehl brachte einige unterhaltsame Tricks! Ich habe sie in einem anderen Thread dokumentiert .Tcl 8.0.5, 332 (348 Byte) [Instabil - hängt von $ PATH ab]
Dank an @JohannesKuhn für den interaktiven Trick .
quelle
while
von Bytes durchtime
Konstrukte sparen . codegolf.stackexchange.com/a/126236/29325