100% found this document useful (8 votes)
18 views

(Ebook) Math Adventures with Python: An Illustrated Guide to Exploring Math with Code by Peter Farrell ISBN 9781593278670, 1593278675 2024 scribd download

The document provides information about the ebook 'Math Adventures with Python' by Peter Farrell, which teaches readers how to explore mathematical concepts using Python programming. It includes links to download the ebook and other related titles, as well as a brief overview of the content covered in the book. The book aims to make math engaging and relevant through programming, covering topics such as recursion, algebra, and graphics.

Uploaded by

hacheztrya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (8 votes)
18 views

(Ebook) Math Adventures with Python: An Illustrated Guide to Exploring Math with Code by Peter Farrell ISBN 9781593278670, 1593278675 2024 scribd download

The document provides information about the ebook 'Math Adventures with Python' by Peter Farrell, which teaches readers how to explore mathematical concepts using Python programming. It includes links to download the ebook and other related titles, as well as a brief overview of the content covered in the book. The book aims to make math engaging and relevant through programming, covering topics such as recursion, algebra, and graphics.

Uploaded by

hacheztrya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 67

Download Full Version ebook - Visit ebooknice.

com

(Ebook) Math Adventures with Python: An


Illustrated Guide to Exploring Math with Code by
Peter Farrell ISBN 9781593278670, 1593278675

https://ebooknice.com/product/math-adventures-with-python-
an-illustrated-guide-to-exploring-math-with-code-10674096

Click the button below to download

DOWLOAD EBOOK

Discover More Ebook - Explore Now at ebooknice.com


Instant digital products (PDF, ePub, MOBI) ready for you
Download now and discover formats that fit your needs...

Start reading on any device today!

(Ebook) Math Adventures with Python: An Illustrated Guide


to Exploring Math with Code by Peter Farrell ISBN
9781593278670, 1593278675
https://ebooknice.com/product/math-adventures-with-python-an-
illustrated-guide-to-exploring-math-with-code-10674096

ebooknice.com

(Ebook) doing math with python doing math with python by


kan

https://ebooknice.com/product/doing-math-with-python-doing-math-with-
python-50196050

ebooknice.com

(Ebook) Second Grade Math With Confidence Instructor Guide


(Math with Confidence, 7) by Kate Snow ISBN 9781952469312,
1952469317
https://ebooknice.com/product/second-grade-math-with-confidence-
instructor-guide-math-with-confidence-7-43748956

ebooknice.com

(Ebook) Doing Math with Python by Amit Saha ISBN


9781593277192, 1593277199

https://ebooknice.com/product/doing-math-with-python-58614158

ebooknice.com
(Ebook) Exploring Math with Technology; Practices for
Secondary Math Teachers by Allison W. McCulloch & Jennifer
N. Lovett ISBN 9781032298375, 1032298375
https://ebooknice.com/product/exploring-math-with-technology-
practices-for-secondary-math-teachers-50271548

ebooknice.com

(Ebook) PNF in Practice - An Illustrated Guide, 5e by


Dominiek Beckers, Math Buck ISBN 9783662618172, 3662618176

https://ebooknice.com/product/pnf-in-practice-an-illustrated-
guide-5e-23616378

ebooknice.com

(Ebook) Doing Math with Python: Use Programming to Explore


Algebra, Statistics, Calculus, and More! by Amit Saha ISBN
9781593276409, 1593276400
https://ebooknice.com/product/doing-math-with-python-use-programming-
to-explore-algebra-statistics-calculus-and-more-5209546

ebooknice.com

(Ebook) Doing Math with Python: Use Programming to Explore


Algebra, Statistics, Calculus, and More! by Amit Saha ISBN
9781593276409, 1593276400
https://ebooknice.com/product/doing-math-with-python-use-programming-
to-explore-algebra-statistics-calculus-and-more-55421412

ebooknice.com

(Ebook) Math for Programmers: 3D graphics, machine


learning, and simulations with Python MEAP V10 by Paul
Orland
https://ebooknice.com/product/math-for-programmers-3d-graphics-
machine-learning-and-simulations-with-python-meap-v10-11069540

ebooknice.com
MAKE MATH

M AT H A D V E N T U R E S
COVERS
COME ALIVE
PYTHON 3
WITH PYTHON

WITH PY THON

M AT H A DV E N T UR E S W I T H PY T HON
A N I L L U S T R A T E D G U I D E T O
Math Adventures with Python will show you how to • Use recursion to create fractals like the Koch
harness the power of programming to keep math snowflake and the Sierpinski triangle E X P L O R I N G M A T H W I T H C O D E
relevant and fun. With the aid of the Python program-
• Generate virtual sheep that graze on grass and
ming language, you’ll learn how to visualize solutions
multiply autonomously
to a range of math problems as you use code to explore
key mathematical concepts like algebra, trigonometry, • Crack secret codes using genetic algorithms PETER FARRELL
matrices, and cellular automata.
As you work through the book’s numerous examples
Once you’ve learned programming basics like loops and increasingly challenging exercises, you’ll code
and variables, you’ll write your own programs to solve your own solutions, create beautiful visualizations,
equations quickly, make cool things like an interactive and see just how much more fun math can be!
rainbow grid, and automate tedious tasks like factoring
ABOUT THE AUTHOR
numbers and finding square roots. You’ll learn how to
write functions to draw and manipulate shapes, create Peter Farrell is a math and computer science teacher
oscillating sine waves, and solve equations graphically. with a passion for customizing (”hacking”) math
education and learning with technology. He lives in
You’ll also learn how to:
the San Francisco Bay Area with his wife and children.
• Draw and transform 2D and 3D graphics with
matrices

• Make colorful designs like the Mandelbrot and


Julia sets with complex numbers

T H E F I N E ST I N G E E K E N T E RTA I N M E N T ™
FARRELL

w w w.nostarch.com
$29.95 ($39.95 CDN)
LANGUAGES/PYTHON
SHELVE IN: PROGRAMMING

“ I L I E F L AT .”
This book uses a durable binding that won’t snap shut.
Math Adventures
with Python
Math
Adventu res
with Py thon
A n I llu s t r at e d G u i d e to
E x p l o r i n g M at h w it h C o d e

b y P e t e r Fa r r e ll

San Francisco
Math Adventures with Python. Copyright © 2019 by Peter Farrell.

All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording, or by any information storage or retrieval
system, without the prior written permission of the copyright owner and the publisher.

ISBN-10: 1-59327-867-5
ISBN-13: 978-1-59327-867-0

Publisher: William Pollock


Production Editor: Meg Sneeringer
Cover Illustration: Josh Ellingson
Developmental Editor: Annie Choi
Technical Reviewer: Patrick Gaunt
Copyeditor: Barton D. Reed
Compositors: David Van Ness and Meg Sneeringer
Proofreader: James Fraleigh

The following images are reproduced with permission:


