Guest id194 Posted November 13, 2006 at 12:05 PM Report #64065 Posted November 13, 2006 at 12:05 PM Eu aqui não quero ajuda com código, apenas quero ajuda a pensar como vou resolver este problema para depois tentar programar eu prórpio, se futuramente tiver uma dúvida sobre isso, voltarei a colocar aqui. O problema é o seguinte, eu tenho um determinado texto cifrado usando a cifra de cesar. O objectivo é tentar descobrir o seu conteúdo que nos é dito que apenas são digitos escritos por extenso. É suposto fazer isto por força bruta. O texto crifrado é: "RLWRGRLVGRLVCHURQRYHRLWRTXDWURXPCHURVHWH". E eu fiz o seguinte: *TP1> [[a | a <- decryptCesar x "RLWRGRLVGRLVCHURQRYHRLWRTXDWURXPCHURVHWH"] | x <- [1..26]] ["QKVQFQKUFQKUBGTQPQXGQKVQSWCVTQWOBGTQUGVG", "PJUPEPJTEPJTAFSPOPWFPJUPRVBUSPVNAFSPTFUF", "OITODOISDOISZERONOVEOITOQUATROUMZEROSETE", "NHSNCNHRCNHRYDQNMNUDNHSNPTZSQNTLYDQNRDSD", "MGRMBMGQBMGQXCPMLMTCMGRMOSYRPMSKXCPMQCRC", "LFQLALFPALFPWBOLKLSBLFQLNRXQOLRJWBOLPBQB", "KEPKZKEOZKEOVANKJKRAKEPKMQWPNKQIVANKOAPA", "JDOJYJDNYJDNUZMJIJQZJDOJLPVOMJPHUZMJNZOZ", "ICNIXICMXICMTYLIHIPYICNIKOUNLIOGTYLIMYNY", "HBMHWHBLWHBLSXKHGHOXHBMHJNTMKHNFSXKHLXMX", "GALGVGAKVGAKRWJGFGNWGALGIMSLJGMERWJGKWLW", "FZKFUFZJUFZJQVIFEFMVFZKFHLRKIFLDQVIFJVKV", "EYJETEYITEYIPUHEDELUEYJEGKQJHEKCPUHEIUJU", "DXIDSDXHSDXHOTGDCDKTDXIDFJPIGDJBOTGDHTIT", "CWHCRCWGRCWGNSFCBCJSCWHCEIOHFCIANSFCGSHS", "BVGBQBVFQBVFMREBABIRBVGBDHNGEBHZMREBFRGR", "AUFAPAUEPAUELQDAZAHQAUFACGMFDAGYLQDAEQFQ", "ZTEZOZTDOZTDKPCZYZGPZTEZBFLECZFXKPCZDPEP", "YSDYNYSCNYSCJOBYXYFOYSDYAEKDBYEWJOBYCODO", "XRCXMXRBMXRBINAXWXENXRCXZDJCAXDVINAXBNCN", "WQBWLWQALWQAHMZWVWDMWQBWYCIBZWCUHMZWAMBM", "VPAVKVPZKVPZGLYVUVCLVPAVXBHAYVBTGLYVZLAL", "UOZUJUOYJUOYFKXUTUBKUOZUWAGZXUASFKXUYKZK", "TNYTITNXITNXEJWTSTAJTNYTVZFYWTZREJWTXJYJ", "SMXSHSMWHSMWDIVSRSZISMXSUYEXVSYQDIVSWIXI", "RLWRGRLVGRLVCHURQRYHRLWRTXDWURXPCHURVHWH"] Dá para ver que o que a gente quer, é o terceiro elemento da lista. Eu só não estou a conseguir pensar em como vou fazer isto por força bruta. Se todos os digitos tivessem o mesmo numero de caracteres (quando escritos por extenso), Eu sacava esses primeirso digitos de cada uma das listas geradas pelo decryptCesar e ia comparado, mas nem todos os digitos tem o mesmo numero de caracteres escritos por extenso e eu não estou a ver como vou fazer isto... Ideias?
Guest id194 Posted November 14, 2006 at 01:05 AM Report #64219 Posted November 14, 2006 at 01:05 AM já resolvi...
Onumis Posted November 18, 2006 at 12:20 PM Report #65072 Posted November 18, 2006 at 12:20 PM entao diz ai sff, deixas-te-me com agua no bico, lol
Cypher Posted November 18, 2006 at 01:15 PM Report #65082 Posted November 18, 2006 at 01:15 PM já agora punhas a resolução ...
[d-_-b] Posted November 18, 2006 at 01:59 PM Report #65096 Posted November 18, 2006 at 01:59 PM Viva pessoal. Ainda sou bastante novo aki pelo forum... tb sou de lei 1º ano e tambem tou a fazer esse trabalho que ja ta kuase pronto.. Em relação a esse exercicio, o que eu fiz foi sacar para fora da lista as strings e junta-las todas numa so. Depois disso é fácil, basta usar a função extrair que esta no enunciado fazendo com k ela procura na string palavras como: um, dois tres...... e tranforme em 1,2,3.... Mais complicado que isso é conseguir dizer depois de decifrar kual foi a chave usada :S Aquele abraço, Pires
Rui Carlos Posted November 18, 2006 at 02:01 PM Report #65097 Posted November 18, 2006 at 02:01 PM podias ir procurando números no topo das strings (usando Pattern matching, por exemplo)... Rui Carlos Gonçalves
[d-_-b] Posted November 18, 2006 at 02:05 PM Report #65100 Posted November 18, 2006 at 02:05 PM viva amigo Rui Carlos. Pois... acredito que sim mas isso ja é mta areia po meu camião 😕 ja agora.. o k significa isso de pattern matching assim resumidamente.
Rui Carlos Posted November 18, 2006 at 02:40 PM Report #65111 Posted November 18, 2006 at 02:40 PM pattern matching é concordância de padrões. por exemplo quando fazes: f []=1 f (x:xs)=2 estás a usar pattern matching, pois estás a testar quando o argumento está de acordo com o padrão '[]' (list vazia) ou com o padrão 'x:xs' (um elemento concatenado com uma lista). para saberes qual foi a chave usada não acho muito boa ideia juntar as strings todos, acho que é melhor usar um 'map'. Rui Carlos Gonçalves
Guest id194 Posted November 18, 2006 at 02:43 PM Report #65113 Posted November 18, 2006 at 02:43 PM Pessoal, peço imenso desculpa... mas eu estava aqui a escrever um texto bastante detalhado sobre a forma como resolvi este exercício e o firefox crashou-me sem ter qualquer tipo de texto gravado e sinceramente não estou com paciência para voltar a escrever tudo o que tinha escrito (já ia num texto grande). Não vou aqui colocar o meu código por razões óbvias, estava a escrever a forma como resolvi o problema, mas isto crashou... Muito resumidamente foi isto que fiz: Tenho uma lista de números de 0 a 9 escritos por extenso, pega em cada um desses elementos e verifico se esta na cifra, se estiver passo a próxima posição da cifra e volto a verificar se tenho lá um numero, caso contrário sai fora. Se chegar ao fim e só encontrar-mos números, porreiro, encontramos a nossa mensagem desencriptada. E fazer isto isto para as 26 cifras possíveis da cifra de césar. Esta foi a técnica que eu usei mais parecida com força bruta, que é isso que se pretende neste exercício. Esta não é bem a minha ideia de força bruta, mas é o mais parecido que arranjei segundo o que diz no enunciado: Para isso, implemente uma função que faça um ataque à forçaa bruta, experimentando as chaves todas e procurando as palavras “UM”, “DOIS”, etc., no texto resultante da aplicação da funçãao de decifragem com cada chave. @Rui Carlos Não será um bocado complicado usar pattern matching e força bruta? @[d-_-b] E se nesta altura ainda não sabes o que é pattern matching... Já devias saber lol..
Rui Carlos Posted November 18, 2006 at 02:50 PM Report #65115 Posted November 18, 2006 at 02:50 PM @Rui Carlos Não será um bocado complicado usar pattern matching e força bruta? numeros []=True numeros ('u':'m':xs)=numeros xs numeros ('d':'o':'i':'s':xs)=numeros xs ... numeros _=False esta função permitia-te saber se uma string era uma sequência de números. com um 'map' aplicavas-la a todos os elementos da lista. Rui Carlos Gonçalves
Guest id194 Posted November 18, 2006 at 02:57 PM Report #65117 Posted November 18, 2006 at 02:57 PM hum... realmente... tenho de estudar o raio do map, nunca percebi lá muito bem como funciona...
good_in_bed Posted November 18, 2006 at 07:20 PM Report #65175 Posted November 18, 2006 at 07:20 PM Se inda n sabx Nazgulled, a esta altura já devias saber!👍
Guest id194 Posted November 18, 2006 at 07:35 PM Report #65176 Posted November 18, 2006 at 07:35 PM É + critico não saber o que é pattern matching do que ter conhecimentos sobre a função map. Resolvi o problema sem o uso dela, deve querer significar alguma coisa... Se o uso dela simplificar alguma coisa, óptimo, mas se eu consegui sem ela... I rest my case!
[d-_-b] Posted November 18, 2006 at 11:19 PM Report #65211 Posted November 18, 2006 at 11:19 PM ah ja percebi amigo rui carlos! nao conhecia isso por esse nome "pattern matching" pensei k pelo nome fosse outra coisa mais dificil. hehe knt a ti nazgulled concordo inteiramente com o good_in_bed... o jbb ja explicou a função map ao pormenor n vezes e é mt simples e pratica.. nesta altura ja devia tar bem sabidinha. 👍 lolol Quanto ao trabalho tou como tu... nao percebo bem o k kerem dizer com força bruta. eu arranjei uma maneira k resolver a tarefa mas n sei s é por força bruta. ? Aquele abraço, Pires
Guest id194 Posted November 18, 2006 at 11:45 PM Report #65212 Posted November 18, 2006 at 11:45 PM Sim é verdade, se eu de facto fosse as aulas todas era bem provável que eu já a soubesse...
good_in_bed Posted November 19, 2006 at 12:55 AM Report #65221 Posted November 19, 2006 at 12:55 AM Pois...Bem me parecia...por isso é que falei...É muito facil fazeres pattern matching sem o saberes...Já o map...tem o seu kê...Bom trabalho!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now