Biorąc pod uwagę ciąg nieposortowanych znaków alfanumerycznych, np
ABC321STPpJqZZr0
wypisuje "," oddzieloną listę zakresów znaków, posortowaną według wartości ASCII, ignorując wielkość liter i usuwając duplikaty ( tj. wypisując tylko wielkie i cyfry), np.
0-3, A-C, J, P-T, Z
Zasady
- Długość twojego programu jest jak zwykle wynikiem podstawowym.
- Musisz zainicjować (zakodować) powyższy przykład w swoim programie, ale można lekceważyć tego przykładu długość od długości programu, na przykład na
char* s="ABC321STPpJqZZr0";
można lekceważyć 16 znaków, pozostałe 11 znaków licząc w kierunku swojej długości programu.
Bonus (+50 nagród)
- Ponieważ był to prawdziwy problem, z którym borykał się dziś mój współpracownik, który musi być napisany w Tcl 8.0.5 (starożytna wersja, pozbawiona wielu najnowszych wbudowanych Tcl), przyznam 50 punktów temu, kto napisze najkrótszą Tcl 8.0 .5 rozwiązanie, jeśli są co najmniej 2 ważne zgłoszenia w Tcl 8.0.5.
", "
aby uwzględnić spację, ale możemy zostawić Twoją edycję i pozwolić, aby ten komentarz służył jako wskazówka.Odpowiedzi:
Rubin, 87-16 = 71
EDYCJA: Musiałem dodać kilka znaków, aby zakresy dwóch znaków były wyświetlane poprawnie. Również
?[
zamiast?Z
naprawić błąd, którego zakresy kończą się na Z.Możesz zobaczyć bieg Ideone tutaj .
źródło
gsub(/[]/i)
jest krótszy niżtr(''.upcase)
o 2 znaki. Ponadto,scan(/.+/)
->split
zapisuje 5, a$><<
zamiastputs
innego.Julia, 131
Nieobsługiwany przez Ideone.com i prawdopodobnie zostanie i tak zmiażdżony.
źródło
C #, 221 bajtów
źródło
C 193
źródło
GolfScript
575452Wypróbuj tutaj .
Kod najpierw wszystko zaczyna od wielkich liter:
Następnie pobiera unikalne znaki i zapisuje je w zmiennej:
Następnie otrzymujemy znaki, których bezpośrednich poprzedników nie ma w ciągu (tak, że są początkową częścią zakresu):
Podobnie otrzymujemy końce zakresów
x..{)}%&-
.Teraz faktycznie tworzą zakresy, łącząc listy, sortując i dzieląc na grupy po 2:
Reszta to po prostu formatowanie, używając
*
jako łączenia ciągów.źródło
.95>{32-}{}if
->.95>32*-
zapisuje 5 znaków.Q, 94
źródło
Python 2.x, 304-16 = 288
Z pewnością można to jeszcze pograć w golfa, wszystkie komentarze mile widziane!
źródło
Rebol (218 - 16 = 202)
Wersja niezminimalizowana:
źródło
q [116 znaków]
Stosowanie
WynikIstnieje możliwość zapisywania znaków, wypróbuję inną metodę i opublikuję ją.
źródło
Tcl 8.0.5, 344 (360 bajtów)
Tcl 8.0.5, 340 (356 bajtów)
Majstrowanie przy
rename
poleceniu przyniosło zabawne sztuczki! Udokumentowałem je w innym wątku .Tcl 8.0.5, 332 (348 bajtów) [Niestabilny - zależy od $ PATH]
Kredyt dla @JohannesKuhn dla interaktywnego podstęp .
źródło
while
przeztime
konstruktów. codegolf.stackexchange.com/a/126236/29325