ときどきの雑記帖 倒行逆施編

最新ページへのリンク
目次ページへのリンク

一つ前へ 2015年12月(下旬)
一つ後へ 2016年1月(中旬)

ホームへ

2016年01月10日

■_

成人式。 自分のときは作家の(ぴー)が来たのと 幸福の木の鉢植えをもらったのは覚えている。

"Embedded in Academia : The Problem with Friendly C" http://blog.regehr.org/archives/1287

■_

2016年01月09日

■_

今年のNHK大河ドラマの主人公は 赤いあんちくしょうで、 表紙も赤っぽい本がぞろぞろでてますね。 それはともかく、 彼を持ち上げようとして周りの人間を彼の足を引っ張る(ぴー)な人たちのように 描写するのはいかがなものかと。

The Eng Language Index — Medium

■_

2016年01月08日

■_

会社で、修士卒2年目の人を交えて雑談していたら 「NeXT」をかけらも知らないことが判明し、 こ、これが「ジェネレーションギャップ」かと愕然としたなど (一応? その筋の学部学科を出てたはず)。

ひょっとして SPARCStation も通じない?

■_

2016年01月07日

■_

MX の再放送? で MONSTER が始まったけど、MASTER キートンもやってくんないかなー。

とある(英語書籍の)電書サイトで。 サイトを使った感想書いてーとメールが来たので 指定のページにアクセスしたらきちんと多言語対応(日本語表示)されていたから 遠慮なく日本語で感想(と要望)を書いたら、 「英語で書いてくれー」 と返事? のメールが来た。 さあどうしよう。

■_

2016年01月06日

■_

おお、ついに。

■_

2016年01月05日

■_

プログラミング原論
プログラミング原論 その数式、プログラムできますか?
その数式、プログラムできますか? 独習コンピュータ科学基礎II 論理構造
独習コンピュータ科学基礎II 論理構造 半群とかモノイドとかこの辺の本に「ちょっとだけ」でてきます。 んが、それらを扱うことによって「何が嬉しい」のかがよくわからない。 さらに、群・環・体の本はそれなりに見つかるけど半群(やモノイド)となると…… いやまあ全くないというわけではないんですが。

Programming and meta-Programming in scheme

■_

2016年01月04日

■_

例によって積ん読をあまり解消できなかった。

みんな大好きスプレッドシートのハナシ Why a simple spreadsheet spread like wildfire | Opinion | The Guardian Bricklin and Frankston built a briefly successful company on the back of VisiCalc, but their (unpatented) idea proved wildly infectious. Competitors like SuperCalc (for machines running the CP/M operating system) and Multiplan rapidly emerged. The game really changed in 1983, however, when Lotus 1-2-3 was released for the IBM PC, beginning a dominance that only ended when Microsoft entered the race with Excel, the spreadsheet program that is still the industry standard.

SuperCalc ……どんなんだっけ?

■_

■_

coreutils shuf GNU Coreutils: 7.2 shuf: テキストをシャッフルする coreutils/shuf.c at master · wertarbyte/coreutils

2016年01月03日

■_

壁でもなんでもないところに長い列があったのはこれだったのか! コミックマーケット89 3日目(2015/12/31)評論・金融島・時限販売騒ぎ - Togetterまとめ 黒猫アイランドに並んでるオジサン達の列がホ~ポ列を封鎖してて

都心からの通勤圏内だけど観光地的なところに行ってきたんですよ。 んで、駅から観光スポット的なところまで徒歩で結構あるんですが (バスの類はなし) 通った道はほぼずっと商店街で、 スーパーマーケットもあったり。 そのスーパーマーケットの入口に 観光客向けであろう断り書きが貼ってありました。 「トイレありません」まあそれはわかる。 そしてその断り書きには英語も併記されていてその文言が 「Don't use toilette」 ……いいのかそれで?

■_

2016年01月02日

■_

昨日のアレ、awkで実質一行すな。

gawk 'BEGIN{srand()} !int(rand()*NR){v=$0} END{print v}'

■_

2016年01月01日

■_

2016年もよろしくお願いします。

抱負的なものは借り物で済ませちゃう :) 12 resolutions for programmers

12 resolutions for programmers
    Go analog. Stay healthy. Embrace the uncomfortable. Learn a new programming language. Automate. Learn more mathematics. Focus on security. Back up your data. Learn more theory. Engage the arts and humanities. Learn new software. Complete a personal project.

■_

■_

Latest topics > シェルスクリプトでランダムにあれをやる - outsider reflex の 「入力された複数行の中からランダムに1行抜き出す」で、

Latest topics > シェルスクリプトでランダムにあれをやる - outsider reflex

choose_random_one() { 
  // 標準入力を一旦変数に保持 
  local input="$(cat)" 
  // 入力の行数を得る 
  local n_lines="$(echo "$input" | wc -l)" 
  // 「1~最終行の行番号」の範囲でどれか1つを得る 
  local index=$(( ($RANDOM % $n_lines) + 1 )) 
  // 得た行番号を使って、sedで「指定された番号の行だけを取り出す」操作を行う 
  echo "$input" | sed -n "${index}p" 
} 

