Skip to content

Instantly share code, notes, and snippets.

View jonatasemidio's full-sized avatar

Jonatas Emidio jonatasemidio

View GitHub Profile
@jonatasemidio
jonatasemidio / Qs.groovy
Created May 8, 2013 13:28
QuickSort in aGroovy way!
//Estes exemplos podem ser encontrado na wikipedia: http://pt.wikipedia.org/wiki/Quicksort#Groovy
//Execute no web groovy console: http://groovyconsole.appspot.com/script/968001
def sort(list) {
if (list.isEmpty()) return list
anItem = list[0]
def smallerItems = list.findAll{it < anItem}
def equalItems = list.findAll{it == anItem}
def largerItems = list.findAll{it > anItem}
sort(smallerItems) + equalItems + sort(largerItems)
}
@jonatasemidio
jonatasemidio / CSV.groovy
Last active December 17, 2015 00:59
Criando um arquivo csv
// font: http://www.groovyexamples.org/2010/06/21/create-a-csv-file/
//For this example, let’s assume we have an array of maps as our data.
def planets = [
[id:'1',color:'red',planet:'mars',description:'Mars, the "red" planet'],
[id:'2',color:'green',planet:'neptune',description:'Neptune, the "green" planet'],
[id:'3',color:'blue',planet:'earth',description:'Earth, the "blue" planet'],
]
//Next, we can create our CSV file as follows:
@jonatasemidio
jonatasemidio / CalculaNumerosPrimos.groovy
Created April 26, 2013 18:00
Calculo de números primos.
def t = 1..100
def v = []
t.each { n ->
(2..n).each { d ->
if (n % d == 0 && n != d)
v.add(n)
}
}
@jonatasemidio
jonatasemidio / CalculaTempoDivisao.groovy
Created April 26, 2013 17:44
Desempenho em calculos matemáticos com groovy. Resultado do Calculo: http://groovyconsole.appspot.com/script/953001
//Ainda não sei em detalhes o motivio, mas por acaso percebi que tenho uma
//resposta mais rápida quando executo operações matemáticas utilizando os métodos fornecidos pelo Number em questão
def start1 = System.nanoTime()
100.times{ 150.div(3) }
def stop1 = System.nanoTime()
println "150.div(3) : "+stop1 - start1
def start2 = System.nanoTime()
100.times{ 150/3 }
@jonatasemidio
jonatasemidio / MemoizeSample.groovy
Last active December 16, 2015 15:59
"Transformando métodos complexos em closures": Exemplos de como utilizar o reference.& do groovy. Recurso que recupera a lógica de um método é transforma-o em uma closure para utilização do memoize().
//Problema: Quando temos um loop e dentro dele temos uma determinada
//lógica que precisará ser executada em todas as iterações;
(1..10).each{println "este numero é ${it+5*(10-1)}"}
//Solução: Podemos otimizar nosso código inserindo nossa lógica dentro
//de uma closure, onde ao final desta chamamos o método memoize().
c = {println "este numero é ${it+5*(10-1)}"}.memoize()
//Por fim, chamamos esta closure de dentro do loop para que apenas a primeira
//interação seja 100% processada, pois nas próximas a parte repetida desta
@jonatasemidio
jonatasemidio / JsonToHTML.groovy
Last active November 3, 2015 17:19
Gerador de HTML apartir do JSON
m = [name: 'nome do cara']
s = "{name:'jonatas', idade: 10}".replace("'", "")
s = s.replace('{', '').replace('}', '')
println s.split(', ').each{
name = it.split(':')[0]
value = it.split(':')[1]
@jonatasemidio
jonatasemidio / AssertsSample.groovy
Created October 24, 2012 19:32
FizzBuzz para Dojo Groovy! Caso fuja da memoria...
//Segue outros asserts que tambem podem ser utilizados nos testes unitarios do groovy.
void assertArrayEquals(Object[]expected, Object[] value) //Compares the contents and length of each array void assertLength(int length, char[] array) Convenience method for asserting the length of an array
void assertLength(int length,int[] array) //Convenience method for asserting the length of an array
void assertLength(int length,Object[] array) //Convenience method for asserting the length of an array
void assertContains(char expected,char[] array) //Verifies that a given array of chars contains an expected value
@jonatasemidio
jonatasemidio / fizzbuzz.groovy
Created August 23, 2012 17:20
Implementação do FizzBuzz rápida!
// Implementação rápida! : Veja também a implementação semântica - https://gist.github.com/3438630
fizzbuzz = {it%3==0 & it%5==0 ? 'fizzbuzz' : it%3 == 0 ? 'fizz' : it%5==0 ? 'buzz' : 'Without fizzbuzz!'}
@jonatasemidio
jonatasemidio / fizzbuzz.groovy
Created August 23, 2012 16:50
Implementação do FizzBuzz Semântico!!
//Implementação do FizzBuzz semântico: Veja também a implementação rápida - https://gist.github.com/3438973
seMultiploDeCinco = {it%5==0}; seMultiploDeTres = {it%3==0}
fizzbuzz = {seMultiploDeTres (it) & seMultiploDeCinco (it) ? 'fizzbuzz':
seMultiploDeTres (it) ? 'fizz':
seMultiploDeCinco (it) ? 'buzz':
'Without fizzbuzz!'}
@jonatasemidio
jonatasemidio / divide.py
Created August 14, 2012 14:47
Implementação da divisão sem divisão
#Eu sei que codigo ta porquinho, mas foi so para matar a curiosidade! rsrs
def d():
do = int(raw_input('informe o dividendo: '))
dr = int(raw_input('informe o divisor: '))
m = do*dr
l = []
while(m > 0):
l.append(m)
m -= dr
c = 0