{"id":2012,"date":"2017-02-21T17:41:24","date_gmt":"2017-02-21T23:41:24","guid":{"rendered":"http:\/\/www.logikalsolutions.com\/wordpress\/?p=2012"},"modified":"2023-12-08T16:08:36","modified_gmt":"2023-12-08T22:08:36","slug":"roman-numeral-calculator","status":"publish","type":"post","link":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/","title":{"rendered":"Roman Numeral Calculator"},"content":{"rendered":"\n<p>If you work long enough in IT you will start to really get tired of all the cutesy ways companies try to &#8220;select&#8221; developers\/consultants. Some of the worst ones send people to take on-line tests from commercial sites at the candidates own expense. I don&#8217;t see that much on reqs anymore. Why? Because only the most desperate of bottom feeders would do it. In truth the candidates were a good match because only a bottom feeding company would ask a programmer to take an on-line test if they had other developers using the same language.<\/p>\n\n\n\n<p>A trend I&#8217;m seeing a lot of now is the &#8220;spend a day with us&#8221; thing. They usually have you spend a couple of hours coding a solution to one of the on-line problems. One of the most often used is the <a href=\"https:\/\/www.hackerrank.com\/contests\/infinity15\/challenges\/roman-numeral-calculator\">Roman Number Calculator<\/a>. There are many of these on-line. Since today was a frustrating day and I get tired of seeing that, here is the code for one using Qt which was hacked out in roughly the 2 hour time. Hard to tell how long because I had multiple pimps calling me trying to tell me illegal alien wages really were market rate.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Code<\/h2>\n\n\n\n<p>I didn&#8217;t put much in the way of comments nor did I get really fancy. I actually chose to code it because I hadn&#8217;t done a console app in a long time.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#babed8;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#0F111A\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"#include <QCoreApplication&gt;\n#include <QDebug&gt;\n#include <QTimer&gt;\n\n#include &quot;consoleinput.h&quot;\n\nint main(int argc, char *argv[])\n{\n\u00a0\u00a0\u00a0 QCoreApplication a(argc, argv);\n\n\u00a0\u00a0\u00a0 ConsoleInput console;\n\n\u00a0\u00a0\u00a0 bool b = a.connect(&amp;console, &amp;ConsoleInput::quit, &amp;a, &amp;QCoreApplication::quit);\n\u00a0\u00a0\u00a0 qDebug() << &quot;result of connect &quot; << b;\n\n\u00a0\u00a0\u00a0 QTimer::singleShot(0, &amp;console, &amp;ConsoleInput::run);\n\n\u00a0\u00a0\u00a0 return a.exec();\n}\n\n\" style=\"color:#babed8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">QCoreApplication<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">QDebug<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">QTimer<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">consoleinput.h<\/span><span style=\"color: #89DDFF\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C792EA\">int<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #82AAFF\">main<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #BABED8; font-style: italic\">argc<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C792EA\">char<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C792EA\">*<\/span><span style=\"color: #BABED8; font-style: italic\">argv<\/span><span style=\"color: #89DDFF\">[])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 QCoreApplication <\/span><span style=\"color: #82AAFF\">a<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">argc<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> argv<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 ConsoleInput console<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">bool<\/span><span style=\"color: #BABED8\"> b <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> a<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">connect<\/span><span style=\"color: #89DDFF\">(&amp;<\/span><span style=\"color: #BABED8\">console<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&amp;<\/span><span style=\"color: #FFCB6B\">ConsoleInput<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #BABED8\">quit<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&amp;<\/span><span style=\"color: #BABED8\">a<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&amp;<\/span><span style=\"color: #FFCB6B\">QCoreApplication<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #BABED8\">quit<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #82AAFF\">qDebug<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">result of connect <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> b<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #FFCB6B\">QTimer<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #82AAFF\">singleShot<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&amp;<\/span><span style=\"color: #BABED8\">console<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&amp;<\/span><span style=\"color: #FFCB6B\">ConsoleInput<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #BABED8\">run<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">return<\/span><span style=\"color: #BABED8\"> a<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">exec<\/span><span style=\"color: #89DDFF\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>What is interesting in our main.cpp is the QTimer line. You cannot cleanly exit unless you are running inside of the event loop. It is one we all forget and can cost us lots of hours.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#babed8;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#0F111A\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ consoleinput.h\n#ifndef CONSOLEINPUT_H\n#define CONSOLEINPUT_H\n\n#include <QObject&gt;\n\nclass ConsoleInput : public QObject\n{\n\u00a0\u00a0\u00a0 Q_OBJECT\npublic:\n\u00a0\u00a0\u00a0 explicit ConsoleInput(QObject *parent = 0);\n\nsignals:\n\u00a0\u00a0\u00a0 void quit();\n\npublic slots:\n\u00a0\u00a0\u00a0 void run();\n};\n\n#endif \/\/ CONSOLEINPUT_H\" style=\"color:#babed8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #464B5D; font-style: italic\">\/\/ consoleinput.h<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#ifndef<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #82AAFF\">CONSOLEINPUT_H<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#define<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #82AAFF\">CONSOLEINPUT_H<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">QObject<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C792EA\">class<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #FFCB6B\">ConsoleInput<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">:<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #C792EA\">public<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #FFCB6B\">QObject<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 Q_OBJECT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C792EA\">public<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">explicit<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #82AAFF\">ConsoleInput<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #FFCB6B\">QObject<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #C792EA\">*<\/span><span style=\"color: #BABED8; font-style: italic\">parent<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">signals:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">void<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #82AAFF\">quit<\/span><span style=\"color: #89DDFF\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">public slots:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">void<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #82AAFF\">run<\/span><span style=\"color: #89DDFF\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">};<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#endif<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ CONSOLEINPUT_H<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#babed8;--cbp-line-number-width:calc(3 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#0F111A\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ consoleinput.cpp\n\n#include &quot;consoleinput.h&quot;\n#include &quot;parseromannumbertext.h&quot;\n#include <QDebug&gt;\n#include <QTextStream&gt;\n#include <QFile&gt;\n#include <QStringList&gt;\n#include <iostream&gt;\n\nConsoleInput::ConsoleInput(QObject *parent) : QObject(parent)\n{\n\n}\n\n\nvoid ConsoleInput::run()\n{\n\u00a0\u00a0\u00a0 ParseRomanNumberText p;\n\u00a0\u00a0\u00a0 qDebug() << &quot; 24 : &quot; << p.toString(24);\n\u00a0\u00a0\u00a0 qDebug() << &quot; 39 : &quot; << p.toString(39);\n\u00a0\u00a0\u00a0 qDebug() << &quot; 49 : &quot; << p.toString(49);\n\u00a0\u00a0\u00a0 qDebug() << &quot; 449 : &quot; << p.toString(449);\n\u00a0\u00a0\u00a0 qDebug() << &quot; 999 : &quot; << p.toString(999);\n\n\u00a0\u00a0\u00a0 qDebug() << &quot; toInt() tests &quot;;\n\u00a0\u00a0\u00a0 qDebug() << &quot;\u00a0 XXIV : &quot; << p.toInt(&quot;XXIV&quot;);\n\u00a0\u00a0\u00a0 qDebug() << &quot;\u00a0 XXXIX : &quot; << p.toInt(&quot;XXXIX&quot;);\n\u00a0\u00a0\u00a0 qDebug() << &quot;\u00a0 XLIX : &quot; << p.toInt(&quot;XLIX&quot;);\n\u00a0\u00a0\u00a0 qDebug() << &quot;\u00a0 CDXLIX : &quot; << p.toInt(&quot;CDXLIX&quot;);\n\u00a0\u00a0\u00a0 qDebug() << &quot;\u00a0 CMXCIX : &quot; << p.toInt(&quot;CMXCIX&quot;);\n\n\u00a0\u00a0\u00a0 qDebug() << &quot;\u00a0 CC13 : &quot; << p.toInt(&quot;CC13&quot;);\n\n\u00a0\u00a0\u00a0 bool endOfJob = false;\n\u00a0\u00a0\u00a0 QTextStream in(stdin);\n\u00a0\u00a0\u00a0 qDebug() << &quot;type exit to quit&quot;;\n\u00a0\u00a0\u00a0 while (!in.atEnd()\u00a0 &amp;&amp;\u00a0 !endOfJob)\n\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 QString line = in.readLine();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 line = line.toUpper();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (line.compare(&quot;EXIT&quot;, Qt::CaseInsensitive) == 0)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 endOfJob = true;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 continue;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 QStringList lst;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (line.indexOf('+') &gt; -1)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lst << line.left(line.indexOf('+')) << &quot;+&quot; << line.right(line.indexOf('+')-1);\u00a0 \/\/ + has special meaning to input stream\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else if (line.indexOf('-') &gt; -1)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lst << line.left(line.indexOf('-')) << &quot;-&quot; << line.right(line.indexOf('-'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else if (line.indexOf('*') &gt; -1 )\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lst << line.left(line.indexOf('*')) << &quot;*&quot; << line.right(line.indexOf('*')-1);\u00a0 \/\/ * has special meaning to input stream\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else if (line.indexOf('\/') &gt; -1)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lst << line.left(line.indexOf('\/')) << &quot;\/&quot; << line.right(line.indexOf('\/'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (lst.size() &gt; 0)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (p.isValidRomanNumber(lst[0]) &amp;&amp; p.isValidRomanNumber(lst[2]))\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int x = p.toInt( lst[0]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int y = p.toInt(lst[2]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int result=0;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (lst[1].compare(&quot;+&quot;) == 0)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 result = x + y;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else if (lst[1].compare(&quot;-&quot;) == 0)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 result = x - y;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else if (lst[1].compare(&quot;*&quot;) == 0)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 result = x * y;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else if (lst[1].compare(&quot;\/&quot;) == 0)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 result = x \/ y;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 qDebug() << line << &quot; = &quot; << p.toString(result);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 qDebug() << &quot;both values must be valid roman numbers&quot;;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0 }\n\n\u00a0\u00a0\u00a0 emit quit();\n}\" style=\"color:#babed8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #464B5D; font-style: italic\">\/\/ consoleinput.cpp<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">consoleinput.h<\/span><span style=\"color: #89DDFF\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">parseromannumbertext.h<\/span><span style=\"color: #89DDFF\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">QDebug<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">QTextStream<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">QFile<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">QStringList<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">iostream<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #FFCB6B\">ConsoleInput<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #82AAFF\">ConsoleInput<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">QObject <\/span><span style=\"color: #89DDFF\">*<\/span><span style=\"color: #BABED8\">parent<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #BABED8\"> : <\/span><span style=\"color: #82AAFF\">QObject<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">parent<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C792EA\">void<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #FFCB6B\">ConsoleInput<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #82AAFF\">run<\/span><span style=\"color: #89DDFF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 ParseRomanNumberText p<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #82AAFF\">qDebug<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\"> 24 : <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> p<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">toString<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F78C6C\">24<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #82AAFF\">qDebug<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\"> 39 : <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> p<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">toString<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F78C6C\">39<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #82AAFF\">qDebug<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\"> 49 : <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> p<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">toString<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F78C6C\">49<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #82AAFF\">qDebug<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\"> 449 : <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> p<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">toString<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F78C6C\">449<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #82AAFF\">qDebug<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\"> 999 : <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> p<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">toString<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F78C6C\">999<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #82AAFF\">qDebug<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\"> toInt() tests <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #82AAFF\">qDebug<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">\u00a0 XXIV : <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> p<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">toInt<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">XXIV<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #82AAFF\">qDebug<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">\u00a0 XXXIX : <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> p<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">toInt<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">XXXIX<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #82AAFF\">qDebug<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">\u00a0 XLIX : <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> p<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">toInt<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">XLIX<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #82AAFF\">qDebug<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">\u00a0 CDXLIX : <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> p<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">toInt<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">CDXLIX<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #82AAFF\">qDebug<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">\u00a0 CMXCIX : <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> p<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">toInt<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">CMXCIX<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #82AAFF\">qDebug<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">\u00a0 CC13 : <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> p<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">toInt<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">CC13<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">bool<\/span><span style=\"color: #BABED8\"> endOfJob <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">false;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 QTextStream <\/span><span style=\"color: #82AAFF\">in<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">stdin<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #82AAFF\">qDebug<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">type exit to quit<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">while<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">(!<\/span><span style=\"color: #BABED8\">in<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">atEnd<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #BABED8\">\u00a0 <\/span><span style=\"color: #89DDFF\">&amp;&amp;<\/span><span style=\"color: #BABED8\">\u00a0 <\/span><span style=\"color: #89DDFF\">!<\/span><span style=\"color: #BABED8\">endOfJob<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 QString line <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">in<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">readLine<\/span><span style=\"color: #89DDFF\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 line <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">toUpper<\/span><span style=\"color: #89DDFF\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">compare<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">EXIT<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #FFCB6B\">Qt<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">CaseInsensitive<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">==<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 endOfJob <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">true;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">continue<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">else<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 QStringList lst<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">indexOf<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">+<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&gt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">-<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lst <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">left<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">indexOf<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">+<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">))<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">+<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">right<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">indexOf<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">+<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">)-<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">);<\/span><span style=\"color: #464B5D; font-style: italic\">\u00a0 \/\/ + has special meaning to input stream<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">else<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">indexOf<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">-<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&gt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">-<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lst <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">left<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">indexOf<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">-<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">))<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">-<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">right<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">indexOf<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">-<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">else<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">indexOf<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">*<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&gt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">-<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lst <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">left<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">indexOf<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">*<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">))<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">*<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">right<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">indexOf<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">*<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">)-<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">);<\/span><span style=\"color: #464B5D; font-style: italic\">\u00a0 \/\/ * has special meaning to input stream<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">else<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">indexOf<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">\/<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&gt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">-<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 lst <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">left<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">indexOf<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">\/<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">))<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">\/<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">right<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">line<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">indexOf<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">\/<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">lst<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">size<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&gt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">p<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">isValidRomanNumber<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">lst<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">])<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&amp;&amp;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">p<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">isValidRomanNumber<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">lst<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F78C6C\">2<\/span><span style=\"color: #89DDFF\">]))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #F07178\"> x <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">p<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">toInt<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">lst<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">]);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #F07178\"> y <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">p<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">toInt<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">lst<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F78C6C\">2<\/span><span style=\"color: #89DDFF\">]);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #F07178\"> result<\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">lst<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">].<\/span><span style=\"color: #82AAFF\">compare<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">+<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">==<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 result <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> x <\/span><span style=\"color: #89DDFF\">+<\/span><span style=\"color: #F07178\"> y<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">else<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">lst<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">].<\/span><span style=\"color: #82AAFF\">compare<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">-<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">==<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 result <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> x <\/span><span style=\"color: #89DDFF\">-<\/span><span style=\"color: #F07178\"> y<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">else<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">lst<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">].<\/span><span style=\"color: #82AAFF\">compare<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">*<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">==<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 result <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> x <\/span><span style=\"color: #89DDFF\">*<\/span><span style=\"color: #F07178\"> y<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">else<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">lst<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">].<\/span><span style=\"color: #82AAFF\">compare<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">\/<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">==<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 result <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> x <\/span><span style=\"color: #89DDFF\">\/<\/span><span style=\"color: #F07178\"> y<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #82AAFF\">qDebug<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> line <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\"> = <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">p<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">toString<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F07178\">result<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">else<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #82AAFF\">qDebug<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">both values must be valid roman numbers<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 emit <\/span><span style=\"color: #82AAFF\">quit<\/span><span style=\"color: #89DDFF\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>The only lines of note here are the parsing of + and * operations. Those appear to be special characters for this particular input method as they get doubled in the actual stream. Yes, I should know why and I used to but, I&#8217;m certain some little geek will chime in. All you really have to know is <em>there be dragons<\/em> and move on. Why there are dragons doesn&#8217;t really matter, just know the names of the dragons and avoid them.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#babed8;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#0F111A\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ parseromannumbertext.h\n\n#ifndef PARSEROMANNUMBERTEXT_H\n#define PARSEROMANNUMBERTEXT_H\n\n#include <QObject&gt;\n#include <QMap&gt;\n\nclass ParseRomanNumberText : public QObject\n{\n\u00a0\u00a0\u00a0 Q_OBJECT\npublic:\n\u00a0\u00a0\u00a0 explicit ParseRomanNumberText(QObject *parent = 0);\n\n\u00a0\u00a0\u00a0 int toInt( QString romanNumberText);\n\u00a0\u00a0\u00a0 QString toString( int value);\n\u00a0\u00a0\u00a0 bool isValidRomanNumber(QString romanNumberText);\n\n\nsignals:\n\npublic slots:\nprivate:\n\u00a0\u00a0\u00a0 QMap<QChar, int&gt; m_letterMap;\n};\n\n#endif \/\/ PARSEROMANNUMBERTEXT_H\" style=\"color:#babed8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #464B5D; font-style: italic\">\/\/ parseromannumbertext.h<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#ifndef<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #82AAFF\">PARSEROMANNUMBERTEXT_H<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#define<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #82AAFF\">PARSEROMANNUMBERTEXT_H<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">QObject<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">QMap<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C792EA\">class<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #FFCB6B\">ParseRomanNumberText<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">:<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #C792EA\">public<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #FFCB6B\">QObject<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 Q_OBJECT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C792EA\">public<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">explicit<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #82AAFF\">ParseRomanNumberText<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #FFCB6B\">QObject<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #C792EA\">*<\/span><span style=\"color: #BABED8; font-style: italic\">parent<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #82AAFF\">toInt<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #FFCB6B\">QString<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8; font-style: italic\">romanNumberText<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #FFCB6B\">QString<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #82AAFF\">toString<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8; font-style: italic\">value<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">bool<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #82AAFF\">isValidRomanNumber<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #FFCB6B\">QString<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8; font-style: italic\">romanNumberText<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">signals:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">public slots:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C792EA\">private<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 QMap<\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #F07178\">QChar<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #89DDFF\">&gt;<\/span><span style=\"color: #F07178\"> m_letterMap<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">};<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#endif<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ PARSEROMANNUMBERTEXT_H<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>The closest I came to cute here was using a QMap to translate roman numbers to numeric values.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#babed8;--cbp-line-number-width:calc(3 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#0F111A\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ parseromannumbertext.cpp\n\n#include &quot;parseromannumbertext.h&quot;\n#include <QRegularExpression&gt;\n#include <QRegularExpressionMatch&gt;\n#include <QDebug&gt;\n#include <QByteArray&gt;\n\nParseRomanNumberText::ParseRomanNumberText(QObject *parent) : QObject(parent)\n{\n\u00a0\u00a0\u00a0 m_letterMap['I']\u00a0\u00a0\u00a0 = 1;\n\u00a0\u00a0\u00a0 m_letterMap['V']\u00a0\u00a0\u00a0 = 5;\n\u00a0\u00a0\u00a0 m_letterMap['X']\u00a0\u00a0\u00a0 = 10;\n\u00a0\u00a0\u00a0 m_letterMap['L']\u00a0\u00a0\u00a0 = 50;\n\u00a0\u00a0\u00a0 m_letterMap['C']\u00a0\u00a0\u00a0 = 100;\n\u00a0\u00a0\u00a0 m_letterMap['D']\u00a0\u00a0\u00a0 = 500;\n\u00a0\u00a0\u00a0 m_letterMap['M']\u00a0\u00a0\u00a0 = 1000;\n}\n\nint ParseRomanNumberText::toInt(QString romanNumberText)\n{\n\u00a0\u00a0\u00a0 int retVal = 0;\n\n\u00a0\u00a0\u00a0 QString workStr = romanNumberText.toUpper();\n\u00a0\u00a0\u00a0 if (isValidRomanNumber(workStr))\n\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Roman numbers must be in ever decreasing value.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ If the digit following the current digit is higher in value\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ then it is subtracted from the next digit.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 QByteArray letters = workStr.toLatin1();\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int x=0;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 while( x < letters.size())\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 bool isSpecial = false;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int y = x+1;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (y < letters.size())\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (m_letterMap[ QChar(letters[x])] < m_letterMap[ QChar(letters[y])])\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Handle case of 9 and 4 here\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 isSpecial = true;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 retVal += ( m_letterMap[ QChar(letters[y])] - m_letterMap[ QChar(letters[x])]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ++x;\u00a0 \/\/ consume second letter\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (!isSpecial)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 retVal += m_letterMap[ QChar(letters[x])];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ++x;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\n\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0 else\n\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 qDebug() << &quot; Number: &quot; << romanNumberText << &quot; is not valid&quot;;\n\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0 return retVal;\n}\n\nQString ParseRomanNumberText::toString(int value)\n{\n\u00a0\u00a0\u00a0 QString retVal = &quot;invalid number&quot;;\n\u00a0\u00a0\u00a0 if (value &gt; 4000)\n\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return retVal;\n\u00a0\u00a0\u00a0 }\n\n\u00a0\u00a0\u00a0 int workValue = value;\n\n\u00a0\u00a0\u00a0 int mCount = workValue \/ m_letterMap['M'];\n\n\u00a0\u00a0\u00a0 workValue -= (mCount * m_letterMap['M']);\n\n\u00a0\u00a0\u00a0 int cCount = workValue \/ m_letterMap['C'];\n\n\u00a0\u00a0\u00a0 workValue -= (cCount * m_letterMap['C']);\n\n\u00a0\u00a0\u00a0 int xCount = workValue \/ m_letterMap['X'];\n\n\u00a0\u00a0\u00a0 workValue -= (xCount * m_letterMap['X']);\n\n\u00a0\u00a0\u00a0 int iCount = workValue;\n\n\n\u00a0\u00a0\u00a0 QString mString( mCount, 'M');\n\n\n\u00a0\u00a0\u00a0 QString cString;\n\n\u00a0\u00a0\u00a0 switch(cCount)\n\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0 case 4:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cString = &quot;CD&quot;;\u00a0 \/\/ 400\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 case 5:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cString = &quot;D&quot;;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 case 6:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cString = &quot;DC&quot;;\n\u00a0\u00a0\u00a0 case 7:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cString = &quot;DCC&quot;;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 case 8:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cString = &quot;DCCC&quot;;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 case 9:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cString = &quot;CM&quot;; \/\/ 900\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 default:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cString = QString(cCount, 'C');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 }\n\n\n\n\u00a0\u00a0\u00a0 QString xString;\n\n\u00a0\u00a0\u00a0 switch(xCount)\n\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0 case 4:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xString = &quot;XL&quot;;\u00a0\u00a0\u00a0\u00a0 \/\/ 40\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 case 5:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xString = &quot;L&quot;;\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ 50\n\u00a0\u00a0\u00a0 case 6:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xString = &quot;LX&quot;;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 case 7:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xString = &quot;LXX&quot;;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 case 8:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xString = &quot;LXXX&quot;;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 case 9:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xString = &quot;XC&quot;;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 default:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xString = QString(xCount, 'X');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 }\n\n\u00a0\u00a0\u00a0 QString iString;\n\u00a0\u00a0\u00a0 switch(iCount)\n\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0 case 4:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iString = &quot;IV&quot;;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 case 5:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iString = &quot;V&quot;;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 case 6:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iString = &quot;VI&quot;;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 case 7:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iString = &quot;VII&quot;;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 case 8:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iString = &quot;VII&quot;;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 case 9:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iString = &quot;IX&quot;;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 default:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iString = QString(iCount, 'I');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\u00a0\u00a0\u00a0 }\n\n\u00a0\u00a0\u00a0 retVal = &quot;&quot;;\n\u00a0\u00a0\u00a0 QTextStream stream(&amp;retVal);\n\n\u00a0\u00a0\u00a0 stream << mString << cString << xString << iString;\n\n\u00a0\u00a0\u00a0 return retVal;\n\n}\n\nbool ParseRomanNumberText::isValidRomanNumber(QString romanNumberText)\n{\n\u00a0\u00a0\u00a0 bool retVal = false;\n\n\u00a0\u00a0\u00a0 QString workStr = romanNumberText;\n\n\u00a0\u00a0\u00a0 workStr.remove('M');\n\u00a0\u00a0\u00a0 workStr.remove('D');\n\u00a0\u00a0\u00a0 workStr.remove('C');\n\u00a0\u00a0\u00a0 workStr.remove('L');\n\u00a0\u00a0\u00a0 workStr.remove('X');\n\u00a0\u00a0\u00a0 workStr.remove('V');\n\u00a0\u00a0\u00a0 workStr.remove('I');\n\n\u00a0\u00a0\u00a0 if (workStr.length() < 1)\n\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 retVal = true;\n\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0 return retVal;\n}\" style=\"color:#babed8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #464B5D; font-style: italic\">\/\/ parseromannumbertext.cpp<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">parseromannumbertext.h<\/span><span style=\"color: #89DDFF\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">QRegularExpression<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">QRegularExpressionMatch<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">QDebug<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">QByteArray<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #FFCB6B\">ParseRomanNumberText<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #82AAFF\">ParseRomanNumberText<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">QObject <\/span><span style=\"color: #89DDFF\">*<\/span><span style=\"color: #BABED8\">parent<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #BABED8\"> : <\/span><span style=\"color: #82AAFF\">QObject<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">parent<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #BABED8\">m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">I<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">]<\/span><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #BABED8\">m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">V<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">]<\/span><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">5<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #BABED8\">m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">X<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">]<\/span><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">10<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #BABED8\">m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">L<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">]<\/span><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">50<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #BABED8\">m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">C<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">]<\/span><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">100<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #BABED8\">m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">D<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">]<\/span><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">500<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #BABED8\">m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">M<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">]<\/span><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">1000<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C792EA\">int<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #FFCB6B\">ParseRomanNumberText<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #82AAFF\">toInt<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #FFCB6B\">QString<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #BABED8; font-style: italic\">romanNumberText<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #BABED8\"> retVal <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 QString workStr <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> romanNumberText<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">toUpper<\/span><span style=\"color: #89DDFF\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #82AAFF\">isValidRomanNumber<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">workStr<\/span><span style=\"color: #89DDFF\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Roman numbers must be in ever decreasing value.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ If the digit following the current digit is higher in value<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ then it is subtracted from the next digit.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 QByteArray letters <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">workStr<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">toLatin1<\/span><span style=\"color: #89DDFF\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #F07178\"> x<\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">while<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F07178\"> x <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">letters<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">size<\/span><span style=\"color: #89DDFF\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">bool<\/span><span style=\"color: #F07178\"> isSpecial <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">false;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #F07178\"> y <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> x<\/span><span style=\"color: #89DDFF\">+<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F07178\">y <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">letters<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">size<\/span><span style=\"color: #89DDFF\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #82AAFF\">QChar<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">letters<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F07178\">x<\/span><span style=\"color: #89DDFF\">])]<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #82AAFF\">QChar<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">letters<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F07178\">y<\/span><span style=\"color: #89DDFF\">])])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Handle case of 9 and 4 here<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 isSpecial <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">true;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 retVal <\/span><span style=\"color: #89DDFF\">+=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #82AAFF\">QChar<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">letters<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F07178\">y<\/span><span style=\"color: #89DDFF\">])]<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">-<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #82AAFF\">QChar<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">letters<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F07178\">x<\/span><span style=\"color: #89DDFF\">])]);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">++<\/span><span style=\"color: #F07178\">x<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\">\u00a0 \/\/ consume second letter<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(!<\/span><span style=\"color: #F07178\">isSpecial<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 retVal <\/span><span style=\"color: #89DDFF\">+=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #BABED8\">m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #82AAFF\">QChar<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">letters<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #F07178\">x<\/span><span style=\"color: #89DDFF\">])];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">++<\/span><span style=\"color: #F07178\">x<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">else<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #82AAFF\">qDebug<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\"> Number: <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> romanNumberText <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\"> is not valid<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">return<\/span><span style=\"color: #BABED8\"> retVal<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #FFCB6B\">QString<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #FFCB6B\">ParseRomanNumberText<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #82AAFF\">toString<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #BABED8; font-style: italic\">value<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 QString retVal <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">invalid number<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">value <\/span><span style=\"color: #89DDFF\">&gt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #F78C6C\">4000<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">return<\/span><span style=\"color: #F07178\"> retVal<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #BABED8\"> workValue <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> value<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #BABED8\"> mCount <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> workValue <\/span><span style=\"color: #89DDFF\">\/<\/span><span style=\"color: #BABED8\"> m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">M<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 workValue <\/span><span style=\"color: #89DDFF\">-=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">mCount <\/span><span style=\"color: #89DDFF\">*<\/span><span style=\"color: #BABED8\"> m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">M<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">]);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #BABED8\"> cCount <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> workValue <\/span><span style=\"color: #89DDFF\">\/<\/span><span style=\"color: #BABED8\"> m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">C<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 workValue <\/span><span style=\"color: #89DDFF\">-=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">cCount <\/span><span style=\"color: #89DDFF\">*<\/span><span style=\"color: #BABED8\"> m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">C<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">]);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #BABED8\"> xCount <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> workValue <\/span><span style=\"color: #89DDFF\">\/<\/span><span style=\"color: #BABED8\"> m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">X<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 workValue <\/span><span style=\"color: #89DDFF\">-=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">xCount <\/span><span style=\"color: #89DDFF\">*<\/span><span style=\"color: #BABED8\"> m_letterMap<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">X<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">]);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #BABED8\"> iCount <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> workValue<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 QString <\/span><span style=\"color: #82AAFF\">mString<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\"> mCount<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">M<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 QString cString<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">switch<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F07178\">cCount<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">4<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">CD<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\">\u00a0 \/\/ 400<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">5<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">D<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">6<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">DC<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">7<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">DCC<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">8<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">DCCC<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">9<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">CM<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ 900<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">default<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #82AAFF\">QString<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F07178\">cCount<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">C<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 QString xString<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">switch<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F07178\">xCount<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">4<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">XL<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\">\u00a0\u00a0\u00a0\u00a0 \/\/ 40<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">5<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">L<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\">\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ 50<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">6<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">LX<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">7<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">LXX<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">8<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">LXXX<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">9<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">XC<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">default<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #82AAFF\">QString<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F07178\">xCount<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">X<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 QString iString<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">switch<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F07178\">iCount<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">4<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">IV<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">5<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">V<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">6<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">VI<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">7<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">VII<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">8<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">VII<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">9<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">IX<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">default<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iString <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #82AAFF\">QString<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F07178\">iCount<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">I<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">break<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 retVal <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 QTextStream <\/span><span style=\"color: #82AAFF\">stream<\/span><span style=\"color: #89DDFF\">(&amp;<\/span><span style=\"color: #BABED8\">retVal<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 stream <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> mString <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> cString <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> xString <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #BABED8\"> iString<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">return<\/span><span style=\"color: #BABED8\"> retVal<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C792EA\">bool<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #FFCB6B\">ParseRomanNumberText<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #82AAFF\">isValidRomanNumber<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #FFCB6B\">QString<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #BABED8; font-style: italic\">romanNumberText<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #C792EA\">bool<\/span><span style=\"color: #BABED8\"> retVal <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">false;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 QString workStr <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> romanNumberText<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 workStr<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">remove<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">M<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 workStr<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">remove<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">D<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 workStr<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">remove<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">C<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 workStr<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">remove<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">L<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 workStr<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">remove<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">X<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 workStr<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">remove<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">V<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 workStr<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">remove<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #C3E88D\">I<\/span><span style=\"color: #89DDFF\">&#39;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">workStr<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">length<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 retVal <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">true;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #89DDFF; font-style: italic\">return<\/span><span style=\"color: #BABED8\"> retVal<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>I burned a lot of time yicking around with regular expressions for the isValidRomanNumber() routine. I really hate regular expressions and mostly wish they would be banned from the programming world. Few more cryptic and undocumented strings ever get created in any program. This is especially true for the 12 year old boys trapped in older bodies who claim<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>If the code is properly written it does not need documentation.<\/p>\n<\/blockquote>\n\n\n\n<p>If you ever utter that you are a loser who should not be allowed anywhere near a keyboard. You write worthless throw away code which will <em>never<\/em> be maintainable. Anyone who utters that phrase does not have production code which has been in place for 10+ years through business changes. I have code which has been in place for multiple decades at client sites and it has went through multiple sets of sweeping changes due to new input sources combined with business rules changes. It has a ton of comments in it and I still talk with the people who maintain it. If you follow the above philosophy programmers around the world will universally curse your name and pray to various deities that you were born sterile.<\/p>\n\n\n\n<p>The QMap doesn&#8217;t serve much purpose in the toString() method but it sure does in toInt(). Yes, I could have been cuter and not had the switches, but this is something which is supposed to be done within a couple of hours.<\/p>\n\n\n\n<p>The stumbling block for most people, myself included, is that we forget the 5&#8217;s are Red Herrings, hence my hack like switches. I burned a bit of time forgetting that piece of wisdom and trying to be cute. The basic trick is to divide by the 10&#8217;s and let the 5&#8217;s fall where they may.<\/p>\n\n\n\n<p>You really do have to have some kind of hack for the nines though.<\/p>\n\n\n\n<p>A really ingenious little geek would take this example and change the switches to make use of the QMap. Think about it. You just need a version of the QMap which is indexed by value not letter and you could do some _crazy_ stuff generating the strings.<\/p>\n\n\n\n<p>So, there you go. Take it, clean it up, rename everything in the editor and, most importantly do the other QMap for string creation. You will be ready to skip through a test you really shouldn&#8217;t have to take.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you work long enough in IT you will start to really get tired of all the cutesy ways companies try to &#8220;select&#8221; developers\/consultants. Some of the worst ones send people to take on-line tests from commercial sites at the candidates own expense. I don&#8217;t see that much on reqs anymore. Why? Because only the most desperate of bottom feeders would do it. In truth the candidates were a good match because only a bottom &hellip; <a title=\"Roman Numeral Calculator\" class=\"bnm-read-more\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/\"><span class=\"screen-reader-text\">Roman Numeral Calculator<\/span>Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":6748,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,4],"tags":[1279,1280,1281],"class_list":["post-2012","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-information-technology","category-thank-you-sir-may-i-have-another","tag-on-line-tests","tag-programmer-test","tag-roman-number-calculator","bnm-entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Roman Numeral Calculator &#8211; Logikal Blog<\/title>\n<meta name=\"description\" content=\"A Roman Numeral calculator so you don&#039;t have to waste time on a pointless coding test. Just turn this in and walk out.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Roman Numeral Calculator &#8211; Logikal Blog\" \/>\n<meta property=\"og:description\" content=\"A Roman Numeral calculator so you don&#039;t have to waste time on a pointless coding test. Just turn this in and walk out.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/\" \/>\n<meta property=\"og:site_name\" content=\"Logikal Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-02-21T23:41:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-08T22:08:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2017\/02\/cHJpdmF0ZS9zdGF0aWMvaW1hZ2Uvd2Vic2l0ZS8yMDIyLTA0L2xyL2Zyc2xpZGVfcnVsZV9jb3VudF9tYXRoXzEtaW1hZ2Uta3liY3Bpd2kuanBn.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"975\" \/>\n\t<meta property=\"og:image:height\" content=\"1300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/roman-numeral-calculator\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/roman-numeral-calculator\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/b87acf3335e19871db8f4a1aca03736c\"},\"headline\":\"Roman Numeral Calculator\",\"datePublished\":\"2017-02-21T23:41:24+00:00\",\"dateModified\":\"2023-12-08T22:08:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/roman-numeral-calculator\\\/\"},\"wordCount\":771,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/roman-numeral-calculator\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2017\\\/02\\\/cHJpdmF0ZS9zdGF0aWMvaW1hZ2Uvd2Vic2l0ZS8yMDIyLTA0L2xyL2Zyc2xpZGVfcnVsZV9jb3VudF9tYXRoXzEtaW1hZ2Uta3liY3Bpd2kuanBn.jpg\",\"keywords\":[\"on-line tests\",\"programmer test\",\"roman number calculator\"],\"articleSection\":[\"Information Technology\",\"Thank You Sir May I Have Another\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/roman-numeral-calculator\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/roman-numeral-calculator\\\/\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/roman-numeral-calculator\\\/\",\"name\":\"Roman Numeral Calculator &#8211; Logikal Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/roman-numeral-calculator\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/roman-numeral-calculator\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2017\\\/02\\\/cHJpdmF0ZS9zdGF0aWMvaW1hZ2Uvd2Vic2l0ZS8yMDIyLTA0L2xyL2Zyc2xpZGVfcnVsZV9jb3VudF9tYXRoXzEtaW1hZ2Uta3liY3Bpd2kuanBn.jpg\",\"datePublished\":\"2017-02-21T23:41:24+00:00\",\"dateModified\":\"2023-12-08T22:08:36+00:00\",\"description\":\"A Roman Numeral calculator so you don't have to waste time on a pointless coding test. Just turn this in and walk out.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/roman-numeral-calculator\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/roman-numeral-calculator\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/roman-numeral-calculator\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2017\\\/02\\\/cHJpdmF0ZS9zdGF0aWMvaW1hZ2Uvd2Vic2l0ZS8yMDIyLTA0L2xyL2Zyc2xpZGVfcnVsZV9jb3VudF9tYXRoXzEtaW1hZ2Uta3liY3Bpd2kuanBn.jpg\",\"contentUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2017\\\/02\\\/cHJpdmF0ZS9zdGF0aWMvaW1hZ2Uvd2Vic2l0ZS8yMDIyLTA0L2xyL2Zyc2xpZGVfcnVsZV9jb3VudF9tYXRoXzEtaW1hZ2Uta3liY3Bpd2kuanBn.jpg\",\"width\":975,\"height\":1300,\"caption\":\"Math slide calculator\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/roman-numeral-calculator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Roman Numeral Calculator\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\",\"name\":\"Logikal Blog\",\"description\":\"For people with attention spans longer than a Tweet\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\",\"name\":\"seasoned_geek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"caption\":\"seasoned_geek\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\"},\"description\":\"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\\\/Qt touchscreen\\\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \\\"Zinc It!\\\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \\\"The Minimum You Need to Know to Be an OpenVMS Application Developer\\\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \\\"The Minimum You Need to Know\\\" book series was born. Three years later he wrote his first novel \\\"Infinite Exposure\\\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \\\"The Earth That Was\\\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.\",\"sameAs\":[\"https:\\\/\\\/theminimumyouneedtoknow.com\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/b87acf3335e19871db8f4a1aca03736c\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r\",\"caption\":\"admin\"},\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Roman Numeral Calculator &#8211; Logikal Blog","description":"A Roman Numeral calculator so you don't have to waste time on a pointless coding test. Just turn this in and walk out.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/","og_locale":"en_US","og_type":"article","og_title":"Roman Numeral Calculator &#8211; Logikal Blog","og_description":"A Roman Numeral calculator so you don't have to waste time on a pointless coding test. Just turn this in and walk out.","og_url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/","og_site_name":"Logikal Blog","article_published_time":"2017-02-21T23:41:24+00:00","article_modified_time":"2023-12-08T22:08:36+00:00","og_image":[{"width":975,"height":1300,"url":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2017\/02\/cHJpdmF0ZS9zdGF0aWMvaW1hZ2Uvd2Vic2l0ZS8yMDIyLTA0L2xyL2Zyc2xpZGVfcnVsZV9jb3VudF9tYXRoXzEtaW1hZ2Uta3liY3Bpd2kuanBn.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/#article","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/"},"author":{"name":"admin","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/b87acf3335e19871db8f4a1aca03736c"},"headline":"Roman Numeral Calculator","datePublished":"2017-02-21T23:41:24+00:00","dateModified":"2023-12-08T22:08:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/"},"wordCount":771,"commentCount":0,"publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/#primaryimage"},"thumbnailUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2017\/02\/cHJpdmF0ZS9zdGF0aWMvaW1hZ2Uvd2Vic2l0ZS8yMDIyLTA0L2xyL2Zyc2xpZGVfcnVsZV9jb3VudF9tYXRoXzEtaW1hZ2Uta3liY3Bpd2kuanBn.jpg","keywords":["on-line tests","programmer test","roman number calculator"],"articleSection":["Information Technology","Thank You Sir May I Have Another"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/","url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/","name":"Roman Numeral Calculator &#8211; Logikal Blog","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/#primaryimage"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/#primaryimage"},"thumbnailUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2017\/02\/cHJpdmF0ZS9zdGF0aWMvaW1hZ2Uvd2Vic2l0ZS8yMDIyLTA0L2xyL2Zyc2xpZGVfcnVsZV9jb3VudF9tYXRoXzEtaW1hZ2Uta3liY3Bpd2kuanBn.jpg","datePublished":"2017-02-21T23:41:24+00:00","dateModified":"2023-12-08T22:08:36+00:00","description":"A Roman Numeral calculator so you don't have to waste time on a pointless coding test. Just turn this in and walk out.","breadcrumb":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/#primaryimage","url":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2017\/02\/cHJpdmF0ZS9zdGF0aWMvaW1hZ2Uvd2Vic2l0ZS8yMDIyLTA0L2xyL2Zyc2xpZGVfcnVsZV9jb3VudF9tYXRoXzEtaW1hZ2Uta3liY3Bpd2kuanBn.jpg","contentUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2017\/02\/cHJpdmF0ZS9zdGF0aWMvaW1hZ2Uvd2Vic2l0ZS8yMDIyLTA0L2xyL2Zyc2xpZGVfcnVsZV9jb3VudF9tYXRoXzEtaW1hZ2Uta3liY3Bpd2kuanBn.jpg","width":975,"height":1300,"caption":"Math slide calculator"},{"@type":"BreadcrumbList","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/roman-numeral-calculator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.logikalsolutions.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Roman Numeral Calculator"}]},{"@type":"WebSite","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website","url":"https:\/\/www.logikalsolutions.com\/wordpress\/","name":"Logikal Blog","description":"For people with attention spans longer than a Tweet","publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.logikalsolutions.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842","name":"seasoned_geek","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","url":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","caption":"seasoned_geek"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r"},"description":"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\/Qt touchscreen\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \"Zinc It!\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \"The Minimum You Need to Know to Be an OpenVMS Application Developer\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \"The Minimum You Need to Know\" book series was born. Three years later he wrote his first novel \"Infinite Exposure\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \"The Earth That Was\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.","sameAs":["https:\/\/theminimumyouneedtoknow.com"]},{"@type":"Person","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/b87acf3335e19871db8f4a1aca03736c","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r","url":"https:\/\/secure.gravatar.com\/avatar\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r","caption":"admin"},"url":"https:\/\/www.logikalsolutions.com\/wordpress\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/2012","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/comments?post=2012"}],"version-history":[{"count":0,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/2012\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media\/6748"}],"wp:attachment":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media?parent=2012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/categories?post=2012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/tags?post=2012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}