Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

The XeoN

Quem anima desafio?

Recommended Posts

Fechado.

 

Começo no final de semana. Só não entendi uma coisa. Imagine a situação:

 

Eu faço uma solução bem estruturada e de fácil entendimento/manutenção, porém, leva 1 minuto para resolver o sudoku.

O Fulano faz uma solução desorganizada e impossível de entender, porém, leva 20 segundos para resolver o sudoku.

 

Quem ganha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra pergunta.

 

Minhas classes são estáticas.

 

Ou seja, não dá pra instanciar elas.

 

Posso fazer estático mesmo ou não?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra pergunta.

 

Minhas classes são estáticas.

 

Ou seja, não dá pra instanciar elas.

 

Posso fazer estático mesmo ou não?

 

Acho que não tem problemas quanto a isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos, respondendo as dúvidas quanto ao método de classificação e, para não haver problemas na hora da avaliação,

 

Segundo Bertram Felgenhauer, se resolvido por força bruta, serão necessárias N! tentativas para encontrar a solução, então o primeiro critério para classificação será exatamente esse, o algorítimo que fizer o menor número de iterações para encontrar a solução receberá 60 pontos.

 

Todos os códigos passarão por um profiler e o melhor aproveitamento de código ganhará 20 pontos.

 

O código mais reutilizável ganhará 30 pontos. Chamo de reutilizável um código capaz de trabalhar em vários casos, por exemplo, se for passado um Sodoku 12x12 em vez de 9x9 e o algorítimo for capaz de encontrar a solução para ele também, ou então se for passado um Sodoku que utiliza letras de A-I por exemplo e ele também saiba como trabalhar.

 

Todos os algorítimos serão executados na minha máquina (um Dell 64bits dual com 4Gib dedicado), o desempenho dos algorítimos serão praticamente irrelevantes, porém usaremos como critério de desempate e o código mais rápido receberá 10 pontos.

 

Serão adicionados em todos os códigos, nas primeiras linhas a seguinte instrução:

 

error_reporting( E_ALL | E_STRICT );
ini_set( 'display_errors' , 1 );

 

Pra cada Notice perderá 10 pontos

Para cada Warning perderá 20 pontos

Erro fatal será desclassificado uma vez que a execução será interrompida.

 

O algorítimo que não apresentar a solução correta será desclassificado automaticamente.

 

Minhas classes são estáticas.

 

Ou seja, não dá pra instanciar elas.

 

Posso fazer estático mesmo ou não?

 

A única regra quanto a isso é que o código deverá receber uma matriz assim:

 

<?php
define( 'X' , null );

$sodoku = array(
	array( 5 , 3 , X , X , 7 , X , X , X , X ),
	array( 6 , X , X , 1 , 9 , 5 , X , X , X ),
	array( X , 9 , 8 , X , X , X , X , 6 , X ),
	array( 8 , X , X , X , 6 , X , X , X , 3 ),
	array( 4 , X , X , 8 , X , 3 , X , X , 1 ),
	array( 7 , X , X , X , 2 , X , X , X , 6 ),
	array( X , 6 , X , X , X , X , 2 , 8 , X ),
	array( X , X , X , 4 , 1 , 9 , X , X , 5 ),
	array( X , X , X , X , 8 , X , X , 7 , 9 ),
); 
?>

 

Onde null é onde deverá ser preenchido com os valores corretos, uma matriz nesse mesmo formato deverá ser retornada, totalmente populada, com a solução correta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu posso transformar o array recebido?

Ou tenho que deixar do jeito que esta?

Pode sim, depois que você receber a matriz, faça com ela o que quiser, apenas na hora de devolver, devolva-a como especificado.

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

João, atentei para um detalhe e como houve dúvida, preferi fazê-lo publicamente, para que todos os participantes tomem conhecimento da solução

 

um sudoku só vai gerar matrizes perfeitas nas subgrades, quando o sudoku for da ordem X^1/3 = Y + 0, ou trocando em miúdos, quando o total de quadradinhos for uma raíz cúbica exata

 

3 = 81

4 = 256

5 = 625

 

caso falso, as subgrades serão matrizes imperfeitas, como no caso do proposto sudoku 12x12, suas subgrades seriam 4x3/3x4.

 

a dúvida que surgiu, foi quanto à montagem da função. Se ela deve impreterivelmente receber apenas o parâmetro $sudoku, ou se ela pode se flexionar para receber outros possíveis valores que a ajudem na manipulação dos dados

 

