(terinspirasi oleh pos ini di membingungkan. PERHATIAN: SPOILER UNTUK PUZZLE YANG DI BAWAH.)
Tombol telepon standar menghubungkan huruf dengan angka sebagai berikut:
1 ->
2 -> ABC
3 -> DEF
4 -> GHI
5 -> JKL
6 -> MNO
7 -> PQRS
8 -> TUV
9 -> WXYZ
0 ->
Kata input yang diberikan didefinisikan sebagai Word yang Diurutkan jika, ketika diterjemahkan ke penekanan tombol dengan menggunakan di atas, angka yang dihasilkan tidak menurun atau meningkat. Dengan kata lain, angka yang dihasilkan tidak dapat meningkat dan turun.
Misalnya, kata yang CAT
diterjemahkan menjadi 228
, yang tidak menurun, dan dengan demikian menjadi Kata yang Terurut. Namun, kata itu DOG
adalah 364
, yang keduanya meningkat dan menurun, dan dengan demikian bukan Kata Terurut.
Tantangan
Diberi kata, keluaran apakah dipesan atau tidak.
Memasukkan
- Sebuah kata (tidak harus kata kamus) yang hanya terdiri dari alfabet ASCII (
[A-Z]
atau[a-z]
), dalam format apa pun yang sesuai . - Pilihan Anda jika input semuanya huruf besar atau semua huruf kecil, tetapi harus konsisten.
- Panjang kata setidaknya 3 karakter.
Keluaran
Nilai kebenaran / falsey yang konsisten untuk apakah kata yang dimasukkan dipesan atau tidak.
Aturan
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Jika memungkinkan, harap sertakan tautan ke lingkungan pengujian online agar orang lain dapat mencoba kode Anda!
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
Contohnya
Berikut adalah beberapa Kata yang Dipesan (yaitu, benar), dan ada lebih banyak lagi di teka-teki yang membingungkan.
CAT
TAC
AAA
DEMONS
SKID
LKJONMSRQP
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Berikut adalah beberapa Kata yang Tidak Dipesan (mis., Falsey)
DOG
GOD
ROSE
COFFEE
JKLMNOGHI
abc->t9
dan tantangan ini adalah memeriksa monotonitas?abc->t9
.AAA
Jawaban:
Python 2 ,
16414813277 byte-16 Bytes berkat saran Rod di tempat lain . Frickin '-55 bytes berkat Arnold Palmer.
Cobalah online!
Input harus dalam huruf besar. Keluaran
True
atauFalse
berdasarkan keteraturannya.Penjelasan
Baris pertama memetakan setiap huruf ke angka.
Ini bekerja berdasarkan:
* Nilai dibulatkan. : P
Baris kedua menghasilkan jika daftar angka dalam urutan naik atau turun.
sumber
JavaScript (ES6),
83 ... 7170 byteMengembalikan boolean.
Uji kasus
Tampilkan cuplikan kode
Bagaimana?
Konversi surat
Kami menggunakan
parseInt(c, 35)
untuk mengonversi setiap huruf dari string input ke beberapa nomor di [ 10 .. 34 ]. Karena itu base-35, "Z" dikonversi menjadiNaN
.Ekspresi
* .32 | 0
memetakan nomor ini ke dalam interval [ 3 .. 10 ], mengarah ke 8 grup huruf yang benar untuk "A" ke "Y" . Kita perlu|| 10
mendapatkan nilai yang benar untuk "Z" .Tes pemesanan
Kami melacak tanda-tanda perbedaan antara angka berurutan ke dalam bitmask v , awalnya diatur ke 3 (0b11):
Nilai sebelumnya disimpan dalam variabel x yang sama dengan input. Ini memastikan bahwa iterasi pertama - di mana tidak ada nilai sebelumnya benar-benar ada - tidak akan menghapus sedikitpun, karena string yang hanya berisi huruf tidak lebih besar atau lebih kecil dari angka apa pun:
Sebuah kata diurutkan kecuali kedua tanda ditemui, yang mengarah ke v = 0 dan membuat
every()
gagal.sumber
Jelly ,
28, 27, 25, 23, 22, 21, 19,18 byteCobalah online!
Ini sangat menyenangkan untuk ditulis!
Penjelasan:
Terima kasih kepada @ErikTheOutgolfer, @leakynun, dan @BusinessCat untuk semua penghematan byte. :)
sumber
05AB1E , 36 byte
Cobalah online!
sumber
.•1нJ©½è`ÇHø¹á₂N¸°…ÈáÀ•#
denganA•22ā₂•S£
.MATL ,
2625 byteMasukan dalam huruf besar Output adalah
1
atau0
.Cobalah online!
Penjelasan
sumber
Sekam ,
22 21 1918 bytePengembalian
1
untuk input yang benar,0
untuk yang palsu. Input harus dalam huruf besar. Lewati semua kasus uji. Cobalah online!Penjelasan
sumber
Python 2 , 60 byte
Cobalah online!
Menerima input dalam huruf kecil.
Bagaimana itu bekerja
⌊3681 / x ⌋ berkurang dari
a
;c
dand
;f
dang
;i
danj
;l
danm
;o
danp
;s
dant
;v
danw
;z
.sumber
C ++,
375199195194 byteBerkat jawaban JavaScript Shaggy:
-5 byte terima kasih kepada Zacharý
sumber
int j=1,i=0,d=0
ke loop for?i
dand
digunakan di luar blok loop, saya tidak bisai==0||d==0
==>i*d==0
.!(i*d)
bekerja (menghapus ruang setelahreturn
)05AB1E , 30 byte
Cobalah online!
-1 terima kasih kepada Magic Octopus Mm .
sumber
¥0K0.SË
karena¥0‹Ë
tidak benar? Saya tidak tahu apakah0.S
diperlukan.¥0K0‹Ë
tampaknya berhasil.Retina , 65 byte
Cobalah online! Tautan termasuk kasus uji. Penjelasan:
Ubah huruf pertama pada setiap tombol menjadi angka. (Ini dinonaktifkan oleh 1 tetapi itu tidak masalah untuk cek naik / turun. Di sisi lain, nol akan membuat hidup saya lebih sulit, jadi saya meninggalkan satu karakter pengisi.)
Kocok semua huruf yang tersisa hingga 1 dan ulangi sampai semuanya dikonversi menjadi angka.
Konversikan digit menjadi unary, tetapi hanya sekali menjalankan angka yang identik. Nilai-nilai unary dipisahkan dengan
<
...... tetapi jika LHS ternyata lebih besar dari RHS, perbaiki
<
to>
.Hapus
1
s yang tidak lagi diperlukan.Periksa apakah kata tersebut sudah dipesan. (Trailing
>
berasal dari digit terakhir yang selalu membandingkan lebih besar dari ruang kosong yang mengikutinya.)sumber
Pyth , 23 byte
Salah satu jawaban Pyth non-sepele pertama saya! Disimpan 6 byte berkat @LeakyNun. Solusi awal di bawah ini.
Test Suite.
Pyth , 29 byte
Test Suite.
Penjelasan
sumber
05AB1E ,
2117 byteKode
Menggunakan penyandian 05AB1E .
Cobalah online! atau Verifikasi semua kasus uji!
Penjelasan
Ini sekarang pada dasarnya memetakan surat-surat berikut ke nomor-nomor berikut:
sumber
JavaScript (ES6),
1079795928885 byteBekerja dengan string case campuran. Pengembalian
1
untuk kebenaran atau0
untuk kepalsuan.Cobalah
sumber
Math.min((parseInt(c,36)-3)/3.13|0,9)
alih"2..9"[parseInt(c,36)-10]
- alih menyimpan beberapa byteAAA
.Gaia ,
29272517 byteCobalah online!
Penjelasan
sumber
05AB1E , 13 byte
Setiap kali saya melihat pertanyaan numpad, saya harus membuat jawaban berdasarkan pi.
Cobalah secara online atau verifikasi semua kasus uji
sumber
Jelly , 32 byte
Cobalah online!
sumber
32222323
sehingga menghemat hanya 2 byte.C # (.NET Core) , 133 byte
Cobalah online!
Saya merasa seperti ada beberapa ruang untuk diselamatkan, tetapi C # bukan bahasa yang ringkas jadi mungkin tidak. Tidak Disatukan:
Secara khusus saya pikir ada cara yang lebih pendek untuk mengekspresikan pemeriksaan akhir untuk validitas, mungkin cara untuk menyamakannya dengan
Zip
. Menemukan cara untuk mengekspresikanZip
tanpa perlu penyimpanan sementara untukSkip
itu juga akan menghemat sesuatu, tapi saya ragu ada sesuatu yang lebih ringkas untuk itu.sumber
Python 3 ,
143147148149130 byteYang terbaik yang bisa saya lakukan untuk saat ini. Fungsi kasar mengubah huruf menjadi angka berdasarkan kode ascii. Pasti ada beberapa perbaikan yang harus dilakukan. 0 benar, 1 adalah falsey (maaf). Disimpan 10 byte berkat Rod, 3 lainnya berkat Mr. Xcoder.
Cobalah online!
sumber
x=[f(a)-f(b)for a,b in zip(s,s[1:])]
untuk menyimpan beberapa bytemin(int((ord(c)-58)/3.13),9)
adalah cara yang lebih singkat untuk mengonversi charPython 2 ,
111103 byte-8 byte terima kasih kepada @Arnold Palmer: tidak
lower()
diperlukanCobalah online!
sumber
.lower()
karena input bisa dalam hal apa pun yang Anda tentukan.PHP 7,
98 + 1 95 + 184 + 1 bytepelabuhan golf jawaban Arnauld .
menerima huruf besar; output kosong untuk kepalsuan,
1
untuk kebenaran.Jalankan sebagai pipa dengan
-nR
atau coba online .pos asli:
sumber
CJam,
37313027 byteCobalah secara Online
Tentu saja versi jelek akhirnya menjadi lebih pendek ...
sumber
C (gcc) ,
183 169 153117 byteCobalah online!
Solusi lama:
Disimpan 8 byte berkat ThePirateBay.
Solusi lama:
Solusi lama lama:
sumber
TI-Basic,
9266 byteMengubah setiap karakter dalam string menjadi bilangan bulat dari 0 hingga 7, dan mengambil perbedaan antara setiap elemen berturut-turut; kemudian periksa apakah perbedaan minimum dan maksimum memiliki tanda yang sama (atau keduanya 0).
sumber
ΔList(int(4^-1seq(inString("DEF GHI JKL MNO PQRSTUV WXYZ",sub(Ans,I,1))+3,I,1,length(Ans
menghemat satu byte.Zsh ,
73 6957 byte-12 byte dengan menggunakan
3681/code
konversi @ anders-kaseorg .Cobalah online! Cobalah online!Cobalah online!Beberapa hal yang kami penyalahgunaan:
((statement,statement,...))
adalah urutan ekspresi aritmatika yang mengembalikan kebenaran jika pernyataan terakhir adalah nol.hanya sepasangtanpa tanda kurung yang digunakan. Satu byte dapat disimpan jika!
terikat kurang dari&
.0
dalam ekspansi aritmatika.Fungsi yang kami gunakan untuk memetakan ke nomor keypad adalahkarena kita hanya perlu perubahan antar kode, kita tidak melakukan penyesuaian linier.CODE / 3.2 - 18
(dengan case khusus untukZ
), tetapi2 byte dapat disimpan jika nilai kebenaran / falsey dapat ditukar.
sumber