pengantar
Tantangan ini terdiri dari menemukan angka terbesar yang menghilangkan digit y dari angka asli n yang memiliki x digit.
Dengan asumsi y=2 n=5263 x=4
, angka yang mungkin dihapus y = 2 digit adalah:
[52, 56, 53, 26, 23, 63]
Jadi, jumlah terbesar adalah 63
yang harus menjadi output untuk contoh ini.
Logika lainnya adalah: untuk setiap y, cari dari kiri ke kanan digit yang mana digit kanan berikutnya lebih besar, lalu hapus, jika tidak ada kecocokan, hapus y-digit terakhir .
Menggunakan y=3 n=76751432 x=8
untuk menjelaskan:
y=3
76751432
-^------ remove 6 because right next 7 is greater
y=2
7751432
---^--- remove 1 because right next 4 is greater
y=1
775432
-----^ the search failed, then remove last y digits
result = 77543
Kedua metode yang dijelaskan di atas berfungsi .. tentu saja, Anda dapat menggunakan metode lain juga :)
Tantangan
Angka n tidak akan memiliki lebih dari 8 digit, dan y akan selalu lebih besar dari nol dan lebih rendah dari x .
Untuk menghindari format input yang ketat, Anda dapat menggunakan nilai-nilai: y n x
cara yang Anda inginkan: sebagai parameter dalam fungsi, input mentah, atau cara valid lainnya. Hanya saja, jangan lupa mengatakan bagaimana Anda melakukannya dalam jawaban Anda.
Keluaran harus berupa nomor hasil.
Ini adalah kode-golf , jawaban terpendek dalam byte menang.
Contoh Input dan Output
Sekali lagi: Anda tidak perlu terlalu ketat :)
4 1789823 7 -> 983
1 54132 5 -> 5432
3 69314 5 -> 94
2 51794 5 -> 794
Edit
Saya mengubah urutan input untuk mencerminkan fakta bahwa beberapa dari Anda mungkin tidak memerlukan nilai x untuk menyelesaikan masalah. x sekarang menjadi nilai opsional.
sumber
x
adalah jenis informasi yang tidak berguna.x
sebagai input dapat mempersingkat kode. (Contoh kasus: jawaban Julia saya.)Jawaban:
A-Ray ,
97 byteBahasa baru saya! Menurut meta, ini diizinkan, tetapi jika ini tidak diterima, maka saya akan menghapusnya.
Penjelasan:
Input contoh (angka, x, y):
Keluaran:
Anda dapat menguji ini dengan file .jar yang diberikan di tautan github.
sumber
MATL , 10 byte
Ini menggunakan versi (9.2.1) dari bahasa / kompiler, yang lebih awal dari tantangan ini.
Dibutuhkan tiga input dari stdin dalam urutan ini: panjang string, jumlah karakter yang dihapus, string.
Contoh
EDIT : Coba online! (kode di tautan
XN
bukannyaXn
menyesuaikan dengan perubahan bahasa setelah tantangan ini; juga,o
tidak diperlukan lagi)Penjelasan
(Ini masih berharga 2 byte lebih dari yang seharusnya karena
nchoosek
fungsi Oktaf dan Matlab berperilaku berbeda. Diperbaiki dalam rilis berikutnya dari kompiler.)Jawaban untuk tantangan asli (persyaratan input yang lebih ketat): 16 byte
Menggunakan versi saat ini (9.2.1) dari bahasa / kompiler.
Contoh
Penjelasan
(Seharusnya ini kurang dari 4 byte, tetapi saya membutuhkannya
wow...c
karenanchoosek
fungsi Octave , tidak seperti Matlab, tidak bekerja dengan input karakter. Akan diperbaiki untuk rilis kompiler berikutnya.)sumber
wow
Kode Anda kagum akanPyth -
1198 byteTest Suite .
sumber
2 5263 4
.Japt, 19 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Brachylog , 30 byte
Karena OP telah mengurangi kendala pada IO, ini diharapkan
[Number, NumberOfDigitsRemoved]
sebagai input dan mengembalikan jawaban sebagai output, misalnyabrachylog_main([1789823,4], Z).
.Penjelasan
sumber
Python 3, 69 byte
Ini mendefinisikan fungsi anonim yang menerima ketiga argumen. Mengambil keuntungan penuh dari aturan bahwa "Anda dapat menggunakan nilai-nilai:
y n x
seperti yang Anda inginkan", saya telah memilih untuk menerimay
danx
sebagai bilangan bulat dann
sebagai string. Nilai kembali adalah string.Untuk berjaga-jaga jika ada yang merasa bahwa ini terlalu memperluas aturan, versi ini mengambil semua input sebagai bilangan bulat dan 74 byte.
Dan hanya untuk iseng, saya juga menulis versi dua argumen, mengambil
y
dann
dari baris perintah dan mencetak hasilnyaSTDOUT
. Ini 92 byte.sumber
ES6, 70 byte
Mengembalikan hasil numerik kecuali
y
palsu dann
string. Saya meyakinkan diri saya bahwa melakukan rekursi dengan cara yang salah masih berhasil (solusi saya tidak berlaku untuk melakukan rekursi yang benar).Juga golf kode pertama saya di mana saya menggunakan ketiga tanda kutip (meskipun tidak semua sebagai tanda kutip), yang mencegah saya dari menghitung panjangnya dengan sepele.
sumber
Julia,
12895 byteIni adalah fungsi yang menerima tiga nilai sebagai parameter dan mengembalikan integer.
Tidak Disatukan:
sumber
Haskell, 64 byte
Contoh penggunaan:
(4#7)"1789823"
->"983"
.Nomor aslinya
n
diambil sebagai string. (Tidak yakin apakah saya terlalu menekankan aturan "no format input ketat", tetapi input string diperlukan (!) Di versi pertama).Cara kerjanya: buat daftar semua urutan
n
, simpan yang panjangx-y
dan pilih yang maksimal.sumber
Ruby, 40 byte
Ini adalah fungsi anonim yang mengambil
y
danx
sebagai bilangan bulat dann
sebagai string, dan mengembalikan string. Anda dapat menyebutnya misalnya seperti inidan itu akan kembali
"63"
.sumber
MATLAB 40 byte
Uji:
sumber
Pyth, 45 byte
coba di sini
sumber
JavaScript (ES6), 78
Fungsi rekursif dengan 2 argumen y dan d.
y
bisa berupa numerik atau string,d
harus berupa string.Sebelum tantangan berubah itu 107 - ... dengan semua keanehan input / output ...
Uji
sumber
n-1
seharusnyay-1
.