ex, se eu perco pontos se minha função for chamada dessa maneira

resolveSudoku($sudoku,$subgrades,$vInicial,$vFinal){...}

resolveSudoku($sudoku,'4x3','A','I');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se ela deve impreterivelmente receber apenas o parâmetro $sudoku,

 

ex, se eu perco pontos se minha função for chamada dessa maneira

resolveSudoku($sudoku,$subgrades,$vInicial,$vFinal){...}

resolveSudoku($sudoku,'4x3','A','I');

Será passado para a função/método apenas a matriz como especificado anteriormente.

 

Com o objetivo de padronizar e, para evitar os seus parâmetros $vInicial e $vFinal, iniciaremos SEMPRE com 1 indo até o limite:

 

9x9 -> 1, 2, 3, 4, 5, 6, 7, 8, 9

16x16 -> 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, G

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vocês me quebram assim ein? Imagem Postada

Ok, e quais os tamanhos de sudokus aceitos? Qualquer um?

Se eu quiser fazer um 10x10, ele deve aceitar?

 

Achei este site [1], ali fala sobre os tipos de sudoku.

O que acham de utilizarmos o 4x4, 6x6, 9x9, 12x12 e 16x16?

Nada de samurai ninja mothafucka sudoku from hell.

 

[1] http://www.easton.me...udoku/sizes.php

 

Mais um detalhe, agora que vamos ter letras também, vocês estão usando assim:

//Opção 1$sodoku = array( ... array( 'A' , 3 , X , 'B' , 7 , X , 'C' , X , X ), ...);

//Opção 2define('A', 'A');define('B', 'B');define('C', 'C');$sodoku = array( ... array( A , 3 , X , B , 7 , X , C , X , X ), ...);

 

//Opção 3$sodoku = array( ... array( 'A' , '3' , X , 'B' , '7' , X , 'C' , X , X ), ...);

Confusão...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Senhores, não é obrigatório que seus algorítimos resolvam 'qualquer' tipo de sodoku, isso será apenas um diferencial e valerá 30 pontos, sendo que encontrar a solução com o menor número de tentativas para um Sodoku 'comum' de 9x9 com subgrades 3x3 ganhará 60 pontos.

 

Então concentrem-se em um 9x9.

 

E Oenning,

 

define( 'A' , 'A' );

var_dump( 'A' === A ); //bool(true)

 

As opções 1, 2 e 3 são exatamente a mesma coisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sinceramente nao vou fazer nada a mais que 9x9.

O código nem vai aceitar pra falar a verdade.

 

Meu diferencial vai ser outro ... HOHO'

 

Mas aqui, como andam o codigo de voces?

 

Eu nao tenho a minima noção de como resolver um sudoku por script ASUHASUHAS

 

To fazendo metodo magaiver! kkkkk

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sendo sincero, meu código está 10% pronto. Até porque ainda não tive tempo de parar e ficar 3 horas seguidas programando.

Para resolver, estou lendo bastante sobre técnicas de resolução de sudoku, tipo este site aqui [1].

 

[1] http://novcruz.planetaclix.pt/whissdku.htm

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas aqui, como andam o codigo de voces?

a parte essencial, 80%, estou em estágio de DEBUG

 

daí parto pras 'flexibilidades'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu nao consegui pegar pra fazer ainda, to apertado no serviço :S

 

Vou tentar correr esses dias que restam ae pra acabar a tempo Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Passei a manhã toda do Domingão fazendo.Estou com dor de cabeça, vou me retirar um pouco e depois eu continuo.

Acredito que cheguei nos 70%.

Obs.: Nunca vi tanto loop na minha vida -.-

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois e cara, eu tambem estou nessa ai...

 

Eu consigo pegar os valores possiveis, mas nao consigo descobrir qual fica em qual casa uahsuahs

 

Vamos ver se eu consigo entregar amanha ne :s

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Oenning, @Denis Lins e @Evandro Oliveira,

 

Vejam, esse é um desafio fechado e apenas os senhores estão participando. Caso nenhum dos três tenham conseguido fechar o código e precisem de mais tempo, basta que informem aqui no tópico.

 

Se e somente se os três se posicionarem dizendo que precisam de mais tempo, não vejo problemas em estender o prazo de entrega para mais uma semana.

 

Vejam que, por uma questão de justiça, mesmo que apenas um dos três membros tiver terminado o código e postá-lo aqui ainda hoje (segunda 01/março), bastará que o código seja capaz de resolver um problema de Sodoku para que seja o vencedor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.