Kernighans large earthquake problem: Difference between revisions
Content added Content deleted
(New draft task with awk and python examples.) |
|||
Line 20: | Line 20: | ||
<lang awk> awk '$3 > 6' data.txt</lang> |
<lang awk> awk '$3 > 6' data.txt</lang> |
||
=={{header|Perl}}== |
|||
<lang perl>perl -n -e '/(\S+)\s*$/ and $1 > 6 and print' data.txt</lang> |
|||
=={{header|Python}}== |
=={{header|Python}}== |
Revision as of 02:35, 21 April 2018
Kernighans large earthquake problem is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
Brian Kernighan, in a lecture at the University of Nottingham, described a problem on which this task is based.
- Problem
You are given a a data file of thousands of lines; each of three `whitespace` separated fields: a date, a one word name and the magnitude of the event.
Example lines from the file would be lines like:
8/27/1883 Krakatoa 8.8 5/18/1980 MountStHelens 7.6 3/13/2009 CostaRica 5.1
- Task
- Create a program or script invocation to find all the events with magnitude greater than 6
- Assuming an appropriate name e.g. "data.txt" for the file:
- Either: Show how your program is invoked to process a data file of that name.
- Or: Incorporate the file name into the program, (as it is assumed that the program is single use).
AWK
<lang awk> awk '$3 > 6' data.txt</lang>
Perl
<lang perl>perl -n -e '/(\S+)\s*$/ and $1 > 6 and print' data.txt</lang>
Python
Typed into a bash shell or similar: <lang python>python -c ' with open("data.txt") as f:
for ln in f: if float(ln.strip().split()[2]) > 6: print(ln.strip())'</lang>