Найти наибольшее число, получаемое левыми сдвигами цифр натурального числа - Lisp
Формулировка задачи:
Задача из форума Turbo Pascal:
Прочитать натуральное число а, которое может содержать до 100 цифр
Найти наибольшее число, получаемое левыми сдвигами цифр натурального числа.
Решение задачи: «Найти наибольшее число, получаемое левыми сдвигами цифр натурального числа»
textual
Листинг программы
- (define (prepare-data n (str (string->list (number->string n))))
- (let loop ((data str) (len (length str)) (acc '()))
- (if (zero? len)
- acc
- (loop (append (rest data) (list (first data))) (sub1 len) (cons data acc)))))
- (define (main n)
- (string->number (first (sort (map list->string (prepare-data n)) string>?))))
- ;> (main 1234)
- ;4123
- ;>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д