Đến nội dung


Hình ảnh
- - - - -

Chỉnh Sửa Lại Danh Sách Theo Một Số Điều Kiện


  • Please log in to reply
2 replies to this topic

#1 kstdkhang

kstdkhang

    biết vẽ line

  • Members
  • PipPip
  • 24 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 18 August 2016 - 09:05 AM

Bạn nào biết xin giúp mình thuật toán giải quyết vấn đề dưới đây nhé
*Giả sử có một danh sách phức hợp
(setq li ‘((3 a) (2 b (5 c) (6 a) (3 b (6 d) (3 c) (3 b (7 a)))
-Trong đó (3 a), (2 b, (5 c),… là các danh sách con 
Với  3, 2 , 5,… là các ký hiệu số thực bất kỳ ứng với từng danh sách con trong đó
Và a, b, c,…là các chữ cái bất kỳ ứng với từng danh sách con trong đó
*Bài toán: xắp xếp lại danh sách li trên theo kiểu
-trật tự danh sách trên không được thay đổi
-ký hiệu của danh sách con đầu tiên sẽ được đánh số 1 ( (3 a) thành (1 a))
- các ký hiệu trên được đánh số tăng dần theo cấp số cộng (+1)
-các chữ cái giống nhau sẽ được đánh số ký hiệu giống nhau
Như ví dụ trên sau khi giải quyết sẽ có dạng giống như
 ‘((1 a) (2 B) (3 c) (1 a) (2 B) (4 d) (3 c) (2 B) (1 a))
Diễn đạt có gì lủng củng các bạn bỏ qua nhé. Cám ơn các bạn nhé
 

  • -1

#2 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 18 August 2016 - 09:50 AM

Bạn nào biết xin giúp mình thuật toán giải quyết vấn đề dưới đây nhé
*Giả sử có một danh sách phức hợp
(setq li ‘((3 a) (2 b (5 c) (6 a) (3 b (6 d) (3 c) (3 b (7 a)))
-Trong đó (3 a), (2 b, (5 c),… là các danh sách con 
Với  3, 2 , 5,… là các ký hiệu số thực bất kỳ ứng với từng danh sách con trong đó
Và a, b, c,…là các chữ cái bất kỳ ứng với từng danh sách con trong đó
*Bài toán: xắp xếp lại danh sách li trên theo kiểu
-trật tự danh sách trên không được thay đổi
-ký hiệu của danh sách con đầu tiên sẽ được đánh số 1 ( (3 a) thành (1 a))
- các ký hiệu trên được đánh số tăng dần theo cấp số cộng (+1)
-các chữ cái giống nhau sẽ được đánh số ký hiệu giống nhau
Như ví dụ trên sau khi giải quyết sẽ có dạng giống như
 ‘((1 a) (2  B) (3 c) (1 a) (2  B) (4 d) (3 c) (2  B) (1 a))
Diễn đạt có gì lủng củng các bạn bỏ qua nhé. Cám ơn các bạn nhé

 

Bạn thử cái này, có điều nếu là chữ cái thì phải nằm trong dấu "".

(defun test(/ L1 L2 L3 L4 LI N)
(setq li '((3 "a") (2 "b") (5 "c") (6 "a") (3 "b") (6 "d") (3 "c") (3 "b") (7 "a"))
n 1
l1 (mapcar 'last li)
l2 nil ; dict 1
l3 nil ; dict 2
l4 nil ; kq
) 
(foreach v l1
(if (not (member v l2))
(setq l2 (cons v l2)
l3 (cons (list v n) l3)
l4 (cons (list n v) l4)
n (1+ n))
(setq l4 (cons (reverse (assoc v l3)) l4))) 
)
(reverse l4)
)

  • 1

#3 kstdkhang

kstdkhang

    biết vẽ line

  • Members
  • PipPip
  • 24 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 20 August 2016 - 04:14 PM

cám ơn bạn Tot77 nhiều nhiều nhé. Mình làm được rồi. Mà sao mình không thấy bài viết mình trên nhỉ???


  • 0