Skip to content

Instantly share code, notes, and snippets.

View jonatasemidio's full-sized avatar

Jonatas Emidio jonatasemidio

View GitHub Profile
@jonatasemidio
jonatasemidio / SpeakingTongues.groovy
Created April 22, 2015 20:17
Problem A. Speaking in Tongues
d=[:];n='';r=''
g = 'ejp mysljylc kd kxveddknmc re jsicpdrysi rbcpc\nypc rtcsra dkh wyfrepkym veddknkmkrkcd\nde kr kd eoya kw aej tysr re ujdr lkgc jvqz'
e = 'our language is impossible to understand there\nare twenty six factorial possibilities\nso it is okay if you want to just give upzq'
g.eachWithIndex{s,i->d+=["${s}":e[i]]}
def tc(def s){d.find{it.key==s}.value}
def tl(def l){l.each{n += tc(it)};return n}
g.split('\\n').eachWithIndex{s,i->r+="Case #${i+1}: ${tl(s)}\n"}
r
@jonatasemidio
jonatasemidio / Euclides.groovy
Created May 4, 2015 19:08
Exemplo Algoritimo de Euclides
def mdc(a, b) { return (b == 0) ? a : mdc (b, a%b) }
mdc 252, 105
@jonatasemidio
jonatasemidio / EuclidesEstendido.groovy
Created May 4, 2015 19:29
Algoritimo de Euclides Estendido
//def mdc(a, b) { return (b == 0) ? a : mdc (b, a%b) }
//mdc 252, 105
def mdcx(a, b){
def r=a; r1=b; u=1; v=0; u1=0; v1=1;
def rs, us, vs, q;
while ( r1 != 0 ) {
q = r/r1 as int
@jonatasemidio
jonatasemidio / switch.groovy
Created May 21, 2015 11:59
O poder do Switch do Groovy
def testSwitch(val) {
def result
switch (val) {
case ~/^Switch.*Groovy$/:
result = 'Pattern match'
break
case BigInteger:
result = 'Class isInstance'
break
case 60..90:
@jonatasemidio
jonatasemidio / grep.groovy
Last active August 29, 2015 14:21
Grep Method
//post sobre o código - http://mrhaki.blogspot.com.br/2009/08/groovy-goodness-grep-method.html
assert [true] == ['test', 12, 20, true].grep(Boolean), 'Class isInstance'
assert ['Groovy'] == ['test', 'Groovy', 'Java'].grep(~/^G.*/), 'Pattern match'
assert ['b', 'c'] == ['a', 'b', 'c', 'd'].grep(['b', 'c']), 'List contains'
assert [15, 16, 12] == [1, 15, 16, 30, 12].grep(12..18), 'Range contains'
assert [42.031] == [12.300, 109.20, 42.031, 42.032].grep(42.031), 'Object equals'
assert [100, 200] == [10, 20, 30, 50, 100, 200].grep({ it > 50 }), 'Closure boolean'
@jonatasemidio
jonatasemidio / BenchmarkTest.groovy
Created May 29, 2015 11:55
What is my mistake?
@Grab( 'com.googlecode.gbench:gbench:0.3.0-groovy-2.0' )
import gbench.*
def i = 0
new BenchmarkBuilder().run( measureCpuTime:true ) {
'TEST:' {
1000000.times{i?.toLong() ? i?.toLong() : null}
}
'TEST:' {
//Original: http://mrhaki.blogspot.com.br/search/label/Groovy%3AGoodness
//Português: http://santograils.org/2015/06/12/descubra-os-novos-metodos-do-groovy-para-ordenacao-e-remocao-de-duplicacoes/
@groovy.transform.Sortable
@groovy.transform.ToString
class User {
String username, email
}
def mrhaki1 = new User(username: 'mrhaki', email: 'mrhaki@localhost')
@jonatasemidio
jonatasemidio / caseConverter.groovy
Created June 25, 2015 11:40
snake_case to CamelCase Converter
//Veja o código em execução no groovy console: https://groovyconsole.appspot.com/script/5751247093104640
"user_name".split('_').collect{it[0].toUpperCase()+it.substring(1)}.join()
@jonatasemidio
jonatasemidio / lp.groovy
Created July 3, 2015 18:51
lingua do pe
/*
public class Losartana{
public String getNome(Integer numero){
return "${numero}º losartana de ";
}
}
Integer.metaClass.getMg{-> return "$delegate mg" }
Integer.metaClass.losartanas{ n -> return (1..delegate).collect{ new Losartana().getNome(it) + n }}
3.losartanas 5.mg
@jonatasemidio
jonatasemidio / Plutãones.txt
Last active August 29, 2015 14:24
Problema de lógica para Dojos nível básico para médio: Plutãones
Plutãones
Um grupo de pesquisadores descobriram que foi realizada uma missão secreta para plutão em busca de vida e que os astronautas enviaram uma mensagem codificada para a nasa em uma lingua que foi denominada plutãones.
Após algumas análises, foi identificado que esta codificação segue os seguintes padrões:
1 - Cada palavra é separada por "syllabe textus" ou "ST" (silaba textual - ou seja, a separação não é pelo som e sim pelas vogais, desconsiderando as acentuadas);
2 - após cada ST é adicionado o sufixo pl somado com a última letra do ST em questão;
3 - No caso da palavra terminar com uma consoante ela não sofre alteração.
4 - Em contradição com a regra 3, toda consoante de final de palavra é considerada uma ST se for a ultima da frase.