Gender Asymmetries: Vivid Memories of Non Consensual Aggressive Contact In Humans

Leave a comment

I have been thinking about and writing up my thoughts about events of Thursday 27 October 2018 associated with the United States Senate Judiciary Committee Hearing.

The way I have been organizing my thoughts is to construct a model of how and why the events like the historical event in question come about, how they they are remembered, and how they are handled.

Two global attributes of the model are: “The Victim” and the “The Predator”. The title of the model is: “Gender Asymmetries: Vivid Memories of Non Consensual Aggressive Contact In Humans”.

The model applies to and explains the historical event in question, and also Thursday’s judiciary committee event. The presenters content at Thursday’s event and the committee’s organization and presentation of the Thursday’s event is also explained by the model.

Writing up the details of the model is a current task.

I will share the write up of my model when I complete it. Creating such stuff is how I naturally deal with very disturbing, or thought provoking, or even just very interesting things I experience, read, or hear, or watch, or just think about, in my life.

The output of the model are the various end states that are reachable (or not) depending on the gender asymmetry that is associated with the transversal of the model.

In other words: Such Events Wind Up In Certain States Depending on Gender Asymmetry.  A state transition is characterized by behavior at and after the event and recalled memories of the event.

This post to includes screenshots of the model an explanation of the states these images as well as the model are all preliminary, incomplete, and are being used to help me mentally visualize and construct the overall model.


So,  this model can be considered as a joint effort between me and the folks who comment on my shared write-up process.

This blog post started out on my FB account and continues here.

Below are some (summarized) comments on the FB thread and my responses. These comments and responses help with the construction process.

  • [COMMENT] This will be an interesting model, where “the Predator” later, becomes “the Victim” (if she is mistaken or lying–and he is indeed being truthful).
    Otherwise, it seems to me that it becomes a case of a self-inflicted wound for “the Predator.”
  • [RESPONSE] Such a ‘self-inflicted’ transition is captured by entanglement of the states “Deny” and “Atone”.  There is no state for “mistaken”, since the model assumes the vivid memory of the event is shared.


  • [COMMENT] Are you saying that you have preconceived opinions that Dr Ford is truthful and Judge Kavanaugh was not?
    If so, then your conclusions are already finalized.
  • [RESPONSE] ABSOLUTELY NOT! My model does NOT have an output of that nature. The output of my model is various end states that are reachable (or not) depending on the gender asymmetry that is associated with the transversal of the model.
    In other words: Such Events Wind Up In Certain States Depending on Gender Asymmetry a state transition is characterized by behavior at and after the event and a vivid memory of the event.  [The model assumes the event has invoked a vivid-memory in the participants of the event]

Is Today Your Birthday

