Terinspirasi oleh pos ini pada Puzzling. Spoiler untuk puzzle itu ada di bawah ini.
Diberikan tiga bilangan bulat positif sebagai input,, (x, y, z)
buat rentang inklusif [x, y]
, gabungkan kisaran itu bersama-sama, lalu hapus z
angka yang tidak harus berturut-turut untuk menghasilkan bilangan bulat positif terbesar dan terkecil yang mungkin. Angka nol di depan tidak diizinkan (yaitu angka harus dimulai dengan [1-9]
). Keluarkan kedua angka itu dalam urutan apa pun.
Sebagai contoh dari pos membingungkan, untuk masukan (1, 100, 100)
, jumlah terbesar yang mungkin 99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100
,
dan jumlah terkecil 10000012340616263646566676869707172737475767778798081828384858687888990919293949596979899100
,
mengikuti logika di bawah ini dari jawaban jafe yang diposting di sana:
- Kami tidak dapat memengaruhi panjang angka (ada jumlah digit tetap), jadi untuk memaksimalkan nilai kami mengambil digit pertama maksimal, lalu digit kedua dll.
- Hapus 84 non-sembilan pertama (16 digit tersisa untuk menghapus):
999995051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
- Angka terbesar dalam 17 digit berikutnya adalah 7, jadi dari sini, digit berikutnya dalam jawaban bisa paling banyak 7 (kita tidak bisa menghapus lebih dari 16 digit). Jadi hapus 15 non-7 ... (1 digit tersisa untuk dihapus):
999997585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
- Dari sini, angka berikutnya bisa paling banyak 8 jadi hapus satu non-8 dari tengah:
99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100
- Logika yang serupa, tetapi terbalik (yaitu, kami ingin memimpin
1
, bukan memimpin9
s) untuk angka terkecil.
Ini contoh yang lebih kecil: (1, 10, 5)
.
Kami membangun rentang 12345678910
dan menentukan 5
digit mana yang dapat kami hapus dengan meninggalkan angka terbesar yang mungkin. Jelas, itu berarti kami ingin memaksimalkan digit terdepan, karena kami tidak dapat memengaruhi panjang output. Jadi, jika kita menghapus 12345
, kita tinggal bersama 678910
, dan itu yang terbesar yang bisa kita buat. Membuat yang terkecil adalah sedikit lebih sulit, karena kita bisa memetik angka dari tengah saja, meninggalkan 123410
yang terkecil mungkin.
Sebab (20, 25, 11)
, hasilnya agak membosankan, seperti 5
dan 1
.
Akhirnya, untuk mengesampingkan jawaban yang mencoba memimpin nol, (9, 11, 3)
berikan 91011
yang pada gilirannya menghasilkan 91
dan 10
sebagai yang terbesar dan terkecil.
I / O dan Aturan
- Jika lebih mudah / lebih pendek, Anda dapat membuat kode dua program / fungsi - satu untuk yang terbesar dan satu untuk yang terkecil - dalam hal ini skor Anda adalah jumlah dari kedua bagian.
- Input dan output dapat diberikan dengan metode apa pun yang mudah .
- Input dapat dianggap sesuai dengan jenis nomor asli bahasa Anda, namun , baik angka gabungan atau output tidak dapat diasumsikan demikian.
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
9, 11, 3
akan berhasil.