shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: projecteuler.net


From: Arkanon
Subject: Re: [shell-script] Re: projecteuler.net
Date: Thu, 13 Aug 2015 14:30:34 -0300

Uma ideia evitando loops explícitos e aplicando sugestões postadas no stackoverflow para identificação de palíndromos por expressão regular.
(http://stackoverflow.com/questions/233243/how-to-check-that-a-string-is-a-palindrome-using-regular-expressions)

time ( ( a={100..999}; eval set $a*$a; IFS=$'\n' ; echo "$*" ) | bc | sort -nu | tee palin | grep -wE -e '(.)(.).?\2\1' -e '(.)(.)(.)\3\2\1' )
1m12.832s

Usei tee (a primeira vez) para fazer um cache dos valores para agilizar a exploração das técnicas de identificação dos palíndromos e deixei listar todos os identificados.

2015-08-13 13:39 GMT-03:00 address@hidden [shell-script] <address@hidden>:
 

Para não entrar na questão de muitas opções em shell, vou apenas dar um palpite exlcusivamente com uso do awk:


 awk '
 function rev(texto) {
         if (length(texto) == 0) return ""
         return (substr(texto, length(texto), 1) rev(substr(texto, 1, length(texto)-1)))
 }

 BEGIN {
         comando = "sort -n | tail -n 1"
         for (f1=999;f1>=100;f1--) {
                 for (f2=999;f2>=100;f2--) {
                         produto = f1 * f2
                         if (produto == rev(produto)) print produto, "=", f1, "*", f2 | comando
                 }
         }
         close(comando)
 }
'

[]'s
Itamar




--
(o_  @arkanon  (Twitter)     __o
//\   address@hidden   _`\<,
V_/_      www.lsd.org.br  (_)/(_)
---------------------------------

reply via email to

[Prev in Thread] Current Thread [Next in Thread]