Kernighans large earthquake problem: Difference between revisions
Content added Content deleted
m (→AppleScript :: Functional: Added `either` to return any Left message as a string.) |
(Added Prolog Solution) |
||
Line 869: | Line 869: | ||
{{Out}} |
{{Out}} |
||
<pre style="font-size:84%"> |
<pre style="font-size:84%"> |
||
8/27/1883 Krakatoa 8.8 |
|||
5/18/1980 MountStHelens 7.6 |
|||
</pre> |
|||
=={{header|Prolog}}== |
|||
{{works with|SWI Prolog}} |
|||
Example command line: <code>swipl kernighans_earthquake.pl earthquake.txt</code>. |
|||
<lang prolog>:- initialization(main, main). |
|||
process_line(Line):- |
|||
split_string(Line, "\s\t", "\s\t", [_, _, Magnitude_string]), |
|||
read_term_from_atom(Magnitude_string, Magnitude, []), |
|||
Magnitude > 6, |
|||
!, |
|||
writef('%w\n', [Line]). |
|||
process_line(_). |
|||
process_stream(Stream):- |
|||
read_line_to_string(Stream, String), |
|||
String \= end_of_file, |
|||
!, |
|||
process_line(String), |
|||
process_stream(Stream). |
|||
process_stream(_). |
|||
process_file(File):- |
|||
open(File, read, Stream), |
|||
process_stream(Stream), |
|||
close(Stream). |
|||
main([File]):- |
|||
process_file(File), |
|||
!. |
|||
main(_):- |
|||
swritef(Message, 'File argument is missing\n', []), |
|||
write(user_error, Message).</lang> |
|||
{{out}} |
|||
<pre> |
|||
8/27/1883 Krakatoa 8.8 |
8/27/1883 Krakatoa 8.8 |
||
5/18/1980 MountStHelens 7.6 |
5/18/1980 MountStHelens 7.6 |