Nguồn của tôi theo thứ tự, là của bạn?


14

Thử thách của bạn là viết một chương trình, hàm, v.v ... để tính toán nếu chuỗi đã qua là "theo thứ tự". Điều đó có nghĩa là các ký tự của chuỗi có mã ký tự theo thứ tự từ nhỏ nhất đến lớn nhất. Mã char nhỏ nhất phải là đầu tiên. Điều đó có nghĩa là các điểm mã unicode thấp nhất đến cao nhất. Không quan trọng trang ngôn ngữ của bạn sử dụng.

Bạn phải trả về một giá trị nếu đầu vào là "theo thứ tự" và giá trị khác nếu không. Các giá trị phải khác biệt, nhưng không có hạn chế nào khác về các giá trị đầu ra. Ví dụ: bạn có thể in / trả lại / đầu ra truecho !1AQaq¡±(theo thứ tự) và falsecho aq!QA. Hai giá trị riêng biệt không cần phải trung thực hoặc giả dối hoặc bất cứ điều gì tương tự, chỉ cần hai giá trị riêng biệt. Các chuỗi lặp lại (ví dụ. aa) Theo thứ tự.

Bạn chỉ cần hỗ trợ tối đa unicode U+007E( ~) (ascii 126)

Tuy nhiên, các ký tự của chương trình của bạn phải theo thứ tự. Chúc may mắn và vui ing!


Bạn không cần phải có giá trị trung thực / giả? Hai sự thật sẽ làm việc?
Rɪᴋᴇʀ

Ngoài ra, mã char nhỏ nhất luôn luôn ở char đầu tiên? Hoặc nó có thể được đảo ngược?
Rɪᴋᴇʀ

12
Code-golf thành thật có vẻ như là một điều kiện thắng kém cho hình thức nguồn bị hạn chế này. Mã bowling cho hầu hết các nhân vật độc đáo sẽ thú vị hơn.
fnɛtɪk

1
@Pavel Pop cons không hoạt động tốt để đạt được một nhiệm vụ cụ thể theo một cách cụ thể.
Dennis

2
được lặp lại chuỗi theo thứ tự? ví dụ, "aa"theo thứ tự?
tsh

Câu trả lời:


14

Brachylog , 2 byte

.o

Hãy thử trực tuyến!

Giải trình

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

Là một chương trình đầy đủ, một thất bại khẳng định mang lại false. , bất kỳ lần chạy thành công nào không vi phạm bất kỳ xác nhận nào đều đưa ratrue.


9

Thạch , 2 byte

Ṣ⁼

Hãy thử trực tuyến!

Giải trình

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

⁼Ṣ cũng có chức năng phù hợp ("so sánh đầu vào với đầu vào được sắp xếp"), do đó, đây chỉ là trường hợp tự chạy hai chương trình để tìm ra thứ tự nào (tôi chắc chắn không có bảng mã Unicode của phần này của bộ ký tự kỳ lạ của Jelly ghi nhớ).


Trình của bạn là sai trong mã hóa Jelly, nó cần phải được ⁼Ṣthay thế. Bạn có thể xem bảng mã của Jelly tại đây .
Erik the Outgolfer

@EriktheOutgolfer Điều đó dễ dàng được sửa; ⁼Ṣthực hiện chính xác giống như Ṣ⁼.
steenbergh

@steenbergh Trình này, vì nó là ngay bây giờ, không hợp lệ. Mặc dù cách khắc phục rất dễ dàng nhưng nó vẫn chưa được áp dụng và không khuyến khích người khác chỉnh sửa mã.
Erik the Outgolfer

1
@EriktheOutgolfer Thảo luận về câu trả lời này chủ yếu là về việc sử dụng codepage nào: thách thức tham khảo Unicode (mặc dù không rõ ràng cho chúng tôi sử dụng nó) và Jelly có codepage riêng. Dù kết quả thế nào, sửa câu trả lời này là chuyện nhỏ. Do đó, tôi sẽ không đi xa đến mức gọi câu trả lời này là 'không hợp lệ' - tôi thậm chí sẽ không đánh giá thấp nó ở trạng thái hiện tại.
steenbergh

@steenbergh Tôi cũng không đánh giá thấp, tôi chỉ thông báo cho ais523 :)
Erik the Outgolfer

9

MATL , 5 byte

GGS\a

Đầu ra 0 nếu đầu vào theo thứ tự, 1nếu không.

Hãy thử trực tuyến!

Giải trình

Điều này sẽ tính mô-đun của (các điểm mã của) mỗi char từ đầu vào với cùng một chỉ mục trong đầu vào được sắp xếp. Đầu vào theo thứ tự khi và chỉ khi tất cả các kết quả là0 .

Ví dụ, hãy xem xét chuỗi đầu vào BCD!. Sắp xếp nó cho '!BCD. Các mảng của các điểm mã tương ứng [66 67 68 33][33 66 67 68]. Tính toán các mô-đun cho [0 1 1 33], vì vậy đầu vào không theo thứ tự. Lưu ý cách một số kết quả có thể 0ngay cả khi các giá trị không giống nhau (ở đây xảy ra ở vị trí đầu tiên), nhưng điều đó không thể xảy ra trong tất cả các mục trừ khi đầu vào theo thứ tự.

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 byte

Cảm ơn Kevin vì đã cắt bỏ 33% mã nguồn của tôi!

Hãy thử trực tuyến!

Giải trình:

      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{Qcũng hoạt động ...
Neil A.

1
@ NeilA. Nó có thể làm tương tự, nhưng các ký tự không theo thứ tự. Yêu cầu là mã nguồn của bạn vượt qua bài kiểm tra giống như dữ liệu. Điều này sẽ mang lại 1 .
steenbergh

1
Dthể loại bỏ -1 cho chỉ bằng cách sử dụng một đầu vào ẩn hai lần.
Kevin Cruijssen


5

2sable , 2 byte

Hãy thử trực tuyến!

Giải trình

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

Đầu ra 0 nếu nó là thứ tự, khác 1 .


1
@steenbergh: Ah, đã bỏ lỡ phần đó của thử thách.
Emigna

1
@steenbergh: Đã sửa! May mắn thay, chúng tôi có thể xuất bất kỳ giá trị riêng biệt nào :)
Emigna

2

Bình thường, 2 byte

<S

Falsecó nghĩa là sắp xếp, Truecó nghĩa là chưa sắp xếp.

Bộ kiểm tra

Điều này là khá không cần thiết để đưa ra. Giải pháp rõ ràng nhất cho vấn đề này, không có nguồn bị hạn chế, là SIbất biến theo cách sắp xếp. Nhưng điều đó không được sắp xếp. Sau đó, tôi nghĩ qS, trong đó ngầm sử dụng biến đầu vào hai lần, kiểm tra xem nó có bằng với tự sắp xếp của nó không. Nhưng trong khi q < s, q > Svì vậy điều này cũng không hoạt động. Nhưng <đến trước S, và cách duy nhất mà phiên bản được sắp xếp không thể nhỏ hơn bản gốc là nếu bản gốc đã được sắp xếp, vì phiên bản được sắp xếp là hoán vị tối thiểu từ vựng của các yếu tố.


1

CGL (CGL Golfing Language) , 4 byte (không cạnh tranh)

-:Sc

Giải trình:

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

Không cạnh tranh bởi vì :, Scđã được thực hiện sau khi tạo ra thử thách này.


Có bằng chứng nào cho thấy ngôn ngữ này được tạo ra trước thử thách này không?
Kritixi Lithos

@KritixiLithos có, và về mặt kỹ thuật là ngôn ngữ hợp lệ, nhưng tôi sẽ làm cho điều này không cạnh tranh vì các chức năng cần thiết để hoàn thành việc này đã được thực hiện sau thử thách này. CGL vẫn đang trong quá trình hoàn thiện và tôi đang sử dụng các thử thách để chỉ cho tôi những chức năng mới nào cần được thêm vào.
lập trình
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.