Diberikan string input S, kembalikan truthy
jika semua huruf dalam S adalah Lexically Ordered: nilai ASCII-nya harus dalam urutan naik atau turun. Kembali falsy
dalam kasus lain.
Memasukkan
- Input akan berada dalam kasus yang sama (semua huruf kecil atau semua). Kiriman Anda harus dapat menangani keduanya.
- Input akan terdiri dari ASCII dalam rentang
[A-Za-z]
saja - Panjang input akan minimal 1, hingga maksimal apa pun yang didukung bahasa Anda.
- Input adalah string - bukan daftar karakter, bukan array dari ASCII-codepoints.
Keluaran
- Output harus
true
ataufalse
, atau0/1
, atautrue / false
output gaya lain yang berbeda yang dapat disediakan oleh bahasa Anda. - Semua case yang benar harus memiliki output yang sama, dan juga semua case yang salah. Tidak "Salah 0, benar 1, 2, atau 3".
Aturan tambahan
- Celah standar dilarang
- Jawaban harus berupa program atau fungsi lengkap, bukan cuplikan atau entri REPL.
- kode-golf , jawaban terpendek dalam byte menang.
Uji kasus
Sejujurnya
"ABCDEF"
"ZYX"
"no"
"tree" --> the multiple 'e's don't break the order
"q"
Palsu
"ABCDC"
"yes"
"deed"
Tidak valid
"Hello" --> invalid input - mixed case-, does not have to be handled
"" --> invalid input - length 0-, does not have to be handled
"\n
" --> invalid input - newline is not in range [A-Za-z]-, does not have to be handled
truthy
ataufalsy
. Ini menyiratkan bahwa nilai apa pun yang mengevaluasitrue
ataufalse
diizinkan.Jawaban:
05AB1E , 5 byte
Cobalah online!
Penjelasan
sumber
{¹å
untuk 4, hapus jawaban saya. Tidak memperhatikan penggunaan dwi dua cabang, milik saya terlalu mirip.aba => ['aab', 'baa'] => is in? => 0
|aab => same => 1
Python 2 ,
53444039 byteCobalah online!
sumber
Haskell , 33 byte
Cobalah online!
Terima kasih kepada Ørjan Johansen untuk 1 byte dengan aliasing
scanl1
infix.Haskell adalah bahasa yang menarik untuk tantangan berbasis pemilahan golf karena tidak memiliki jenis bawaan, kecuali yang panjang
import Data.List
. Ini mendorong menemukan cara untuk melakukan tugas dengan tangan tanpa penyortiran secara eksplisit.Penggunaan kode
scanl1
, yang melipat operasi atas daftar dari kiri ke kanan, melacak hasil antara. Jadi,scanl1 max
memiliki efek daftar maksimal kumulatif dari daftar, yaitu maksimal dari awalan yang semakin lama semakin lama. Sebagai contohscanl1 max [3,1,2,5,4] == [3,3,3,5,5]
,.Sama dengan
min
memeriksa apakah daftar menurun. Kode memeriksa dua kasing dan menggabungkannya dengan||
.Bandingkan dengan ekspresi lain:
sumber
||
kemenangan jika Anda tentukan(?)=scanl1
.Perl 6 , 25 byte
Bagaimana itu bekerja:
.comb
membagi input menjadi urutan karakter.le
dange
merupakan operator perbandingan string "kurang atau sama" dan "lebih besar atau sama" .[ ]
sekitar operator infiks, mengurangi ("lipatan") daftar argumen dengan operator itu. (Cukup cerdas untuk mengembalikan True jika inputnya hanya nol atau satu karakter.)or
mengembalikan True jika ekspresi di kedua sisi itu benar.sumber
JavaScript (ES6), 43 byte
sumber
q
akan ditetapkan ke nilai itu sebagai gantinya..sort()
untuk secara implisit mengurutkanreverse
cekMATL , 7 byte
Cobalah online! Atau verifikasi semua kasus uji .
sumber
Clojure, 47 byte
sumber
<=
dan>=
terlihat infix, yang benar-benar aneh.(let[+ *](+ 2 3))
=6
: D Ia berfungsi pada fungsi apa pun tetapi tampaknya tidak pada makro: "Tidak dapat mengambil nilai makro"C (gcc) , 70 byte
Saya berharap untuk menemukan solusi yang lebih pendek berdasarkan pada fungsi rekursif, tetapi tidak berhasil karena persyaratan output. Jadi, inilah pendekatan yang sangat penting. Setidaknya, prioritas operator C bekerja dengan baik untuk pernyataan loop dalam.
Cobalah online!
sumber
R, 48
5061byteSebagai fungsi yang tidak disebutkan namanya
Terima kasih kepada @ guiseppe untuk beberapa byte tambahan.
charToRaw
mengambils
dan membelah menjadi vektor mentah. Ini dikonversi menjadi bilangan bulat dandiff
diterapkan.sign
membuat diffs menjadi satu unit.range
mengurangi vektor ke minimum dan maksimum. Kemudian jika standar deviasisd
kurang dari 1 itu BENARCobalah online!
sumber
function(s,d=utf8ToInt(s))all(d==sort(d))
ataufunction(s,d=utf8ToInt(s))!is.unsorted(d)
!is.unsorted(utf8ToInt(scan(,'')))
cba
dan yang terakhir akan membutuhkancat()
untuk membuatnya menjadi program penuhfunction(s)all(!diff(order(utf8ToInt(s)),,2))
(bekerja dengan sortir terbalik juga!)tree
MATL, 8 byte
Cobalah secara Online!
Penjelasan
sumber
'\n'
dan'Hello'
: /[A-Za-z]
seperti yang dinyatakan dalam posting awal. Mereka berada di bagian "tidak valid" karena mereka secara eksplisit tidak perlu ditangani.Jelly ,
45 byteCobalah online!
Awalnya adalah
Ṣm0w
empat byte.Penjelasan
sumber
ẇ
, saya percaya. Edit: ughṢm0ẇ@
.Ṣẇm0$
. Jika urutan argumennya tidak berbeda untukw
danẇ
...'\n'
dan'Hello'
merupakan nilai yang benar-benar valid.Mathematica, 33 byte
Berdasarkan tip ini . Sayangnya, saya harus menggunakan
ToCharacterCode
bukanCharacters
, karena<=
dan>=
tidak membandingkan string.sumber
PowerShell , 61 byte
Cobalah online!
Mengambil input
$a
, lalu memeriksa apakah-in
array dua elemen. Array dibentuk dengan mengambil$a
,char
menuangnya sebagai -array, menyimpannya$b
untuk nanti, menyalurkannya kesort-object
jenis yang secara leksikal. Elemen lainnya$b
diurutkan dalam-des
urutan cending.sumber
Perl , 35 byte
Disimpan 4 byte berkat @Xcali secara langsung, dan 4 lainnya secara tidak langsung.
31 byte kode +
-pF
bendera.Cobalah online!
Kode mengurutkan input, dan memeriksa apakah input cocok dengan dirinya sendiri diurutkan (atau dalam urutan terbalik).
sumber
$"=$,
dan menggunakan/x
pengubah untuk menghemat 5 byte lebih.Jelly , 5 byte
Cobalah online!
Bagaimana?
sumber
Bash + coreutils, 59 byte
String input dilewatkan sebagai argumen.
Output dikembalikan dalam kode keluar (0 untuk truey, 1 untuk falsy, seperti biasa), sebagaimana diizinkan oleh metode I / O PPCG .
sumber
PHP, 66 byte
mengambil input dari argumen baris perintah. Jalankan dengan
-r
.sumber
Ruby , 44 byte
Cobalah online!
sumber
Racket , 93 byte
Cobalah online!
Tidak Disatukan:
Menggunakan semacam itu kemudian dibandingkan dengan pendekatan asli
sumber
Brachylog , 5 byte
Saya sudah mencoba mencari solusi 4 byte tanpa hasil, jadi untuk sekarang inilah solusi 5 byte paling menarik yang saya temukan:
Cobalah online!
o
, fungsi pemesanan, dapat mengambil parameter:0
berarti urutan naik,1
berarti urutan menurun. Kami menetapkan parameter itu ke variabel tidak terikatN
. Brachylog akan mencoba nilai yang berbeda untukN
(hanya0
atau1
yang mungkin), mencoba menyatukan hasilnya dengan input, dan mengembalikan apakah salah satu dari percobaan tersebut berhasil.sumber
o?|o₁?
bekerja untuk byte ekstra thoo{|↔}?
.MATLAB / Oktaf, 38 byte
Demo online
sumber
JavaScript (ES6)
7462504743 byteSetelah beberapa golf dan perbaikan bug, jawaban ini akhirnya hampir sama dengan ETHProduction, jadi silakan periksa jawabannya dan berikan a
+1
.sumber
+1
jawabannya.Haskell,
5450 byteContoh penggunaan:
t "defggh"
->True
. Cobalah online! .Mungkin menggunakan
sort
like semoga jawaban lain lebih pendek walaupun membutuhkanimport Data.List
. Berikut pendekatan yang berbeda:Untuk setiap fungsi
f
dari[(=<<),(<*>)]
, hitungand(zipWith(<=)`f`tail$a)
dan minta hasil apa sajaTrue
. Fungsinya adalahyang keduanya melakukan perbandingan elemen tetangga dari daftar input
a
dengan<=
, tetapi satu dengan argumen terbalik menghasilkan a>=
.and
memeriksa apakah semua perbandingannya adalahTrue
.sumber
Pushy , 7 byte
Cobalah online!
Penjelasan:
sumber
1
dan2
beradaTrue
di Pushy, padahal0
ituFalse
.Pyth, 5 byte
Suatu program yang mengambil input dari
"quoted string"
dan mencetakTrue
atau yangFalse
sesuai.Suite uji
Bagaimana itu bekerja
sumber
}Q
dengan/
yang menggunakan implisitQ
.Oktaf, 24 byte
Cobalah secara Online!
sumber
GNU sed, 97 +1 (r flag) = 98 byte
Jika surat dipesan, skrip kembali
1
, jika tidak0
. Selain itu tidak ada tipe data.Untuk memeriksa apakah semua huruf disusun dalam urutan menaik, saya melakukan pencarian tabel dari setiap pasangan huruf berturut-turut dalam alfabet menurun, yaitu saya mencoba menemukan contoh penghitung. Perhatikan bahwa
//
sebenarnya mengulangi pertandingan ekspresi reguler terakhir! (lihat baris 2 dan 3)Jalankan contoh: skrip dapat menguji beberapa kata input, satu per baris
sumber
CJam ,
1211 byteCobalah online!
Penjelasan
sumber
8086 kode mesin,
686148464539 byteDirakit dari:
sumber
Scala, 47 byte
sumber