«前の日記(2008.04.19 / Saturday) 最新 次の日記(2008.04.23 / Wednesday)» 編集

Hena Hena Nikki

2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|10|11|12|
2012|01|02|03|04|05|06|07|08|10|12|
2013|01|02|04|06|

2008.04.21 / Monday [長年日記]

* [computer] GNU Coreutils 6.11 を Mac OS X 10.4 にインストールする

事前に gettext, iconv を入れておくと吉。

$ wget -c http://ftp.gnu.org/gnu/coreutils/coreutils-6.11.tar.lzma
$ lzma -cd coreutils-6.11.tar.lzma | tar xvf -
$ cd coreutils-6.11/
$ ./configure --disable-assert
$ make && make check
$ sudo make install

CFLAGS はお好みで。

* [computer] Texinfo 4.12 を Mac OS X 10.4 にインストールする

事前に gettext, iconv をインストールしておくと良い。

$ wget -c http://ftp.gnu.org/gnu/texinfo/texinfo-4.12.tar.lzma
$ lzma -cd texinfo-4.12.tar.lzma | tar xvf -
$ cd texinfo-4.12/
$ ./configure
$ make && make check
$ sudo make install

CFLAGS はお好みで。

* [computer/update] VLGothic 20080420

M+ FONTS とさざなみフォントをミックスした後、更に改良した和文フォント。

* [computer] 文字列数値化プログラム

これも位取りプログラムと同じく chawan の代替の一部。 以前、同じようなものを作ったときは、もっとゴチャゴチャしたものを書いた記憶が…。 テーブルの作りさえ考えつけば、どうにでもなるものなのかな?

#! /usr/bin/env ruby
NUMBER_TABLE = Hash[# 表記=>数値・演算・桁上がり '0', [0, '+', true], 'o', [0, '+', true], '零', [0, '+', true], '1', [1, '+', true], '1', [1, '+', true], '一', [1, '+', true], '壱', [1, '+', true], '2', [2, '+', true], '2', [2, '+', true], '二', [2, '+', true], '弐', [2, '+', true], '貳', [2, '+', true], '3', [3, '+', true], '3', [3, '+', true], '三', [3, '+', true], '参', [3, '+', true], '4', [4, '+', true], '4', [4, '+', true], '四', [4, '+', true], '5', [5, '+', true], '5', [5, '+', true], '五', [5, '+', true], '伍', [5, '+', true], '6', [6, '+', true], '6', [6, '+', true], '六', [6, '+', true], '7', [7, '+', true], '7', [7, '+', true], '七', [7, '+', true], '8', [8, '+', true], '8', [8, '+', true], '八', [8, '+', true], '9', [9, '+', true], '9', [9, '+', true], '九', [9, '+', true], '十', [10, '*', false], '百', [100, '*', false], '千', [1000, '*', false], '万', [1_0000, '**', false], '萬', [1_0000, '**', false], '億', [1_0000_0000, '**', false], '兆', [1_0000_0000_0000, '**', false], '京', [1_0000_0000_0000_0000, '**', false], '垓', [1_0000_0000_0000_0000_0000, '**', false]]
def get_number(numbers) number = [0, 0, 0] numbers.each { |n| value = NUMBER_TABLE[n] if value then if value[2] then number[0] = number[0] * 10 end case value[1] when '**' then number[2] = number[2] + (number[1] + number[0]) * value[0] number[1] = number[0] = 0 when '*' then if number[0] > 0 then number[0] = number[0] * value[0] else number[0] = value[0] end number[1] = number[1] + number[0] number[0] = 0 when '+' then number[0] = number[0] + value[0] end else return -1 end } return number[2] + number[1] + number[0] end
# 主処理 (動作確認サンプル) ARGV.each { |number| puts get_number(number.split(//)).to_s }

壱兆千五十6万3貳百14 を引数に与えると以下の出力を得る。

110563214 1000010563214

まだ修正が必要そうだけど、とりあえず上げてみた。

NUMBER_TABLE に億の情報を入れ忘れていることに、 4/23 になって気付いた。 ;-(


  • この日記には本日 名の方が訪問してくださっているようです。 また、昨日は 名の方が訪問してくださったようです。
  • この日記の更新情報の取得には antenna.lirs を利用するのがおすすめです。