von Karolus » Do, 10.03.2011 13:47
Hallo Construktus
Nein für die römische Zahlendarstellung gibts nichts eingebautes für größere Zahlen, anscheinend gibts auch verschiedene Möglichkeiten der Darstellung für Zahlen > 3000. Siehe
http://de.wikipedia.org/wiki/R%C3%B6mis ... 9Fe_Zahlen (Das betrifft sowohl die verwendeten Zeichen als auch die Darstellungsregeln )
Eine Lösung in Python ohne Anspruch auf Vollständigkeit:
Code: Alles auswählen
numsigns = [(u'\u2188', 100000),
(u'\u2182\u2188', 90000),
(u'\u2187',50000),
(u'\u2182\u2187', 40000),
(u'\u2182', 10000),
(u'M\u2182', 9000),
(u'\u2181', 5000),
(u'M\u2181', 4000),
("M", 1000),
("CM", 900),
("D", 500),
("CD", 400),
("C", 100),
("XC", 90),
("L", 50),
("XL", 40),
("X", 10),
("IX", 9),
("V", 5),
("IV", 4),
("I", 1)]
def dez2rom(n):
result = []
for sign, val in numsigns:
while n >= val:
n -= val
result.append(sign)
return "".join(result)
Zur Anbindung an Calc siehe 2 Antworten weiter oben.
Gruß Karo
Hallo Construktus
Nein für die römische Zahlendarstellung gibts nichts eingebautes für größere Zahlen, anscheinend gibts auch verschiedene Möglichkeiten der Darstellung für Zahlen > 3000. Siehe [url]http://de.wikipedia.org/wiki/R%C3%B6mische_Zahlen#Gro.C3.9Fe_Zahlen[/url] (Das betrifft sowohl die verwendeten Zeichen als auch die Darstellungsregeln )
Eine Lösung in Python ohne Anspruch auf Vollständigkeit:
[code]numsigns = [(u'\u2188', 100000),
(u'\u2182\u2188', 90000),
(u'\u2187',50000),
(u'\u2182\u2187', 40000),
(u'\u2182', 10000),
(u'M\u2182', 9000),
(u'\u2181', 5000),
(u'M\u2181', 4000),
("M", 1000),
("CM", 900),
("D", 500),
("CD", 400),
("C", 100),
("XC", 90),
("L", 50),
("XL", 40),
("X", 10),
("IX", 9),
("V", 5),
("IV", 4),
("I", 1)]
def dez2rom(n):
result = []
for sign, val in numsigns:
while n >= val:
n -= val
result.append(sign)
return "".join(result)[/code]
Zur Anbindung an Calc siehe 2 Antworten weiter oben.
Gruß Karo