Leave a comment

    Is Today Your Birthday?
    Written By Zach Cox (
    On the occosion of the anniversary his nephew's birth.
    Happy Birthday James!
    Note:  Sadly It was not finished for this year's anniversary
           But you can adjust command line argument "yyyy_mm_dd"
           To see what different inputs yield.

import datetime
import sys
import os
import traceback

class Is_Today_Your_Birthday:
    usage_messages = ["Usage:  python yyyy-mm-dd",
                      "Where:  yyyy_mm_dd is the date of your birth",
                      "       'yyyy' 'mm' 'dd' are each numeric character strings",
                      "        of length 4, 2, and 2 and seperated by the dash character.",
                      "        yyyy is the year, mm is the month and dd is the day of the month."]
    birthday_msgs = ["You Are One Decade Old!",
                     "You Are Twenty Percent Dead!",
                     "You Are Flirty Shirty Thirty ",
                     "Lordy, Lordy, You Are Forty!",
                     "You Are Nifty, Thrifty Fifty!",
                     "You Are Sketchy, Sexy Sixty!",
                     "You Are Sensibly, Steadily Seventy!",
                     "You Are Weighty, Eighty Matey!",
                     "You Are Shiny, Briny Ninety!",
                     "Dang, Ain't You Dead Yet?",
    arg_list = None
    # Today
    now = None
    # Date Of Birth
    dob = None
    # Birthday Anniversary
    bda = None

    def __init__(self):
        """ set up the today/now vars """ =

    def speak(self, message, do_speak):
        if do_speak:
            ret_val = os.system("say " + message)

    def print_usage(self,error_message,do_speak=False):
        """ Print Error Message And  Usage Rules """
        print error_message
        self.speak(error_message, do_speak)
        for msg in self.usage_messages:
            print msg
            self.speak(msg, do_speak)

    def check_command_line_arguments(self):
            set up the date of birth and this year's birthday vars
			return True when date
            check for a valid command line argument
        ret_value = False
        self.arg_list = sys.argv
        if len(self.arg_list) >= 2:
            # date of birth
                dtobj = datetime.datetime.strptime(self.arg_list[1], '%Y-%m-%d')
            except ValueError:
                self.print_usage("INVALID ARGUMENT")

            self.dob =
            # this year's birthday anniversary
            self.bda = self.dob.replace(
            return True
            self.print_usage("MISSING CMD LINE ARGUMENT")
            return False

    def dob_vs_now(self):
        # Born On This Very Day (WOW!)?
        if == self.dob:
            print("WOW! Today Is The Day Of Your Birth!")
            print("YOU ARE BRAND NEW!")
            print("Welcome To the 'outside' World!")
        # Born Sometime In The Future?
        if self.dob >
            print("WOW! You Are From The FUTURE.")
            print("TIME TRAVEL!  Who Knew?")
        # Today Is Your Birthday
        if self.bda ==
            print("Happy Birthday!")
            years_old = int(
            print("You Are %d Years Old Today" % (years_old) )
            msg_idx = len(self.birthday_msgs)-1
            if years_old > 90:
                msg_idx = len(self.birthday_msgs)-2
            elif years_old % 10 == 0:
                msg_idx = (years_old / 10)-1
        # You Have Already Had Or Will Have A Birthday This Year
        print("Today Is NOT Your Birthday")
        days = abs(( - self.bda).days)
        days_str = "Days"
        if days == 1:
            days_str = "Day"
        if self.bda >
            extra_msg = "Your Birthday Will Be %d %s From Now." % (days, days_str)
            years_old = int(
            message = "You Will Be %d Years Old That Day!" % (years_old)
            extra_msg = "Your Birthday Was %d %s Ago." % (days, days_str)
            years_old = int(
            message = "You Turned %d Years Old That Day!" % (years_old)


def main():
        Instanciate the object
        Invoke the check command line arguments method on the object
        Invoke the analysis of date of birth to today's date method on the object
    print " "
    is_today_your_birthday = Is_Today_Your_Birthday()
    bool_wtf = is_today_your_birthday.check_command_line_arguments()
    if bool_wtf:
    print " "

    Python Artifact
if __name__ == '__main__':
<span id="mce_SELREST_start" style="overflow:hidden;line-height:0;">&#65279;</span>

538 Puzzles – The Maths Anarchists

Leave a comment

Here is the 538 Blog Riddle Page For Last Week:

When Will The Arithmetic Anarchists Attack

I started this yesterday and I think I successfully solved the riddle.  However I got slightly different answers than the solution published today.  I do not know where the error is.  Was the solution published in the 538 Blog incorrect?  Or is my solution incorrect?

Their solution was that there were 212 events and the longest gap was 1,096 days.  Their solution tagged the most events for any one year to be 7 for the year 2012 which did match my solution.

My solution was:

For Each Date From 01 JAN 2001 to 31 DEC 2099
Consider dd/mm/yy where dd*mm == yy
Then Answer The Following Questions:

[Q1] How Many Of These Events Are There?
[A1] There Are 210 Events In the 21st Century.

[Q2] Which Year Has The Most?
[A2] The Year 2024 Will Have 7 Events.

[Q3] What Is The Longest Gap Between Any Two?
[A3] The Longest Gap = 1097 Days And Occurs Between 03/19/2057 And 03/20/2060

I figured this out using a Python script which is given below.

I’m still looking at my code in hopes of finding the problem (assuming it is my problem).

    When Will The Maths Anarchists Attack
    For Each Year From 2000-2100:
        Consider "mm/dd/yy"
        When mm*dd == yy
        Then For That (mm, dd, yy) Combination
            An Attack Will Be Launched
    [1] How Many Statues Will Be Destoryed?
    [2] Which Year(s) Will Have The Most Statues Destroyed
    [3] What Will Be The Longest Gap Between Statue Destruction
import datetime
import calendar

class Havoc_From_The_Maths_Anarchists:
        Answer Questions 1,2,3 Above
    def __init__(self):

        self.list_of_triples = []
        self.q1 = "[Q1] How Many Of These Events Are There?"
        self.q2 = "[Q2] Which Year Has The Most?"
        self.q3 = "[Q3] What Is The Longest Gap Between Any Two?"
        self.a1 = "[A1] "
        self.a2 = "[A2] "
        self.a3 = "[A3] "

    def build_list_of_dates(self, debug=True):
            For each month number and each day of the month number
            When month number times day of the month number is not less than or equal to 99 skip and consider next date
            If this day of the month is greather than the number of days in this month skip and consier the next date
            If this year, month, day of the month already found skip and consider the next date
            Add this year, month, day of the month to the list dates and consider the next date
        self.list_of_triples = []

        for idx in range(1,13):
            for jdx in range(1,32):
                this_mo = idx
                this_da = jdx
                this_yr = this_mo*this_da
                # SKIP IF YEAR NOT IN RANGE 01 ... 99
                if this_yr &gt; 99:
                # SKIP OUT OF RANGE DAYS
                if this_da &gt; calendar.monthrange(this_yr,this_mo)[1]:
                    if debug:
                        print "[BIG_da] mo = ",this_mo," da = ", this_da, " yr = ",this_yr
                # ADD THIS DAY TO ALLOWED DAYS
                this_one = (2000+this_yr, this_mo, this_da)
                if debug:
                    print "[NEW_da] mo = ", this_mo, " da = ", this_da, " yr = ",this_yr
                self.list_of_triples.append( this_one )

    def find_answers(self, debug = True):
        current_year = 2001
        current_list = []
        list_of_years = []
        list_of_dates = []
        for idx in range(0, len(self.list_of_triples)):
            if self.list_of_triples[idx][0] != current_year:
                current_year = self.list_of_triples[idx][0]
                current_list = []
            this_one =[idx][0],self.list_of_triples[idx][1],self.list_of_triples[idx][2])

        # Find Answer 1 and Answer 2
        total_dates = 0
        max_events = 0
        max_year = ""

        for a_list in list_of_years:
            if debug:
                for a_date in a_list:
                    print a_date.strftime('%m/%d/%Y'),
            this_years_events = len(a_list)
            total_dates += this_years_events
            if this_years_events &gt; max_events:
                max_events = this_years_events
                max_year = a_list[0].strftime('%m/%d/%Y').split('/')[2]
        self.a1 += "There Are "+str(total_dates)+" Events In the 21st Century."
        self.a2 += "The Year "+max_year + " Will Have " + str(max_events) + " Events."

        # Find Answer 3
        date_then =,12,31)
        date_now  = date_then
        delta     = int((date_now - date_then).days)
        max_gap   = delta
        gap_dates = (date_now,date_then)

        for a_date in list_of_dates:
            date_then = date_now
            date_now = a_date
            delta = int((date_now - date_then).days)

            if delta &gt; max_gap:
                max_gap = delta
                gap_dates = [date_now, date_then]
                if debug:
                    print "MAX_GAP = " ,max_gap," Occured Between ",gap_dates[1].strftime('%m/%d/%Y')," and ",gap_dates[0].strftime('%m/%d/%Y')

        self.a3 += "The Longest Gap = "+ str(max_gap)+ " Days And Occurs Between "+gap_dates[1].strftime('%m/%d/%Y')+" And "+gap_dates[0].strftime('%m/%d/%Y')

    def print_answers(self, debug = True):
        print "For Each Date From 01 JAN 2001 to 31 DEC 2099"
        print "Consider dd/mm/yy where dd*mm == yy"
        print "Then Answer The Following Questions:"
        print self.q1
        print self.a1
        print self.q2
        print self.a2
        print self.q3
        print self.a3

def main():
    answer_questions = Havoc_From_The_Maths_Anarchists()

if  __name__ =='__main__':main()<span id="mce_SELREST_start" style="overflow:hidden;line-height:0;"></span>


Integer Multiplication Explained

Leave a comment

When I first left undergraduate school I took a job teaching 8th and 9th grade math. My 8th graders were introduced to integer multiplication for the first time at that level. They certainly knew natural number multiplication and even knew integer addition which includes subtraction by the time we took up integer multiplication.

When teaching integer addition I presented it as addition of vectors directed along the number line. So +2 + -4 would be an arrow starting at zero of length 2 pointing to the right then append an arrow of length 4 pointing to the left. The tip of the second arrow wound up at the point -2 on the number line.

To extend that idea to integer multiplication I introduced items I called ‘Number Line Frogs’. Each frog had a number associated with it and a direction. So a +2 frog could jump two places at a time and it pointed to the right. The number -3 was represented by a frog that could jump three places and pointed to the left.

I then asked the students to think of integer multiplication problems in two parts. The problem a x b was to be visualized as an ‘a-frog’ being asked to do something and that something was to perform ‘b’ jumps. The problem always started at the origin or ‘0’ on the number line. The sign of the number ‘b’ indicated which direction the frog was to jump. The absolute value of the number ‘b’ indicated how many jumps the frog was to take. The sign of the number ‘a’ indicated which direction the frog was pointing and the absolute value of the number ‘a’ indicated how far the frog could jump.

In this way of thinking about it the problem +2 x -3 was the same as saying ‘Allow a +2 frog to jump three jumps backward (-3)’. I stressed that the problem -3 x +2 was the same problem as could be verified by saying ‘Allow a -3 frog to take two jumps forward (+2)’ In both cases the end result was the number -6.

The rule for ‘positive-a times positive-b’ was to say ‘let a postive-a-frog take b-jumps-forward’ which came out to be the same problem as saying ‘let a positive-b-frog take a-jumps-forward’.

The rule for ‘positive-a times negative-b’ was to say ‘let a positive-a-frog take b-jumps-backward, while the rule for ‘negative-b times positive-a’ was to say ‘let a negative-b frog take a-jumps-forward’.

Finally the rule for ‘negative-a times negative-b’ was to say ‘let a ‘negative-a frog take ‘b-jumps-backward’.

When viewed this way and taking into account the ‘frog’ always started at zero the sign table for integer multiplication was justified. Additionally the commutative property of multiplication was illustrated by noting any number that could be decomposed into ‘b-groups of length a’ was equivalent to the observation that the same number could be decomposed into ‘a-groups of length b’.

I will say that the 8th grade group I had were sorted in an inhomogeneous manner with all the top students put into one class and that class was assigned to me. I did worry about this sorting process and felt that it was wrong on multiple levels but given there was nothing a first year math teacher could do to change the situation I made the most of it and presented many mathematical concepts using non standard methods (i.e. presented not-by-the-book). I think that math class did enjoy my presentations.

Can I Get Your Digits! (Except for one of them)

Leave a comment

I follow the blog “Math Jokes 4 Mathy Folks“.  A recent post gave a game/riddle you can play with kids or even post a set of questions on some social media site and play with your friends.  The post is “Can I Get Your Digits“.

So, here are the questions you can ask:

[Step-1] Pick a number with more than four digits (keep it secret).
[Step-2] Add the digits of the number together (keep it secret).
[Step-3] Subtract this sum from the original number (keep it secret).
[Step-4] From [Step-3] give me all the digits except for one of them (keep that digit secret).
[Step-5] I will ‘magically’ guess the missing (secret) digit!

The ‘magic-guess’ is: Add up the digits given to you and then add what ever number it takes to get to the nearest multiple of nine and that number is the missing digit.

So for example: the number 87694. When the digits are added you get 34.  When you subtract 36 from 87694 you get 87660.  Below is a table for each of the possible missing digits from number 87660.

Missing the ‘0’ … 8+7+6+6 = 27 (The missing digit is ZERO)
Missing the ‘6’ … 8+7+6+0 = 21 (The missing digit is SIX)
Missing the ‘7’ … 8+6+6+0 = 20 (The missing digit is SEVEN)
Missing the ‘8’ … 7+6+6+0 = 19 (The missing digit is EIGHT)

Now here is an explanation of why this always works.

The way numbers are represented is in what is called a ‘Place Value System’.  In this system a number can be thought of as a sum of the digits of the number times a power of 10 (for a base 10 number).  The power of 10 depends on the ‘Place’ of the digit.  The ‘least-significant’ digit (the on on the right end of a number) can be thought of as that digit times 10^{0}.  The next ‘Place’ is called the 10’s place and can be thought of as that digit times 10^{1}, with the next ‘Place’ being the 100’s place or the digit times 10^{2} and so forth.

So for example:

87694\quad =\quad 8\times {10}^{4}+7\times {10}^{3}+6\times {10}^{2}+9\times {10}^{1}+4\times {10}^{0}

And this representation is equivalent to the following one when you replace the powers of 10 with the corresponding addition problem:

8\left( 1+9999 \right) +7\left( 1+999 \right) +6\left( 1+99 \right) +9\left( 1+9 \right) +4

It is now clear how this ‘magic guess’ works. When you distribute each digit over the corresponding sum you get the following:

8+8\left( 9999 \right) +7+7\left( 999 \right) +6+6\left( 99 \right) +9+9\left( 9 \right) +4

Regrouping you get the following very suggestive formula:

(8+7+6+9+4)\quad +\quad 8\left( 9999 \right) +7\left( 999 \right) +6\left( 99 \right) +9\left( 9 \right)

This is clearly the sum of the digits of the original number plus another number that is clearly a multiple of nine:

\sum { digits\_ of(87694) } \quad +\quad 9\left[ 8\left( 1111 \right) +7\left( 111 \right) +6\left( 11 \right) +9\left( 1 \right)  \right]

The main thing to realize here is that when you subtract \sum { digits\_ of(87694) } from the original number you are left with a number that (whatever its actual digits are) is a multiple of nine.

Finally it is the case that any number that is a multiple of nine also has the property that the number resulting from summing its digits is also a multiple of nine. This final fact is what you use to find the missing digit. Leaving out a single digit will ‘disturb’ the sum so it is no longer a multiple of nine and you only need sum up what you are given and find that number that causes the sum to be a multiple of nine to deduce the missing digit.

Notice: When the dropped digit is either a ‘0’ or a ‘9’ your magic ‘guess’ should be: “You left out either a 9 or a 0.”

Notice: This explanation can be extended to an arbitrary number of digits and thus it would be a proof.

Notice: That a multiple of nine also has the properties that the sum of its digits is also a multiple of nine can be explained in exactly the same way as the explanation above goes. So assume some number is a multiple of nine:

X\quad =\quad 9x

Now write X as a sum of its digits with each one times its corresponding power of ten:

X\quad =\quad \sum _{ i=0 }^{ n }{ { a }_{ i } } { 10 }^{ i }

Notice that we can write each term of the sum as a digit of the the original number times the quantity \left( 1+9\cdots 9 \right) where the symbol “9\cdots 9 ” is 9 or 99 or 999 or 9999 and so forth.

X\quad =\quad { a }_{ 0 }+\sum _{ i=1 }^{ n }{ { a }_{ i } } \left( 1+9\cdots 9 \right)

This way of writing the number makes it clear what happens when each digit is distributed over the its corresponding sum and the the sum regrouped so that the sum of the digits of the original number are distinct from the rest of the number.

X\quad =\quad { a }_{ 0 }+\sum _{ i=1 }^{ n }{ { a }_{ i } } +\sum _{ i=1 }^{ n }{ { a }_{ i } } \left( 9\cdots 9 \right)

Now it is clear that each term of the rightmost sum can be factored by the number nine giving the formula below. The symbol “1\cdots 1 ” is 1 or 11 or 111 or 1111 and so forth.

X\quad =\quad { a }_{ 0 }+\sum _{ i=1 }^{ n }{ { a }_{ i } } +\quad 9\sum _{ i=1 }^{ n }{ { a }_{ i } } \left( 1\cdots 1 \right)

Recalling that the original number is a multiple of nine we get the following:

9x\quad =\quad { a }_{ 0 }+\sum _{ i=1 }^{ n }{ { a }_{ i } } +\quad 9\sum _{ i=1 }^{ n }{ { a }_{ i } } \left( 1\cdots 1 \right)

Finally subtracting the rightmost sum from both sides of the formula and factoring out the number nine we get the following which does show that the sum of the digits of the original number is a multiple of nine.

9\left[ x-\sum _{ i=1 }^{ n }{ { a }_{ i } } \left( 1\cdots 1 \right)  \right] ={ a }_{ 0 }+\sum _{ i=1 }^{ n }{ { a }_{ i } } \quad

Fizz Buzz (Beep?)

Leave a comment

I subscribe to a blog called Quora.  You can set filters on what sort of questions are presented. I’ve set them to show math, physics, and computer science posts.

Today I saw a post that asked if someone with an advanced degree in computer science could fail the “Fizz Buzz Test“.

I had no idea what this test was so I did a Google Search on the words “fizzbuzz test” and came up with a wikipedia page dedicated to the game which also mentions the test (here is the page).

After reading the article section named “Other Uses” and messing around with a python script today I can safely say I do fall into the category of someone who has used this game as a “Software Kata

Here is what I’ve done so far.  And, in my defense, I did start out with a VERY SIMPLE version of this game and it sort of “grew-like-topsy” to what you see below.

I’ve used the WordPress tags to embed the code below.  So this blog post not only talks about the Fizz Buzz Test but also gives a demonstration of how source code embedding works on WordPress.

# Fizz Buzz (beep) Script
import os

def sayIt( anIndex, aCount, phrase):
  indexString = "The "+str(aCount)
  if aCount >= 11 and aCount <= 20:
    indexString += 'th'
  elif aCount % 10 == 1:
    indexString += 'st'
  elif aCount % 10 == 2:
    indexString += 'nd'
  elif aCount % 10 == 3:
    indexString += 'rd'
    indexString += 'th'
  indexString += ' element is '+str(anIndex)+' and we say '+phrase
  os.system("say " +indexString)

def findPhrase( index, fizzNumber, buzzNumber, beepNumber ):
  newNumber = index
  thePhrase = ''
  if fizzNumber != 0:
    while newNumber % fizzNumber == 0:
      thePhrase += 'FIZZ '
      newNumber = newNumber / fizzNumber
  if buzzNumber != 0:
    while newNumber % buzzNumber == 0:
      thePhrase += 'BUZZ '
      newNumber = newNumber / buzzNumber
  if beepNumber != 0:
    while newNumber % beepNumber == 0:
      thePhrase += 'BEEP '
      newNumber = newNumber / beepNumber
  return thePhrase

def fizzBuzzBeep(maxCount, fizzNumber, buzzNumber, beepNumber):
  count = 0
  index = 1
  while (count<maxCount):
    aPhrase = findPhrase( index, fizzNumber, buzzNumber, beepNumber )
    if len(aPhrase) != 0:
      count +=1
      print("{0:3d} - {1:3d} {2}".format(count, index, aPhrase))
      sayIt( index, count, aPhrase)
    index +=1

if __name__ == '__main__':
  fizzBuzzBeep(100, 3, 5, 7)

The Volume of A Pizza

Leave a comment

We ordered ‘Mellow Mushroom‘ pizzas for supper last night and we still have about one pie left over in the frig, just waiting to be finished off.

Now: What is pizza? one way to say it is to assume the thickness of the pie is the value 'a' and the radius of the pie is the value 'z' then to say, “What is Pizza?” could be to ask, “What is the volume of a pizza?”

Thinking of a pizza as a very thin cylinder of height 'h' and radius 'r' we get.

[1] V = \pi r^{2}h

Substituting 'a' for the height 'h' and 'z' for the radius 'r' we get:

[2] V = \pi z^{2}a

Next  recall that the greek letter \pi can be written in English as Pi we get:

[3] V = Pi z^{2}a

Finally expanding the z{2} to be z z we get:

[4] V = Pi z z a

Older Entries