Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

fpfcarvalho

LISP sudoku

Mensagens Recomendadas

fpfcarvalho    0
fpfcarvalho

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

;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
pedrotuga

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fpfcarvalho    0
fpfcarvalho

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

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade