Os telefones

Hoje no IX Encontro do Python User Group de Pernambuco apresentei
uma palestra relâmpago no I Toró de palestras do PUG-PE. Nessa
palestra apresentei uma forma de resolução para o problema abaixo
utilizando uma abordagem funcional. Esse problema foi uma proposta
de Dojo enviada por Marcel Caraciolo a nossa lista de discussão.
Depois encontrei na internet que essa ele fazia parte da etapa
de inscrição para o Google Developer Day 2010.
Abaixo segue a descrição: 

Na pacata vila campestre 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

Apresentação.


Script Python.
http://ideone.com/3SPKF

Os Telefones

Na pacata vila campestre 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,