Submission details
Task:Nimionese
Sender:wavelets
Submission time:2015-11-25 18:52:44 +0200
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.06 sdetails
#2ACCEPTED0.07 sdetails
#3ACCEPTED0.06 sdetails
#4ACCEPTED0.05 sdetails
#5ACCEPTED0.05 sdetails
#6ACCEPTED0.05 sdetails
#7ACCEPTED0.05 sdetails
#8ACCEPTED0.05 sdetails
#9ACCEPTED0.06 sdetails
#10ACCEPTED0.07 sdetails
#11ACCEPTED0.04 sdetails
#12ACCEPTED0.05 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:87:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 0; i < word.length(); ++i)
                     ^
input/code.cpp:97:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 1; i < syb.size(); ++i)
                     ^
input/code.cpp:99:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for (int a = 0; a < syb[i].length(); ++a)
                      ^

Code

#include <iostream>
#include <string>
#include <vector>
#include <set>
#include <unordered_set>
using namespace std;
unordered_set<char> hard = {'b','c','d','g','k','n','p','t'};
unordered_set<char> hard_up = {'B','C','D','G','K','N','P','T'};
bool iscap(char c){return c < 'a';}
bool ishard(char c){return hard.count(c) || hard_up.count(c); }
char nearest_hard(char c)
{
int mind = 1000;
bool tie = false;
char tiechar = 127;
char minchar = 127;
const auto& vec = iscap(c) ? hard_up : hard;
for (char t: vec)
{
int d = abs(int(c)-int(t));
if (d == mind)
{
tie = true;
tiechar = min(t, tiechar);
}
else if (d < mind)
{
tie = false;
mind = d;
minchar = t;
tiechar = 127;
}
}
if (tie)
return tiechar;
else
return minchar;
}
string nearest_end(char c)
{
int mind = 1000;
bool tie = false;
char tiechar = 127;
char minchar = 127;
vector<char> vec = {'a','o','u'};
for (char t: vec)
{
int d = abs(int(c)-int(t));
if (d == mind)
{
tie = true;
tiechar = min(t, tiechar);
}
else if (d < mind)
{
tie = false;
mind = d;
minchar = t;
tiechar = 127;
}
}
if (tie)
return string() + tiechar + "h";
else
return string() + minchar + "h";
}
int main()
{
string word;
while(cin>>word)
{
if (!cin)break;
//
word[0] = nearest_hard(word[0]);
// loop syllables
vector<string> syb(1);
for (int i = 0; i < word.length(); ++i)
{
char c = word[i];
if (c == '-')
syb.push_back(string());
else
syb.back() += c;
}
word = syb[0];
for (int i = 1; i < syb.size(); ++i)
{
for (int a = 0; a < syb[i].length(); ++a)
{
if (ishard(syb[i][a]))
{
bool cap = iscap(syb[i][a]);
syb[i][a] = std::tolower(syb[0][0]);
if (cap)
syb[i][a] = std::toupper(syb[0][0]);
}
}
word += syb[i];
}
//
if (ishard(word[word.length()-1]))
{
word += nearest_end(word[word.length()-1]);
}
cout << word << " ";
}
cout << endl;
}

Test details

Test 1

Verdict: ACCEPTED

input
Each hip-po dog hip hip Hooray

correct output
Dach gipgo dogah gipoh gipoh G...

user output
Dach gipgo dogah gipoh gipoh G...

Test 2

Verdict: ACCEPTED

input
aa ab ac ad ae af ag ah ai aj ...

correct output
ba bbah bcah bdah be bf bgah b...

user output
ba bbah bcah bdah be bf bgah b...

Test 3

Verdict: ACCEPTED

input
axx bxx cxx dxx exx fxx gxx hx...

correct output
bxx bxx cxx dxx dxx gxx gxx gx...

user output
bxx bxx cxx dxx dxx gxx gxx gx...

Test 4

Verdict: ACCEPTED

input
bc-acb bd-adb bg-agb bk-akb bn...

correct output
bcabbah bdabbah bgabbah bkabba...

user output
bcabbah bdabbah bgabbah bkabba...

Test 5

Verdict: ACCEPTED

input
Hip-po Aip-pop cip-pop dip-pop...

correct output
Gipgo Bipbobah cipcocah dipdod...

user output
Gipgo Bipbobah cipcocah dipdod...

Test 6

Verdict: ACCEPTED

input
d d d d d d d d d d d d d d d ...

correct output
dah dah dah dah dah dah dah da...

user output
dah dah dah dah dah dah dah da...

Test 7

Verdict: ACCEPTED

input
Dad dad Dad dad dad dad dad da...

correct output
Dadah dadah Dadah dadah dadah ...

user output
Dadah dadah Dadah dadah dadah ...

Test 8

Verdict: ACCEPTED

input
dddddddddddddddddddddddddddddd...

correct output
dddddddddddddddddddddddddddddd...

user output
dddddddddddddddddddddddddddddd...

Test 9

Verdict: ACCEPTED

input
Wpgliaku-uibagddilpynomsytuubi...

correct output
Tpgliakuuitatttiltytomsytuutil...

user output
Tpgliakuuitatttiltytomsytuutil...

Test 10

Verdict: ACCEPTED

input
Fsqn-ggoou-padnrosondpf-mtsjfs...

correct output
Gsqnggoougaggrosogggfmgsjfsagl...

user output
Gsqnggoougaggrosogggfmgsjfsagl...

Test 11

Verdict: ACCEPTED

input
Ojaivaeduuucykdclkyammbvozytuk...

correct output
Njaivaeduuucykdclkyammbvozytuk...

user output
Njaivaeduuucykdclkyammbvozytuk...

Test 12

Verdict: ACCEPTED

input
Uprtouo-nvnabbiedq-vzogovufjaa...

correct output
Tprtouotvtattietqvzotovufjaaee...

user output
Tprtouotvtattietqvzotovufjaaee...