Menurut halaman Wikipedia pada angka 69 , dapat dicatat bahwa 69 2 = 4.761 dan 69 3 = 328.509 bersama-sama menggunakan semua angka desimal. Angka 69 sebenarnya adalah angka terendah yang memuaskan properti ini.
Untuk alasan yang sama, 32.043 luar biasa: 32.043 2 = 1.026.753.849 menggunakan semua angka desimal.
Jika kita akan terus berbicara tentang angka yang menarik dengan cara ini, kita perlu beberapa notasi.
Untuk sebagian besar bilangan bulat n , pangkat n 2 , ..., n k akan menggunakan semua sepuluh angka desimal (tidak termasuk angka nol terkemuka) setidaknya satu kali untuk nilai k yang cukup besar . Jika ada, kami akan memanggil terendah seperti k yang CUDDLE ( kumulatif Decimal Digit, Least Eksponen ) dari n .
Tugas
Tulis program atau fungsi yang menerima satu bilangan bulat non-negatif n sebagai input dan menghitung serta mengembalikan CUDDLE - nya .
Jika n tidak memiliki CUDDLE , Anda dapat mengembalikan apa pun kecuali bilangan bulat positif, termasuk kesalahan atau string kosong, selama kode Anda akhirnya berhenti.
Uji kasus
Kolom kiri adalah input, kolom kanan adalah output.
0
1
2 15
3 10
4 10
5 11
6 12
7 7
8 5
9 6
10
11 7
12 6
13 6
14 7
15 9
16 5
17 7
18 4
19 5
20 15
26 8
60 12
69 3
128 3
150 9
200 15
32043 2
1234567890 3
Aturan tambahan
Kode Anda harus bekerja untuk semua input hingga 255 .
Perhatikan bahwa ini melibatkan berurusan dengan angka yang cukup besar. 20 15 sudah lebih besar dari 2 64 .
Jika Anda mencetak hasilnya, itu mungkin diikuti oleh linefeed.
Aturan standar kode-golf berlaku.
26->8
karena ini adalah contoh terkecil di mana termasukn^1
memberikan jawaban yang salah6
, kesalahan yang saya buat dalam kode saya.Jawaban:
Pyth, 16 byte
Cobalah online: Demonstrasi atau Test Suite
Seperti solusi lain, saya menggunakan 15 sebagai batas atas. Saya percaya bahwa ini juga CUDDLE maksimal . Saya menguji semua angka hingga 10.000.000, dan tidak ada angka dengan CUDDLE lebih besar dari 15.
Angka dengan CUDDLE > = 10 sudah sangat jarang. Satu-satunya angka dengan CUDDLE 15 adalah angka
2*10^k
. Tidak ada angka dengan CUDDLE 14 atau 13, CUDDLE 12 hanya muncul untuk angka6*10^k
, CUDDLE 11 hanya untuk5*10^k
.Jadi saya pikir kode ini berfungsi dengan baik untuk setiap nomor alami.
Mencetak pesan kesalahan, jika tidak ada solusi.
Penjelasan:
sumber
Python 2, 56
Solusi rekursif. Menghitung eksponen
i
mulai dari2
dan mengakumulasi digit kekuatann**i
ke dalam strings
. Ketikas
memiliki semua sepuluh digit, pengembalianTrue
, yang sama dengan1
, dan jika tidak berulang dan menambah1
. Ini ternyata lebih pendek daripada kembalii
.Memanggil fungsi pada nomor tanpa CUDDLE berakhir dengan
Internal error: RangeError: Maximum call stack size exceeded
. Angka hingga255
yang melakukan output tidak perlu lebih dari 15 iterasi.Karena kebiasaan Python 2 yang mengganggu menambahkan sejumlah
L
besar, kita benar-benar menginisialisasi string digit keL
dan memeriksa apakah ukuran yang ditetapkan setidaknya 11. Python 3 menyimpan 2 karakter dengan tidak membutuhkan ini, tetapi kehilangan 3 karakter pada penggunaanstr
backticks yang berlebihan. Python 3.5 menyimpan 2 karakter lagi dengan set unpacking, menghemat char di atas Python 2 secara total:sumber
Ruby,
6765 karakterBekerja dekat-instan untuk semua kasus uji, bahkan yang> 255.
Kesalahan untuk nomor tanpa CUDDLE.
Penjelasan:
sumber
CJam, 28 byte
Cobalah online
Ini bergantung pada fakta bahwa CUDDLE (jika ada) tidak pernah lebih besar dari 15 untuk rentang input, seperti yang pertama kali diamati oleh @xnor.
Mungkin ada cara yang lebih baik untuk menghasilkan output untuk kasus di mana tidak ada solusi. Saya akan memperbarui jika saya memikirkan sesuatu.
Penjelasan:
sumber
Mathematica, 103 byte
Tampaknya hanya kekuatan 10 yang pada akhirnya tidak akan memiliki CUDDLE, jadi mereka dilewati. Fungsi menyimpan daftar angka yang terlihat dan berhenti ketika tidak ada lagi nol di dalamnya.
Keluaran:
sumber
log_10(n)
tidak rasional, diberikan bilangan bulat positif di manak
adam
representasi desimaln^m
dimulai dengank
. Yang berarti bahwa melewatkan kekuatan 10 (dan 0) baik-baik saja :)JavaScript (ES6) 188
Tidak buruk untuk bahasa yang terbatas pada integer 53 bit.
Tes menjalankan cuplikan di bawah ini di peramban yang mengimplementasikan EcmaScripts 6, termasuk fungsi panah dan operator sebar (AFAIK Firefox)
sumber
PowerShell, 94 byte
Tidak ada yang terlalu pintar tentang hal itu, tetapi perpipaan ke
sort -U[nique]
adalah cara yang rapi untuk meningkatkanset()
fungsionalitas Python untuk penggunaan seperti ini, tanpa secara eksplisit menambahkan item ke hashtable.misalnya
sumber
gawk 4, 73 + 5 untuk flags = 78 byte
Untuk setiap digit
0
bis9
itu bertemu dalam kekuasaan input, ia menetapkan bit yang mewakili2^digit
dia
, sampai pertama 10 digit ditemukan (a == 1023 == 2^10-1
) atau sudah ada lebih dari 15 iterasi.Harus dipanggil dengan pemisah bidang kosong dan bendera -M untuk angka besar.
Mengutak-atik ini, saya menemukan urutan berikut untuk CUDDLE yang berbeda:
sumber