Riešenia (skupina A, 1. týždeň)

import sk.upjs.jpaz2.Turtle;
import sk.upjs.paz.calltree.CallTree;

public class Fraktalka extends Turtle {

        public void utvar1(int uroven, double rozmer) {
                CallTree.markCall(uroven, rozmer);
                if (uroven > 0) {
                        for (int i = 0; i < 6; i++) {
                                step(rozmer);
                                utvar1(uroven - 1, rozmer / 3);
                                step(-rozmer);
                                turn(60);
                        }
                }
        }

        public void utvar2(int uroven, double rozmer) {
                if (uroven == 0)
                        return;

                for (int i = 0; i < 4; i++) {
                        step(rozmer);
                        turn(-90);
                        utvar2(uroven - 1, rozmer / 3);
                        turn(90);
                        turn(90);
                }
        }

        public void utvar1fast(double rozmer) {
                if (rozmer > 0.5) {
                        for (int i = 0; i < 6; i++) {
                                step(rozmer);
                                utvar1fast(rozmer / 3);
                                step(-rozmer);
                                turn(60);
                        }
                }
        }

}
import sk.upjs.jpaz2.Turtle;

public class Fraktalka extends Turtle {

        public void stvorcovac(int u, double d) {
                if (u > 0) {
                        for (int i = 0; i < 4; i++) {
                                step(d / 3);
                                turn(-90);
                                stvorcovac(u - 1, d / 3);
                                turn(90);
                                step(2 * d / 3);
                                turn(90);
                        }
                }
        }

}

import sk.upjs.jpaz2.*;

public class Spustac {
        public static boolean paritaNastriedacku(int[] p, int odIdx, int poIdx) {
                if (odIdx > poIdx)
                        return true;
                if (odIdx == poIdx)
                        return true;
                if (odIdx == poIdx - 1)
                        return p[odIdx] % 2 != p[poIdx] % 2;

                int stred = (odIdx + poIdx) / 2;
                return paritaNastriedacku(p, odIdx, stred)
                                && paritaNastriedacku(p, stred, poIdx);
        }

        public static int sucet(int a, int b) {
                if (b == 0) {
                        return a;
                }

                a++;
                b--;
                return sucet(a, b);
        }

        public static void forRekurzivne(int i, int b) {
                if (i < b) {
                        // prikazy for-u
                        forRekurzivne(i + 1, b);
                }
        }

        /**
         * @param args
         */

        public static void main(String[] args) {
                WinPane plocha = new WinPane();
                Fraktalka f = new Fraktalka();
                plocha.add(f);
                f.center();
                f.stvorcovac(3, 100);

                int[] p = { 2, 2, 1, 2 };
                System.out.println(paritaNastriedacku(p, 0, 3));
        }

}