Exemple #1
0
    def run(self, fnprovider: AbstractFilenameProvider):
        res = 500
        mandelbrot(20, res, 'simple', 'mandelbrot').save(
            fnprovider.get_filename(".png", "mandelbrot", "Mandelbrot"))
        mandelbrot(15, res, 'simple+finaldist', 'mandelbrot').save(
            fnprovider.get_filename(".png", "mandelbrot_final_dist",
                                    "Mandelbrot with final distances"))
        mandelbrot(20, res, 'avgdist', 'mandelbrot').save(
            fnprovider.get_filename(".png", "mandelbrot_avgdist",
                                    "Mandelbrot with average distances"))

        julius_init = -0.13 + 0.75j
        mandelbrot(20, res, 'simple', 'julius', julius_init=julius_init).save(
            fnprovider.get_filename(".png", "julius", "Julius"))
        mandelbrot(15,
                   res,
                   'simple+finaldist',
                   'julius',
                   julius_init=julius_init).save(
                       fnprovider.get_filename(".png", "julius_final_dist",
                                               "Julius with final distances"))
        mandelbrot(20, res, 'avgdist', 'julius', julius_init=julius_init).save(
            fnprovider.get_filename(".png", "julius_avgdist",
                                    "Julius with average distances"))
        return fnprovider.format_files()
Exemple #2
0
 def run(self, fnprovider: AbstractFilenameProvider):
     self.grid().save(fnprovider.get_filename('.png', 'grid', 'Grid'))
     self.circles().save(
         fnprovider.get_filename('.png', 'circles', 'Circles'))
     self.color_grid().save(
         fnprovider.get_filename('.png', 'color_grid', 'Color grid'))
     return fnprovider.format_files()
Exemple #3
0
 def run(self, fnprovider: AbstractFilenameProvider):
     self.s1('../resources/w4/skryvacka1.png').save(
         fnprovider.get_filename('.png', 'skryvacka1', 'Skrývačka 1'))
     self.s2('../resources/w4/skryvacka2.png').save(
         fnprovider.get_filename('.png', 'skryvacka2', 'Skrývačka 2'))
     self.s3('../resources/w4/skryvacka3.png').save(
         fnprovider.get_filename('.png', 'skryvacka3', 'Skrývačka 3'))
     return fnprovider.format_files()
Exemple #4
0
 def run(self, fnprovider: AbstractFilenameProvider):
     img = bifurcations((2, 4), 10000, (0, 1), 5000, .2)
     img.save(fnprovider.get_filename('.png', 'bif', 'Bifurcations'))
     img.thumbnail((500, 500), Image.ANTIALIAS)
     img.save(
         fnprovider.get_filename('.png', 'bif_small',
                                 'Bifurcations (small)'))
     return fnprovider.format_files()
Exemple #5
0
 def run(self, fnprovider: AbstractFilenameProvider):
     """Sokoban. Prevzaté z https://www.umimematiku.cz"""
     animate_sokoban('../resources/w12/sokoban1.txt',
                     fnprovider.get_filename('.gif', 'simple', "Simple"))
     animate_sokoban('../resources/w12/sokoban2.txt',
                     fnprovider.get_filename('.gif', 'hard', 'Hard'))
     animate_sokoban('../resources/w12/sokoban3.txt',
                     fnprovider.get_filename('.gif', 'slides', 'Slides'))
     return fnprovider.format_files()
Exemple #6
0
 def run(self, fnprovider: AbstractFilenameProvider):
     plt.clf()
     random.seed(433308)
     iters = 100000
     drawResults(20, iters).savefig(
         fnprovider.get_filename(".png", "test_20", "Test 20"))
     drawResults(50, iters).savefig(
         fnprovider.get_filename(".png", "test_50", "Test 50"))
     drawResults(100, iters).savefig(
         fnprovider.get_filename(".png", "test_100", "Test 100"))
     return fnprovider.format_files()
Exemple #7
0
 def run(self, fnprovider: AbstractFilenameProvider):
     hidden = self.hide(Image.open('../resources/w4/fi.png'),
                        Image.open('../resources/w4/hidden.png'))
     hidden.save(
         fnprovider.get_filename('.png', 'with_message',
                                 "Image with a hidden message"))
     extracted = self.extract(hidden)
     extracted.save(
         fnprovider.get_filename('.png', 'extracted_message',
                                 "Extracted message"))
     return fnprovider.format_files()
Exemple #8
0
    def run(self, fnprovider: AbstractFilenameProvider):
        random.seed(433308)
        self.eval(fnprovider, gen_points_normal(50, (5, 405)), 'normal')

        random.seed(433308 * 2)
        self.eval(fnprovider, gen_points_grid(10, 5, 40, fuzz=5), 'grid')

        random.seed(433308 * 2)
        self.eval(fnprovider, gen_points_grid(10, 5, 40, fuzz=5, remove=0.2),
                  'sparse')

        return fnprovider.format_files()
