Come convertire i numeri arabi in numeri romani con Go

Come convertire i numeri arabi in numeri romani con Go

I numeri romani sono un sistema numerico antico, usato dai romani, che rappresenta i numeri attraverso una combinazione di lettere. I numeri arabi, che sono quelli comunemente usati oggi (0-9), possono essere convertiti in numeri romani seguendo alcune regole ben definite. Questo articolo spiegherà come implementare un convertitore di numeri arabi in numeri romani utilizzando il linguaggio di programmazione Go.

Prima di tutto, una breve introduzione ai numeri romani. I simboli principali sono:

SimboloValore
I1
V5
X10
L50
C100
D500
M1000

Le regole principali per la conversione sono:

  • Un simbolo più grande che precede uno più piccolo viene sommato (es. VI = 6, XV = 15).
  • Un simbolo più piccolo che precede uno più grande viene sottratto (es. IV = 4, IX = 9).

La logica della conversione dei numeri arabi in numeri romani può essere descritta in questi passi:

  1. Creiamo una mappa di tutti i valori romani con i loro equivalenti arabi.
  2. Iteriamo sulla mappa partendo dal numero arabo più grande e continuiamo a sottrarre dal numero arabo finché possibile, aggiungendo il simbolo romano corrispondente alla stringa di output.

package main

import (
	"fmt"
)

func arabicToRoman(n int) string {
	// Creiamo una slice con i valori arabi e i loro corrispondenti romani
	values := []int{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}
	symbols := []string{"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}

	// La variabile per memorizzare il risultato finale
	roman := ""

	// Iteriamo sui valori e costruiamo la stringa del numero romano
	for i := 0; i < len(values); i++ {
		for n >= values[i] {
			roman += symbols[i]
			n -= values[i]
		}
	}

	return roman
}

Spiegazione del codice:

  • Mappa dei Valori e Simboli: Abbiamo creato due slice: valori contiene i numeri arabi corrispondenti, mentre simboli contiene i simboli romani equivalenti. Questa mappa viene iterata per costruire il numero romano.

  • Costruzione del Numero Romano: All'interno del ciclo for, continuiamo a sottrarre i valori dal numero arabo e a concatenare i simboli romani fino a quando non siamo scesi a 0.

Considerazioni:

  1. Range dei numeri: I numeri romani classici vengono utilizzati principalmente per rappresentare numeri fino a poche migliaia. Con il nostro approccio, possiamo gestire numeri fino a circa 3999. Se si volessero numeri più grandi, bisognerebbe considerare l'utilizzo di una notazione diversa (come i numeri romani con barre per indicare moltiplicazioni per 1000).

  2. Valori negativi e zero: I numeri romani non hanno una rappresentazione per lo zero o per i numeri negativi. Pertanto, è consigliabile aggiungere un controllo per gestire questi casi.

Conclusione

Convertire numeri arabi in numeri romani utilizzando Go è un ottimo esercizio per comprendere la logica di base della programmazione e le strutture dati come slice e loop. In questo articolo abbiamo visto come creare un semplice convertitore di numeri arabi in numeri romani, e come possiamo espandere e migliorare il codice per gestire scenari più complessi.

Torna su