Desafio Impossível 2D ou 3D

Mais um da série desafios...

Moderador: Moderadores

Avatar do usuário
hugopaulo
Master
Master
Mensagens: 1873
Registrado em: Dom 29 Fev 2004 12:00:00 am

Desafio Impossível 2D ou 3D

Mensagem por hugopaulo »

Fazer a Rotina Hà Noi Tower Puzzle do LISP Funcionar no AutoCAD Jogo de Quebra-Cabeça Torre de Hanói

Para quem gosta de quebra-cabeças e/ou programar.

Regras:

1. LISP puro compilado. Nome do programa deverá ser sugestivo (Não é AutoLISP ! )
2. Entradas por tela gráfica e menus conforme Figura 1
3. Execução Final similar à Figura 1
4. A rotina deve executar combinações de até 15 discos.
5. Em 2D ou 3D rodando no AutoCAD.
6. Entregar o trabalho em EXE - Mandatório
7. Colocar os códigos aqui em LISP - Mandatório - Deve ser similar mas não igual ao código apresentado resolvido
8. Sucinta explicação em TXT como é chamada a rotina pela linha de comando. Pode ser mensagem na rotina
9. A rotina deve apresentar o nome do programador ou programadores (equipe) e data da criação.
10. Prazo: Sem Prazo

Rotina Hanoi.lisp em LISP
[lsp]
;;; Hanoi Towers Puzzle Solver
;;; This program can solve the hanoi towers puzzle for any given number of disk.
;;; It is assumed that in the begining of the game,the disks are only stacked
;;; on the first peg and there are three pegs.
;;; It was the French mathematician Edouard Lucas who invented these puzzle
;;; back in 1883. The simplest known solution to these puzzle is formulated using
;;; recursion and is also the method that was used in the current program.
;;
;; this function is used to display on the screen each step of
;; the solution to the puzzle
;;
(defun move-disk(A B)
(format t "move top disk from ~s to ~s~%" A B))
;;
;; this function implements the recursive algorithm
;; for solving the puzzle
;;
(defun transfer(N A B C)
(cond ((> N 0)
(transfer (- N 1) A C B)
(move-disk A C)
(transfer (- N 1) B A C))))
;;
;; gets number of disk from the user
;;
(defun get-num-of-disk()
(setq N (read))
(cond ((and (/= N -1) (< N 1))
(format t "the number of disk needs to be an integer bigger than 1~%")
(format t "number of disk: ")
(get-num-of-disk))
(T N)))
;;
;; Function for launching the program
;;
(defun hanoi-towers-puzzle()
(loop
(format t "~%Enter number of disk on the first peg (-1 to quit): ")
(setq num-of-disk (get-num-of-disk))
(when (= num-of-disk -1)
(format t "thanks for using this program!")(return))
(setq number-of-moves (- (expt 2 num-of-disk) 1))
(format t "number of moves required for the solution:= ~s~%" number-of-moves)
(format t "solution...~%")
(transfer num-of-disk 'Peg1 'Peg2 'Peg3)))
[/lsp]

Figura 1 - Como o Quebra-Cabeças Deve Aparecer no AutoCAD

Imagem

Figura 2 - Número Máximo de Discos

Imagem

Bom trabalho. O desafio foi criado para inspirar novos programadores a estudar um pouco de lógica seguindo o caminho ("link") que indico abaixo. Recomendo uma leitura mesmo que rápida. Há dicas interessantes.

Esse jogo foi inspirado em uma lenda que serviu de base para a criação do quebra-cabeça em 1883 por Edouard Lucas. Para compreender melhor veja

http://pt.wikipedia.org/wiki/Torre_de_Hanoi

É muito popular no Viet Nam. Seu nome vem da torre símbolo da cidade de Hà Nói, no Viet Nam.Tem a mesma conotação em números que a lenda do Xadrez com os grãos de trigo.

Para quem for tentar aviso que é impossível. Não encontrei uma solução o que não significa em absoluto que não há. O primeiro que resolver vai merecer o título de Mestre de Todos os Programadores em LISP.

Calculem quantos anos seriam necessários para resolver o quebra-cabeças com 64 discos levando-se 1 segundo por disco. O número total de movimentos para 64 discos está no "link" acima.

Aviso: O melhor trabalho poderá premiar os programadores com algo bem útil.

Nota: O Neyton escreveu uma rotina em AutoLISP baseada na rotina LISP. Na epóca testei e não funcionou. Quem sabe o Neyton nos brinde com uma solução em AutoLISP ?
hugopaulo
AutoLISP Não É LISP ==> VISUAL LISP não é Linguagem
Avatar do usuário
neyton
Master
Master
Mensagens: 1668
Registrado em: Qui 25 Dez 2003 11:00:00 pm
Contato:

Mensagem por neyton »

nao funcionou?
entendo...

[lsp](defun move-disk2 (a b)
(prompt (strcat "move top disk from " a " to " b "\n")))


(defun transfer2 (N A B C)
(cond ((> N 0)
(transfer2 (- N 1) A C B)
(move-disk2 A C)
(transfer2 (- N 1) B A C))))



(defun get-num-of-disk2 ()
(setq N (getint "\nN ? "))
(cond
((and (/= N -1) (< N 1))
(prompt "the number of disk needs to be an integer bigger than 1\n")
(prompt "number of disk: ")
(get-num-of-disk2))
(T N)))


(defun c:hanoi-towers-puzzle2 ()
(while
(progn
(prompt "\nEnter number of disk on the first peg (-1 to quit): ")
(setq num-of-disk (get-num-of-disk2))
(if (= num-of-disk -1)
(prompt "\nthanks for using this program!")
t))

(setq number-of-moves (- (expt 2 num-of-disk) 1))

(prompt (strcat "number of moves required for the solution:= " (itoa number-of-moves)))
(prompt "\nsolution...\n")
(transfer2 num-of-disk "Peg1" "Peg2" "Peg3")))[/lsp]

até onde ia o enunciado àquela época, erá so para traduzir o LISP para o AUTOLISP e rodar no cad....

em fim, para testar se nao finciona, façam um teste co o lisp acima
ou melhor, implementem a subrotina "move-disk2" para em vez de mostrar apenas um prompt, desenhe retangulos dos discos nas posições em que se encontram dado o movimento
faça-o desenhar cada "instantâneo" numa linha, assim, dá para observar se está tudo certo....


agora, reflitam um pouco sobre essa história de LISP/AUTOLISP e "nomes dos bois"
Imagem
como que usa o html daqui?
visite o meu blog: http://tbn2.blogspot.com
lisps exclusivas pra download!!
Avatar do usuário
hugopaulo
Master
Master
Mensagens: 1873
Registrado em: Dom 29 Fev 2004 12:00:00 am

Mensagem por hugopaulo »

Neyton

Na época o desafio era outro. Quanto ao "nome-dos-bois" sou neto de português e já conhecia os termos antes de vc nascer. Me desculpe mas não era para colocar aqui. Nada tem a ver com o tópico colocado por mim.

Não usei o alerta para melindrar ninguém: LISP não é AutoLISP. AutoLISP não é LISP. E nada tem mesmo a ver com vc. Absolutamente nada. E realmente não se pode mudar isso (seu nome não está relacionado com LISP ou AutoLISP).

O objetivo desse Desafio era o seguinte :

1. Usando a base do programa em LISP, desenvolver em AutoLISP que execute dentro do AutoCAD.
2. Não era para desenhar nada pois o programa é só para resolver o uso de recursão.
;;this function is used to display on the screen each step of
;; the solution to the puzzle


ou "A para B - C para D...

O Novo Desafio é assaz diferente:

1. Desenvolver uma rotina ou programa em LISP que execute o jogo através de uma interface como a Figura 1.

2. O programa compilado em EXE deve ser executado dentro do AutoCAD (não de dentro do AutoCAD para isso temos o SHELL daí porque chamei Desafio Impossível). Então porque ? Porque...e se alguém resolver ?

Então sinceramente não entendi o porque "nome-dos-bois" e "reflitam".

NOTA: Neyton parece-me que vc se melindrou porque coloquei (Não é AutoLISP) ou porque eu disse que sua rotina na época não funcionou. E não funcionou mesmo!

Reflita bem antes de responder: O que isso tem a ver com o "nome-dos-bois" ou com vc ? Se eu quisesse a rotina em AutoLISP eu teria colocado.

Tem que ser em LISP - LISt Processing de John McCarthy em 1958 e não AutoLISP de John Walker em 1986 (do XLISP).
Como muitos usam o termo "LISP" e acreditam que é "AutoLISP" coloquei a observação.

Sinceramente eu creio que não mereço isso pelo menos nos meus tópicos. Só me interessa o Desafio Impossível.

Alguém colocou que os participantes estão fugindo dos fóruns por certas colocações e creio que é isso.

"Sursum Corda"
hugopaulo
AutoLISP Não É LISP ==> VISUAL LISP não é Linguagem
Avatar do usuário
neyton
Master
Master
Mensagens: 1668
Registrado em: Qui 25 Dez 2003 11:00:00 pm
Contato:

Mensagem por neyton »

em fim...
isso me pareceu um artificio para recomeçar a discução de lisp x autolisp

e a intenção da figura era chamar a atenção para os termos usados para designar outras coisas

nada a ver com portugues... podia colocar bagual ( giria gaucha ), trem ( giria mineira ) etc... ou qualquer outra giria apenas para chamar a atenção para uma discussão que não levará a nada...

quanto a lisp ( wathever... ) nao funcionar, nao sei o que tem de errado nela... aqui funciona... se maiores configurações, bastou um copiar / colar

nao melindrei nada, hehehe e só coloquei o programa que reescrevi, ou adpatei para que os outros pudessem ver e dizer qualquer coisa sobre...

no mais creio que esse post nao vá muito longe... não tenho noticia de compilador lisp para windows, não sei nem se existe... e se existe acredito que ninguem aqui do forum use...

se quer algo realmente útil aqui neste forum acrdito que seja o curso que parou a muito, muito tempo atraz ( numa galaxia distante, hehehe )
como que usa o html daqui?
visite o meu blog: http://tbn2.blogspot.com
lisps exclusivas pra download!!
Avatar do usuário
hugopaulo
Master
Master
Mensagens: 1873
Registrado em: Dom 29 Fev 2004 12:00:00 am

Mensagem por hugopaulo »

Neyton

O tópico é para tentar encontrar uma "possibilidade" de usar o LISP - LISt Processing no AutoCAD. E devemos focar nisso. Somente nisso.

Colocações:
1. Vc achou isso: uma justificativa para começar uma discussão de LISP X AutoLISP e nada tem a ver. Não preciso disso. Reflita sobre a minha assinatura. Está lá em todas as minhas mensagens. Então a sua suposição não tem valia...

2. As regras são clarissimas. Faltou-lhe um pouco de atenção.

3. Vc colocou: "no mais creio que esse post nao vá muito longe... não tenho noticia de compilador lisp para windows, não sei nem se existe... e se existe acredito que ninguem aqui do forum use..."

Observações:
a. Desculpe mas se vai ou não vai muito longe nada tem a ver com o tópico por isso ele é Desafio (e é assustador para muitos acho)

b. Vc "acha" que o LISP era usado como ? CDC. Sabe o que é ? Sua dúvida não é justa...é depreciativa: "nem sei se existe...". Não precisa duvidar...apenas não acredite ou diga que não sabe...é mais elegante...ninguém sabe tudo.

c. Eu uso compilador LISP a muitos anos (1962). Creio que vc não era nascido mas não importa... AutoLISP há 22 (1986).

Por saber disso de antemão coloquei "Impossível" e suas declarações corroboraram. Entende ? Onde vc acha que eu encontrei essa rotina Hanoi.lisp ?

Quanto a sua rotina cuidado e preste atenção ao que eu coloquei: não funcionou da 1a. vez e não funcionou agora. Porque ?

Não disse que estava errada porque não está. Está correta. Então uma dica e sua mente vai se abrir, creio.

Tente entender plenamente o siginificado da palavra "DISPLAY"

e SOMENTE ENTÃO SUA ADAPTAÇÃO VAI FUNCIONAR. Percebeu ?

Apenas uma sugestão: se vc acha possível coloque isso, se vc acha impossível coloque isso, se não interessa ou vc não sabe (porque eu tb não sei) não coloque nada. Não prejudique o tópico pq senão vc prejudica a todos.

"Sursum corda"

PS: Quando eu vi o AutoLISP a 1a. vez entendi que era LISP então desandei a fazer algumas rotinas usando a sintaxe do LISP. Não precisa nem dizer o que aconteceu...Pois é...
hugopaulo
AutoLISP Não É LISP ==> VISUAL LISP não é Linguagem
Avatar do usuário
hugopaulo
Master
Master
Mensagens: 1873
Registrado em: Dom 29 Fev 2004 12:00:00 am

Mensagem por hugopaulo »

hugopaulo escreveu:Neyton

O tópico é para tentar encontrar uma "possibilidade" de usar o LISP - LISt Processing no AutoCAD. E devemos focar nisso. Somente nisso.

Colocações:
1. Vc achou isso: uma justificativa para começar uma discussão de LISP X AutoLISP e nada tem a ver. Não preciso disso. Reflita sobre a minha assinatura. Está lá em todas as minhas mensagens. Então a sua suposição não tem valia...

2. As regras são clarissimas. Faltou-lhe um pouco de atenção.

3. Vc colocou: "no mais creio que esse post nao vá muito longe... não tenho noticia de compilador lisp para windows, não sei nem se existe... e se existe acredito que ninguem aqui do forum use..."

4. não julgue para não ser julgado: "se quer algo realmente útil aqui neste forum acrdito que seja o curso que parou a muito, muito tempo atraz ( numa galaxia distante, hehehe )" - Estou relendo todos os meus tópicos e vou continuar colocando coisas úteis aqui.

Observações:
a. Desculpe mas se vai ou não vai muito longe nada tem a ver com o tópico por isso ele é Desafio (e é assustador para muitos acho)

b. Vc "acha" que o LISP era usado como ? CDC. Sabe o que é ? Sua dúvida não é justa...é depreciativa: "nem sei se existe...". Não precisa duvidar...apenas não acredite ou diga que não sabe...é mais elegante...ninguém sabe tudo.

c. Eu uso compilador LISP a muitos anos (1962). Creio que vc não era nascido mas não importa... AutoLISP há 22 (1986).

Por saber disso de antemão coloquei "Impossível" e suas declarações corroboraram. Entende ? Onde vc acha que eu encontrei essa rotina Hanoi.lisp ?

Quanto a sua rotina cuidado e preste atenção ao que eu coloquei: não funcionou da 1a. vez e não funcionou agora. Porque ?

Não disse que estava errada porque não está. Está correta. Então uma dica e sua mente vai se abrir, creio.

Tente entender plenamente o siginificado da palavra "DISPLAY"

e SOMENTE ENTÃO SUA ADAPTAÇÃO VAI FUNCIONAR. Percebeu ?

Apenas uma sugestão: se vc acha possível coloque isso, se vc acha impossível coloque isso, se não interessa ou vc não sabe (porque eu tb não sei) não coloque nada. Não prejudique o tópico pq senão vc prejudica a todos.

"Sursum corda"

PS: Quando eu vi o AutoLISP a 1a. vez entendi que era LISP então desandei a fazer algumas rotinas usando a sintaxe do LISP. Não precisa nem dizer o que aconteceu...Pois é...
hugopaulo
AutoLISP Não É LISP ==> VISUAL LISP não é Linguagem
Avatar do usuário
neyton
Master
Master
Mensagens: 1668
Registrado em: Qui 25 Dez 2003 11:00:00 pm
Contato:

Mensagem por neyton »

nao acho q seja impossivel, quase tudo é possivel... é apenas uma questao financeira hoje em dia

algo assim, demanda tempo,

tempo para procurar, entender, desenvolver... e por isso creio que não vá para frente

resolver um problema destes tem um custo, que eu em particular, e avredito a maioria, não está disposta a pagar
como que usa o html daqui?
visite o meu blog: http://tbn2.blogspot.com
lisps exclusivas pra download!!
Avatar do usuário
hugopaulo
Master
Master
Mensagens: 1873
Registrado em: Dom 29 Fev 2004 12:00:00 am

Mensagem por hugopaulo »

Neyton

É impossível mesmo. Bem que sonho o LISP compilado funcionando dentro do AutoCAD.

Estive num fórum que saiu do ar, o CADVault onde foi levantada essa hipótese. Por isso a minha obstinação em tentar resolver isso. O grande problema foi a divulgação inadequada na Internet de "Lisp para AutoCAD". Não existe. Existe "AutoLISP para AutoCAD". Se vc não concorda não vai modificar nada. Se vc concorda não vai modificar nada.

Questão:
"Does anyone know, what wrong with cadvault.com ? 2 weeks ago I entered this page and saw linux screen. Now nothing appears. Only error page appears. What wrong?AMK"

Resposta:
"It has been closed, and will probably not reopen." Não reabriu até hoje. Mas faça uma pesquisa que vc vai ter uma surpresa.

Na mesma época o AfraLISP tinha sumido mas já voltou.

Não é uma questão financeira. John McCarthy não conhece nada de AutoCAD e sua linguagem (LISP) tem propósitos diferentes. A não ser que ele modifique a linguagem (e não vai) ela não poderá ser usada no AutoCAD.

A propósito: vc sabe porque o John Walker escolheu o LISP para desenvolver o AutoLISP interpretado ? Por causa do tratamento de LISTAS - para as coordenadas principalmente. E porque é uma das linguagens mais poderosas.

Entenda só uma coisa. Não sou mais esperto nem mais inteligente que ninguém aqui mas tenho uma vantagem: vivenciei e uso muitas coisas que vcs não conhecem como o compilador LISP entre outros.

Eu comecei a trabalhar e a estudar desenho em 1956 com 13 anos. Já passei por todos os tipos de empresas que vc pode imaginar.

A algum tempo me comunico com o criador do AutoCAD e fundador da Autodesk. Ele me passa coisas que vcs nem imaginam. Ele deixou de usar o AutoLISP e o DIESEL há 15 anos.

A expressão AutoLISP não é LISP não é minha, é dele. Por isso é que sou tão incisivo. É como se vc me dissesse que meu nome não é Hugo Paulo.

Não passa pela minha cabeça modificá-lo nem a ninguém. Vc tem uma forma de perceber o Universo de maneira muito diversa da minha. Nem melhor nem pior, diferente.

Tb não permito que ninguém me modifique nem menospreze o que eu sei fazer. E acredite ou não sempre faço as coisas muito bem.

Então vamos encerrar esses assuntos porque quando eu coloco impossível é impossível mesmo no momento. No futuro não sei (ainda tenho esperanças...).

Se fosse possível alguém já teria colocado a boca no trombone e até agora ninguém o fez. Percebes ? É simples.

Como vc mesmo disse que nunca ouviu falar de compilador LISP tire suas conclusões.

O Desafio continua impossível ( se eu soubesse resolvê-lo não seria impossível concorda ? ).

Então vamos focar nele e deixar coisas diferentes de lado. Não vai ajudar mesmo. T+
hugopaulo
AutoLISP Não É LISP ==> VISUAL LISP não é Linguagem
Avatar do usuário
neyton
Master
Master
Mensagens: 1668
Registrado em: Qui 25 Dez 2003 11:00:00 pm
Contato:

Mensagem por neyton »

como eu disse, nao é impossivel...

é so uma questão do QUANTO voce pagaria por isso

estamos falando de informatica, não de transmutação...
como que usa o html daqui?
visite o meu blog: http://tbn2.blogspot.com
lisps exclusivas pra download!!
Avatar do usuário
hugopaulo
Master
Master
Mensagens: 1873
Registrado em: Dom 29 Fev 2004 12:00:00 am

Mensagem por hugopaulo »

Impossível. Vc não pode pagar pelo que não pode ser feito. Ninguém pode. Como eu disse isso já foi analisado.

John McCarthy não tem interesse em modificar o LISP pelo menos até agora. E ninguém até hoje não modificou o LISP nem investiu para isso. PORQUE NÃO INTERESSA.

Se fosse só uma questão de dinheiro John Walker teria comprado os direitos de usar o LISP dentro do AutoCAD e não criar o AutoLISP (já estaria com uma linguagem pronta).

O LISP não tem muitas funções do AutoLISP. O AutoLISP não tem muitas funções do LISP ("cross-over").

Portanto ele não criou um compilador pois não é só uma questão financeira.

O tópico não é para isso e a resposta dada por vc não provou que é possível. É muito vaga e imprecisa.

Por favor seja mais específico e diga se pode ser feito ou não. Dizer que em 3.815 o AutoCAD vai ser neural é só premonição.

Então não adianta. É IMPOSSÍVEL MESMO PORQUE EU CRIEI O TÓPICO COM ESSA PREMISSA.

Se eu pensasse ou acreditasse que fosse possível não teria colocado o tópico dessa forma. Teria resolvido a questão e desafiava de outro modo. Entendes ? Não é uma questão de achismo vago e impreciso. É determinístico.

Saudações.
hugopaulo
AutoLISP Não É LISP ==> VISUAL LISP não é Linguagem
Responder