Sumber saya ada dalam urutan, bukan milik Anda?

14

Tantangan Anda adalah menulis program, fungsi, dll. Yang menghitung jika string yang dikirimkan "dalam urutan". Itu berarti bahwa karakter string memiliki kode karakter yang berurutan dari yang terkecil hingga yang terbesar. Kode char terkecil harus menjadi yang pertama. Maksud saya codepoint unicode terendah ke tertinggi. Tidak masalah halaman kode apa yang Anda gunakan bahasa.

Anda harus mengembalikan satu nilai jika inputnya "berurutan" dan yang lainnya jika tidak. Nilai harus berbeda, tetapi tidak ada batasan lain pada nilai output. Misalnya, Anda dapat mencetak / mengembalikan / menghasilkan trueuntuk !1AQaq¡±(berurutan) dan falseuntuk aq!QA. Dua nilai berbeda tidak perlu benar atau salah atau semacamnya, hanya dua nilai berbeda. String berulang (mis. aa) Dalam urutan.

Anda hanya perlu mendukung hingga unicode U+007E( ~) (ascii 126)

Namun, karakter program Anda sendiri harus berurutan. Semoga sukses dan senang !

programmer5000
sumber
Anda tidak perlu memiliki nilai kebenaran / kepalsuan? dua kebenaran akan berhasil?
Rɪᴋᴇʀ
Juga, apakah kode char terkecil selalu di char pertama? Atau dapatkah dibalik?
Rɪᴋᴇʀ
12
Code-golf sejujurnya seperti kondisi menang yang buruk untuk bentuk sumber terbatas ini. Kode bowling untuk sebagian besar karakter unik akan lebih menarik.
fəˈnɛtɪk
1
@Pavel Pop kontra tidak berfungsi dengan baik untuk mencapai tugas tertentu dengan cara tertentu.
Dennis
2
adalah string yang diulang? misalnya, apakah sudah "aa"beres?
tsh

Jawaban:

14

Brachylog , 2 byte

.o

Cobalah online!

Penjelasan

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

Sebagai sebuah program penuh, sebuah pernyataan kegagalan memberikan false., setiap upaya yang berhasil yang tidak melanggar pernyataan yang diberikantrue.


sumber
9

Jelly , 2 byte

Ṣ⁼

Cobalah online!

Penjelasan

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

⁼Ṣ juga memiliki fungsionalitas yang tepat ("bandingkan input dengan input yang diurutkan"), jadi itu hanya kasus menjalankan dua program pada diri mereka sendiri untuk mencari tahu yang berada dalam urutan (saya tentu tidak memiliki codepoints Unicode dari bagian ini) set karakter aneh Jelly yang dihafal).


sumber
Kiriman Anda salah dalam pengodean Jelly, karena itu harus ⁼Ṣsebaliknya. Anda dapat melihat codepage Jelly di sini .
Erik the Outgolfer
@EriktheOutgolfer Itu mudah diperbaiki; ⁼Ṣtidak persis sama dengan Ṣ⁼.
steenbergh
@steenbergh Kiriman ini, seperti saat ini, tidak valid. Meskipun perbaikannya mudah, itu belum diterapkan, dan tidak disarankan bagi orang lain untuk mengedit kode.
Erik the Outgolfer
1
@EriktheOutgolfer Diskusi tentang jawaban ini terutama tentang codepage mana yang akan digunakan: tantangan referensi Unicode (meskipun tidak secara eksplisit memberitahu kita untuk menggunakannya) dan Jelly memiliki codepage sendiri. Apa pun hasilnya, memperbaiki jawaban ini sepele. Karenanya, saya tidak akan menyebut jawaban ini 'tidak valid' - Saya bahkan tidak akan menurunkannya dalam kondisi saat ini.
steenbergh
@steenbergh Saya juga belum menurunkan suara, saya hanya memberi tahu ais523 :)
Erik the Outgolfer
9

MATL , 5 byte

GGS\a

Keluaran 0jika input dalam urutan, 1jika tidak.

Cobalah online!

Penjelasan

Ini menghitung modulus (titik kode) masing-masing karakter dari input dengan indeks yang sama pada input yang diurutkan. Input dalam urutan jika dan hanya jika semua hasil 0.

Sebagai contoh, perhatikan string input BCD!. Menyortir itu memberi '!BCD. Array poin kode masing-masing [66 67 68 33]dan [33 66 67 68]. Komputasi yang diberikan moduli [0 1 1 33], sehingga inputnya tidak berurutan. Perhatikan bagaimana beberapa hasil dapat menjadi 0bahkan jika nilainya tidak sama (di sini yang terjadi di posisi pertama), tetapi itu tidak dapat terjadi di semua entri kecuali inputnya dalam urutan.

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
Luis Mendo
sumber
8

05AB1E , 3 2 byte

Terima kasih kepada Kevin karena telah memotong 33% dari kode sumber saya!

Cobalah online!

Penjelasan:

      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.
steenbergh
sumber
D{Qjuga berfungsi ...
Neil A.
1
@ NeilA. Mungkin melakukan hal yang sama, tetapi karakter tidak berurutan. Syaratnya adalah kode sumber Anda lulus tes yang sama dengan data. Ini harus menghasilkan 1 .
steenbergh
1
The Ddapat dihapus karena -1 dengan hanya menggunakan input implisit dua kali.
Kevin Cruijssen
5

2sable , 2 byte

Cobalah online!

Penjelasan

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

Output 0 jika order, kalau tidak 1 .

Emigna
sumber
1
@steenbergh: Ah, merindukan bagian dari tantangan itu.
Emigna
1
@steenbergh: Diperbaiki! Untungnya kami dapat menampilkan nilai yang berbeda :)
Emigna
2

Pyth, 2 byte

<S

Falseberarti diurutkan, Trueberarti tidak disortir.

Suite uji

Ini tidak biasa untuk dipikirkan. Solusi paling jelas untuk masalah ini, tanpa sumber terbatas, adalah SI, tidak berubah berdasarkan penyortiran. Tapi itu tidak diurutkan. Kemudian saya berpikir qS, yang secara implisit menggunakan variabel input dua kali, memeriksa apakah itu sama dengan diri yang diurutkan. Tapi sementara q < s,, q > Sjadi ini juga tidak berhasil. Tetapi <datang sebelumnya S, dan satu-satunya cara agar versi yang disortir tidak boleh kurang dari yang asli adalah jika yang asli disortir, karena versi yang disortir adalah permutasi minimum secara leksikografis dari elemen-elemen tersebut.

isaacg
sumber
1

CGL (CGL Golfing Language) , 4 byte (tidak bersaing)

-:Sc

Penjelasan:

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

Non-bersaing karena :,, Sdan cdiimplementasikan setelah penciptaan tantangan ini.

programmer5000
sumber
Adakah bukti bahwa bahasa ini dibuat sebelum tantangan ini?
Kritixi Lithos
@KritixiLithos ya, dan secara teknis ini adalah bahasa yang valid, tapi saya akan membuat ini tidak bersaing karena fungsi yang diperlukan untuk menyelesaikan ini dibuat setelah tantangan ini. CGL masih dalam proses, dan saya menggunakan tantangan untuk menunjukkan kepada saya apa fungsi baru yang harus ditambahkan.
programmer5000