Skip to content

Instantly share code, notes, and snippets.

@budanthara
Last active August 29, 2015 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save budanthara/b06e7a0b358b8d3afc41 to your computer and use it in GitHub Desktop.
Save budanthara/b06e7a0b358b8d3afc41 to your computer and use it in GitHub Desktop.
# 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