横向きピラミッド

LL Futureでのgolfにもあったらしい「横向きピラミッド」を社内でやってみた。
golfといっても短い打数を競い合うわけではないので、
ワンライナーとかにはせずインデント、わかりやすい変数名をつけるなど、
実用的なコードを目指すのが前提。
なので単にコーディングコンテストといったところか。


javaで実装した人が多く、ついでC。
私はjavascript再帰を使ってこんなコードを実装してみた。

function pyramid(n) {
    function pyramid_aux(n) {
	var list = new Array(n + 1).join("*");
	return n <= 1 ? [list] : [list].concat(pyramid_aux(n-1));
    }
    return pyramid_aux(n).reverse().concat(pyramid_aux(n).slice(1,n+1));
}

print(pyramid(5).join("\n"));

基本的にイテレータは好きだが、副作用あり前提のfor文は嫌いなので
こんなコードになりました。
再帰を読めないと理解できないって事でかなり不評でしたが。
まぁ確かに実用性とはほど遠い気もする。。。



他の参加者のエントリ
javaで横向きピラミッドを描画@駆け出しプログラマの奮闘記
javascriptで横向きピラミッドを描画@駆け出しプログラマの奮闘記