Skip to content

Instantly share code, notes, and snippets.

@selman
Created August 9, 2011 11:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save selman/1133846 to your computer and use it in GitHub Desktop.
Save selman/1133846 to your computer and use it in GitHub Desktop.
girilen araliktaki yillarin ilk gunleri hangi gun?
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
# günlerin türkçe karşılığı için array'imiz
DAYS = %w(pazar pazartesi salı çarşamba perşembe cuma cumartesi).freeze
# günü key, yılları value olarak hash'a kaydediyoruz
day_years = (1900..2011).inject({}) do |dy, year|
(dy[Time.utc(year).wday] ||= []) << year
dy
end
# hash aşağıdaki gibi de tanımlanabilir ama inject ile olan versiyon daha hızlı
# day_years = Hash.new{|h, k| h[k] = [] }
# 1900.upto(2011) {|year| day_years[Time.utc(year).wday] << year }
# daha önce oluşturduğumuz array'den bakarak ekrana yazdırıyoruz
day_years.sort.each {|day, years| puts "#{DAYS[day]} => #{years}"}
__END__
pazar => [1905, 1911, 1922, 1928, 1933, 1939, 1950, 1956, 1961, 1967, 1978, 1984, 1989, 1995, 2006]
pazartesi => [1900, 1906, 1912, 1917, 1923, 1934, 1940, 1945, 1951, 1962, 1968, 1973, 1979, 1990, 1996, 2001, 2007]
salı => [1901, 1907, 1918, 1924, 1929, 1935, 1946, 1952, 1957, 1963, 1974, 1980, 1985, 1991, 2002, 2008]
çarşamba => [1902, 1908, 1913, 1919, 1930, 1936, 1941, 1947, 1958, 1964, 1969, 1975, 1986, 1992, 1997, 2003]
perşembe => [1903, 1914, 1920, 1925, 1931, 1942, 1948, 1953, 1959, 1970, 1976, 1981, 1987, 1998, 2004, 2009]
cuma => [1904, 1909, 1915, 1926, 1932, 1937, 1943, 1954, 1960, 1965, 1971, 1982, 1988, 1993, 1999, 2010]
cumartesi => [1910, 1916, 1921, 1927, 1938, 1944, 1949, 1955, 1966, 1972, 1977, 1983, 1994, 2000, 2005, 2011]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment