Nomor bukit adalah angka yang dimiliki angka yang sama di bagian pertama & terakhir , tetapi bukan itu saja. Di nomor bukit angka pertama benar - benar meningkat , dan angka terakhir sangat menurun. Digit terbesar dapat diulang .
Berikut adalah contoh nomor bukit:
12377731 | 1237... | ...731
^ same ^ | strictly increasing | strictly decreasing
---------+---------------------+---------------------
12377731
^^^ okay because largest digit can be repeated
Ini adalah bukan :
4588774 | ...8774
| ^^ not the largest digit
| so this has to be strictly decreasing
| but it's not, so not a hill number
Tantangan
Diberi bilangan bulat positif, tulis program lengkap atau fungsi yang mengembalikan kebenaran untuk nomor hill tetapi salah pada nilai-nilai lain.
Catatan:
- Input & output bisa masuk format apa pun yang masuk akal .
- Ini adalah kode-golf sehingga jawaban terpendek di setiap bahasa menang!
Uji Kasus
12321 -> Truthy
1233321 -> Truthy
99 -> Truthy
3 -> Truthy
234567992 -> Truthy
1232 -> Falsy
778896 -> Falsy
23232 -> Falsy
45566554 -> Falsy
5645 -> Falsy
code-golf
decision-problem
number-theory
tidak terdefinisi
sumber
sumber
222222222
? Apakah ini nomor bukit yang datar?222222222
adalah nomor bukit, digit terbesar adalah 2 dan dengan demikian dapat diulang1230321
nomor bukit?Jawaban:
Jelly , 8 byte
Cobalah online!
Bagaimana itu bekerja
sumber
JavaScript (ES6),
6254 byteMengambil input sebagai string. Mengembalikan nilai Boolean.
Cobalah online!
Berkomentar
JavaScript (ES6), 65 byte
Solusi menggunakan ekspresi reguler. Mengambil input sebagai string. Mengembalikan0 atau 1 .
Cobalah online!
Bagaimana?
Kami pertama-tama mengonversi nomor tersebut ke daftar perbedaan digit berpasangan di[ - 9 , 9 ] :
Contoh:
Array ini dipaksa untuk sebuah string, yang memberikan:
Kami menerapkan ungkapan reguler berikut:
Akhirnya, kami juga menguji apakah digit terakhir
p
sama dengan digit pertamas[0]
.sumber
Pyth, 16 byte
Coba test suite .
sumber
Jeli , 11 byte
Penjelasan:
Cobalah online!
sumber
Perl 6 , 39 byte
Cobalah online!
Penjelasan
sumber
Python 2 ,
114112 byteCobalah online!
sumber
R , 65 byte
Membawa string. Mengambil ide untuk memeriksa jenis invarian dari jawaban Pyth.
Cobalah online!
sumber
05AB1E ,
19171312 byte-5 byte dengan menciptakan pelabuhan @lirtosiast 's Pyth jawabannya .
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
Â{RQ
alternatifnya bisa(Â{Q
untuk byte-count yang sama, di mana(
meniadakan setiap tanda: Cobalah secara online .sumber
J, 23 byte
Ide dicuri dari jawaban Jelly. Hanya ingin melihat betapa singkatnya saya bisa sampai di J.
Cobalah online!
sumber
MATL , 12 byte
Cobalah online!
Penjelasan
Input adalah serangkaian digit. Output adalah a
1
atau0
. Nomornya222222
adalah nomor bukit menurut program ini. Disimpan 2 byte dengan menyalin metode Dennis untuk memeriksa kesetaraan digit pertama dan terakhir.sumber
Python 2 , 53 byte
Mengambil input sebagai string. Output adalah melalui ada tidaknya pengecualian .
Cobalah online!
Python 2 , 62 byte
Mengambil input sebagai string dan mengembalikan Boolean.
Cobalah online!
sumber
Bahasa Mathematica / Wolfram,
6964 byteFungsi murni. Mengambil input sebagai integer, mengembalikan
True
atauFalse
.Penjelasan:
Klausa pertama memeriksa "hilliness":
IntegerDigits
: Dapatkan digit dari integer. Simpan diy
.-Differences
: Ambil perbedaan bergantian dan flip sign.Sign
: Ganti setiap entri dengan +1 jika positif, 0 jika nol, dan -1 jika negatif. Simpan dix
.Sort
: Urutkan daftar +1, 0, -1 dari terkecil hingga terbesar. Bandingkan dengan daftar asli dix
.Klausa kedua memeriksa apakah angka pertama dan terakhir sama.
Tip untuk @IanMiller untuk kiat menyempurnakan kode ini.
sumber
IntegerDigits
danDifferences
nama fungsi agak panjang agak menjengkelkan.Sort[x=Sign@-Differences[y=IntegerDigits@#]]==x&&y[[1]]==Last@y&
Japt, 11 byte
Mengambil input sebagai array angka.
Cobalah atau jalankan semua test case
sumber
Retina 0.8.2 , 52 byte
Cobalah online! Tautan termasuk kasus uji. Penjelasan:
Konversi setiap digit menjadi unary dua kali, dipisahkan oleh
;
s dan diakhiri oleh,
s. Namun, Anda kemudian dapat menganggap hasilnya sebagai digit pertama, a;
, lalu semua pasangan digit yang berdekatan, digit masing-masing pasangan yang dipisahkan oleh,
dan pasangan yang dipisahkan oleh;
s, lalu yang lain;
, lalu digit terakhir, lalu final,
.Kurangi pasangan angka yang berdekatan. Ini pergi
;,;
digit yang sama dan berada1
di sisi yang lebih besar untuk digit yang tidak sama. (Ini bisa dilakukan sebagai bagian dari regex berikut tetapi jelas itu tidak akan begitu golf.)Cocokkan digit pertama, lalu jumlah pasangan dari digit naik, lalu berapa pun jumlah pasangan dari digit yang sama, lalu jumlah pasangan dari digit turun, lalu cocokkan digit pertama lagi di bagian paling akhir.
sumber
Merah , 181 byte
Cobalah online!
Lebih mudah dibaca:
sumber
Powershell, 77 byte
Skrip uji yang kurang golf:
Keluaran:
sumber
C # (Visual C # Interactive Compiler) , 161 byte
Cobalah online!
Berikut ini gambaran umum tentang cara kerjanya ...
string
sumber
Python 3 , 114 byte
Cobalah online!
Jauh lebih lama daripada beberapa solusi Python 2, tapi yang ini berbasis def dan saya menyukainya.
sumber
Ruby , 47 byte
Cobalah online!
Input sebagai array digit, output adalah boolean.
sumber