Мой источник в порядке, ваш?


14

Ваша задача состоит в том, чтобы написать программу, функцию и т. Д., Которая вычисляет, является ли переданная строка «в порядке». Это означает, что символы строки имеют коды символов в порядке от наименьшего к наибольшему. Наименьший код должен быть первым. Под этим я подразумеваю самые низкие коды Unicode и самые высокие. Неважно, какую кодовую страницу использует ваш язык.

Вы должны вернуть одно значение, если ввод «по порядку», и другое, если это не так. Значения должны быть разными, но других выходных значений нет. Например, вы можете распечатать / вернуть / вывести trueдля !1AQaq¡±(по порядку) и falseдля aq!QA. Два разных значения не обязательно должны быть правдой, ложью или чем-то в этом роде, просто два разных значения. Повторные строки (например. aa) В порядке.

Вам нужно только поддерживать до Unicode U+007E( ~) (ASCII 126)

Однако символы вашей программы должны быть в порядке. Удачи и счастливого !


Вам не нужно иметь истинные / ложные ценности? две истины будут работать?
Rɪᴋᴇʀ

Кроме того, самый маленький кодовый код всегда на первом символе? Или это может быть полностью изменено?
Rɪᴋᴇʀ

12
Код-гольф, честно говоря, кажется плохим условием выигрыша для этой формы ограниченного источника. Код для боулинга для большинства уникальных персонажей будет более интересным.
fəˈnɛtɪk

1
@Pavel Pop минусы не работают для достижения конкретной задачи определенным образом.
Деннис

2
повторяется строка в порядке? например, "aa"в порядке?
TSH

Ответы:


14

Брахилог , 2 байта

.o

Попробуйте онлайн!

объяснение

.o
.   Assert that {the input} equals the output of the last command in the program
 o  Sort {the input}

Как полная программа дает сбой утверждения false., любой успешный запуск, который не нарушает никаких утверждений, даетtrue.


9

Желе , 2 байта

Ṣ⁼

Попробуйте онлайн!

объяснение

Ṣ⁼
Ṣ    Sort {the input}
 ⁼   Compare that to {the input} for equality of the whole structure

⁼Ṣ также имеет правильную функциональность («сравнить ввод с отсортированным вводом»), так что это был всего лишь случай запуска двух программ на себя, чтобы выяснить, что было в порядке (у меня, конечно, нет кодовых точек Unicode этой части запоминается странный набор символов Желе).


Ваше представление неверно в кодировке Jelly, оно должно быть ⁼Ṣвместо. Вы можете увидеть кодовую страницу желе здесь .
Эрик Outgolfer

@EriktheOutgolfer Это легко исправить; ⁼Ṣделает точно так же, как Ṣ⁼.
Steenbergh

@steenbergh Это представление, как и сейчас, является недействительным. Несмотря на то, что исправление легко, оно еще не применено, и другим не рекомендуется редактировать код.
Эрик Outgolfer

1
@EriktheOutgolfer Обсуждение этого ответа в основном о том, какую кодовую страницу использовать: вызов ссылается на Юникод (хотя явно не говорит нам об этом), а у Jelly есть собственная кодовая страница. Каким бы ни был результат, исправить этот ответ тривиально. Поэтому я бы даже не назвал этот ответ «недействительным» - я бы даже не понизил его в его нынешнем состоянии.
Стинберг

@steenbergh Я тоже не проголосовал, я просто уведомил ais523 :)
Эрик Outgolfer

9

MATL , 5 байтов

GGS\a

Выходы, 0если вход в порядке, в 1противном случае.

Попробуйте онлайн!

объяснение

Это вычисляет модуль (кодовые точки) каждого символа из входного значения с тем же индексом в отсортированном входном файле. Ввод в порядке, если и только если все результаты 0.

Например, рассмотрим входную строку BCD!. Сортировка это дает '!BCD. Массивы кодовых точек соответственно [66 67 68 33]и [33 66 67 68]. Вычисление модулей дает [0 1 1 33], поэтому ввод не в порядке. Обратите внимание, что некоторые результаты могут быть 0даже в том случае, если значения не были одинаковыми (здесь это происходит в первой позиции), но это не может происходить во всех записях, если входные данные не в порядке.

G     % Push input string
GS    % Push input string and sort it
\     % Modulus, element-wise. This gives all zeros iff the input was in order
a     % Any: gives 1 if any entry is non-zero. Implicitly display

8

05AB1E , 3 2 байта

Спасибо Кевину за вырезание 33% моего исходного кода!

Попробуйте онлайн!

Объяснение:

      There used to be a D here for 'Duplicate stack' 
      but we now use the same input twice implicitly
 {    Sort the copy
  å   Check if the sorted copy is a substring of the original
      This will only return 1 if the original input is sorted, 0 otherwise.

D{Qтоже работает ...
Нил А.

1
@ NeilA. Это может быть то же самое, но символы не в порядке. Требование состоит в том, что ваш исходный код проходит тот же тест, что и данные. Это должно дать 1 .
Стинберг

1
DМожет быть удалено из- за -1, используя только неявный вход в два раза.
Кевин Круйссен


5

2sable , 2 байта

Попробуйте онлайн!

объяснение

{    # sorted input
 Ê   # not equals (implicit input)

Выводит 0, если это порядок, иначе 1 .


1
@steenbergh: Ах, пропустил эту часть проблемы.
Emigna

1
@steenbergh: исправлено! К счастью, мы могли бы выводить любые отличные значения :)
Emigna

2

Pyth, 2 байта

<S

Falseзначит отсортированный, Trueзначит несортированный.

Тестирование

Это было довольно нетривиально. Наиболее очевидное решение этой проблемы, без ограничения источника, является SIинвариантным при сортировке. Но это не отсортировано. Затем я подумал qS, что неявно использует входную переменную дважды, проверяя, равна ли она самому себе. Но пока q < s, q > Sтак что это тоже не сработало. Но <приходит раньше S, и единственный способ, которым отсортированная версия не может быть меньше оригинала, - это если оригинал был отсортирован, поскольку отсортированная версия - это лексикографически минимальная перестановка элементов.


1

CGL (CGL Golfing Language) , 4 байта (не конкурирующие)

-:Sc

Объяснение:

- Decrement the stack counter so the current stack is where input is put
: Split the first element of the current stack (input) into an array of single strings, make that the next stack, and increment the stack counter
S Sort the current stack
c Compare the current stack and the one before, push that to the next stack and increment the stack counter
(implicit) Output the first element of the current stack, true if in order, false if not.

Не конкурирующие, потому что :, Sи cбыли реализованы после создания этой задачи.


Есть ли доказательства того, что этот язык был создан до этого испытания?
user41805

@KritixiLithos да, и это технически допустимый язык, но я сделаю его неконкурентным, потому что функции, необходимые для его выполнения, были сделаны после этого испытания. CGL все еще находится в стадии разработки, и я использую задачи, чтобы показать мне, какие новые функции должны быть добавлены.
programmer5000
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.