除算・余剰を使わずに閏年
Posted feedbacks - Smalltalk
Squeak Smalltalk で。
1 2 3 4 5 6 7 8 9 10 11 | | 閏年か? |
閏年か? := [:int |
((0 to: Float infinity by: 4) includes: int)
and: [((0 to: Float infinity by: 100) includes: int) not
or: [(0 to: Float infinity by: 400) includes: int]]].
閏年か? value: 1900. "=> false "
閏年か? value: 2000. "=> true "
閏年か? value: 2008. "=> true "
閏年か? value: 2100. "=> false "
|
考えたら、べつに無限にせずともこれで十分ですね(^_^;)。
1 2 3 4 5 6 7 8 9 10 11 | | 閏年か? |
閏年か? := [:int |
((0 to: int by: 4) includes: int)
and: [((0 to: int by: 100) includes: int) not
or: [(0 to: int by: 400) includes: int]]].
閏年か? value: 1900. "=> false "
閏年か? value: 2000. "=> true "
閏年か? value: 2008. "=> true "
閏年か? value: 2100. "=> false "
|
まあ、こういうのもあるということで。
1 2 3 4 5 6 7 8 9 10 | | 閏年か? |
閏年か? := [:int |
(int isDivisibleBy: 4)
and: [(int isDivisibleBy: 100) not or: [int isDivisibleBy: 400]]].
閏年か? value: 1900. "=> false "
閏年か? value: 2000. "=> true "
閏年か? value: 2008. "=> true "
閏年か? value: 2100. "=> false "
|
その手がありましたか!って、もはや悪のりでしかありませんね(^_^;)。
1 2 3 4 5 6 7 8 | | 閏年か? |
閏年か? := [:int | int asYear daysInYear = 366].
閏年か? value: 1900. "=> false "
閏年か? value: 2000. "=> true "
閏年か? value: 2008. "=> true "
閏年か? value: 2100. "=> false "
|




greentea #5245() Rating-1/13=-0.08
see: Wikipedia 閏年
[ reply ]