Giriş:
Bir tam sayı.
Çıktı:
- Önce tamsayıyı eşdeğer Romen Rakamına dönüştürün.
- Sonra Romen Rakamının her büyük harfini ASCII / UNICODE ondalık değerine dönüştürün.
- Ve bunların toplamını çıkar.
Misal:
1991 -> MCMXCI -> 77+67+77+88+67+73 -> 449
^ input ^ output
Romen Rakamları: İşte belki de yararlı bir Roma Rakamı Dönüştürücüsü.
Zorluk kuralları:
- Standart Roma Sayısal kuralları gibi pek alternatifi formları uygulanır
IIII
veyaVIIII
yerineIV
veIX
. * - 1.000'den fazla Romen Rakamının üzerindeki Macron çizgileri
¯
(UNICODE no. 175). Yani bir satır+175
iki, iki satır sayılır+350
. - Tam sayıları temsil ettiği sürece her türlü giriş ve çıkış türünü kullanmanıza izin verilir.
- Test senaryoları aralığında olacaktır
1 - 2,147,483,647
.
* Romen Rakamıyla ilgili kurallar (Wikipedia'dan alıntı):
Sayılar, sembollerin birleştirilmesi ve değerlerin eklenmesi ile oluşturulur, böylece
II
iki (iki) veXIII
onüç (on ve üç) olur. Her sayının, konuma göre on, yüz vb. Katları temsil etmek yerine sabit bir değeri olduğu için, 207 veya 1066 gibi sayılarda olduğu gibi, sıfırların "yer tutması" na gerek yoktur; bu sayılarCCVII
(iki yüz, beş ve iki) veMLXVI
(bin, elli, on, beş ve bir) olarak yazılır .Semboller, en büyükten başlayarak değer sırasına göre soldan sağa yerleştirilir. Bununla birlikte, birkaç özel durumda, dört karakterin art arda tekrarlanmasını önlemek için (
IIII
veya gibiXXXX
), çıkarma gösterimi genellikle aşağıdaki gibi kullanılır:
I
daha önce yerleştirilmişV
veyaX
birini daha az gösterir, bu nedenle dördüIV
(biri beşten az) ve dokuz tanesiIX
(ondan az)X
daha önce yerleştirilirL
veyaC
ondan daha az gösterir, bu nedenle kırkXL
(elli'den on daha az) ve doksanXC
(yüzden ondan az)C
önce yerleştirilirD
veyaM
yüz daha az gösterir, yani dört yüzCD
(yüz az beş yüz) ve dokuz yüz olanCM
(yüz az bin az)
Örneğin,MCMIV
1904 1904 olan (M
bin olduğuCM
bir dokuz yüz veIV
dört).Romen rakamlarının modern kullanımına bazı örnekler:
1954 olarakMCMLIV
; 1990 olarakMCMXC
; 2014MMXIV
KAYNAK OLARAK
Genel kurallar:
- Bu kod golf , bayt en kısa cevap kazanır.
Kod golf dillerinin, kod yazmayan dillerle yanıt göndermenizi engellemesine izin vermeyin. 'Herhangi bir' programlama dili için mümkün olduğunca kısa bir cevap bulmaya çalışın. - Cevabınız için standart kurallar geçerlidir , bu nedenle STDIN / STDOUT, fonksiyon / yöntemi uygun parametrelerle, tam programları kullanmanıza izin verilir. Çağrınız.
- Varsayılan Loopholes yasaktır.
- Mümkünse, lütfen kodunuz için test içeren bir bağlantı ekleyin.
- Ayrıca, gerekirse bir açıklama ekleyin.
Test senaryoları:
100 -> 67
1 -> 73
4 -> 159
22 -> 322
5000 -> 261
2016 -> 401
1000000000 -> 427
1991 -> 449
9999 -> 800
1111111111 -> 2344
2147483647 -> 5362
9999
-> M(X)CMXCIX
-> 77+263+67+77+88+67+73+88
-> 800
ve 2147483647
-> ((MMCXLV)MMCDLXXX)MMMDCXLVII
-> 427+427+417+438+426+436 + 252+252+242+243+251+263+263+263 + 77+77+77+68+67+88+76+86+73+73
-> 5362
. Bu yüzden ikincisini düzelttim, ama 9999
doğruydu.
2222222222
belirtilen aralıkta değil. Ayrıca katılıyorum 5362
.