Napisz program, który pobiera ciąg znaków i wypisuje wszystkie znaki w kolejności alfabetycznej. Spacje i symbole można zignorować lub usunąć, ale wielkie i małe litery muszą pozostać takie same.
Przykładowe dane wejściowe:
Johnny walked the dog to the park.
Próbka wyjściowa
aaddeeeghhhJklnnoooprtttwy
Zasady:
• Dowolny język
• Zwycięża najkrótszy kod.
Spaces and symbols can be ignored or deleted
oznacza, że należy to zignorować; czy jest wyjście takie jak, .aaddeeeff
dozwolone?k
na wyjściu nie powinny występować 2 s?Odpowiedzi:
MathGolf , 2 bajty
Wypróbuj online!
Przykładowe dane wyjściowe
Usuwanie znaków niealfabetycznych
Aby usunąć wszystkie znaki niealfabetyczne, to rozwiązanie działa:
Jest taki sam jak w powyższym kodzie, po czym następuje filtrowanie, w którym każdy znak jest najpierw podwajany, a następnie porównywany z wielką literą. Na przykład ciąg
"a"
jest konwertowany na,"aa"
a następnie pisany wielką literą"Aa"
, co nie jest równe"aa"
. W ten sam sposób ciąg"B"
jest konwertowany na"BB"
i pisany wielką literą"Bb"
, co nie jest równe"BB"
. Po"."
konwersji jest jednak konwertowany na".."
i nie ulega zmianie, więc zostanie odfiltrowany.Wyjaśnienie
Naprawdę potrzebuję więcej obsługi ciągów znaków w MathGolf ... W tej chwili nie ma nawet operatora, który mógłby konwertować małe / wielkie litery. Jedyną rzeczą, której mogłem użyć, był operator wielkich liter, który działa jak operator wielkich liter dla ciągów o długości 1. To rozwiązanie sortuje również znaki niealfabetyczne, ale można je zignorować. Znaki alfabetyczne zachowują wielkość liter i są wyprowadzane we właściwej kolejności.
źródło
GolfScript, 24/6 znaków
Przykład:
Jeśli dane wejściowe są ograniczone do ascii drukowalnych, kod można skrócić o trzy znaki przy użyciu
{95&.64>\91<&},
jako filtru.Można przetestować tutaj .
Wersja, którą można zignorować, jest jeszcze krótsza (6 znaków):
i daje wydajność
źródło
{}$
{}$
byłoby równoważne z$
.Narzędzia GNU core - 25 znaków (29 upuszczanych symboli)
Przykład (z GNU bash 3):
Z pytania:
Zdecydowałem się je zostawić! Aby zachować tylko znaki alfabetu, wymienić
fold -1
zgrep -o \\w
na +4 znaków.Dzięki Firefly polecając
grep -o
nadsed
i wumpusa dlafold -1
. ;-)źródło
-f
(złożyć),sort
aby zignorować wielkość liter.C, 121
Jest to dość długie w porównaniu z innymi wpisami, ale nie opiera się na żadnych wbudowanych funkcjach sortowania ani ToLower:
Bardziej czytelna wersja:
Jest to implementacja sortowania wstawiania z porównaniem elementów bez rozróżniania wielkości liter (przy użyciu
|32
operacji bitowej). Wynika to z faktu, że w kodowaniu ASCII wielkie i małe litery różnią się tylko 2 5 bitami.źródło
Rubin - 33 znaki
źródło
*""
zamiast.join
.p
, ale to jest wątpliwe, więc po prostu użyjputs
. Ponadto$<
jest skrótem do ARGF$><<
zamiast,puts
ponieważ można usunąć spację oddzielającą.PowerShell: 39
Wynik
C #: 100
Wynik
źródło
ToCharArray
;String
implementujeIEnumerable<char>
sal
, nie sądzę, że możesz tego użyć. Ale możesz pozbyć się przypisania zmiennej za pomocą"$([string[]][char[]](Read-Host)|sort)"
.Perl6: 26 znaków
Najpierw sortuje wyjściowe wielkie litery, a następnie małe litery, usuwa symbole / białe znaki
Jeśli białe znaki / symbole na wyjściu mogą być również ignorowane, to jest to tylko 21 znaków.
Sortuje to bez rozróżniania wielkości liter, zachowuje symbole (26 znaków)
źródło
APL 16
źródło
Perl 34
Teraz pobiera dane wejściowe z
STDIN
.Perl 18
Jeżeli wyniki, w tym wielkie litery i dołączone symbole, są dopuszczalne:
źródło
Python 3:45
źródło
Haskell, 88
(38 bez importu ze standardowej biblioteki lib)
źródło
k (
109)Czyta ze standardowego
Przykład
źródło
C #: 83
Aktualizacja: 65
Plik wykonywalny w LinQPad
źródło
J, 12 znaków
Ignoruje wszelkie znaki inne niż alfa.
źródło
f=.
czy chcesz, żebym dodał1!:1[1
?1!:1[1
iecho
proszęecho
?JavaScript - 74
Niestety, ze względu na sposób sortowania znaków przez JS, nie możemy użyć standardowej funkcji sortowania:
W rzeczywistości można to skrócić do:
źródło
F # (
6856)Uczę się F #, więc jestem pewien, że może być krótszy:
Wynik:
źródło
PHP, 50 bajtów
nie usuwa liter innych niż, pobiera dane wejściowe ze STDIN; biegać z
-R
.źródło
R, 48 znaków
Przykładowe użycie:
źródło
q / k4 (3? 5? 8?)
jeśli wystarczy wprowadzić kod i dane wejściowe bezpośrednio do REPL, to po prostu
asc
:`s#
jest nieco notacji q, który wskazuje, że ciąg jest posortowanych (może być binarny poszukiwanej, etc.). jeśli musi odejść, kosztuje to dwie postacie, co daje pięć:jeśli chcesz mieć to na standardowym wejściu, czas przejść na k4 (a pozbywamy się
`s#
za darmo), i jest to rozwiązanie ośmioznakowe:ten, btw, będzie działał jako plik kodu dokładnie tak, jak jest (nadal osiem znaków, ponieważ q jest w porządku, nie mając końcowej nowej linii w pliku kodu). normalnie wystąpiłyby problemy z powitalnym sztandarem i pozostawieniem otwartego REPL, ale jeśli przekażesz dane jako ciąg znaków, wszystko zniknie:
nie jestem pewien, skąd pochodzi ta nowa linia w wynikach ....
źródło
Galaretka, 3 bajty
Moje pierwsze rozwiązanie Jelly na tej stronie! Dzięki @LeakyNun i @ErikTheOutgolfer za nauczenie mnie, jak używać Jelly i @Dennis do robienia tego! :RE
Wyjaśnienie
Alternatywnie
ŒuÞ
robi dokładnie to samo, z wyjątkiem konwersji na wielkie litery.źródło
Java 10, 72 bajty (jako funkcja lambda)
Wypróbuj online.
Ale ponieważ jest to stare wyzwanie z pełnym programem:
Java 10, 126 bajtów (jako pełny program)
Wypróbuj online.
Wyjaśnienie:
źródło
05AB1E ,
32 bajtyIgnoruje znaki nieliterowe, więc niektóre są wiodące, a niektóre ciągnące.
Wypróbuj online .
Wersja usuwająca znaki inne niż litery to 3 bajty :
Wypróbuj online .
Wyjaśnienie:
źródło
PowerShell, 36 bajtów
Skrypt testowy:
Wynik:
źródło
Julia 1.0 , 34 bajty
Wypróbuj online!
źródło