Tulis program atau fungsi yang menggunakan bilangan bulat positif N. Keluarkan daftar semua angka desimal berbeda yang dapat ditulis dalam karakter N persis menggunakan digit ( 0123456789
), titik desimal ( .
), dan tanda negatif ( -
).
Sebagai contoh, beberapa nomor yang akan di daftar keluaran N = 4 adalah 1337
, 3.14
, .999
, -789
, -2.7
, dan -.09
.
Angka-angka harus ditulis dengan cara biasa, tetapi dalam bentuk sesingkat mungkin . Ini berarti:
Titik desimal hanya boleh dimasukkan jika angka tersebut bukan bilangan bulat.
- mis
45.0
dan45.
harus dituliskan sebagai polos45
-45.00
harus ditulis sebagai-45
- mis
Seharusnya tidak ada angka nol di sebelah kiri titik desimal.
03
dan003
harus ditulis sebagai3
, namun30
dan300
baik-baik saja karena mereka0.3
dan00.3
harus ditulis sebagai adil.3
-03
harus ditulis sebagai-3
-0.3
harus ditulis sebagai-.3
Seharusnya tidak ada trailing nol di sebelah kanan titik desimal
.50
dan.500
harus ditulis sebagai.5
900.090
harus ditulis sebagai900.09
Pengecualian untuk dua aturan terakhir adalah nol itu sendiri, yang harus selalu ditulis sebagai biasa
0
.Tanda-tanda positif (
+
) tidak boleh digunakan karena tidak perlu memperpanjang jumlahnya.
Perhatikan juga bahwa tanda negatif ( -
) tidak boleh digunakan sebagai tanda pengurangan. Seharusnya hanya muncul sebagai karakter pertama angka kurang dari nol.
Memformat
Urutan daftar output angka tidak masalah. Itu bisa naik, turun, atau benar-benar tercampur. Yang penting hanyalah semua angka berbeda yang dapat ditulis dalam huruf N ada.
Daftar dapat diformat dengan cara yang masuk akal, menggunakan spasi, baris baru, koma, atau mungkin sesuatu yang lain di antara angka-angka, selama semuanya konsisten. Tanda kurung terkemuka dan tertinggal (atau serupa) baik-baik saja tetapi hal-hal seperti kutipan di sekitar angka tidak. (Yaitu tidak terlihat mencampur string dan int / mengapung dalam output.)
Misalnya, ketika N = 1, beberapa output yang valid adalah:
0 1 2 3 4 5 6 7 8 9
[1, 2, 3, 4, 5, 6, 7, 9, 0]
ans = { 5 8 9 1 3 2 0 3 4 7 6 }
Tetapi ini tidak valid:
[0, 1, 2, 3, 4, "5", "6", "7", "8", "9"]
Contohnya
N = 1 -> 0 1 2 3 4 5 6 7 8 9
N = 2 -> -9 -8 -7 -6 -5 -4 -3 -2 -1 .1 .2 .3 .4 .5 .6 .7 .8 .9 10 11 12 ... 97 98 99
N = 3 -> -99 -98 ... -11 -10 -.9 -.8 ... -.2 -.1 .01 .02 ... .98 .99 1.1 1.2 ... 1.9 2.1 2.2 ... 2.9 3.1 ...... 9.9 100 101 ... 998 999
Daftar dalam urutan menaik, elips di beberapa tempat untuk kenyamanan membaca.
Mencetak gol
Kode terpendek dalam byte menang. Dalam hal ikatan, jawaban yang lebih tinggi menang
-0
output yang valid?Also note that the negative sign (-) should not be used as a subtraction sign. It should only appear as the first character of numbers less than zero.
0
".Jawaban:
Pyth,
4745 byteTerima kasih kepada FryAmTheEggman karena memperhatikan bahwa pesanan tidak masalah.
Cobalah online.
Runtime itu mengerikan, pada dasarnya O (12 n ), tapi saya mengujinya untuk
n
= 6 di komputer saya (yang butuh 2 menit). Berjalann
≥ 5 akan habis waktu online.Karena cara saya menghasilkan karakter
0123456789.-
, outputnya dalam urutan yang sangat aneh.Seseorang dapat secara teknis menghapus
{
dekat akhir, tetapi akan menghasilkan kompleksitas O (19 n ). (Ini juga akan menghasilkan banyak duplikat, tetapi itu dibolehkan.)Penjelasan
Bagian utama dari kode ini adalah
".- \..*\. ^-?0. [.-]0*$"
, yang berisi regex, output apa pun tidak boleh cocok.sumber
Pyth, 57 byte
Cobalah menggunakan penerjemah online .
Terlalu lama, dan dengan runtime yang mengerikan (membutuhkan beberapa detik untuk N = 4, berjalan dengan N = 5 tidak disarankan).
Penjelasan regex:
sumber
*Q
permutasi Anda sebelum+
jadi hanya mempengaruhi digit, ini seharusnya meningkatkan kinerja sedikit. Bahkan mungkin membantu menghemat beberapa byte di regex?Julia,
126117 byteIni adalah fungsi lambda yang menerima integer dan mengembalikan array string. Untuk menyebutnya, tetapkan ke variabel. Pendekatan di sini sama dengan jawaban Doorknob's Pyth .
Tidak Disatukan:
sumber
MATL , 60 byte
Cobalah online!
Ini menggunakan kekuatan super-brute (melalui kekuatan Cartesian) diikuti dengan penyaringan (melalui ekspresi reguler). Saya akan menambahkan penjelasan nanti.
Hasilnya ditampilkan di akhir program. Ini mungkin memakan waktu cukup lama. Jika Anda ingin melihat hasil yang dihasilkan, tambahkan
D
di akhir :sumber