Biorąc pod uwagę ciąg x
, wypisz znaki x
posortowane zgodnie z kolejnością pojawiania się w kodzie źródłowym.
Przykłady
Source: ThisIs A Test
Input: Is it a Test?
Output: TissI etta?
Source: Harry - yer a wizard.
Input: I'm a what?
Output: aa wh'?Imt
Source: Mr. H. Potter, The Floor, Hut-on-the-Rock, The Sea
Input:
Output:
Zasady
- Obowiązują standardowe luki i zasady we / wy
- Dane wejściowe i wyjściowe mogą być łańcuchem, listą znaków lub listą bajtów.
- Jeśli znak jest używany wiele razy w źródle, użyj pierwszego wystąpienia.
- Jeśli jeden lub więcej znaków nie pojawia się w źródle, powinny znajdować się na końcu; ich kolejność nie ma znaczenia, ani nie musi być spójna.
- Źródło musi być niepuste
- Nowe linie są traktowane tak samo jak inne znaki.
- Kolejność wykonywania kodu nie ma znaczenia; tylko surowy ciąg.
- Dane wejściowe mają takie samo kodowanie jak kod.
- Dane wejściowe są sortowane według znaków, a nie według bajtów.
- W sortowaniu rozróżniana jest wielkość liter
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach dla każdego języka!
x
zakodowane w UTF-8 lub UTF-16, jeśli nasze rozwiązanie w ogóle nie jest zakodowane w Unicode, a znaki Unicode wx
reprezentują znaki na stronie kodowej rozwiązania? Na przykład niektóre języki gry w golfa używają niestandardowych stron kodowych w celu zmniejszenia liczby bajtów, ale nadal są czytelne gołym okiem.Odpowiedzi:
Python 3.8 (wersja wstępna) ,
1021009685797668615960 bajtówWypróbuj online!
-2 bajty za pomocą tego
-4 bajty, wiedząc, że
<0
====-1
i usuwając niepotrzebne+1
-11 bajtów dzięki Neilowi
-6 bajtów dzięki dzaima
-3 bajty dzięki wędce
-8 bajtów dzięki ujemnej siódemce wskazującej, że program może wypisać listę znaków
-7 bajtów ze względu na przejście Embodiment of Ignorance do Python 3.8 i użycie
:=
-2 bajty z powodu przełączenia przez Jo King nazwy zmiennej s dla c, abyśmy mogli pominąć
;c
+1 bajtów, ponieważ siedem ujemne wskazało, że nie filtruje
;
poprawnieźródło
('s=%r;exec(s)'%s+x).find(x)
?('s=%r;exec(s)'%s).find(x)
go kodem sprawi, że będzie ono ważne?input()
i zapisać 4 bajty;
nie jest poprawnie posortowane w bieżącej wersjiAPL (Dyalog Unicode) , 14 bajtów SBCS
Anonimowa ukryta funkcja prefiksu.
⊂
dołącz argument (aby działać na nim jako całości)…
⊃¨
Z tego wybierz po jednym znaku dla każdego z następujących wskaźników:∘⍋
indeksy, które posortowałyby argument w kolejności podanej przez następujący ciąg (wszyscy nie-członkowie idą w kolejności pojawienia się na końcu):'''∘⍋⊃¨⊂'
postacie'∘⍋⊃¨⊂
Wypróbuj online!
źródło
C # (interaktywny kompilator Visual C #) , 48 bajtów
Wypróbuj online!
źródło
JavaScript (Node.js) ,
60 5856 bajtów-2 bajty od Jo King
Wypróbuj online!
źródło
f=...
. Jeśli tak jest, prosimy o uwzględnienie tego w zgłoszeniu i liczbie bajtów.Perl 6 , 56 bajtów
Wypróbuj online!
źródło
Rubinowy , 57 bajtów
Wypróbuj online!
Dość proste, zakładając, że nie przegapiłem sztuczki golfowej. Pobierz listę znaków i posortuj według ich indeksu w ciągu zawierającym wszystkie znaki uniq w kodzie w kolejności ich wyglądu. Często ich pierwszy występ pojawia się w tym samym szeregu, ale to nie zmienia kolejności.
źródło
05AB1E ,
242221 bajtówWypróbuj online!
Wyjaśnienie:
Po raz pierwszy próbuję rzeczy w 05AB1E, więc prawdopodobnie wiele do ocalenia
źródło
}krR«'«
. UWAGA:'
jest pojedynczym znakiem, więc po prostu'"
wystarczy (w przeciwieństwie do C #, gdzie wymaga dodatkowego końcowego'
). Obecnie twój kod najpierw wypycha ciągΣ
, potem ciąg"
, potem ciąg«
, potem ciąg'«Rrk}
, a następnie wykonuje dołączanie, odwracanie, odwracanie stosu, indeks. Jednak sprytne użycie rewersu łańcucha i na końcu! Zobaczę, czy mogę znaleźć odpowiedź na twoją odpowiedź, a potem ją usunę.}krR«'"Σ
. PS:=
Czasami używam (drukuję bez otwierania) do celów debugowania. Możesz również dodać--debug-stack
jako argument, ale to trochę dziwne w nowej wersji imho 05AB1E.Galaretka ,
1614 bajtów (strona kodu galaretki), 25 bajtów (UTF8)Wypróbuj online!
Pełny program, który pobiera pojedynczy argument, ciąg znaków do posortowania.
Dzięki @JonathanAllan za wskazanie błędu!
Zgodnie z @EriktheOutgolfer, chociaż kod można wprowadzić za pomocą strony kodowej Jelly, posortowane znaki są odpowiednikami UTF-8, a nie bajtów źródła. Jako taki, uwzględniłem także wynik w bajtach UTF-8. Uwaga: to samo prawdopodobnie dotyczy wszystkich języków z niestandardowymi stronami kodowymi.
Wyjaśnienie
Powyższy ciąg jest oceniany jako:
Ṿv`
jest tutaj opcją skuteczną, ale istnieje, aby zapewnić reprezentację wszystkich postaci.źródło
Galaretka , 14 bajtów
Pełny program akceptujący (sformatowany w języku Python) ciąg znaków (znaków strony kodowej Jelly ), który wypisuje dane wyjściowe.
(jako monadyczny link daje listę list znaków)
Wypróbuj online!
W jaki sposób?
źródło
f
iḟ
pracuję na znakach Unicode, ponieważ takie znaki faktycznie mają w sobie łańcuch. Na przykład”ĿO
zwraca,319
jeśli został przetestowany lokalnie zakodowany w JELLY, więc widziĿ
C7, a nie C7.f
iḟ
pracuję na Unicode, ale czy to jest problem? Podaję ograniczony zestaw znaków Unicode, które pojawiają się na stronie kodowej Jelly (to znaczy bajty zakodowane przy użyciu tego kodowania, spełniając „Dane wejściowe są takie same jak kod”); filtruj je poprawnie (ponieważ te wprowadzone bajty zostały zakodowane jako Unicode), a następnie wyślij je poprawnie. Następnie liczę bajty kodu (spełniając „Dane wejściowe są sortowane według znaków, a nie według bajtów” i „wygrywa najkrótsza odpowiedź w bajtach dla każdego języka”).Węgiel drzewny , 37 bajtów
Wypróbuj online!Wyjaśnienie:
Istnieją dwa sposoby cytowania znaków w Charcoal;
´
cytuje dowolny pojedynczy znak, podczas gdy”y
...”
cytuje dowolny znak oprócz,”
a także liczy się jako osobny ciąg. Okazuje się, że narzut związany z koniecznością radzenia sobie z”
tym oznacza, że nie kończy się to na golfie.Z kolei zapętlaj znaki, wypisując z nich wszystkie pasujące znaki. To posortuje dane wejściowe.
Wypisuj dowolne niedopasowane znaki na wejściu.
źródło
J , 14 bajtów
Anonimowa ukryta funkcja prefiksu.
Wypróbuj online!
]
argument…
i:
Ostatnie wystąpienie (osoby niebędące członkami uzyskują indeks poza koniec ciągu wyszukiwania) każdego znaku w:']/:''i'
postacie]/:'i
…
/:
Użyj tego do sortowania:]
argumentźródło
Java 10,
129100 bajtów-29 bajtów przez przeniesienie odpowiedzi C #
+c
z @EmbodimentOfIgnorance .Wypróbuj online.
Wyjaśnienie:
UWAGA: Zazwyczaj jest to tańsze używać
s.sort((a,b)->Long.compare(a,b))
zamiasts.sort(java.util.Comparator.comparing(c->c)
, ale w tym przypadku byłoby to 11 bajtów dłużej:Wypróbuj online.
źródło
05AB1E ,
312619 bajtów-7 bajtów, czerpiąc inspirację z podejścia @ EmbodimentOfIgnorance w jego odpowiedzi w języku C # dodania bieżącego znaku przed indeksowaniem.
Wypróbuj online lub wypróbuj z dodaną linią debugowania, aby zobaczyć ciągi, które są indeksowane .
Wyjaśnienie:
źródło
PowerShell , 68 bajtów
Wypróbuj online!
źródło
sort
insteadsort-object
works too. 2) the variable$b
defined out of scope your code. theStandard loopholes
requires a complete answer. For Powershell it means: any person can wirte the code to a file as a powershell script and run it in a terminal. Your code does not work from script file. Sorry.sort
alias does not work in pwsh on Ubuntu 18.04 2) yes, this is my fault, but I corrected myself, and as a result, the code became longer, of course :)code became longer
- oto wyzwanie :)$p
jest dołączany na końcu łańcucha z kodem źródłowym i otrzymuje indeks równy$src.Length
, ale ponieważ „ich kolejność nie ma znaczenia i nie powinna być spójna”, nie ma znaczenia. W tej odpowiedzi cały ciąg wejściowy jest dołączany na końcu ciągu wraz z kodem źródłowym.Python 2, 62 bytes
Same concept as my C# answer.
Try it online!
źródło
\\\'
should be\'\\
. Nice approach though! Saved 23 bytes in my Java answer.Japt, 18 bytes
Try it
źródło
Jelly, 26 bytes (UTF-8*)
Try it online!
Takes input as a Python-formatted string in the 1st command-line argument.
Unique characters:
*Note: I discovered that this doesn't work when encoded in JELLY, since it sorts the UTF-8 characters instead of its own bytes.
źródło