Path: csiph.com!news.mixmin.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Patricia Ferreira Newsgroups: pt.comp.programacao Subject: Re: Lisp, um mapa de trajeto Date: Sat, 13 Jan 2024 16:59:38 -0300 Organization: A noiseless patient Spider Lines: 78 Message-ID: <874jfhvwb9.fsf@example.com> References: <87sf37ajzn.fsf@example.com> <87y1cy8z8u.fsf@example.com> <87v881z5qs.fsf@brilhante.top> <87a5pd6kuv.fsf@yaxenu.org> <8734v3ztrz.fsf@brilhante.top> <877cke4ny3.fsf@example.com> <87y1cujtsk.fsf@brilhante.top> <87ttni48z9.fsf@example.com> <87r0im428v.fsf@brilhante.top> <87edem3yds.fsf@example.com> <87edel4avz.fsf@brilhante.top> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: dont-email.me; posting-host="c2f0907cbb8bbadcd021849970a21db1"; logging-data="86444"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19W+/u909bu43OXzQrLrAEMLq1D/aVhepo=" Cancel-Lock: sha1:l8VJaUSmgJtZujHw5LUzFarYEq4= sha1:bBnA4hdjY6oJwfx7ItoFLu8SD6I= Xref: csiph.com pt.comp.programacao:144 Daniel Cerqueira writes: > Patricia Ferreira writes: > >> (*) Exercício 2 patch-1 >> >> Use apenas cond, null, car, cdr e <. Escreva um procedimento f que >> consome duas listas de números inteiros em ordem ascendente. O >> procedimento f retorna uma única lista ordenada de números que contenha >> todos os números de ambas listas de entrada. Um número ocorre na saída >> tantas vezes quando ocorre em ambas as listas de entrada. Quando tempo >> você levou pra escrever o procedimento? > > Demorei à volta de 3 minutos. > > (defun ordenar (a b) > (cond > ((null a) b) > ((null b) a) > ((< (car a) (car b)) (cons (car a) (ordenar (cdr a) b))) > (t (cons (car b) (ordenar a (cdr b)))))) Muito bom! Agora acreditamos em falta de atenção no anterior. Um nome melhor pra esse procedimento seria /merge/. Com ele você implementa o seu /ordenar/ --- que se chama /merge sort/, um respeitoso algoritmo. (*) Exercício 3 Considere a lista abaixo como uma representação pra um grafo direcionado. (defparameter sample-graph '((A (B E)) (B (E F)) (C (D)) (D ()) (E (C F)) (F (D G)) (G ()))) Os vertices são o que você espera --- A, B, C, ..., G. A lista associada a um vértice /v/ representa os outros vértices a que /v/ tem acesso. Por exemplo, A tem aresta pra B, mas B não tem aresta pra A. Escreva um procedimento chamado /find-path/ tal que (find-path 'C 'D sample-graph) produza '(C D) (find-path 'E 'D sample-graph) produza '((E F D) (E C D)) (find-path 'C 'G sample-graph) produza nil Quando terminar de fazer, veja o tempo que levou. >> Olha, não uso e-mail criptografado. Posso te mandar uma chave minha, >> mas não vai me ser nada conveniente descriptografar qualquer coisa que >> você me envie por e-mail --- nunca instalei qualquer mecanismo de rápida >> criptografia ou descriptografia. > > Bem, ter várias chaves OpenPGP dá a sensação de saber usá-las para > cifrar emails. [...] Bem, quem quiser ficar com a minha chave pública > OpenPGP, envie-me um email. Já entendi. Você quer brincar de criptografia. Podemos brincar. Por que você não explicou antes? Eis minha chave: -----BEGIN RSA PRIVATE KEY----- e4B...^C^C Lol! Essa foi por pouco. (Estão rindo de quê? Tenho enorme experiência com criptografia. Ridículo.) Lol. -----BEGIN PUBLIC KEY----- MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEA0eTpkgBTghWSEr8UsoqX yTac3Cx3QBal/UG5xbP/6oaWo9f3uzS5smvzN6uBopjeDxf7YqFLmXeIqk1kfBd0 osFhMhFnGqsLnfQ6q+Kv0qMMOa9cWC2V53K5yoQ3EoxR1kJJ8wDmsc/Dio7Uqz/f Wb1vXIrjzqCuwbHEeu0A4cqCh9GWdcgUubbzgN5h/SNMkrWl9nikyyxqK7zOjIm3 6ET5Ag4c3Zwp9w1+wMpxz39vdAtp82knQuVgyBwKTJX4U15NTWhdk09tXI8i/e8d JtZXk8SDY5rYgELryZvecPMH5ik03z+8i09vuga/IelpZ6w2GmxM20yDFNzBF84F iQIBJQ== -----END PUBLIC KEY-----