Если задана входная строка S, вернуть, truthy
если все буквы в S лексически упорядочены: их значения ASCII должны быть в порядке возрастания или убывания. Вернуть falsy
в других случаях.
вход
- Ввод будет в том же регистре (все прописные или строчные). Ваше представление должно быть в состоянии справиться с обоими.
- Ввод будет состоять из ASCII в диапазоне
[A-Za-z]
только - Длина ввода будет по крайней мере 1, до того максимума, который поддерживает ваш язык.
- Ввод - это строка, а не список символов, а не массив кодов ASCII.
Выход
- Выводом должен быть
true
илиfalse
, или0/1
, или любой другойtrue / false
стиль вывода, который может обеспечить ваш язык. - Все истинные случаи должны иметь одинаковый вывод, как и все ложные случаи. Нет «False равно 0, true равно 1, 2 или 3».
Дополнительные правила
- Стандартные лазейки запрещены
- Ответом должна быть полная программа или функция, а не фрагмент или запись REPL.
- Code-Golf , кратчайший ответ в байтах выигрывает.
Контрольные примеры
Truthy
"ABCDEF"
"ZYX"
"no"
"tree" --> the multiple 'e's don't break the order
"q"
Falsy
"ABCDC"
"yes"
"deed"
Недействителен
"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
илиfalsy
. Это подразумевает, что любые значения, которые оцениваютсяtrue
илиfalse
разрешены.Ответы:
05AB1E , 5 байтов
Попробуйте онлайн!
объяснение
источник
{¹å
за 4 удалил мой ответ. Не заметил использования бифурката, мой был слишком похож.aba => ['aab', 'baa'] => is in? => 0
|aab => same => 1
Python 2 ,
53444039 байтПопробуйте онлайн!
источник
Haskell , 33 байта
Попробуйте онлайн!
Спасибо Эрджану Йохансену за 1 байт с
scanl1
инфиксом псевдонимов .Haskell - интересный язык для задач, связанных с сортировкой в гольфе, потому что у него нет встроенной сортировки, за исключением длинных
import Data.List
. Это поощряет поиск способа выполнить задачу вручную без явной сортировки.Используется код
scanl1
, который сворачивает операцию по списку слева направо, отслеживая промежуточные результаты. Таким образом,scanl1 max
имеет эффект перечисления совокупных максимумов списка, то есть максимумов постепенно более длинных префиксов. Например,scanl1 max [3,1,2,5,4] == [3,3,3,5,5]
.То же самое с
min
проверками, уменьшается ли список. Код проверяет два случая и объединяет их с||
.Сравните с другими выражениями:
источник
||
победами, если вы определите(?)=scanl1
.Perl 6 , 25 байт
Как это работает:
.comb
разбивает ввод на последовательность символов.le
иge
являются операторами сравнения строк «меньше или равно» и «больше или равно» .[ ]
вокруг инфиксного оператора, уменьшает («складывает») список аргументов с этим оператором. (Он достаточно умен, чтобы вернуть True, если на входе есть только ноль или один символ.)or
возвращает True, если выражения по обе стороны от него истинны.источник
JavaScript (ES6), 43 байта
источник
q
вместо этого было бы установлено это значение..sort()
чтобы неявно сортировать вreverse
чекеMATL , 7 байт
Попробуйте онлайн! Или проверьте все тестовые случаи .
источник
Clojure, 47 байтов
источник
<=
и>=
выглядит инфикс, хотя, что действительно странно.(let[+ *](+ 2 3))
=6
: D Работает с любой функцией, но, видимо, не с макросами: «Не могу получить значение макроса»C (gcc) , 70 байт
Я надеялся найти более короткое решение, основанное на рекурсивной функции, но оно не сработало из-за требования к выводу. Итак, вот императивный подход. По крайней мере, приоритет оператора C хорошо работает для оператора внутреннего цикла.
Попробуйте онлайн!
источник
R, 48
5061байтКак неназванная функция
Спасибо @guiseppe за несколько дополнительных байтов.
charToRaw
беретs
и распадается на сырой вектор. Это преобразуется в целые числа иdiff
применяется.sign
делает различия в единую единицу.range
уменьшает вектор до минимума и максимума. Тогда, если стандартное отклонениеsd
меньше 1, оно ИСТИНАПопробуйте онлайн!
источник
function(s,d=utf8ToInt(s))all(d==sort(d))
илиfunction(s,d=utf8ToInt(s))!is.unsorted(d)
!is.unsorted(utf8ToInt(scan(,'')))
cba
и последней потребуется a,cat()
чтобы сделать ее полной программойfunction(s)all(!diff(order(utf8ToInt(s)),,2))
(работает и с обратной сортировкой!)tree
MATL, 8 байт
Попробуйте онлайн!
объяснение
источник
'\n'
и'Hello'
: /[A-Za-z]
как указано в первоначальном посте. Они находятся в разделе «неверно», потому что их явно не нужно обрабатывать.Желе ,
45 байтПопробуйте онлайн!
Первоначально был
Ṣm0w
в четыре байта.объяснение
источник
ẇ
хотя, я полагаю. Редактировать: тьфуṢm0ẇ@
.Ṣẇm0$
. Если порядок аргументов неw
ẇ
'\n'
и'Hello'
являются совершенно действительными значениями.Mathematica, 33 байта
На основании этого совета . К сожалению, я должен использовать
ToCharacterCode
вместоCharacters
, потому что<=
и>=
не сравнивать строки.источник
PowerShell , 61 байт
Попробуйте онлайн!
Принимает ввод
$a
, затем проверяет, является ли он-in
двухэлементным массивом. Массив формируется путем взятия$a
, приведения его к типуchar
-array, сохранения его$b
на потом, передачи его вsort-object
лексическую сортировку. Другой элемент$b
отсортирован в-des
порядке убывания.источник
Perl , 35 байт
Благодаря @Xcali сохранено 4 байта , а косвенно - 4.
31 байт кода +
-pF
флаг.Попробуйте онлайн!
Код сортирует входные данные и проверяет, соответствуют ли входные данные отсортированным (или в обратном порядке).
источник
$"=$,
и использовать/x
вместо него модификатор, чтобы сохранить еще 5 байтов.Желе , 5 байт
Попробуйте онлайн!
Как?
источник
Bash + coreutils, 59 байт
Входная строка передается в качестве аргумента.
Вывод возвращается в коде выхода (0 для истины, 1 для ложного, как обычно), как это разрешено методами ввода-вывода PPCG .
источник
PHP, 66 байт
принимает входные данные из аргумента командной строки. Беги с
-r
.источник
Рубин , 44 байта
Попробуйте онлайн!
источник
Ракетка , 93 байта
Попробуйте онлайн!
Ungolfed:
Используя сортировку, сравните с оригинальным подходом
источник
Брахилог , 5 байт
Я попытался найти 4-байтовое решение, но безуспешно, так что пока вот самое интересное 5-байтовое решение, которое я нашел:
Попробуйте онлайн!
o
функция упорядочения может принимать параметр:0
означает возрастание,1
убывание. Мы устанавливаем этот параметр в несвязанную переменнуюN
. Brachylog попытается использовать разные значенияN
(только0
или1
возможно), попытается объединить результат с вводом и возвратит, была ли успешной любая из этих попыток.источник
o?|o₁?
работает для дополнительного байта thoo{|↔}?
.MATLAB / Octave, 38 байт
Онлайн демо
источник
JavaScript (ES6)
7462504743 байтаПосле некоторой игры в гольф и исправления ошибок этот ответ оказался почти таким же, как у ETHProduction, поэтому, пожалуйста, проверьте его ответ и дайте ему ответ
+1
.источник
+1
ответьте.Haskell,
5450 байтПример использования:
t "defggh"
->True
. Попробуйте онлайн! ,Может быть, так же,
sort
как и другие ответы, короче, хотя это и требуетсяimport Data.List
. Вот другой подход:Для каждой функции
f
из[(=<<),(<*>)]
рассчитайтеand(zipWith(<=)`f`tail$a)
и требует каких - либо результатов , чтобы бытьTrue
. Функциикоторые оба выполняют сравнение соседних элементов входного списка
a
с<=
, но один с перевернутыми аргументами приводит к>=
.and
проверяет, все ли сравненияTrue
.источник
Напористый , 7 байтов
Попробуйте онлайн!
Объяснение:
источник
1
и2
находятсяTrue
в Pushy, тогда как0
естьFalse
.Pyth, 5 байт
Программа, которая принимает ввод
"quoted string"
и печатаетTrue
илиFalse
при необходимости.Тестирование
Как это работает
источник
}Q
с/
, которая использует неявноеQ
.Октава, 24 байта
Попробуйте онлайн!
источник
GNU sed, 97 + 1 (флаг r) = 98 байт
Если буквы упорядочены, скрипт возвращается
1
, в противном случае0
. В sed нет типов данных.Чтобы проверить, расположены ли все буквы в порядке возрастания, я выполняю поиск в таблице каждой пары последовательных букв в нисходящем алфавите, то есть пытаюсь найти контрпример. Обратите внимание, что
//
фактически повторяется последнее совпадение регулярного выражения! (см. строки 2 и 3)Пример запуска: скрипт может проверить несколько входных слов, по одному в строке
источник
CJam ,
1211 байтовПопробуйте онлайн!
объяснение
источник
8086 машинный код,
686148464539 байтСобран из:
источник
Скала, 47 байт
источник