のようにやってるけど、 入力を一回読むだけで(かつその内容を丸ごと保存することもしないで) ランダムに選択できますよねこれ。 たしか結城浩さんが(かなり以前に?)どこかで記事にしてたと思うんだけど 見つからなかったのでこの辺を。 Perlクックブック - Google ブックス File::Random - ファイルをランダムに選択するためのPerlモジュール - perldoc.jp ファイルのランダムな行を選択する - Gaucheクックブック

以上を踏まえて

def randline(n)
  v = 0
  (1..n).each do |e|        #手抜きで行の内容==行番号
    v = e if (rand(e) == 0) #Ruby の rand(整数)は、(0, 整数] の整数値を返す
  end
  v
end

10000.times do |t|
  puts randline(100)
end

「行の内容」じゃないけどこんな感じに書いてみて(おお、これが2016年の「書き初め」か?w) 眺めてみると

>ruby randline.rb | gsort -n | uniq -c | gsort  -n
     70 30
     79 90
     81 16
     81 47
     85 26
     85 55
     86 2
     86 80
     86 92
     87 82
     87 88
     88 59
     88 71
     88 75
     89 10
     89 46
     89 54
     90 13
     90 89
     90 99
     91 6
     91 64
     92 14
     92 22
     92 39
     93 17
     93 56
     93 79
     93 81
     94 1
     94 3
     95 28
     95 38
     95 4
     95 61
     95 91
     96 12
     96 52
     96 87
     97 69
     97 86
     99 20
     99 51
     99 68
     99 97
    100 24
    100 29
    100 49
    100 57
    100 74
    100 93
    101 21
    101 45
    101 48
    101 58
    101 62
    102 15
    102 44
    102 66
    103 50
    104 25
    104 27
    105 100
    105 35
    105 40
    105 41
    105 63
    105 83
    105 98
    106 18
    106 60
    106 9
    107 11
    107 43
    107 76
    107 77
    107 85
    108 33
    108 53
    108 70
    108 84
    110 65
    110 72
    110 8
    111 23
    111 32
    111 34
    112 42
    112 73
    112 95
    113 94
    114 96
    115 37
    115 67
    115 78
    118 31
    119 19
    119 5
    120 7
    126 36

んー、こんなもん?

この手の参考になるのは R だろうということで R でごにょごにょ

> runif(10)
 [1] 0.52612706 0.05847799 0.69889851 0.34796565 0.33082010 0.79342086
 [7] 0.87407684 0.67382874 0.08739299 0.35736828
> runif(10)*100
 [1] 88.911049  9.182756 29.892908 56.874973 33.539601 17.903821 88.363374
 [8] 65.896696 26.247142 28.198007
> floor(runif(10)*100)
 [1] 83 15 76 11 58 22 67 38 45 64
> floor(runif(10000)*100)
    [1] 78 37 11 56 31  8  5 95 65  0 53 17 26 17 20 10  3 71 68 55 81  3
   [23] 71 73 35 22 30 98 18 76 79 89 10 51 48 59 44 68  6 39 44 20  6 28
   [45] 62 41 40 51 26 45 57 58 32 63 20 81 10  9 94 89 84  0 71  9 96 37
(略)
 [9945] 30 97  4 50 15 39 79 50 92 83  4 89 30 29 16 98 50 33 49 26 37 64
 [9967] 46 51 44 77 52  1 36  3 76  1 21 73 56 39 88 15 39  7 50 84  9 81
 [9989] 93 12 74 40 76 59 51 71 79 38 78  6
> floor(runif(10000)*100)->d
> table(d)
d
  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17 
111  84  92 103  92  88 103  93 107 101 106 111 109  93 103 109 108  92 
 18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35 
 99 103  88 118 105 102 104 114  91  88  94  91 114 107  82  93  85  98 
 36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53 
 95  99 119 112 105 104 100  94  88  92 100 107 105  94 104 106 113 105 
 54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71 
111  89 109  94 123  97 109  96  86 110 105  97 102 109  90 108 120 100 
 72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89 
 89  97  95  87 104  96  95 106 107 103  86 107  72  77 115  92  91  98 
 90  91  92  93  94  95  96  97  98  99 
104 104 114  87 101 109 112  80 102  92 
> table(d)->dd
> max(dd)
[1] 123
> min(dd)
[1] 72
> 

ふむ。こんなもんなのか。 あ、最大最小値だけ見て分散とか確かめてないやw

runif(10)*100 → floor(runif(10)*100) → floor(runif(10000)*100) とやっていく段階で、F# とかの |> が欲しくなったのはここだけのハナシ。

ここまでで飽きたので、これをシェルスクリプトで書き下すのはまかせた。


一つ前へ 2015年12月(下旬)
一つ後へ 2016年1月(中旬)

ホームへ


リンクはご自由にどうぞ

メールの宛先はこちらkbk AT kt DOT rim DOT or DOT jp