From c5fcf7179a83ef65c86c6a4a390029149e518649 Mon Sep 17 00:00:00 2001 From: Franciszek Malinka Date: Tue, 5 Oct 2021 21:49:54 +0200 Subject: Duzy commit ze smieciami --- Semestr 2/racket/l14z22/solution.rkt | 87 ------------------------------------ 1 file changed, 87 deletions(-) delete mode 100644 Semestr 2/racket/l14z22/solution.rkt (limited to 'Semestr 2/racket/l14z22/solution.rkt') diff --git a/Semestr 2/racket/l14z22/solution.rkt b/Semestr 2/racket/l14z22/solution.rkt deleted file mode 100644 index 480c772..0000000 --- a/Semestr 2/racket/l14z22/solution.rkt +++ /dev/null @@ -1,87 +0,0 @@ -#lang racket - -(require racklog) - -(provide solve) - -;; transpozycja tablicy zakodowanej jako lista list -(define (transpose xss) - (cond [(null? xss) xss] - ((null? (car xss)) (transpose (cdr xss))) - [else (cons (map car xss) - (transpose (map cdr xss)))])) - -;; procedura pomocnicza -;; tworzy listę n-elementową zawierającą wyniki n-krotnego -;; wywołania procedury f -(define (repeat-fn n f) - (if (eq? 0 n) null - (cons (f) (repeat-fn (- n 1) f)))) - -;; tworzy tablicę n na m elementów, zawierającą świeże -;; zmienne logiczne -(define (make-rect n m) - (repeat-fn m (lambda () (repeat-fn n _)))) - -;; predykat binarny -;; (%row-ok xs ys) oznacza, że xs opisuje wiersz (lub kolumnę) ys -(define %row-ok - (%rel (xs ys zs n) - [(null null)] - [(xs (cons '_ ys)) - (%row-ok xs ys)] - [((cons n xs) ys) - (%stars ys n) - (%cut-first-n ys zs n) - (%row-ok xs zs)])) - - -(define %suffix - (%rel (xs ys x) - [(xs xs)] - [((cons x xs) ys) - (%suffix xs ys)])) - -(define %cut-first-n - (%rel (xs ys n yl) - [(xs xs 0)] - [(xs ys n) - (%suffix xs ys) - (%is #t (= (- (length xs) (length ys)) n))])) - - -;; usun n pierwszych elementow z xs -(define (suffix xs n) - (if (= n 0) - xs - (suffix (cdr xs) (- n 1)))) - - -;; sprawdza czy pierwsze n elementów listy to gwiazdki (dokladnie n) -(define %stars - (%rel (xs m n) - [(null 0)] - [((cons '_ xs) n) - (%is n 0)] - [((cons '* xs) n) - (%is m (- n 1)) - (%stars xs m)])) - -(define %board-ok - (%rel (xss xs yss ys) - [(null null)] - [((cons xs xss) (cons ys yss)) - (%row-ok xs ys) - (%board-ok xss yss)])) - -;; funkcja rozwiązująca zagadkę -(define (solve rows cols) - (define board (make-rect (length cols) (length rows))) - (define tboard (transpose board)) - (define ret (%which (xss) - (%= xss board) - (%board-ok rows board) - (%board-ok cols tboard))) - (and ret (cdar ret))) - - -- cgit v1.2.3