Os telefones

14
Os Telefones Rodrigo Lira

description

Palestra relâmpago realizada no I Toró de palestras do PUG-PE (28/11)

Transcript of Os telefones

Page 1: Os telefones

Os Telefones Rodrigo Lira

Page 2: Os telefones

Rodrigo LiraAluno do 5º período de Engenharia da Computação na UPE.

Conheci python no final de 2008.

Participa dos grupos Python Poli e do PUG-PE.

http://tiny.cc/rodrigolira

Page 3: Os telefones

Os Telefones

Na pacata campestre vila de Arquivonaoencontradoville, todos os telefones têm 6 dígitos. A companhia telefônica estabelece as seguintes regras sobre os números:

Page 4: Os telefones

Não pode haver dois dígitos consecutivos idênticos, porque isso é chato.

A soma dos dígitos tem que ser par, porque isso é legal.

O último dígito não pode ser igual ao primeiro, porque isso dá azar.

Page 5: Os telefones

Então, dadas essas regras perfeitamente razoáveis, bem projetadas e maduras, quantos números de telefone na lista abaixo são válidos?

215228, 218415, 221632, 224722, 229644, 230847, 233798, 237903, 239224, 241832, 242112, 243248, 246147, 247652, 250688, 252940, 255721, 256882, 259134, 262578, 263327, 266656, 268796, 270350, 272863, 275245, 278601, 278606, 281963, 283751, 288259, 291562, 296545, 298528, 302103, 303431, 307561, 311979, 315548, 320440, 322278, 324469, 324740, 327417, 330263, 331179, 334147, 334932, 336085, 338096, 338106, 342991, 347187, 347590, 348863, 350187, 353246, 354032, 358616, 363056, 363251, 366141, 369906, 371046, 372684, 377077, 381177, 382086, 385627, 385694, 386105, 388179, 390251, 392624, 394225, 395328, 398698, 400102, 404224, 408064, 410386, 411711, 413621, 415653, 417168, 419269, 424197, 427202, 430639, 432570, 437462, 442412, 444990, 447613, 452039, 456750, 459927, 462532, 465756, 467051, 468297, 469089, 471562, 474900, 475534, 476833, 478910, 480437, 482085, 485647, 487736, 489897, 493033, 495182, 498463, 502539, 502785, 505926, 508246, 511720, 515395, 515595, 516362, 520927, 525025, 529957, 530139, 531015, 533760, 534588, 538184, 541403, 542913, 546141, 548038, 549095, 552509, 556808, 560382, 563503, 565304, 567165, 567675, 572218, 573856, 576408, 578085, 578997, 579553, 584487, 589220, 590967, 593234, 597867, 599823, 603666, 607878, 611482, 611854, 612811, 614119, 615956, 617547, 621070, 621309, 626105, 626885, 631080, 635911, 639606, 640175, 641607, 645158, 647958, 652199, 656507, 658615, 662663, 662947, 664704, 666668, 667544, 669440, 673512, 675931, 676963, 677113, 678606, 682716, 682998, 684883, 686140, 688963, 689054, 692042, 695458, 697031, 697457, 697623, 698026

Page 6: Os telefones

Filter

Page 7: Os telefones

FilterAplicação de filtro

Tem como retorno uma sequência formada por todos os itens em que func(item) é True.

filter(função ou None,seq)

#Palíndromosfilter(lambda x: x[::-1]==x,["casa","ovo","palavra","radar"])['ovo', 'radar']

Page 8: Os telefones

LambdaFunção anônima.

Seu corpo deve conter apenas expressão.

Não possui a instrução return.

Seguem o modelo:

lambda arg1,arg2,arg3,argn: expressão

Page 9: Os telefones

Separar os telefones

telefones = “215228, 218415”

telefone.split(',')

['215228', ' 218415']

Page 10: Os telefones

O último dígito não pode ser igual ao primeiro

telefone = “215228”

telefone[0]!=telefone[-1]

True

Page 11: Os telefones

A soma dos dígitos tem que ser par

telefone = “215228”

sum(int(d) for d in telefone)%2==0

True

Page 12: Os telefones

ZipRetorna uma lista cujos elementos são tuplas resultantes de cada um dos elementos de uma ou mais sequências de entrada seq1, seq2, seqN.

zip(seq1,seq2,seqn)

Exemplo:zip(('a','b'),[1,2])[('a', 1), ('b', 2)]

Page 13: Os telefones

Não pode haver dois dígitos consecutivos idênticos

telefone = “215228”

all(a!=b for a,b in zip(telefone,telefone[1:]))#[('2', '1'), ('1', '5'), ('5', '2'), ('2', '2'), ('2', '8')]

False

Page 14: Os telefones

Script