Skip to content

Instantly share code, notes, and snippets.

class Singleton {
class var sharedInstance : Singleton {
struct Static {
static let instance : Singleton = Singleton()
}
return Static.instance
}
}
protocol Token {}
struct T_KWD: Token { let s: String }
struct T_ERR: Token {}
var lex_rules: [String : (String) -> Token] = ["keyword" : { T_KWD(s: $0) }]
func tokeniser(t: [(String, String)]) -> [Token]{
return t.map { lex_rules[$0.0]?($0.1) ?? T_ERR() }
}
protocol Token {}
struct T_KWD: Token { let s: String }
struct T_ERR: Token {}
var lex_rules: [String : (String) -> Token] = ["keyword" : { (s: String) -> Token in T_KWD(s: s) }]
func tokeniser(t: [(String, String)]) -> [Token]{
return t.map { lex_rules[$0.0]?($0.1) ?? T_ERR() }
}
class Parser<I: CollectionType, T> {
func parse(ts: I) -> [(T, I)] { return [] }
func parse_all(ts: I) -> [(T, I)] {
return parse(ts).filter { isEmpty($0.1) }
}
}
class charParser<I, T>: Parser<String, Character> {
let c: Character
class CharParser {
let c: Character
init(c: Character) { self.c = c }
func CharParser(ts: String) -> [(Character, String)] {
return ts.c == c ? [(ts[0], ts.s)] : []
}
}

#Survival Game - Create your Battle Crab

The Board is a two dimensional array of cells. Cells are populated by Animals. Every day, all Animals on the Board simultaneously make one move. If two or more Animals move to the same cell, they fight until one remains. The possible moves and attacks are as follows:

  • Moves - { Move.UP, Move.RIGHT, Move.DOWN, Move.LEFT, Move.HOLD }
  • Attacks - { Attack.ROCK, Attack.PAPER, Attack.SCISSORS, Attack.SUICIDE }

Animals fight by playing Rock-Paper-Scissors. Standard rules apply but with two modifications. First, you may commit suicide at any time. Second, a tie is broken pseudorandomly. If more than two Animals collide, two are pseudorandomly selected to fight until one remains.

#The Players

extension String {
subscript(index: Int) -> Character {
return self[advance(self.startIndex, index)]
}
subscript(range: Range<Int>) -> String {
let start = advance(self.startIndex, range.startIndex)
let end = advance(self.startIndex, range.endIndex)
return self[start..<end]
}
class Parser<I: CollectionType, T> {
func parse(ts: I) -> [(T, I)] { return [] }
func parse_all(ts: I) -> [(T, I)] {
return parse(ts).filter { isEmpty($0.1) }
}
}
class CharParser<I: CollectionType, T> : Parser<String, Character> {
let c: Character
//
// Rexp.swift
// Regex
//
// Created by Hani on 01/10/2014.
// Copyright (c) 2014 Hani. All rights reserved.
//
protocol Rexp {}
require 'openssl'
def miller_rabin_prime?(n,g)
d = n - 1
s = 0
while d % 2 == 0
d /= 2
s += 1
end
g.times do
a = 97