Project Euler 17

Problem 17

整数から英語表記への変換は、CLISPformat 関数を使いました。

;;; Project Euler 17
;;; $ clisp english.lisp

;;; (format nil "~R" 342) ;=> "three hundred and forty-two" (23 letters)
;;; (format nil "~R" 115) ;=> "one hundred and fifteen" (20 letters)

(defun main ()
  (dotimes (i 1000)
    (format t "~R~%" (1+ i))))

(main)

1 から 1000 までの数字を英語表記に変換したものを、english.txt に書き出します。

$ clisp english.lisp > english.txt

C# プログラムでは、english.txt を読み込み、文字数をカウントしました。

using System;
using System.IO;

class PE017 {
    static void Main() {
        int ans = 0;
        foreach (char c in File.ReadAllText("english.txt")) {
            if (char.IsLetter(c)) {
                ans++;
            }
        }
        Console.WriteLine(ans);
    }
}

参考: