Page 1 of 12

Sudoku

Posted: Thu 05 Oct 2006 19:37
by Puzzle
Ik denk dat ik de snelste manier heb gevonden om Sudoku-puzzels op te lossen.

Ik heb er een Java-applet voor geschreven, zodat jullie nu meer tijd hebben om te koersen.

Ik sluit niet uit dat er een speciaal geval is dat het niet kan oplossen.

Posted: Fri 06 Oct 2006 16:06
by Puzzle
Gelieve geen pm meer te sturen om naar de broncode te vragen, a.u.b.

Posted: Fri 06 Oct 2006 18:41
by Galibier2646
Puzzle wrote:Gelieve geen pm meer te sturen om naar de broncode te vragen, a.u.b.
He Cliff :wink: ,

No problem amigo. We wilden gewoon even vergelijken !

Voor de geïnteresseerden, broncode via pm te verkrijgen vanaf 1 november... ( nie deze van Cliff aka Puzzle )

Grtz

Re: Sudoku

Posted: Fri 06 Oct 2006 18:42
by Galibier2646
Puzzle wrote:
Ik sluit niet uit dat er een speciaal geval is dat het niet kan oplossen.
... oh ja , de onze lost ze wel allemaal op ! 8)

Re: Sudoku

Posted: Sat 07 Oct 2006 10:24
by Puzzle
Galibier2646 wrote:
Puzzle wrote:
Ik sluit niet uit dat er een speciaal geval is dat het niet kan oplossen.
... oh ja , de onze lost ze wel allemaal op ! 8)
Bewijs het.

Re: Sudoku

Posted: Sat 07 Oct 2006 18:03
by Galibier2646
Puzzle wrote:
Galibier2646 wrote:
Puzzle wrote:
Ik sluit niet uit dat er een speciaal geval is dat het niet kan oplossen.
... oh ja , de onze lost ze wel allemaal op ! 8)
Bewijs het.
ok :wink:

Posted: Mon 09 Oct 2006 14:19
by Puzzle

Code: Select all

// File: CijferFrequentie.java
// Date: 30 September 2006.
//
// Copyright (c) 2006 Cliff Huylebroeck. All Rights Reserved.
//
// Permission to use, copy, modify, and distribute this software
// and its documentation for NON-COMMERCIAL purposes and without
// fee is hereby granted provided that this copyright notice
// appears in all copies.
//
// Cliff Huylebroeck MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
// SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT
// NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
// A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. Cliff Huylebroeck SHALL NOT
// BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
 
public class CijferFrequentie
{
    private int aantal[]=null;
    private Vak vakken[]=null;
 
    public CijferFrequentie()
    {
        aantal=new int[9];
        vakken=new Vak[9];
    }
 
    public void MaakLeeg()
    {
        for (int i=0;i<9;i++)
            {
            aantal[i]=0;
            // opm: geen vakken.
            }
    }
 
    public void Tel(final int cijfer,
                    final Vak vak)
    {
        final int i=cijfer-1;
        aantal[i]++;
        vakken[i]=vak;
    }
 
    public void Tel(final CijferVerzameling cijferVerzameling,
                    final Vak vak)
    {
        for (int cijfer=1;cijfer<=9;cijfer++)
            {
            if (cijferVerzameling.Bevat(cijfer))
                {
                Tel(cijfer,
                    vak);
                }
            }
    }
 
    public boolean KomtNietVoor(final int cijfer)
    {
        final int i=cijfer-1;
        return aantal[i]==0;
    }
 
    public boolean KomtEenKeerVoor(final int cijfer)
    {
        final int i=cijfer-1;
        return aantal[i]==1;
    }
 
    public Vak GeefVak(final int cijfer)
    {
        final int i=cijfer-1;
        return vakken[i];
    }
}

Posted: Mon 09 Oct 2006 14:19
by Puzzle

Code: Select all

