Biorąc pod uwagę ciąg wejściowy S, zwróć, truthy
jeśli wszystkie litery w S są uporządkowane leksykalnie: ich wartości ASCII muszą być w porządku rosnącym lub malejącym. Wróć falsy
w innych przypadkach.
Wejście
- Dane wejściowe będą w tym samym przypadku (wszystkie wielkie lub wszystkie małe litery). Twoje zgłoszenie powinno być w stanie obsłużyć oba.
- Wejście będzie składać się z ASCII w zakresie
[A-Za-z]
tylko - Długość wejściowa będzie wynosić co najmniej 1, maksymalnie tyle, ile obsługuje Twój język.
- Dane wejściowe to ciąg znaków - nie lista znaków, nie tablica punktów kodowych ASCII.
Wynik
- Dane wyjściowe powinny być
true
lubfalse
, lub0/1
innymitrue / false
wyjściami w stylu, które może zapewnić Twój język. - Wszystkie prawdziwe przypadki muszą mieć takie same dane wyjściowe, jak wszystkie fałszywe przypadki. Nie „False to 0, true to 1, 2 lub 3”.
Dodatkowe zasady
- Standardowe luki są zabronione
- Odpowiedź musi być pełnym programem lub funkcją, a nie fragmentem kodu lub wpisem REPL.
- code-golf , wygrywa najkrótsza odpowiedź w bajtach.
Przypadki testowe
Prawda
"ABCDEF"
"ZYX"
"no"
"tree" --> the multiple 'e's don't break the order
"q"
Falsy
"ABCDC"
"yes"
"deed"
Nieważny
"Hello" --> invalid input - mixed case-, does not have to be handled
"" --> invalid input - length 0-, does not have to be handled
"\n
" --> invalid input - newline is not in range [A-Za-z]-, does not have to be handled
truthy
anifalsy
. Oznacza to, że wszelkie wartości, które oceniajątrue
lubfalse
są dozwolone.Odpowiedzi:
05AB1E , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
{¹å
dla 4 usunąłem moją odpowiedź. Nie zauważyłem użycia bifurkatu, moje było zbyt podobne.aba => ['aab', 'baa'] => is in? => 0
|aab => same => 1
Python 2 ,
53444039 bajtówWypróbuj online!
źródło
Haskell , 33 bajty
Wypróbuj online!
Dzięki Ørjan Johansen za 1 bajt z aliasingiem
scanl1
.Haskell jest interesującym językiem dla wyzwań związanych z sortowaniem golfa, ponieważ nie ma wbudowanego sortowania, z wyjątkiem długich
import Data.List
. Zachęca to do znalezienia sposobu na wykonanie zadania ręcznie bez wyraźnego sortowania.Kod używa
scanl1
, który składa operację na liście od lewej do prawej, śledząc wyniki pośrednie. Tak więcscanl1 max
powoduje wyświetlenie listy skumulowanych maksimów listy, tj. Maksimów coraz dłuższych prefiksów. Na przykładscanl1 max [3,1,2,5,4] == [3,3,3,5,5]
.To samo dotyczy
min
sprawdzania, czy lista się zmniejsza. Kod sprawdza dwa przypadki i łączy je z||
.Porównaj z innymi wyrażeniami:
źródło
||
wygrywa, jeśli zdefiniujesz(?)=scanl1
.Perl 6 , 25 bajtów
Jak to działa:
.comb
dzieli dane wejściowe na sekwencję znaków.le
ige
są operatorami porównania ciągów „mniejszy lub równy” i „większy lub równy” .[ ]
wokół operatora infix zmniejsza („fałduje”) listę argumentów z tym operatorem. (Jest wystarczająco inteligentny, aby zwrócić wartość True, jeśli dane wejściowe zawierają tylko zero lub jeden znak).or
zwraca True, jeśli wyrażenia po obu stronach są prawdziwe.źródło
JavaScript (ES6), 43 bajty
źródło
q
zamiast tego ustawiono by tę wartość..sort()
do niejawnego sortowania wreverse
czekuMATL , 7 bajtów
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
źródło
Clojure, 47 bajtów
źródło
<=
i>=
wyglądają na nieosiągalne, co jest naprawdę dziwne.(let[+ *](+ 2 3))
=6
: D Działa na dowolnej funkcji, ale najwyraźniej nie na makrach: „Nie można przyjąć wartości makra”C (gcc) , 70 bajtów
Miałem nadzieję znaleźć krótsze rozwiązanie oparte na funkcji rekurencyjnej, ale nie zadziałało z powodu wymagań wyjściowych. Oto imperatywne podejście. Przynajmniej pierwszeństwo operatora C działa dobrze dla instrukcji pętli wewnętrznej.
Wypróbuj online!
źródło
R, 48
5061bajtówJako funkcja bez nazwy
Dzięki @guiseppe za kilka dodatkowych bajtów.
charToRaw
bierzes
i dzieli się na surowy wektor. To jest konwertowane na liczby całkowite idiff
stosowane.sign
czyni diffs pojedynczą jednostką.range
redukuje wektor do minimum i maksimum. Następnie, jeśli odchylenie standardowesd
jest mniejsze niż 1, jest to PRAWDAWypróbuj online!
źródło
function(s,d=utf8ToInt(s))all(d==sort(d))
lubfunction(s,d=utf8ToInt(s))!is.unsorted(d)
!is.unsorted(utf8ToInt(scan(,'')))
cba
. ostatni wymagacat()
pełnego programufunction(s)all(!diff(order(utf8ToInt(s)),,2))
(działa również z sortowaniem odwrotnym!)tree
MATL, 8 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
'\n'
a'Hello'
: /[A-Za-z]
jak podano w pierwszym poście. Znajdują się w sekcji „niepoprawne”, ponieważ jawnie nie trzeba się nimi zajmować.Galaretka ,
45 bajtówWypróbuj online!
Pierwotnie miał
Ṣm0w
cztery bajty.Wyjaśnienie
źródło
ẇ
. Edycja: ughṢm0ẇ@
.Ṣẇm0$
. Jeśli kolejność argumentów nie była innaw
iẇ
...'\n'
i'Hello'
są całkowicie poprawnymi wartościami.Mathematica, 33 bajty
Na podstawie tej wskazówki . Niestety muszę użyć
ToCharacterCode
zamiastCharacters
, ponieważ<=
i>=
nie porównuj ciągów.źródło
PowerShell , 61 bajtów
Wypróbuj online!
Pobiera dane wejściowe
$a
, a następnie sprawdza, czy jest-in
to tablica dwuelementowa. Tablica jest tworzona przez wzięcie$a
, rzutowanie jej jakochar
-array, przechowywanie jej$b
na później, potokowanie dosort-object
której sortuje się leksykalnie. Drugi element jest$b
sortowany w-des
kolejności rosnącej.źródło
Perl , 35 bajtów
Zaoszczędź 4 bajty dzięki @Xcali bezpośrednio i 4 bardziej pośrednio.
31 bajtów kodu +
-pF
flaga.Wypróbuj online!
Kod sortuje dane wejściowe i sprawdza, czy dane wejściowe są posortowane (lub w odwrotnej kolejności).
źródło
$"=$,
i użyć/x
modyfikatora, aby zaoszczędzić jeszcze 5 bajtów.Galaretka , 5 bajtów
Wypróbuj online!
W jaki sposób?
źródło
Bash + coreutils, 59 bajtów
Łańcuch wejściowy jest przekazywany jako argument.
Dane wyjściowe są zwracane w kodzie wyjścia (0 dla truey, 1 dla falsy, jak zwykle), na co pozwalają metody We / Wy PPCG .
źródło
PHP, 66 bajtów
pobiera dane wejściowe z argumentu wiersza poleceń. Uruchom z
-r
.źródło
Rubinowy , 44 bajty
Wypróbuj online!
źródło
Rakieta , 93 bajty
Wypróbuj online!
Nie golfowany:
Za pomocą sortowania porównaj następnie oryginalne podejście
źródło
Brachylog , 5 bajtów
Próbowałem znaleźć rozwiązanie 4-bajtowe bez powodzenia, więc na razie oto najciekawsze rozwiązanie 5-bajtowe, jakie znalazłem:
Wypróbuj online!
o
, funkcja zamawiania, może przyjmować parametr:0
oznacza kolejność rosnącą,1
oznacza kolejność malejącą. Ustawiamy ten parametr na niezwiązaną zmiennąN
. Brachylog spróbuje użyć różnych wartościN
(tylko0
lub1
możliwe), spróbuje ujednolicić wynik z danymi wejściowymi i zwróci, czy którakolwiek z tych prób zakończyła się powodzeniem.źródło
o?|o₁?
działa na dodatkowy bajto{|↔}?
.MATLAB / Octave, 38 bajtów
Demo online
źródło
JavaScript (ES6)
7462504743 bajtyPo grze w golfa i naprawianiu błędów, ta odpowiedź była prawie taka sama jak ETHProduction, więc proszę sprawdź jego odpowiedź i daj jej odpowiedź
+1
.źródło
+1
odpowiedź.Haskell,
5450 bajtówPrzykład użycia:
t "defggh"
->True
. Wypróbuj online! .Może użycie
sort
innych odpowiedzi jest krótsze, chociaż wymagaimport Data.List
. Oto inne podejście:Dla każdej funkcji
f
od[(=<<),(<*>)]
obliczand(zipWith(<=)`f`tail$a)
i wymagaj dowolnego z wynikówTrue
. Funkcje sąOba wykonać porównań elementów sąsiadujących z listy wejściowej
a
z<=
, ale jeden z argumentów przerzucony w rezultacie daje>=
.and
sprawdza, czy wszystkie porównania sąTrue
.źródło
Pushy , 7 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
1
i2
sąTrue
w Pushy, podczas gdy0
sąFalse
.Pyth, 5 bajtów
Program, który pobiera dane wejściowe
"quoted string"
i drukujeTrue
lubFalse
odpowiednio.Zestaw testowy
Jak to działa
źródło
}Q
go/
, który używa niejawnejQ
.Oktawa, 24 bajty
Wypróbuj online!
źródło
GNU sed, 97 + 1 (flaga r) = 98 bajtów
Jeśli litery są uporządkowane, skrypt zwraca
1
, w przeciwnym razie0
. W sed nie ma żadnych typów danych.Aby sprawdzić, czy wszystkie litery są ułożone w porządku rosnącym, sprawdzam w tabeli każdą parę kolejnych liter w malejącym alfabecie, to znaczy próbuję znaleźć przeciwny przykład. Zauważ, że
//
faktycznie powtarza ostatnie dopasowanie wyrażenia regularnego! (patrz wiersze 2 i 3)Uruchom przykład: skrypt może przetestować wiele słów wejściowych, po jednym w wierszu
źródło
CJam ,
1211 bajtówWypróbuj online!
Wyjaśnienie
źródło
8086 kod maszynowy,
686148464539 bajtówZmontowano z:
źródło
Scala, 47 bajtów
źródło