File tree Expand file tree Collapse file tree 1 file changed +16
-18
lines changed Expand file tree Collapse file tree 1 file changed +16
-18
lines changed Original file line number Diff line number Diff line change @@ -25,20 +25,20 @@ public let RomanNumbers = [
25
25
tags: [ . api, . String, . algorithm] )
26
26
]
27
27
28
- let romanTable : [ ( Int , String ) ] = [
29
- ( 1000 , " M " ) ,
30
- ( 900 , " CM " ) ,
31
- ( 500 , " D " ) ,
32
- ( 400 , " CD " ) ,
33
- ( 100 , " C " ) ,
34
- ( 90 , " XC " ) ,
35
- ( 50 , " L " ) ,
36
- ( 40 , " XL " ) ,
37
- ( 10 , " X " ) ,
38
- ( 9 , " IX " ) ,
39
- ( 5 , " V " ) ,
40
- ( 4 , " IV " ) ,
41
- ( 1 , " I " ) ,
28
+ let romanTable : DictionaryLiteral < String , Int > = [
29
+ " M " : 1000 ,
30
+ " CM " : 900 ,
31
+ " D " : 500 ,
32
+ " CD " : 400 ,
33
+ " C " : 100 ,
34
+ " XC " : 90 ,
35
+ " L " : 50 ,
36
+ " XL " : 40 ,
37
+ " X " : 10 ,
38
+ " IX " : 9 ,
39
+ " V " : 5 ,
40
+ " IV " : 4 ,
41
+ " I " : 1 ,
42
42
]
43
43
44
44
extension BinaryInteger {
@@ -48,8 +48,7 @@ extension BinaryInteger {
48
48
outer:
49
49
while value > 0 {
50
50
var position = 0
51
- for i in position ..< romanTable. count {
52
- let ( v, s) = romanTable [ i]
51
+ for (i, ( key: s, value: v) ) in romanTable [ position... ] . enumerated ( ) {
53
52
if value >= v {
54
53
result += s
55
54
value -= Self ( v)
@@ -68,8 +67,7 @@ extension BinaryInteger {
68
67
outer:
69
68
while !input. isEmpty {
70
69
var position = 0
71
- for i in position ..< romanTable. count {
72
- let ( v, s) = romanTable [ i]
70
+ for (i, ( key: s, value: v) ) in romanTable [ position... ] . enumerated ( ) {
73
71
if input. starts ( with: s) {
74
72
self += Self ( v)
75
73
input = input. dropFirst ( s. count)
You can’t perform that action at this time.
0 commit comments