Skip to content

Instantly share code, notes, and snippets.

@zetashift
zetashift / growth_of_population.nim
Created February 25, 2018 05:24
Growth of Population
proc nbYear*(p0: int, percent: float64, aug: int, p: int): int =
var count = 0
var pop = p0
while pop != p:
count = count + 1
pop = pop + p0 * (percent / 100.float).int + aug
return count
echo(nbYear(1000, 5, 50, 2000))
@zetashift
zetashift / base62.nim
Created February 25, 2018 06:06
DailyProgrammer #352 [EASY]
const
alphabet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "
proc base62(input: int): string =
result = ""
var q = input
while q != 0:
var i = q mod 62
q = q div 62
result = result & alphabet[i]
@zetashift
zetashift / challenge_1.nim
Created March 28, 2018 19:58
Cryptopals set 1 ch 1
import base64, strutils
let
input = """49276d206b696c6c696e6720796f757220627261696e206c696b65206120706f69736f6e6f7573206d757368726f6f6d"""
expected = "SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t"
assert expected == encode(parseHexStr(strIn))
@zetashift
zetashift / dailyprogrammer364.scala
Created July 31, 2018 18:42
Daily Programmer #364 [Easy]
def rollDice(n: String): String = {
val input = n.split("d")
val numberOfRolls = input(0).toInt
val numberOfSides = input(1).toInt
var r = scala.util.Random
var rolls = scala.collection.mutable.ArrayBuffer[Int]()
var result = 0
for (n <- (1 to numberOfRolls)) {
val currentRoll = r.nextInt(numberOfSides + 1)
rolls += currentRoll
@zetashift
zetashift / wabbits.nim
Last active August 7, 2018 03:29
Mortal Fibonacci Rabbits
import strutils
import math
const
input = "95 17".split(" ")
n = input[0].parseInt
m = input[1].parseInt
proc mortalRabbits(n: int, m: int): uint64 =
@zetashift
zetashift / simple_godot.nim
Created August 13, 2018 00:30
Simple Nim godot example
# taken from: https://github.com/pragmagic/godot-nim/issues/17#issuecomment-399192271
import godot, node, input
gdobj MyNode of Node:
method init*() =
addUserSignal("my_signal") # Declare on init. If need to connect this signal to other nodes, should be done in code
method ready*() =
connect("my_signal", self, "_on_my_signal_emitted")
@zetashift
zetashift / essential_scala_classes.scala
Created September 12, 2018 00:34
Classes in Scala example #1
class Director(val firstName: String, val lastName: String, val yearOfBirth: Int) {
def name(): String = firstName + " " + lastName
}
class Film(val name: String, val yearOfRelease: Int, val imdbRating: Double, val director: Director) {
def directorsAge(): Int = this.yearOfRelease - director.yearOfBirth
def isDirectedBy(d: Director) = if (d.name == this.director.name) true else false
def copy(name: String = this.name, yearOfRelease: Int = this.yearOfRelease, imdbRating: Double = this.imdbRating, director: Director = this.director): Film = {
new Film(name, yearOfRelease, imdbRating, director)
}
@zetashift
zetashift / rosalind_prot1.scala
Created November 4, 2018 19:15
Solution to: Translating RNA into Protein from rosalind
object Translator {
def translate(rna: String) = {
val splittedRna = rna.grouped(3).toList
println(splittedRna)
for (codon <- splittedRna) {
codon match {
case "AUG" => print("M")
case "GCC" | "GCG" | "GCU" | "GCA" => print("A")
@zetashift
zetashift / motif_finder.scala
Created November 5, 2018 13:55
Solution to rosalind exercise 'Motif Finder'
object MotifFinder {
def find(text: String, motif: String) = {
var result = Seq[Int]()
for (i <- 0 until text.length - motif.length) {
var aheadSS = text.slice(i, i + motif.length)
if (aheadSS == motif) {
result = result :+ (i + 1)
}
}
@zetashift
zetashift / toy_robot.ex
Created November 26, 2018 02:11
ToyRobot - A snipper
defmodule ToyRobot do
@directions [:north, :east, :south, :west]
@directions_to_the_right %{north: :east, east: :south, south: :west, west: :north}
@directions_to_the_left Enum.map(@directions_to_the_right, fn {from, to} -> {to, from} end)
@table_top_x 4
@table_top_y 4
def place do
{:ok, %ToyRobot.Position{}}