Angka Friedman adalah bilangan bulat positif yang sama dengan ekspresi non-sepele yang menggunakan digit sendiri dalam kombinasi dengan operasi +, -, *, /, ^, tanda kurung dan gabungan.
Angka Nice Friedman adalah bilangan bulat positif yang sama dengan ekspresi non-sepele yang menggunakan digit sendiri dalam kombinasi dengan operasi yang sama, dengan digit dalam urutan aslinya.
Angka Friedman yang sangat bagus (VNFN), yang saya temukan di sini, adalah angka Friedman yang bagus yang dapat ditulis tanpa bagian ekspresi yang kurang cantik (menurut saya). Kurung, konkatasi, dan negasi unary tidak diizinkan.
Untuk tantangan ini, ada tiga kemungkinan cara menulis ekspresi tanpa tanda kurung.
Awalan: Ini sama dengan asosiasi kiri. Jenis ekspresi ini ditulis dengan semua operator di sebelah kiri digit. Setiap operator berlaku untuk dua ekspresi berikut. Contohnya:
*+*1234 = *(+(*(1,2),3),4) = (((1*2)+3)*4) = 20
VNFN yang dapat ditulis dengan cara ini adalah 343:
^+343 = ^(+(3,4),3) = ((3+4)^3) = 343
Postfix: Ini setara dengan asosiasi kanan. Ini seperti notasi awalan, kecuali bahwa operasi pergi ke kanan digit. Setiap operator berlaku untuk dua ekspresi sebelumnya. Contohnya:
1234*+* = (1,(2,(3,4)*)+)* = (1*(2+(3*4))) = 14
VNFN yang dapat ditulis dengan cara ini adalah 15655:
15655^+** = (1,(5,(6,(5,5)^)+)*)* = (1*(5*(6+(5^5)))) = 15655
Infix: Notasi infix menggunakan urutan operasi standar untuk lima operasi. Untuk keperluan tantangan, urutan operasi itu akan didefinisikan sebagai berikut: Memberhentikan ^
terlebih dahulu, benar secara asosiatif. Kemudian, kurung *
dan /
secara bersamaan, pergi secara asosiatif. Akhirnya, kurung +
dan -
secara bersamaan, pergi secara asosiatif.
1-2-3 = (1-2)-3 = -4
2/3*2 = (2/3)*2 = 4/3
2^2^3 = 2^(2^3) = 256
1^2*3+4 = (1^2)*3+4 = 7
VNFN yang dapat ditulis dengan cara ini adalah 11664:
1*1*6^6/4 = (((1*1)*(6^6))/4) = 11664
Tantangan: Diberikan bilangan bulat positif, jika dapat dinyatakan sebagai ekspresi non-sepele dari digitnya sendiri baik dalam notasi awalan, infiks atau postfix, output ekspresi itu. Jika tidak, tidak menghasilkan apa-apa.
Klarifikasi: Jika beberapa representasi dimungkinkan, Anda dapat menampilkan subset yang tidak kosong. Misalnya, 736 adalah VNFN:
+^736 = 736
7+3^6 = 736
+^736
, 7+3^6
atau keduanya akan menjadi keluaran yang dapat diterima.
Ekspresi "Trivial" berarti ekspresi yang tidak menggunakan operator apa pun. Ini hanya relevan untuk satu angka angka, dan berarti bahwa satu angka angka tidak boleh VNFNs. Ini diwarisi dari definisi Nomor Friedman.
Jawaban harus berjalan dalam hitungan detik atau menit pada input di bawah satu juta.
IO: Aturan IO standar. Program penuh, fungsi, kata kerja atau sejenisnya. STDIN, baris perintah, argumen fungsi atau yang serupa. Untuk menghasilkan "Tidak Ada", string kosong, baris kosong, null
atau serupa, dan koleksi kosong semuanya baik-baik saja. Keluaran dapat berupa string yang dibatasi dengan karakter yang tidak bisa dalam representasi, atau mungkin kumpulan string.
Contoh:
127
None
343
^+343
736
736^+
7+3^6
2502
None
15655
15655^+**
11664
1*1*6^6/4
1^1*6^6/4
5
None
Penilaian: Ini adalah kode golf. Bytes paling sedikit menang.
Juga, jika Anda menemukannya, tolong berikan Nomor Friedman Sangat Bagus baru dalam jawaban Anda.
Parentheses, concatenation and unary negation are disallowed.
*(+(*(1,2),3,4)
hilang satu paren dekat, setelah,3