Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pt.comp.programacao > #114 > unrolled thread

Ada-Europe conference - 31 Jan Journal Track Extended Deadline

Started bydirk@orka.cs.kuleuven.be. (Dirk Craeynest)
First post2024-01-08 10:44 +0000
Last post2024-02-04 11:42 +0000
Articles 20 on this page of 83 — 5 participants

Back to article view | Back to pt.comp.programacao


Contents

  Ada-Europe conference - 31 Jan Journal Track Extended Deadline dirk@orka.cs.kuleuven.be. (Dirk Craeynest) - 2024-01-08 10:44 +0000
    Re: Ada-Europe conference - 31 Jan Journal Track Extended Deadline Patricia Ferreira <pferreira@example.com> - 2024-01-08 13:05 -0300
      Re: Ada-Europe conference - 31 Jan Journal Track Extended Deadline dirk@orka.cs.kuleuven.be. (Dirk Craeynest) - 2024-01-09 09:53 +0000
        Re: Ada-Europe conference - 31 Jan Journal Track Extended Deadline Patricia Ferreira <pferreira@example.com> - 2024-01-09 09:31 -0300
          Re: Ada-Europe conference - 31 Jan Journal Track Extended Deadline Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-10 13:18 +0000
            Re: Ada-Europe conference - 31 Jan Journal Track Extended Deadline Ninguém <usenet@rasparta.org> - 2024-01-10 15:18 +0000
              fiat lux! (Was: Re: Ada-Europe conference - 31 Jan Journal Track Extended Deadline) Patricia Ferreira <pferreira@example.com> - 2024-01-10 16:57 -0300
                Re: fiat lux! Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-11 16:42 +0000
                  Re: fiat lux! Ninguém <usenet@rasparta.org> - 2024-01-11 22:21 +0000
                    Re: fiat lux! Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-12 14:23 +0000
                      Re: fiat lux! "Nuno Silva" <nunojsilva@invalid.invalid> - 2024-01-16 14:05 +0000
                        Re: fiat lux! Patricia Ferreira <pferreira@example.com> - 2024-01-16 11:45 -0300
                    Re: fiat lux! Patricia Ferreira <pferreira@example.com> - 2024-01-12 11:24 -0300
                  Re: fiat lux! Patricia Ferreira <pferreira@example.com> - 2024-01-12 11:02 -0300
            Lisp (was: Re: Ada-Europe conference - 31 Jan Journal Track Extended Deadline) "Nuno Silva" <nunojsilva@invalid.invalid> - 2024-01-10 16:00 +0000
              Re: Lisp Patricia Ferreira <pferreira@example.com> - 2024-01-10 17:00 -0300
                Re: Lisp Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-11 16:30 +0000
            Lisp, um mapa de trajeto (Was: Re: Ada-Europe conference - 31 Jan Journal Track Extended Deadline) Patricia Ferreira <pferreira@example.com> - 2024-01-10 16:37 -0300
              Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-11 17:04 +0000
                Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-12 11:37 -0300
                  Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-12 18:22 +0000
                    Re: Lisp, um mapa de trajeto Ninguém <usenet@rasparta.org> - 2024-01-12 18:51 +0000
                      Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-12 22:29 +0000
                        Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-12 20:27 -0300
                          E-mail (was: Re: Lisp, um mapa de trajeto) "Nuno Silva" <nunojsilva@invalid.invalid> - 2024-01-13 10:34 +0000
                          Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-13 13:04 +0000
                            Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-13 17:02 -0300
                              Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-14 12:07 +0000
                                Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-14 10:39 -0300
                                  Re: Lisp, um mapa de trajeto "Nuno Silva" <nunojsilva@invalid.invalid> - 2024-01-14 15:51 +0000
                                    Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-14 13:27 -0300
                                  Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-14 22:21 +0000
                                    Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-15 00:24 -0300
                                      Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-15 15:23 +0000
                            Re: Lisp, um mapa de trajeto Ninguém <usenet@rasparta.org> - 2024-01-14 10:33 +0000
                    Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-12 17:01 -0300
                      Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-12 22:26 +0000
                        Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-12 20:50 -0300
                          Re: Lisp, um mapa de trajeto "Nuno Silva" <nunojsilva@invalid.invalid> - 2024-01-13 11:04 +0000
                            Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-13 09:46 -0300
                          Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-13 13:32 +0000
                            Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-13 16:59 -0300
                              Re: Lisp, um mapa de trajeto Ninguém <usenet@rasparta.org> - 2024-01-14 10:11 +0000
                                Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-14 11:01 -0300
                                  Re: Lisp, um mapa de trajeto Ninguém <usenet@rasparta.org> - 2024-01-14 14:18 +0000
                                    Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-14 11:33 -0300
                              Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-14 12:02 +0000
                                Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-14 10:51 -0300
                                  Encriptação (was: Re: Lisp, um mapa de trajeto) "Nuno Silva" <nunojsilva@invalid.invalid> - 2024-01-14 15:44 +0000
                                    Re: Encriptação Patricia Ferreira <pferreira@example.com> - 2024-01-14 13:30 -0300
                                  Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-14 22:25 +0000
                                    Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-15 00:25 -0300
                                      Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-15 15:43 +0000
                                        Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-15 14:00 -0300
                                          Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-16 18:10 +0000
                                            Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-16 22:06 -0300
                                              Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-17 14:10 +0000
                                                Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-18 08:29 -0300
                                                  Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-18 18:03 +0000
                                                    Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-18 15:47 -0300
                                              Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-17 15:51 +0000
                                                Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-18 08:29 -0300
                                                  Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-18 17:57 +0000
                                                    Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-18 15:09 -0300
                                                      Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-18 19:24 +0000
                                                        Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-18 17:56 -0300
                                                          Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-19 10:39 +0000
                                                            Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-19 08:38 -0300
                                                          Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-20 13:38 +0000
                                                            Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-01-20 11:42 -0300
                                                              Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-01-23 17:29 +0000
                                                                Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-02-03 11:19 +0000
                                                                  Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-02-03 09:29 -0300
                                                                    Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-02-03 13:14 +0000
                                                                    Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-02-05 15:43 +0000
                                                                      Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-02-05 18:50 -0300
                                                                        Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-02-06 10:55 +0000
                                                                          Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-02-06 18:13 -0300
                                                                    Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-02-06 11:11 +0000
                                                                Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-02-03 14:52 -0300
                                                                  Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-02-03 18:09 +0000
                                                                    Re: Lisp, um mapa de trajeto Patricia Ferreira <pferreira@example.com> - 2024-02-03 20:48 -0300
                                                                      Re: Lisp, um mapa de trajeto Daniel Cerqueira <dan.list@brilhante.top> - 2024-02-04 11:42 +0000

Page 3 of 5 — ← Prev page 1 2 [3] 4 5  Next page →


#143 — Re: Lisp, um mapa de trajeto

FromDaniel Cerqueira <dan.list@brilhante.top>
Date2024-01-13 13:32 +0000
SubjectRe: Lisp, um mapa de trajeto
Message-ID<87edel4avz.fsf@brilhante.top>
In reply to#138
Patricia Ferreira <pferreira@example.com> 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))))))

> 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.

Eu sou o tradutor para Português do GnuPG (as minhas traduções só vão
entrar na próxima versão - 2.4.4). Em breve a minha chave será alterada
para os meus novos endereços.

[toc] | [prev] | [next] | [standalone]


#144 — Re: Lisp, um mapa de trajeto

FromPatricia Ferreira <pferreira@example.com>
Date2024-01-13 16:59 -0300
SubjectRe: Lisp, um mapa de trajeto
Message-ID<874jfhvwb9.fsf@example.com>
In reply to#143
Daniel Cerqueira <dan.list@brilhante.top> writes:

> Patricia Ferreira <pferreira@example.com> 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-----

[toc] | [prev] | [next] | [standalone]


#146 — Re: Lisp, um mapa de trajeto

FromNinguém <usenet@rasparta.org>
Date2024-01-14 10:11 +0000
SubjectRe: Lisp, um mapa de trajeto
Message-ID<uo0c1e$d6he$1@dont-email.me>
In reply to#144
On 13/01/24 19:59, Patricia Ferreira wrote:
> Já entendi.  Você quer brincar de criptografia.  Podemos brincar.
Eu gostava de "brincar de criptografia" com vocês? Posso? Quem é o dono 
da bola?

Para começar, ajudem-me a perceber como gerir as chaves pgp (gpg).
Dentro de ~/.gnupg/ tenho:
pubring.kbx (GPG keybox database)
trustdb.gpg (GPG key trust database)

O que são cada uma delas (o que contêm)?

[toc] | [prev] | [next] | [standalone]


#152 — Re: Lisp, um mapa de trajeto

FromPatricia Ferreira <pferreira@example.com>
Date2024-01-14 11:01 -0300
SubjectRe: Lisp, um mapa de trajeto
Message-ID<87edekrp3n.fsf@example.com>
In reply to#146
Ninguém <usenet@rasparta.org> writes:

> On 13/01/24 19:59, Patricia Ferreira wrote:
>> Já entendi.  Você quer brincar de criptografia.  Podemos brincar.
> Eu gostava de "brincar de criptografia" com vocês? Posso? Quem é o
> dono da bola?

O dono da bola é o Eternal September --- da minha perspectiva.

> Para começar, ajudem-me a perceber como gerir as chaves pgp (gpg).
> Dentro de ~/.gnupg/ tenho:
> pubring.kbx (GPG keybox database)
> trustdb.gpg (GPG key trust database)
>
> O que são cada uma delas (o que contêm)?

O manual explica.  O pubring.kbx, como o nome sugere, é o seu chaveiro.
Você pega a chave de alguém e guarda em algum lugar --- esse lugar é o
seu chaveiro.  O trustdb.gpg é uma base de dados que armazena a rede de
confiança.  Pra compreender o que é essa rede de confiança --- chamada
de /web of trust/, recomendo a leitura do manual, que vai explicar muito
melhor que qualquer parágrafo meu por aqui.  Eis o trecho introdutório
do capítulo 2, ``concepts'', do ``The GNU Privacy Handbook''.

--8<---------------cut here---------------start------------->8---
(*) Validating other keys on your public keyring

In Chapter 1 a procedure was given to validate your correspondents'
public keys: a correspondent's key is validated by personally checking
his key's fingerprint and then signing his public key with your private
key. By personally checking the fingerprint you can be sure that the key
really does belong to him, and since you have signed they key, you can
be sure to detect any tampering with it in the future. Unfortunately,
this procedure is awkward when either you must validate a large number
of keys or communicate with people whom you do not know personally.

GnuPG addresses this problem with a mechanism popularly known as the web
of trust. In the web of trust model, responsibility for validating
public keys is delegated to people you trust. For example, suppose

Alice has signed Blake's key, and

Blake has signed Chloe's key and Dharma's key.

If Alice trusts Blake to properly validate keys that he signs, then
Alice can infer that Chloe's and Dharma's keys are valid without having
to personally check them. She simply uses her validated copy of Blake's
public key to check that Blake's signatures on Chloe's and Dharma's are
good. In general, assuming that Alice fully trusts everybody to properly
validate keys they sign, then any key signed by a valid key is also
considered valid. The root is Alice's key, which is axiomatically
assumed to be valid.
--8<---------------cut here---------------end--------------->8---

[toc] | [prev] | [next] | [standalone]


#153 — Re: Lisp, um mapa de trajeto

FromNinguém <usenet@rasparta.org>
Date2024-01-14 14:18 +0000
SubjectRe: Lisp, um mapa de trajeto
Message-ID<uo0qgd$f60a$1@dont-email.me>
In reply to#152
On 14/01/24 14:01, Patricia Ferreira wrote:
> O pubring.kbx, como o nome sugere, é o seu chaveiro.
> Você pega a chave de alguém e guarda em algum lugar --- esse lugar é o
> seu chaveiro.

Isso. Mas a minha chave não tem só a parte pública. Tem também a porção 
privada dela.
Onde fica guardada a minha chave privada, partindo do princípio que a 
parte pública, ainda que minha, fique nesse ficheiro?

> O trustdb.gpg é uma base de dados que armazena a rede de
> confiança.

Entendi.

[toc] | [prev] | [next] | [standalone]


#154 — Re: Lisp, um mapa de trajeto

FromPatricia Ferreira <pferreira@example.com>
Date2024-01-14 11:33 -0300
SubjectRe: Lisp, um mapa de trajeto
Message-ID<878r4srnlk.fsf@example.com>
In reply to#153
Ninguém <usenet@rasparta.org> writes:

> On 14/01/24 14:01, Patricia Ferreira wrote:
>> O pubring.kbx, como o nome sugere, é o seu chaveiro.
>> Você pega a chave de alguém e guarda em algum lugar --- esse lugar é o
>> seu chaveiro.
>
> Isso. Mas a minha chave não tem só a parte pública. Tem também a
> porção privada dela.
> Onde fica guardada a minha chave privada, partindo do princípio que a
> parte pública, ainda que minha, fique nesse ficheiro?

Parece que o GnuPG hoje armazena chaves privadas no diretório

  ~/.gnupg/private-keys-v1.d/

O manual gpg(1) diz:

