I tried coding this myself and horribly failed. This is basically what I want:
a
b
...
z
aa
ba
...
za
ab
bb
...
zz
aaa
baa
...
zzz
In the end it should have generated every string that is shorter then N characters with charset a-z. So I'm not looking for permutations (of which 1001 implementations can be found on the internet), but for combinations with replacement (at least that's how it's called in Python). Order is not important, speed is.
Looks like you want it in C, here is a way to do it:
#include <stdlib.h>
#include <stdio.h>
int inc(char *c){
if(c[0]==0) return 0;
if(c[0]=='z'){
c[0]='a';
return inc(c+sizeof(char));
}
c[0]++;
return 1;
}
int main(void){
int n = 3;
int i,j;
char *c = malloc((n+1)*sizeof(char));
for(i=1;i<=n;i++){
for(j=0;j<i;j++) c[j]='a';
c[i]=0;
do {
printf("%s\n",c);
} while(inc(c));
}
free(c);
}
Something like this (pseudocode):
void CompWithRep(string line,int N) {
char c;
if (N==0) return;
for (c = 'a' ; c <= 'z' ; c++ )
{
printf(line + c);
CompWithRep(line + c,N-1);
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With