Snippets

cia_rana 五角形の世界であなたは過去の自分に出会う 横へな

Created by cia_rana last modified
# http://nabetani.sakura.ne.jp/hena/orde09_penwa/
# by @Nabetani
require "minitest/autorun"

class TestRunner < Minitest::Test
  def setup
@f=->input{
d, l, x, y = 0, 0, 0, 0
memo = [[l, x, y]]
input.chars.each { |c|
  if c == ?F
    d, l, x, y = d.zero? \
      ? [0, l^3, x + (l[0]^l[1])*(1.5 <=> l), y] \
      : [d + (d%2 <=> 0.5),
         ((d%2 + l/2)%2 + l%2 + 1 + l)%4,
         x + (1 + (0 <=> ((l[0]^l[1]) + d - 2)%5))*(l%2 <=> 0.5),
         y + 1[(((l[0]^l[1])*2 + 1)*d%5 - 2)%5/2 <=> 0]*(0.5 <=> ((d + 1 + l[0]*2 + (l[0]^l[1])*2)%5 - 1)/2)]
    if index = memo.push([l, x, y])[0..-2].index(memo[-1])
      return [memo.size - 1, index] * ?,
    end
  else
    d = (d + (?b <=> c)) % 5
  end
}
?-
}
  end
  def test_run
    DATA.each{|data|
      input, expected = data.chomp.match(/test\(\s*\"(.+)\",\s*\"(.+)\"\s*\)/)[1..2]
      assert_equal expected, @f[input]
    }
  end
end

__END__
/*0*/ test( "FcFcFaF", "3,0" );    
/*1*/ test( "FccFaaFcFcF", "-" );    
/*2*/ test( "ccFaF", "-" );    
/*3*/ test( "cFcFaaF", "-" );    
/*4*/ test( "aFccFcFcF", "4,1" );    
/*5*/ test( "cFaFaFaFaaF", "4,0" );    
/*6*/ test( "cFccFaFaaFaF", "5,1" );    
/*7*/ test( "cFaaFaaFcFcFccF", "5,2" );    
/*8*/ test( "aaFaFaaFaFccFaFccF", "6,0" );    
/*9*/ test( "aaFaaFcFccFcFccFccFaF", "6,1" );    
/*10*/ test( "aFccFccFaaFccFcFcFcFaF", "7,4" );    
/*11*/ test( "ccFaaFaaFaFccFaaFaFcFccFaaF", "-" );    
/*12*/ test( "aaFaFaFcFaFaaFaFaFaaFccFaaFaaF", "8,3" );    
/*13*/ test( "aaFccFaFaFccFaaFaaFaaFccFccFcFaFaF", "13,10" );    
/*14*/ test( "aFaFaaFaaFaaFccFaFccFaFaaFccFccFaaFccF", "11,0" );    
/*15*/ test( "ccFccFcFaaFaaFaFccFaaFaFcFaaFaaFcFcFcF", "10,2" );    
/*16*/ test( "aaFaaFaaFccFccFaFaaFaaFaFccFcFcFccFaaFaFccFccF", "10,3" );    
/*17*/ test( "ccFaFccFaaFaaFcFccFaFcFccFccFaaFccFaFaaFaFaFccF", "11,3" );    
/*18*/ test( "cFcFaFaaFaFccFaaFcFaFaaFccFaFaaFccFaFcFaaFccFcF", "12,0" );    
/*19*/ test( "cFaFaaFcFaaFaaFaFccFaaFcFaaFccFaaFccFaFcFccFaFaFaFcFcF", "19,16" );    
/*20*/ test( "aFaFccFaaFccFccFaFccFaFaaFccFaaFccFcFccFaFaFccFaaFccFcF", "15,11" );    
/*21*/ test( "aFccFccFccFaaFaaFcFcFaaFccFaFcFccFaaFaFcFaaFcFaFccFccFaFaF", "23,20" );    
/*22*/ test( "cFaFaaFcFaFaaFccFccFaaFaFccFccFccFaFaFccFccFccFaaFcFcFcFaF", "22,18" );    
/*23*/ test( "aFcFaFccFccFaFccFaaFaFaaFaaFaFcFaFcFcFcFaFaFaaFaaFaFaaFcFccFaF", "14,4" );    
/*24*/ test( "cFaFaaFcFaFccFcFccFaFaaFaaFaFcFccFccFaFcFaFaaFccFaFaFccFcFaFaFaaF", "22,19" );    
/*25*/ test( "aaFaaFaFcFccFaaFcFaaFccFaFaFcFaFaaFaFaFaFcFccFaFaaFcFcFccFccFccFcF", "16,11" );    
/*26*/ test( "cFaaFaFcFaFaaFccFaaFaFccFccFaaFccFcFaFaaFaaFaFccFcFccFccFaFaaFcFcFaF", "26,23" );    
/*27*/ test( "cFaaFccFaFcFaFcFaaFccFaFccFaaFcFaFaaFccFaaFccFcFaFaaFaFcFccFccFaFcFaaFccFcF", "-" );    
/*28*/ test( "ccFccFaaFaFccFaaFaaFcFccFaaFaFcFccFccFccFaFaaFcFaFccFaaFcFcFaFccFaFccFaaFaaFaF", "-" );    
/*29*/ test( "aaFccFaFccFccFaaFccFaFcFccFaFccFcFcFaFcFcFaaFaaFcFccFccFcFaFaaFaFcFcFaaFaaFaaF", "19,5" );    
/*30*/ test( "aFaaFccFaFaaFaaFccFccFaFcFaaFaaFaaFccFaFccFaaFaaFaFccFccFcFaaFaFccFccFaFcFaaFccF", "-" );    
/*31*/ test( "aaFaFaaFcFccFccFaFcFaaFaaFaFccFccFccFaFaaFccFcFaaFccFaaFccFaaFccFccFccFcFaaFcFaaFccF", "30,23" );    
/*32*/ test( "aaFccFaFaaFccFcFaFccFaFcFccFaaFccFaFcFaaFccFaaFaFccFccFccFcFccFaFccFcFaaFaFcFccFcFaFaaF", "32,17" );    
/*33*/ test( "ccFcFcFaFaaFaFaaFccFcFccFaFcFaFccFaaFcFccFcFaaFcFaaFcFaaFaaFcFaaFaFaFaFaaFccFaaFcFcFaFaF", "18,14" );    
/*34*/ test( "ccFaFaaFaaFcFaaFaaFaaFaaFaaFaFccFcFaaFaFcFccFaaFcFaFaaFccFccFaaFcFaaFaaFaaFccFaaFcFcFaFaFccFaFcFccF", "17,0" );    
/*35*/ test( "aaFccFccFaFcFaFcFaFccFccFccFaFccFccFcFaFcFaaFccFcFccFccFaaFcFccFaaFccFccFaFccFcFcFaaFaFccFcFaaFaaFcF", "24,11" );    
/*36*/ test( "aaFccFaFccFaaFaaFcFaFcFaFcFaaFaaFccFaFcFaFaaFcFaaFaFcFaaFccFcFaaFccFaaFccFaaFccFcFaFcFaFccFaaFaaFccFaaF", "-" );    
/*37*/ test( "aFaaFaFaaFcFccFaaFccFaFcFaaFccFccFcFcFaFaFcFccFcFccFaaFcFaFcFaaFcFaFaaFccFaaFccFaFaaFaFcFaFccFaFaaFaFaaF", "17,14" );    
/*38*/ test( "aaFcFaaFccFaaFaaFcFaaFccFccFaFcFaFcFccFcFaaFaaFaFcFaFcFaaFcFaFaaFaFccFccFccFcFaFaFcFcFaFcFaaFcFaaFcFcFaaF", "27,23" );    
/*39*/ test( "ccFaFccFaFcFaFccFcFaaFccFccFcFaFccFccFaaFaaFaFaaFcFaaFccFcFaaFcFccFaaFcFaFccFccFaFccFaaFaaFcFcFccFaFccFcFcF", "25,18" );    
/*40*/ test( "cFcFccFaFaaFaaFccFccFcFccFccFaFcFaaFcFccFccFcFccFaFaFaFaFaFaaFaFcFaFccFcFccFaaFccFaaFccFcFaFaaFccFaFccFcFaaF", "16,4" );    
/*41*/ test( "aFcFcFaaFcFaaFcFaFaaFaaFaaFaFcFccFccFccFaFaaFaFaaFaaFcFcFccFaFaaFcFaFaaFccFaaFcFccFcFcFccFaaFcFaFccFaaFaaFccF", "19,15" );    
/*42*/ test( "ccFaaFcFaFccFaFccFaFcFaaFaaFccFaaFccFcFaFaFccFaFaaFaFaaFaFaaFaaFccFaaFaFcFaaFaFaFcFaaFcFaFaaFaaFcFccFaaFaFaFaF", "22,17" );    
/*43*/ test( "aaFcFaaFaFcFccFccFaFaFccFaFaaFaFcFccFaaFaaFaaFcFccFccFaFaaFccFcFaFaFcFaaFcFcFcFccFccFaaFcFcFaFccFccFccFaaFcFaaFcF", "14,5" );    
/*44*/ test( "cFcFaFccFaaFaFccFaFccFaaFaFccFaaFaaFccFaaFccFaaFccFaFaaFaFaFaaFaaFccFaFcFaaFcFcFaFaFcFcFcFaFaaFcFaFcFaaFccFccFcFaaFaFccF", "10,1" );    
/*45*/ test( "ccFaFcFaaFcFccFaFccFaaFccFaaFaaFcFaaFccFaaFccFccFcFaaFaaFcFaaFccFaaFcFcFaaFaFaFccFcFaFaFaFccFccFccFccFccFccFcFcFccFccFcF", "25,13" );    
/*46*/ test( "aFccFaFcFaFcFaaFaaFcFaaFccFaFaaFaFcFaFaaFaaFaaFccFaaFaaFccFccFccFccFccFaaFaFcFaFaFccFaFccFcFccFcFcFccFcFccFccFccFccFccFaF", "18,8" );    
/*47*/ test( "cFaaFcFaaFaFcFccFaaFcFccFcFaFccFaaFaaFccFccFccFaFcFccFcFaaFcFcFccFcFccFaFaFccFccFcFaFaFaaFcFaFcFccFccFccFaaFaFaFccFcFccFccF", "25,22" );    
/*48*/ test( "aaFcFccFcFaFcFaFaFcFccFaFaaFaFcFccFccFaaFccFccFaaFaaFccFaaFaaFccFaaFccFcFaaFaFcFaFcFccFaaFccFaFaFccFaaFcFaaFaFccFaaFaaFccFccFcFaF", "-" );    
/*49*/ test( "aFaaFccFccFaaFaaFccFccFaaFaaFaFcFccFaFcFaaFaFccFaaFccFaFcFaFccFaaFaaFaFccFaFaaFaaFcFaaFccFaaFcFaFccFccFaaFaaFaaFaaFccFcFccFaaFaFaaFaaF", "-" );    
/*50*/ test( "aaFcFccFccFaFccFaFccFaaFaaFaaFccFaaFaaFccFaaFccFaFaaFccFccFaaFcFccFaFccFcFaaFaFccFccFccFaaFaFccFccFaFaaFccFccFccFaaFccFccFaFaFcFaFccFccF", "-" );

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.