24
Jun 08

Challenge: Delphi’s Windows

:: challenges :: by Gilberto Saraiva

Camaradas,

Ola e boa sorte!

O desafio das Janelas do Delphi

Linguagem/Tema

Delphi

Nível

Intermediário

Regra(s)
  • A aplicação demo deve ser do tipo Console e ser toda escrita no dpr.
  • Você podera fazer uso das sequintes Units: SysUtils e Windows
  • OBS: qualquer coisa enviada desrespeitando as regras, não irei nem responder

    O Problema

    Em um teste de emprego para programador Delphi, você se depara com a seguinte solicitação:

    O teste consiste na criação de uma classe no padrão abaixo:

  • A classe: TWinBase = class(TObject)
  • A TWinBase deve criar uma janela do tipo ToolWindow na criação de um objeto dessa classe.
  • O Handle da janela criada deve ter escopo público, provido por uma propriedade ( property Handle: HWND …. )
  • Uma função na classe receberá os eventos da janela criada, esse procedimento deve ser virtual e de escopo público
  • A classe deve poder ser criada quantas vezes forem necessárias
  • Objetivo(s)

    Escrever a classe e todas as funções necessárias para que seu teste seja bem sucedido e você consiga ser aceito como funcionário.

    Referência(s)

    Base estrutural da TWinBase:

     Delphi |  copy code |? 
    01
    02
    type
    03
      TWinBase = class(TObject)
    04
      private
    05
        FHandle: HWND;
    06
      public
    07
        constructor Create;
    08
        destructor Destroy; override;
    09
        property Handle: HWND read FHandle write FHandle;
    10
        function WndProc(AHandle: HWND; AMsgCode: UINT; AWParam: WPARAM;
    11
          ALParam: LPARAM): Longint; virtual; stdcall;
    12
      end;
    13

    Windows APIs:

     Delphi |  copy code |? 
    01
    02
    function GetClassInfo(hInstance: HINST; lpClassName: PChar;
    03
      var lpWndClass: TWndClass): BOOL; stdcall;
    04
     
    05
    function RegisterClass(const lpWndClass: TWndClass): ATOM; stdcall;
    06
     
    07
    function UnregisterClass(lpClassName: PChar; hInstance: HINST): BOOL; stdcall;
    08
     
    09
    function CreateWindowEx(dwExStyle: DWORD; lpClassName: PChar;
    10
      lpWindowName: PChar; dwStyle: DWORD; X, Y, nWidth, nHeight: Integer;
    11
      hWndParent: HWND; hMenu: HMENU; hInstance: HINST; lpParam: Pointer): HWND;
    12
     
    13
    function DefWindowProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
    14

    Esse desafio se destina a todos que conhecem a linguagem Delphi e tem bom entendimento sobre as APIs de manipulação de Janelas.

    As dúvidas e questionamentos podem ser postados aqui!
    O primeiro que acertar, vou entrar em contato e disponibilizar um espaço aqui para que ele demonstre como fez.

    Abraços.



    24
    Jun 08

    Challenge: Compass Rose

    :: challenges :: by Gilberto Saraiva

    Camaradas,

    Mais um desafio pro pessoal.

    O desafio da Rosa-dos-ventos

    Linguagem/Tema

    Qualquer uma. O importante e a resposta certa com a formatação certa.

    Nível

    Extremo

    Regra(s)
  • Não há regras
  • O Problema

    Diante de uma rosa-dos-ventos um grande pensador criou um pequeno poema, mas esse poema não é comum, ele esta encriptado por uma fórmula constante encima do tema. O autor só se preocupou em informar no final do texto uma pequena dica.

     plain |  copy code |? 
    01
    02
    mMdtëAriûPfwîDukáRiyñGbréDtkåVMhúxuvòHXsêüQhâOJzêçXoê
    
    03
    uúôIzuìBsiü gxïIzpçWriüPgwîDYpæWNdûPFaóIYpëàAVûõDaóèY
    
    04
    åVmcúOevíCtPàVlcafaqèXsmiQLcôiZqçXOeüQGbôIZqçXNeüñGxï
    
    05
    pçùNe÷ìBséäUláùNdöìBwnäYpbôIdaëBrsãTOføMDtëARiûTKaYpC
    
    06
    ARhMOFbbHYoåVQhúõJa\èCsêàQlcôyauìJsjüU jùNEuñ|enäULbô
    
    07
    uìBdiüPrwóEZpæáRiûñabóéYtëáRidõKfaòHxoå mcúOEvíHXoåVQ
    
    08
    ôJzòçXnüQgùulzñçXnL PgwïEuláSiüñG ïäUlhùJzòìBsjüQgxï
    
    09
    lâSje÷LcsêZqgsSjzòGbséZnæWRiûPFwî`UpæøIyñëBréûPfùóIH
    
    10
    WmszPføóoyoëA_hûOjaòHyoåVmhúOJvíCtjàRhyðFvmèTOføMCtër
    
    11
    ûOfrîDYkUVMdõKArèCTkIoMyðFWmãnSføMDtðARhûPCwós„oæWMhû
    
    12
    víãooåøQhúðFvíãXjàóHctêAswâTjaòpxoêAqlâSjzcLxoåX cõOE
    
    13
    ƒSnåVQgôJZqçCOjüELbïEVqìáWgsöLgùîDuecSidöPfwóHypæWmdö
    
    14
    aéYpéùNdyðFArèYP øMDtëBWmûPFaóIYpëWMdöPFwîD€oæøIyñFWn
    
    15
    etóIFpæWN,WLBsé PgùN[uñGWréûPgùNReìæWnäöKbôaZpçù]lûñG
    
    16
    äUlæôIzñçXnéüPgGîEuìáWnäöLbôéZpçáRizrdbrîDp~tNduìFwnä
    
    17
    bôIzpæ}niöPg…îDukæWNdñGBréZPNùNDuñGWnäUKbôIZpçWNe÷LGw
    
    18
    UláSIdöKFwîZ.gùNvuñëBräTLbùîouìæenéûKbôBDuëáWmdöKnaîD
    
    19
    áRidõKaríCToåVMcQJArèYOtøMDhðFVqrTKaóHYoëARhûOFvíDTfø
    
    20
    a^BRiûgGwîDUpæWNdöPFwóèOsæø‚hûKBrîãTkáøIyðæWm{ûPføîDy
    
    21
    WehúOjkíDtosVmcúOfvíCtjàRhyðFvmèCTjàQHxðqrhûO wòHYoåV
    
    22
    õtaríCTkàRHyaJAríCTjàQHyðFAqéúOføíCvëàRhmðJaòíCtêàQaõ
    
    23
    aòçXoå÷McxïAKlâTj sLcsêAqhúOZvòGxoå lcõNevíCXnäZPgùaE
    
    24
    BSjüQGbïEVlçSJzòHXoåZQgúOEvíCSjàQHxðJZqçXOe÷LCtêAQhúO
    
    25
    26
    Minha vida neste momento é a rosa com seus efeitos colaterais, guiando-me através dos seus cardeais.
    
    27
    Abaixo listo um número por direção:
    
    28
    142113242433124221414213144143124332242311421223322334112413123143311
    
    29

    Objetivo(s)

    Você deve enviar o poema assim que descobrir como faze-lo.

    Referência(s)

    Rosa dos Ventos

    1. E: Leste
    2. O: Oeste
    3. N: Norte
    4. S: Sul
    5. NE: Nordeste
    6. NO: Noroeste
    7. SE: Sudeste
    8. SO: Sudoeste
    9. ENE: Lés-nordeste
    10. ESE: Lés-sudeste
    11. SSE: Sul-sudeste
    12. NNE: Nor-nordeste
    13. NNO/NNW: Nor-noroeste
    14. SSO/SSW: Sul-sudoeste
    15. OSO/WSW: Oés-sudoeste
    16. ONO/WNW: Oés-noroeste

    Wiki: http://pt.wikipedia.org/wiki/Rosa-dos-ventos

    Esse desafio se destina a todos que possuem grande entendimento em lógica e criação de algoritmos específicos.

    As dúvidas e questionamentos podem ser postados aqui!
    O primeiro que acertar, vou entrar em contato e disponibilizar um espaço aqui para que ele demonstre como fez.

    Abraços.



    21
    Jun 08

    Challenge: Alien Numbers

    :: challenges :: by Gilberto Saraiva

    Camaradas,

    Esse desafio é baseado no desafio do Google CodeJam
    que estou participando (você também pode participar).

    O desafio dos Números Alienígenas

    Linguagem/Tema

    Qualquer uma. O importante e a resposta certa com a formatação certa.

    Nível

    Difícil

    Regras
  • Não há regras
  • O Problema

    Nós, seres humanos, temos um sistema numérico que possuí 10 digitos: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Imagine você se deparando com um pedido oficial do governo, de suma importância, dizendo que receberam várias mensagens alienígenas encadeadas e que é preciso que alguém decodifique-as. Perante uma análise prévia dos técnicos da inteligência, algumas conclusões foram feitas:

  • As mensagens estão serapadas por linha
  • Cada mensagem indicará 2 número, o sistema numérico base
    número_alienigina_1 número_alienigina_2 sistema_numérico_base
  • Cada sistema numérico alienigina pode possuir letras de A até Z, números de 0 a 9, e os caracteres !”#$%&’()*+,-./:;<=>?@[\]^_`{|}~, todos distintos entre si
  • O primeiro número indicará uma uma letra do nosso alfabeto
  • O segundo número indicará a ordem da letra
  • Baixe aqui a lista de Mensagens:
    Mensagens alienígenas

    Objetivo

    Assim que você decodificar cada mensagem, coloque-as em ordem e nos envie, aqui mesmo.

    Exemplo

    Para facilitar a decodificação criei um pequeno exemplo, em um sistema numérico alienígena:

     plain |  copy code |? 
    1
    2X5JyQn0f*%YB~h9
    
    2
    2
    
    3
    9
    
    4
    Xh
    
    5
    5~

    1º linha: indica o sistema numérico alienigina.
    2º linha: o número zero no sistema alienigina.
    3º linha: o número 15.
    4º linha: o número 30.
    5º linha: o número 45.

    Esse desafio se destina a todos que possuem grande entendimento em lógica e criação de algoritmos específicos.

    As dúvidas e questionamentos podem ser postados aqui!
    O primeiro que acertar, vou entrar em contato e disponibilizar um espaço aqui para que ele demonstre como fez.

    Abraços.

    O Vencedor do Desafio foi:
    Pierre Henrique Lehnen, Igrejinha/RS
    http://www.phenrique.com.br

    Resposta do e-mail:

  • Gostaria de declarar algumas palavras sobre como solucionou o desafio?
    Não tenho muito o que falar, se imaginar cada símbolo como sendo um número e considerar que estão em ordem, basta converter o número da base informada para base decimal, substituindo o símbolo pelos nossos números tradicionais.
    Como o segundo número de cada linha (correspondente à ordem) já estava ordenado (apesar de decrescente), não me preocupei em criar uma rotina para ordenar conforme. Tendo todos os números traduzidos, bastou obter o digíto ascii equivalente e a sentença foi revelada.
  • Quais linguagens usou?
    Usei Delphi 7 .
  • O desafio realmente tem nível difícil ao seu ver?
    Sinceramente, não. Não levei mais do que alguns minutos para concluir, sem nem precisar esquentar a cabeça. :)
  • Você participa do CodeJam?
    Não.
    Confesso que nem sei muito sobre o CodeJam, vou dar uma pesquisada sobre ele e se não for algo que me tome muito tempo, pode ser que eu participe.
  • OBS: Não vou publicar a resposta, se você acha que acertou pode postar a resposta aqui, eu entro em contato e lhe informo se acertou.



    12
    Jun 08

    Challenge: Tableless

    :: challenges :: by Gilberto Saraiva

    Folks,

    Today I start a new piece of my site, The Challenges area, where I’ll post some challenges for all you.
    The first challenge will be related with tableless, and I’ll explain it now:

    The Tableless Challenge

    Language/Theme

    HTML and CSS

    Level

    Very Hard

    Rules
  • You can only modify the CSS and the HTML between __ TAG.
  • You must keep the _
    __

    _ on the code because the JavaScript routine need to still running.

  • Objective

    Your objective is restructure the code using only CSS and the tableless technique and keep the layout.
    All content must be aligned horizontally and vertically in the middle of the page.

    Base code

    Tableless.html

    And now, let’s work?
    Post here your code, if you right I’ll publish your info and your anwser.