Let's talk about testing.
- Simple recursive-descent parser
- Abstract Syntax Tree (AST) with three node types (Binary, Unary, Atom)
- #evaluate is the only public API on Calc
- parses the input
- evaluates the AST
| #include <stdio.h> /* file */ | |
| #include <stdlib.h> /* free */ | |
| #include <math.h> /* M_PI, cos, sin */ | |
| #include <limits.h> /* INT_MAX */ | |
| #include "rtc/camera.h" | |
| #include "rtc/shapes/shape.h" | |
| #include "rtc/shapes/sphere.h" | |
| #include "rtc/shapes/group.h" | |
| #include "rtc/shapes/plane.h" |
| Rotkohl is a traditional German dish made primarily of red cabbage. | |
| My father developed a taste for it in the 1970's, when he lived in Germany | |
| for two years, and I've been trying to find a good recipe for it for | |
| a couple years now. Simultaneously, my dad's diet has become quite | |
| restrictive: no oils, no sugar, etc, and all of the rotkohl recipes I've | |
| found online include both. | |
| The following recipe is one that I've adapted from several sources, and | |
| it is made entirely without sugar or oil (or any of the other bells and | |
| whistles that you'll find in other recipes). The most amazing part is that |
| # rubocop:disable Style/SingleLineMethods | |
| require 'nokogiri' | |
| class Object; alias try send; end | |
| class NilClass; def try(*); nil; end; end |
| # Inspired by a church billboard that read: | |
| # "When I becomes we, illness becomes welness" | |
| # | |
| # usage: | |
| # > ruby change-x-for-y.rb i we | |
| # illness wellness | |
| # inch wench | |
| # it wet | |
| # ... |
| Jamis' Whole Wheat Bread | |
| Ingredients | |
| (Pardon the mixed metric/imperial units. I'm a product of my time.) | |
| 450 g warm water | |
| 450 g milk | |
| 1 tbl apple cider vinegar | |
| 1 tbl shortening |
| require 'chunky_png' | |
| class Cell | |
| attr_reader :row, :col | |
| def initialize(row, col) | |
| @row, @col = row, col | |
| @links = {} | |
| end |
| require 'chunky_png' | |
| class ToroidalGrid | |
| class Cell | |
| attr_reader :row, :column | |
| attr_reader :north, :south | |
| attr_accessor :east, :west | |
| def initialize(row, column) | |
| @row, @column = row, column |
| RSpec::Matchers.define :not_to do | |
| match { |actual| !actual } | |
| end | |
| RSpec.describe "Mater" do | |
| specify "says `to not to' to mean false" do | |
| expect(false).to not_to | |
| expect(true).not_to not_to | |
| end | |
| end |
| require 'benchmark' | |
| N = 100_000 | |
| SIZE = 10 | |
| array_1d = Array.new(SIZE * SIZE, 0) | |
| array_2d = Array.new(SIZE) { Array.new(SIZE, 0) } | |
| Benchmark.bm do |bm| | |
| bm.report("1d.dup") { N.times { array_1d.dup } } |