Jest to rok MDLXVII w świecie, w którym Imperium Rzymskie nigdy nie upadło, a upadek w ciemne wieki nigdy nie miał miejsca. Ze względu na długi okres Pax Romana stabilność ekonomiczna imperium umożliwiła szybki rozwój technologii.
Rzymianie zaczęli bawić się obwodami i wymyślili genialny kalkulator, który nie wymaga użycia przycisku „równa się”. Nazywają to „notacją rzymsko-polską”
Aby wykonać obliczenia, najpierw wprowadzają operandy, a następnie operację.
Na przykład byłoby 100 + 11 * 20 C XI XX * +
.
dodatkowo
Rzymianie odkryli, że często muszą wykonywać wiele obliczeń w tym samym czasie i wolą, aby metoda zwracała każdą wartość „na stosie” w jakiejś strukturze typu tablica / lista / krotka. (np. X I + X I - CC II +
zwróci [11, 9, 202])
Wyzwaniem jest opracowanie programu kalkulatora zdolnego do wykonywania tych obliczeń.
Wyjaśnienie : Wymagana jest notacja odejmująca. Nie zdawałem sobie sprawy, że nie było to rozpoznawalne w starożytnym imperium rzymskim. Zadanie było zatem dwuznaczne i przepraszam.
Minimalne wytyczne
- Twój wynik będzie w cyfrach arabskich.
- Musisz tylko przekonwertować z cyfr rzymskich do 5000.
- Będziesz musiał obsługiwać operacje +, -, /, * (dodawanie, odejmowanie, dzielenie i mnożenie).
- To, czy podział jest oparty na liczbach zmiennoprzecinkowych, czy na liczbach całkowitych, zależy od implementacji. Albo działa na to wyzwanie.
- Twój wynik będzie musiał obsługiwać liczby do 4 miliardów.
- Najkrótsza odpowiedź ogółem, I wygrywa w każdym języku. To jest Code Golf Challenge, ale uwielbiam różnorodność.
W przypadku remisu, czynniki takie jak obsługa cyfr rzymskich powyżej 5000 lub dodatkowe operacje zostaną uznane za najwcześniejsze zgłoszenie wygra.
Odpowiedzi:
Python 2 + roman , 118 bajtów
Próbny
Nie można go przetestować online ze względu na moduł, z którego korzysta, ale możesz zobaczyć, jak go uruchomić tutaj (pełny program akceptujący dane wejściowe z STDIN - wyrażenie z cudzysłowami - i drukujący dane wyjściowe do STDOUT - w formie listy , stos). Używa nieco starszej wersji, ponieważ nie zawracam sobie głowy tworzeniem nowego GIF-a tylko dla kilku bajtów:
Aby zainstalować pakiet, możesz uruchomić następujące polecenie w Terminalu / Wierszu poleceń:
źródło
pyTester/Py.py
ಠ_ಠHaskell , 217 bajtów
-13 bajtów dzięki Bruce Forte. -73 bajty dzięki Ørjan Johansen.
Wypróbuj online!
Ręczna realizacja, tak!
źródło
l=1:4:5:9:map(10*)l
.SOGL V0.12 , 57 bajtów
Wypróbuj tutaj!
źródło
JavaScript (węzeł) + romans + stk-lang , 74 bajty
Zwraca listę bigintegerów.
Wykonanie
Uruchom następujące czynności:
Następnie wklej funkcję. Przykład:
źródło
$
i>
. Szczerze mówiąc, podoba mi się toDyalog APL , 93 bajty
Wypróbuj online!
116 bajtów bez wbudowanego rzymskiego
źródło
var fn←arr
- odpowiada tovar ← var fn arr
. Tutaj jest używany w wielu miejscach,a,←⍵
jako taki, który dołącza⍵
się do zmienneja
Python 3 ,
280206 bajtówWypróbuj online!
Tym razem z obsługą odejmowania notacji. metoda
c
jest głównym punktem wejścia; drugi to wsparcie.Edytuj dziennik:
źródło
if
ielse
.n+=v-n%v*2
str
zastosowania. Wypróbuj online!JavaScipt (ES6),
152151 bajtówZapisano 1 bajt dzięki user202729
Przypadki testowe
Pokaż fragment kodu
Wyjaśnienie (mniej golfa)
źródło
1e3
również działa i oszczędza niektóre bajty.Galaretka , 82 bajty
Wypróbuj online!
Pierwotnie opublikowane na czacie .
Wyjaśnienie:
Ponieważ Jelly nie ma stosu, umieściłem go w rejestrze.
Po uruchomieniu programu wartością rejestru
®
jest0
, co jest traktowane jak[0]
na potrzeby tego programu.źródło
Python 3 ,
216187 bajtówWypróbuj online!
Ponieważ pojawił się w komentarzach zarówno do pytania, jak i do tej odpowiedzi i prawdopodobnie doprowadził do głosów negatywnych: to przesłanie nie obsługuje notacji odejmującej. Uzasadnienie: Notacja odejmująca była rzadko używana w Cesarstwie Rzymskim i spopularyzowana później (patrz Notacja odejmująca , akapit 3, ostatnie zdanie). Zadanie zakłada Cesarstwo Rzymskie, które opracowało programowalne układy scalone, a nie takie, które uległy takim samym zmianom kulturowym, jak Europa z XIII wieku. Opis nie wspomina o notacji odejmującej i żaden z przykładów go nie używa.
źródło
CIV
(104).