- LOTO6 のルール説明
http://tomohiro.github.com/hack/04_code-golf/index.html
http://gist.github.com/229291
(let ((from (or from 0)) ... ;; ruby だと from ||= 0
(setq result (cons from result)) ;; ruby だと result = [from, result]
-
vconcat は リスト を ベクター へ変換する。
-
shuffle-vector へ渡すため。
-
append は ベクター をリストへ変換し nthcdr へ渡すため。
-
nthcdr 37 で リストの 37 番目以降を取得。
-
nreverse やる必要あるんだっけ?
-
mapconcat は map で処理したリストを concat する合わせ技のような関数。
(mapconcat '(lambda (i) (number-to-string (* 2 i))) '(1 2 3) "-")
-
map だけの例題を書いてよ
-
mapc って何や
http://gist.github.com/226929#file_loto6.cs
OrderBy(i => Guid.NewGuid()) // ここで並べ替えをやっている
-
Guid.NewGuid() は新しいランダムな Guid を取得する
-
i は 1 から 43 の値が入り、
-
取得したランダムな値と比較することでシャッフルを実現。
-
string.Join が気に入らない
-
string は char の配列なので、Join メソッドがあってもよい、と考えるとなんとなく落ち着いた。
-
raw level な匂いがする。
-
raw level のことを 生臭い と呼ぶことにする。
http://gist.github.com/229291#file_loto6.c
- 生臭い
shinobu: あ、 return がない
nefo: これ構文まちがってるよ
shinobu: 今までがまちがってたんだよ
ret = return;
-
ret はコードセグメントポインタ。
-
main から脱出(return)するための情報を保持。
env = environment;
-
env はスタックポインタ。
-
main のスタックを保持。
-
goto で飛びます飛びます
-
こぼる ににてるよ
kinjo: take の memcpy って必要なの?
gongo: take って意味を持たせたかったので memcpy
kinjo: 今の時代せこい考えなのかなぁ
shinobu: うん
ついでなので、 http://www.cr.ie.u-ryukyu.ac.jp/hg/index.cgi/Game/CbCTaskManager/file/29835fc96f9f/src/TaskManagerAbst.cbc を読む。
- TODO:malloc ってなんやw
-
Option Explict をつけよう
- 変数をいきなり使えなくなる(宣言必須となる)
-
Private Sub
- 戻り値なしのサブルーチン
-
Private Function .. As Integer ...
-
戻り値のある関数
Private Function Range ... Range = list ' 戻り値をセットする ' Range = list の後に書いたコードも実行される End Function
-
shinobu:なんでここ普通に return しないんですか?
ekyan:いや、僕設計者じゃないんでwww
引数宣言時
-
ByVal って書くと値はコピーされます
-
ByRef って書くとリファレンス渡しになります
Dim list() As Integer ' 可変長配列ですよ、宣言時点では値はまだ持てない ReDim list(listSize - 1) ' malloc っていえばわかるかな refList = list ' refList のメモリ領域が確保され、 list の中身がそこへコピー UBound(ary) ' 最大添字を取得, upperBound って書けよ