เขาลงเรื่อง scheme code kata
ตั้งปัญหาว่า
ถ้ามี input นี้
(a 1 2 3 b 4 5 c d 8 9 e)
แล้วต้องการ convert ให้เป็นแบบนี้
((a (1 2 3)) (b (4 5)) (c ()) (d (8 9)) (e ()))
จะเขียนอย่างไงดี
ในฐานะ newbie อย่างเรา
ก็อดลองไม่ได้
ผลลัพท์ที่ run ผ่านครั้งแรก
(define (group ls)
(if (empty? ls)
'()
(let ((fst (first ls))
(rst (rest ls)))
(if (symbol? fst)
(cons (cons fst (list (scan-num rst))) (group rst))
(group rst)))))
(define (scan-num ls)
(if (empty? ls)
'()
(if (not (symbol? (first ls)))
(cons (first ls) (scan-num (rest ls)))
'())))
ได้คำตอบ แต่มี loop ที่ทำซ้ำ โดยไม่ได้ประโยชน์อะไรฝังอยู่ด้วย
ถ้ารู้ว่า พวกเก่งๆ เขาเขียนอย่างไร ก็ลองดูที่นี่
Link
Note: idea ของผม จะคล้ายๆของคนนี้ my_pengy
แต่ผมยังจัดความคิดได้ไม่เป็นระเบียบเท่าเขา
No comments:
Post a Comment