Teks rasa
Esolang Underload berbasis stack memiliki ikatan yang menarik dengan pemrograman fungsional. Salah satunya adalah perlakuan terhadap datatype numerik — seperti kalkulus lambda, Anda mewakili bilangan alami N dengan fungsi yang melakukan tindakan N kali.
Untuk mempermudah, kami hanya akan mempertimbangkan hanya sebagian perintah Underload berikut:
:
- Perintah ini menduplikasi item teratas di stack.*
- Perintah ini menggabungkan dua item teratas di stack menjadi satu item.
Kami mendefinisikan angka Underload N sebagai string :
dan *
yang, ketika dieksekusi, mengkonsumsi item teratas di stack, dan menghasilkan N salinan item yang digabungkan bersama-sama. Beberapa contoh:
- Tidak ada angka Underload 0, -1, 1/2, π.
- String kosong
adalah angka Underload 1, karena membiarkan tumpukan tidak tersentuh.
:*
adalah Underload numeral 2, karena menduplikasi item teratas, dan kemudian menggabungkan kedua salinan tersebut menjadi satu item:(A):*
=(A)(A)*
=(AA)
.::**
adalah angka Underload 3:(A)::**
=(A)(A):**
=(A)(AA)*
=(AAA)
.:::***
adalah angka Underload 4.:*:*
juga merupakan angka Underload 4:(A):*:*
=(AA):*
=(AA)(AA)*
=(AAAA)
.
Secara umum, Anda akan menemukan bahwa, jika M
dan N
adalah angka Underload M dan N, maka :N*
adalah angka N +1, danMN
merupakan angka M × N.
Tantangan
Tugas Anda adalah menulis program terpendek (mengambil input pada STDIN) atau fungsi (mengambil input melalui argumen) yang menghasilkan representasi terpendek dari angka Underload untuk inputnya sebagai string. Dengan kata lain, jika inputnya adalah bilangan asli positif N> 1, Anda harus menghasilkan angka N Underload yang panjang karakternya kurang dari atau sama dengan setiap Underload lainnya bilangan N.
Input dan output sampel: ("Input - OUTPUT
.")
- 1 -
.
- 2 -
:*
. - 5 -
::*:**
(2 × 2 +1). - 7 -
::*::***
(2 × 3 +1) atau:::**:**
(3 × 2 +1). - 33 -
::*:*:*:*:**
(2 × 2 × 2 × 2 × 2 + 1). - 49 -
::*:*:*:*::***
(16 × 3 + 1, panjang 14) tetapi tidak::*::***::*::***
(7 × 7, panjang 16).
Jika inputnya bukan angka alami positif, Anda bebas untuk mengembalikan kesalahan, menghasilkan perilaku yang tidak terdefinisi, atau bahkan gagal menghentikannya. Penjelasan tentang metode kiriman Anda untuk menemukan jawabannya sangat dihargai.
Batasan celah jalan standar berlaku: tidak ada input tambahan, tidak ada permintaan web, nilai output / pengembalian harus tepat jawaban dan bukan aliran acak tak terbatas dari :
dan *
, dll.
x
adalah di 2*A117498(x)
mana A117498 memberikan kombinasi optimal metode biner dan faktor untuk menemukan rantai tambahan.