Найти наибольшее число, получаемое левыми сдвигами цифр натурального числа - 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 ;>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д