Lezzet metni
Yığın tabanlı esolang Underload fonksiyonel programlamaya bazı ilginç bağları var. Bunlardan biri, sayısal veri türünün işlenmesidir - lambda hesabı gibi, N sayısını doğal olarak gerçekleştiren bir işlevle doğal N sayısını temsil edersiniz.
İşleri kolaylaştırmak için, yalnızca aşağıdaki Düşük Yük komutları alt kümesini dikkate alacağız:
:
- Bu komut, yığındaki en üst öğeyi çoğaltır.*
- Bu komut, yığındaki ilk iki öğeyi tek bir öğede birleştirir.
Bir Düşük Yük rakamını N dizesi olarak tanımlarız :
ve *
yürütüldüğünde yığındaki en üst öğeyi tüketir ve bu öğenin birlikte birleştirilmiş N kopyalarını üretiriz. Bazı örnekler:
- 0, -1, 1/2, Under gibi Düşük yük sayıları yoktur.
- Boş dize
Underload rakamı 1'dir, çünkü yığına dokunulmaz.
:*
Düşük öğeyi 2 olarak gösterir, çünkü üst öğeyi çoğaltır ve sonra bu iki kopyayı tek bir öğede birleştirir:(A):*
=(A)(A)*
=(AA)
.::**
Düşük yük rakamı 3:(A)::**
=(A)(A):**
=(A)(AA)*
=(AAA)
.:::***
Düşük yük rakamı 4'tür.:*:*
ayrıca Düşük yük rakamı 4:(A):*:*
=(AA):*
=(AA)(AA)*
=(AAAA)
.
Genel olarak, M ve N Düşük yük sayıları ise M
ve varsa N
, o zaman :N*
N + 1 MN
rakamı ve M × N rakamı olduğunu göreceksiniz .
Meydan okuma
Göreviniz, en kısa programı (STDIN'de girdi alarak) veya işlevi (bağımsız değişken üzerinden girdi alarak) , Dize olarak girdisi için Düşük yük rakamının en kısa gösterimini üreten bir işlev yazmaktır . Yani, giriş pozitif bir doğal sayı N> 1 ise, karakterlerdeki uzunluğu diğer Düşük yük sayılarının N değerinden küçük veya ona eşit olan bir Düşük Yük rakamı N üretmelisiniz.
Örnek giriş ve çıkışlar: ("Giriş - OUTPUT
.")
- 1 -
.
- 2 -
:*
. - 5 -
::*:**
(2 × 2 + 1). - 7 -
::*::***
(2 × 3 + 1) veya:::**:**
(3 × 2 + 1). - 33 -
::*:*:*:*:**
(2 × 2 × 2 × 2 × 2 + 1). - 49 -
::*:*:*:*::***
(16 × 3 + 1, uzunluk 14) ancak değil::*::***::*::***
(7 × 7, uzunluk 16).
Giriş pozitif bir doğal sayı değilse, bir hata döndürmekte, tanımlanmamış davranışlar üretmekte ve hatta sonlanamamakta serbestsiniz. Gönderinizin cevabı bulma yönteminin açıklaması takdir edilmektedir.
Standart boşluk deliği kısıtlamaları geçerlidir: ekstra giriş yok, web isteği yok, çıkış / dönüş değeri tam olarak cevap olmalı ve sonsuz bir rastgele akış :
ve *
vb olmamalıdır .
x
olan 2*A117498(x)
burada A117498 bir ekleme zinciri bulmak için ikili ve faktör yöntemlerin en uygun kombinasyonunu verir.