{"id":1552,"date":"2015-04-12T09:19:44","date_gmt":"2015-04-12T16:19:44","guid":{"rendered":"http:\/\/zackmdavis.net\/blog\/?p=1552"},"modified":"2015-04-12T09:19:44","modified_gmt":"2015-04-12T16:19:44","slug":"xxx-iii","status":"publish","type":"post","link":"http:\/\/zackmdavis.net\/blog\/2015\/04\/xxx-iii\/","title":{"rendered":"XXX III"},"content":{"rendered":"<pre><code>const PSEUDO_DIGITS: [char; 7] = [&#39;M&#39;, &#39;D&#39;, &#39;C&#39;, &#39;L&#39;, &#39;X&#39;, &#39;V&#39;, &#39;I&#39;];\r\nconst PSEUDO_PLACE_VALUES: [usize; 7] = [1000, 500, 100, 50, 10, 5, 1];\r\n\r\n#[allow(unused_parens)]\r\nfn integer_to_roman(integer: usize) -&gt; String {\r\n    let mut remaining = integer;\r\n    let mut bildungsroman = String::new();\r\n    \/\/ get it?? It sounds like _building Roman_ (numerals), but it&#39;s\r\n    \/\/ also part of the story about me coming into my own as a\r\n    \/\/ programmer by learning a grown-up language\r\n    \/\/\r\n    \/\/ XXX http:\/\/tvtropes.org\/pmwiki\/pmwiki.php\/Main\/DontExplainTheJoke\r\n    for ((index, value), &amp;figure) in PSEUDO_PLACE_VALUES.iter()\r\n        .enumerate().zip(PSEUDO_DIGITS.iter())\r\n    {\r\n        let factor = remaining \/ value;\r\n        remaining = remaining % value;\r\n\r\n        if figure == &#39;M&#39; || factor &lt; 4 {\r\n            for _ in 0..factor {\r\n                bildungsroman.push(figure);\r\n            }\r\n        }\r\n\r\n        \/\/ IV, IX, XL, &amp;c.\r\n        let smaller_unit_index = index + 2 - (index % 2);\r\n        if smaller_unit_index &lt; PSEUDO_PLACE_VALUES.len() {\r\n            let smaller_unit_value = PSEUDO_PLACE_VALUES[smaller_unit_index];\r\n            let smaller_unit_figure = PSEUDO_DIGITS[smaller_unit_index];\r\n\r\n            if value - remaining &lt;= smaller_unit_value {\r\n                bildungsroman.push(smaller_unit_figure);\r\n                bildungsroman.push(figure);\r\n                remaining -= (value - smaller_unit_value);\r\n            }\r\n        }\r\n    }\r\n    bildungsroman\r\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>const PSEUDO_DIGITS: [char; 7] = [&#39;M&#39;, &#39;D&#39;, &#39;C&#39;, &#39;L&#39;, &#39;X&#39;, &#39;V&#39;, &#39;I&#39;]; const PSEUDO_PLACE_VALUES: [usize; 7] = [1000, 500, 100, 50, 10, 5, 1]; #[allow(unused_parens)] fn integer_to_roman(integer: usize) -&gt; String { let mut remaining = integer; let mut bildungsroman = &hellip; <a href=\"http:\/\/zackmdavis.net\/blog\/2015\/04\/xxx-iii\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[20],"tags":[75],"_links":{"self":[{"href":"http:\/\/zackmdavis.net\/blog\/wp-json\/wp\/v2\/posts\/1552"}],"collection":[{"href":"http:\/\/zackmdavis.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/zackmdavis.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/zackmdavis.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/zackmdavis.net\/blog\/wp-json\/wp\/v2\/comments?post=1552"}],"version-history":[{"count":1,"href":"http:\/\/zackmdavis.net\/blog\/wp-json\/wp\/v2\/posts\/1552\/revisions"}],"predecessor-version":[{"id":1553,"href":"http:\/\/zackmdavis.net\/blog\/wp-json\/wp\/v2\/posts\/1552\/revisions\/1553"}],"wp:attachment":[{"href":"http:\/\/zackmdavis.net\/blog\/wp-json\/wp\/v2\/media?parent=1552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/zackmdavis.net\/blog\/wp-json\/wp\/v2\/categories?post=1552"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/zackmdavis.net\/blog\/wp-json\/wp\/v2\/tags?post=1552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}