PiF 5

  <terug>
Programmeeropdracht: het afdrukken van een sudoku


Sudoku's

Als je bij het oplossen van een sudoku ontdekt dat je ergens een fout gemaakt hebt, is een reparatie heel lastig want welke vakjes heb je na de fout nog ingevuld?

Een forthprogramma met een intelligente inputroutine kan dat probleem natuurlijk verhelpen.

 CREATE (SDK 81 ALLOT ALIGN
De bytes van (SDK representeren de vakjes van de sudoku.

De meeste sudoku's gebruiken cijfers als symbolen, maar er zijn ook lettersudoku's. De symbolen komen daarom gecodeerd in (SDK te staan en ze corresponderen altijd met de interne codes 0 t/m 8. Iedere andere code betekent dat het betreffende vakje nog niet ingevuld is.


Opdracht 5a

: >SYMBOOL ( code -- symbool ) ... ;
Dit woord zet de interne code om naar het bijbehorende symbool (ASCII).
  0..8  ->  symbool
  rest  ->  spatie of dubbele punt (zie onder)

Geef twee oplossingen, een voor cijfersudoku's en een voor een sudoku die de letters van 'MAISFORTH' gebruikt, zoals Frans van der Markt die eens in het Vijgeblaadje heeft gezet.


Opdracht 5b

De sudoku wordt afgedrukt met
 .SDK ( -- ) ... ;
Eenvoud en duidelijkheid van beeld krijgen de prioriteit.

Houd het simpel, vermijd frutsels die niet bijdragen aan de duidelijkheid. Een spatie op zijn tijd doet wonderen.

Advies: Als je op de plek van lege vakjes een dubbele punt afdrukt, kun je de sudoku heel overzichtelijk weergeven met uitsluitend extra spaties, dus zonder gedoe met lijntjes.

Zo, dit wat betreft de output. De intelligente inputroutine komt later ;-)
 
Groeten,
A.N.
  <terug>