Meydan okuma:
Okur sosyal ağlarda dolaşan aptalca bir bulmaca var:
8 + 2 = 16106
5 + 4 = 2091
9 + 6 = ?
Bir fonksiyon veya operatör uygulanması iki pozitif tam sayı verildiğinde, bu x
ve y
bu şekilde x > y > 0
, bir şekilde doğru yanıt veren tamsayı cevabım hane basamak vardır, x * y
basamak ardından x + y
basamak takip x - y
. Çok basit.
Kurallar:
- Standart boşluklara izin verilmez.
- Bu kod-golf yani bayt cinsinden en kısa kod kazanır.
- Giriş verisi doğrulama gerekli değildir . Bu program geçersiz girdi verildiğinde çökebilir veya geri dönebilir.
- Sayısal işlevler ve işleçler kullanmanıza izin verilir (tam sayı ve kayan nokta, matematik kitaplığı işlevleri ve sayıları kabul edip döndüren diğer işlevler dahil).
- Varsa, bir sayının basamağını döndüren bir işlev kullanmanıza izin verilir.
- Sen ediyoruz değil dizeleri veya kodunuzda birleştirme her yerde her türlü kullanmasına izin.
- Sonuç, hangi dilde geçerli olursa, yığına iade edilebilir veya itilebilir. Sonuç bir dize değil tam sayı olmalıdır.
Basit kod:
Aşağıdaki kod adında bir dyadic işleci oluşturur X
.
X ← {(⍺-⍵) + ((⍺ + ⍵) x 10 x 1 + ⌊10⍟⍺-⍵) + ⍺ x ⍵ * 10 * (2 + ⌊10⍟⍺ + ⍵) + ⌊10⍟⍺- ⍵}
Açıklama:
APL'de sağdan sola doğru değerlendirirsiniz.
⍺ and ⍵
sırasıyla sol ve sağ işlenen⌊10⍟⍺-⍵
okur:floor of log10(⍺-⍵)
. İlk önce çıkarma işlemi, ardından logaritma sonra döşeme. Sağdan sola doğru. log10, rakamlarını saymak için yapılır⍺-⍵
(daha sonra 1 toplamalısınız).⍺×⍵×10*(...)
okur:10 to the (...)th power, multiplied by ⍵, multiplied by ⍺
Bu nedenle,
⍺×⍵×10*(2+⌊10⍟⍺+⍵)+⌊10⍟⍺-⍵
toplam sayı ve fark sayısının toplamı ile sola kaydırılan üründür. 10'luk bir güçle çarpmak bir tamsayı sola kaydırır.((⍺+⍵)×10*1+⌊10⍟⍺-⍵)
farkın basamak sayısı ile sola kayan toplamdır.(⍺-⍵)
fark. Burada kaydırma gerekmez.X←{...}
APL'de bir işleci nasıl tanımladığınızdır.
Örnekler:
8 X 2
16106
5 X 4
2091
9 X 6
54153
GNU dc:
Aşağıdaki kod adlı bir makro oluşturur a
:
[sysx10lxly-dseZdsclxly+dsd+Z1+^lxly**10lc^ld*+le+]sa
Açıklama:
sx
vesy
bir öğeyi yığından çıkarın ve kayıtlarax
vey
sırasıyla kaydedin .lx
vely
bir elemanı kayıt defterlerinden yükleyinx
vey
sırasıyla istifin üzerine itin.d
yığındaki son öğeyi çoğaltır.^
İki sayının gücünü hesaplar.Z
Bir sayı açar ve sayı sayısını döndürür. Bu yapılır çünküdc
logaritma fonksiyonu yoktur.[...]sa
Makroyu kayıt defterinde saklara
.la
yükler.x
Makroyu yığının en üstünde yürütür.
Örnekler:
8 2 laxn
16106
5 4 laxn
2091
9 6 laxn
54153