From ca934ad2fd8208c9ce9d8a6761c09d7f7ce54194 Mon Sep 17 00:00:00 2001 From: Paulo Custodio Date: Fri, 5 Mar 2021 20:20:08 +0000 Subject: Add Basic, C and C++ solutions to challenge 102 --- challenge-102/paulo-custodio/cpp/ch-2.cpp | 54 +++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 challenge-102/paulo-custodio/cpp/ch-2.cpp (limited to 'challenge-102/paulo-custodio/cpp/ch-2.cpp') diff --git a/challenge-102/paulo-custodio/cpp/ch-2.cpp b/challenge-102/paulo-custodio/cpp/ch-2.cpp new file mode 100644 index 0000000000..24fbf2fb06 --- /dev/null +++ b/challenge-102/paulo-custodio/cpp/ch-2.cpp @@ -0,0 +1,54 @@ +/* +Challenge 102 + +TASK #2 › Hash-counting String +Submitted by: Stuart Little + +You are given a positive integer $N. + +Write a script to produce Hash-counting string of that length. + +The definition of a hash-counting string is as follows: +- the string consists only of digits 0-9 and hashes, ‘#’ +- there are no two consecutive hashes: ‘##’ does not appear in your string +- the last character is a hash +- the number immediately preceding each hash (if it exists) is the position +of that hash in the string, with the position being counted up from 1 + +It can be shown that for every positive integer N there is exactly one such +length-N string. +Examples: + +(a) "#" is the counting string of length 1 +(b) "2#" is the counting string of length 2 +(c) "#3#" is the string of length 3 +(d) "#3#5#7#10#" is the string of length 10 +(e) "2#4#6#8#11#14#" is the string of length 14 +*/ + +#include +#include + +std::string hash_count(int n) { + std::string str(n, ' '); + int i = n - 1; + while (i >= 0) { + int pos = i + 1; + str[i--] = '#'; + while (i >= 0 && pos != 0) { + str[i--] = '0' + (pos % 10); + pos /= 10; + } + } + return str; +} + + +int main(int argc, char* argv[]) { + if (argc != 2) { + std::cerr << "Usage: ch-1 N" << std::endl; + return EXIT_FAILURE; + } + else + std::cout << hash_count(atoi(argv[1])) << std::endl; +} -- cgit