技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

Java/Scala 比較。一定期間の曜日ごとの購買集計

単純なお題。

標準出力から、日数と、その日数に応じた日々の購買金額が入力されたとき、曜日ごとの集計額を計算しなさい。 ただし日数は 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 側はもっとなんとかできそうな…。