Sunting: Saya akan segera memposting versi yang lebih baru dari pertanyaan ini meta-golf
. Tetap diajak bicara!
Sunting # 2: Saya tidak akan lagi memperbarui tantangan, tetapi akan membiarkannya terbuka. The meta-golf
Versi tersedia di sini: /codegolf/106509/obfuscated-number-golf
Latar Belakang:
Sebagian besar angka dapat ditulis dengan hanya 6 simbol yang berbeda:
e
(Konstan Euler)-
(Pengurangan, Bukan Negasi)^
(Eksponen)(
)
ln
(Logaritma Alam)
Misalnya, Anda dapat mengonversi angka imajiner i
menggunakan persamaan ini:
(e-e-e^(e-e))^(e^(e-e-ln(e^(e-e)-(e-e-e^(e-e)))))
Tujuan:
Dengan bilangan bulat apa pun k
melalui cara apa pun yang masuk akal, hasilkan representasi sesingkat mungkin dari angka tersebut hanya dengan menggunakan 6 simbol tersebut.
Contoh:
0 => "e-e"
1 => "ln(e)"
2 => "ln(ee)"
// Since - cannot be used for negation, this is not a valid solution:
// ln(e)-(-ln(e))
-1 => "e-e-ln(e)"
Catatan:
- Mengakhiri kurung dihitung terhadap jumlah total karakter.
ln(
hanya dihitung sebagai 1 karakter.- Segala sesuatu yang lain dihitung sebagai 1 karakter.
n^0=1
- Pesanan operasi berlaku
- Kurung mengalikan diterima, misalnya
(2)(8)=16
,2(5)=10
, daneln(e)=e
. ln e
tidak valid, Anda harus melakukannyaln(e)
code-golf
math
number
number-theory
Julian Lachniet
sumber
sumber
ln(ee...e)
) adalah cara terbaik untuk menggambarkan hal positif. Sunting: tidak, tidak.ln(e^(ln(eeeee)ln(eeee)))
lebih baik untuk 20ln(eeee)^ln(ee)
lebih pendek dariln(eeeeeeeeeeeeeeee)
untuk 16Jawaban:
Python 3, 402 byte
Contoh penggunaan:
Perhatikan bahwa meskipun format output mungkin tidak mencerminkannya, kode dengan benar menghitung semua panjang sesuai dengan spesifikasi pertanyaan.
Ini adalah bruteforce bodoh melalui semua panjang string yang mungkin. Lalu saya menggunakan beberapa penggantian sehingga Python dapat mengevaluasinya. Jika itu sama dengan yang kita inginkan, saya juga mengecek untuk mengecualikan tanda-tanda negatif yang tidak disadari dengan memeriksa AST.
Saya tidak terlalu pandai bermain golf di Python, jadi inilah kode semi-ungolfed kalau ada yang mau membantu!
sumber