CSES - Datatähti 2024 alku - Results
Submission details
Task:Säähavainnot
Sender:YourUncle
Submission time:2023-11-04 19:41:02 +0200
Language:CPython3
Status:READY
Result:43
Feedback
groupverdictscore
#1ACCEPTED43.25
Test results
testverdicttimescore
#1ACCEPTED0.03 s5.38details
#2ACCEPTED0.03 s5.75details
#3ACCEPTED0.03 s5.88details
#4ACCEPTED0.03 s5.25details
#5ACCEPTED0.03 s5.38details
#6ACCEPTED0.03 s5.13details
#7ACCEPTED0.03 s5.13details
#8ACCEPTED0.03 s5.38details

Code

# import csv
# # import matplotlib
# import matplotlib.pyplot as plt
# import numpy as np
# import pandas as pd

# HOURS = [i for i in range(0, 36)]

# HOURS_MOD = [i for i in range(12, 24)]


def read_csv(file, n):
    takas = []
    with open(file, newline='') as f:
        reading = csv.reader(f, delimiter=' ')
        for rivi in reading:   
            if len(rivi) == 1:
                continue
            if len(takas) == n:
                break
            takas.append([float(x) for x in rivi])
            
    return takas

def draw(x, y, x2, y2, m, c):
    
    figure, axis = plt.subplots(1, 2)
    axis[0].plot(x, y, color='green', linestyle='dashed', linewidth = 3, 
         marker='o', markerfacecolor='blue', markersize=12) 
    axis[0].plot(m, c, 'r')
    axis[0].set_ylim([min(y)-1, max(y)+1])
    
    axis[1].plot(x2, y2, color='green', linestyle='dashed', linewidth = 3, 
         marker='o', markerfacecolor='blue', markersize=12) 
    axis[1].plot(m, c, 'r')
    axis[1].set_ylim([min(y)-1, max(y)+1])


    # plt.plot(x, y)
    # plt.xlim(0,36) 
    # plt.ylim(-10, 30) 
    # plt.xlabel('x - axis') 
    # # naming the y axis 
    # plt.ylabel('y - axis') 
    
    # giving a title to my graph 
    # plt.title('My first graph!') 
    
    # function to show the plot 
    plt.show() 

def linear_reg(x, y):
    A = np.vstack([x, y]).T
    print(A)
    m, c = np.linalg.lstsq(A, y, rcond=None)[0]
    return (m, c)

def new_points(lista, a, b):
    # if b-a > 3:
    #     return False
    #     # takas = [y+(b-a)*0.5 for y in lista]
    takas = []
    takas = [y+(b-a) for y in lista[:5]]
    for i in range(7):
        takas.append("?")
    return takas

# def first_last(n):
#     first = max(data[n][0:11])
#     last = data[n][11]
#     k = (last-first)/12
#     return k

def ka_line(k, b):
    takas = [x*k+b for x in range(12)]
    return takas

def testing(real, prediction):
    # print(len(real))
    # print(len(prediction))
    oikein = 0
    väärin = 0
    ei_dataa = 0
    if prediction == False:
        return (0, 0, 12)
    for i in range(len(real)):
        if prediction[i] == False:
            ei_dataa += 1
        else:
            erotus = abs(real[i]-prediction[i])
            if erotus < 0.75:
                oikein += 1
            elif erotus > 0.7 and erotus < 2.05:
                ei_dataa += 1
            else:
                väärin += 1
    return (oikein, väärin, ei_dataa)

    

# data = read_csv("data.csv", 2000)
# def setup(n):
#     # print(data[n][0:23])
#     # print(data[n][23:])
#     # m, c = linear_reg(HOURS[24:],data[0:12])
#     k = first_last(n)
#     linear = ka_line(k, data[n][22])
#     tulos = new_points(data[n][0:12], data[n][0], data[n][23])
    
#     a  = testing(data[n][24:], tulos)
#     # print(a)
#     # if tulos != False:
#     #     draw(HOURS, data[n], HOURS[24:], data[n][24:], HOURS[24:], new_points(data[n][0:12], data[n][0], data[n][23]))
#     return a




# setup(56)

n = int(input())
# a = "2.6 2.5 2.3 2.2 2.1 2.1 1.8 1.5 1.2 1.1 1.2 1.1 1 1.3 1.5 1.3 1 1.1 1 0.9 1 0.7 1.1 1.5"
takas = []
lista = []
for i in range(n):
    lista.append([float(x) for x in input().split()])
for i in lista:
    tulos = [str(x) for x in new_points(i, i[0], i[-1])]
    takas.append(" ".join(tulos))
for i in takas:
    print(i)
    
    
# tulos = (0, 0, 0)
# for i in range(2000):
#     tulos = tuple(map(lambda i, j: i + j, tulos, setup(i)))
# print(tulos)
# print(data)

Test details

Test 1

Verdict: ACCEPTED

input
1000
-0.4 -0.1 -0.2 -0.3 -0.4 -0.5 ...

correct output
0.4 0.4 0.5 0.8 0.9 1.1 1.3 1....

user output
0.20000000000000007 0.50000000...
Truncated

Test 2

Verdict: ACCEPTED

input
1000
2.9 2.9 2.9 2.1 2.6 2 2 2.2 2....

correct output
2.3 1.6 1.5 1.1 1 0.7 0.6 0.8 ...

user output
2.6 2.6 2.6 1.8000000000000003...
Truncated

Test 3

Verdict: ACCEPTED

input
1000
6.6 6 6.4 6 4.6 4.6 4.2 4.3 4....

correct output
10 10.9 10.3 10.1 9.1 7.3 5.7 ...

user output
10.1 9.5 9.9 9.5 8.1 ? ? ? ? ?...
Truncated

Test 4

Verdict: ACCEPTED

input
1000
19.4 20.2 19.1 18.9 18.3 17.3 ...

correct output
18 18.2 17 17.5 17.2 16.2 12 8...

user output
17.2 18.0 16.900000000000002 1...
Truncated

Test 5

Verdict: ACCEPTED

input
1000
-5.7 -5.8 -5.8 -5.9 -7.1 -6.9 ...

correct output
-4.2 -4.1 -4 -3.8 -3.5 -3.2 -3...

user output
-4.5 -4.6 -4.6 -4.7 -5.8999999...
Truncated

Test 6

Verdict: ACCEPTED

input
1000
14.8 14.8 15.4 12.9 11.8 9.7 9...

correct output
11.8 11 11.6 10.8 10.4 10.4 10...

user output
12.6 12.6 13.2 10.7 9.6 ? ? ? ...
Truncated

Test 7

Verdict: ACCEPTED

input
1000
0.7 1 2 1.4 0.6 -0.4 -0.9 -0.7...

correct output
-1.3 -0.5 -0.6 -1 -3.2 -7.2 -6...

user output
-1.8 -1.5 -0.5 -1.1 -1.9 ? ? ?...
Truncated

Test 8

Verdict: ACCEPTED

input
1000
15.1 15.3 14.9 14.4 14.4 13.7 ...

correct output
15.6 15.9 16 15.2 14.6 14.4 13...

user output
15.0 15.200000000000001 14.8 1...
Truncated