<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!-- generator="wordpress/2.3.3" --><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
<channel>
	<title>Comments for SICP по-русски</title>
	<link>http://sicp.sergeykhenkin.com</link>
	<description>Структура и интерпретация компьютерных программ: заметки и решения</description>
	<pubDate>Tue, 24 Apr 2012 18:29:44 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/sicp-russian-comments" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="sicp-russian-comments" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Comment on Решение упражнения 2.18 из SICP by Kirill</title>
		<link>http://sicp.sergeykhenkin.com/2008/01/24/sicp-exercise-solution-2-18/#comment-19772</link>
		<dc:creator>Kirill</dc:creator>
		<pubDate>Tue, 24 Apr 2012 17:23:31 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2008/01/24/sicp-exercise-solution-2-18/#comment-19772</guid>
		<description>Будет верный, если чуть подправить:
&lt;pre&gt;(define (reverse item)
  (if (null? (cdr item))
      item
      (append (reverse (cdr item)) (list (car item)))))&lt;/pre&gt;
Хотя таким образом получается более худший способ, чем описанный в 1 комментарии(достаточно передать пустой список). И все равно, у автора решение лучше: итерация и cons(вычислительная сложность -- n), а тут рекурсия и append(вычислительная сложность -- n**2, который перебирет каждый раз весь список для вставки значения.</description>
		<content:encoded><![CDATA[<p>Будет верный, если чуть подправить:</p>
<pre>(define (reverse item)
  (if (null? (cdr item))
      item
      (append (reverse (cdr item)) (list (car item)))))</pre>
<p>Хотя таким образом получается более худший способ, чем описанный в 1 комментарии(достаточно передать пустой список). И все равно, у автора решение лучше: итерация и cons(вычислительная сложность &#8212; n), а тут рекурсия и append(вычислительная сложность &#8212; n**2, который перебирет каждый раз весь список для вставки значения.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Решение упражнения 2.57 из SICP by Nikolay M</title>
		<link>http://sicp.sergeykhenkin.com/2008/02/08/sicp-exercise-solution-2-57/#comment-19441</link>
		<dc:creator>Nikolay M</dc:creator>
		<pubDate>Sat, 07 Apr 2012 14:10:44 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2008/02/08/sicp-exercise-solution-2-57/#comment-19441</guid>
		<description>А я сделал просто вот так (как описывалось в задание):
&lt;code&gt;
(define (augend s)
  (if (null? (cdddr s))  
      (caddr s)            
      (make-sum (addend (cdr s))
                (augend (cdr s)))))    

(define (multiplicand p)                          
  (if (null? (cdddr p))                              
      (caddr p)                                        
      (make-product (multiplier (cdr p))     
                    (multiplicand (cdr p)))))     
&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>А я сделал просто вот так (как описывалось в задание):<br />
<code><br />
(define (augend s)<br />
  (if (null? (cdddr s))<br />
      (caddr s)<br />
      (make-sum (addend (cdr s))<br />
                (augend (cdr s)))))    </p>
<p>(define (multiplicand p)<br />
  (if (null? (cdddr p))<br />
      (caddr p)<br />
      (make-product (multiplier (cdr p))<br />
                    (multiplicand (cdr p)))))<br />
</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Решение упражнения 1.3 из SICP by Serg</title>
		<link>http://sicp.sergeykhenkin.com/2007/08/14/sicp-exercise-solution-1-3/#comment-19420</link>
		<dc:creator>Serg</dc:creator>
		<pubDate>Fri, 06 Apr 2012 10:30:39 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2007/08/14/sicp-exercise-solution-1-3/#comment-19420</guid>
		<description>а вот так?

&lt;pre&gt;
(cond ((&gt; a b c)
      ((define (sum-of-squares a b)
           (+ (square a) (square b)))
                (define (square a) (* a a)))
     (else (sum-of-squares b c))))
&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p>а вот так?</p>
<pre>
(cond ((&gt; a b c)
      ((define (sum-of-squares a b)
           (+ (square a) (square b)))
                (define (square a) (* a a)))
     (else (sum-of-squares b c))))
</pre>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Решение упражнения 2.37 из SICP by AG</title>
		<link>http://sicp.sergeykhenkin.com/2008/01/30/sicp-exercise-solution-2-37/#comment-19351</link>
		<dc:creator>AG</dc:creator>
		<pubDate>Sun, 01 Apr 2012 19:25:07 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2008/01/30/sicp-exercise-solution-2-37/#comment-19351</guid>
		<description>У меня была опечатка в формуле произведения матрицы и вектора. Должно быть Ti=Sj Mij V&lt;b&gt;j&lt;/b&gt;</description>
		<content:encoded><![CDATA[<p>У меня была опечатка в формуле произведения матрицы и вектора. Должно быть Ti=Sj Mij V<b>j</b></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Решение упражнения 1.19 из SICP by Yaga</title>
		<link>http://sicp.sergeykhenkin.com/2007/08/29/sicp-exercise-solution-1-19/#comment-18859</link>
		<dc:creator>Yaga</dc:creator>
		<pubDate>Sat, 25 Feb 2012 12:39:17 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2007/08/29/sicp-exercise-solution-1-19/#comment-18859</guid>
		<description>Мне кажется это упражнение правильно было бы решать через матрицы. Написанное Eugene Kirpichov больше похоже на решение с логарифмической сложностью, но понять не могу - читаю только первую главу. А на http://stackoverflow.com/questions/1896974/sicp-exercise-1-19 указывают на некую Q-матрицу Фибоначи, вот ее уже можно в степень возводить и добиваться тем самым логарифмической сложности... А вообще спасибо, за Sicp на русском - он нам строить и жить помогает! )))</description>
		<content:encoded><![CDATA[<p>Мне кажется это упражнение правильно было бы решать через матрицы. Написанное Eugene Kirpichov больше похоже на решение с логарифмической сложностью, но понять не могу - читаю только первую главу. А на <a href="http://stackoverflow.com/questions/1896974/sicp-exercise-1-19" rel="nofollow">http://stackoverflow.com/questions/1896974/sicp-exercise-1-19</a> указывают на некую Q-матрицу Фибоначи, вот ее уже можно в степень возводить и добиваться тем самым логарифмической сложности&#8230; А вообще спасибо, за Sicp на русском - он нам строить и жить помогает! )))</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Решение упражнения 1.19 из SICP by Yaga</title>
		<link>http://sicp.sergeykhenkin.com/2007/08/29/sicp-exercise-solution-1-19/#comment-18858</link>
		<dc:creator>Yaga</dc:creator>
		<pubDate>Sat, 25 Feb 2012 12:17:52 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2007/08/29/sicp-exercise-solution-1-19/#comment-18858</guid>
		<description>Почему тут речь о квадрате функции Т? Что она выдает? Идем дальше - суть упражнения в логарифмической сложности - если Т(а,б) выдает следующий член и уже известный, то Т(Т(а,б)) дает два следующих члена после "а" и "б". Как этим достигается логарифмическое число шагов вычислений, указанное в книге? Сложность остается ~n (/2). Неужели весь смысл упражнения в прыжке через шаг? а как же обещанная log(n)? 8((( одно расстройство...</description>
		<content:encoded><![CDATA[<p>Почему тут речь о квадрате функции Т? Что она выдает? Идем дальше - суть упражнения в логарифмической сложности - если Т(а,б) выдает следующий член и уже известный, то Т(Т(а,б)) дает два следующих члена после &#8220;а&#8221; и &#8220;б&#8221;. Как этим достигается логарифмическое число шагов вычислений, указанное в книге? Сложность остается ~n (/2). Неужели весь смысл упражнения в прыжке через шаг? а как же обещанная log(n)? 8((( одно расстройство&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Решение упражнения 1.31 из SICP by ivan</title>
		<link>http://sicp.sergeykhenkin.com/2007/10/18/sicp-exercise-solution-1-31/#comment-18408</link>
		<dc:creator>ivan</dc:creator>
		<pubDate>Fri, 03 Feb 2012 03:17:38 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2007/10/18/sicp-exercise-solution-1-31/#comment-18408</guid>
		<description>&lt;code&gt;
(define (pi n)
  (define (next-pi a) 
    (+ a 2)) 
  (/ (* 2 (product square 4 next-pi n)) 
     (* (+ n 1) (product square 3 next-pi n))))
&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p><code><br />
(define (pi n)<br />
  (define (next-pi a)<br />
    (+ a 2))<br />
  (/ (* 2 (product square 4 next-pi n))<br />
     (* (+ n 1) (product square 3 next-pi n))))<br />
</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Решение упражнения 1.13 из SICP by Юра</title>
		<link>http://sicp.sergeykhenkin.com/2007/08/20/sicp-exercise-solution-1-13/#comment-18228</link>
		<dc:creator>Юра</dc:creator>
		<pubDate>Mon, 23 Jan 2012 21:44:08 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2007/08/20/sicp-exercise-solution-1-13/#comment-18228</guid>
		<description>@qwe 
ψ и φ корни квадратного уравнения x² = 1+ x</description>
		<content:encoded><![CDATA[<p>@qwe<br />
ψ и φ корни квадратного уравнения x² = 1+ x</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Решение упражнения 1.6 из SICP by Юра</title>
		<link>http://sicp.sergeykhenkin.com/2007/08/15/sicp-exercise-solution-1-6/#comment-18175</link>
		<dc:creator>Юра</dc:creator>
		<pubDate>Sat, 21 Jan 2012 12:15:35 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2007/08/15/sicp-exercise-solution-1-6/#comment-18175</guid>
		<description>Есть предположение, что Racket не так прост, как кажется. Например, у вас может получаться разный результат, если у вас по-разному настроен сам Racket. Есть подоздение, что кто-то из участников обсуждения включил Lazy Racket и поэтому у него все вычисляется.
Я только что проверил, если в исходнике объявить язык как #lang racket то все циклится, т.к. используется традиционные аппликативный порядок вычисления. А вот если объявить язык как #lang lazy - то работает, т.к. здесь очевидно используются ленивые вычисления.
В общем, чтобы не было дальше таких расхождений рекомендую всегда указывать используемый язык при помощи директивы #lang и включить опцию "Use language declared in the source"</description>
		<content:encoded><![CDATA[<p>Есть предположение, что Racket не так прост, как кажется. Например, у вас может получаться разный результат, если у вас по-разному настроен сам Racket. Есть подоздение, что кто-то из участников обсуждения включил Lazy Racket и поэтому у него все вычисляется.<br />
Я только что проверил, если в исходнике объявить язык как #lang racket то все циклится, т.к. используется традиционные аппликативный порядок вычисления. А вот если объявить язык как #lang lazy - то работает, т.к. здесь очевидно используются ленивые вычисления.<br />
В общем, чтобы не было дальше таких расхождений рекомендую всегда указывать используемый язык при помощи директивы #lang и включить опцию &#8220;Use language declared in the source&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Решение упражнения 1.16 из SICP by Arkady</title>
		<link>http://sicp.sergeykhenkin.com/2007/08/29/sicp-exercise-solution-1-16/#comment-18150</link>
		<dc:creator>Arkady</dc:creator>
		<pubDate>Thu, 19 Jan 2012 08:53:00 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2007/08/29/sicp-exercise-solution-1-16/#comment-18150</guid>
		<description>Разумеется.
&lt;code&gt;
(define (fast-expt-iter a b n)
  (cond ((= n 0) a)
           ((even? n) (fast-expt-iter a (square b) (halve n)))
           (else (fast-expt-iter (* a b) b (- n 1)))))
&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>Разумеется.<br />
<code><br />
(define (fast-expt-iter a b n)<br />
  (cond ((= n 0) a)<br />
           ((even? n) (fast-expt-iter a (square b) (halve n)))<br />
           (else (fast-expt-iter (* a b) b (- n 1)))))<br />
</code></p>
]]></content:encoded>
	</item>
</channel>
</rss>