--8<---------------cut here---------------start------------->8---
  --secret-keyring file
         This  is  an  obsolete  option and ignored.  All secret keys are
         stored in the `private-keys-v1.d' directory below the GnuPG home
         directory.
--8<---------------cut here---------------end--------------->8---

Diga o capítulo 1 em

  https://www.gnupg.org/gph/en/manual.html#INTRO

Depois de gerar sua chave, observe o diretório.

[toc] | [prev] | [next] | [standalone]


#148 — Re: Lisp, um mapa de trajeto

FromDaniel Cerqueira <dan.list@brilhante.top>
Date2024-01-14 12:02 +0000
SubjectRe: Lisp, um mapa de trajeto
Message-ID<87a5p83yxq.fsf@brilhante.top>
In reply to#144
Patricia Ferreira <pferreira@example.com> writes:

> 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.

É para resolver usando Common Lisp, ou o Lisp simples (como do último
exercício)? Tens de me dizer isso.

Também é para criar apenas uma função? Recursiva? Ou posso usar
quaisquer outras funções?

> 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.

Ahahahah! Essa foi boa!

> -----BEGIN PUBLIC KEY-----
> MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEA0eTpkgBTghWSEr8UsoqX
> yTac3Cx3QBal/UG5xbP/6oaWo9f3uzS5smvzN6uBopjeDxf7YqFLmXeIqk1kfBd0
> osFhMhFnGqsLnfQ6q+Kv0qMMOa9cWC2V53K5yoQ3EoxR1kJJ8wDmsc/Dio7Uqz/f
> Wb1vXIrjzqCuwbHEeu0A4cqCh9GWdcgUubbzgN5h/SNMkrWl9nikyyxqK7zOjIm3
> 6ET5Ag4c3Zwp9w1+wMpxz39vdAtp82knQuVgyBwKTJX4U15NTWhdk09tXI8i/e8d
> JtZXk8SDY5rYgELryZvecPMH5ik03z+8i09vuga/IelpZ6w2GmxM20yDFNzBF84F
> iQIBJQ==
> -----END PUBLIC KEY-----

Esta chave pública é inválida. O meu GnuPG não a importa.

[toc] | [prev] | [next] | [standalone]


#151 — Re: Lisp, um mapa de trajeto

FromPatricia Ferreira <pferreira@example.com>
Date2024-01-14 10:51 -0300
SubjectRe: Lisp, um mapa de trajeto
Message-ID<87mst8rpjj.fsf@example.com>
In reply to#148
Daniel Cerqueira <dan.list@brilhante.top> writes:

> Patricia Ferreira <pferreira@example.com> writes:
>
>> 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.
>
> É para resolver usando Common Lisp, ou o Lisp simples (como do último
> exercício)? Tens de me dizer isso.
>
> Também é para criar apenas uma função? Recursiva? Ou posso usar
> quaisquer outras funções?

Como primeira versão, use apenas recursão, cons, cond, car, cdr e essas
coisas.  Vamos dar uma olhada no algoritmo primeiro de uma forma pura.

>> 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.
>
> Ahahahah! Essa foi boa!
>
>> -----BEGIN PUBLIC KEY-----
>> MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEA0eTpkgBTghWSEr8UsoqX
>> yTac3Cx3QBal/UG5xbP/6oaWo9f3uzS5smvzN6uBopjeDxf7YqFLmXeIqk1kfBd0
>> osFhMhFnGqsLnfQ6q+Kv0qMMOa9cWC2V53K5yoQ3EoxR1kJJ8wDmsc/Dio7Uqz/f
>> Wb1vXIrjzqCuwbHEeu0A4cqCh9GWdcgUubbzgN5h/SNMkrWl9nikyyxqK7zOjIm3
>> 6ET5Ag4c3Zwp9w1+wMpxz39vdAtp82knQuVgyBwKTJX4U15NTWhdk09tXI8i/e8d
>> JtZXk8SDY5rYgELryZvecPMH5ik03z+8i09vuga/IelpZ6w2GmxM20yDFNzBF84F
>> iQIBJQ==
>> -----END PUBLIC KEY-----
>
> Esta chave pública é inválida. O meu GnuPG não a importa.

Que erro ele dá?  Será que ele está querendo o tipo da chave?  É uma
RSA.  Eis o módulo e o expoente público:

--8<---------------cut here---------------start------------->8---
%openssl.exe rsa -in pub.txt -pubin -text
writing RSA key
RSA Public-Key: (2048 bit)
Modulus:
    00:d1:e4:e9:92:00:53:82:15:92:12:bf:14:b2:8a:
    97:c9:36:9c:dc:2c:77:40:16:a5:fd:41:b9:c5:b3:
    ff:ea:86:96:a3:d7:f7:bb:34:b9:b2:6b:f3:37:ab:
    81:a2:98:de:0f:17:fb:62:a1:4b:99:77:88:aa:4d:
    64:7c:17:74:a2:c1:61:32:11:67:1a:ab:0b:9d:f4:
    3a:ab:e2:af:d2:a3:0c:39:af:5c:58:2d:95:e7:72:
    b9:ca:84:37:12:8c:51:d6:42:49:f3:00:e6:b1:cf:
    c3:8a:8e:d4:ab:3f:df:59:bd:6f:5c:8a:e3:ce:a0:
    ae:c1:b1:c4:7a:ed:00:e1:ca:82:87:d1:96:75:c8:
    14:b9:b6:f3:80:de:61:fd:23:4c:92:b5:a5:f6:78:
    a4:cb:2c:6a:2b:bc:ce:8c:89:b7:e8:44:f9:02:0e:
    1c:dd:9c:29:f7:0d:7e:c0:ca:71:cf:7f:6f:74:0b:
    69:f3:69:27:42:e5:60:c8:1c:0a:4c:95:f8:53:5e:
    4d:4d:68:5d:93:4f:6d:5c:8f:22:fd:ef:1d:26:d6:
    57:93:c4:83:63:9a:d8:80:42:eb:c9:9b:de:70:f3:
    07:e6:29:34:df:3f:bc:8b:4f:6f:ba:06:bf:21:e9:
    69:67:ac:36:1a:6c:4c:db:4c:83:14:dc:c1:17:ce:
    05:89
Exponent: 37 (0x25)
-----BEGIN PUBLIC KEY-----
MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEA0eTpkgBTghWSEr8UsoqX
yTac3Cx3QBal/UG5xbP/6oaWo9f3uzS5smvzN6uBopjeDxf7YqFLmXeIqk1kfBd0
osFhMhFnGqsLnfQ6q+Kv0qMMOa9cWC2V53K5yoQ3EoxR1kJJ8wDmsc/Dio7Uqz/f
Wb1vXIrjzqCuwbHEeu0A4cqCh9GWdcgUubbzgN5h/SNMkrWl9nikyyxqK7zOjIm3
6ET5Ag4c3Zwp9w1+wMpxz39vdAtp82knQuVgyBwKTJX4U15NTWhdk09tXI8i/e8d
JtZXk8SDY5rYgELryZvecPMH5ik03z+8i09vuga/IelpZ6w2GmxM20yDFNzBF84F
iQIBJQ==
-----END PUBLIC KEY-----
--8<---------------cut here---------------end--------------->8---

[toc] | [prev] | [next] | [standalone]


#155 — Encriptação (was: Re: Lisp, um mapa de trajeto)

From"Nuno Silva" <nunojsilva@invalid.invalid>
Date2024-01-14 15:44 +0000
SubjectEncriptação (was: Re: Lisp, um mapa de trajeto)
Message-ID<uo0vep$gfc8$1@dont-email.me>
In reply to#151
On 2024-01-14, Patricia Ferreira wrote:

> Daniel Cerqueira <dan.list@brilhante.top> writes:
>
>> Patricia Ferreira <pferreira@example.com> writes:
>>
>>> 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.
>>
>> Ahahahah! Essa foi boa!
>>
>>> -----BEGIN PUBLIC KEY-----
>>> MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEA0eTpkgBTghWSEr8UsoqX
>>> yTac3Cx3QBal/UG5xbP/6oaWo9f3uzS5smvzN6uBopjeDxf7YqFLmXeIqk1kfBd0
>>> osFhMhFnGqsLnfQ6q+Kv0qMMOa9cWC2V53K5yoQ3EoxR1kJJ8wDmsc/Dio7Uqz/f
>>> Wb1vXIrjzqCuwbHEeu0A4cqCh9GWdcgUubbzgN5h/SNMkrWl9nikyyxqK7zOjIm3
>>> 6ET5Ag4c3Zwp9w1+wMpxz39vdAtp82knQuVgyBwKTJX4U15NTWhdk09tXI8i/e8d
>>> JtZXk8SDY5rYgELryZvecPMH5ik03z+8i09vuga/IelpZ6w2GmxM20yDFNzBF84F
>>> iQIBJQ==
>>> -----END PUBLIC KEY-----
>>
>> Esta chave pública é inválida. O meu GnuPG não a importa.
>
> Que erro ele dá?  Será que ele está querendo o tipo da chave?  É uma
> RSA.  Eis o módulo e o expoente público:
>
>
> %openssl.exe rsa -in pub.txt -pubin -text

openssl? Estás a usar esta chave para OpenPGP ou para S/MIME?

-- 
Nuno Silva

[toc] | [prev] | [next] | [standalone]


#158 — Re: Encriptação

FromPatricia Ferreira <pferreira@example.com>
Date2024-01-14 13:30 -0300
SubjectRe: Encriptação
Message-ID<871qajlvso.fsf@yaxenu.org>
In reply to#155
"Nuno Silva" <nunojsilva@invalid.invalid> writes:

> On 2024-01-14, Patricia Ferreira wrote:
>
>> Daniel Cerqueira <dan.list@brilhante.top> writes:
>>
>>> Patricia Ferreira <pferreira@example.com> writes:
>>>
>>>> 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.
>>>
>>> Ahahahah! Essa foi boa!
>>>
>>>> -----BEGIN PUBLIC KEY-----
>>>> MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEA0eTpkgBTghWSEr8UsoqX
>>>> yTac3Cx3QBal/UG5xbP/6oaWo9f3uzS5smvzN6uBopjeDxf7YqFLmXeIqk1kfBd0
>>>> osFhMhFnGqsLnfQ6q+Kv0qMMOa9cWC2V53K5yoQ3EoxR1kJJ8wDmsc/Dio7Uqz/f
>>>> Wb1vXIrjzqCuwbHEeu0A4cqCh9GWdcgUubbzgN5h/SNMkrWl9nikyyxqK7zOjIm3
>>>> 6ET5Ag4c3Zwp9w1+wMpxz39vdAtp82knQuVgyBwKTJX4U15NTWhdk09tXI8i/e8d
>>>> JtZXk8SDY5rYgELryZvecPMH5ik03z+8i09vuga/IelpZ6w2GmxM20yDFNzBF84F
>>>> iQIBJQ==
>>>> -----END PUBLIC KEY-----
>>>
>>> Esta chave pública é inválida. O meu GnuPG não a importa.
>>
>> Que erro ele dá?  Será que ele está querendo o tipo da chave?  É uma
>> RSA.  Eis o módulo e o expoente público:
>>
>>
>> %openssl.exe rsa -in pub.txt -pubin -text
>
> openssl? Estás a usar esta chave para OpenPGP ou para S/MIME?

Não estou usando qualquer software pra e-mail e criptografia.  Todos
deveríamos conseguir extrair a chave pública acima, importá-la num
software e então encriptar alguma coisa (pra eu ler).  Só transmiti uma
chave pública usando o formato PEM --- acima.  ``PEM files are
essentially base64 encoded versions of the DER encoded data.''  DER é
uma codificação em binário.  O que está escrito acima é essencialmente
uma estrutura

    PublicKeyInfo ::= SEQUENCE {
      algorithm   AlgorithmIdentifier,
      PublicKey   BIT STRING
    }
    
    AlgorithmIdentifier ::= SEQUENCE {
      algorithm   OBJECT IDENTIFIER,
      parameters  ANY DEFINED BY algorithm OPTIONAL
    }

Veja mais em, por exemplo,

  https://mbed-tls.readthedocs.io/en/latest/kb/cryptography/asn1-key-structures-in-der-and-pem/#pem-files

Matematicamente, uma chave pública RSA é um par de números (n, e), sendo
n um módulo e o outro é um expoente, chamado de ``expoente público''.
(Existe o privado na chave privada.)  Abaixo, o módulo está expresso em
base 16 (porque o número é grande), ignorando-se os dois pontos como
separador.  O expoente é 37 em base 10, ou seja, 25 em base 16.)  O
padrão que rege essa sintaxe é o X.509.

--8<---------------cut here---------------start------------->8---
%openssl.exe rsa -in pub.txt -pubin -text
writing RSA key
RSA Public-Key: (2048 bit)
Modulus:
    00:d1:e4:e9:92:00:53:82:15:92:12:bf:14:b2:8a:
    97:c9:36:9c:dc:2c:77:40:16:a5:fd:41:b9:c5:b3:
    ff:ea:86:96:a3:d7:f7:bb:34:b9:b2:6b:f3:37:ab:
    81:a2:98:de:0f:17:fb:62:a1:4b:99:77:88:aa:4d:
    64:7c:17:74:a2:c1:61:32:11:67:1a:ab:0b:9d:f4:
    3a:ab:e2:af:d2:a3:0c:39:af:5c:58:2d:95:e7:72:
    b9:ca:84:37:12:8c:51:d6:42:49:f3:00:e6:b1:cf:
    c3:8a:8e:d4:ab:3f:df:59:bd:6f:5c:8a:e3:ce:a0:
    ae:c1:b1:c4:7a:ed:00:e1:ca:82:87:d1:96:75:c8:
    14:b9:b6:f3:80:de:61:fd:23:4c:92:b5:a5:f6:78:
    a4:cb:2c:6a:2b:bc:ce:8c:89:b7:e8:44:f9:02:0e:
    1c:dd:9c:29:f7:0d:7e:c0:ca:71:cf:7f:6f:74:0b:
    69:f3:69:27:42:e5:60:c8:1c:0a:4c:95:f8:53:5e:
    4d:4d:68:5d:93:4f:6d:5c:8f:22:fd:ef:1d:26:d6:
    57:93:c4:83:63:9a:d8:80:42:eb:c9:9b:de:70:f3:
    07:e6:29:34:df:3f:bc:8b:4f:6f:ba:06:bf:21:e9:
    69:67:ac:36:1a:6c:4c:db:4c:83:14:dc:c1:17:ce:
    05:89
Exponent: 37 (0x25)
-----BEGIN PUBLIC KEY-----
MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEA0eTpkgBTghWSEr8UsoqX
yTac3Cx3QBal/UG5xbP/6oaWo9f3uzS5smvzN6uBopjeDxf7YqFLmXeIqk1kfBd0
osFhMhFnGqsLnfQ6q+Kv0qMMOa9cWC2V53K5yoQ3EoxR1kJJ8wDmsc/Dio7Uqz/f
Wb1vXIrjzqCuwbHEeu0A4cqCh9GWdcgUubbzgN5h/SNMkrWl9nikyyxqK7zOjIm3
6ET5Ag4c3Zwp9w1+wMpxz39vdAtp82knQuVgyBwKTJX4U15NTWhdk09tXI8i/e8d
JtZXk8SDY5rYgELryZvecPMH5ik03z+8i09vuga/IelpZ6w2GmxM20yDFNzBF84F
iQIBJQ==
-----END PUBLIC KEY-----
--8<---------------cut here---------------end--------------->8---

[toc] | [prev] | [next] | [standalone]


#160 — Re: Lisp, um mapa de trajeto

FromDaniel Cerqueira <dan.list@brilhante.top>
Date2024-01-14 22:25 +0000
SubjectRe: Lisp, um mapa de trajeto
Message-ID<87o7dn3636.fsf@brilhante.top>
In reply to#151
Patricia Ferreira <pferreira@example.com> writes:

> Daniel Cerqueira <dan.list@brilhante.top> writes:
>
>> Patricia Ferreira <pferreira@example.com> writes:
>>
>>> 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.
>>
>> É para resolver usando Common Lisp, ou o Lisp simples (como do último
>> exercício)? Tens de me dizer isso.
>>
>> Também é para criar apenas uma função? Recursiva? Ou posso usar
>> quaisquer outras funções?
>
> Como primeira versão, use apenas recursão, cons, cond, car, cdr e essas
> coisas.  Vamos dar uma olhada no algoritmo primeiro de uma forma pura.
>
>>> 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.
>>
>> Ahahahah! Essa foi boa!
>>
>>> -----BEGIN PUBLIC KEY-----
>>> MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEA0eTpkgBTghWSEr8UsoqX
>>> yTac3Cx3QBal/UG5xbP/6oaWo9f3uzS5smvzN6uBopjeDxf7YqFLmXeIqk1kfBd0
>>> osFhMhFnGqsLnfQ6q+Kv0qMMOa9cWC2V53K5yoQ3EoxR1kJJ8wDmsc/Dio7Uqz/f
>>> Wb1vXIrjzqCuwbHEeu0A4cqCh9GWdcgUubbzgN5h/SNMkrWl9nikyyxqK7zOjIm3
>>> 6ET5Ag4c3Zwp9w1+wMpxz39vdAtp82knQuVgyBwKTJX4U15NTWhdk09tXI8i/e8d
>>> JtZXk8SDY5rYgELryZvecPMH5ik03z+8i09vuga/IelpZ6w2GmxM20yDFNzBF84F
>>> iQIBJQ==
>>> -----END PUBLIC KEY-----
>>
>> Esta chave pública é inválida. O meu GnuPG não a importa.
>
> Que erro ele dá?  Será que ele está querendo o tipo da chave?  É uma
> RSA.  Eis o módulo e o expoente público:

O GnuPG só aceita chaves geradas pela norma OpenPGP. Não obtenho qualquer
erro, só diz "0 chaves importadas".
Deixa lá.

[toc] | [prev] | [next] | [standalone]


#162 — Re: Lisp, um mapa de trajeto

FromPatricia Ferreira <pferreira@example.com>
Date2024-01-15 00:25 -0300
SubjectRe: Lisp, um mapa de trajeto
Message-ID<874jff1dbm.fsf@yaxenu.org>
In reply to#160
Daniel Cerqueira <dan.list@brilhante.top> writes:

> Patricia Ferreira <pferreira@example.com> writes:
>
>> Daniel Cerqueira <dan.list@brilhante.top> writes:
>>
>>> Patricia Ferreira <pferreira@example.com> writes:
>>>
>>>> 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.
>>>
>>> É para resolver usando Common Lisp, ou o Lisp simples (como do último
>>> exercício)? Tens de me dizer isso.
>>>
>>> Também é para criar apenas uma função? Recursiva? Ou posso usar
>>> quaisquer outras funções?
>>
>> Como primeira versão, use apenas recursão, cons, cond, car, cdr e essas
>> coisas.  Vamos dar uma olhada no algoritmo primeiro de uma forma pura.
>>
>>>> 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.
>>>
>>> Ahahahah! Essa foi boa!
>>>
>>>> -----BEGIN PUBLIC KEY-----
>>>> MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEA0eTpkgBTghWSEr8UsoqX
>>>> yTac3Cx3QBal/UG5xbP/6oaWo9f3uzS5smvzN6uBopjeDxf7YqFLmXeIqk1kfBd0
>>>> osFhMhFnGqsLnfQ6q+Kv0qMMOa9cWC2V53K5yoQ3EoxR1kJJ8wDmsc/Dio7Uqz/f
>>>> Wb1vXIrjzqCuwbHEeu0A4cqCh9GWdcgUubbzgN5h/SNMkrWl9nikyyxqK7zOjIm3
>>>> 6ET5Ag4c3Zwp9w1+wMpxz39vdAtp82knQuVgyBwKTJX4U15NTWhdk09tXI8i/e8d
>>>> JtZXk8SDY5rYgELryZvecPMH5ik03z+8i09vuga/IelpZ6w2GmxM20yDFNzBF84F
>>>> iQIBJQ==
>>>> -----END PUBLIC KEY-----
>>>
>>> Esta chave pública é inválida. O meu GnuPG não a importa.
>>
>> Que erro ele dá?  Será que ele está querendo o tipo da chave?  É uma
>> RSA.  Eis o módulo e o expoente público:
>
> O GnuPG só aceita chaves geradas pela norma OpenPGP. Não obtenho qualquer
> erro, só diz "0 chaves importadas".
> Deixa lá.

Então é isso.  Você pediu minha chave pública e ela está aí em cima.  O
parsing da informação é trivial: basta ler de BEGIN a END, decodificar,
recodificar e importar.  Nem os parênteses angulares de citação de
e-mail são um problema: eles não pertencem ao alfabeto da BASE 64.  É
por isso que o cidadão mediano não usa essa criptografia de chave
pública via e-mail.  Os chamados especialistas não têm um mínimo de
habilidade.  Seu OpenPGP encontrará o que deseja no bloco a seguir.
(Knock yourself out.)

-----BEGIN PGP PUBLIC KEY BLOCK-----

mQGNBGWkmD4BDAC7/JAg6R5GuNXcN72un2nzzkNA0IZ1YEmsU7rdwUHjwHUlIO5D
ai2I3CLKKbIJkPKDqSqcreodAPYSlWTVeIPXQzltp4apDMKwANtdwBgop11+mcif
vjRIg2gX3cFOisCRjaH44N1pjWjIMVdULtRLmUwAQlEr1iaSGOaP8pQJltbdDdyx
Q/SNKZgIjg1rmedV1NB26w5YRppYJXEOH2mIciqnr0O5l9e5N3ESt3HVtqpUCU+r
PoDGAi6yMBw3AG4B/LdC5AvOsxH07SQ+8ypWAEc7vZiRg9iJfmksx2zqy6hL3yH4
3ZjctsODIbGBGZeGki6RYK/GfLKpXOVeVfmW3bEif28boJQFqcStyg+Yd2ZDZ60d
1Nd+lFZMuoYJtO8/YKKZIVpXBwiSbNRFWU52H5wesIk6uek78hCwaP2k6NFIWW+3
0fSjCog9u6OGFg6/7XcR/QtOLRi6b/x5zBwd/vTkxB5fRKWlBZYEnXymAY6VHAVi
aOCT7wuMyeWpNvMAEQEAAbQoUGF0cmljaWEgRmVycmVpcmEgPHBhdHJpY2lhQGV4
YW1wbGUuY29tPokB1AQTAQgAPhYhBB3azkN1pIPYYlAH4ZDwloddOF/VBQJlpJg+
AhsDBQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEJDwloddOF/VNnEL
/3p34gbhWXPQ9Qx03wsXdZ8NI97sI4qwAWPfLl+s1piQ5rDcDgaVNTYpCcs7HIft
QPuHvI6VyP+AcRRGMu8eQlvHk5jIWnfYq6aL71gcRykqBowRsqQU2vizoUU44y7j
c3MMSMfSRfn3Qpj1HSvuRc933/6HJzv4S0We85B4kwCjHM90LZstJr0T4bLijoTi
rZVlc1L94mAnOl0DHC/HdZObvYcPdlXXUEO0hHGueBRWv9x7jsoITK0hhc64fRkS
/pKNlykcvS57a2B8RU9zFS3fiW/m3iqavHmegw/setZK3Xe5hF1mizY56roKNoGn
4P1brY8KGJuURJDgokkGpulqO5wqhQvm87RU2aPiFvvwzkYrMlj+oT2Wq8InkwBn
q6rTCE1Rd8c99U5KBiNDszNy7hP+pBZyuwTERHXqR2acyLm9R2LgPk++y2hoU2WP
P9OuQu9gX3mMPqqBhjgl8nm+lEPTTK+YvJkXOyE2NKMeUHlx0eUM1ze8kToY8f9p
ELkBjQRlpJg+AQwAyW+p352yAfLwd1eWlUBdHeJh5t58QupjzuDZA0FcGmvtCUik
WuaqI6rWDu7cF9wncGpjLPepb2zqYZ8w2jqUKGotg/bF63vlPkg7tg7PpCjr9bAn
2OoUBBSJPck56Ya+Y6I+3HQVsGzfDGzfhxFE/d3oz00KKyPhctOFjDZOfSIy+111
WCDcRxA87oR/8vHetoTtILDLydLVrZtwEf3jbEiTFewp6vKRRc1VIf1l7LALwMO3
w8SH3zfjYIy8Cmz/z7MKohBPp8aiAfhESHw5TsLPIrnho9qz60bVMg1wRNKmpE3a
VESlHjs9RUwprFGmB1WJQSN4cKyLqpSLlVjM6BF6shXhDSpnaEka8iVk/6yxM04s
LmzY98knGIMOC12I0bm0XVwHThoHTl+6gwz5m1JBauykxFLoapFM4SbQssVfdANp
ag4ZcT7YRbsXaoG5myXTZ8wmapXu5Eb88MmmEaDzdM3/DKaOswPYk4B4yTe4x65J
ncNPSP+1U8Lt5BDBABEBAAGJAbwEGAEIACYWIQQd2s5DdaSD2GJQB+GQ8JaHXThf
1QUCZaSYPgIbDAUJA8JnAAAKCRCQ8JaHXThf1cvdDACqYTVbPXs8YXpPxrEG0M1c
Eobn6G3fXKNyJlGKwlNUEgS3/ipJmVDNpyLkXHjW25sLYtk517dkRJs7BBqxc6IA
Ao3T/NEmiexIQocnF7wD33O8JXzqCxz9+OrF8ehpMtJxuAIFbzmPzpl2tZyHzMQG
ACp9T6is7kxhYERcBpWJfnjhyPGXnA3ULgz0BTDWK0pXZMXiKU47/0qd+6phUOAp
r6cSxvJxBb9K+1zvFeGX967nQR5NzgFQF/ocD1h4CzfG6b6PIz/BjYlqcmdkAmHs
3xlfJRvH1Dw8qDWn/CnjSVSn1hTKlejpFC6n16IAlLDEASr0WWstj4DYpHT3PLmY
3oY0N01CZ6LDTTbgT7QVTZ3ENCzwIrTSfFsFcAXdgrsJJkTAZsAYEKqODNOnZ1uD
lh95OLT2RWwSRUr+Yz2w4qutahbefoKhmRK233nVz8p4Uhxf06XFd5/oizbqtELi
q3edzP/QdaFYkIZm361YDzl62mRGiqSmzNEOBOk72iw=
=KA/c
-----END PGP PUBLIC KEY BLOCK-----

[toc] | [prev] | [next] | [standalone]


#164 — Re: Lisp, um mapa de trajeto

FromDaniel Cerqueira <dan.list@brilhante.top>
Date2024-01-15 15:43 +0000
SubjectRe: Lisp, um mapa de trajeto
Message-ID<87a5p638mt.fsf@brilhante.top>
In reply to#162
Patricia Ferreira <pferreira@example.com> writes:

>> Patricia Ferreira <pferreira@example.com> writes:
>>
>>> Daniel Cerqueira <dan.list@brilhante.top> writes:
>>>
>>>> Patricia Ferreira <pferreira@example.com> writes:
>>>>
>>>>> 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.
>>>>
>>>> É para resolver usando Common Lisp, ou o Lisp simples (como do último
>>>> exercício)? Tens de me dizer isso.
>>>>
>>>> Também é para criar apenas uma função? Recursiva? Ou posso usar
>>>> quaisquer outras funções?
>>>
>>> Como primeira versão, use apenas recursão, cons, cond, car, cdr e essas
>>> coisas.  Vamos dar uma olhada no algoritmo primeiro de uma forma pura.

Está-me a faltar uma mensagem. Não a encontro. Vou responder assim, aqui.

Se é para apenas usar uma função recursiva, com as funções primitivas de
Lisp, parece-me mais díficil.

Principalmente porque:

(find-path 'C 'D sample-graph) produz '(C D) e não '((C D))

(find-path 'E 'D sample-graph) produz '((E F D) (E C D)) e não
'((E C D) (E F D))

Outra pergunta:
O segundo argumento de /find-path/ tem de sempre ter os vértices como
NIL? Para este grafo, só o 'D e o 'G podem ficar no segundo argumento?

Consegues dar mais exemplos, para além de:

   (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

?

[toc] | [prev] | [next] | [standalone]


#165 — Re: Lisp, um mapa de trajeto

FromPatricia Ferreira <pferreira@example.com>
Date2024-01-15 14:00 -0300
SubjectRe: Lisp, um mapa de trajeto
Message-ID<87bk9mzg3b.fsf@example.com>
In reply to#164
Daniel Cerqueira <dan.list@brilhante.top> writes:

> Patricia Ferreira <pferreira@example.com> writes:
>
>>> Patricia Ferreira <pferreira@example.com> writes:
>>>
>>>> Daniel Cerqueira <dan.list@brilhante.top> writes:
>>>>
>>>>> Patricia Ferreira <pferreira@example.com> writes:
>>>>>
>>>>>> 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.
>>>>>
>>>>> É para resolver usando Common Lisp, ou o Lisp simples (como do último
>>>>> exercício)? Tens de me dizer isso.
>>>>>
>>>>> Também é para criar apenas uma função? Recursiva? Ou posso usar
>>>>> quaisquer outras funções?
>>>>
>>>> Como primeira versão, use apenas recursão, cons, cond, car, cdr e essas
>>>> coisas.  Vamos dar uma olhada no algoritmo primeiro de uma forma pura.
>
> Está-me a faltar uma mensagem. Não a encontro. Vou responder assim, aqui.
>
> Se é para apenas usar uma função recursiva, com as funções primitivas de
> Lisp, parece-me mais díficil.

É mais difícil.  (Estamos fazendo um diagnóstico.)

> Principalmente porque:
>
> (find-path 'C 'D sample-graph) produz '(C D) e não '((C D))

Pode assumir que seja '((C D)) porque é trivial transformá-la pra
definição do problema.  (O objetivo do exercício não está aí.)  (Um
segundo procedimento colapsa listas unitárias pro /car/ delas.)

> (find-path 'E 'D sample-graph) produz '((E F D) (E C D)) e não
> '((E C D) (E F D))

Okay, façamos uma simplificação então.  Faça com que find-path encontre
apenas um caminho entre os vértices, ou seja, ou ela produz (E F D) ou
ela produz (E C D) para /sample-graph/.

Mais fácil assim.

> Outra pergunta:
> O segundo argumento de /find-path/ tem de sempre ter os vértices como
> NIL? Para este grafo, só o 'D e o 'G podem ficar no segundo argumento?

O segundo argumento é um vértice de destino.  Qualquer destino pode
entrar lá.  Se o caminho não existir, /find-path/ produz nil.  (Se o
destino nem existir, pode retornar nil também, mas pode assumir que
origem e destino sempre existem.)

> Consegues dar mais exemplos, para além de:
>
>    (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
>
> ?

    (find-path 'C 'D sample-graph) produza '(C D)
    (find-path 'E 'D sample-graph) produza (or '(E F D) '(E C D))
    (find-path 'C 'G sample-graph) produza nil
    (find-path 'A 'D sample-graph) produza 
       (or '(A B F G) (A B E F G) (A E F G))
    (find-path 'A 'Z sample-graph) produza nil
    (find-path 'Z 'B sample-graph) produza nil

Pode assumir que origem e destino sempre existem.  (Ignore exemplos como
os dois últimos, A -> Z e Z -> B.)

[toc] | [prev] | [next] | [standalone]


#168 — Re: Lisp, um mapa de trajeto

FromDaniel Cerqueira <dan.list@brilhante.top>
Date2024-01-16 18:10 +0000
SubjectRe: Lisp, um mapa de trajeto
Message-ID<87bk9l9mki.fsf@brilhante.top>
In reply to#165
Patricia Ferreira <pferreira@example.com> writes:

> Daniel Cerqueira <dan.list@brilhante.top> writes:
>
>> Patricia Ferreira <pferreira@example.com> writes:
>>
>>>> Patricia Ferreira <pferreira@example.com> writes:
>>>>
>>>>> Daniel Cerqueira <dan.list@brilhante.top> writes:
>>>>>
>>>>>> Patricia Ferreira <pferreira@example.com> writes:
>>>>>>
>>>>>>> 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.
>>>>>>
>>>>>> É para resolver usando Common Lisp, ou o Lisp simples (como do último
>>>>>> exercício)? Tens de me dizer isso.
>>>>>>
>>>>>> Também é para criar apenas uma função? Recursiva? Ou posso usar
>>>>>> quaisquer outras funções?
>>>>>
>>>>> Como primeira versão, use apenas recursão, cons, cond, car, cdr e essas
>>>>> coisas.  Vamos dar uma olhada no algoritmo primeiro de uma forma pura.
>>
>> Está-me a faltar uma mensagem. Não a encontro. Vou responder assim, aqui.
>>
>> Se é para apenas usar uma função recursiva, com as funções primitivas de
>> Lisp, parece-me mais díficil.
>
> É mais difícil.  (Estamos fazendo um diagnóstico.)
>
>> Principalmente porque:
>>
>> (find-path 'C 'D sample-graph) produz '(C D) e não '((C D))
>
> Pode assumir que seja '((C D)) porque é trivial transformá-la pra
> definição do problema.  (O objetivo do exercício não está aí.)  (Um
> segundo procedimento colapsa listas unitárias pro /car/ delas.)
>
>> (find-path 'E 'D sample-graph) produz '((E F D) (E C D)) e não
>> '((E C D) (E F D))
>
> Okay, façamos uma simplificação então.  Faça com que find-path encontre
> apenas um caminho entre os vértices, ou seja, ou ela produz (E F D) ou
> ela produz (E C D) para /sample-graph/.
>
> Mais fácil assim.
>
>> Outra pergunta:
>> O segundo argumento de /find-path/ tem de sempre ter os vértices como
>> NIL? Para este grafo, só o 'D e o 'G podem ficar no segundo argumento?
>
> O segundo argumento é um vértice de destino.  Qualquer destino pode
> entrar lá.  Se o caminho não existir, /find-path/ produz nil.  (Se o
> destino nem existir, pode retornar nil também, mas pode assumir que
> origem e destino sempre existem.)
>
>> Consegues dar mais exemplos, para além de:
>>
>>    (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
>>
>> ?
>
>     (find-path 'C 'D sample-graph) produza '(C D)
>     (find-path 'E 'D sample-graph) produza (or '(E F D) '(E C D))
>     (find-path 'C 'G sample-graph) produza nil
>     (find-path 'A 'D sample-graph) produza 
>        (or '(A B F G) (A B E F G) (A E F G))
>     (find-path 'A 'Z sample-graph) produza nil
>     (find-path 'Z 'B sample-graph) produza nil
>
> Pode assumir que origem e destino sempre existem.  (Ignore exemplos como
> os dois últimos, A -> Z e Z -> B.)

Mesmo assim. Não estou a ver maneira de isso ser possível, dado eu só
poder fazer uma função, com o cond, car, cdr, eq, atom, cons, etc..

Não consigo fazer tal função.

Tem uma solução? Qual é?

[toc] | [prev] | [next] | [standalone]


#169 — Re: Lisp, um mapa de trajeto

FromPatricia Ferreira <pferreira@example.com>
Date2024-01-16 22:06 -0300
SubjectRe: Lisp, um mapa de trajeto
Message-ID<87r0ign4zd.fsf@yaxenu.org>
In reply to#168
Daniel Cerqueira <dan.list@brilhante.top> writes:

> Patricia Ferreira <pferreira@example.com> writes:
>
>> Daniel Cerqueira <dan.list@brilhante.top> writes:
>>
>>> Patricia Ferreira <pferreira@example.com> writes:
>>>
>>>>> Patricia Ferreira <pferreira@example.com> writes:
>>>>>
>>>>>> Daniel Cerqueira <dan.list@brilhante.top> writes:
>>>>>>
>>>>>>> Patricia Ferreira <pferreira@example.com> writes:
>>>>>>>
>>>>>>>> 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.
>>>>>>>
>>>>>>> É para resolver usando Common Lisp, ou o Lisp simples (como do último
>>>>>>> exercício)? Tens de me dizer isso.
>>>>>>>
>>>>>>> Também é para criar apenas uma função? Recursiva? Ou posso usar
>>>>>>> quaisquer outras funções?
>>>>>>
>>>>>> Como primeira versão, use apenas recursão, cons, cond, car, cdr e essas
>>>>>> coisas.  Vamos dar uma olhada no algoritmo primeiro de uma forma pura.
>>>
>>> Está-me a faltar uma mensagem. Não a encontro. Vou responder assim, aqui.
>>>
>>> Se é para apenas usar uma função recursiva, com as funções primitivas de
>>> Lisp, parece-me mais díficil.
>>
>> É mais difícil.  (Estamos fazendo um diagnóstico.)
>>
>>> Principalmente porque:
>>>
>>> (find-path 'C 'D sample-graph) produz '(C D) e não '((C D))
>>
>> Pode assumir que seja '((C D)) porque é trivial transformá-la pra
>> definição do problema.  (O objetivo do exercício não está aí.)  (Um
>> segundo procedimento colapsa listas unitárias pro /car/ delas.)
>>
>>> (find-path 'E 'D sample-graph) produz '((E F D) (E C D)) e não
>>> '((E C D) (E F D))
>>
>> Okay, façamos uma simplificação então.  Faça com que find-path encontre
>> apenas um caminho entre os vértices, ou seja, ou ela produz (E F D) ou
>> ela produz (E C D) para /sample-graph/.
>>
>> Mais fácil assim.
>>
>>> Outra pergunta:
>>> O segundo argumento de /find-path/ tem de sempre ter os vértices como
>>> NIL? Para este grafo, só o 'D e o 'G podem ficar no segundo argumento?
>>
>> O segundo argumento é um vértice de destino.  Qualquer destino pode
>> entrar lá.  Se o caminho não existir, /find-path/ produz nil.  (Se o
>> destino nem existir, pode retornar nil também, mas pode assumir que
>> origem e destino sempre existem.)
>>
>>> Consegues dar mais exemplos, para além de:
>>>
>>>    (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
>>>
>>> ?
>>
>>     (find-path 'C 'D sample-graph) produza '(C D)
>>     (find-path 'E 'D sample-graph) produza (or '(E F D) '(E C D))
>>     (find-path 'C 'G sample-graph) produza nil
>>     (find-path 'A 'D sample-graph) produza 
>>        (or '(A B F G) (A B E F G) (A E F G))
>>     (find-path 'A 'Z sample-graph) produza nil
>>     (find-path 'Z 'B sample-graph) produza nil
>>
>> Pode assumir que origem e destino sempre existem.  (Ignore exemplos como
>> os dois últimos, A -> Z e Z -> B.)
>
> Mesmo assim. Não estou a ver maneira de isso ser possível, dado eu só
> poder fazer uma função, com o cond, car, cdr, eq, atom, cons, etc..

Você pode (e deve) fazer várias funções.

> Não consigo fazer tal função.

Não é muito fácil.  Isso é ensinado no HtDP.  O propósito dos exercícios
é diagnosticar isso.  Devemos ler o livro ou não?  Parece que devemos.

Você pode olhar a solução deles, capítulo 29, parte V.  Mas não creio
que você aprecie muito a apresentação deles se você não estiver bem
treinado no método de raciocínio que eles usam.

Uma sugestão é a gente voltar um pouco e trabalhar num exercício mais
fácil.  Por exemplo, capítulo 19, parte IV, exercício 313 --- tendo lido
o capítulo 19 todo, o que não demora.  Está bem relacionado com
/find-path/, mas é mais fácil.  O próprio avisa isso no capítulo 29.

Ou então insistimos em /find-path/, o que não recomendo.  Diga-me o que
pensas.

[toc] | [prev] | [next] | [standalone]


#170 — Re: Lisp, um mapa de trajeto

FromDaniel Cerqueira <dan.list@brilhante.top>
Date2024-01-17 14:10 +0000
SubjectRe: Lisp, um mapa de trajeto
Message-ID<87le8ojbin.fsf@brilhante.top>
In reply to#169
Patricia Ferreira <pferreira@example.com> writes:

> Daniel Cerqueira <dan.list@brilhante.top> writes:
>
>> Mesmo assim. Não estou a ver maneira de isso ser possível, dado eu só
>> poder fazer uma função, com o cond, car, cdr, eq, atom, cons, etc..
>
> Você pode (e deve) fazer várias funções.
>
>> Não consigo fazer tal função.

Eu tinhas perguntado se era para usar /uma/ função recursiva. Se posso
usar mais que uma função, talvez consiga.

Vou tentar resolver isto, nestes próximos dias. De momento, não estou
com disponibilidade; é só esperar um pouquinho.

> Não é muito fácil.  Isso é ensinado no HtDP.  O propósito dos exercícios
> é diagnosticar isso.  Devemos ler o livro ou não?  Parece que devemos.
>
> Você pode olhar a solução deles, capítulo 29, parte V.  Mas não creio
> que você aprecie muito a apresentação deles se você não estiver bem
> treinado no método de raciocínio que eles usam.
>
> Uma sugestão é a gente voltar um pouco e trabalhar num exercício mais
> fácil.  Por exemplo, capítulo 19, parte IV, exercício 313 --- tendo lido
> o capítulo 19 todo, o que não demora.  Está bem relacionado com
> /find-path/, mas é mais fácil.  O próprio avisa isso no capítulo 29.
>
> Ou então insistimos em /find-path/, o que não recomendo.  Diga-me o que
> pensas.

No HtDP usa-se Common Lisp? Lisp 1.5? Scheme?

Como ficaste a conhecer esse livro?

[toc] | [prev] | [next] | [standalone]


#172 — Re: Lisp, um mapa de trajeto

FromPatricia Ferreira <pferreira@example.com>
Date2024-01-18 08:29 -0300
SubjectRe: Lisp, um mapa de trajeto
Message-ID<87edeelw1p.fsf@yaxenu.org>
In reply to#170
Daniel Cerqueira <dan.list@brilhante.top> writes:

> Patricia Ferreira <pferreira@example.com> writes:
>
>> Daniel Cerqueira <dan.list@brilhante.top> writes:
>>
>>> Mesmo assim. Não estou a ver maneira de isso ser possível, dado eu só
>>> poder fazer uma função, com o cond, car, cdr, eq, atom, cons, etc..
>>
>> Você pode (e deve) fazer várias funções.
>>
>>> Não consigo fazer tal função.
>
> Eu tinhas perguntado se era para usar /uma/ função recursiva. Se posso
> usar mais que uma função, talvez consiga.

Use o que você quiser --- incluindo qualquer linguagem também.

> Vou tentar resolver isto, nestes próximos dias. De momento, não estou
> com disponibilidade; é só esperar um pouquinho.

Sempre pressa alguma.

>> Não é muito fácil.  Isso é ensinado no HtDP.  O propósito dos exercícios
>> é diagnosticar isso.  Devemos ler o livro ou não?  Parece que devemos.
>>
>> Você pode olhar a solução deles, capítulo 29, parte V.  Mas não creio
>> que você aprecie muito a apresentação deles se você não estiver bem
>> treinado no método de raciocínio que eles usam.
>>
>> Uma sugestão é a gente voltar um pouco e trabalhar num exercício mais
>> fácil.  Por exemplo, capítulo 19, parte IV, exercício 313 --- tendo lido
>> o capítulo 19 todo, o que não demora.  Está bem relacionado com
>> /find-path/, mas é mais fácil.  O próprio avisa isso no capítulo 29.
>>
>> Ou então insistimos em /find-path/, o que não recomendo.  Diga-me o que
>> pensas.
>
> No HtDP usa-se Common Lisp? Lisp 1.5? Scheme?

Eles usam as teaching languages BSL, BSL+, ISL, ISL+ e ASL.  Beginning
Student Language, BSL com abreviações, Intermediate ..., ..., Advanced
....

> Como ficaste a conhecer esse livro?

Interessei-me por Lisp vendo pessoas na USENET usando Lisp --- Barry
Margolin especificamente chamou-me a atenção --- e fazendo coisas
maravilhosas que as linguagens ``modernas'' não conseguiam fazer.
Entendi que havia muitos dialetos de Lisp.  Escolhi Scheme e passei a
usar PLT Scheme.  Vida difícil.  Vi que não entendia nada de
programação.  Mal conseguia entender a documentação de PLT Scheme
especificamente.  Descobri eventualmente que o HtDP existia.  Resolvi
lê-lo pra adquirir um vocabulário que pudesse me ajudar a ler a
documentação --- os autores do HtDP são autores de PLT Scheme, isto é,
Racket.  E foi aí que descobri que o livro era interessante.  Ajudou
muito, mas a documentação como um todo ainda fala de um mundo que o HtDP
não aborda --- que é o mundo Racket.  O HtDP é sobre o design de
programas, de procedimentos.  Não é sobre o mundo Racket.

[toc] | [prev] | [next] | [standalone]


#175 — Re: Lisp, um mapa de trajeto

FromDaniel Cerqueira <dan.list@brilhante.top>
Date2024-01-18 18:03 +0000
SubjectRe: Lisp, um mapa de trajeto
Message-ID<878r4mjz8b.fsf@brilhante.top>
In reply to#172
Patricia Ferreira <pferreira@example.com> writes:

> Daniel Cerqueira <dan.list@brilhante.top> writes:
>
>> No HtDP usa-se Common Lisp? Lisp 1.5? Scheme?
>
> Eles usam as teaching languages BSL, BSL+, ISL, ISL+ e ASL.  Beginning
> Student Language, BSL com abreviações, Intermediate ..., ..., Advanced

Essas linguagens devem ser de pseudo-código. Eu prefiro aprender em
linguagens mesmo "verdadeiras".

>> Como ficaste a conhecer esse livro?
>
> Interessei-me por Lisp vendo pessoas na USENET usando Lisp --- Barry
> Margolin especificamente chamou-me a atenção --- e fazendo coisas
> maravilhosas que as linguagens ``modernas'' não conseguiam fazer.
> Entendi que havia muitos dialetos de Lisp.  Escolhi Scheme e passei a
> usar PLT Scheme.  Vida difícil.  Vi que não entendia nada de
> programação.  Mal conseguia entender a documentação de PLT Scheme
> especificamente.  Descobri eventualmente que o HtDP existia.  Resolvi
> lê-lo pra adquirir um vocabulário que pudesse me ajudar a ler a
> documentação --- os autores do HtDP são autores de PLT Scheme, isto é,
> Racket.  E foi aí que descobri que o livro era interessante.  Ajudou
> muito, mas a documentação como um todo ainda fala de um mundo que o HtDP
> não aborda --- que é o mundo Racket.  O HtDP é sobre o design de
> programas, de procedimentos.  Não é sobre o mundo Racket.

Então o HtDP é feito por pessoas de Racket. O livro aplica-se a qualquer
Lisp (como o Common Lisp) ?

[toc] | [prev] | [next] | [standalone]


#177 — Re: Lisp, um mapa de trajeto

FromPatricia Ferreira <pferreira@example.com>
Date2024-01-18 15:47 -0300
SubjectRe: Lisp, um mapa de trajeto
Message-ID<87a5p2h41p.fsf@example.com>
In reply to#175
Daniel Cerqueira <dan.list@brilhante.top> writes:

> Patricia Ferreira <pferreira@example.com> writes:
>
>> Daniel Cerqueira <dan.list@brilhante.top> writes:
>>
>>> No HtDP usa-se Common Lisp? Lisp 1.5? Scheme?
>>
>> Eles usam as teaching languages BSL, BSL+, ISL, ISL+ e ASL.  Beginning
>> Student Language, BSL com abreviações, Intermediate ..., ..., Advanced
>
> Essas linguagens devem ser de pseudo-código. 

Não é o caso.

> Eu prefiro aprender em linguagens mesmo "verdadeiras".

O livro não sabe que ferramenta você usa.

>>> Como ficaste a conhecer esse livro?
>>
>> Interessei-me por Lisp vendo pessoas na USENET usando Lisp --- Barry
>> Margolin especificamente chamou-me a atenção --- e fazendo coisas
>> maravilhosas que as linguagens ``modernas'' não conseguiam fazer.
>> Entendi que havia muitos dialetos de Lisp.  Escolhi Scheme e passei a
>> usar PLT Scheme.  Vida difícil.  Vi que não entendia nada de
>> programação.  Mal conseguia entender a documentação de PLT Scheme
>> especificamente.  Descobri eventualmente que o HtDP existia.  Resolvi
>> lê-lo pra adquirir um vocabulário que pudesse me ajudar a ler a
>> documentação --- os autores do HtDP são autores de PLT Scheme, isto é,
>> Racket.  E foi aí que descobri que o livro era interessante.  Ajudou
>> muito, mas a documentação como um todo ainda fala de um mundo que o HtDP
>> não aborda --- que é o mundo Racket.  O HtDP é sobre o design de
>> programas, de procedimentos.  Não é sobre o mundo Racket.
>
> Então o HtDP é feito por pessoas de Racket. O livro aplica-se a qualquer
> Lisp (como o Common Lisp) ?

O livro se aplica a não-programadores, embora provavelmente só
reconheceria o fato quem for um não-programador em certas esferas da
vida e um programador em outras.  De uma forma geral, pra saber do que
se trata um livro, é *realmente* preciso lê-lo.  O HtDP não consegue
transmitir do que ele se trata através de resumos.  Por isso ignorei-o
por tanto tempo.  Sorte a minha que achei que ele poderia me ajudar com
vocabulário --- e aí descobri o conteúdo.

Não é uma recomendação de leitura.  Estou apenas diagnosticando.  O HtDP
evidentemente tem coisas a oferecer a você.  Também não é uma
recomendação a Racket --- ao contrário.  Desisti de Racket.  Common Lisp
me parece muito mais divertida de se usar.

Sobre Common Lisp especificamente, já conversamos --- ANSI Common Lisp é
uma descrição da linguagem que deve ser completa ou próxima de completa
e é direta ao ponto --- pra programadores.

[toc] | [prev] | [next] | [standalone]


Page 3 of 5 — ← Prev page 1 2 [3] 4 5  Next page →

Back to top | Article view | pt.comp.programacao


csiph-web