📈 More stations

This commit is contained in:
Gunnar Morling 2023-12-28 22:33:15 +01:00
parent fd9a5f9799
commit 3854500520
3 changed files with 55 additions and 11 deletions

View File

@ -8,22 +8,22 @@ Each row is one measurement in the format `<string: station id>;<double: measure
The following shows ten rows as an example: The following shows ten rows as an example:
``` ```
hamburg;11.0 Hamburg;12.0
hammerfest;-12.7 Bulawayo;8.9
auckland;5.3 Palembang;38.8
lima;6.6 St. John's;15.2
concordia;-42.5 Cracow;12.6
hammerfest;-6.7 Bridgetown;26.9
hamburg;9.0 Istanbul;6.2
hammerfest;-11.9 Roseau;34.4
hamburg;-0.7 Conakry;31.2
concordia;-48.5 Istanbul;23.0
``` ```
The task is to write a Java program which reads the file, calculates the average temperature value per weather station, and emits the result on stdout like this: The task is to write a Java program which reads the file, calculates the average temperature value per weather station, and emits the result on stdout like this:
``` ```
{auckland=5.3, concordia=-45.5, hamburg=6.4, hammerfest=-10.4, lima=6.6} {Abha=18.0, Abidjan=26.0, Abéché=29.4, Accra=26.4, Addis Ababa=16.0, Adelaide=17.3, ...}
``` ```
Submit your implementation by Jan 31 2024 and become part of the leaderboard! Submit your implementation by Jan 31 2024 and become part of the leaderboard!

22
evaluate.sh Executable file
View File

@ -0,0 +1,22 @@
#!/bin/sh
#
# Copyright 2023 The original authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
for i in {1..5}
do
time ./calculate_average.sh
done

View File

@ -52,6 +52,28 @@ public class CreateMeasurements {
System.exit(1); System.exit(1);
} }
// data from https://en.wikipedia.org/wiki/List_of_cities_by_average_temperature;
// converted using https://wikitable2csv.ggor.de/
// brought to form using DuckDB:
// D copy (
// select City, regexp_extract(Year,'(.*)\n.*', 1) as AverageTemp
// from (
// select City,Year
// from read_csv_auto('List_of_cities_by_average_temperature_1.csv', header = true)
// union
// select City,Year
// from read_csv_auto('List_of_cities_by_average_temperature_2.csv', header = true)
// union
// select City,Year
// from read_csv_auto('List_of_cities_by_average_temperature_3.csv', header = true)
// union
// select City,Year
// from read_csv_auto('List_of_cities_by_average_temperature_4.csv', header = true)
// union
// select City,Year
// from read_csv_auto('List_of_cities_by_average_temperature_5.csv', header = true)
// )
// ) TO 'output.csv' (HEADER, DELIMITER ',');
List<WeatherStation> stations = Arrays.asList( List<WeatherStation> stations = Arrays.asList(
new WeatherStation("Adelaide", 17.3), new WeatherStation("Adelaide", 17.3),
new WeatherStation("Melbourne", 15.1), new WeatherStation("Melbourne", 15.1),