Figure 10-2 by Acadac mixed from originals made by Avsa (https://commons.wikimedia.org/wiki/File:Britain-
fractal-coastline-100km.png#/media/File:Britain-fractalcoastline-combined.jpg; CC-BY-SA-3.0);
Figure 11-19 by Fabienne Serriere, https://knityak.com/.

For information on distribution, translations, or bulk sales, please contact No Starch Press, Inc. directly:
No Starch Press, Inc.
245 8th Street, San Francisco, CA 94103
phone: 1.415.863.9900; [email protected]
www.nostarch.com

A catalog record of this book is available from the Library of Congress.

No Starch Press and the No Starch Press logo are registered trademarks of No Starch Press, Inc. Other
product and company names mentioned herein may be the trademarks of their respective owners. Rather
than use a trademark symbol with every occurrence of a trademarked name, we are using the names only
in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of
the trademark.

The information in this book is distributed on an “As Is” basis, without warranty. While every precaution
has been taken in the preparation of this work, neither the authors nor No Starch Press, Inc. shall have
any liability to any person or entity with respect to any loss or damage caused or alleged to be caused
directly or indirectly by the information contained in it.
This book is dedicated to all my students,
from whom I’ve learned so much.
About the Author
Peter Farrell was a math teacher for eight years, starting first as
a Peace Corps volunteer in Kenya. He then worked as a computer
science teacher for three years. After reading Seymour Papert’s
Mindstorms and being introduced to Python by a student, he was
inspired to bring programming into math class. He is passionate
about using computers to make learning math more relevant, fun,
and challenging.

About the Technical Reviewer


Paddy Gaunt graduated in engineering within weeks of the birth
of the IBM PC and its associated MS DOS. Much of the rest of his
career has revolved around implementing mathematical or tech-
nical concepts in practical software. Recently, he reformed links
with Cambridge University (UK) when he became lead developer
of pi3d, a python module for 3D graphics initially designed to run
on the Raspberry Pi computer.
B ri e f Co nte nts

Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii

Part I: Hitchin' Up Your Python Wagon


Chapter 1: Drawing Polygons with the Turtle Module . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Chapter 2: Making Tedious Arithmetic Fun with Lists and Loops . . . . . . . . . . . . . . . . . . 19
Chapter 3: Guessing and Checking with Conditionals . . . . . . . . . . . . . . . . . . . . . . . . . 37

Part 2: Riding into Math Territory


Chapter 4: Transforming and Storing Numbers with Algebra . . . . . . . . . . . . . . . . . . . . 53
Chapter 5: Transforming Shapes with Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Chapter 6: Creating Oscillations with Trigonometry . . . . . . . . . . . . . . . . . . . . . . . . . 103
Chapter 7: Complex Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Chapter 8: Using Matrices for Computer Graphics and Systems of Equations . . . . . . . . 145

Part 3: Blazing Your Own Trail


Chapter 9: Building Objects with Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Chapter 10: Creating Fractals Using Recursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Chapter 11: Cellular Automata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Chapter 12: Solving Problems Using Genetic Algorithms . . . . . . . . . . . . . . . . . . . . . . 247

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Visit https://ebooknice.com to
discover a wide range of
eBooks across various genres.
Enjoy exclusive deals and
discounts to enhance your
reading experience. Start your
digital reading journey today!
Co nte nts i n Detai l

Acknowledgments xv

Introduction xvii
The Problem with School Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviii
About This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xx
Who Should Use This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
What's in This Book? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
Downloading and Installing Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii
Starting IDLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii
Installing Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii

Part I: Hitchin' Up Your Python Wagon

1
Drawing Polygons with the Turtle module 3
Python’s turtle Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Importing the turtle Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Moving Your Turtle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Changing Directions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Repeating Code with Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Using the for Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Using a for Loop to Draw a Square . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Creating Shortcuts with Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Using Variables to Draw Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Using Variables in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Variable Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Equilateral Triangles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Writing the triangle() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Making Variables Vary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2
Making Tedious Arithmetic Fun
with Lists and Loops 19
Basic Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Operating on Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Using Operators to Write the average() Function . . . . . . . . . . . . . . . . . . . . . . 21
Mind the Order of Operations! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Using Parentheses with Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Data Types in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Integers and Floats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Booleans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Checking Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Using Lists to Store Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Adding Items to a List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Operating on Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Removing Items from a List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Using Lists in Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Accessing Individual Items with List Indices . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Accessing Index and Value with enumerate() . . . . . . . . . . . . . . . . . . . . . . . . . 29
Indices Start at Zero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Accessing a Range of List Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Finding Out the Index of an Item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Strings Use Indices, Too . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Summation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Creating the running_sum Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Writing the mySum() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Finding the Average of a List of Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3
Guessing and Checking with Conditionals 37
Comparison Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Making Decisions with if and else Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Using Conditionals to Find Factors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Writing the factors.py Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
The Wandering Turtle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Creating a Number-Guessing Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Making a Random Number Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Taking User Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Converting User Input to Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Using Conditionals to Check for a Correct Guess . . . . . . . . . . . . . . . . . . . . . . 45
Using a Loop to Guess Again! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Tips for Guessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Finding Square Roots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Applying the Number-Guessing Game Logic . . . . . . . . . . . . . . . . . . . . . . . . . 48
Writing the squareRoot() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

x   Contents in Detail
Part 2: Riding into Math Territory

4
Transforming and Storing Numbers
with Algebra 53
Solving First-Degree Equations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Finding the Formula for First-Degree Equations . . . . . . . . . . . . . . . . . . . . . . . . 55
Writing the equation() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Using print() Instead of return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Solving Higher-Degree Equations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Using quad() to Solve Quadratic Equations . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Using plug() to Solve a Cubic Equation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Solving Equations Graphically . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Getting Started with Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Creating Your Own Graphing Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Graphing an Equation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Using Guess and Check to Find the Roots . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Writing the guess() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5
Transforming Shapes with Geometry 77
Drawing a Circle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Specifying Location Using Coordinates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Transformation Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Translating Objects with translate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Rotating Objects with rotate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Drawing a Circle of Circles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Drawing a Circle of Squares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Animating Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Creating the t Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Rotating the Individual Squares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Saving Orientation with pushMatrix() and popMatrix() . . . . . . . . . . . . . . . . . . 88
Rotating Around the Center . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Creating an Interactive Rainbow Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Drawing a Grid of Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Adding the Rainbow Color to Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Drawing Complex Patterns Using Triangles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
A 30-60-90 Triangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Drawing an Equilateral Triangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Drawing Multiple Rotating Triangles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Phase-Shifting the Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Finalizing the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

Contents in Detail   xi
6
Creating Oscillations with Trigonometry 103
Using Trigonometry for Rotations and Oscillations . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Writing Functions to Draw Polygons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Drawing a Hexagon with Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Drawing an Equilateral Triangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Making Sine Waves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Leaving a Trail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Using Python’s Built-in enumerate() Function . . . . . . . . . . . . . . . . . . . . . . . . . 114
Creating a Spirograph Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Drawing the Smaller Circle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Rotating the Smaller Circle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Making Harmonographs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Writing the harmonograph Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Filling the List Instantly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Two Pendulums Are Better Than One . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

7
Complex Numbers 127
The Complex Coordinate System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Adding Complex Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Multiplying a Complex Number by i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Multiplying Two Complex Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Writing the magnitude() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Creating the Mandelbrot Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Writing the mandelbrot() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Adding Color to the Mandelbrot Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Creating the Julia Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Writing the julia() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

8
Using Matrices for Computer Graphics
and Systems of Equations 145
What Is a Matrix? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Adding Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Multiplying Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Order Matters in Matrix Multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Drawing 2D Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Transforming Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Transposing Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Rotating Matrices in Real Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Creating 3D Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Creating the Rotation Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Solving Systems of Equations with Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Gaussian Elimination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Writing the gauss() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

xii   Contents in Detail
Part 3: Blazing Your Own Trail

9
Building Objects with Classes 175
Bouncing Ball Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Making the Ball Move . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Making the Ball Bounce Off the Wall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Making Multiple Balls Without Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Creating Objects Using Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Grazing Sheep Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Writing the Class for the Sheep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Programming Sheep to Move Around . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Creating the energy Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Creating Grass Using Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Making the Grass Brown when Eaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Giving Each Sheep a Random Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Programming Sheep to Reproduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Letting the Grass Regrow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Providing an Evolutionary Advantage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

10
Creating Fractals Using Recursion 201
The Length of a Coastline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
What Is Recursion? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Writing the factorial() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Building a Fractal Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Koch Snowflake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Writing the segment() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Sierpinski Triangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Square Fractal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Dragon Curve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

11
Cellular Automata 225
Creating a Cellular Automaton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Writing a Cell Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Resizing Each Cell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Making a CA Grow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Putting the Cells into a Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Creating the Cell List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Python Lists Are Strange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
List Index Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Letting Your CA Grow Automatically . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Playing the Game of Life . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
The Elementary Cellular Automaton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

Contents in Detail   xiii
12
Solving Problems Using Genetic Algorithms 247
Using a Genetic Algorithm to Guess Phrases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Writing the makeList() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Testing the makeList() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Writing the score() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Writing the mutate() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Generating a Random Number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Solving the Traveling Salesperson Problem (TSP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Using Genetic Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Writing the calcLength() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Testing the calcLength() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Random Routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Applying the Phrase-Guessing Mutation Idea . . . . . . . . . . . . . . . . . . . . . . . . 265
Mutating Two Numbers in a List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Crossing Over to Improve Routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

Index 273

xiv   Contents in Detail
Ackn owle dg m e nts

I’d like to thank Don “The Mathman” Cohen for showing me how fun and
challenging learning real math can be; Seymour Papert for proving that
coding belongs in math class; Mark Miller for giving me a chance to put
my ideas into action; Hansel Lynn and Wayne Teng of theCoderSchool,
who let me continue to have fun coding with students; and Ken Hawthorn
for sharing my projects at his school. Thank you to my No Starch editors,
Annie Choi, Liz Chadwick, and Meg Sneeringer, for all your help making
this a much better book, and to Paddy Gaunt, whose input is visible all
over this book. This book wouldn’t exist without you all. Thank you to
everybody who said no—you gave me the energy to keep going. Finally,
thank you to Lucy for always believing in me.
I ntro du ctio n

Which approach shown in Figure 1 would


you prefer? On the left, you see an example
of a traditional approach to teaching math,
involving definitions, propositions, and proofs.
This method requires a lot of reading and odd sym-
bols. You’d never guess this had anything to do with
geometric figures. In fact, this text explains how to
find the centroid, or the center, of a triangle. But tradi-
tional approaches like this don’t tell us why we should
be interested in finding the center of a t­ riangle in the
first place.
Figure 1: Two approaches to teaching about the centroid

Next to this text, you see a picture of a dynamic sketch with a hundred
or so rotating triangles. It’s a challenging programming project, and if
you want it to rotate the right way (and look cool), you have to find the
centroid of the triangle. In many situations, making cool graphics is nearly
impossible without knowing the math behind geometry, for example. As
you’ll see in this book, knowing a little of the math behind triangles, like
the centroid, will make it easy to create our artworks. A student who knows
math and can create cool designs is more likely to delve into a little geom-
etry and put up with a few square roots or a trig function or two. A student
who doesn’t see any outcome, and is only doing homework from a textbook,
probably doesn’t have much motivation to learn geometry.
In my eight years of experience as a math teacher and three years
of experience as a computer science teacher, I’ve met many more math
­learners who prefer the visual approach to the academic one. In the
process of creating something interesting, you come to understand that
math is not just following steps to solve an equation. You see that explor-
ing math with programming allows for many ways to solve interesting
problems, with many unforeseen mistakes and opportunities for improve-
ments along the way.
This is the difference between school math and real math.

The Problem with School Math


What do I mean by “school math” exactly? In the US in the 1860s, school
math was preparation for a job as a clerk, adding columns of numbers by
hand. Today, jobs are different, and the preparation for these jobs needs to
change, too.
People learn best by doing. This hasn’t been a daily practice in schools,
though, which tend to favor passive learning. “Doing” in English and his-
tory classes might mean students write papers or give presentations, and
science students perform experiments, but what do math students do? It

xviii   Introduction
Visit https://ebooknice.com to
discover a wide range of
eBooks across various genres.
Enjoy exclusive deals and
discounts to enhance your
reading experience. Start your
digital reading journey today!
used to be that all you could actively “do” in math class was solve equations,
factor polynomials, and graph functions. But now that computers can do
most of those calculations for us, these practices are no longer sufficient.
Simply learning how to automate solving, factoring, and graphing is not
the final goal. Once a student has learned to automate a process, they can
go further and deeper into a topic than was ever possible before.
Figure 2 shows a typical math problem you’d find in a textbook, asking
students to define a function, “f(x),” and evaluate it for a ton of values.

Figure 2: A traditional approach to teaching functions

This same format goes on for 18 more questions! This kind of exercise
is a trivial problem for a programming language like Python. We could sim-
ply define the function f(x) and then plug in the values by iterating over a
list, like this:

import math

def f(x):
return math.sqrt(x + 3) - x + 1

#list of values to plug in


for x in [0,1,math.sqrt(2),math.sqrt(2)-1]:
print("f({:.3f}) = {:.3f}".format(x,f(x)))

The last line just makes the output pretty while rounding all the solu-
tions to three decimal places, as shown here:

f(0.000) = 2.732
f(1.000) = 2.000
f(1.414) = 1.687
f(0.414) = 2.434

In programming languages like Python, JavaScript, Java, and so on,


functions are a vitally important tool for transforming numbers and other
objects—even other functions! Using Python, you can give a descriptive
name to a function, so it’s easier to understand what’s going on. For ­example,

Introduction   xix
you can name a function that calculates the area of a rectangle by calling it
calculateArea(), like this:

def calculateArea(width,height):

A math textbook published in the 21st century, decades after Benoit


Mandelbrot first generated his famous fractal on a computer when working
for IBM, shows a picture of the Mandelbrot set and gushes over the discov-
ery. The textbook describes the Mandelbrot set, which is shown in Figure 3,
as “a fascinating mathematical object derived from the complex numbers.
Its beautiful boundary illustrates chaotic behavior.”

Figure 3: The Mandelbrot set

The textbook then takes the reader through a painstaking “exploration”


to show how to transform a point in the complex plane. But the student is
only shown how to do this on a calculator, which means only two points can
be transformed (iterated seven times) in a reasonable amount of time. Two
points.
In this book, you’ll learn how to do this in Python, and you’ll make the
program transform hundreds of thousands of points automatically and
even create the Mandelbrot set you see above!

About This Book


This book is about using programming tools to make math fun and rel-
evant, while still being challenging. You’ll make graphs to show all the pos-
sible outputs of a function. You’ll make dynamic, interactive works of art.
You’ll even make an ecosystem with sheep that move around, eat grass, and
multiply, and you’ll create virtual organisms that try to find the shortest
route through a bunch of cities while you watch!

xx   Introduction
You’ll do this using Python and Processing in order to supercharge
what you can do in math class. This book is not about skipping the math;
it’s about using the newest, coolest tools out there to get creative and learn
real computer skills while discovering the connections between math,
art, science, and technology. Processing will provide the graphics, shapes,
motion, and colors, while Python does the calculating and follows your
instructions behind the scenes.
For each of the projects in this book, you’ll build the code up from
scratch, starting from a blank file, and checking your progress at every
step. Through making mistakes and debugging your own programs, you’ll
get a much deeper understanding of what each block of code does.

Who Should Use This Book


This book is for anyone who’s learning math or who wants to use the most
modern tools available to approach math topics like trigonometry and alge-
bra. If you’re learning Python, you can use this book to apply your growing
programming skills to nontrivial projects like cellular automata, genetic
algorithms, and computational art.
Teachers can use the projects in this book to challenge their students
or to make math more approachable and relevant. What better way to teach
matrices than to save a bunch of points to a matrix and use them to draw a
3D figure? When you know Python, you can do this and much more.

What's in This Book?


This book begins with three chapters that cover basic Python concepts
you'll build on to explore more complicated math. The next nine chapters
explore math concepts and problems that you can visualize and solve using
Python and Processing. You can try the exercises peppered throughout the
book to apply what you learned and challenge yourself.
Chapter 1: Drawing Polygons with Turtles teaches basic programming
concepts like loops, variables, and functions using Python’s built-in
turtle module.
Chapter 2: Making Tedious Arithmetic Fun with Lists and Loops goes
deeper into programming concepts like lists and Booleans.
Chapter 3: Guessing and Checking with Conditionals applies your
growing Python skills to problems like factoring numbers and making
an interactive number-guessing game.
Chapter 4: Transforming and Storing Numbers with Algebra ramps up
from solving simple equations to solving cubic equations numerically
and by graphing.
Chapter 5: Transforming Shapes with Geometry shows you how to
create shapes and then multiply, rotate, and spread them all over
the screen.

Introduction   xxi
Chapter 6: Creating Oscillations with Trigonometry goes beyond right
triangles and lets you create oscillating shapes and waves.
Chapter 7: Complex Numbers teaches you how to use complex num-
bers to move points around the screen, creating designs like the
Mandelbrot set.
Chapter 8: Using Matrices for Computer Graphics and Systems of
Equations takes you into the third dimension, where you’ll translate
and rotate 3D shapes and solve huge systems of equations with one
program.
Chapter 9: Building Objects with Classes covers how to create one
object, or as many as your computer can handle, with roaming sheep
and delicious grass locked in a battle for survival.
Chapter 10: Creating Fractals Using Recursion shows how recursion
can be used as a whole new way to measure distances and create wildly
unexpected designs.
Chapter 11: Cellular Automata teaches you how to generate and pro-
gram cellular automata to behave according to rules you make.
Chapter 12: Solving Problems Using Genetic Algorithms shows you
how to harness the theory of natural selection to solve problems we
couldn’t solve in a million years otherwise!

Downloading and Installing Python


The easiest way to get started is to use the Python 3 software distribution,
which is available for free at https://www.python.org/. Python has become
one of the most popular programming languages in the world. It’s used to
­create websites like Google, YouTube, and Instagram, and researchers at
universities all over the world use it to crunch numbers in various fields,
from astronomy to zoology. The latest version released to date is Python 3.7.
Go to https://www.python.org/downloads/ and choose the latest version of
Python 3, as shown in Figure 4.

Figure 4: The official website of the Python Software Foundation

xxii   Introduction
You can choose the version for your operating
system. The site detected that I was using Windows.
Click the file when the download is complete, as
Figure 5: Click the down­
shown in Figure 5.
loaded file to start the
Follow the directions, and always choose the install
default options. It might take a few minutes to
install. After that, search your system for “IDLE.”
That’s the Python IDE, or integrated development environment, which is what
you’ll need to write Python code. Why “IDLE”? The Python programming
language was named after the Monty Python comedy troupe, and one of
the members is Eric Idle.

Starting IDLE
Find IDLE on your system and open it.

Figure 6: Opening IDLE on Windows

A screen called a “shell” will appear. You can use this for the interactive
coding environment, but you’ll want to save your code. Click FileNew
File or press alt-N, and a file will appear (see Figure 7).

Figure 7: Python’s interactive shell (left) and a new module (file) window, ready for code!

This is where you’ll write your Python code. We will also use Processing,
so let’s go over how to download and install Processing next.

Installing Processing
There’s a lot you can do with Python, and we’ll use IDLE a lot. But when
we want to do some heavy-duty graphics, we’re going to use Processing.
Processing is a professional-level graphics library used by coders and artists
to make dynamic, interactive artwork and graphics.

Introduction   xxiii
Go to https://processing.org/download/ and choose your operating system,
as shown in Figure 8.

Figure 8: The Processing website

Download the installer for


your operating system by click-
ing it and following the instruc-
tions. Double-click the icon to
start Processing. This defaults
to Java mode. Click Java to open
the drop-down menu, as shown
in Figure 9, and then click
Add Mode.
Select Python ModeInstall.
It should take a minute or two,
but after this you’ll be able to
code in Python with Processing.
Now that you’ve set up Python
and Processing, you’re ready to
start exploring math!

Figure 9: Where to find other Processing


modes, like the Python mode we’ll be using

xxiv   Introduction
Part I
Hitchin' Up
Your Python
Wagon
Dr awi n g Po lyg o n s with
1
th e Tu rtle m o du le

Centuries ago a Westerner heard a Hindu say the Earth


rested on the back of a turtle. When asked what the turtle was
standing on, the Hindu explained, “It’s turtles all the way down.”

Before you can start using math to build


all the cool things you see in this book,
you’ll need to learn how to give instructions
to your computer using a programming language
called Python. In this chapter you’ll get familiar with
some basic programming concepts like loops, vari-
ables, and functions by using Python’s built-in turtle
tool to draw different shapes. As you’ll see, the turtle
module is a fun way to learn about Python’s basic fea-
tures and get a taste of what you’ll be able to create
with programming.
Exploring the Variety of Random
Documents with Different Content
Róza mosoly alá rejtette el a zavarát, hogy mégis csak tetszik
neki az a szegény Meyer. Szerette volna, hogyha nem tetszenék.
Természetétől fogva tanulékony volt s méltányolta, hogy egy olyan
képzettségü pedagogus, mint Ronda, méltónak találta arra, hogy
foglalkozzék vele. Ilyen megtiszteltetés még nem érte. Amikor a
kövér nő tovább is védeni próbálta Meyert, Róza dühösen letorkolta.
Máskor meg egy hervadt rózsával csiklandta Ronda orrát.
– Ezt a rózsát az a kis kövérke adta, aki ott ül, mindjárt a
zongora mögött.
– Édesem, – mondta a kövér nő – az egy trafikos. Finum ember.
Kiepert is nála vásárol. Nagyszerüen megy az üzlete.
– Nem tudom, mit szól hozzá Ronda ur – kérdezte Róza.
Ronda azt mondta, hogy egyik leghitványabb diákja volt és mint
üzletember is hitvány, mert minden számláját ugy állitja ki, hogy a
neve kezdőbetüjét más, oda nem illő betüvel helyettesiti. A kövér nő
azt mondta, ez semmi. Ronda hazudozott, hogy az üzlete se szolid.
Frölich Róza nézte a professzort, aki tüzet okádott, riszálta a derekát
és szagolgatta a lankadt rózsát.
– Na, maga a kákán is csomót talál – jegyezte meg a kövér
hölgy. – Mondja meg az Isten szerelméért, miért ácsorog itt?
És mivel Ronda hallgatott, mint a csuka, folytatta:
– Csak lopja itt az időt.
– Semmire a világon nem jön rá – szólt Frölich kisasszony és a
térdire csapott.
Ronda fülig pirult.
– Akkor csak hagyja a faképnél, hadd bölcselkedjék magában, –
követelte a kövér asszonyság – jó magának butább is, azok se
akárkik és legalább néhanapján tudják, mit kell tenniök. Maga ért
engem, Rózácska. Tudja, ugye, hogy miért adok ilyen tanácsot,
végre itéletnapig én se várhatok.
Erre kiment, hogy Kiepertjével elénekeljék a csatadalt. Frölich
kisasszony siró keserüséggel mondta:
– A szentségit, ugy megcsipett, hogy kék folt marad a helyin!
A karját fogta.
– Ha jól meggondolom – tette aztán hozzá, kissé higgadtabban –
ez a perszóna már nagyon is pimasz lett.
Megállt és kétségbeesetten fakadt ki:
– Magában pedig egy szikra szánalom sincs!
És Ronda egyszerre érezte a nap-nap után szinte észrevétlenül
felhalmozódott kötelességek terhét, melyektől most már nem tudott
szabadulni.
Mig odakünn zengett a csatadal, Róza kisasszony sóhajtozva
járkált fel s alá az öltözőben.
– No de most adok nekik!… Mindig mondtam magának, hogy
undorodom ezektől a kövérektől. Na hát most aztán megkapják a
magukét.
És alig fejezte be a Kiepert-házaspár a német hősiességet
dicsőitő éneket, Róza kisasszony viharosan kirobbant és a
hazafiasságtól csöpögő terembe belerikácsolta:

A férjem német tengerész,


Csatázik folyton ő,
De akkor is csatára kész,
Mikor az ágyba jő…

Először elképedtek az emberek, azután hangosan felzudultak,


végül pedig jót mulattak a furcsa helyzeten. Frölich kisasszony
merészsége sikerült, győzelemtől ittasan tért vissza az öltözőbe.
A kövér asszonyság ezuttal komolyan fel volt indulva.
– Mi ketten tótágast állunk, csakhogy a közönség egy kis
magasabb müélvezethez juthasson. És maga legszentebb
érzelmeinket kicsufolja. Ennél nagyobb szemtelenséget még nem
ettem!
Ronda Frölich kisasszony pártjára állott, kijelentette, hogy a
müvészetben minden iránynak van jogosultsága; müvészet az, amit
a nagy müvészek csináltak; és minden javak között legszentebb
Frölich Róza szinmüvésznő talentuma. Fejtegetéseit néhány a kövér
hölgyhöz intézett szóval fejezte be:
– Maga nekem…
Ebben a pillanatban Kiepert lépett a szobába. Vele volt egy
ember, akinek husos, veres képe pirosas kendővel volt köröskörül
kötve. A veresképü felhuzta a szemöldeit és igy szólt:
– Tyhü az áldóját, de csinos jószág maga lelkem! Tyhü ha! E mán
teszi… Mer hát én is kapitány volnék, vagy mi és ha kedve szottyana,
hogy valamit igyék…
Ronda beleszólt:
– Frölich Róza szinmüvésznő őnagysága – jól jegyezzük meg –
senkivel sem óhajt inni. Ön téved, ha azt hiszi. Egyébiránt kegyed
nyilván félreismeri, ennek a duty… ennek az öltözőnek a
magánjellegét.
– Maga tréfál – mondta a kapitány és még magasabbra huzta a
szemöldjeit.
– Egyáltalában nem – világositotta fel őt Ronda. – Hanem
kioktatom önt ama kötelességében, hogy hagyja el ezt a szobát.
Kieperték megsokalták a dolgot.
– Tisztelt tanár ur, – mondta boszusan és zsörtölődve az artista –
azt hiszem, jogom van behozni a barátomat, akivel éppen most ittam
pertut.
A felesége kitálalt:
– Láttak már ilyet? Senkinek nem ad egy árva fityinget, csak
rontja itt a levegőt és elriasztja a vendégeket. Róza, rögtön menjen
a kapitánnyal.
Ronda elkékült, reszketett.
– Frölich Róza szinmüvésznő őnagysága – kiáltotta mélyről jött
hangon és közben a félelemtől dühösen kancsalitott a müvésznő felé
– nem olyan jöttment, hogy önnel sörözni üljön le.
Szurós tekintetet vetett Rózára; a lány sóhajtott.
– Menjen innen, – mondta – látja, hogy hiába jött.
És Ronda győzedelmesen, halántékáig elvörösödve ugrott egyet:
– Hallja? Őnagysága maga mondja önnek. Frölich Róza
szinmüvésznő számüzi önt a közeléből. Engedelmeskedjék! Előre!
Szedje a sátorfáját!
És máris megmarkolta a kapitányt, gallérjánál fogta, a kijárat felé
lökdöste. Az erőteljes ember ellenállás nélkül türte. Mikor azonban
Ronda elbocsátotta, megrázta magát. Csakhogy akkor már kivül volt
a küszöbön és az ajtó hevesen csapódott be elámult szemöldökei
előtt.
Az artista öklével az asztalra vágott:
– Szerencsétlen, maga, ugy látszik…
– Maga pedig…
Ronda tüszkölve rontott feléje. Kiepert megijedt.
– Jegyezze meg magának, – igen ám, ugy bizony – hogy Frölich
Róza szinmüvésznő az én oltalmam alatt áll és nincs szándékomban
megengedni, hogy őt sértegessék – igen ám, ugy bizony. – Irja ezt
le magának és többször mondogassa!
Az artista morgott valamit, de már kissé meghunyászkodva.
Lassacskán odébb állott. Róza Rondára nézett és hangosan elnevette
magát, utána még egyszer nevetett, sokkal, sokkal halkabban,
gunyosan és szeretettel, mintha elgondolkozott volna kettejükön,
előbb Rondán, azután saját magán: hogy miért oly büszke erre az
emberre, akit máskülönben annyira nevetségesnek tart.
A kövér hölgy erőt vett haragján és Ronda vállára tette a kezét.
– Hallgassa meg, mit mondok – szólt.
Ronda félig elfordulva és tökéletesen megbékülve, a homlokát
törülgette. Zsarnoki dühe elfáradt, féktelen toporzékolása ujra néma
és fásult hallgatásba alélt el.
– Tehát ott az ajtónál van Kiepert és itt van Róza és itt van maga
és itt vagyok én…
Hathatósan igyekezett megmagyarázni a tényállást.
– És azután itt volt a hajóskapitány, akit maga kiebrudalt. Az
tudniillik Finnországból jött és pompás üzletet csinált, mert elsülyedt
a hajója és be volt biztositva… Magának nincs bebiztositott hajója,
ugy-e? Na hát az végre nem olyan nagy baj. Vannak helyette egyéb
szellemi kincsei. Csakhogy már látni is szeretnénk valamit ebből,
csak ezt akartam mondani… Látja például, itt van az a lány, az a
Róza. Ért engem? A kapitánynak van pénze, tekintélyes ember és a
lánynak is tetszik.
Ronda zavartan pillogatott a müvésznő felé.
– Ördögöt tetszik – mondta a lány.
– Hiszen maga mondta.
– Hogy hazudik!
– Merje tagadni, hogy az egyik diák, az a fekete fürtü, akinek a
szemére lóg a haja, komoly szerelmi ajánlatot tett magának.
Ronda vadul felpattant. Róza csititgatta:
– Ez nem igaz. A vörös csak el akarna venni, az az utálatos
vörös, aki olyan, mint egy medve. Az a gróf, de fütyülök rá, nekem
nem kell, százszor mondtam, hogy nem kell…
Gyermekien Rondára mosolygott.
– Hát akkor hazudtam – mondta az asszony. – De az már csak
való igaz, Rózácska lelkem, hogy maga kétszázhetven márkával
tartozik nekem? Higyje el, kedves tanár ur, nem szivesen beszélek
ilyenről, pláne maga előtt. De minden szentnek maga felé hajlik a
keze. És, kedves tanár ur, rosszul teszi, hogy innen kidobja a
vendégeket. A pénz a legkevesebb; de egy ilyen fiatal teremtésnek
szerelem is kell. Maga pedig nem jön rá semmire. Nem tudom, hogy
boszankodjam-e, vagy nevessek rajta.
Róza közbevágott:
– Ha én nem szólok, akkor magának egy szava sincs.
De a kövér nő tiltakozott; azt hitte, hogy a morál és a tisztesség
érdekében szólalt fel; és emelt fejjel ment ki.
Róza vállat vont:
– Kissé bogaras, de jókedélyü nő. Pénzt akar szerezni, mindig
csak pénzt akar velem szereztetni, de én nem adom be a derekamat.
Ronda feltekintett. Nem, ez a gyanu távol állott tőle.
– Senkinek se adom be a derekamat.
Jelentősen mosolygott, gunyosan és egyben szemérmesen:
– Még magának se.
Kissé várt.
– Elhiszi?
Többször kellett ezt kérdeznie. Ronda nem vette észre, milyen
hidat vert a nő szavaival. Csak azt érezte, hogy a hangulat
körülhullámozta és melege lett.
– Nem bánom – mondta és Róza felé nyujtotta reszkető kezét. A
lány odaadta a kezét. Kis, szürkés és kövérkés ujjacskái lágyan
csimpaszkodtak a kezébe. Haja, müvirágjai, festett arca ugy
keringtek Ronda szemei előtt, mint valami szines kerék. Ronda
küzdött magával.
– Ne tartozzék semmivel ennek az asszonynak. Kész vagyok…
Nyelt egyet. Rémülten az eszébe villant, hogy Lohmann
megelőzheti őt ebben az elhatározásában; Lohmann, aki hiányzott az
iskolából és talán a szinésznő szobájában rejtőzött.
– Kifizetem önnek… tulajdonképpen… kifizetem az ön lakását.
– Hagyja kérem, hagyja – mondta halkan a nő. – Ne beszéljünk
pénzről… Különben is nem sokba kerül a lakásom.
Várt.
– Itt van a házban… Egész csinos… Nem akar feljönni?
A nő lesütötte szemét, zavart volt, mintha egy komoly férfi
vallana neki szerelmet. És csodálkozott, hogy nem kaparta a nevetés
a torkát, hogy ünnepi áhitat dagasztja a szivét.
Különös és sötét tekintettel meredt Rondára s ezt mondta:
– Na, menjen előre. Vigyázzon, mert még meglátják a diákjai.
X.

Kieselsack benyitott a terembe, kék ujjait a szájához emelte s


halkan füttyentett egyet. Ertzum és Lohmann rögtön kijött.
– Siessetek – kiáltotta és hátrafelé táncolt, tüzesen gesztikulált
előttük a tornác végéig és a a lépcső felé tartott.
– Már ott tart?
– Mi az, hogy ott tart? – kérdezte Lohmann, pedig jól tudta, miről
van szó és a kiváncsiság pogányul furta az oldalát.
– Már fönn vannak – sugta Kieselsack, egészen ferdére vont
szájjal. Lehuzta cipőjét és felsurrant a sárgakorlátos kis falépcsőn,
amely erősen recsegett. Mindjárt lenn, az első kanyarodónál volt az
ajtó. Kieselsack jól ismerte. Kukucskált a kulcslyukon. Kisvártatva
intett, némán és szenvedélyesen, még mindig a kulcslyukra tapadva.
Lohmann a vállát vonta, a lépcső lábánál állott, Ertzum mellett,
aki szájtátva nézett fel.
– Na, hogy vagy? – kérdezte Lohmann megértően.
– Azt se tudom, hol a fejem – mondta Ertzum. – Meglátod, tréfa
az egész. Ez a Kieselsack csak ugrat.
– Persze – erősitette meg Lohmann résztvevően.
Kieselsack egyre szilajabbul integetett. Némán vigyorgott bele a
kulcslyukba.
– Pedig tudja a nő, – jegyezte meg Ertzum – hogy akkor egész
biztosan agyonütöm Rondát.
– Már megint?… Lehet, hogy épp ettől kapott gusztust
őnagysága.
Ertzum ezt nem értette. A szerelmet csak egy tehénpásztorlány
által ismerte, aki három évvel ezelőtt otthon a fübe csalta őt, mert
egy erős bérest letepert a földre… Most a vetélytársa egy görbevállu
nyavalyás; csak nem hiszi Róza, hogy Ertzum fél Rondától.
– Csak nem hiszi, hogy félek tőle?
– Hát nem félsz? – kérdezte Lohmann.
– Majd megmutatom neki.
És Ertzum felpattant, két ugrással lépett hat lépcsőt.
De Kieselsack, aki már elment a kulcslyuktól, mámorosan táncolt
a kanyarodónál. Aztán abbahagyta.
– Fiuk! – suttogta és szemei szikráztak sajtsárga arcában. Ertzum
tüzpiros volt és lihegett. A tekintetük tusakodott, viaskodtak. Ertzum
a szemével ezt mondta: ez nem lehet igaz. Kieselsack pedig vékony
gunnyal, kissé vacogva felelt… És Ertzum egyszerre épp ugy
elsápadt, mint a társa, magába rogyott, mintha gyomron rugták
volna és csupa tréfából felsóhajtott. Tántorogva jött le a hat lépcsőn.
Lohmann karba tett kézzel fogadta, száján ellenséges és kaján
mosoly játszott. Ertzum az utolsó lépcsőre zuhant, mint egy zsák és
tenyerébe vette a fejét. Hallgatott és tompán mondta:
– Megérted ezt, Lohmann? Hogy szerettem őt! Még mindig azt
hiszem, hogy az az undok Kieselsack áprilist járat velünk. De akkor
vége… Egy nő, akinek annyi lelke van.
– Amit most müvel őnagysága, ahhoz édeskevés köze van a
léleknek. Egyszerüen azt csinálja, amit minden nő.
Lohmann sötéten mosolygott.
Ez a szó Breetpoot Dórát a piszokba rántotta, lehuzta a másik nő
mellé. Breetpoot Dórát, a nők legkülönbjét. Pokoli örömben vájkált.
– Kieselsack már megint kukucskál.
Lohmann figyelmeztette barátját, aki fejét elforditotta, a
történtekre.
Kieselsack ugyancsak integetett már…
– Nahát ez a Ronda… Gyere, Ertzum, álljunk odébb innen.
Felemelte barátját a földről és a kapu felé vonszolta. Ott künn
Ertzum megkötötte magát és az istennek se mozdult; bambán és
erélyesen vetette meg a vállát csalódásainak tanyájánál.
Lohmann sokáig hiába beszélt a fülébe. Azzal fenyegetődzött,
hogy otthagyja és elmegy; ekkor jött Kieselsack.
– Na, micsoda unalmas fickók vagytok. Miért nem dugjátok be a
pofátokat. Ronda már visszament a terembe a babájával. Elmondtam
mindenkinek, hogy honnan jönnek és erre aztán megéljenezték őket.
Te, ilyet még nem ettem. Bent ülnek az öltözőben és édeskednek.
Halálra kacagtam magam! Gyerünk fel mind a hárman.
– Ne izélj – szólt Lohmann.
De Kieselsack nem tréfált:
– Csak nem féltek Rondától? – kérdezte lázongva. – Már ő is
benne van a pácban, mit tehet ellenünk? Most megtáncoltathatjuk.
– Engem nem izgat. Ronda nivótlan fráter.
Kieselsack rimánkodott:
– Ne féljetek. Anyámasszony katonái.
Ertzum hirtelenül elhatározta magát.
– Isten neki! Menjünk!
Szilaj kiváncsiság furta az oldalát. Farkasszemet akart nézni ezzel
a nővel, aki oly tündökletes magasságból hullott a mocsárba! Végig
akarta mérni őt és nyomorult elcsábitóját egy megsemmisitő
tekintettel, látni akarta, állják-e a tekintetét.
Lohmann kijelentette:
– Izléstelenek vagytok.
De ő is velük tartott.
Az öltözőben pohárcsengés fogadta őket. A vendéglős nyomban
két üveg pezsgőt nyitott. A Kiepert-házaspár sugárzó arccal
hajlongott Ronda és Róza fölött, akik az asztal mögött trónoltak,
egybeolvadva.
A három diák először megkerülte az asztalt.
Aztán megálltak Ronda és a hölgye előtt s jóestét kivántak nekik.
Csak Kieperték válaszoltak nekik, kezet ráztak velük. Erre Ertzum
egyedül, rekedt hangon köszönt. Róza csodálkozva nézett fel,
csicsergő és turbékoló hangocskáján elfogulatlanul mondta, hogy
nem is ismeri.
– Á, ti vagytok. Nézd csak, drágám, ők vannak itt. Üljetek le és
igyatok!
Ezzel elintézte őket és a tekintetével részvétlenül elbocsátotta
Ertzumot. A fiu szinte belereszketett.
Ronda kegyesen felemelte a kezét:
– Igen ám, ugy bizony, csak üljenek le és lippentsenek egy kicsit.
Ma az én vendégeim.
Lohmannra nézett, aki már leült és cigarettát sodort… Lohmann,
a hitvány fráter, kinek elegánciája megaláztatás volt a rosszul dotált
tekintélyre nézve; Lohmann, aki olyan szemtelen, hogy még csak
nem is csufnevén hivta őt; Lohmann, aki nem kis szürke magoló
fickó, de fesztelen modorával, a tanár haragját fitymáló
sajnálkozásával és humorával még a zsarnokban is kétkedett: – ez a
diák nemcsak »mással foglalkozott«, de most Rózával is akart
foglalkozni. Ezuttal azonban Ronda ércakaratán megtört az ereje.
Ronda megesküdött: nem ül többet az öltözőben. Sohase kapja meg
Rózát: nem is kapta meg. És nemcsak hogy Lohmann nem ült az
öltözőben, de ő ült ott, Ronda…
Ezzel mindenkit lepipált. Elbámult; és forró elégtételt érzett.
Nemcsak Lohmannt és két társát ütötte ki a nyeregből, nemcsak a
terem iskolakerülő diákjait előzte meg, de az egész város elől,
ötvenezer kaján diák elől hóditotta el Frölich Rózát és most ő az ur
az öltözőben!
A diákok ugy látták, hogy Ronda egészen megfiatalodott. Gallérja
a fülére csuszott, néhány gombja felpattant, haja felborzolódott,
kirugott a hámból s egy züllött és győzelmes, részeg hadvezér ült
előttük.
Róza felengedett, lanyhán-fáradt volt és gyermeki, amint az
asztalon hozzásimult. A külseje minden idegen férfit sértett, mert –
ugy tetszett – Ronda döntő diadalt aratott.
Mindhárman észrevették ezt; Kieselsack már rágcsálta a körmeit.
Kiepert, aki nem látott ily világosan, azzal intézte el az undorát, hogy
mindenkire ráköszöntött egy-egy poharat. A kövér nő folyton azon
örült, hogy Róza ennyire megváltozott és hogy a társaság békésen
árult egy gyékényen.
– Nézze, tanár ur, hogy örülnek a diákjai. Már igazán szeretik
magát.
– Igazán bizony – mondta Ronda. – Mert van bennük érzék a
szép és nemes iránt.
És kajánul nevetett.
– Kieselsack, ön is itt van? Csodálkozom, hogy gondosan őrködő
nagyanyja ide engedte… Ennek a diáknak ugyanis van egy
nagyanyja, aki őt néha istenigazában elpáholja – mondta Rózának,
azzal a látható céllal, hogy Kieselsack férfiui méltóságán csorbát
üssön.
Kieselsack azonban nagyon jól tudta, hogy nem a férfiui
méltósága miatt tette le egykor a kisasszonynál az érettségit.
Feszengett a helyén, kornyikált és az orra hegyére bandzsitott:
– A nagyanyám csak akkor szokott megverni, hogyha nem
találom a füzetemet. Biztosan itt a dutyiban vesztettem el, az asztal
alatt.
És nyomban az asztal alá bujt, megragadta a müvésznő lábát és
mig Kieperték orditoztak, alulról sugta oda neki, hogy mit kiván.
Másképpen elárulja Rondának.
– Takonypóc – mondta a nő és félretolta a lábával.
Aztán Ronda a másik diákhoz szólt:
– És ön, Ertzum… lássuk csak. Az arckifejezésével azt árulja el,
hogy a felfogása itt is olyan gyönge, mint az iskolában. Nem ön az, –
jól jegyezzük meg! – aki fejébe vette, hogy Frölich Róza
szinmüvésznő őnagyságát megkéreti?… Bamba hallgatása már
felelet. Róza őnagysága azonban megtanitotta, meddig mehet egy
diák. Nekem már nincs semmi mondanivalóm. Álljon fel…
Ertzum engedelmesen felállt. Mert Róza nevetett; és nevetése
elrabolta forradalmi kedvét s az öntudata utolsó maradékát is;
megbénult.
– Nos, mutassa meg, maga haszontalan, hanyag fráter, hogy
nemcsak itt, a Kék Angyalban tud fickándozni, de az iskola
kötelmeinek is megfelel s a »kivülrőli«-t is megtanulja. Mondja fel a
holnapra feladott templomi éneket.
Ertzum tágra meredt szemmel nézett körül a szobában. Homloka
verejtékezett. Rabnak érezte magát megint, fejét lehunyta és fujta a
verset:
Hálát rebegünk tenéked,
Jóltevő, nagy Istenünk,
Mindenütt a bölcseséged,
Jóságod ragyog nekünk.

Itt Róza rikácsolni kezdett. Kiepertné is kedélyesen kotkodácsolt.


Róza azonban csak azért rikácsolt, hogy Ertzumot sértse; és
halkabban rikácsolt, Ronda iránt való kiméletből, akinek a karját
nyomogatta, hizelegni akart neki, meg akarta jutalmazni azért, hogy
ezt a tenyeres-talpas vörös embert lebirta s most ügyetlenül és
alázatosan fujta a bárgyu rimeket.
Ertzum folytatta:

Mindenütt szerelmed árad,


Tiszta, végtelen kegyed…

Erre azonban megsokalta már az artista illetlen viselkedését.


Kiepert most kezdte élvezni a helyzetet. Ertzum arcába bömbölt és
csapkodta a saját térdét:
– Megbolondult az ur? Mit beszél itt összevissza? Talán beteg?
Az artista Rondára kacsintott, értésére adta, hogy pokolian mulat
azon, hogy Ertzum gróf a »Kék Angyal« hátsó szobájában templomi
verseket recitál s hogy a nemesség és a vallás ellen irányuló tréfát
teljes szivéből helyesli. Kinyitotta az ajtót és ugy tett, mintha egy
templomi éneket rendelt volna a zongorásnál. Aztán maga is
rázenditett… Ertzum azonban erre abbahagyta.
Talán nem is tudta tovább. Ettől eltekintve azonban, mérhetetlen
gyülölet ragadta torkon, utálta a kövér, nevető és gajdoló férfit. Köd
lepte be a szemét. Érezte, az egész életének csak az lenne az
értelme, hogy rávesse magát erre az emberre, két öklével
dögönyözze s rátérdeljen a mellére. Megvonaglott néhányszor a
székén; a válláig emelte ökölbe szoritott kezét és… ráütött.
Az atléta pihegett a nevetéstől, semmire se volt elkészülve s ez
volt a hátránya a halálosan komoly Ertzummal szemben, aki pezsgő
és viszkető izmait vidáman tornásztatta. Egyik sarokból a másikba
gurultak. Ertzum a birkózás dübörgése közben hallotta, amint Róza
halkan felsikoltott. Tudta, hogy nézi őt; és annál hevesebben fujt;
keményen préselte össze az ellenfele tagjait; boldog és megváltó
örömet érzett, elemében volt, minthogy nézte a nő, mint akkor,
mikor a béressel viaskodott a tehénpásztorlányért.
Ronda, aki csak felületesen érdeklődött a birkózás iránt,
Lohmannhoz fordult:
– De mi van önnel, Lohmann? Itt ül és cigarettázik, –
tulajdonképpen – cigarettázik: és nem is volt iskolában.
– Rosszul éreztem magam, tanár ur.
– De amikor a »Kék Angyal«-ba kell jönnie, akkor – nemde,
ugyebár? – sohase érzi magát rosszul.
– Ez más, tanár ur. Ma reggel migrénem volt. Az orvos minden
szellemi munkát megtiltott nekem és szórakozást ajánlott.
– Igen. De akármit ajánlott…
Ronda hápogott. Végre szóhoz jutott.
– Itt ül és cigarettázik – ismételte. – Illik ez egy diákhoz, a
tanárja jelenlétében?
Lohmann félig leeresztett szemhéjai mögül fáradt kiváncsisággal
nézte, mire Ronda felfortyant.
– Dobja el a cigarettát! – kiáltotta tompán.
Lohmann egy darabig várt. Közben Kiepert és Ertzum az asztal
felé támolygott; Ronda biztonságba helyezte magát, Rózát, a nehány
poharat és üveget. Aztán igy szólt:
– Dobja el. Egy-kettő!
– A cigaretta – felelte Lohmann – pompásan illik a helyzethez. A
helyzet szokatlan, mind a kettőnknek szokatlan, tanár ur.
– Azt mondtam, hogy dobja el a cigarettát.
– Sajnálom – felelte Lohmann.
– Még szemtelenkedik!… Tacskó!…
Lohmann előkelően legyintett hosszu, arisztokratikus ujjaival.
Erre Ronda a szorongatott zsarnok szédületével felpattant a
székről:
– Dobja el a cigarettát, különben vége! Összetiprom! Egy-kettő!…
Lohmann vállat vont.
– Roppant sajnálom, tanár ur, de ehhez már későn kelt. Maga
már senki és semmi.
Ronda vért lihegett. A szeme olyan volt, mint a dühös kanduré.
Nyakát sziszegő vággyal nyujtotta előre; fogai közül tajték fröccsent;
a sarokból felemelkedett a karja, a karja végén kinyult a sárga-
körmü mutatóujja és az ellenség felé böködött.
Róza beléje csimpaszkodott, az édes kéjeket még emésztette,
felriadt, nem értette meg a valóságot s vakon ripakodott rá
Lohmannra.
– Mit akar tőlem? Inkább őt csititsa – szólt Lohmann.
Ekkor Ertzum és Kieselsack két recsegő székre zuhant, az
ölelkező pár hátára és erre Rondáék orra az asztalra koppant. A
csöndes sarokban, Róza toalettasztala mögül, felharsant Kieselsack
kacagása. Kieselsack a kövér nővel delektálta magát.
Mikor Ronda és Róza feltápászkodtak, ujra szapulni kezdték
Lohmannt.
– Utoljára jött ide – kiabált rá a nő.
– Ezt már többször hallottam s biztositom, kedves nagysád, hogy
örülök neki.
És Lohmannak hirtelenül kedve támadt erre a nőre, aki
lomposan, kigombolt ruhában, maszatos és festékes arccal, kopáron
és rekedten ágált előtte; kedve támadt, hogy kegyetlen szerelmét
mocsaras csókjaival megalázza!
A kedve azonban nyomban leapadt. Ronda görcsös félelmében
fenyegetni kezdte:
– Ha a cigarettát rögtön el nem dobja, ebben a pillanatban
hazaviszem az apjának.
Lohmannéknál ezen az estén vendégek voltak, köztük Breetpoot
konzul és a felesége is. Lohmann elképzelte, hogy Ronda betör a
szalónba… Breetpoot Dórát annál kevésbé teheti ki ennek a
jelenetnek, mert tegnap óta tudja, hogy várandós… Az anyja
kottyantotta ki… Lohmann ezért nem ment ma iskolába. Fejét ökleire
engedte, költőien, versekbe való kinokkal gondolt erre a gyermekre,
aki talán Kunst ügyészé, talán Gierschke hadnagyé, lehet azonban az
is, hogy Breetpoot konzulé s ült-ült, napokig ült bezárt szobájában…
– Jöjjön – kiáltotta Ronda. – Parancsolom önnek, Lohmann, hogy
mint a hetedik osztály növendéke, rögtön kövessen.
Lohmann kelletlenül ledobta a cigarettát. Ronda erre elégedetten
leült a helyére.
– Látja. Igen ám bizony. Ez illik egy diákhoz, aki tanárja
jóindulatát s elnézését meg akarja szerezni… Önnek azonban
megbocsát a tanárja, mert ön – igen ám bizony – terhelt, beteg,
mente captus. Ön reménytelenül szerelmes.
Lohmann lógatta a karját.
Fehér volt, mint a kisértet, szeme oly feketén parázslott, hogy
Róza csodálkozva meredt rá.
– Vagy nem? – kérdezte Ronda mérgesen, kárörvendve. –
Verseket ir – de azért…
– De azért még se tesz eleget iskolai kötelmeinek – egészitette ki
félénken Róza, aki már Kieselsacktól hallotta Rondának ezt a
szavajárását.
Lohmann ezt mondta magában:
– Tudja a nyomorult. Most sarkon fordulok, hazamegyek,
felmászom a pajta tetejére és sziven lövöm magam. És lenn
zongorázik Dóra. Az a dalocska, amit énekel, felrebben hozzám, a
szárnyacskája aranyos port ver fel és ragyog-ragyog, még a
halálomban is…
Róza megszólalt:
– Emlékszik még arra a versre, amit hozzám irt?
Nagyon lágyan, sóhajtva kérdezte. Többet várt tőle. Általában
mindig többet várt tőle, most az eszébe villant; és kegyetlennek
találta Lohmannt; és egy kissé butának is.
– »Ha majd a gyermekágyba fekszel.« No, ki fekszik most
gyermekágyba?
Még ezt is. Ezt is tudták. Lohmann elfordult, az ajtó felé ment,
megsemmisülten. Mikor a kilincset megmarkolta, Ronda ezt mondta:
– Igen ám, ugy bizony. Reménytelenül szerelmes Róza
kisasszonyba, de Róza rá se hederit, és igy sohase teljesedik be
szemérmetlen költeményében kifejezett vágya. Nem ülhet többé az
öltözőben Lohmann. Nem kapta meg Frölich Róza kisasszony
őnagyságát, Lohmann. Menjen vissza, haza, a házi isteneihez.
Lohmann hirtelenül sarkon fordult. Csak ennyi az egész?
– Igen, – mondta Róza – szóról-szóra igaz.
A vén szamár tulcsordult az öreges hiuságtól. Lohmann Rózát
egyszerüen unalmas nőnek tartotta. Ő és a szeretője egyszerüen
naiv és buta emberek. Az előző percek tragikumát tehát tévedésből,
jogtalanul élte át. Már nem gondolt többé öngyilkosságra.
Csalódottnak érezte magát, majdnem bárgyunak, a dolgok
komédiája folytán még egyszer megaláztatott, de még életben volt
és még mindig az öltözőben volt.
– Ertzum, – folytatta Ronda, egy-kettő – igen ám, ugy bizony –
szedje a sátorfáját. És mert a tanárja jelenlétében verekedni
merészkedett, hatszor le fogja irni a templomi énekeket, amelyeket
még mindig nem tud tisztességesen.
Ertzum ámult-bámult, kijózanodott és látta, hogy az előbbi torna
csak öncsalás volt, hogy hiába győzte le az atlétát, ez semmit se
használt neki, hogy itt csak egy győző van: Ronda; és rémülten
nézett Róza fás arcába.
– Takarodjék – kiáltott Ronda.
Kieselsack kereket akart oldani.
– Hová megy? Előbb kérjen engedélyt. Negyven sort tanul meg
kivülről Vergiliusból.
– Miért? – kérdezte Kieselsack lázadozva.
– Mert ugy akarom.
Kieselsack végignézte Rondát; és semmi kedve se volt, hogy
kikezdjen vele. Csöndesen távozott. Két társa már távolabb volt.
Ertzum szükségét érezte, hogy Rózát és lovagját ócsárolja és
megvesse:
– A lány a fertőbe került. Már hozzászoktam a gondolathoz. Ne
félj, Lohmann, nem halunk bele… De mit szólsz ehhez a Rondához?
Láttál már ilyen elvetemült pimaszt?
Lohmann kesernyésen mosolygott. Értette: Ertzum vereséget
szenvedett és panaszosan a régi erkölcshöz futott: a vert emberek
örök menedékéhez. Lohmann szivéből utálta a morált, bár ma ő is
kudarcot szenvedett.
Igy szólt:
– Rosszul tettük, hogy bementünk s zazarba akartuk hozni.
Hiszen tudtuk, hogy ez lehetetlen. Régóta tudunk minden lépéséről.
Gyakran találkoztunk vele ezen a helyen. Már haza is vitt bennünket,
hogy ne legyünk az utjában. Talán azt is tudta, hogy közülünk még
valaki más is dézsmálgatja a mézet.
Ertzum sebzetten szisszent fel.
– Ne áltasd magad, Ertzum, embereld meg magad. Légy férfi.
Ertzum fátyolos hangon mondta, hogy Róza közönyös neki, nem
is firtatja, tiszta volt-e vagy sem. Csak Ronda lázitja fel erkölcsi
érzékét.
– Engem nem bánt – felelt Lohmann. – Ez a Ronda már érdekelni
kezd: érdekes egyéniség. Gondold meg, mily körülmények közt
cselekszik, micsoda tojástáncot jár. Ehhez öntudat kell, legalább azt
hiszem, én nem tudnám ezt utána csinálni. Van benne valami az
anarchistából…
Ertzum ezt már nem értette. Valamit dörmögött.
– Mit? – szólt Lohmann. – Igen. Ami az öltözőben történt, az
fonák volt. De fonákul nagyszerü. Vagy nagyszerüen fonák. De
mégis nagyszerü volt.
Ertzum kifakadt:
– Mondd, Lohmann, igazán nem volt érintetlen?
– Most már biztosan – be van ronditva. A multjáról pedig jobb
lesz hallgatnunk.
– Olyan tisztának tartottam. Most is, mint hogyha álmodnék.
Nevess, Lohmann, de ugy szeretném, ugy szeretném főbe lőni
magam.
– Ha akarod, nevetek.
– Mit tegyek? Történt már ilyesmi valakivel? Olyan magasan állt
fölöttem, sohase reméltem, hogy valaha elérhetem. Emlékszel,
multkor is mennyire felizgattam magam, mikor Hühnengrabban azt a
ricsajt csaptam. Nem féktelenségből, hanem őszinteségből. Féltem
az elhatározástól. Becsületemre, csodálkoztam volna, hogyha velem
jön. Hogy is hihettem volna: hiszen annyi lelke volt… És mikor a
kocka el volt vetve…
Lohmann oldalról nézte a barátját. Ertzum rendkivüli állapotban
lehetett, hogy a kocka elvetéséről beszélt.
– Akkor egyszerre reménytelen, kétségbeesett emberroncs vált
belőlem. Ez azonban jótétemény volt a maihoz képest. Érted-e,
Lohmann, milyen mélyre sülyedt?
– Egészen Rondáig…
– De nem. Mégse az övé. Tiszta, szeplőtlen és szüzi. Másképpen
ő a leghitványabb nő.
Lohmann nem tiltakozott. Ertzumnak fontos az, hogy Róza
megközelithetetlenül egy felhőtrónuson üljön. Biztosan szüksége volt
erre. A butábbik énjével elhitette, hogy sohase reménykedett,
sohase hitte komolyan azt, hogy Rózát valaha is megkapja. Ez az
öncsalás annak az elhitetésére szolgált, hogy akkor Ronda mocskos
szerelme még kevésbé áhitozhatott a beteljesülésre. Az
élettapasztalat, amely egy tehénpásztorlány arcát viselte, nem
mutatkozott; de egy fellengző álmodó bujt ki a vörös vidéki
kamaszból: mert ez legalább legyezgette Ertzum önszeretetét…
Ez ő – gondolta Lohmann.
– Hiába kérdem, miért, – fanyalgott Ertzum – nincs rá
magyarázat. Mindent adtam neki, amit egy ember adhat… Hogy
valaha szeretni fog, abban, becsületemre, sohase reménykedtem.
Hiszen sokkal jobban bánt velem, mint veled!… Mért éppen velem
bánt jobban?… És Rondával megcsalna? Elhiszed ezt? Rondával?
– A nők kiszámithatatlanok – szólt Lohmann és gondolatokba
merült.
– Nem hiszem. Biztosan csak megbüvölte, boszorkányságot
müvelt vele; még szerencsétlenné teszi szegényt.
Ertzum tovább füzte gondolatait:
– Talán… majd akkor…
Kieselsack utolérte őket. Egy darab óta már a hátuk mögött
kullogott. Csengő kacajjal mondta:
– Milyen pali. Ronda tiz márkát szurt le, láttam a kulcslyukon
keresztül.
– Hazudsz, disznó! – rivalt rá Ertzum és feléje sujtott.
De a kis Kieselsack várta ezt és jóelőre elinalt.
Kieselsack hazudott. Ronda távol állott attól, hogy Frölich
kisasszonynak pénzt ajánljon fel, nem lelki finomságból; nem is
fösvénységből; hanem – és a lány tudta ezt – mert nem jött rá erre
a gondolatra. Rózácska eleget célozgatott, mig Rondának végre ujra
eszébe jutott a lakás, amit bérelni akart. Mikor azután Ronda azt
mondta, hogy butorozott szobát vesz ki neki, őnagysága elvesztette
a türelmét és határozottan megmondta, hogy neki berendezett, éves
lakás kell. Ronda ezen roppantul meglepődött.
– Azt gondoltam, hogy mivel te eddig mindig Kiepertékkel laktál…
Ronda agyrendszere hozzászokott a régihez; ilyesféle
megdöbbentő változásokba előbb bele kellett hogy élje magát.
Iszonyuan erőlködött.
– Ha azonban Kieperték – jól jegyezzük meg – elutaznak?
– És ha én nem akarok velük menni, – egészitette ki Róza – mit
csinálok akkor?
Ronda erre nem tudott mit felelni.
– Na, Rondácska? Na?
A lábai előtt ugra-bugrált és győzedelmesen jelentette ki:
– Akkor itt maradok.
Ragyogó öröm villant át Ronda arcán. Ilyen ujdonság neki soha
eszébe nem jutott volna.
– Akkor… itt maradsz – ismételgette ő is többször egymásután,
hogy megszokja a gondolatot.
– Ez nagyszerü – tette még hozzá elismeréssel. Táncolt a
boldogságtól és mégis néhány nap mulva Rózácskának minden
müvészetét föl kellett használnia, amig rá birta vezetni, hogy ne a
»Kék Angyal«-ban, de előkelőbb hotelben fizessen elő kosztra.
Ezek után Ronda együtt akart vele étkezni. Rózácska azonban
ebbe nem egyezett bele. Ronda ezen nagyon elkeseredett. Ellenben
megengedtetett neki, hogy az előkelő hotelben necsak kosztot
fizessen, hanem szobát is béreljen, amig őnagysága lakása el nem
készül.
Diákos buzgalommal ragadott meg Ronda minden alkalmat, hogy
a müvésznőt erkölcstelen környezetéből mindjobban kiragadja és
mind erősebben füzze magához. Csak az alkalmakat kellett
felismernie. A kárpitost azzal nógatta sietésre, hogy Frölich
kisasszony számára készül a rendelés. A butorkereskedőt azzal
fenyegette, hogy Frölich kisasszony elégedetlenkedni fog, a
porcellán- és fehérnemü-üzletben Frölich kisasszony kényes izlésére
hivatkozott. Az egész város Frölich kisasszonyért volt; mindent, amit
csak kivánt a szeme-szája, megvett neki; mindenhol kimondta a
nevét és nem törődött a rosszaló tekintetekkel. Mindig meg volt
rakva csomagokkal, akár hozzá ment, akár tőle jött. Mindig főtt a
feje sürgős és fontos ügyekben, amik a müvésznőnek épp oly
sürgősek és fontosak, együtt meggondolandók és megbeszélendők
voltak. Ronda szürke arca a boldogitó tevékenységtől most többnyire
kipirosodott. Éjszakánként jól aludt és gazdag napokat élt át.
Egyetlen bánata az volt csupán, hogy Rózácska sohasem ment
vele sehova. Ronda szerette volna a városon végig vezetni,
birodalmával megismertetni, alantasait elébe járultatni, a lázadók
ellen megvédeni: mert Ronda mostanában nem félt a támadásoktól,
sőt harcot provokált. A müvésznő azonban vagy próbált éppen, vagy
nagyon el volt fáradva, vagy rosszul volt, vagy a kövér asszonyság
bosszantotta fel. Erre egyszer Ronda jelenetet csapott Kiepertnének;
de kiderült, hogy Kiepertné nem is látta még aznap Rózát. Ronda
nem értette a dolgot. Gusztl jelentősen mosolygott. Ronda
tanácstalanul ment vissza Róza kisasszonyhoz, akinek megint dolgot
adott a kiengesztelés.
Róza tettének igazi oka egyszerüen az volt, hogy még korainak
tartotta vele az utcán mutatkozni. Ha együtt látnák őket, – előre
tudta – intrikálnának ellene. Még nem érezte magát elég erősnek
arra, hogy elnémitsa azokat a pletykákat, amelyek róla keringenek.
Ő ugyan nem tartotta erkölcstelen személynek saját magát; de hát
mégis a multja nem éppen a legtisztább, – igaz hogy ez szóra se
érdemes – de hát komoly szándéku férfiaknak végre is nem kell
mindent tudniok. Ha a férfiak okosabbak lennének, mennyivel
könnyebb volna. Egyszerüen megcirógatná az ő kis Rondácskájának
az állát és egyszerüen elmondaná neki: igy meg igy áll a dolog. Hja,
de csalni muszáj.
És a legrosszabb a dologban, hogy még amellett Rondácska azt a
butaságot is hihetné, hogy ő csak kifogásokat keres, hogy magára
maradhasson és egyedül murizhasson. Pedig ez biz Isten nem igy
van. Azzal az élettel már torkig volt és örült, ha kipihenhette magát
az ő humoros öreg Rondájával, aki annyit foglalkozott vele, mint
még soha senki ebben az életben és aki – olykor hosszasan és
elmélyedve nézegette – igazán jóravaló fickó.
A gyanuperrel, amitől Róza félt, Ronda sohase élt; nem jött rá.
Pedig Ronda oldalán Róza nyugodtan fittyet hányhatott volna
mindenféle szóbeszédnek. Ronda erősebb volt, mint a lány gondolta.
Kerülgették ugyan néha kisértések, de egyszerüen elkergette
magától, anélkül, hogy a lánynak csak emlitést is tett volna róluk.
Legveszedelmesebb hely az iskola volt.
Itt, Kieselsack révén, mindenki pontosan ismerte Ronda
magánéletét. Néhány fiatalabb tanár, akik még nem tudták, hogy
melyik ut vevezet legbiztosabban a karriérhez, kikerülték, hogy ne
kellessen köszönteni.
Egyik közülük, Richter, aki azt a gazdag és előkelő familiából való
lányt szerette volna feleségül venni, állandóan csufolkodó mosollyal
üdvözölte. Mások azonban nyiltan megtagadtak vele minden
közösséget. Az egyik tanár, Hübenett, ugyanaz, aki annak idején
Ronda fiáról és annak erkölcsi züllöttségéről az osztály előtt
becsmérlőleg nyilatkozott, »lelki rondaságról«, jobban mondva
»posványról« beszélt a fiuknak.
Mostanában, alig lépett Ronda az iskolába, az egész diákság
orditani kezdett, de már az ügyeletes tanár se bánta és undorodva
nézett félre:
– Hü, micsoda lelki rondaság büzlik itten!
Az öreg professzor közeledett, a lárma lassacskán – Ronda dühös
pillantásai alatt – elült; utána Kieselsack állotta utját, végigmérte és
lassan, nyomatékosan vetette oda:
– Jobban mondva, posvány!
Ronda megborzongott és tovább suhant; Kieselsackot nem tudta
megcsipni.
Nem tudta többé megcsipni, érezte, sohase tudja.
Ertzumot és Lohmannt nemkülönben. Ő és három diákja
kölcsönösen szemet hunytak. Rondának azt is türnie kellett, hogy
Lohmann egyáltalán nem vett részt a munkában és ha felszólitotta,
szinészi hangon azt válaszolta, hogy »dolgozik«. Ronda Ertzummal
szemben is védtelen volt, aki egy darabig keservesen piszmogott,
aztán a szomszédja kezéből egyszerüen kitépte a dolgozatot s leirta.
Azt is némán kellett néznie, hogy Kieselsack a diákok feleletébe
mindenféle butaságot gagyogott bele; hangosan beszélt, minden ok
nélkül járkált az osztályban s óra közben sokszor verekedett.
Ha Ronda néhanapján elragadtatta magát a megszoritott zsarnok
pánikjától s a lázadókat a dutyiba zárta, még cifrább dolgok
történtek. Az osztály durrogott és puffogott, mint mikor az üvegből
egy dugót huznak ki, éljenzett, kuncogott és cuppantott. Erre Ronda
lóhalálában az ajtóhoz sietett és megint beengedte Kieselsackot. A
másik kettő kéretlenül is besompolygott, fenyegető és fitymáló
arccal.
Pár pillanatig Ronda kétségtelenül sokat boszankodott. De mit
használt ez nekik? Végül mégis csak ők voltak a legyőzöttek, akik
nem kapták meg Rózát. Nem Lohmann ült a müvésznő öltözőjében…
Ronda, mihelyt az iskola kapujába ért, lerázta magáról a rossz
kedvét és gondolatait Róza szürke kabátkájára irányitotta, melyet el
kellett hoznia a tisztitóból, vagy a bonbonokra, melyekkel meg akarta
lepni őnagyságát.
A gimnázium igazgatója ellenben nem hunyhatott szemet a
hetedik osztály botrányos viselkedése előtt. Rondát lehivatta az
igazgatói irodába és feltárta neki azt az erkölcsi züllést, melybe a
hetedik osztály hanyatthomlok belérohan. Azt mondta, nem is akarja
firtatni, honnan származik ez a fertőző anyag. Ha fiatalabb tanárról
lenne szó, okvetlenül meginditaná a vizsgálatot. Minthogy azonban a
kedves kolléga becsületben őszült meg, egyrészt maga is tudhatja,
mi okozza ezeket az állapotokat, másrészt pedig nem szabad
megfeledkeznie, hogy az intézet kebelében magának kell jópéldával
előljárni, hogy a tanulók általa jobbak és nemesebbek legyenek.
Ronda felelt:
– Igazgató ur! Az atheni Perikles – igen ám, ugy bizony – egykor
Aspasiát szerette.
Az igazgató ugy látta, hogy ez nem tartozik ide. Ronda pedig
folytatta:
– Én az egész életemet – jól jegyezzük meg – hiábavalónak
tartanám, hogyha a klasszikus ideálokról csak ugy beszélnék, mint
holmi dajkamesékről. A humanista tudósnak meg kell vetnie a
csőcselék erkölcsi előitéleteit.
Az igazgató ámult-bámult, elbocsátotta Rondát, de a dolog szeget
ütött a fejébe. Végül elhatározta, hogy senkinek se szól róla, nehogy
a botrány az iskola falai közül kiszivárogjon s az intézeten és a tanári
kar becsületén foltot ejtsen.
Ronda a gazdasszonyát – aki megütközött azon, hogy a szinésznő
odajár – diadalmas nyugalommal kényszeritette a ház elhagyására,
szegény nő hiába berzenkedett. Uj gazdasszonyul a »Kék Angyal«
egy facér cselédjét fogadta fel. Olyan szutykos volt, mint egy
mosogatórongy és egymás után fogadta a szobájába a
mészároslegényt, a kéményseprőt, a gázost és az egész utcát.
Egy sárgaarcu szabónő, aki Róza őnagyságának dolgozott, mindig
hidegen és foghegyről beszélt Rondával. Egy napon, mikor nagyobb
összegről nyujtott át számlát Rondának, végre föltátotta a száját.
Hallgassa csak meg a tanár ur, mit mondanak az emberek. Nem
röstelli? Ilyen korban – és egyáltalában. Ronda az aprópénzt szó
nélkül a bugyellárisába dugta és cihelődött. A félig nyitott ajtón
benevetett és kiméletesen mondta:
– Látom, jó asszony, hogy a szavait, valamint azt a pillanatot,
mikor szavait kiejtette, megbánta s attól fél, hogy ez a tulontul nyilt
fellépés, anyagi hátrányokat von maga után. Ezzel szemben
kijelenthetem, hogy önnek semmi oka a félelemre. A jövőben sem
pártolunk el öntől.
És elment.
Végül egy reggelen, midőn Ronda »Homeros igekötőiről« szóló
munkájának egyik hátulsó lapjára levelet irt Róza kisasszonynak,
kopogtak; fekete, ráncos ferencjózsefben és cilinderben belépett
Rindfleisch, a varga. Csakugy benézett ide s kezét a pocakjára téve,
elfogódottan mondta:
– Jó reggelt, tanár ur, csak arra szeretném kérni a tekintetes
tanár urat, engedje meg, hogy néhány kérdéssel fordulhassak
önhöz.
– Csak bátran! – mondta Ronda.
– Sokáig gondolkodtam rajta és most mégse megy könnyen. De
hát Isten nevében.
– Csak bátran, kezdje.
– Mert hát hogy ilyen csufságot hallok a tanár urról. Kigyót-békát
kiált az egész város a tekintetes tanár urra, ezt biztosan tetszik már
tudni. De az igazi keresztény ember nem hiszi el. Nem. De nem ám.
– Egyik fülemen be – mondta Ronda, hogy véget vessen a
vitának – és a másikon ki.
A varga zavartan forgatta a cilinderét és a földre nézett.
– Ugy a. Csakhogy az volt a rendölés, hogy én gyüjjek ide
figyelmeztetni a tekintetes tanár urat, hogy az Isten nem akarja.
– Mit nem akar? – kérdezte Ronda és lenézően mosolygott. –
Talán Frölich szinmüvésznő őnagyságát?
A varga a küldetése sulya alatt lihegett. Hosszu lötyögő arcai
mozogtak hegyes szakálla keretében.
– Már mondtam egyszer magának; tanár ur, – és itt a hangja
elsötétedett a titokzatosságtól – az Isten csak azért engedi azt…
– Hogy több angyala legyen a mennyországban. Jó, jó. Majd
meglátjuk, mit tehetünk.
Még mindig somolygott és az istenes vargát egyszerüen
kituszkolta az ajtón.
Ilyen biztosan és nagystilüen élt Ronda egy darabig, – egyszer
azonban szörnyü események történtek.
Egy mezei csősz följelentést tett, hogy Hühnengrabban az
ültetvényeket gonosz tettesek letiporták. Azon a vasárnapon, amikor
ez a gaztett történt, a csősz egy csomó fiatalemberrel találkozott az
országuton. Miután az állami ügyészség ebben az ügyben hosszabb
ideig hiába nyomozott, egy reggel megjelent maga a csősz az
igazgató oldalán a gimnázium előcsarnokában. A fiuk éppen
imádkoztak a diszteremben, az igazgató egy fejezetet olvasott fel a
bibliából, azután zsoltárt énekeltek és ezalatt a paraszt csősz az
igazgatói pódiumról mustrálta a gyülekezetet. Izgett-mozgott és a
kezefejével zavartan törülgette a homlokát. Végül lejött a pódiumról
és az igazgató vezetése mellett végigment a tanulók sorfalai között.
A csősz ugy viselkedett, mint az az ember, aki nagyon finom
társaságba kerül, senkit se látott és meghajolt Ertzum előtt, aki a
lábára lépett.
Mikor már minden remény meghiusult, hogy a gonosztevőt az
intézet kebelében megtalálják, az igazgató még egy utolsó kisérletet
tett. Még egy fejezetet olvasott fel a bibliából, azután annak a
meggyőződésének adott kifejezést, hogy ez legalább egy tanulónak
a lelkéhez szólt és bünbánatra lágyitotta, felébresztette a
lelkiismeretét és reméli, hogy az a tanuló lejön az igazgatói irodába,
hogy a büntársát feljelentse és az igazságszolgáltatásnak átadja. Ez
a tanuló, töredelmes vallomása jutalmaképpen, nemcsak hogy
büntetésben nem fog részesülni, hanem még pénzjutalmat is kap…
Ezzel vége volt az eljárásnak.
Három nappal később Ronda Titus-Livius-órát tartott a
hetedikben, de ez az elvetemült osztály lármázott és mással
foglalkozott s erre Ronda felpattant a dobogóról és orditani kezdett:
– Lohmann, ne olvasson a pad alatt, különben is majd
gondoskodom arról, hogy hamarosan kiszabaduljon az iskola
kötelékéből. Maga pedig, Kieselsack, folyton fütyürész itten. És
maga, Ertzum is – igen ám, ugy bizony – hovatovább majd otthon
komiszkodhatik. Ezt a három elvetemült fickót még azzal sem
akarom megtisztelni, hogy a dutyiba zárjam, mert még erre se
méltók, de igenis, mindent el fogok követni, hogy kitegyem innen a
szürüket s a maguk helyére kerüljenek, a közönséges tolvajok és
betörők közé. A tisztességes emberek társadalma kilöki önöket
magából, már nem sokáig rontják itt a levegőt.
Lohmann fölkelt és a homlokát ráncolva magyarázatot kért; de
Ronda siri hangja annyira telitve volt az önmagát emésztő
gyülölettel, az arca oly szörnyü fényben ragyogott a diadaltól, hogy
mindnyájan ugy érezték, vereséget szenvedtek. Lohmann sajnálkozó
vállvonással leült.
A következő tiz percben Lohmannt Kieselsackkal és Ertzummal
együtt az igazgató lehivatta magához. Mikor visszajöttek, tetetett
fitymálással jelentették ki, hogy a hühnengrabi esetről vallatták őket.
De a fiuk elhuzódtak tőlük. Kieselsack sugdolózott:
– Ki adhatott fel bennünket?
A másik kettő boszusan nézett a szemébe és hátat forditott neki.
Egy délelőtt, amikor is mind a hárman szabadságot kaptak,
rendőri bizottság kiséretében Hühnengrabba mentek és ott a tett
szinhelyére vezették őket. Itt aztán felismerte őket a csősz. A
nyomozás miatt több napig fel voltak mentve az előadások
látogatásától. Végül a járásbiróság tárgyalótermébe kerültek mint
vádlottak. A tanuk padján Ronda kuporgott epés, vitriolos mosollyal.
A teremben ott ült Breetpoot konzul és Lohmann konzul is és az
állami ügyész kénytelen volt meghajlással üdvözölni ezt a két
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebooknice.com

You might also like