Mostrando postagens com marcador String. Mostrar todas as postagens
Mostrando postagens com marcador String. Mostrar todas as postagens

sexta-feira, 4 de abril de 2014

Problema 22 - Pontuação de nomes

Temos uma lista de nomes num arquivo e a missão de calcular uma pontuação para cada nome, da seguinte maneira:

  1. Colocar a lista em ordem alfabética;
  2. Dar um valor ao nome somando-se as posições de seus caracteres (A = 1, B = 2 etc);
  3. Finalmente, a pontuação do nome será esse valor multiplicado por sua posição na ordem alfabética.
Pede-se para calcular a soma disso tudo.

A variável global LETTERS contém justamente "A", "B", ..., "Z". Isso facilita muito o processo. Usando a biblioteca stringr fica fácil fazer as manipulações de string necessárias.

Não tem segredo. That's it.

segunda-feira, 31 de março de 2014

Problema 18 - Caminho com soma máxima I

Eis aí um problema interessantíssimo. Leia a descrição. É melhor. :o)

Meu método não foi usar força-bruta. Utilizei, ao contrário, uma abordagem de ir gerando a solução para o menor triângulo (começando da extremidade superior) e, então, ir aumentando até atingir o triângulo completo. Primeiro, salvar o triângulo num arquivo de texto. Depois, agi da seguinte maneira a cada linha do triângulo (tente visualizar olhando para o mesmo):
  • Os elementos extremos da esquerda e da direita recebem, respectivamente, o seu próprio valor somado ao extremo correspondente da linha anterior.
  • Os outros elementos, os que não são extremos, recebem o seu próprio valor somado ao maior elemento da linha anterior imetidamente à sua esquerda ou direita.
  • No final, na última linha, o maior elemento desta será a resposta pedida na descrição do problema.

Engenhoso e eficiente. Tanto que também resolvi o Problema 67 com exatamente o mesmo método, sem tirar nem pôr, em pouco mais que um piscar de olhos. Se fosse usar força bruta, o Problema 67 levaria mais que uma eternidade.

domingo, 30 de março de 2014

Problema 17 - Contagem do número de letras

Este problema pede para contar quantas letras usamos se formos escrever todos os números inteiros de 1 a 1000 por extenso, em inglês (britânico). Pede para ignorarmos espaços e hífens (42 é "forty-two") mas para considerarmos "and" (142 é "one hundred and forty-two").

Achei este problema, pessoalmente, um tanto sem graça, embora haja necessidade de certo raciocínio lógico. Gerei manualmente, em vetores, os nomes dos números de 1 a 19 e as dezenas de 20 a 90, daí fui gerando os nomes dos números de 1 a 1000 por concatenação adequada de strings. Ao final, apaguei todos os espaços (os hífens eu nem me preocupei em gerar...) e contei caracteres.

Cabe a observação de que R é uma linguagem um tanto chata para se manipular strings, embora isso possa ser feito de maneira bem precisa (até demais para o meu gosto).

terça-feira, 25 de março de 2014

Problema 13 - Grande soma

Pede-se para calcular os 10 primeiros dígitos da soma de uma lista de 100 números com 50 algarismos cada.

Meu método: primeiro transformar num vetor de strings, depois extrair apenas os 11 primeiros dígitos de cada número (os dígitos além do 12º não farão diferença no resultado), então somar tudo e extrair os 10 primeiros dígitos do resultado convertido para string.

Quick and dirty.

PS: hoje é meu aniversário. Parabéns pra mim! :o)

quarta-feira, 19 de março de 2014

Problema 8 - Maior produto numa série

É-nos dado um número com 1000 dígitos. Pede-se para calcular o maior produto de 5 dígitos consecutivos deste número.

Bem, eu transformei em string e fui "passeando" por ela... Easy.