Archive for 2016年1月|Monthly archive page

newLISP マニュアル v.10.7.0 日本語訳公開

 久々の安定版リリース。
 新規関数として、統計でよく使われる二乗和関数 ssq が追加されています。
 また、Windows 用に 64ビット版が用意されています。それに伴い、組込定数 ostype が Windows版では “Windows”になります。ご注意を。

 ということで、newLISP の User Manual and ReferenceGUI functionsCode Patterns の全訳のリリースです。

newlisp_manual-10700
guiserver_manual-171
CodePatterns-10700
こちらからダウンロードしてください。

 目次も含め日本語併記にしてあります。
 Lutz氏のご好意によりこちらから見ることもできます。

 いつものように、間違いやおかしな点が有りましたら、こちらの blog までご一報ください。

 以上、如何でしょうか?

projecteuler29

 projecteuler問題29は、2 から 100 までの自然数を 2 乗から 100乗 して、同じものを除くと何個になるかという問題。
 だから、スクリプトは単純、

(let (lst)
  (for (i 2 100)
    (for (j 2 100)
      (push (apply * (cons 1L (dup i j))) lst -1)
    )
  )
 (length (unique lst)))

 こんな感じ。1L を cons しているのは、大整数にするため。100 乗するには 64 ビット整数では足りないですからね(笑)

(let (lst)
  (for (i 2 100)
    (for (j 2 100)
      (push (apply * (map bigint (dup i j))) lst -1)
    )
  )
 (length (unique lst)))

でも同じになります。
 ここで bigint は整数を大整数に変換します。
 また、unique は同一数値を除去してくれます。
 これを実行すると

9183
> 

 と答えが求まります。

 以上、如何でしょうか?