Моє джерело в порядку, твоє?


14

Ваше завдання полягає в тому, щоб написати програму, функцію тощо, яка обчислює, чи передана рядок "в порядку". Це означає, що символи рядка мають символьні коди в порядку від найменшого до найбільшого. Найменший char код повинен бути першим. Під цим я маю на увазі найнижчі кодові точки Unicode до найвищих. Не має значення, яку кодову сторінку ви використовуєте мову.

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

Вам потрібно лише підтримувати до unicode U+007E( ~) (ascii 126)

Однак символи вашої програми самі повинні бути в порядку. Удачі та щасливого !


Вам не потрібно мати правдиві / хибні значення? дві правди спрацювали б?
Rɪᴋᴇʀ

Також, чи є найменший char код завжди на першому char? Або його можна перевернути?
Rɪᴋᴇʀ

12
Код-гольф чесно видається поганим умовою виграшу для цієї форми з обмеженим джерелом. Коулінг для більшості унікальних персонажів був би цікавішим.
fəˈnɛtɪk

1
@Pavel Поп-мінуси не працюють добре для досягнення певного завдання певним чином.
Денніс

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, воно повинно бути ⁼Ṣзамість цього. Ви можете побачити кодову сторінку Jelly тут .
Erik the Outgolfer

@EriktheOutgolfer Це легко виправити; ⁼Ṣробить точно так само, як Ṣ⁼.
steenbergh

@steenbergh Це подання, як і зараз, є недійсним. Незважаючи на те, що виправлення легко, воно ще не застосовано, і іншим не рекомендується редагувати код.
Ерік Аутгольфер

1
@EriktheOutgolfer Дискусія щодо цієї відповіді в основному стосується того, яку кодову сторінку використовувати: посилання на виклик Unicode (хоча явно не говорить про те, щоб ми її використовували), а у Jelly є своя сторінка коду. Яким би не був результат, виправлення цієї відповіді тривіальне. З цього приводу я б не пішов так, щоб назвати цю відповідь "недійсною" - я б навіть не відмовив її в її нинішньому стані.
steenbergh

@steenbergh Я також не подав заяву, я просто повідомляв ais523 :)
Ерік the 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 .
steenbergh

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



2

Pyth, 2 байти

<S

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

Тестовий набір

Це було досить нетривіально, щоб придумати. Найбільш очевидним рішенням цієї проблеми без обмеженого джерела є SIінваріантність під час сортування. Але це не відсортовано. Тоді я подумав qS, який неявно використовує вхідну змінну двічі, перевіряючи, чи вона дорівнює її відсортованій самості. Але поки q < s, q > Sтак, і це не спрацювало. Але <йде раніше S, і єдиний спосіб, коли відсортована версія не може бути меншою, ніж оригінал, це якщо оригінал був відсортований, оскільки сортувана версія - це лексикографічно мінімальна перестановка елементів.


1

CGL (мова для гольфу CGL) , 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були реалізовані після створення цього виклику.


Чи є докази того, що ця мова була створена перед цим викликом?
користувач41805

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