开发者

Logic / Algorithm for this Series

开发者 https://www.devze.com 2023-04-09 03:07 出处:网络
I have an array of characters from a to z, my task is to extract the vowels out of this array, the series that will extract the indexes of vowels goes like this, 1, 5, 9开发者_开发问答, 15, 21, 25...

I have an array of characters from a to z, my task is to extract the vowels out of this array, the series that will extract the indexes of vowels goes like this, 1, 5, 9开发者_开发问答, 15, 21, 25... i am unable to create this series through loops, these numbers are actually the vowels in the array.

I don't want Vowel Matching technique, i want the logic for the sequence given above.


If you really want to do this algorithmically, you could:

int v = 1;
for (int i = 0; i < 6; i++) {
    printf("%d\n", v);
    v += 4 + (i & 2);
}

...but I'm not sure I see the point.


I would consider the solution proposed by Greg Hewgill to be the more appropiate one, where you have int vowels[] = {1, 5, 9, 15, 21, 25}; and vowels[i] is your function. However, if you want a math function Wolfram Alpha proposes:

(z(z((9-5z)z-11)+5))/((z-1)^4)+1

http://www.wolframalpha.com/input/?i=1%2C+5%2C+9%2C+15%2C+21%2C+25

That said, I don't see a point in using it instead of the array.


You can doubtlessly find a formula for the sequence, but is that the right approach? Whether a character is a vowel or not isn't determined by whether it is a member of a sequence or not; it is purely arbitrary, and not necessarily the same from one language to another: y is a vowel in some languages, a consonant in others, and can be either in English; 27, 28 and 29 don't exist in English, but are vowels in Swedish, etc.

0

精彩评论

暂无评论...
验证码 换一张
取 消