タグ

golfに関するmiya2000のブックマーク (9)

  • Number.prototype.fillZero - ellaneous

    0で詰めるJavaScriptのベンチマーク - FFFF - 0x Number.prototype.fillZero = function(n){ return (0 .toFixed(n) + this).slice(-n); } ゴルフ的には「 (''+ 1e20 + this).slice(-n) 」としたいとこだが,20桁までになるのでこれで妥協。 js> dis(function(n) ('_' + Math.pow(10, n) + this).slice(-n) ) flags: LAMBDA EXPR_CLOSURE INTERPRETED main: 00000: string "_" 00003: name "Math" 00006: callprop "pow" 00009: int8 10 00011: getarg 0 00014: call 2 00017:

    Number.prototype.fillZero - ellaneous
    miya2000
    miya2000 2009/01/17
    「0 .toFixed(n)」0の直後にピリオドを置くと小数点扱いされてコンパイルエラー。普通は「(0)」とするけどスペースを入れるとは。/「''+ 1e20」10の20乗の文字列化。
  • Code Golf

    For talk about code golf in program symposium.Read less

    Code Golf
  • Giles Bowkett: Ruby Golf: ASCII Sierpinski Triangle

    For wide terminals: ruby -le '64.times{|y|print" "*(63-y),(0..y).map{|x|~y&x>0?" .":" A"}}' For thin terminals: ruby -le '33.times{|y|print" "*(32-y),(0..y).map{|x|~y&x>0?" .":" A"}}' A classic fractal, via Brian Mitchell. I have no idea how it works. In a weird inversion of my usual pattern, I know the math but I can't figure out the code.

    Giles Bowkett: Ruby Golf: ASCII Sierpinski Triangle
  • [JavaScript]ラベルつきbreak文: ループやswitch以外のブロックを脱出するbreak - 徳丸浩の日記(2007-09-15)

    _ループやswitch以外のブロックを脱出するbreak JavaScriptでは、breakにラベルを指定できて、通常は多重ループを抜ける場合に用いられるような説明がなされていると思う。しかし、ラベル付のbreakは、ループやswitch以外の文を終わらせることもできる(Javaもそう)。 例えば以下のようなプログラム。 document.writeln("A"); L1: { document.writeln("B"); L2: { document.writeln("C"); break L1; // L1の文を終わらせるので、D、Eは実行されない document.writeln("D"); } document.writeln("E"); } document.writeln("F"); 【実行結果】 A B C F 多重ループを一気に脱出する場合は、それなりに用途を思いつくが、

    miya2000
    miya2000 2008/02/09
    に使えるかも。
  • 2007-11-01

    id:haru-sさんからのトラバで知りました. わずか565バイトテトリスのプログラミング解説 7行プログラミングですね.7行プログラミングのマインドってのは,500バイトそこそこで収まるようにソースコードを凝縮するってことだと思います.つまり制限容量に収まってしまえば,最後の詰めは甘くてもまあしかたないかなぁと私は思うのですが,まあ縮みそうなソースコードが転がっていると一応見ておきたい気もします. とりあえず,テトリスのコードを眺めたところでは明らかに縮みそうな箇所がありますね.パッと目に付いたのは,5行目の if(l%A)l-=l%A*!Z[l];else for(P+=k++,j=l+=A;--j>A;) ショートコーダーはelseなんて書かないので,たとえばこんな感じで縮めてやれば良いでしょう. for(j=l+=l%A?-l%A*!Z[l]:(P+=k++,A);l%A&&--

    2007-11-01
    miya2000
    miya2000 2007/11/02
    「ショートコーダーはelseなんて書かない」
  • JavaScript のワンライナーでカラーコード - IT戦記

    RGB 値が分かってて #XXXXXX を計算するのめんどいなーと思って Firebug でやってみた。 '#' + [76, 84, 105].map(function(i){ return (i >> 4 ? '' : 0) + i.toString(16) }).join('') このくらいならワンライナーで書けて便利ー^^ 追記: 弾さんからトラックバックもらって見てみたけど弾さんはちょっとミスってたので再トラバします。 (function(r,g,b){return '#' + (r < 16 ? 0:'') + (r*65536+g*256+b).toString(16)})(15, 127, 255) http://blog.livedoor.jp/dankogai/archives/50911084.html これだと (function(r,g,b){return '#'

    JavaScript のワンライナーでカラーコード - IT戦記
    miya2000
    miya2000 2007/09/13
    ゼロフィルにはよくsliceを使ってます。<<より優先順位が低い|を使うと括弧が減らせますね。 javascript:alert((function(r,g,b){return '#'+(1<<24|r<<16|g<<8|b).toString(16).slice(-6)})(0,0,0)) / あーこの場合はslice(1)でいいや。
  • JavaScript で n 進数を扱う: Days on the Moon

    2 進数や 16 進数を使いたいというとき、JavaScript では組み込みの機能を利用できます。使えるのは 16 進数だけではなく、2 進数から 36 進数 (0 ~ 9 および a ~ z を使用) まで扱えます。 n 進数文字列から数値への変換 n 進数文字列から数値へと変換するときは、parseInt 関数を使います。第 2 引数に基数 n を指定することで、第 1 引数の文字列を n 進数であると解釈してくれます。n は 32 ビット整数に変換され、その値が 2 未満または 36 を超えるときは NaN が返ります。ただし、n が 0 になるときは文字列が 10 進数表記であるとして解釈されます。 parseInt(10, 36); // 36 parseInt("10", 0x100000000 + 36); // 36 基数が明示されておらず、文字列が 0 から始まっていた

    miya2000
    miya2000 2007/08/20
    「データサイズを減らすため数値データを 36 進数文字列として格納し、parseInt を使ってそれを数値化しています。」
  • IT戦記 - Math.floor を使わずに小数を整数にする

    少数を整数にしたいような場合 たとえば、 0 - 9 のランダムな整数が欲しい場合 普通はこう書く var value = Math.floor(Math.random()*10); Math.floor を使わない場合はこう書く var value = ~~(Math.random()*10); 「~」は補数を求める単項演算子で、オペランドを整数変換するので二回やることでオペランドを整数化できるのです。 まとめ でも、もっといい方法があるかも。 皆様なら「どう書く?」のでしょうか。

    IT戦記 - Math.floor を使わずに小数を整数にする
  • http://ja.doukaku.org/comment/499/

    miya2000
    miya2000 2007/07/11
    void(0)===undefined. javascript:alert(null==void(0)):true javascript:alert(null===void(0)):false
  • 1