• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

fpfcarvalho

LISP sudoku

8 mensagens neste tópico

(defun bloco (sudoku x y)

(loop repeat 3 for x from (* 3 (floor x 3))

        append (loop repeat 3 for y from (* 3 (floor y 3))                                                           

                      collect (aref sudoku y x))))

Nesta função, define-se a função bloco do sudoku. Gostaria que me alguem explicasse melhor aquele ciclo "loop", mais concretamente o que faz o "(* 3(floor x 3))".

Aguardo respostas.

;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

viva

(* 3 (floor x 3))

o que aparece imediatamente apos o parentesis de abertura é a funcao que é chamada, os restantes termos sao argumentos e aparecem separados por espacos. Na tua pergunta comeste um espaco a o transcrever essa linha.

O qu isso faz é:

multiplica (daí o asterisco, o asterisco é multiplicacao) 3 por (floor x 3)

por sua vez, (floor x 3) é uma chamada à funcao "floor" com os argumentos x e 3. A funcao flor devolve o argumento mais baixo de todos.

Entao pondo isso tudo junto, o que essa linha faz é:

multiplica 3 por 3 ou por x, o mais baixo dos dois.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja percebi :biggrin:

obrigadao ;)

ja agora

(defun numero_falta (lista)

  (loop for i from 1 to 9

        with resultado = '()

        finally (return resultado) do

        (unless (find i lista) (push i resultado))))

nesta função, onde e k se ve onde sao os numeros diferentes de 1 a 9 ??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

alguem me podia explicar o k faz a funçao "aref" em LISP??

se eu tiver (aref sudoku l c), o ke k isto significa?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora