Terminologi
Angka yang bertambah adalah angka di mana setiap digit lebih besar dari atau sama dengan semua digit di sebelah kiri (ex. 12239)
Angka yang berkurang adalah angka di mana setiap digit kurang dari atau sama dengan semua digit di sebelah kiri (ex. 95531)
Bouncy number adalah bilangan apa pun yang tidak naik atau turun. Karena ini membutuhkan setidaknya 3 digit, angka goyang pertama adalah 101
Tugas
Dengan bilangan bulat n yang lebih besar dari atau sama dengan 1, temukan jumlah bilangan melenting pertama
Aturan
- Ini kode golf, jadi jawabannya dengan jumlah byte terpendek akan menang
- Jika bahasa Anda memiliki batasan ukuran bilangan bulat (mis. 2 ^ 32-1) n akan cukup kecil sehingga jumlahnya akan cocok dengan bilangan bulat
- Input dapat berupa bentuk yang wajar (stdin, file, parameter baris perintah, integer, string, dll)
- Output dapat berupa bentuk yang masuk akal (stdout, file, elemen pengguna grafis yang menampilkan nomor, dll)
Uji kasus
1 > 101
10 > 1065
44701 > 1096472981
sort
angka-angkanya dan periksa apakah sama dengan nomor aslinya? Itu menggunakan built-in (sort
), tetapi tidak sepenuhnya built-in untuk memeriksa apakah itu meningkat. Lihat persyaratan program yang tidak dapat diobservasi dan Lakukan X tanpa Y pada pos Meta "Hal yang harus dihindari" kami.Jawaban:
Jelly ,
108 byteCobalah online!
Bagaimana itu bekerja
sumber
ṚƬ
sangat rapi ...Pyth , 10 byte
Coba di sini!
Bagaimana itu bekerja?
sumber
K (ngn / k) , 37 byte
Cobalah online!
{
}
adalah fungsi dengan argumenx
x{
}\0
berlaku{}
pada0
x
waktu, menjaga hasil menengah(1+)
adalah fungsi penerus{
}(1+)/x+1
menerapkan fungsi penerus mulai darix+1
hingga{}
pengembalian benar10\x
adalah angka desimal darix
a:
menetapkan kea
|\
adalah pemindaian maksimum (sebagian maksimum) daria
&\
analognya, adalah min-scana~|\a
tidaka
cocok dengan pemindaian maksimalnya?|
ataua~&\a
itu min-scan?+/
jumlahsumber
JavaScript (ES6), 77 byte
Cobalah online!
Berkomentar
sumber
Python 2,
1109289 byteCobalah online
Fungsi ini menentukan apakah suatu angka melenting:
sumber
set(map(cmp,`x`[:-1],`x`[1:]))
.map
cara itu.x=s=0\nwhile n:b={-1,1}<=set(map(cmp,`x`[:-1],`x`[1:]));s+=x*b;n-=b;x+=1
menghemat 3 bytePython 2 , 84 byte
Cobalah online! Atau lihat test-suite .
sumber
Retina , 93 byte
Cobalah online! Penjelasan:
Inisialisasi
s=i=0
. (s
adalah jumlah#
s sebelum:
,i
jumlah#
s setelah.)Ulangi
n
kali.Ulangi saat
i
tidak melenting.Tambahkan
i
dan buat salinan dalam desimal.Ubah digit salinan menjadi unary. Tes bounciness menggunakan salinan unary, jadi itu hanya berfungsi sekali
i
telah ditambahkan setidaknya satu kali.Tambahkan
i
kes
dan hapus salinan digit unary, sehingga untuk lulus berikutnya dari loop batin tes bounciness gagal dani
akan bertambah setidaknya satu kali.Konversikan
s
ke desimal.Versi 121 byte menghitung dalam desimal, jadi mungkin berfungsi untuk nilai yang lebih besar dari
n
:Cobalah online! Penjelasan:
Inisialisasi
s=i=0
.Ulangi
n
kali.Ulangi saat
i
tidak melenting.Tambahkan
i
dan buat salinan.Ubah digit salinan menjadi unary. Tes bounciness menggunakan salinan unary, jadi itu hanya berfungsi sekali
i
telah ditambahkan setidaknya satu kali.Tambahkan
i
kes
dan hapus salinan digit unary, sehingga untuk lulus berikutnya dari loop batin tes bounciness gagal dani
akan bertambah setidaknya satu kali.Hapus
i
.sumber
05AB1E , 12 byte
Cobalah online!
Penjelasan
sumber
Java 8,
114112 byteMenggunakan ekspresi reguler untuk memeriksa apakah angkanya meningkat atau menurun. Cobalah online di sini .
Tidak Disatukan:
sumber
Python 2, 250 byte
sumber
;
untuk meletakkan sebanyak mungkin pernyataan pada satu baris, menghapus spasi, dan mendefinisikan fungsi untuk 2 baris panjang yang sangat mirip, sehingga Anda dapat menggunakan kembali beberapa kode. Anda juga dapat melakukana=b=s=0
danlen(g)!=h-1!=len(d)
.Stax , 14 byte
Jalankan dan debug itu
sumber
Merah , 108 byte
Cobalah online!
Lebih mudah dibaca:
Peluang yang baik untuk digunakan
form
-form i
adalah 5 byte lebih pendek darito-string i
sumber
MATL ,
3130 byteCobalah online!
sumber
R , 96 byte
Cobalah online!
Penjelasan:
sumber
Ruby (123 byte)
Terlihat sangat jelek bagiku. Bounciness didefinisikan dalam blok ini
x.sort!=x&&x.sort!=x.reverse
sumber
Ruby , 76 byte
Cobalah online!
sumber
C (gcc), 104 byte
Cobalah online di sini .
Tidak Disatukan:
sumber
u+=!y?--b,o:0,++o
alih-alihu+=y?0:o+0*--b,++o
,;y&=(c-=n%10)<0?:c?2:y)c=n%10,n/=10;
alih-alih;)c=n%10,n/=10,y&=(c-=n%10)<0?:c?2:y;