在Scheme

时间:2017-03-25 01:53:57

标签: list scheme

我在Scheme中进行编程任务,我们必须开发一种查找Happy Numbers的方法。我已经完成了肉(从数字n中找到了快乐的数字),但我在构建列表时遇到了问题。

这是我的代码:

(sosd num)计算num的快乐号码,(stop? num)确定num是否是预定列表中的递归号码。

(define (sspd_series num)
  (if (stop? num)
      (make-list num)
      (append (make-list(sosd num)) (make-list(sspd_series (sosd num))))
      )
  )

(define (make-list num)
  (cons num '())
  )

但是,虽然我想要一个看起来像(1 2 3 4 5)的列表,但我得到(1 (2 (3 (4 (5)))))。我尝试过cons代替append而我得到了一些与众不同的东西,但不是我正在寻找的东西。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

假设正确实现了stop?sosd,您只需构建一个正确的列表作为输出,为此使用cons。这是如何:

(define (sspd_series num)
  (if (stop? num)
      (list (sosd num))
      (cons (sosd num)
            (sspd_series (sosd num)))))

您可以通过在过程开始时仅计算sosd一次并将其存储在变量中来优化实现。留给读者练习。

答案 1 :(得分:1)

聪明的是找到一种以相反的顺序创建列表的方法。假设您从'()开始'(3) (cons 3 '()) '(2 3)(cons 2 '(3)) (define (my-reverse lst) (let loop ((lst lst) (acc '())) (if (null? lst) acc (loop (cdr lst) (cons (car lst) acc))))) from django.conf.urls import url from . import views from django.contrib.auth.views import password_reset, password_reset_done urlpatterns = [ url(r'^$', views.post_list, name='post_list'), url(r'^login/$', views.user_login, name='user_login'), url(r'^logout/$', views.user_logout, name='user_logout'), url(r'^reset-password/$', password_reset, name='password_reset'), url(r'^reset-password/done/$', password_reset_done, name='password_reset_done'), url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<slug>[\w-]+)/$', views.post_detail, name='post_detail'), url(r'^(?P<post_id>\d+)/share/$', views.post_share, name='post_share'), url(r'^(?P<tag_slug>[\w-]+)/$', views.post_list, name='post_list_by_tag'), ] 。这里的灵感是如何反转列表:

<div style="margin: 0 auto; width: 80%; background-color:magenta;display:flex;">
    	
    		<div style="width:25%;display: inline-block;">
    			<img src="http://www.bjbzryl.com/data/out/7/780401.jpg" style="width:100%;">
    		</div>
    		
    		<div style=" margin-left:2%; background-color:lime; flex: 1;">
    			<p style="float:left; display:inline-block; margin:2% 2% 2% 2%;">blah blah blah</p>
    		</div>
    			
    	
    		<div style="clear:both;"></div>
    		
    	</div>