Odd word problem: Difference between revisions
Content deleted Content added
Line 34: | Line 34: | ||
func owp(dst io.Writer, src io.Reader) { |
func owp(dst io.Writer, src io.Reader) { |
||
b := make([]byte, 1) |
b := make([]byte, 1) |
||
odd := func(s byte) byte { |
|||
odd = func(s byte) byte { |
|||
if unicode.IsPunct(rune(s)) { |
if unicode.IsPunct(rune(s)) { |
||
return s |
return s |
||
Line 69: | Line 68: | ||
we,era;not,ni,kansas;yna,more. |
we,era;not,ni,kansas;yna,more. |
||
</pre> |
</pre> |
||
A different approach |
A different approach, using <code>defer</code>: |
||
<lang go>package main |
<lang go>package main |
||
Line 110: | Line 109: | ||
} |
} |
||
} |
} |
||
func() { |
|||
for { |
|||
src.Read(b) |
|||
if unicode.IsPunct(rune(b[0])) { |
|||
break |
|||
} else { |
|||
defer dst.Write([]byte{b[0]}) |
|||
} |
|||
} |
|||
} |
|||
() |
|||
dst.Write(b) |
dst.Write(b) |
||
if b[0] == '.' { |
if b[0] == '.' { |