【Scala】delete blank lines

解答の一例が載っているため閲覧注意。

今回の問題はこちらanarchy golf - delete blank lines
空白行を消して出力せよ、ってことですね。



とりあえずざっと作ってみましょう
全体文を読み取ってリスト化し、空白行(=長さが0の行)をフィルターで消していきます



io.Source.stdin.getLines.toList.filter(_.size>0)foreach println

63bytes。長い。


ところでio.Source~getLinesはtoListしてますけど、リスト化しないと何になるのだろう、ということで確かめてみる

scala> io.Source.stdin.getLines
res: Iterator[String] = non-empty iterator

イテレータが返ってきました。filterとforeachはイテレータに対して問題なく使えるので、これはまるまる消すことが出来ますね。ということで


io.Source.stdin.getLines.filter(_.size>0)foreach println

56bytes
この型だとこれ以上はあまり減らせなさそう。


readLineでも試してみる。
すると51bytesに。



while(0<1){var a=readLine;if(a.size>0)ptintln(a.r)}

例外処理でループを抜けています。readLineで読み込んだ文字列をループ内で上手く処理できずごちゃごちゃした形になってしまってます。もう少し減らせそう。