2015-05-05 3 views
0

Учитывая два списка чисел (одной длины), возвращаем наибольшую разницу между соответствующими парами чисел (без создания другого списка). Например ...Схема - наибольшая разница между двумя списками

Given [ 2 6 3 ] and [ 4 6 2 ], 
their differences are [ (2-4) (6-6) (3-2) ], or [ 2 0 1 ], 
so the largest difference is 2. 

Обратите внимание, что разница всегда положительна (абсолютное значение).

ответ

2

Я предоставляю код только в том случае, когда OP предоставляет код, так что вот только что описанное решение. Счастливое кодирование!

Вы можете использовать fold-left и предоставить процедуру, которая берет максимум аккумулятора и абсолютную разницу между двумя обрабатываемыми элементами.

fold-left является R6RS name и находится в библиотеке (rnrs lists (6)). Для совместимого подхода вам необходимо использовать SRFI-1 List Library. Здесь он называется fold, а аккумулятор - последний аргумент вместо первого.

Многие реализации и языки Схемы R5RS, которые получены на языке Схемы (например, Racket), имеют левую складку, реализованную по имени foldl. Вам нужно проверить его документацию, чтобы получить порядок аргументов по мере их изменения. Он не является частью стандарта, поэтому он не переносится между реализациями. Я призываю вас либо использовать R6RS, либо SRFI-1.

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