Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Clojure - оптимизация кода, Оптимизация Closure программы 
:(
    Опции темы
NewsMaker
Дата 13.7.2010, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 9.7.2010

Репутация: нет
Всего: нет



Начинаю изучать Clojure (Lisp для JVM). Написал программу для вывода строки длинною 100 символов без повторяющихся рядом подстрок.
Причем различных символов всего 3. 

Для примера - неправильные строки
01020102
010202
01022

Вопрос.  Есть каки-то конструкции для оптимизации этого кода? 

Код

(ns com.example.clojure.Line)

(defn first-part [k]
  (subvec k (mod (count k) 2) (/ (+ (count k) 1) 2))
)
(defn second-part [k]  
  (subvec k (/ (+ (count k) 1) 2))
)
(defn incorrect? [list] 
    (if (= (count list) 1)
      false     
      (if (= (first-part list) (second-part list))
          true      
          (recur (subvec list 1))
      )
    )
)
(defn f []
  (loop [str [0 1] c 0]  
    (if (= c 3)
      (recur (pop str) (inc (peek str)))
      (if (incorrect? str)
         (recur (pop str) (inc (peek str)))
         (if (= (count str) 100)
           str
           (recur (conj str c) 0))
      )
    )
 )
)



PM MAIL   Вверх
k0rvin
Дата 14.7.2010, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: нет
Всего: 5



кто Вас научил переносить закрывающиеся скобки? вырвите ему глаз


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LISP | Следующая тема »


 




[ Время генерации скрипта: 0.0370 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.