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

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

Detectar palíndromes


From: Alfredo Casanova
Subject: Detectar palíndromes
Date: Sun, 17 Mar 2019 21:44:01 -0300

Esse final de semana teve um evento da OWASP aqui em Brasília, onde foi realizado um CTF.
Uma das tarefas era detectar palíndromes maiores que 17 caracteres em uma lista com 1.6milhoes de linhas.
Resolvi o CTF e depois fiquei brincando com um amigo sobre como seria a menor linha possível para bater o desafio. Eu fiz em bash, ele em python (bem mais performático).

A menor linha que consegui em bash até agora foi:

while read i;do ((${#i}>17))&&[ $i == `rev<<<$i` ]&&echo $((++d));done<a

onde a é o nome do arquivo.
Além de estar perdendo pra linha dele de python em tamanho [ f=open("a");len(filter(lambda l:len(l)>18and l[:-1]==l[:-1][::-1],f)) ], tô perdendo mto em performance.

Testei um outro approach que foi:

awk 'length>17' a|tee b c;fgrep -cxf b <(rev c)

mas ele dá a quantidade errada pq compara o arquivo todo e não linha por linha, e isso trás repetidos.

Ideias?

--
[]'s
Alfredo Tristão Casanova .͘.
Linux User #228230
tel: +55 61 9655 9619

reply via email to

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