2016-04-05 3 views
0

В задании, которое у меня есть, я должен найти самый большой пробел в массиве.racket получить два объекта в массиве

Для этого я получаю 5 цифр и хочу передать каждую цифру и проверить ее по сравнению с следующей цифрой.

Я Источник, что 'за' что-то работает так:

> (for/list ([i '(1 2 3)]) 
    (* i i)) 
'(1 4 9) 

Вопрос заключается в том, чтобы получить не 'я' позицию, но и '(' I '+ 1)' позиции. В Java путь будет что-то вроде этого:

public void gettingSecondIndex(int a,int b,int c,int x,int y){ 
     int[] abc = {a,b,c,x,y}; 
     int index, secondIndex; 
     for(int i = 0 ; i < abc.length - 1 ; i++){ 
      index = abc[i]; // this is the index 
      secondIndex = abc[i+1]; // this is what I am looking how to do in Racket 
     } 
    } 
} 

ответ

3

При работе с списками в рэкете, постарайтесь забыть о индексах (они не массивы!). Вы можете получить желаемый эффект с чем-то вроде этого:

(define (getting-second-index lst) 
    (for/list ([n1 lst] 
      [n2 (rest lst)]) 
    (list n1 n2))) 

Теперь, когда у вас есть смежные пары, приступить к их обработке, как вы хотите:

(getting-second-index '(1 2 3 4 5)) 
=> '((1 2) (2 3) (3 4) (4 5)) 
+0

'for' понимание остановится, когда кратчайшее последовательность заканчивается, поэтому «drop-right» не нужен и расточителен. :-) –

+0

Эй, спасибо за ответ! ummm Я действительно новичок в Racket, поэтому, если вы можете объяснить мне с фиксацией строк, поэтому я смогу понять больше, я буду счастлив :) – Tomer

+1

@ ChrisJester-Young приятный отзыв, спасибо! –

Смежные вопросы