LINUX.ORG.RU

Сообщения saufesma

 

Не работает функция

 

(defvar n)
(setq n 3)

(defun list-reverse (list)
  (do ((z 1 (- n 1))
       (x list (cdr x))
       (y '() (cons (car x) y)))
      ((= z 0)
       y)))

(list-reverse '(a b c d f e g)) => '(a b c)

и оно никак. Надо обязательно на do сделать, а то я с ним не разберусь.

Там люди вот такое выдают на do.

(defun factorial (n)
(do (( j n (- j 1))
(f 1 (* j f )))
((= j 0) f )))
(defun list-reverse (list n)
  (do ((n (- n 1))
       (x list (cdr x))
       (y '() (cons (car x) y)))
      ((= n 0) y)
    (print (list n x y))))

( LIST-REVERSE '(b n v g f k) 3)

(2 (B N V G F K) NIL) 
(2 (N V G F K) (B)) 
(2 (V G F K) (N B)) 
(2 (G F K) (V N B)) 
(2 (F K) (G V N B)) 
(2 (K) (F G V N B)) 
(2 NIL (K F G V N B)) 
(2 NIL (NIL K F G V N B)) 
(2 NIL (NIL NIL K F G V N B)) 
(2 NIL (NIL NIL NIL K F G V N B)) 
(2 NIL (NIL NIL NIL NIL K F G V N B)) 
(2 NIL (NIL NIL NIL NIL NIL K F G V N B)) 
(2 NIL (NIL NIL NIL NIL NIL NIL K F G V N B)) 
(2 NIL (NIL NIL NIL NIL NIL NIL NIL K F G V N B)) 
(2 NIL (NIL NIL NIL NIL NIL NIL NIL NIL K F G V N B)) 
(2 NIL (NIL NIL NIL NIL NIL NIL NIL NIL NIL K F G V N B)) 
(2 NIL (NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL K F G V N B)) 
и т.д.

пока не понял почему

ну вот с + заработала

(defun list-reverse (list)
  (do ((n 0 (+ n 1))
       (x list (cdr x))
       (y '() (cons (car x) y)))
      ((= n 3) y)
    (print (list n x y))))
LIST-REVERSE
CL-USER> ( LIST-REVERSE '(b v c x z))

(0 (B V C X Z) NIL) 
(1 (V C X Z) (B)) 
(2 (C X Z) (V B)) 
(C V B)

saufesma
()

Не могу написать код по заданному алгоритму

 ,

Граждане и гражданки ЛОР не дайте свихнуться, а дайте код на Lisp или Scheme

у меня два списка (а1 а2 а3 ... an) (Р0 Р1 Р2 ... Pn)

в первом проходе получаю списки (а1) (Р0) и решение такого ур-ия

M1 = P0 * a1

в втором проходе получаю списки (a1 a2) (P0 P1) и решение такого ур-ия

M2 = P0 * a2 + (P1 * (a2 - a1))

в третьем проходе плучаю списки (a1 a2 a3) (P0 P1 P2) и решение такого ур-ия

M3 = P0 * a3 + (P1 * (a3 - a1) + P2 *(a3 - a2))

ну и т.д.

Общее уравнение

 i
 Mn = P0 * an + ΣPi * (an - ai)
 i=1

мозги колом встали

saufesma
()

Динамически добавляемые текстовые поля

 

#lang racket/gui
; Make a frame by instantiating the frame% class
(define frame (new frame% [label "Example"]))

;; переменная количества сил действующих на балку
(define num 0)

;; поле ввода количества сил действующих на балку
(define how-many-fields (new text-field%
                             [label "Сколько сил"]
                [parent frame]
                [callback (λ (w e) (set! num (string->number (send w
get-value))))]))

;;здесь наверное должен быть макрос
;;бестолковая попытка добавления текстовых полей в форму
(define (count n t-f)
  (if (= n 0)
      t-f
      (count (- n 1) t-f)))

;; количество этих полей должно быть равно num, как к такой
;  проблеме подходить
(define tf (new text-field% [label "bla"]
                [parent frame]))
(count num tf)

; Show the frame by calling its show method
(send frame show #t)

saufesma
()

cmucl on linux mint

 

Зараза

/opt/cmucl-21d/bin$ lisp bash: /home/wool/opt/cmucl-21d/bin/lisp: No such file or directory

/opt/cmucl-21d/bin$ ./lisp bash: ./lisp: No such file or directory

echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/brlcad/bin:/home/wool/opt/cmucl-21d/bin

где-то простой косяк

может потому, что не system wide /home/wool/opt/cmucl-21d/bin

новый bash зпускаешь и

echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/brlcad/bin

saufesma
()

poplog

 

кто-нибудь пробовал работать с poplog?

https://www.cs.bham.ac.uk/research/projects/poplog/V16/AREADME.html

saufesma
()

Добавьте пример letrec

 

r5rs приводит пример

(letrec ((even?
          (lambda (n)
            (if (zero? n)
                #t
                (odd? (- n 1))))) ;; ---> <bindings> should have 
                         ;;the form ((<variable1> <init1>)
                         ;;в данном случае
                         ;;<variable1> n
                         ;;<init1> (lambda (n) ...)
         (odd?
          (lambda (n)
            (if (zero? n)
                #f
                (even? (- n 1)))))) ;;---> <bindings>
  (even? 88)) ;;---> <body>

library syntax: (letrec <bindings> <body>)

Из-за того что

library procedure: (odd? n)

library procedure: (even? n)

These numerical predicates test a number for a particular property, returning #t or #f.

пример выглядит не совсем понятным.

Бросьте более читаемый примерчик использования letrec.

saufesma
()

Есть ли VARKON CAD скомпилированный в/как AppImage

 

Нигде не могу найти, хотелось бы посмотреть как оно устроено.

saufesma
()

На какой градус повернуть оси в 3Д чертеже чтобы получить аксонометрию в 2Д

 

Оси, default

Х горизонтально слева направо

Y вверх

Z на user

saufesma
()

Вопрос грамотным форумчанам

 

Объясните, мне один момент. no-such-file, monk, DarkEld3r

вот здесь беседа очень грамотных людей

DrRacket and elisp окончательно запутался (комментарий)

сегодняшняя беседа идет уже 9 часов, по моим подсчётам.

Вот мой вопрос почему это количество постов не перетекает в качество, то есть в предложение сделать, что-либо, управляемый механизм, управляемую технологическую цепочку, что угодно. Ведь если такого нет это всё просто болталогия даже если она и интересная. Ведь это 9 часов жизни в никуда. Может уже стоит попробовать, что-то предложить создать.

Перемещено Zhbert из general

saufesma
()

DrRacket and elisp окончательно запутался

 ,

Не могу понять уже, что я тут писал, всего-то нужна функция которая режет лист на две части и возвращает левую часть то, что я написал на ракете, не работает и не пойму почему

#lang racket
(define *distance-lst* (list 1 2 3 4 5 6))

(define *A-distance* 3)
(define *left-A-lst* '())

(define d-lst (length *distance-lst*))
(define *output-lst* '())
(define (slice input-lst a output-lst)
  (if (< (first input-lst) a)
      (slice (cons (first input-lst) output-lst)
             a
             (set! input-lst (rest input-lst)))
      output-lst))
     
;;(define (split-lst lst-input a lst-output)
;  (if (< (first lst-input) a)
 ;     (split-lst (set! lst-input (rest lst-input))
  ;                     a
   ;                    (set! lst-output
    ;                         (cons
     ;                         (first lst-input) lst-output)))
 ; lst-output))

(slice *distance-lst* *A-distance* *left-A-lst*)

и вот на elisp и работает как надо, задолбало, что не так не могу понять эту ракету

(defun slice (input-lst a output-lst)
(if (< (car input-lst) a)
(slice (cdr input-lst) a (push (car input-lst) output-lst))
output-lst))

(nreverse (slice '(1 2 3 4 5 6) 5 '()))
saufesma
()

Emacs -> sbcl, wishfull thinking

 ,

Никто не пробовал соединить emacs widget с sbcl, я вот к чему, пишем интерфейс на emаcs а обработчик вызывает код на sbcl и уже там происходит вычисление кода, common lisp кода.

saufesma
()

Не могу выловить Wrong type argument: number-or-marker-p, nil

 

(defun pos-in-lst (n lst count)
  (if (= n (car lst))
      count
    (pos-in-lst n (setq lst (cdr lst))
		(setq count (+ count 1)))))

.......
;;В этом месте всё прекрасно
(setq *omega3-max-pos-in-lst* (pos-in-lst *omega3-max*
					   *rev-true-omega3-lst*
					   *count*))
 ;; а здесь ошибка Wrong type argument: number-or-marker-p, nil
  (setq *PHI2-at-omega3-max* (pos-in-lst *omega3-max-pos-in-lst*
					   *lst-of-val-PHI2*
					   *count*))

Проверяю аргументы

*omega3-max-pos-in-lst* ===> 59 (#o73, #x3b, ?\;)

*lst-of-val-PHI2* ===> (6.283185307179525 6.248278722139639 6.213372137099753 6.178465552059866 6.14355896701998 6.108652381980094 6.073745796940208 6.038839211900322 6.003932626860435 5.969026041820549 5.934119456780663 5.899212871740777 ...)

*count* ===> 0 (#o0, #x0, ?\C-@)

Правда 1011 строк кода и имакс просто отказывается работать, не могу сообразить

saufesma
()

Как сконструировать лист

 

(defvar *lst*)
(defvar *w-lst*)
(defvar *pos-min*)
(defvar *pos-max*)
(setq *lst* (list 45 1 2 3 4 5 6 7))
(setq *w-lst nil)
(setq *pos-min* 2)
(setq *pos-max* 3)

Как на выходе получить лист *w-lst* с элементами (1 2), сообразить не могу. Используемый язык elisp.

Получил я свой лист, сомнительным способом, может кто математически подскажет, а то может оказаться, что этот код только на этом листе и даёт правильный результат

(progn
(defvar *lst*)
(defvar *w-lst*)
(defvar *w-lst1*)
(defvar *pos-min*)
(defvar *pos-max*)
(setq *lst* (list 45 1 2 3 4 5 6 7))
(setq *w-lst* nil)
(setq *w-lst1* nil)
(setq *pos-min* 2)
(setq *pos-max* 3))

(defun list-cdr (w-lst1 lst pos-max)
  (if (< 0 pos-max)
      (make-list (push (car lst) w-lst1)
		 (setq lst (cdr lst))
	       (- pos-max 1))
    w-lst1))

(setq *w-lst1* (nreverse
(list-cdr *w-lst1* *lst* *pos-max*)))

(setq *w-lst1* (nthcdr (- *pos-min* 1) *w-lst1*))

saufesma
()

Нужно что-то делать

 

Я в такое упираюсь по часу бывает

An error occurred during a connection to www.linux.org.ru. PR_END_OF_FILE_ERROR

The page you are trying to view cannot be shown because the authenticity of the received data could not be verified.
Please contact the website owners to inform them of this problem.

а в dwg.ru такое не выскакивает. Можно что-то сделать?

saufesma
()

Куда помещать табличные данные для програмки

 

Получилось как одним заглавием всё сказал. Добавлю, если в листы запихивать таблицы то программка будет совсем уж увесистой, да писать их трудновато, ошибки трудно будет вылавливать. В отдельный файл, то не знаю как оттуда потом дергать данные. Заранее спасибо.

saufesma
()

Как рассматривать результаты вычислений

 

Такая задача, цилиндр длиной 1000мм, радиусом 57 мм. Определить массу, момент инерции, задача решается руками и с помощью VariCAD

Плотностьρ 7.85E-06кг/мм^3
ДлинаL 1000мм
РадиусR 57мм
Массаm(PI * R^2 * L) * ρ80.1252210723789кг
РезультатVariCAD 80.125221кг
Момент инерцииJ(m / 2)* R^20.13016342163208кг/м^2
РезультатVariCAD 0.12858245446869кг/м^2

Нетрудно видеть с массой VariCAD справился на отлично, с моментом инерции не очень или это у меня косяк, а какой не вижу.

Стало интересовать такая проблема, простенькая такая как центр тяжести. Как пример, берём трубу длиной 1000мм, диаметром 57мм, толщина стенки 3.5мм и сверлим в ней отверстия в ряд по 8мм каждое, насквозь. А затем делаем лыску на стороне скажем входных отверстий, вставляем в отверстия штыри по 150 мм, и вот надо рассчитать центр тяжести. Руками как-то не знаю, может кто научит? Теперь не знаю как решить такую задачку т.к. не знаю как относиться к результатам расчёта на VariCAD. Salome-meca and FreeCAD or Solvespace такие дела не решают. Кто подскажет софту?

saufesma
()

Уже не читабельная таблица LibreOffice Calc

 ,

Скорее всего я разговариваю сам с собой, у меня вводных 100 строк, 13 листов расчётов. От 20 до 40 строчек каждый лист. Каждый лист зависит от предыдущего, что с этим делать не могу сообразить. Как это раскидать чтобы можно было работать комфортнее. Data base какую сделать, так в LibreOffice data base как адресная книга, а у меня цифирки, да и на имаксе тоже не знаю как. Вдруг кто сталкивался с такой ситуацией, подскажите.

saufesma
()

Не могу разобраться с emacs widget

 ,

Перелопатил widget example и widget-demo.el, в последнем оказались ошибки которые нужно исправлять, а я не понимаю как эти видгеты определять, если требуется выход за рамки widget example, не то, что ошибки исправлять, ситуация из рук вон плохо. На форуме тоже ничего не нашёл.

Мне нужно объяснение как создавать новые видгеты. И желательно знающего -> незнающему.

saufesma
()

Как работать с классами в Racket

 


#lang racket/gui
;Point dwell in canvas, cavas dwell in frame
(define frame (new frame%
                   [label "Example"]
                   [width 300]
                   [height 300]))
; Add a text fields to the frame
(define dia
(new text-field% [parent frame]
     [label "Diameter"]))
  ;[callback (lambda (value event)
              ;(send dia get-value))])) ;непонятно как тут рабртает
(define b (send dia get-value)) ;does not work
;(send dia get-value) запустил прогу, потом вбиваю 
;"455677"              это в репл, работает

(send frame show #t)
[/code/
Не понятно как вызывать методы класса из окружающего класс кода
saufesma
()

Спутниковый интернет душит

 

Проблема вот в чём, сервер получает сигнал с антены, сеть вайфай, с такими ограничениями, 10Гб на месяц, 6 часов в день. Самое плохое вот в чём, как только объём проходит точку в 7Гб, интернет становится никикой, еле еле душа в теле. Может кто даст наколку как это объехать без большой крови.

saufesma
()