Last active
August 29, 2015 14:27
-
-
Save budanthara/b06e7a0b358b8d3afc41 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# IDSECCONF2015 - IMFTest ( Misc 250pts ) | |
# Solver by snoww0lf - Noobs1337 | |
import socket | |
import re | |
import sys | |
import numpy as np | |
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | |
s.connect(('128.199.218.190', 17845)) | |
def intstr(x): | |
return str(int(round(x))) | |
def recv_until(st): | |
ret = "" | |
while st not in ret: | |
ret += s.recv(1) | |
return ret | |
def perkalian(toint): | |
result = toint[0] * toint[1] | |
s.send(bytes(result)+"\r\n") | |
return result | |
def turunan(x, toint): | |
print "X = ", x | |
N = toint[0] | |
M = toint[1] | |
print "N = ", N, "M = ", M | |
solve = (M*N) * x**(M-1) | |
print "Solve ", solve | |
return solve | |
def persamaan_linear(data): | |
a = np.array([[data[0], data[1]], [data[3], data[4]]]) | |
b = np.array([data[2], data[5]]) | |
x = np.linalg.solve(a, b) | |
res = np.allclose(np.dot(a, x), b) | |
print res | |
print "Result x", x[0] | |
print "Result y", x[1] | |
s.send(intstr(x[0])) | |
recv_until(":") | |
s.send(intstr(x[1])) | |
recv_until(':') | |
print recv_until('\n') | |
while(True): | |
numbers = recv_until(":") | |
if "Selamat" in numbers: | |
print numbers | |
break | |
numbers = recv_until("\n") | |
print "SOAL", numbers | |
get_number = re.findall(r'-?\d*\.{0,1}\d+', numbers) | |
toint = map(int, get_number) | |
print toint | |
print numbers | |
perkalian(toint) | |
while(True): | |
numbers = recv_until("\n") | |
print numbers | |
if "Jenius" in numbers: | |
break | |
numbers = recv_until("x:") | |
print "SOAL", numbers | |
get_number = re.findall(r'-?\d*\.{0,1}\d+', numbers) | |
toint = map(int, get_number) | |
print numbers | |
print persamaan_linear(toint) | |
recv_until("\n") | |
while(True): | |
numbers = recv_until(":") | |
print "SOAL", numbers | |
if "sesuatu" in numbers: | |
break | |
get_number1 = re.findall(r'-?\d*\.{0,1}\d+', numbers) | |
numbers = recv_until("(x):") | |
print numbers | |
nn = numbers.split("+") | |
x = int(get_number1[1]) | |
total = 0 | |
for num in nn: | |
print ">> ", num | |
get_number2 = re.findall(r'-?\d*\.{0,1}\d+', num) | |
print get_number2 | |
if len(get_number2) < 2: | |
total += 0 | |
else: | |
m = map(int, get_number2) | |
total += turunan(x, m) | |
print total | |
s.send(intstr(total)) | |
print s.recv(8192) | |
s.close() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment