내 소스가 순서대로되어 있습니까?


14

전달 된 문자열이 "정확한지"여부를 계산하는 프로그램, 함수 등을 작성해야합니다. 즉, 문자열의 문자에는 가장 작은 문자에서 가장 큰 문자 코드가 순서대로 있습니다. 가장 작은 문자 코드가 첫 번째 코드 여야합니다. 즉, 가장 낮은 유니 코드 코드 포인트가 가장 높은 것을 의미합니다. 언어가 사용하는 코드 페이지는 중요하지 않습니다.

입력이 "순서대로"인 경우 하나의 값을 리턴하고 그렇지 않으면 다른 값을 리턴해야합니다. 값은 고유해야하지만 출력 값에 대한 다른 제한은 없습니다. 예를 들어, / 반품 / 출력 인쇄 할 수 있습니다 true에 대한 !1AQaq¡±(순서대로)과 false대한을 aq!QA. 두 개의 고유 한 값은 진실하거나 허위 일 필요는 없으며, 두 개의 고유 한 값일 필요는 없습니다. 반복되는 문자열 (예 :) aa이 순서대로 있습니다.

최대 유니 코드 U+007E( ~) 만 지원하면됩니다 (ascii 126).

그러나 프로그램 문자 자체가 순서대로 있어야합니다. 행운과 행복한 !


당신은 진실 / 거짓 가치를 가질 필요가 없습니까? 두 진실이 작동합니까?
Rɪᴋᴇʀ

또한 가장 작은 문자 코드는 항상 첫 번째 문자입니까? 아니면 반대로 할 수 있습니까?
Rɪᴋᴇʀ

12
코드 골프는 솔직히 이러한 형태의 제한된 소스에 대한 열악한 승리 조건처럼 보입니다. 가장 독특한 캐릭터를위한 코드 볼링이 더 흥미로울 것입니다.
fəˈnɛtɪk

1
@Pavel Pop 단점은 특정 방식으로 특정 작업을 수행하는 데 적합하지 않습니다.
데니스

2
문자열이 순서대로 반복됩니까? 예를 들어 "aa"순서대로되어 있습니까?
tsh

답변:


14

Brachylog , 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

⁼Ṣ 또한 올바른 기능 ( "정렬 된 입력과 입력 비교")을 가지고 있기 때문에 두 프로그램을 순서대로 실행하기 위해 두 프로그램을 자체적으로 실행하는 경우에 불과했습니다 (이 부분의 유니 코드 코드 포인트는 없습니다 젤리의 이상한 캐릭터 세트의 암기).


Jelly 인코딩에서 제출 한 내용이 잘못되었습니다 ⁼Ṣ. 대신 제출해야합니다 . Jelly의 코드 페이지는 여기 에서 볼 수 있습니다 .
아웃 골퍼 Erik

@EriktheOutgolfer 쉽게 고쳐진다; ⁼Ṣ와 정확히 동일합니다 Ṣ⁼.
steenbergh

@steenbergh이 제출물은 현재 유효하지 않습니다. 수정이 쉽지만 아직 적용되지 않았으며 다른 사람들이 코드를 편집하지 않는 것이 좋습니다.
아웃 골퍼 Erik

1
@EriktheOutgolfer이 답변에 대한 토론은 주로 어떤 코드 페이지를 사용해야하는지에 대한 것입니다.이 챌린지는 유니 코드를 참조하고 (명확하게 사용하도록 지시하지는 않지만) 젤리는 자체 코드 페이지를 가지고 있습니다. 결과가 어떻든이 답을 고치는 것은 사소한 일입니다. 따라서이 답변을 '무효'라고 부르기 전까지는 가지 않을 것입니다. 현재 상태에서는 답을 내리지도 않을 것입니다.
steenbergh

@steenbergh 나는 또한 downvoted하지 않았다, 나는 단지 ais523를 통지했다 :)
Outgolfer Erik

9

MATL , 5 바이트

GGS\a

0입력이 순서대로 있으면 출력 하고 1그렇지 않으면 출력 합니다 .

온라인으로 사용해보십시오!

설명

이것은 정렬 된 입력에서 같은 인덱스에있는 입력에서 각 문자의 계수 (코드 포인트)를 계산합니다. 모든 결과가 인 경우에만 입력이 순서대로 이루어집니다 0.

예를 들어 입력 문자열을 고려하십시오 BCD!. 정렬하면 제공 '!BCD됩니다. 코드 포인트의 배열은 각각 [66 67 68 33][33 66 67 68]입니다. moduli를 계산하면 [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 %를 잘라낸 Kevin에게 감사합니다!

온라인으로 사용해보십시오!

설명:

      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
Neil A.

1
@NeilA. 동일한 작업을 수행 할 수 있지만 문자 순서는 다릅니다. 요구 사항은 소스 코드가 데이터와 동일한 테스트를 통과해야한다는 것입니다. 이것은 1을 산출해야합니다 .
steenbergh

1
D단지 암시 입력 -1 회 사용하여 제거 할 수있다.
Kevin Cruijssen



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이 도전의 생성 후 실행되었다.


이 도전 이전에이 언어가 만들어 졌다는 증거가 있습니까?
user41805

@KritixiLithos 그렇습니다. 기술적으로 유효한 언어이지만,이 과제를 완수하는 데 필요한 기능이이 도전 이후에 만들어 졌기 때문에 경쟁이되지 않습니다. CGL은 여전히 ​​진행중인 작업이며, 어떤 새로운 기능을 추가해야하는지 보여주기 위해 과제를 사용하고 있습니다.
programmer5000
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.