Giriş
Forte , sayıların değerlerini değiştirme kavramına dayanan çok tuhaf bir ezoterik dildir. Forte sayıları sabit değil, değişkenlerdir, LET
bunlara yeni değerler atamak için bu komutu kullanabilirsiniz .
Örneğin, LET 2=4-1
şu andan itibaren yürütüldükten sonra 2
değeri değerini alır 3
, yani değer 2
bir ifadede her ortaya çıktığında bunun yerine "değiştirilir" 3
. İfade (1+1)*2
şimdi olarak değerlendirilecektir 9
.
Forte'daki bu talimat hem bilgi depolamak hem de akış kontrolü için kullanılır (satırlar numaralandırılır ve sayılarının değerini değiştirerek yürütme sırasını belirleyebilirsiniz). Bu meydan okumada bu ikinci yönü ele almayacağız.
Meydan okuma
Forte LET
ifadelerinin basitleştirilmiş bir alt kümesi için bir tercüman yazmanız gerekir .
Bu dilbilgisini izleyen bir dizi satır girdi olarak alacaksınız:
<line>::= <number>=<expression>
<expression>::= <number>|<expression>+<number>
Not: bu dilbilgisi geçerli Forte değildir çünkü satır numaraları, LET ve parantezlerden yoksundur (her zaman zorunludur)
Yani, yalnızca hesaplama özetleriyle uğraşmanız ve sayılara değerler atamanız gerekir. Girdide parantez olmayacak ve her ifadenin soldan sağa değerlendirilmesi gerekecektir: kısmi sonuçların yeniden tanımlardan etkilendiğine dikkat edin!
Sayılar, dilinizin yerel tam sayı türünün sınırına (veya hangisi daha yüksekse) her zaman negatif olmayan tamsayılar olacaktır.
Her satır için, ifadenin sonucunu çıkarmalı ve bu sonucu, ilk satırın (muhtemelen yeniden atanmış) değerine atamalısınız; bu, aşağıdaki satırların nasıl yorumlanacağını etkiler.
Bu kod golf , en kısa kod (bayt cinsinden) kazanır!
Diğer kurallar
- Girdi biçimi esnektir, örneğin satırsonu, dize listesi, sayı listesi içeren tek bir dize alabilirsiniz ... girdi.
- Her satır için bir kez çağıran bir REPL ortamında çalıştırılacak bir işlev, tam bir program veya bir çözüm gönderebilirsiniz.
- Standart boşluklar yasaktır, özellikle kodunuzda harici bir Forte yorumlayıcısını arayamazsınız.
Örnekler
Bunların hepsi aynı girdinin parçasıdır. Her satırdan sonra, o satıra göre beklenen çıktı, bazen ilgili yeniden atamaları gösteren bir yorum ile gösterilir (gerekli çıktının bir parçası değil).
5=4
4
6=5
4 # 5 -> 4
7=1+2+5
7
7=5+2+1
4 # Order of operations matters! 5+2 -> 4+2 -> 6 -> 4
18=5+6+7
12
5=3
3 # Remember: 5 -> 4
10=6+4
3 # 6 -> 4 -> 3, 3+3 = 6 -> 3
0
geçerlidir ("Sayılar her zaman negatif olmayan tamsayılar olacaktır")
0
geçerli bir sayı?