Wyzwanie polega na napisaniu programu, funkcji itp., Które obliczą, czy przekazany ciąg znaków jest „w porządku”. Oznacza to, że znaki ciągu mają kody znaków w kolejności od najmniejszej do największej. Najmniejszy kod znakowy musi być pierwszy. Rozumiem przez to najniższe punkty kodowe Unicode do najwyższych. Nie ma znaczenia, jakiej strony kodowej używasz języka.
Musisz zwrócić jedną wartość, jeśli dane wejściowe są „w porządku”, a drugą, jeśli tak nie jest. Wartości muszą być różne, ale nie ma innych ograniczeń wartości wyjściowych. Na przykład możesz wydrukować / zwrócić / wydrukować true
dla !1AQaq¡±
(w kolejności) i false
dla aq!QA
. Dwie odrębne wartości nie muszą być prawdą, fałszem ani czymkolwiek podobnym, tylko dwie odrębne wartości. Powtarzane ciągi (np. aa
) Są w porządku.
Musisz tylko wesprzeć do unicode U+007E
( ~
) (ascii 126)
Jednak znaki twojego programu muszą być w porządku. Powodzenia i udanego grania w golfa !
źródło
"aa"
w porządku?Odpowiedzi:
Brachylog , 2 bajty
Wypróbuj online!
Wyjaśnienie
Jako pełny program daje niepowodzenie asercji
false.
, każde udane uruchomienie, które nie narusza żadnych asercjitrue.
źródło
Galaretka , 2 bajty
Wypróbuj online!
Wyjaśnienie
⁼Ṣ
ma również odpowiednią funkcjonalność („porównaj wejście z posortowanym wejściem”), więc wystarczyło uruchomić na sobie oba programy, aby dowiedzieć się, co jest w porządku (z pewnością nie mam punktów kodowych Unicode tej części dziwnego zestawu znaków Jelly zapamiętanego).źródło
⁼Ṣ
zamiast tego. Można zobaczyć kodowej Jelly jest tutaj .⁼Ṣ
robi dokładnie to samo coṢ⁼
.MATL , 5 bajtów
Wysyła,
0
jeśli dane wejściowe są w porządku, w1
przeciwnym razie.Wypróbuj online!
Wyjaśnienie
To oblicza moduł (punkty kodowe) każdego znaku z wejścia z tym samym indeksem w posortowanym wejściu. Dane wejściowe są w porządku wtedy i tylko wtedy, gdy wszystkie wyniki są
0
.Na przykład rozważ łańcuch wejściowy
BCD!
. Sortowanie daje'!BCD
. Tablice punktów kodowych to odpowiednio[66 67 68 33]
i[33 66 67 68]
. Obliczanie modułów daje[0 1 1 33]
, więc dane wejściowe nie są w porządku. Zauważ, że niektóre wyniki mogą być0
nawet, jeśli wartości nie były takie same (tutaj dzieje się to na pierwszej pozycji), ale nie może się to zdarzyć we wszystkich wpisach, chyba że dane wejściowe są w porządku.źródło
05AB1E ,
32 bajtyDzięki Kevinowi za wycięcie 33% mojego kodu źródłowego!
Wypróbuj online!
Wyjaśnienie:
źródło
D{Q
działa również ...D
Można usunąć przez około 1 używając tylko wejście ukryte dwukrotnie.Pyke , 2 bajty
Wypróbuj online!
źródło
2sable , 2 bajty
Wypróbuj online!
Wyjaśnienie
Zwraca 0, jeśli jest to kolejność, w przeciwnym razie 1 .
źródło
Pyth, 2 bajty
False
oznacza posortowane,True
oznacza nieposortowane.Zestaw testowy
Wymyślenie tego było dość nietrywialne. Najbardziej oczywistym rozwiązaniem tego problemu, bez ograniczonego źródła, jest
SI
niezmienne sortowanie. Ale to nie jest posortowane. Potem pomyślałem o tymqS
, który domyślnie używa zmiennej wejściowej dwa razy, sprawdzając, czy jest ona równa posortowanej wartości. Ale jednocześnieq < s
,q > S
więc to też nie działało. Ale<
pojawia się wcześniejS
, a jedynym sposobem, aby posortowana wersja nie mogła być mniejsza niż oryginał, jest posortowanie oryginału, ponieważ posortowana wersja jest leksykograficznie minimalną kombinacją elementów.źródło
CGL (CGL Golfing Language) , 4 bajty (niekonkurujące)
Wyjaśnienie:
Nie konkuruje, ponieważ
:
,S
ic
zostały wdrożone po stworzeniu tego wyzwania.źródło