Exemple #9
0
 def run(self, fnprovider: AbstractFilenameProvider):
     random.seed(433308)
     lines = gen_line_segments(500, 30, (5, 405))
     d = svgwrite.Drawing(fnprovider.get_filename('.svg', 'test', 'Test'),
                          size=(410, 410))
     for start, end in lines:
         d.add(svgwrite.shapes.Line(start, end, stroke='black'))
     for intersection in intersections(lines):
         d.add(
             svgwrite.shapes.Circle(center=intersection, r=1,
                                    stroke='blue'))
     d.save()
     return fnprovider.format_files()
Exemple #10
0
    def run(self, fnprovider: AbstractFilenameProvider):
        weed(fnprovider.get_filename('.svg', 'weed_growth', 'Weed growth'))
        koch(fnprovider.get_filename('.svg', 'koch', 'Koch'))
        sierpinsky(fnprovider.get_filename('.svg', 'sierpinsky', "Sierpinsky"))
        sierpinsky(fnprovider.get_filename('.svg', 'sierpinsky_twisted',
                                           "Sierpinsky twisted"),
                   angle=56,
                   step=4)
        paprad(fnprovider.get_filename('.svg', 'paprad', 'Paprad'))
        pentaplexity(
            fnprovider.get_filename('.svg', 'pentaplexity', "Pentaplexity"))

        return fnprovider.format_files()
Exemple #11
0
 def run(self, fnprovider: AbstractFilenameProvider):
     extra = {}
     with open('../resources/w12/ciselne-bludiste.txt', 'r') as fd:
         i = 0
         while True:
             unique, path = process(fd)
             extra[f'Maze {i}'] = ' -> '.join(map(
                 str, path)) + (' (unique)' if unique else '')
             line = fd.readline()
             if not line.startswith('-'):
                 break
             i += 1
     return fnprovider.format_files(**extra)
Exemple #12
0
    def run(self, fnprovider: AbstractFilenameProvider):
        random.seed(433308)

        colors = list(matplotlib.colors.TABLEAU_COLORS.values())
        animate(
            5, 3,
            sum([
                generate_circle_gauss(50, (200, 200), 20),
                generate_circle_gauss(80, (300, 200), 30),
                generate_circle_gauss(50, (380, 350), 50)
            ], []), colors,
            500).saveas(fnprovider.get_filename(".svg", "example1",
                                                "Distinct clusters"),
                        pretty=True)

        animate(
            5, 3,
            sum([
                generate_circle_gauss(100, (200, 200), 50),
                generate_circle_gauss(100, (300, 200), 50),
                generate_circle_gauss(50, (380, 350), 50)
            ], []), colors,
            500).saveas(fnprovider.get_filename(".svg", "example2",
                                                "2 merged clusters"),
                        pretty=True)

        animate(13,
                3,
                sum([
                    generate_circle_gauss(200, (200, 200), 50),
                    generate_circle_gauss(200, (250, 200), 50),
                    generate_circle_gauss(50, (380, 350), 50)
                ], []),
                colors,
                500,
                init_idxs=[0, 1, 2]).saveas(fnprovider.get_filename(
                    ".svg", "example3", "2 merged clusters (very close)"),
                                            pretty=True)

        animate(6,
                2,
                load_points('../resources/w11/faithful.txt'),
                colors,
                150,
                x_scale=10,
                scale=5,
                init_idxs=[54, 222]).saveas(fnprovider.get_filename(
                    ".svg", "faithful", "Faithful"),
                                            pretty=True)

        return fnprovider.format_files()
Exemple #13
0
 def run(self, fnprovider: AbstractFilenameProvider):
     save_gif(
         chaos_game(3, 10000, 10, 1 / 2),
         fnprovider.get_filename('.gif', 'chaos_triangle',
                                 'Chaos triangle (n=3, r=1/2)'))
     save_gif(chaos_game(5, 10000, 50, 1 / 2),
              fnprovider.get_filename('.gif', 'chaos_pentagon',
                                      'Chaos pentagon (n=3, r=1/2)'),
              duration=100)
     save_gif(chaos_game(5, 10000, 50, 1 / 3),
              fnprovider.get_filename('.gif', 'chaos_pentagon_third',
                                      'Chaos pentagon (n=3, r=1/3)'),
              duration=100)
     return fnprovider.format_files()
Exemple #14
0
 def run(self, fnprovider: AbstractFilenameProvider):
     plt.clf()
     fig, ax = plt.subplots()
     fig.suptitle("Monty hall distributions by strategy")
     ax.set_ylabel('Win rate')
     ax.set_xlabel('Strategy')
     ax.bar(list(range(3)), [
         play(lambda: True),
         play(lambda: False),
         play(lambda: random.choice([True, False]))
     ],
            tick_label=['Always swap', 'Never swap', 'Random'])
     fig.savefig(
         fnprovider.get_filename('.png', 'monty_hall_distribution',
                                 'Monty hall distributions by strategy'))
     return fnprovider.format_files()
