İki tamsayı için uzun çarpma işlemini, hiçbir şey yapmak zorunda kalmadan yapmak için iyi bir yol var. Her numaranın rakamını, iki rakam 90 derecelik bir açıyla, eğimli çizgiler şeklinde yazabilirsiniz. Ardından, kesişmeleri ortaya çıkan ayrı sütunlarda kolayca sayabilirsiniz. Bir diyagram muhtemelen bunu açıklığa kavuşturur. İşte hesaplama için bir örnek 21 * 32
:
"Görsel / grafiksel uzun çarpma" için google’a giderseniz çok daha fazla örnek bulacaksınız.
Bu zorlukla ASCII tekniğini kullanarak bu şemaları oluşturmalısınız. Aynı örnek için çıktı şöyle görünür:
\ /
X /
\ / X /
\ X / X
X X / \ /
/ X X X /
/ X \ / X
/ \ X / \
X X
/ X \
/ \
Bunların yapım kurallarını bazı örneklerden (aşağıya bakınız) çözmek muhtemelen en kolay olanıdır, fakat işte bazı detaylar:
- Kesişen bölümler
X
, çizgilerin kesişmeyen bölümleri/
veya\
. - En dıştaki kavşaklardan sonra tam olarak bir parça olmalıdır.
- Farklı rakamlara ait kavşaklar arasında tam olarak bir segment bulunmalıdır. Sıfır basamak varsa, bunlar ardışık
/
veya\
segmentlere neden olur. - Herhangi bir pozitif girişi (en azından 2 16 veya 2 32 gibi makul bir limite kadar ) ve
0
ila arasındaki rakamları desteklemelisiniz9
. Ancak, ne önde ne de sonda olmadığını varsayabilirsin0
. - Fazladan boşluksuz beyaz boşluk ya da sonunda boş ya da sonunda boş satırlar yazdırmamalısınız.
- Sondaki boşlukları yazdırabilirsiniz, ancak şemanın eksen hizalı sınırlama kutusunu aşmamalıdır.
- İsteğe bağlı olarak tek bir izleyen yeni satır yazdırabilirsiniz.
- İki giriş numarasını hangi sırayla alacağınızı seçebilirsiniz. Ancak, her iki yönde de rasgele sayıları desteklemelisiniz, bu nedenle "Önce büyük sayı verilir" gibi bir şey seçemezsiniz.
- Girdiyi dizge olarak alıyorsanız, iki sayı arasında rakam olmayan herhangi bir ayırıcı kullanabilirsiniz.
STDIN (veya en yakın alternatif), komut satırı argümanı veya işlev argümanı yoluyla giriş alarak ve sonucu STDOUT (veya en yakın alternatif), fonksiyon dönüş değeri veya function (out) parametresi ile çıktı alarak bir program veya işlev yazabilirsiniz.
Bu kod golf, en kısa cevap (bayt cinsinden) kazanır.
Örnekler
1*1
\ /
X
/ \
2*61
\ /
\ X /
X X /
/ X X /
/ X X /
/ X X /
/ X X
/ X \ /
/ \ X
X \
/ \
45*1
\ /
\ X
\ X \
\ X \
\ X \
X \
\ / \
\ X
\ X \
\ X \
X \
/ \
21001*209
\ /
X /
/ X
/ / \
\ / / \ /
X / X /
\ / X / X /
\ X / \ / / X /
X X \ / / / X /
/ X \ X / / / X /
/ \ \ / X / / / X /
\ X / X / / / X /
X X / X / / / X /
/ X X / X / / / X
/ X X / X / / / \
/ X X / X / /
/ X X / X /
/ X X / X
/ X X / \
/ X X
/ X \
/ \