• Haskell 逆波兰计算例子 at 2013年05月09日

    #9楼 @chenge

    def solveRPN rpnexp
     rpnexp.split.inject [] do |stack, c|
      stack<<("+-*\\".include?(c)? stack.pop(2).reverse.map(&:to_f).inject(c) : c)
     end.first
    end
    solveRPN "10 4.1 3.0e1 + -2 * -"
    
    require "scanf"
    def solveRPN1 exp
      stk=[];
      exp.split.each{|c|stk<<(c.scanf('%f').first||stk.pop(2).reverse.inject(c))}
      stk.first
    end
    solveRPN1 "10 4.1 3.0e1 + -2 * -"
    
  • Haskell 逆波兰计算例子 at 2013年05月09日
  • Ruby的库

    static VALUE
    rb_ary_reverse_m(VALUE ary)
    {
        long len = RARRAY_LEN(ary);
        VALUE dup = rb_ary_new2(len);
    
        if (len > 0) {
            VALUE *p1 = RARRAY_PTR(ary);
            VALUE *p2 = RARRAY_PTR(dup) + len - 1;
            do *p2-- = *p1++; while (--len > 0);
        }
        ARY_SET_LEN(dup, RARRAY_LEN(ary));
        return dup;
    }
    
  • 👍

  • #60楼 @chenge @zgm _^ , 又小改了一下。

  • 北风乱,夜未央,你的影子。。。

    dot = ->{
      i = 0; j = 150
      -> {
        i += 1; (i=0 ; j+=1) if i % 2== 0
        j = 16 if  j > 231
        "\e[38;5;#{j}m█"
      }
    }[]
    
    class Array
      def show_chars
        print  "\n" * 2
        each do |x|
            x.each_char{|x| print x; sleep 0.06};
            print "\n"*2
        end
        true
      end
    end
    (
    a=["\n\n",
    " ", "0", "0", "0", "0", "0", "0", " ", " ", " ", " ", " ", " ", "0", "0", "0", "0", " ", " ", " ", " ", "0", "0", "0", "0", "0", "0", "\n", 
    " ", "0", "0", " ", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", "0", "0", " ", " ", " ", "0", "0", " ", " ", " ", "0", "0", "\n", 
    " ", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", " ", "0", " ", " ", " ", " ", "0", " ", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0", "\n", 
    " ", "0", "0", " ", " ", " ", "0", "0", "0", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", "0", "0", " ", " ", " ", "0", "0", "\n", 
    " ", "0", "0", "0", "0", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", "0", "0", "0", "0", "0", "0", "\n", 
    " ", "0", "0", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", "0", "0", " ", " ", "0", "0", "\n", 
    " ", "0", "0", " ", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", "0", "0", " ", " ", " ", "0", "0", " ", " ", " ", "0", "0", "\n", 
    " ", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0","0","\n",
    "-","-","-","-","-","-","-","-","-","-","-","-","-","-","-",];
    header =[
    "北风乱,夜未央,你的影子",
    "剪不断,徒留我孤单在",
    "湖面成雙!",
    ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>",];
    footer = [
    "OOOOOnly youuuuuuu\no   祝所有母亲   u\no   五月十二日   u\no   节日快乐!!   u\nOOOOOnly youuuuuuu\n\n",]
    )
    (
    print "\n"*25
    header.show_chars
    3.times{
      a.each {|x| print ((x=="0")? dot[]:x) ; sleep 0.006 }
      a.join.split("\n").reverse.join("\n").each_char {|x| print x; sleep 0.003}
    }; 
    footer.show_chars
    )
    
    "^_^"
    
  • 《Ruby 元编程》中的禅师 at 2013年05月07日

    1、DRY 2、拥抱变化

  • @luikore@zfjoy520 @zgm 致敬

    dot = ->{
      i = 0
      j = 150
      -> {
        i += 1
        if i % 2== 0
          i = 0
          j += 1
        end
        if j > 231
          j = 16
        end
        "\e[38;5;#{j}m█"
      }
    }[]
    !(a=["\n","\n",
    " ", "0", "0", "0", "0", "0", "0", " ", " ", " ", " ", " ", " ", "0", "0", "0", "0", " ", " ", " ", " ", "0", "0", "0", "0", "0", "0", "\n", 
    " ", "0", "0", " ", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", "0", "0", " ", " ", " ", "0", "0", " ", " ", " ", "0", "0", "\n", 
    " ", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", " ", "0", " ", " ", " ", " ", "0", " ", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0", "\n", 
    " ", "0", "0", " ", " ", " ", "0", "0", "0", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", "0", "0", " ", " ", " ", "0", "0", "\n", 
    " ", "0", "0", "0", "0", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", "0", "0", "0", "0", "0", "0", "\n", 
    " ", "0", "0", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", "0", "0", " ", " ", "0", "0", "\n", 
    " ", "0", "0", " ", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", "0", "0", " ", " ", " ", "0", "0", " ", " ", " ", "0", "0", "\n", 
    " ", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0", "0", "0", " ", " ", " ", " ", "0", "0", " ", " ", " ", " ", "0", "0","0", "\n","\n"];)
    
    10.times{
      a.each {|x| print ((x=="0")? dot[]:x) ; sleep 0.009 }
      a.each {|x| print x; sleep 0.006}
    }
    "over"
    
    
  • #55楼 @zgm 第二个是个笔误。第一个pry中会显示数组,需要“q”退出后,才运行后面的循环。