Romen rakamları dizesini tamsayıya dönüştürmek için en kısa fonksiyonu oluşturun .
Her harf için kurallar Wikipedia sayfasında bulunabilir . 1000'in üzerindeki harfler, daha yüksek değerlerini belirtmek için etraflarına parantez yerleştirilecektir.
Gereksinimler:
- Romen rakamları 1'den 500.000'e dönüştürülmelidir
- Bir dakikadan kısa sürede tamamlanmalıdır
- Avantaj sağlayabilecek yerleşik işlevleri kullanmaz (Örn: Romen rakamlarını tamsayılara dönüştüren bir işlev)
- Bir işlevdir
İşlevin kesirleri desteklemesi gerekmez. Geçersiz girişler 0 sayısını döndürmelidir.
En kısa fonksiyon kazanır. Beraberlik durumunda en çok oyu alan kazanır.
Test Durumları
Giriş
III
Çıktı
3
Giriş
IIII
Çıktı
0
Giriş
XVI
Çıktı
16
Giriş
(C)(D)(L)MMI
Çıktı
452001
Bana uygun olmayan, yasadışı anlamına gelir ve bu nedenle 0'a dönmelidir.
—
Martin York
@Anon: Sayı, orijinal üçüncü test senaryosunu değiştirdiğimden gelen bir yanlış yazıydı. Geçersiz girdi olarak kabul edileceğinden, uygunsuz formları desteklemesi gerekmez.
—
Kevin Brown
Standart uygulama (ve bu sorunun kopyasının spesifikasyonu) geçersiz girdinin tanımlanmamış davranış olması içindir. Bu soru dört yaşında olduğu ve sadece bir cevabı olduğu için gereksinimleri değiştirmeli miyiz?
—
lirtosiast
@KevinBrown Parantez içindeki harfler için kaynak veya açıklama görmüyorum. Bence codegolf.stackexchange.com/q/16254/43319 ile eşleşecek şekilde özellikleri değiştirmelisiniz ve o zaman cevaplar buradan geçirilebilir.
—
ADAM
(C)(D)(L)MMI
452.001 olur. Değerini nasıl aldın? Ayrıca, bunun "uygunsuz" formları (ör.IC
YerineXCIX
) desteklemesi mi gerekiyor?