//: Playground - noun: a place where people can play import UIKit import PlaygroundSupport class ViewController: UIViewController { var aField = UITextField() var bField = UITextField() var cField = UITextField() var solsLabel = UILabel() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. makeFrames() solveEqn() } func makeFrames() { let eqnLabel = UILabel(frame: CGRect(x: 20, y: 20, width: 320, height: 25)) eqnLabel.text = " x^2 + x + = 0" aField = UITextField(frame: CGRect(x: 20, y: 20, width: 45, height: 30)) aField.addTarget(self, action: #selector(self.solveEqn), for: .editingChanged) aField.borderStyle = .roundedRect bField = UITextField(frame: CGRect(x: 110, y: 20, width: 45, height: 30)) bField.addTarget(self, action: #selector(self.solveEqn), for: .editingChanged) bField.borderStyle = .roundedRect cField = UITextField(frame: CGRect(x: 180, y: 20, width: 45, height: 30)) cField.addTarget(self, action: #selector(self.solveEqn), for: .editingChanged) cField.borderStyle = .roundedRect self.view.addSubview(eqnLabel) self.view.addSubview(aField) self.view.addSubview(bField) self.view.addSubview(cField) } @objc func solveEqn() { let a = (aField.text! as NSString).integerValue let b = (bField.text! as NSString).integerValue let c = (cField.text! as NSString).integerValue let A = 2*a let B = -b let C = outFromSqrt(d: b*b-4*a*c) let D = leaveInSqrt(d: b*b-4*a*c) let G = findGCD(A: A, B: B, C: C) solsLabel.removeFromSuperview() dispSolution(A: A/G, B: B/G, C: C/G, D: D) } func outFromSqrt(d: Int) -> Int { var i = d while i > 1 { if d%(i*i) == 0 { return i } i = i-1 } if i == 0 { return 0 } else { return 1 } } func leaveInSqrt(d: Int) -> Int { var i = d while i > 1 { if d%(i*i) == 0 { return d/(i*i) } i = i-1 } return d } func findGCD(A: Int, B: Int, C: Int) -> Int { var i = max(abs(A), abs(B), abs(C)) while i > 1 { if A%i == 0 && B%i == 0 && C%i == 0 { return i } i = i-1 } return 1 } func dispSolution(A: Int, B: Int, C: Int, D: Int) { solsLabel = UILabel(frame: CGRect(x: 20, y: 50, width: 320, height: 50)) if D == 0 { solsLabel.text = "x = " + String(B) + " / " + String(A) } else if C == 1 { solsLabel.text = "x = {" + String(B) + " ± √(" + String(D) + ")} / " + String(A) } else { solsLabel.text = "x = {" + String(B) + " ± " + String(C) + "√(" + String(D) + ")} / " + String(A) } self.view.addSubview(solsLabel) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } let viewController = ViewController() viewController.view.backgroundColor = UIColor.white PlaygroundPage.current.liveView = viewController PlaygroundPage.current.needsIndefiniteExecution = true