terça-feira, 2 de setembro de 2008
SCJP - Job Tips
with the default value. Your code will be easier to read; programmers who
have to maintain your code (after you win the lottery and move to Tahiti) will
be grateful.
Source: SUN CERTIFIED PROGRAMMER FOR JAVA 5.0
quinta-feira, 14 de agosto de 2008
"Cara" do meu "gerador" de cpf
DV do CPF(cadastro de pessoa física)
Nessa e nas próximas duas lições, veremos o uso do VBA para solucionar um exemplo prático. Vamos criar uma função personalizada, chamada ValidaCPF. Em seguida usaremos essa função para fazer o cálculo do DV de um conjunto de CPFs:
Importante: O algoritmo de cálculo do DV de CPFs e CNPJs é de domínio público, já tendo sido publicado no diário oficial da união e em diversas revistas de informática, de circulação nacional.
Nessa lição explicarei como funciona o cálculo do DV do CPF.
Como calcular o DV do CPF
Para entender o algoritmo de cálculo do CPF vamos utilizar um exemplo prático.
Considere o seguinte CPF (sem o DV): 333.444.555
Posição
1
2
3
4
5
6
7
8
9
Número
3
3
3
4
4
4
5
5
5
Começamos a multiplicar os dígitos do CPF, a partir da posição 9, ou seja, de trás para frente, por 2, 3, 4, 5 e assim por diante, conforme indicado na tabela a seguir:
Posição
1
2
3
4
5
6
7
8
9
Número
3
3
3
4
4
4
5
5
5
Multiplica por:
10
9
8
7
6
5
4
3
2
Resultado
30
27
24
28
24
20
20
15
10
Somo os resultados obtidos na quarta linha da tabela anterior:
Soma1 = 30+27+24+28+24+20+20+15+10
Soma1 = 198
Faço a divisão desta soma por 11 e determino o resto da divisão:
198/11 Resulta em uma divisão exata, com resto 0
Regra: Quando o resto é zero ou um, o DV é 0.
Quando o resto é diferente de zero ou um, o DV é
obtido fazendo-se: 11-resto
Neste caso como o resto foi zero, o primeiro DV é zero:
DV1=0
O DV1 calculado passa a fazer parte do CPF, conforme indicado pela tabela a seguir:
Posição
1
2
3
4
5
6
7
8
9
10
Número
3
3
3
4
4
4
5
5
5
0
Agora repetimos o processo anterior, porém já considerando o DV1 como parte integrante do CPF, conforme indicado pela tabela a seguir:
Posição
1
2
3
4
5
6
7
8
9
10
Número
3
3
3
4
4
4
5
5
5
0
Multiplica por:
11
10
9
8
7
6
5
4
3
2
Resultado
33
30
27
32
28
24
25
20
15
0
Somo os resultados obtidos na quarta linha da tabela anterior:
Soma2 = 33+30+27+32+28+24+25+20+15+0
Soma1 = 234
Faço a divisão desta soma por 11 e determino o resto da divisão:
234/11 Resulta em (21), com resto 3
Regra: Quando o resto é zero ou um , o DV é 0.
Quando o resto é diferente de zero ou um, o DV é
obtido fazendo-se: 11-resto
Neste caso como o resto foi 3, o segundo DV é :
DV2 = 11 - 3
DV2 = 8
Com isso o CPF, já com os dois DVs fica conforme indicado na tabela a seguir:
Posição
1
2
3
4
5
6
7
8
9
10
11
Número
3
3
3
4
4
4
5
5
5
0
8
Ou seja: 333.444.555-08
Os algoritmos para cálculo dos DVs do CNPJ são praticamente iguais. A única diferença é a quantidade de dígitos do CNPJ é diferente do CPF.
terça-feira, 5 de agosto de 2008
TopCoder -> Pratice Room -> SRMs -> SRM 144 DIV 1
Let's say you have a binary string such as the following:
011100011
One way to encrypt this string is to add to each digit the sum of its adjacent digits. For example, the above string would become:
123210122
In particular, if P is the original string, and Q is the encrypted string, then Q[i] = P[i-1] + P[i] + P[i+1] for all digit positions i. Characters off the left and right edges of the string are treated as zeroes.
An encrypted string given to you in this format can be decoded as follows (using 123210122 as an example):
Assume P[0] = 0.
Because Q[0] = P[0] + P[1] = 0 + P[1] = 1, we know that P[1] = 1.
Because Q[1] = P[0] + P[1] + P[2] = 0 + 1 + P[2] = 2, we know that P[2] = 1.
Because Q[2] = P[1] + P[2] + P[3] = 1 + 1 + P[3] = 3, we know that P[3] = 1.
Repeating these steps gives us P[4] = 0, P[5] = 0, P[6] = 0, P[7] = 1, and P[8] = 1.
We check our work by noting that Q[8] = P[7] + P[8] = 1 + 1 = 2. Since this equation works out, we are finished, and we have recovered one possible original string.
Now we repeat the process, assuming the opposite about P[0]:
Assume P[0] = 1.
Because Q[0] = P[0] + P[1] = 1 + P[1] = 0, we know that P[1] = 0.
Because Q[1] = P[0] + P[1] + P[2] = 1 + 0 + P[2] = 2, we know that P[2] = 1.
Now note that Q[2] = P[1] + P[2] + P[3] = 0 + 1 + P[3] = 3, which leads us to the conclusion that P[3] = 2.
However, this violates the fact that each character in the original string must be '0' or '1'. Therefore, there exists no such original string P where the first digit is '1'.
Note that this algorithm produces at most two decodings for any given encrypted string. There can never be more than one possible way to decode a string once the first binary digit is set.
Given a String message, containing the encrypted string, return a String[] with exactly two elements. The first element should contain the decrypted string assuming the first character is '0'; the second element should assume the first character is '1'. If one of the tests fails, return the string "NONE" in its place. For the above example, you should return {"011100011", "NONE"}.
Definition
Class:
BinaryCode
Method:
decode
Parameters:
String
Returns:
String[]
Method signature:
String[] decode(String message)
(be sure your method is public)
Constraints
-
message will contain between 1 and 50 characters, inclusive.
-
Each character in message will be either '0', '1', '2', or '3'.
Examples
0)
"123210122"
Returns: { "011100011", "NONE" }
The example from above.
1)
"11"
Returns: { "01", "10" }
We know that one of the digits must be '1', and the other must be '0'. We return both cases.
2)
"22111"
Returns: { "NONE", "11001" }
Since the first digit of the encrypted string is '2', the first two digits of the original string must be '1'. Our test fails when we try to assume that P[0] = 0.
3)
"123210120"
Returns: { "NONE", "NONE" }
This is the same as the first example, but the rightmost digit has been changed to something inconsistent with the rest of the original string. No solutions are possible.
4)
"3"
Returns: { "NONE", "NONE" }
5)
"12221112222221112221111111112221111"
Returns:
{ "01101001101101001101001001001101001",
"10110010110110010110010010010110010" }
This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.
Minha Solução:
public class BinaryCode {
/**
* @param args the command line arguments
*/
public String[] decode(String td){ // tb = numero em decimal
int td_elementos = td.length();
int p[] = new int[td_elementos+1];
int f = td_elementos;
String answer[] = new String[2];
for(int t = 0; t< 2; t++){
int n_ok = 0;
for(int i = 0; i < td_elementos; i++) // só para o caso de p[0] == 0;
{
p[0] = t;
if(i == 0) // Q[0] = P[0] + P[1] = 0 + P[1] = 1 => p[1] = q[0] - 0
{
p[i+1] = td.charAt(i) - p[i];
p[i+1] -= 48;
if(p[i+1] > 1 || p[i+1] < 0) {
n_ok++;
}
}
else { //Q[2] = P[1] + P[2] + P[3] = 1 + 1 + P[3] = 3, we know that P[3] = 1. / p[3] = q[2] - (p[1] + p[2])
p[i+1] = td.charAt(i) - (p[i-1] + p[i]);
p[i+1] -= 48;
if(p[i+1] > 1 || p[i+1] < 0) {
n_ok++;
}
}
}
StringBuffer s = new StringBuffer();
for(int i = 0; i< p.length-1; i++)
{
// System.out.printf("%d", p[i]);
if(p[i] > 1) { n_ok++; }
s.append(p[i]);
}
if(n_ok > 0){
answer[t] = new String("NONE");
}
else {
answer[t] = new String(s);
}
}
return answer;
}
}
segunda-feira, 4 de agosto de 2008
TopCoder...
segunda-feira, 7 de abril de 2008
WiMAX será algo grande, com ou sem Sprint, diz Motorola
O serviço Xohm está bastante atrasado em relação à agenda original, mas o show deve continuar, de acordo com a fabricante.
Por IDG News Service, EUA
O suporte financeiro para o novo serviço de WiMAX de alta velocidade sem fio, o Xohm, da Sprint Nextel, ainda pode ser questionado, mas a Motorola continua enxergando um mercado forte para a nova tecnologia, com ou sem a operadora.
“Seja com o suporte da Sprint ou sem ele, o WiMAX é um caminho sem volta”, diz Daniel Moloney, presidente da área de mobilidade doméstica e de redes da Motorola, divisão responsável pelos produtos WiMAX. “Existe um grande mercado global para essa tecnologia”, avalia.
A Motorola fabrica os produtos que a Sprint está implementando em seus testes e lançamentos do Xohm, e já provê os equipamentos para o desenvolvimento do serviço em outros países.
Moloney disse estar ciente dos esforços da Sprint para atrair investimentos de 1,5 bilhão de dólares ou mais pelas empresas de cabo na iniciativa Xohm, que deve custar 5 bilhões de dólares ao todo. Mas Moloney disse não estar por dentro dos detalhes sobre o andamento dessas negociações, nem os motivos pelos quais nenhum tipo de acerto foi concluído até a última segunda-feira (31), data limite imposta pela Sprint para as companhias de cabo envolvidas.
domingo, 6 de abril de 2008
Vivo finaliza aquisição 53,9% do capital da Telemig Celular
Por Redação do COMPUTERWORLD
A Vivo, operadora de celulares controlada por Portugal Telecom (PT) e pela espanhola Telefónica, concluiu a aquisição de 53,9% do capital e de 4,27% das ações preferenciais da Telemig Celular Participações, informou a Telefónica.
Em nota divulgada pela Comissão de Mercado de Valores da Espanha, a Telefónica diz que o preço total da aquisição foi 1,163 bilhão de reais.
Adicionalmente, informa a Telefónica, e de acordo com a legislação brasileira do mercado de valores, a Vivo lançará agora uma oferta pública de aquisição (OPA) sobre a totalidade das ações com direito a voto da Telemig, a um preço por ação "igual a 80% do preço" de compra dos títulos negociados.
sábado, 5 de abril de 2008
Presidente do Google vai depor em CPI
SÃO PAULO - A CPI da Pedofilia acertou para quarta-feira (9) o depoimento de diretores do Google, em Brasília.
De acordo com a assessoria do Senado, o Google concordou em enviar seu presidente no Brasil, Alexandre Hohagen, e o diretor de comunicação da empresa, Félix Ximenes. Ambos foram convidados para falar sobre as denúncias de que o orkut é usado de forma recorrente por pedófilos.
O Ministério Público de São Paulo entregou à CPI documentos que demonstram que pedófilos usam a rede social para assediar crianças, distribuir material pedófilo e trocar informações com outros pedófilos.
Para a sessão em que os executivos do Google vão depor, foram convidados o delegado da Polícia Federal Carlos Eduardo Miguel Sobral, o procurador da República no Estado de São Paulo, Sérgio Gardenghi Suiama, e o presidente da organização não-governamental Safernet Brasil, Thiago Tavares Nunes de Oliveira.
Nos últimos anos, o Google implementou diversas ferramentas para a comunidade de usuários denunciar abusos postados no orkut, entre eles conteúdo pedófilo. A principal reivindicação do Ministério Público agora é que o Google ajude a identificar os autores de posts com caráter pedófilo.
O Google argumenta que a rede social, hospedada em servidores na Califórnia, está sob controle da matriz americana e, por isso, os pedidos da Justiça devem ser encaminhados ao Google Inc. e não à divisão brasileira.
O MP, por sua vez, diz que esta atitude burocratiza o combate a crimes online e, na prática, protege criminosos, uma vez que é muito mais difícil obter a quebra de sigilo do usuário nos Estados Unidos, onde a legislação protege fortemente a privacidade dos usuários, que no Brasil.
Felipe Zmoginski, do Plantão INFO
Complicado,, consequências de quem tem como objetivo reunir as informações do mundo.quinta-feira, 3 de abril de 2008
Pesquisadores desenvolvem avatar com inteligência artificial
Ele é capaz de avaliar e de tirar conclusões baseadas em seu conhecimento de forma muito semelhante ao que faz uma criança de 4 anos na vida real
Um grupo de pesquisadores do Rensselaer Polytechnic Institute, no Estado de Nova York,
Estados Unidos, trabalha no desenvolvimento de um avatar dotado de inteligência artificial e capaz de ter opiniões e de reagir às idéias de outros avatares controlados por humanos. Segundo os pesquisadores, o personagem virtual será capaz de aprender e avaliar situações a partir do relacionamento com humanos no metaverso.
Em recente conferência sobre inteligência artificial, os pesquisadores apresentaram o primeiro avatar criado pelo projeto. Batizado de Eddie, o avatar tem a aparência e o raciocínio de uma criança de 4 anos. Ele é capaz de avaliar e de tirar conclusões baseadas em seu conhecimento de forma muito semelhante ao que faz uma criança de 4 anos na vida real.
“Os avatares existentes em mundos virtuais, como o Second Life, são controlados diretamente por seus usuários e apenas nos dão a ilusão de mentalidade própria”, disse durante apresentação Selmer Bringsjord, chefe do departamento de ciência cognitiva de Rensselaer e líder da pesquisa. “Personagens autônomos com desempenho realmente convincente devem ter memórias, crenças e desejos.”
Segundo Bringsjord, o objetivo do projeto não é construir uma teoria computacional que explique e antecipe o comportamento humano, mas sim desenvolver agentes, dotados de inteligência artificial, mais interessantes e úteis por conta de sua capacidade de reação a estímulos externos. “As aplicações incluem desde entretenimento e jogos até aplicações educacionais e sistemas domésticos de segurança.”
A equipe espera desenvolver uma versão do holodeck - um sistema de realidade virtual visto na série Jornada nas Estrelas, no qual os personagens interagem com hologramas de outros indivíduos. Para Bringsjord, o sistema permitiria que avatares com inteligência artificial avançada interagissem diretamente com humanos.
Na página http://tinyurl.com/2vjt59, há vídeos de demonstração das habilidades de Eddie.
Agência Estado

