Skip to content

Instantly share code, notes, and snippets.

@gongo
Created March 11, 2010 00:50
Show Gist options
  • Save gongo/328674 to your computer and use it in GitHub Desktop.
Save gongo/328674 to your computer and use it in GitHub Desktop.

HAGO-100226

前回の復習

  • LOTO6 のルール説明

http://tomohiro.github.com/hack/04_code-golf/index.html

Emacs Lisp

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 って何や

C#

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 のことを 生臭い と呼ぶことにする。

CbC

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

VB

  • 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 って書けよ
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment