Jump to content

Four is the number of letters in the ...: Difference between revisions

m
Performance improvement
(Added C solution)
m (Performance improvement)
Line 364:
}
 
const named_number& get_named_number(uint64_t n) {
void append(std::vector<std::string>& v1, const std::vector<std::string>& v2) {
constexpr size_t names_len = std::size(named_numbers);
v1.insert(v1.end(), v2.begin(), v2.end());
for (size_t i = 0; i + 1 < names_len; ++i) {
if (i == names_len || n < named_numbers[i + 1].number) {
return named_numbers[i];
}
return named_numbers[names_len - 1];
}
 
size_t append_number_name(std::vector<std::string>& result, number_name(uint64_t n, bool ordinal) {
size_t count = 0;
std::vector<std::string> result;
if (n < 20) {
result.push_back(get_name(small[n], ordinal));
count = }1;
}
else if (n < 100) {
if (n % 10 == 0) {
Line 381 ⟶ 388:
result.push_back(name);
}
ncount += v.size()1;
} else {
constexprconst size_tnamed_number& names_lennum = std::sizeget_named_number(named_numbersn);
foruint64_t (size_t ip = 1num.number; i <= names_len; ++i) {
count += append_number_name(result, n/p, false);
if (i == names_len || n < named_numbers[i].number) {
if (n uint64_t% p == 0) named_numbers[i-1].number;{
appendresult.push_back(result, number_nameget_name(n/pnum, falseordinal));
if (n % p == 0) {++count;
} else }{
result.push_back(get_name(named_numbers[i-1], ordinal));
result.push_back(get_name(num, } else {false));
break++count;
result.push_back(get_name(named_numbers[i-1], false));
count += appendappend_number_name(result, number_name(n % p, ordinal));
}
break;
}
}
}
return resultcount;
}
 
Line 421 ⟶ 426:
}
for (size_t i = 1; count > n; ++i) {
appendn += append_number_name(vresult, number_name(count_letters(result[i]), false));
std::vector<std::string> v;
result.push_back("in");
append(v, number_name(count_letters(result[i]), false));
vresult.push_back("inthe");
v.push_back("the")n += 2;
appendn += append_number_name(vresult, number_name(i + 1, true));
vresult.back() += ',';
n += v.size();
append(result, v);
}
return result;
1,777

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.