Os telefones
-
Upload
rodrigo-lira -
Category
Technology
-
view
909 -
download
2
description
Transcript of Os telefones
Os Telefones Rodrigo Lira
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
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:
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.
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
Filter
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']
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
Separar os telefones
telefones = “215228, 218415”
telefone.split(',')
['215228', ' 218415']
O último dígito não pode ser igual ao primeiro
telefone = “215228”
telefone[0]!=telefone[-1]
True
A soma dos dígitos tem que ser par
telefone = “215228”
sum(int(d) for d in telefone)%2==0
True
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)]
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
Script