<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><!-- 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, 18 Nov 2008 09:21:32 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/sicp-russian-comments" type="application/rss+xml" /><item>
		<title>Comment on Решение упражнения 2.6 из SICP by трор</title>
		<link>http://sicp.sergeykhenkin.com/2008/01/18/sicp-exercise-solution-2-6/#comment-2020</link>
		<dc:creator>трор</dc:creator>
		<pubDate>Tue, 18 Nov 2008 06:53:09 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2008/01/18/sicp-exercise-solution-2-6/#comment-2020</guid>
		<description>Барендрегт, Ламбда исчисление, его синтаксис и семантика. Гл. 2, 3, 6 хотя бы почитайте. Очень советую. Там в том числе и про различные цифровые системы.
--трор</description>
		<content:encoded><![CDATA[<p>Барендрегт, Ламбда исчисление, его синтаксис и семантика. Гл. 2, 3, 6 хотя бы почитайте. Очень советую. Там в том числе и про различные цифровые системы.<br />
&#8211;трор</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Решение упражнения 1.19 из SICP by Dmitry Matveev</title>
		<link>http://sicp.sergeykhenkin.com/2007/08/29/sicp-exercise-solution-1-19/#comment-1806</link>
		<dc:creator>Dmitry Matveev</dc:creator>
		<pubDate>Fri, 07 Nov 2008 17:19:20 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2007/08/29/sicp-exercise-solution-1-19/#comment-1806</guid>
		<description>Странно, но я получил те же формулы для p' и q', но в результате fib выдавала ложные значения))) приду домой - ещё проверю</description>
		<content:encoded><![CDATA[<p>Странно, но я получил те же формулы для p&#8217; и q&#8217;, но в результате fib выдавала ложные значения))) приду домой - ещё проверю</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Решение упражнения 1.28 из SICP by трор</title>
		<link>http://sicp.sergeykhenkin.com/2007/10/15/sicp-exercise-solution-1-28/#comment-1741</link>
		<dc:creator>трор</dc:creator>
		<pubDate>Tue, 04 Nov 2008 08:05:23 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2007/10/15/sicp-exercise-solution-1-28/#comment-1741</guid>
		<description>вы можете взглянуть на код полной криптосистемы РСА (включающей свозможность генерировать длинный ключ случайно-но прежде чем утверждать что ключ получается не слишком случайный прочтите пожалуйста кнута 3.2.2 и упражнение 18 к ней, а также 3.3.2-критерии серий, и не говорите, что я не в курсе=), позволяет шифровать и расшифровывать сообщения, создавать цифровую подпись, создавать подписанные сообщения, и проверять подписи, и предоставлющую функции взлома приватного ключа по публичному, основанные как на классическом методе разложения, так и на эвристическом ро-методе полларда. На моей странице www.uic.nnov.ru/~kuaa29
--трор</description>
		<content:encoded><![CDATA[<p>вы можете взглянуть на код полной криптосистемы РСА (включающей свозможность генерировать длинный ключ случайно-но прежде чем утверждать что ключ получается не слишком случайный прочтите пожалуйста кнута 3.2.2 и упражнение 18 к ней, а также 3.3.2-критерии серий, и не говорите, что я не в курсе=), позволяет шифровать и расшифровывать сообщения, создавать цифровую подпись, создавать подписанные сообщения, и проверять подписи, и предоставлющую функции взлома приватного ключа по публичному, основанные как на классическом методе разложения, так и на эвристическом ро-методе полларда. На моей странице <a href="http://www.uic.nnov.ru/~kuaa29" rel="nofollow">http://www.uic.nnov.ru/~kuaa29</a><br />
&#8211;трор</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Решение упражнения 1.28 из SICP by трор</title>
		<link>http://sicp.sergeykhenkin.com/2007/10/15/sicp-exercise-solution-1-28/#comment-1704</link>
		<dc:creator>трор</dc:creator>
		<pubDate>Sun, 02 Nov 2008 14:05:57 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2007/10/15/sicp-exercise-solution-1-28/#comment-1704</guid>
		<description>и все же, уважаемый горилич, уверяю вас, пока что природа происходящего для вас не ясна. Самой простой рекомендацией было бы-читать цлрс до просветления, или самому придумать алгоритм логарифмической сложности для подобного анализа. Однако это показалось бы слишком грубым. Поэтому я попробую еще раз растолковать.

Итак, задача в том, чтоб потратив к*лог(н) действий выяснить-составное число, или простое?

Для этого мы выбираем к чисел случайно, и каждого используем как свидетеля составной природы числа. Если хоть один свидетель найдем, то число составное.

Витнесс, или на латинском-свидетель, в моих процедурах возвращает правду, когда число не простое. В этом вы легко убедитесь и сами. Для составного числа модифицированный экспмод вернет либо ноль, либо какое нибудь не равное единице число. Но не единицу.

А далее, следуем простой схеме-если к свидетелей не утверждают, что число составное, то считаем его простым. Как в жизни.

Откуда же взялось это загадочное н/2, которое способно даже грамотных (судя по 1.45) людей ввести в заблуждение? Зачем нужна эта громадная цифра? А для чисел в четыре тясячи бит длиной она действительно потрясает воображение.

Ответ кроется в простой идее, которую не трудно доказать-для нечетного составного числа н не менее (н-1)/2 свидетелей того, что оно составное.

Это обеспечивает экспоненциальное убывание вероятности ошибки при росте к.

Для сергея-на практике именно так он и реализован. Вы можете, к примеру, обратиться к старым реализациям библиотек шифрования из 4.4бсд-не помню сейчас точно, или План9-а там очень хорошая идея как модифицируют алгоритм на практике.

Вообщем-на самом деле то не слишком важно, правильное решение или нет-важно то, на какие идеи оно нас наталкивает, и о чем заставляет задуматься.</description>
		<content:encoded><![CDATA[<p>и все же, уважаемый горилич, уверяю вас, пока что природа происходящего для вас не ясна. Самой простой рекомендацией было бы-читать цлрс до просветления, или самому придумать алгоритм логарифмической сложности для подобного анализа. Однако это показалось бы слишком грубым. Поэтому я попробую еще раз растолковать.</p>
<p>Итак, задача в том, чтоб потратив к*лог(н) действий выяснить-составное число, или простое?</p>
<p>Для этого мы выбираем к чисел случайно, и каждого используем как свидетеля составной природы числа. Если хоть один свидетель найдем, то число составное.</p>
<p>Витнесс, или на латинском-свидетель, в моих процедурах возвращает правду, когда число не простое. В этом вы легко убедитесь и сами. Для составного числа модифицированный экспмод вернет либо ноль, либо какое нибудь не равное единице число. Но не единицу.</p>
<p>А далее, следуем простой схеме-если к свидетелей не утверждают, что число составное, то считаем его простым. Как в жизни.</p>
<p>Откуда же взялось это загадочное н/2, которое способно даже грамотных (судя по 1.45) людей ввести в заблуждение? Зачем нужна эта громадная цифра? А для чисел в четыре тясячи бит длиной она действительно потрясает воображение.</p>
<p>Ответ кроется в простой идее, которую не трудно доказать-для нечетного составного числа н не менее (н-1)/2 свидетелей того, что оно составное.</p>
<p>Это обеспечивает экспоненциальное убывание вероятности ошибки при росте к.</p>
<p>Для сергея-на практике именно так он и реализован. Вы можете, к примеру, обратиться к старым реализациям библиотек шифрования из 4.4бсд-не помню сейчас точно, или План9-а там очень хорошая идея как модифицируют алгоритм на практике.</p>
<p>Вообщем-на самом деле то не слишком важно, правильное решение или нет-важно то, на какие идеи оно нас наталкивает, и о чем заставляет задуматься.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Решение упражнения 2.28 из SICP by meduza</title>
		<link>http://sicp.sergeykhenkin.com/2008/01/29/sicp-exercise-solution-2-28/#comment-1512</link>
		<dc:creator>meduza</dc:creator>
		<pubDate>Sat, 25 Oct 2008 16:50:39 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2008/01/29/sicp-exercise-solution-2-28/#comment-1512</guid>
		<description>Блин, так просто, а я намудрил...
&lt;code&gt;
(define (fringe lst)
  (define (f lst acc)
    (cond ((null? lst) acc)
          ((not (list? lst)) (cons lst acc))
          (else (append (f (car lst) acc) (f (cdr lst) acc)))))
  (f lst (list)))
&lt;/code&gt;
но работает :)</description>
		<content:encoded><![CDATA[<p>Блин, так просто, а я намудрил&#8230;<br />
<code><br />
(define (fringe lst)<br />
  (define (f lst acc)<br />
    (cond ((null? lst) acc)<br />
          ((not (list? lst)) (cons lst acc))<br />
          (else (append (f (car lst) acc) (f (cdr lst) acc)))))<br />
  (f lst (list)))<br />
</code><br />
но работает <img src='http://sicp.sergeykhenkin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Решение упражнения 2.1 из SICP by meduza</title>
		<link>http://sicp.sergeykhenkin.com/2008/01/16/sicp-exercise-solution-2-1/#comment-1442</link>
		<dc:creator>meduza</dc:creator>
		<pubDate>Wed, 22 Oct 2008 14:57:08 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2008/01/16/sicp-exercise-solution-2-1/#comment-1442</guid>
		<description>У меня прокатывает и такой вариант, gcd работает.
&lt;code&gt;
(define (make-rat n d)
  (let ((g ((if (negative? d) - +) (gcd n d))))
    (cons (/ n g) (/ d g))))
&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>У меня прокатывает и такой вариант, gcd работает.<br />
<code><br />
(define (make-rat n d)<br />
  (let ((g ((if (negative? d) - +) (gcd n d))))<br />
    (cons (/ n g) (/ d g))))<br />
</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Сколько программистов нужно, чтобы возвести число A в степень B by meduza</title>
		<link>http://sicp.sergeykhenkin.com/2008/01/12/how-many-programmes-you-need-to-raise-a-into-power-b/#comment-1440</link>
		<dc:creator>meduza</dc:creator>
		<pubDate>Wed, 22 Oct 2008 14:09:03 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2008/01/12/how-many-programmes-you-need-to-raise-a-into-power-b/#comment-1440</guid>
		<description>&gt; проще не придумаешь
можно еще проще ;) e^(b*lna) = (e^lna)^b = a^b (по основному лог. тождеству)</description>
		<content:encoded><![CDATA[<p>&gt; проще не придумаешь<br />
можно еще проще <img src='http://sicp.sergeykhenkin.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> e^(b*lna) = (e^lna)^b = a^b (по основному лог. тождеству)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Решение упражнения 1.31 из SICP by meduza</title>
		<link>http://sicp.sergeykhenkin.com/2007/10/18/sicp-exercise-solution-1-31/#comment-1379</link>
		<dc:creator>meduza</dc:creator>
		<pubDate>Mon, 20 Oct 2008 06:29:38 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2007/10/18/sicp-exercise-solution-1-31/#comment-1379</guid>
		<description>у меня так:
&lt;pre&gt;
(define (product f a b next)
  (define (iter a result)
    (if (&gt; a b)
      result
      (iter (next a) (* (f a) result))))
  (iter a 1))  

(define (pi n)
  (define (sqr x) (* x x))
  (define (f n) (/ (+ 1 n) n))
  (define (next n) (+ 2 n))
  (define p (product f 1 n next))
  (* (/ 2.0 n) (sqr p)))
&lt;/pre&gt;
мне кажется в квадрат возводить лучше в самом конце, может быть я ошибаюсь</description>
		<content:encoded><![CDATA[<p>у меня так:</p>
<pre>
(define (product f a b next)
  (define (iter a result)
    (if (&gt; a b)
      result
      (iter (next a) (* (f a) result))))
  (iter a 1))  

(define (pi n)
  (define (sqr x) (* x x))
  (define (f n) (/ (+ 1 n) n))
  (define (next n) (+ 2 n))
  (define p (product f 1 n next))
  (* (/ 2.0 n) (sqr p)))
</pre>
<p>мне кажется в квадрат возводить лучше в самом конце, может быть я ошибаюсь</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Решение упражнения 1.17 из SICP by meduza</title>
		<link>http://sicp.sergeykhenkin.com/2007/08/29/sicp-exercise-solution-1-17/#comment-1356</link>
		<dc:creator>meduza</dc:creator>
		<pubDate>Sun, 19 Oct 2008 09:17:38 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2007/08/29/sicp-exercise-solution-1-17/#comment-1356</guid>
		<description>на 1 проверять желательно, но не обязательно.</description>
		<content:encoded><![CDATA[<p>на 1 проверять желательно, но не обязательно.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Решение упражнения 2.42 из SICP by hub</title>
		<link>http://sicp.sergeykhenkin.com/2008/02/03/sicp-exercise-solution-2-42/#comment-1064</link>
		<dc:creator>hub</dc:creator>
		<pubDate>Wed, 08 Oct 2008 10:21:21 +0000</pubDate>
		<guid>http://sicp.sergeykhenkin.com/2008/02/03/sicp-exercise-solution-2-42/#comment-1064</guid>
		<description>Если допустить, что позиция задается не как список (3 1 4 2), а как - ((3 4) (1 3) (4  2) (2 1)), т. е. переписываем adjoin-position так:
&lt;pre&gt;
(define (adjoin-position row col seqs)  (cons (list row col) seqs))

(define (safe? col position)
  (let ((new (car position))
        (olds (cdr position)))
    (accumulate (lambda (old compared)
                  (let ((delta-row  (- (car new) (car old)))
                        (delta-col (- (cadr new) (cadr old))))
                    (and (not (= delta-row 0))
                         (not (= (abs delta-row)
                                 (abs delta-col)))
                         compared)))
                #t
                olds)))
&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p>Если допустить, что позиция задается не как список (3 1 4 2), а как - ((3 4) (1 3) (4  2) (2 1)), т. е. переписываем adjoin-position так:</p>
<pre>
(define (adjoin-position row col seqs)  (cons (list row col) seqs))

(define (safe? col position)
  (let ((new (car position))
        (olds (cdr position)))
    (accumulate (lambda (old compared)
                  (let ((delta-row  (- (car new) (car old)))
                        (delta-col (- (cadr new) (cadr old))))
                    (and (not (= delta-row 0))
                         (not (= (abs delta-row)
                                 (abs delta-col)))
                         compared)))
                #t
                olds)))
</pre>
]]></content:encoded>
	</item>
</channel>
</rss>