Exemple #15
0
 def run(self, fnprovider: AbstractFilenameProvider):
     iters = 100000
     for N in (5, 10, 20, 50, 100):
         plt.clf()
         x = np.array(list(range(2, 10)))
         y2 = [sample(N, X, iters) for X in x]
         y = [v[True] for v in y2]
         z = [v[False] for v in y2]
         plt.bar(x, y, width=0.2, color='red')
         plt.bar(x, z, bottom=y, width=0.2, color='blue')
         plt.legend(['fake', 'correct'])
         plt.xlabel(f'Number of throws')
         plt.ylabel(f'Probability of the kind of die')
         plt.title(f'{N} dice')
         plt.savefig(fnprovider.get_filename('.png', f'samples_N{N}', f'Samples with N = {N}'))
     return fnprovider.format_files()
Exemple #16
0
    def run(self, fnprovider: AbstractFilenameProvider):
        draw_mrcm(5,
                  square(25), [
                      mult(translation(25, 0), scale(0.5, 0.5)),
                      mult(translation(0, 50), scale(0.5, 0.5)),
                      mult(translation(50, 50), scale(0.5, 0.5))
                  ],
                  viewbox=(-10, -10, 70, 70),
                  stroke=0.5).saveas(
                      fnprovider.get_filename('.svg', 'square_sierpinsky',
                                              'Square Sierpinsky'))

        draw_mrcm(5,
                  square(25), [
                      mult(scale(0.5, 0.5)),
                      mult(translation(0, 50), scale(0.5, 0.5)),
                      mult(translation(50, 50), scale(0.5, 0.5))
                  ],
                  viewbox=(-10, -10, 70, 70),
                  stroke=0.5).saveas(
                      fnprovider.get_filename('.svg',
                                              'square_tilted_sierpinsky',
                                              'Square tilted Sierpinsky'))

        draw_mrcm(7,
                  apply(translation(25, 25), square(25)), [
                      mult(translation(0, -50), scale(0.5, -0.5)),
                      mult(translation(50, 0), scale(0.5, 0.5)),
                      mult(translation(-50, 50), scale(-0.5, 0.5))
                  ],
                  viewbox=(-10, -10, 70, 70),
                  stroke=0.1).saveas(
                      fnprovider.get_filename('.svg', 'sierpinsky_var1',
                                              'Sierpinsky variant 1'))

        draw_mrcm(1,
                  apply(translation(25, 25), square_with_corner(25)), [
                      mult(translation(0, -50), scale(0.5, -0.5)),
                      mult(translation(50, 0), scale(0.5, 0.5)),
                      mult(translation(-50, 50), scale(-0.5, 0.5))
                  ],
                  viewbox=(-10, -10, 70, 70),
                  stroke=0.1).saveas(
                      fnprovider.get_filename('.svg', 'sierpinsky_var1_1step',
                                              'Sierpinsky variant 1 (1 step)'))

        return fnprovider.format_files()
Exemple #17
0
    def run(self, fnprovider: AbstractFilenameProvider):
        plt.clf()
        visualize_from_file('../resources/w11/linreg.txt').save(
            fnprovider.get_filename('.gif', 'linreg', 'Linreg'),
            writer='imagemagick',
            fps=1)

        visualize_generated(lambda: random.uniform(-1, 1), random.random) \
            .save(fnprovider.get_filename('.gif', 'even_dist', 'Even distribution'), writer='imagemagick', fps=1)
        visualize_generated(lambda: random.gauss(0, 1), random.random) \
            .save(fnprovider.get_filename('.gif', 'gauss_dist', 'Gaussian distribution'), writer='imagemagick', fps=1)

        visualize_generated(lambda: random.gauss(0, 1), lambda: random.lognormvariate(0, 1)) \
            .save(fnprovider.get_filename('.gif', 'gauss_log-normal_dist',
                                          'Gaussian distribution with log-normal along the line'), writer='imagemagick',
                  fps=1)
        return fnprovider.format_files()
Exemple #18
0
    def run(self, fnprovider: AbstractFilenameProvider):
        with open(fnprovider.get_filename(".svg", "small", "Small (5)"),
                  'w') as f:
            create_puzzle(5, 2).write(f, pretty=True)

        with open(fnprovider.get_filename(".svg", "medium", "Medium (10)"),
                  'w') as f:
            create_puzzle(10, 2).write(f, pretty=True)

        with open(fnprovider.get_filename(".svg", "large", "Large (20)"),
                  'w') as f:
            create_puzzle(20, 2).write(f, pretty=True)

        with open(
                fnprovider.get_filename(".svg", "large_dense",
                                        "Large dense (20)"), 'w') as f:
            create_puzzle(20, 4).write(f, pretty=True)
        return fnprovider.format_files()
Exemple #19
0
 def run(self, fnprovider: AbstractFilenameProvider):
     files = [f'../resources/w9/random{f}.txt' for f in range(1, 8)]
     for i in range(1, 5):
         self.render(i, files).savefig(
             fnprovider.get_filename(".png", f"{i}-grams", f"{i}-grams"))
     return fnprovider.format_files()
Exemple #20
0
    def run(self, fnprovider: AbstractFilenameProvider):
        self.eval(fnprovider, gen_points_normal(5000, (50, 200)), 'normal')
        self.eval(fnprovider, gen_points_grid(10, 15, 40, fuzz=10, remove=.2),
                  'sparse')

        return fnprovider.format_files()