У нас есть массив некоторой длины (скажем, 3) и некоторая последовательность подсчета: 0,1,2,3,4,...
до бесконечности. Из этой входной последовательности нам нужно создать последовательность, которая будет проходить через массив вперед и назад, например: 0,1,2,1,0,1,2,1,0,...
и так далее для length=3
.
Я думаю, что эта задача очень распространена во многих книгах по программированию, но я не смог найти стандартное решение, поэтому я создал собственное решение. Есть ли другое, более эффективное и элегантное решение, потому что мне не нравится мое решение ???
#define LENGTH 5
int main()
{
char arr[LENGTH] = {'a','b','c','d','e'};
int i;
int base=0;
for(i=0;i<100;i++){
if(i%(LENGTH-1)==0){
if(base==0) base=LENGTH-1;
else base =0;
}
int j = abs(base-i%(LENGTH-1));
printf("%c ",arr[j]);
}
}
Java-код (для вашего удобства):
public static void traverse(){
char arr[] = {'a','b','c','d','e'};
int base=0;
for(int i=0;i<100;i++){
if(i%(arr.length-1)==0){
if(base==0) base=arr.length-1;
else base =0;
}
int j = Math.abs(base-i%(arr.length-1));
System.out.println(arr[j]+" ");
}
}