Comment detail
除算・余剰を使わずに閏年 (Nested Flatten)ついにゅっとなってやってしまった。
1 2 3 4 5 6 7 8 9 10 | def leap(x, d=400):
return (
not d and [d]
or
x == 0 and [[1, 0, 1][d >> 6 & 3]]
or
x < d and [leap(x, [0, 4, 100][d >> 6 & 3])]
or
[leap(x - d, d)]
)[0]
|
まあ、かけ算でも出来るわけでして。 #なんか揚げ足取りばっかしているように思われ #ちゃうだろうなぁ。マイナス評価でもしょうがないか。 $ pl -qs 124.pl ?- uru(1900). No ?- uru(2000). Yes ?- uru(2008). Yes ?- uru(2100). No ?-
1 2 3 4 5 6 7 | uru(X):- divideby400(X).
uru(X):- divideby4(X), not(divideby100(X)).
divideby(X, Y, Z) :- 0 =:= X - integer(X * Y) * Z.
divideby4(X) :- divideby(X, 0.25, 4).
divideby100(X) :- divideby(X, 0.01, 100).
divideby400(X) :- divideby(X, 0.0025, 400).
|






にしお
#5337()
[
Python
]
Rating0/0=0.00
とても素朴な書き方。剰余の計算を禁止しても引き算の繰り返しでできてしまいますね。一応、大きい順に引くことで繰り返しの回数を減らしてあります。
Rating0/0=0.00-0+
2 replies [ reply ]