単純なお題。
標準出力から、日数と、その日数に応じた日々の購買金額が入力されたとき、曜日ごとの集計額を計算しなさい。 ただし日数は 7 の倍数であることが保証され、曜日の先頭は日曜日である。
入力例:
14 日間を指定、各日付の購買数は、下記の通りの場合 7,8,9,10,11,12,13 3,9,8, 7, 7, 1, 4
14 7 8 9 10 11 12 13 3 9 8 7 7 1 4
出力例:
10 17 17 17 18 13 17
これを満たすプログラムを書く。
Java
どうすりゃいいのかなーと思ったけど、悩む必要なかった。
import java.util.Scanner; public class JavaSample { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int lines = scanner.nextInt(); long[] moneys = new long[7]; for (int n = 0; n < lines; n++) { moneys[n % 7] += scanner.nextLong(); } for (long v : moneys) { System.out.println("Value : " + v); } } }
Scala
こっちの方が慣れてる。
object Main extends App { import scala.io.StdIn val lines = StdIn.readInt() val values = (0 to (lines - 1)).map(_ -> StdIn.readLong()) (0 to 6) .map(i => values.filter(_._1 % 7 == i).map(_._2).sum) .foreach(println) }
やっぱシンタックスがずいぶん違う。
Scala の方が好きだからバイアスかかってそうな気がする。
もっと短くかける or 読みやすいもの書ける人是非… Java 側はもっとなんとかできそうな…。