PageRenderTime 57ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/lista1/zadanie.rb

https://bitbucket.org/jenczuen/kurs-ruby
Ruby | 121 lines | 91 code | 15 blank | 15 comment | 4 complexity | 5ff238ef78f0445d50d29fd135469574 MD5 | raw file
  1. #!/usr/bin/ruby
  2. require 'date'
  3. class List1
  4. #============================================= 1
  5. def self.f1(rok,miesiac,dzien)
  6. arg = Date.new(rok,miesiac,dzien)
  7. baza = Date.new(2010,12,31)
  8. days = 0
  9. (baza-arg).ceil
  10. end
  11. #============================================= 2
  12. def self.f2(numbers)
  13. if numbers.is_a?(Array)
  14. numbers.inject{|sum,x| sum + x }
  15. else
  16. :undefined
  17. end
  18. end
  19. #============================================= 3
  20. def self.f3(d1,d2)
  21. date1 = Date.new(d1[2],d1[1],d1[0])
  22. date2 = Date.new(d2[2],d2[1],d2[0])
  23. days = (date1-date2).ceil
  24. days < 0 ? -days : days
  25. end
  26. #============================================= 4
  27. def self.f4(number)
  28. words = [
  29. "zero",
  30. "jeden",
  31. "dwa",
  32. "trzy",
  33. "cztery",
  34. "piec",
  35. "szesc",
  36. "siedem",
  37. "osiem",
  38. "dziewiec",
  39. ]
  40. numbers = number.to_s.split("")
  41. output = []
  42. for n in numbers
  43. output.push words[n.to_i]
  44. end
  45. output.join(" ")
  46. end
  47. #============================================= 5
  48. def self.f5(numbers)
  49. words = {
  50. :zero => "0",
  51. :jeden => "1",
  52. :dwa => "2",
  53. :trzy => "3",
  54. :cztery => "4",
  55. :piec => "5",
  56. :szesc => "6",
  57. :siedem => "7",
  58. :osiem => "8",
  59. :dziewiec => "9"
  60. }
  61. output = []
  62. for n in numbers
  63. output.push words[n.to_sym]
  64. end
  65. output.join.to_s
  66. end
  67. end
  68. #============================= testy
  69. require "test/unit"
  70. class TestFunction1 < Test::Unit::TestCase
  71. def testDates
  72. assert_equal 88, List1.f1(2010,10,4)
  73. assert_equal 1, List1.f1(2010,12,30)
  74. end
  75. end
  76. class TestFunction2 < Test::Unit::TestCase
  77. #argument - lista liczb
  78. #wynik - suma liczb z listy
  79. def testAdding
  80. assert_equal 55, List1.f2((1..10).to_a)
  81. assert_equal :undefined, List1.f2("cos")
  82. end
  83. end
  84. class TestFunction3 < Test::Unit::TestCase
  85. #argument - 2 listy 3 liczb (daty)
  86. #wynik - ile dni je dzieli
  87. def testDates
  88. assert_equal 275, List1.f3([1,1,2002],[1,4,2001])
  89. assert_equal 275, List1.f3([1,4,2001],[1,1,2002])
  90. end
  91. end
  92. class TestFunction4 < Test::Unit::TestCase
  93. #argument - liczba
  94. #wynik - liczba slownie
  95. def testNumber
  96. assert_equal "jeden zero dwa trzy jeden cztery trzy", List1.f4(1023143)
  97. end
  98. end
  99. class TestFunction5 < Test::Unit::TestCase
  100. #argument - liczba slownie
  101. #wynik - liczba
  102. def testNumber
  103. assert_equal "1023143",
  104. List1.f5("jeden zero dwa trzy jeden cztery trzy".split(" "))
  105. end
  106. end