27. september 2001 - 14:23Der er
29 kommentarer og 2 løsninger
algoritme til konvertering af arabertal til romertal (og omvendt)
Kan en sådan algoritme laves? Man kan selvfølgelig \"lave\" et array der indeholder alle tal overhovedet og så slå op i det - men det er vist ikke særligt hensigtsmæssigt ;)
Når jeg tænker problemet igennem løber jeg hele tiden panden mod muren i forbindelse med reglerne for konvertering af romertal (overholder ikke grådighedsprincippet). At der også findes andre romertal end de almindeligt kendte I,V,X,L,C,D og M, gør ikke just problemet nemmere...
<ole> Nu er romertal jo historisk set ikke et enkelt system...der har været flere forskellige notationer, men hvis du mener den moderne notation af romertal - som man bl.a. kender den fra Hollywood-film - så prøv at søge på Google. Der er masser af \'frem og tilbage\' konvertere på nettet, både som Java appletter og som JavaScripts. F.eks: http://www.geocities.com/TimesSquare/Castle/3224/digits.html http://www.guernsey.net/~sgibbs/roman.html /mvh </bole>
>>olebole og jakoba Ingen af konverterne kunne klare 1999 uden at svare: MCMXCIX, så et eller andet kan forbedres ganske meget i algoritmerne (jakobs var den eneste, som kunne konvertere MIM til 1999)
Uden tvivl. Jeg har ikke selv testet dem - prøvede blot lige at søge på det og fandt bunker af resultater. Tog et par af de første :) Derudover er Jakobs kode rimelig \'sexy\' i forhold til de andre....fristes næsten til at sige \'anorektisk\' =) /mvh
Ja, rekursiviteten i romer->araber sikrede faktisk det gode resultat på MIM, men man kan vel forh...... da fange de der småting med 1,5,10 foran 1000 !~]
jakoba: supercool... vil arbejde videre på min ide i weekenden, men den ligner ved første øjekast temmelig meget den du linker til (arrays med romertallene og de tilsvarende værdier i arabertal som hjælp) - forresten konverterer geocities linket MIM til 2001 mens sgibbs bare afviste at konvertere MIM. Det er jo helt galt...
reglen er vel at man ikke må have en mindre blok (værdimæssigt) foran en større. F. eks. er CMM forkert mens MCM er korrekt - her er blokkene så CM og M... derfor er CCD iøvrigt også et ulovligt udtryk (CCD = D)
det ender med noget i retning af at negative led KUN må være: I, II, V, X, XX, L, C, CC, D
Ved extrapolation fra CCM burde CCD vel også være tilladt, men siden CCD ikke sparer noget i forhold til CCC kunne vi evt sige at den skal forstås, men aldrig genereres (ligesom MDCCCCCLXXXXVIIII). Jeg har set IIV brugt.
romertal -> arabertal konverteringen bliver så en mange til een mens arabertal -> romertal konverteringen er een til een
Jakob >> pointen er - som jeg også skrev tidligere - at der har eksisteret flere \'officielle\' regler for romertal...og gør det for den sags skyld stadig. Spørgsmålet er, om der overhovedet er et internationalt regelsæt, der kan kaldes for en officiel standard :) /mvh
olebole >> Just præcis. Og som vanligt løser programmørerne det ved at snakke frem og tilbge og lave deres eget (helt fjerde) \'officielle regelsæt\'. ( Der forhåbentligt holder til man har skiftet firma :-))
men stadigvæk: romertal på formen aab er det samme som b (forudsat at a er mindre end og forskellig fra b). Derfor er det forkert at vedtage at CCC og CCD er det samme.
Romer->araber tror jeg nok jeg har klaret, men araber->romer er noget mere tricky at implementere (hvis det altså skal være det \"rigtige\" romertal der kommer ud).
tilsyneladende er vi alle galt på den på nogle områder... taget fra dr. math:
Here are the official rules for subtracting letters:
Subtract only powers of ten, such as I, X, or C. Writing VL for 45 is not allowed: write XLV instead. Subtract only a single letter from a single numeral. Write VIII for 8, not IIX; 19 is XIX, not IXX. Don\'t subtract a letter from another letter more than ten times greater. This means that you can only subtract I from V or X, and X from L or C, so MIM is illegal
Altså er 1999 != MIM og CCD er ulovligt (regel 3 - subtract only a single letter from a single numeral)
Så: 1999 -> MCMXCIX bvadr. men det er nogen rimeligt nemme regler at følge pr computer. mon ikke de er lavet af nogen de skulle programmere det :-))
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.