// File: CijferVerzameling.java
// Date: 30 September 2006.
//
// Copyright (c) 2006 Cliff Huylebroeck. All Rights Reserved.
//
// Permission to use, copy, modify, and distribute this software
// and its documentation for NON-COMMERCIAL purposes and without
// fee is hereby granted provided that this copyright notice
// appears in all copies.
//
// Cliff Huylebroeck MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
// SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT
// NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
// A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. Cliff Huylebroeck SHALL NOT
// BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
 
public class CijferVerzameling
{
    private int aantal;
    private boolean bevat[]=null;
 
    public CijferVerzameling()
    {
        bevat=new boolean[9];
    }
 
    public void VoegAllesToe()
    {
        aantal=9;
        for (int i=0;i<9;i++)
            {
            bevat[i]=true;
            }
    }
 
    public void SchrapAlles()
    {
        aantal=0;
        for (int i=0;i<9;i++)
            {
            bevat[i]=false;
            }
    }
 
    public void VoegToe(final int cijfer)
    {
        final int i=cijfer-1;
        final boolean isElement=bevat[i];
        if (!isElement)
            {
            aantal++;
            bevat[i]=true;
            }
    }
 
    public void Schrap(final int cijfer)
    {
        final int i=cijfer-1;
        final boolean isElement=bevat[i];
        if (isElement)
            {
            aantal--;
            bevat[i]=false;
            }
    }
 
    public int GeefAantal()
    {
        return aantal;
    }
 
    public boolean Bevat(final int cijfer)
    {
        final int i=cijfer-1;
        return bevat[i];
    }
 
    public int GeefEnige()
    {
        for (int i=0;i<9;i++)
            {
            if (bevat[i])
                {
                return i+1;
                }
            }
        // opm: hier zouden we niet mogen komen.
        return 0;
    }
 
    public int GeefWillekeurig()
    {
        for (int i=0;i<9;i++)
            {
            if (bevat[i])
                {
                return i+1;
                }
            }
        // opm: hier zouden we niet mogen komen.
        return 0;
    }
}

Posted: Mon 09 Oct 2006 14:20
by Puzzle

Code: Select all

// File: GekozenVakken.java
// Date: 30 September 2006.
//
// Copyright (c) 2006 Cliff Huylebroeck. All Rights Reserved.
//
// Permission to use, copy, modify, and distribute this software
// and its documentation for NON-COMMERCIAL purposes and without
// fee is hereby granted provided that this copyright notice
// appears in all copies.
//
// Cliff Huylebroeck MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
// SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT
// NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
// A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. Cliff Huylebroeck SHALL NOT
// BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
 
import java.util.Stack;
 
public class GekozenVakken
{
    private Stack cijfers=null;
 
    public GekozenVakken()
    {
        cijfers=new Stack();
    }
 
    public void VoegToe(final Vak vak)
    {
        cijfers.push(vak);
    }
 
    public Vak Geef()
    {
        return (Vak)cijfers.pop();
    }
 
    public boolean IsLeeg()
    {
        return cijfers.empty();
    }
 
    public void MaakLeeg()
    {
        while (!IsLeeg())
            {
            Geef();
            }
    }
}

Posted: Mon 09 Oct 2006 14:21
by Puzzle

Code: Select all

// File: MogelijkeCijfers.java
// Date: 30 September 2006.
//
// Copyright (c) 2006 Cliff Huylebroeck. All Rights Reserved.
//
// Permission to use, copy, modify, and distribute this software
// and its documentation for NON-COMMERCIAL purposes and without
// fee is hereby granted provided that this copyright notice
// appears in all copies.
//
// Cliff Huylebroeck MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
// SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT
// NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
// A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. Cliff Huylebroeck SHALL NOT
// BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
 
public class MogelijkeCijfers extends CijferVerzameling
{
    public MogelijkeCijfers()
    {
    }
 
    public void MaakLeeg()
    {
        VoegAllesToe();
    }
}