fork download
  1. # coding: utf-8
  2. require 'minitest/autorun'
  3.  
  4. F=->s{d=[1,w=1e4,-1,-w]
  5. v=[w]+s.chars.map{|c|w+=d.rotate!(c<?R?-1:c>?R?0:1)[0]}
  6. v==v&v}
  7.  
  8. describe '#F' do
  9. describe 'valid slithers' do
  10. def test_first_case
  11. assert F['SRSLSSLRLRSSRSRSS']
  12. end
  13.  
  14. def test_valid
  15. assert F['SSLSLSRSRSSRSSSLLSSSRRLRSLRLLSSS']
  16. end
  17. def test_a_hilbert_curve
  18. assert F['SRRLSLLRRLLSLRRSRLLRSRRLLRRSRLLSSLLRSRRLLRRSRLLRSRRLSLLRRLLSLRR']
  19. end
  20. def test_another_valid
  21. assert F['RLLRSRRLSLLRRLLSLRRSRLLRSRRLLRRSRLLSSLLRSRRLLRRSRLLRSRRLSLLRRLLSLRRSRLLRSRRLLRRSRLLSSLLRSRRLLRR']
  22. end
  23. def test_Spiral
  24. assert F['SRRSRSRSSRSSRSSSRSSSRSSSSRSSSSRSSSSSRSSSSSRSSSSSSRSSSSSSRSSSSSS']
  25. end
  26. def test_bigger_squigglier_spiral
  27. assert F['SSSSSSSSSSLSSSSSSSLSSSSSSSSLSSSSSLSSSSSSLSSSLLRRLLRRLLSLSSSRRSSSSRSSSRSSSSSSRSSSSSRSSSSSSSSRSSSSSSSRSSSSSSSSS']
  28. end
  29. def test_yet_another_valid
  30. assert F['LRSLLRLSRSLLSRLSLRSLSSSLRRSSLSRRLRSRLRLSLRLLRLRSSLSLRLRSRSSSSSLSRRLSLSSSRRLRLRLRLRRLLSSLSSSRRLRLRLRLRLSLSSSSSSSSSSSSSRLRLLRLRLRLRLRLRLRLSLSSSLSLSLL']
  31. end
  32. end
  33.  
  34. describe 'invalid slithers' do
  35. def test_invalid_1
  36. refute F['SRRLSLLRRLLSLRRSRLLRSRRLLRRSRLLLLRSRRLLRRSRLLRSRRLSLLRRLLSLRR']
  37. end
  38. def test_invalid_2
  39. refute F['SRRLSLLRRLLSLRRSRLLRSRRLLSRSSSRSSSSSSSRSRSSSSSSSRRLLRRSRLLRSRRLSLLRRLLSLRR']
  40. end
  41. def test_invalid_3
  42. refute F['SRRSRSRSSRSSRSSSRSSSRSSSSSSSSSSRSSSSRSSSSSRSSSSSRSSSSSSRSSSSSSRSSSSSS']
  43. end
  44. def test_invalid_4
  45. refute F['SSSSSSSSSSLSSSSSSSLSSSSSSSSLSSSSSLSSSSSSLSSSLLRRLRLRRLLSLSSSRRSSSSRSSSRSSSSSSRSSSSSRSSSSSSSSRSSSSSSSRSSSSSSSSS']
  46. end
  47. def test_invalid_5
  48. refute F['LRSLLRLSRSLLSRLSLRSLSSSLRRSSLSRRLRSRLRLSLRLLRLRSSLSLRLRSRSSSSSLSRRLSLSSSRRLRLRLRLRRLLSSLSSSRRLRLRLRLRLSLSSSSSSSSSSSSSRLRLLRLRLRLRLRLRLRLSLSSSLSLSLLSLRLSLRSLRSLRSLSLSLRSRLSLRSLRLSRSLLLRLRLRRRRSLSLSSLLSLSLSLSSLLSLSLLRLRSLLRSRLSLSSLLLLSSSSSSSSSSSSSSSSSSSSRLRLLRRLRLRLLRLRLRLRLRLSSSSLSLRLLRLSLSSLSLSLSLSLRLLRLSLLLSRSSSSSSSSSSSSSSSRLRLRLLRLRLSLSRSRSSSLSRLRLRLRSLSLSLSRLLSRLSLSLSLSLSSLSLSLLSLSRLLRLRLRLRLRLRLRLRLRLRLSLSRLRLSLLRRLSLLSLSLSLSLSLLSLSLSLRLRLRLRLRLRLRLRLRLRRLRSLSLSLSLSLSLSLSSLSSSSSLSLSSSLSLSLSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS']
  49. end
  50. end
  51. end
  52.  
  53.  
  54.  
Success #stdin #stdout 0.06s 8664KB
stdin
Standard input is empty
stdout
Run options: --seed 62727

# Running tests:

............

Finished tests in 0.005909s, 2030.6871 tests/s, 2030.6871 assertions/s.

12 tests, 12 assertions, 0 failures, 0 errors, 0 skips