Swiftを使って、素数かどうか表示するiPhoneアプリのサンプルコードを描いてみます。
import UIKit
import SpriteKit
class ViewController: UIViewController {
class PrimeScene: SKScene {
var count = 0
override func didMoveToView(view: SKView) {
self.createBlock()
}
func createBlock() -> Bool {
var numberNode = SKLabelNode.node()
numberNode.name = “number”
numberNode.text = “\(++count)“
numberNode.fontSize = 100
numberNode.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame))
self.addChild(numberNode)
return isPrimary(count)
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
self.childNodeWithName(“number”)?.removeFromParent()
if self.createBlock() {
var label = SKLabelNode.node()
label.text = “primary number!”
var hue = CGFloat((count % 10) * 0.2)
label.fontColor = SKColor(hue:hue, saturation:0.8, brightness: 0.8, alpha: 1)
label.fontSize = 30
label.fontName = “Helvetica Neue Bold”
self.addChild(label)
label.runAction(SKAction.sequence([SKAction.moveTo(CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame)), duration: 0.5), SKAction.waitForDuration(0.5)]), completion: {label.removeFromParent()})
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
var sv = SKView(frame: self.view.bounds)
self.view.addSubview(sv)
var scene = PrimeScene(size: sv.frame.size)
sv.presentScene(scene)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
func isPrimary(n : Int) -> Bool
{
if n <= 3 {
return n > 1
}
if n % 2 == 0 || n % 3 == 0 {
return false
}
for var i=5 ; i<sqrt(n); i+=6 {
if n % i == 0 || n % (n+2) == 0 {
return false
}
}
return true;
}
// number operators (T_T)
func * (l : Int, r : Float) -> Float {
return Float(l) * Float(r)
}
func < (l : Int, r : Float) -> Bool {
return Float(l) < Float(r)
}
func sqrt (n : Int) -> Float {
return sqrt(Float(n))
}