クリスマスプログラミング

皆さんこんにちは,M1の北垣です.

そろそろクリスマスも近いので,今日はクリスマスプログラミングをしたいと思います.


クリスマスプログラミングとは,クリスマスを感じさせるコードを書く遊びのことです.
僕が今適当に考えました.

それではさっそく始めましょう.



今回は,Rで実装してみました.

皆さん,当然Rの実行環境は用意できていますよね?

それでは,何も考えずに以下のコードを実行してみましょう.

par(mar=c(2, 1, 4, 2))
plot(NULL, axes=FALSE, xlim=c(-.5, .5), ylim=c(0, .75), xlab='', ylab='')

rect(-.05, 0, .05, .5, col='brown')

tri <- matrix(c(-.4, 0, 0, .5, .4, 0), ncol=2, byrow=TRUE)
for(i in 1:4){
    tri[ , 1] <- tri[ , 1] * .75
    tri[ , 2] <- tri[ , 2] * .75 + .2
    polygon(tri, col='green', border='green')
}
top <- tri[2, ]

mycurve <- function(from, to, by, func, dx, dy){
    x <- seq(from, to, by)
    matrix(c(x+dx, func(x)+dy), ncol=2)
}
curves <- mycurve( .05,  .24,  .02, function(x){x^2} , -.15, .55)
curves <- rbind(curves, mycurve(   0, -.26, -.02, function(x){x^2} ,  .15, .45))
curves <- rbind(curves, mycurve(-.05,  .32,  .02, function(x){x^2} , -.15, .32))
curves <- rbind(curves, mycurve(   0, -.46, -.02, function(x){-x^3},  .26, .21))
points(curves, pch=19, col='darkgoldenrod1')

bell.red  <- matrix(c(-.05, .6, .1, .5, -.1, .3), ncol=2, byrow=TRUE)
bell.blue <- matrix(c(-.05, .45, .15, .4, -.15, .35, .2, .25), ncol=2, byrow=TRUE)
points(bell.red , pch=19, col='red' , cex=3)
points(bell.blue, pch=19, col='blue', cex=3)

n <- 5
star.out <- matrix(c(sin(2*pi*0:(n-1)/n), cos(2*pi*0:(n-1)/n)), ncol=2)
star.in  <- matrix(c(sin(2*pi*0:(n-1)/n + pi/n), cos(2*pi*0:(n-1)/n + pi/n)), ncol=2) * .5
star <- NULL
for(i in 1:n) star <- rbind(star, star.out[i, ], star.in[i, ])
star <- matrix(apply(star, 1, function(x){x/20 + top}), ncol=2, byrow=TRUE)
polygon(star, col='yellow', border='darkgoldenrod1')

title('Merry Christmas!')

クリスマスを感じさせる結果が得られたと思います.



クリスマスまであと2週間程度あるので,皆さんもどんどんクリスマスプログラミングをしていってくださいね.

それでは!



















(最後に,いないとは思いますが,Rの実行環境がない人向けに実行結果の画像を貼っておきます)



Comment

No comment