annotate arrays/word_count/wc.py @ 0:20fea762903e

Import some exercises and solutions
author Louis Opter <kalessin@kalessin.fr>
date Sat, 29 Jun 2013 19:30:31 -0700
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
1 #!/usr/bin/env python
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
2
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
3 def wc(buf):
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
4 word_count = 0
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
5 line_count = 0
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
6 i = 1
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
7 n = len(buf)
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
8
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
9 while i < n and buf[i].isspace():
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
10 if buf[i] == "\n":
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
11 line_count += 1
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
12 i += 1
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
13 while i < n - 1:
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
14 if not buf[i - 1].isspace() and buf[i].isspace():
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
15 word_count += 1
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
16 while i < n - 1 and buf[i].isspace():
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
17 if buf[i] == "\n":
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
18 line_count += 1
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
19 i += 1
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
20 else:
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
21 i += 1
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
22 if not buf[i].isspace():
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
23 word_count += 1
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
24
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
25 return word_count, line_count
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
26
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
27 s1 = "rhje rhesr jrelskj "
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
28 s2 = "fjesl\n ffjesl jfes \n\nfjles fls\n \n"
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
29 s3 = " fjeksl fjkels ff"
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
30
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
31 print("wc({0}) = {1}".format(s1, wc(s1)))
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
32 print("wc({0}) = {1}".format(s3, wc(s3)))
20fea762903e Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
33 print("wc({0}) = {1}".format(s2.replace("\n", "\\n"), wc(s2)))