Baterias e grãos incluídos

25/09/2008

Batteries included

Certa vez, no provedor onde eu trabalhava, Diginet, uma das garotas do atendimento apareceu na sala de administração de redes com um ingresso para um show. Como éramos 6 na sala, e todos queriam o ingresso, tivemos que decidir quem ficaria com ele, ao melhor estilo “programador” de resolver as coisas: com código.

import random
concorrentes = ["acacio", "alemao", "humberto", "karlisson", "luis", "oliveira"]
random.choice(concorrentes)

E o ganhador foi Luís. Porém, não satisfeito com o resultado do código, Alemão, que programava em Perl, protestou: - “Não gostei não. Se fosse em Perl eu teria ganhado!”

Mantendo a retro-compatibilidade

47 alunos não foram à escola.

  1. Trovalds

    E se fosse em JAVA? Será que ia ter vencedor?

    PS: primeiro?

  2. felipe william

    segundoooo

    sempre venho aqui mas nunca comento….

    meus parabens adoro as suas tirinhas…

    boa noite..

  3. RicardO BrandaO

    Terceiro… quase segundo :P

    Sempre ótimas tiras…
    Mas se fosse eu que tivesse programado, eu teria ganhado!

    Continue assim
    Sucessos

  4. Renato Reis

    haueeuauaehuaehaeueaeu
    Se fosse em C eu ganharia. Ou não. XD

    Quarto, ou quinto, vai depender da sorte.

  5. André Gondim

    hehehe, é roleta russa hehe

    Abração!! ;)

  6. Lucas Castro

    auhaiheauhe
    alemão iria colocar um backdor no algoritmo dele para controlar o vencedor ;P

  7. Avatar Karlisson

    Obfuscando o código =P

  8. Lorrene

    Ouxi, aquela estória de primeiro dos comentários lá do Kid tá virando moda aqui?

    Eu gosto de python, meu esposo de perl e vivemos felizes (algumas rusgas mas nada demais).

  9. Isis

    Eu teria ido nos palitinhos.Se fosse em Assembly provavelmente eu teria ficado de fora do sorteio porque estaria escrevendo o código enquanto os outros estariam resolvendo o problema…

  10. M.K.

    Eu usaria o random.org. E não conheço python, então não entendi a tira.

  11. Luiz Carvalho

    “Não gostei não. Se fosse em Perl eu tinha ganhado!”
    KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK

    eu sou tenho tanto azar que se eu escrevesse o código

    puts “Luiz”

    ainda eu não ganhava XD
    _____
    =>&ƒÓá°§

  12. PotHix

    Æ!!

    Como li numa tirinha do Dilbert:

    “Esse é o problema dos randômicos…Você nunca sabe se são mesmo randômicos” =P

    Há braços

  13. Anderson

    Se eu tivesse programado eu teria ganhado!!! rsrsrs
    _____________________________

    import random
    concorrentes = ["anderson", "anderson", "anderson", "anderson", "anderson", "anderson"]
    random.choice(concorrentes)

    _____________________________

    Mto bom!!
    Ps.: Décimo terceiro! huahshuashu

  14. Roberto Bechtlufft

    Não sei se gostei mais do quadrinho ou da história que você contou…

    By the way… genial esse olhar do Bob Noob.

  15. Jonas

    Eu não sei se em outras linguagens outros ganhariam. Mas o código aí sempre dará o mesmo vencedor!

    Em praticamente todas as linguagens o random() é um gerador pseudo-aleatório. Se a semente (seed) é sempre a mesma, a primeira chamada sempre retorna o mesmo resultado. Concordam?

  16. Mauro Joel Schutz

    Muito legal a tirinha e a história, alguém ai quer ativar o modulo coffee? ou quem sabe um break-fast? hehe

    @Jonas: Realmente que eu me lembro, se você não iniciar a semente para gerar o número aleatório vai dar o mesmo número sempre, mas não conheço Python, pode ser que ele já faça isso… Na duvida eu testaria o programa antes!

    Até mais.

  17. Gevã

    Estou gostando muito dessa série do grande h4×0r.

    Uma vez na pós eu fiz um desses em Javascript para sortear ordem de apresentação do grupo.

    Em PHP o sorteio do ingresso seria assim:
    $a[array_rand($a = array("acacio", "alemao", "humberto", "karlisson", "luis", "oliveira"))]

    E em Javascript:
    var a = ["acacio", "alemao", "humberto", "karlisson", "luis", "oliveira"]
    a[Math.floor(Math.random()*a.length)]

  18. Kazuya-kun

    Você deveria ter feito assim:

    var quotes=new Array()
    quotes[0]=’karlisson’
    quotes[1]=’karlisson’
    quotes[2]=’karlisson’
    quotes[3]=’karlisson’
    quotes[4]=’karlisson’
    quotes[5]=’karlisson’
    var whichquote=Math.floor(Math.random()*(quotes.length))
    document.write(quotes[whichquote])

    !

  19. Humberto Diógenes

    huahuahua! Boa! O melhor é que eram duas senhas, e os dois random.choice() deram eu e Luís, exatamente os dois programadores Python da época…

    Essa aí tá devidamente documentada no nosso Wiki. Se você quiser, eu passo a página Causos toda. Dá uma boa série… :D

    Publicando uma que eu acabei de pescar:

    Luís ao telefone com Alexandre:
    - Ah, beleza, eu conserto agora! Pera que eu vou só reiniciar o Asterisk.
    [tu... tu... tu...]

  20. Avatar Karlisson

    Pelos exemplos dados em outras linguagens acima, pode-se ver que Python é mais simples e legível ;)

    @Jonas Não, esse comando não dá o mesmo resultado sempre.

  21. wille

    você programa em quais linguagens, karlisson?? qual a sua preferida atualmente?

  22. Avatar Karlisson

    @wille
    Não sou um expert em nenhuma delas, mas já programei/programo nessas: PHP, ASP, Javascript, Python, C, C++, Java, Actionscript, Shellscript, Scheme, SQL, (x)HTML e CSS. As preferidas são Python e Javascript.

  23. Isaque Alves

    Genial…
    Pra galera:
    Pouco importa a linguagem que você usa, desde que saiba como usar e quando usar algum recurso. Cada caso, é um caso e requer ações particulares… Por exemplo, em pascal… deixa pra lá :p

    Agora Python fascina e merece o ‘10′ sua clareza e ausência de redundância no código…

  24. Henrique

    Se fosse em PHP EU teria ganho :-)

    $concorrentes = array(”acacio”, “alemao”, “humberto”, “karlisson”, “luis”, “oliveira”);

    echo $concorrentes[rand(0,count($concorrentes)-1)]; //Henrique

    Hehe

  25. Rafiwskis

    No scilab (até a versão 3) retornava sempre o mesmo número, e o programa é de cálculo numérico :-P

  26. Vítor De Araújo

    #!/bin/bash
    concorrentes=(acacio alemao humberto karlisson luis oliveira)
    echo “${concorrentes[RANDOM%${#concorrentes[@]}]}”

    Mais clareza que isso, só em INTERCAL…

  27. Murilo Adriano

    Só pra brincar

    int main() {
    string conc[6] = {”acacio”, “alemao”, “humberto”, “karlisson”, “luis”, “oliveira”};
    vector concorrentes(conc, conc + 5);
    random_shuffle(concorrentes.begin(), concorrentes.end());

    cout << concorrentes[0];

    }

    e o felizardo coincidentemente foi o Luís :)

  28. Murilo Adriano

    int main() {
    string conc[6] = {”acacio”, “alemao”, “humberto”, “karlisson”, “luis”, “oliveira”};
    vector concorrentes(conc, conc + 5);
    random_shuffle(concorrentes.begin(), concorrentes.end());

    cout << concorrentes[0];

    }

    e o felizardo coincidentemente foi o Luís :)

    ( droga, os sinais de maior menor que circundam “string’ não são mostrados!!!
    preconceito com o C++. )

  29. Isis

    Groovy:

    nomes = [”acacio”, “alemao”, “humberto”, “karlisson”, “luis”, “oliveira”]
    R = new Random()
    print nomes[R.nextInt(nomes.size)]

    Jonas, o código não exibe sempre um mesmo ganhador.Isso acontece se você especificar uma seed constante quando cria o objeto Random. P/ tornar a escolha um pouco mais aleatória (se é que dá pra chamar assim num pc) posso fazer R = new Random(System.currentTimeMillis()+Runtime.runtime.freeMemory()).

  30. Marcius

    Caracaaaa, muito bom, como sempre, cada dia que passa. abc para todos.

  31. Guilherme Jedi

    Pq não em PHP!? Tu é contra PHP?! Nunca mais vou entrar no blog!! haeuaheoihu

    Brincadeira. haeihoaeiae

    Mais uma bela tirinha :D

  32. Dimitri Lameri

    Esta série está muito boa karlisson, parabens.

  33. Koro

    Se fosse feito em C++, os resultados já estariam prontos ante mesmo de você criar o código ¬¬”

    Será que esse lance de Random Numbers existe mesmo ou é coisa que botaram na sua cabeça? ?_?

  34. Kazuya-kun

    É coisa que botaram na sua cabeça

  35. Magno

    Cara alguem sabe quando sai o proximo quadrinho?

    eu não conssigo ficar + 1 minuto sem

    parabens pelo blog

  36. Jaque

    Sabe o que eu gosto daqui? É que mesmo quando eu não entendo o conceito da piada, eu ainda rio! Parabéns, seu blog é genial xD

  37. Phoenix

    Parabéns pelas idéias e conteúdo do Blog.

    []’s

  38. Troll

    Tá foda, tirinha nova que é bom nada.

  39. Nise

    Ahh, mas é mto ruim mexer no Explorer, coloquei o Opera hoje aki, e axo que foi uma das melhores coisas que eu fiz!

  40. Magno

    haushaushaushaus

    Troll é fo**

    explorer realmente é muito ruim

    alias MicroSoft é osso

    mudei pro linux a uns dias a mudança é muito grande realmente

    +velocidade
    -erros
    -virus
    e a interface é ótima

    Linux Rules o/

    quanto a quem prefere Explorer… cada um tem seu gosto uns preferem a carne e outros o osso xD(e fazer carinhas é Rox rapá)

  41. Eliezio

    Karlisson, faz em assembly que é melhor!!! “mais eficiente!”

    hiauhaiuha!
    próx ano qdo tú terminar, tú faz uma tirinha! hiuahaiuha!!!

    mto bom post… abração!

  42. Danillo Nunes

    Se fosse em Java, o show já teria terminado e vocês ainda estariam terminando a documentação das duas últimas classes do programa…

    BTW, gostei desse novo layout (se é que é novo mesmo, faz tempo que não entro aqui).

  43. GabrielCorpse

    Não sei qual o motivo de tanto alvoroço por causa do Python.
    Não vi a mínima graça nele, sou muito mais Ruby.
    :D

  44. Pedro Paulo

    Ahh mas em Javascript também ficaria legal :-D

    var concorrentes = new Array(”acacio”, “alemao”, “humberto”, “karlisson”, “luis”, “oliveira”);

    var O_Escolhido = parseInt(Math.random()*concorrentes.length);
    document.write(concorrentes[O_Escolhido]);

  45. Adriano ML

    Se fosse em brainfuck… bom, eu nem consseguiria fazer uahauhauha :P

  46. Gevã Schaefer

    Hoje consegui uma oportunidade de rodar o código do Vìtor de Araújo. Fui digitando na mão e depois de 3 erros muito loucos funfou! Shell Script é demais!

  47. Eduardo Colaço

    @Jonas
    Em python o random usa o “system time” como seed, ou o os.urandom() se disponível no sistema. =D

    http://docs.python.org/library/random.html

Mate aula você também!

Comentários ofensivos ou de conteúdo impróprio serão enviados para /dev/null.