C'è un buon modo per eseguire una lunga moltiplicazione per due numeri interi senza dover fare altro che contare, che occasionalmente viene condiviso su Internet. Scrivi le cifre di ogni numero come un gruppo di linee inclinate, con i due numeri con un angolo di 90 gradi. Quindi puoi semplicemente contare le intersezioni nelle colonne separate che si presentano. Un diagramma probabilmente lo chiarirà. Ecco un esempio per il calcolo 21 * 32:

Se cerchi Google per "moltiplicazione visiva / grafica" troverai molti altri esempi.
In questa sfida, devi generare questi diagrammi usando l'arte ASCII. Per lo stesso esempio, l'output sarebbe simile al seguente:
\ /
X /
\ / X /
\ X / X
X X / \ /
/ X X X /
/ X \ / X
/ \ X / \
X X
/ X \
/ \
Probabilmente è più facile capire le regole di costruzione per questi da alcuni esempi (vedi sotto), ma qui alcuni dettagli:
- I segmenti intersecanti sono
X, i segmenti non intersecanti delle linee sono/o\. - Dovrebbe esserci esattamente un segmento dopo le intersezioni più esterne.
- Dovrebbe esserci esattamente un segmento tra le intersezioni appartenenti a cifre diverse. Se ci sono cifre zero, queste si tradurranno in segmenti consecutivi
/o\. - Devi supportare qualsiasi input positivo (almeno fino a un limite ragionevole come 2 16 o 2 32 ) e qualsiasi cifra da
0a9. Tuttavia, si può presumere che non ci siano né iniziali né finali0. - Non è necessario stampare spazi bianchi iniziali estranei o linee vuote iniziali o finali.
- È possibile stampare spazi vuoti finali ma non deve superare il riquadro di delimitazione allineato agli assi del diagramma.
- Se lo si desidera, è possibile stampare una nuova riga finale.
- Puoi scegliere in quale ordine prendere i due numeri di input. Tuttavia, è necessario supportare numeri arbitrari per entrambi gli orientamenti, quindi non è possibile scegliere qualcosa come "Il numero più grande viene dato per primo".
- Se stai prendendo input come stringa, puoi usare qualsiasi separatore senza cifre tra i due numeri.
È possibile scrivere un programma o una funzione, prendendo l'input tramite STDIN (o l'alternativa più vicina), l'argomento della riga di comando o l'argomento della funzione e producendo il risultato tramite STDOUT (o l'alternativa più vicina), il valore di ritorno della funzione o il parametro della funzione (out).
Questo è il codice golf, la risposta più breve (in byte) vince.
Esempi
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 \
/ \