In [3]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import ast
from math import sqrt
In [4]:
f = open('dataset.txt').read().strip().split('\n')
In [5]:
dataset = [ast.literal_eval(x) for x in f]
In [6]:
dataset[0:2]
Out[6]:
[[(148, 13024.96),
  (236, 19034.88),
  (19, 1817.0),
  (202, 16665.88),
  (2, 414.12),
  (41, 3643.0),
  (67, 5801.0),
  (231, 19024.74),
  (219, 18785.34),
  (214, 16921.88),
  (207, 18117.84),
  (187, 15761.0),
  (136, 11528.0),
  (0, 240.0),
  (85, 7295.0),
  (6, 723.24),
  (223, 19498.96),
  (9, 927.78),
  (238, 19994.0),
  (177, 14931.0),
  (130, 11250.6),
  (69, 5967.0)],
 [(159, 10955.82),
  (16, 1136.8),
  (152, 10272.0),
  (121, 7867.2),
  (190, 13587.08),
  (155, 10473.0),
  (128, 9183.84),
  (191, 12627.3),
  (149, 10272.42),
  (215, 14493.0),
  (89, 6293.04),
  (101, 6855.0),
  (233, 15699.0),
  (228, 15364.0),
  (32, 2232.0),
  (33, 2299.0),
  (1, 155.0),
  (81, 5294.4),
  (247, 16969.74),
  (230, 15188.04),
  (120, 8128.0),
  (243, 15714.24)]]
In [7]:
# 0 in 25

data = dataset[0]
x,y = [], []

for d in data:
  x.append(d[0])
  y.append(d[1])
In [8]:
def smol_sqr(x,y):
  n = len(x)
  x_mean = sum(x)/len(x) # x with a dash
  y_mean = sum(y)/len(y) # y with a dash
  a_hat = [0,0]
  for i in range(n):
    sub_mean = x[i] - x_mean
    y_sub_mean = y[i] * sub_mean
    sub_mean_sqr = sub_mean**2
    a_hat[0] += y_sub_mean
    a_hat[1] += sub_mean_sqr
    #print('x: %d, y: %.2f, %.2f, %.2f, %.2f' % (x[i],y[i],sub_mean,y_sub_mean,sub_mean_sqr))
  
  a_hat = a_hat[0]/a_hat[1]
  b_hat = y_mean - x_mean * a_hat
  #print('a-hat: %.10f, b-hat: %.10f' % (a_hat, b_hat))
  return a_hat, b_hat
In [9]:
print(x,y)
smol_sqr(x,y)
[148, 236, 19, 202, 2, 41, 67, 231, 219, 214, 207, 187, 136, 0, 85, 6, 223, 9, 238, 177, 130, 69] [13024.96, 19034.88, 1817.0, 16665.88, 414.12, 3643.0, 5801.0, 19024.74, 18785.34, 16921.88, 18117.84, 15761.0, 11528.0, 240.0, 7295.0, 723.24, 19498.96, 927.78, 19994.0, 14931.0, 11250.6, 5967.0]
Out[9]:
(82.6079979389731, 284.766266621933)
In [13]:
f = open('dataset.txt').read().strip().split('\n')
dataset = [ast.literal_eval(x) for x in f]
In [14]:
for i in range(len(dataset)):  
  data = dataset[i]
  x,y = [], []
  for d in data:
    x.append(d[0])
    y.append(d[1])

  ret, _ = smol_sqr(x,y)
  print(chr(round(ret)), end='')
  #print(ret)
SCTF{Pr0gre55_In_R3gr3ss}