These fields are all optional and need only
be supplied if you would like a direct reply.
Subject
Your email address
Your real name
You must answer this!
If you don't, my spam filtering will
ensure that I never see your email.
What's 8 plus five (in digits only)?
Please make your changes here and then
Editing tips and layout rules.
File: MoreMentalModelMissteps ''' <link rel="alternate" type="application/rss+xml" ''' href="/rss.xml" title="RSS Feed"> ********> width="25%" |>> ''' <a title="Subscribe to my feed" ''' rel="alternate" ''' href="https://www.solipsys.co.uk/rss.xml"> ''' <img style="border-width: 0px;" ''' src="https://www.feedburner.com/fb/images/pub/feed-icon32x32.png" ''' align="middle" ''' alt="" />Subscribe!</a> _ ''' <a href="https://twitter.com/ColinTheMathmo"> ''' <img src="https://www.solipsys.co.uk/new/images/TwitterButton.png" ''' title="By: TwitterButtons.net" ''' width="212" height="69" ''' alt="@ColinTheMathmo" ''' /></a> <<| ---- My latest posts can be found here: * ColinsBlog ---- Previous blog posts: * AnOddityInVIM * DoubleDoubleDivisionAlgorithm * ContinuityConcerns * CountingCarbonCalories * TheParityOfZero * WhenTheTextAndHtmlDisagree * RecursionRevisited * VerticesRequiredForCycles * ReflexActions * TheBalladOfBunter * InfiniteRamseyTheorem * SignalReflection * AnalogiesNotConsideredHarmful * TwitterReplyVsQuoteTweet * ProofsToMakeYouGoWOW * LaptopPurchaseAdviceReceived * BlowUpYourAbilityBalloon * AFactletForAll * AnatomyOfAHit * SellYourselfSellYourWork * AllTheLetters * BeingSlowToCriticise * StateMachineInRealLife * CoxeterOnceNerdSnipedConway * NotAlwaysYourFault * RememberingConway * PerceptionOfSpace * ParallelogramPuzzle * BackOfTheEnvelopeCOVID19 * APointAgainstTheAxiomOfChoice * InDefenseOfTheAxiomOfChoice * JourneyingHomeThroughStormDennis * EarthRadiusRefined * VolumeOfASphere * BigOhAndRelations * MathematicalRelations * IntroducingBigOh * ConstantDifferences * AlgorithmsAndSizesOfInstances * IntroducingTimeComplexity * TheLinearFrog * SeventyVersusOneHundredRevisited * HowTheFarragoWorks * SeventyVersusOneHundred * PowersOfTwoInLexOrder * EmergingEExpanded * RageInducingSystemImplementation * TheBookIsNotAlwaysRight * EmergingE * ImpossibleToTranslate * WaitingInVain * NonRepeatingDecimals * RationalRepeats * WhyIsItLovely * CompilingCryptoConnections * ExploringConnectionsBetweenCryptoSystems * ElwynBerlekampHasLeftUs * RootCauseAnalysisAndThePhotocopierQuestion * TheUpDownTides * TheForeAftTide * TheSidewaysTide * WrappingUpWrappingUpTheEarth * TheOtherWrappingTheEarthProblem * WrappingTheEarth * TheRingOfSteel * RoundingUpTheRopes * OtherOtherOtherRopeAroundTheEarth * RopeAroundTheEarthRefined * TheOtherRopeAroundTheEarth * ElementaryEstimates * LatitudeCorrection * JustGiveMeTheAnswer * MoreMusingOnPollardRho * IdleThoughtsAboutPollardRho * WhenOptimisingCodeMeasure * ADogCalledMixture * AnotherPayPalScam * WhyTopPostingHasWon * UnexpectedInteractionOfFeatures * ArchimedesHatBoxTheorem * ConsideringASphere * ToLinkOrNotToLink * GenericAdviceForWritingAThesis * JustTeachMyChildTheMaths * NotASpectatorSport * LeftTruncatablePrime * TheDoctorAndTheLawyer * FourPointsTwoDistancesProof * MeetingRonGraham * NapkinRingVersusSphericalCap * TheFourPointsPuzzle * RadiusOfTheEarthPartTwo * GrepTimingAnomaly * TheRadiusOfTheEarth * ThisWorksToCureMyHiccoughs * PerhapsWeSavedOne * ThinkingAboutMastodon * DisappearingTrainsOnVirgin * TheIndependenceGame * OneOfMyFavouritePuzzles * ThinkingAboutRecursion * MemorisingTheTube * SpikeySpheres * SurprisinglyQuick * AnUnexpectedFraction * YouHaveToAdmireTheirOptimism * RepresentativesMatter * PythagorasByIncircle * APuzzleAboutPuzzles * HowNotToDoTwitter * Calculating52FactorialByHand * SmallThingsMightNotBeSoSmall * NotIfYouHurry * FactoringViaGraphThreeColouring * AnotherProofOfTheDoodleTheorem * WhenObviousIsNotObvious * GraphThreeColouring * TheDoodleTheorem * BeCarefulWhatYouSay * TheMutilatedChessboardRevisited * AMirrorCopied * TheOtherOtherRopeAroundTheEarth * PhotocopyAMirror * ThePointOfTheBanachTarskiTheorem * SieveOfEratosthenesInPython * FastPerrinTest * RussianPeasantMultiplication * FindingPerrinPseudoPrimes_Part2 * FindingPerrinPseudoPrimes_Part1 * TheUnwiseUpdate * MilesPerGallon * TrackingAnItemOnHackerNews * HackerNewsUserAges * PokingTheDustyCorners * ThereIsNoTimeForThis * PublicallySharingLinks * LearningTimesTables * GracefulDegradation * DiagrammingMathsTopics * OnTheRack * SquareRootByLongDivision * BeyondTheBoundary * FillInTheGaps * SoftwareChecklist * NASASpaceCrews * TheBirthdayParadox * TheTrapeziumConundrum * RevisitingTheAnt * TheAntAndTheRubberBand * IrrationalsExist * MultipleChoiceProbabilityPuzzle * RandomEratosthenes * WrappingUpSquareDissection * DissectingASquarePart2 * DissectingACircle * DissectingASquare * AnOddityInTennis * DecisionTreeForTennis * DecisionTreesInGames * AMatterOfConvention * DoYouNourishOrTarnish * BinarySearchReconsidered * TwoEqualsFour * TheLostPropertyOffice * TheForgivingUserInterface * SettingUpRSS * WithdrawingFromHackerNews ---- Additionally, some earlier writings: * RandomWritings. * ColinsBlog2010 * ColinsBlog2009 * ColinsBlog2008 * ColinsBlog2007 * ColinsBlogBefore2007 ******** I mentioned when talking about anoddityinvim that the behaviour of the command "<n>J" didn't match my mental model. Sometimes software does that, it had behaviour that's totally reasonable when you think about it one way, but there's another way of thinking that causes you to be surprised. [[[> Looping over the parameters: {{{ for n in $* do <use parameter $n> done }}} ---- Using them one-by-one: {{{ while [[ -n ""$1 ]] do <use parameter $1> shift done }}} ]]] Here's another as reported to me by a friend. In shell scripting in *nix we can write a script that takes a collection of parameters. Sometimes the script will deal with them one at a time, and can loop over them. On the other hand, sometimes we want to deal with the first, and iterate until we are done. ''' The <tt>shift</tt> command deletes parameter <tt>$1</tt> and shifts each of the remaining parameters down by one. So far so reasonable. [[[< {{{ shift ; shift ; shift }}} ]]] Sometimes in scripting we want to shift by more than one place, so we execute multiple shift statements, as shown here. If there are a lot, or we need it to vary, we can put that in a loop, like this: |>> [[[ {{{ for i in $( seq $n ); do shift ; done }}} ]]] <<| ''' All that does is execute the <tt>shift</tt> command <tt>$n</tt> times. So if you want 10 shifts (which does, admittedly, seem a touch excessive) you can do this: |>> [[[ {{{ for i in 10 ; do shift ; done }}} ]]] <<| ''' Checking the <tt>man</tt> page for <tt>shift</tt> we see ''' that there's a short-cut for this, because <tt>shift</tt> takes a parameter to say how many arguments to shift by: |>> [[[ {{{ shift <n> }}} ]]] <<| ---- ********> So we think these are identical: ******** ******** [[[ {{{ shift shift shift }}} ]]] ******** ******** [[[ {{{ shift 3 }}} ]]] ********< Well, they aren't. Here are two scripts: ********> [[[ {{{ #!/bin/bash # Script ShiftThreeTimes echo "Executing 'shift ; shift ; shift'" shift ; shift ; shift echo Resulting first parameter: $1 }}} ]]] ******** ******** [[[ {{{ #!/bin/bash # Script Shift3 echo "Executing 'shift 3'" shift 3 echo Resulting first parameter: $1 }}} ]]] ********< Executing these: ********> [[[ {{{ ./ShiftThreeTimes 1 2 3 4 }}} ]]] ******** ******** [[[ {{{ ./Shift3 1 2 3 4 }}} ]]] ********< OK, so they both shift out the first three parameters and print the fourth one, printing "Resulting first parameter: 4". No surprise ... let's try again: ********> [[[ {{{ ..../ShiftThreeTimes 1 2 }}} ]]] ******** ******** [[[ {{{ ..../Shift3 1 2 }}} ]]] ********< Different results. OK, so a more careful reading of the ''' <tt>man shift</tt> page explains why this is so. ''' The definition of <tt>shift &lt;n&gt;</tt> is not ''' the same as executing <tt>shift</tt> "n" times. It /mostly/ is, but in fact, it isn't. So there we are, another of my mental models out the window. ---- |>> | |>> <<<< Prev <<<< ---- AnOddityInVIM <<| | : | |>> >>>> Next >>>> ---- TesseractTeaser ... <<| | ---- ********> ''' <a href="https://mathstodon.xyz/@ColinTheMathmo"> ''' <img src="https://www.solipsys.co.uk/images/Mastodon_Mascot.png" ''' width="256" height="280" ''' alt="https://mathstodon.xyz/@ColinTheMathmo" ''' /></a> ******** ''' <a href="https://mathstodon.xyz/@ColinTheMathmo/">You can follow me on Mathstodon.</a> _ _ _ _ [[[> ''' <a href="https://twitter.com/ColinTheMathmo">Of course, you can also<br>follow me on twitter:</a> ''' <a href="https://twitter.com/ColinTheMathmo"> ''' <img src="https://www.solipsys.co.uk/new/images/TwitterButton.png" ''' title="By: TwitterButtons.net" ''' width="212" height="69" ''' alt="@ColinTheMathmo" ''' /></a> ''' <img src="/cgi-bin/CountHits.py?MoreMentalModelMissteps" alt="" /> ]]] ********< ---- !! Send us a comment ... ''' <form action="https://www.solipsys.co.uk/cgi-bin/FormMail.pl" method=post> ''' <input type=hidden name="recipient" value="colinsblogcomment@solipsys.co.uk" > ''' <input type=hidden name="subject" value="Blog comment : MoreMentalModelMissteps" > ''' <input type=hidden name="redirect" value="https://www.solipsys.co.uk/new/ThankYouForYourComment.html" > ''' <input type=hidden name="missing_fields_redirect" value="https://www.solipsys.co.uk/RequestError.html"> ''' <input type=hidden name="env_report" value="REMOTE_HOST, REMOTE_ADDR, HTTP_USER_AGENT" > ''' <input type=hidden name="print_blank_fields" value="1" > ********> width="47%" You can send us a message here. It doesn't get published, it just sends us an email, and is an easy way to ask any questions, or make any comments, without having to send a separate email. So just fill in the boxes and then ''' <font size="+4"><INPUT TYPE="submit" VALUE="CLICK HERE TO SEND"></font> ******** width="53%" ********< ''' <table cellpadding="5"> ''' <tr> ''' <td valign="top">Your name </td> <td valign="top">:</td> ''' <td> <input type=text name="realname" size="48"> </td> ''' <tr> ''' <td valign="top">Email </td> <td valign="top">:</td> ''' <td> <input type=text name="email" size="48"> </td> ''' </tr> ''' <tr> ''' <td valign="top">Message </td> <td valign="top">:</td> ''' <td> <TEXTAREA NAME="Message" ROWS=10 COLS=64></TEXTAREA> </td> ''' </tr> ''' </table> ''' <center> ''' <font size="+4"> ''' <INPUT TYPE="submit" VALUE="CLICK HERE TO SEND"> ''' </font> ''' </center> ''' </form> ********<