User talk:Ffivaz: Difference between revisions

From Rosetta Code
Content added Content deleted
Line 24: Line 24:
Thanks again for adding the solution, don't let my changes discourage you from adding more missing solutions.
Thanks again for adding the solution, don't let my changes discourage you from adding more missing solutions.
—[[User:dchapes|dchapes]] ([[User talk:dchapes|talk]] | [[Special:Contributions/dchapes|contribs]]) 20:26, 14 November 2014 (UTC)
—[[User:dchapes|dchapes]] ([[User talk:dchapes|talk]] | [[Special:Contributions/dchapes|contribs]]) 20:26, 14 November 2014 (UTC)

: Thank you. I'll dig into your changes to learn! --[[User:Ffivaz|Ffivaz]] ([[User talk:Ffivaz|talk]]) 20:44, 14 November 2014 (UTC)

Revision as of 20:44, 14 November 2014

Go examples/solutions

Welcome to RosettaCode and thanks for adding some missing Go example/solutions.

I made some changes to the Flipping bits game#Go that I'd thought I'd explain here FYI. Some of these are very minor and I wouldn't have bothered to change them if I wasn't already making other changes.

  • Ran go fmt.
  • Used <lang go> vs <lang Go>, I'm not sure if the wiki cares, but "officially" the syntax tag for Go is the former.
  • Removed leading and trailing blank line from the lang block (unlike pre if you do <lang go>\npackage foo"… it leaves a blank line).
  • Used the {{out}} template instead of "Example:" or "Output:".
  • Since you made a type I turned several of the types into methods instead including adding a String method so that the type implements fmt.String. Since the type is an array I also made (most) of these use a *matrix rather than matrix to avoid copying the array (for small arrays of 3×3 it's a wash but for anything larger passing a reference is better IMO).
  • "Fixed" setting current:
    • not calling rand.Intn(100) each time through the loop
    • making sure the start position is never the target position as required by the task (this is the whole reason I started making changes at all; the very first time I tried the original code it said "You won!" followed by the prompt of what to flip :))
    • including row 3 and column 3 in the selection of what to randomly flip (in hind sight I should have used len(current) and len(current[0]) rather than a literal 3 here)
    • not re-seeding each time randMatrix is called and removing the unnecessary call to time.UTC.
  • Combined the initial and per-move printing of the boards to avoid code duplication as well as eliminating the break by moving the condition into the for loop.
  • Removed use of bufio.Scanner. It's inappropriate to make a new scanner each time through the loop and ignore Scanner.Err (in particular, it's documented as "the reader may have advanced arbitrarily far past the last token."). (Using a simple fmt.Scanf still isn't great but is fine for the purpose of RosettaCode).
  • Removed unnecisary braces from the switch block.
  • Used range in many places instead of explicit hard coded 3. At a minimum it should have been len(m) or len(m[i]) (which for arrays is a constant and the compiler optimizes it as such) but range is more idiomatic.
  • Replace conditions in flip* with the bitwise XOR assignment operator (^=) to flip the least significant bit.

Thanks again for adding the solution, don't let my changes discourage you from adding more missing solutions. —dchapes (talk | contribs) 20:26, 14 November 2014 (UTC)

Thank you. I'll dig into your changes to learn! --Ffivaz (talk) 20:44, 14 November 2014 (UTC)