HomeHome More SamplesMore Samples
///////////////////////////////////////////////////////////////////////////////
//
// Title: A Round of Golf
// Author: Ellen K. Rodehorst
// Publication: Dell Favorite Logic Problems
// Issue: Summer, 2000
// Puzzle #: 9
// Stars: 1
// 
// When the Sunny Hills Country Club golf course isn't in use by club members, 
// of course, it's open to the club's employees. Recently, Jack and three 
// other workers at the golf course got together on their day off to play 
// a round of eighteen holes of golf. Afterward, all four, including Mr. Green, 
// went to the clubhouse to total their scorecards. Each man works at a different
// job (one is a short-order cook), and each shot a different score in the game. 
// No one scored below 70 or above 85 strokes. 
// From the clues below, can you discover each man's full name, job and golf
// score? 
// 
// 1. Bill, who is not the maintenance man, plays golf often and had the lowest
//    score of the foursome.
// 2. Mr. Clubb, who isn't Paul, hit several balls into the woods and scored 
//    ten strokes more than the pro-shop clerk.
// 3. In some order, Frank and the caddy scored four and seven more strokes 
//    than Mr. Sands. 
// 4. Mr. Carter thought his score of 78 was one of his better games, even 
//    though Frank's score was lower.
// 5. None of the four scored exactly 81 strokes.
// 
///////////////////////////////////////////////////////////////////////////////
//
// query: 
//          all RoundOfGolf(lastname,job,score)
//
///////////////////////////////////////////////////////////////////////////////
//
// result:
//
// lastname = [ {Green} Frank, {Clubb} Jack, {Sands} Bill, {Carter} Paul]
// job      = [ {Cook} Bill, {Maintanance} Jack, {Clerk} Frank, {Caddy} Paul]
// score    = [ {Jack} 85, {Bill} 71, {Frank} 75, {Paul} 78]      
//
///////////////////////////////////////////////////////////////////////////////
local Name = Jack | Bill | Frank | Paul
local Surname = Green | Clubb | Sands | Carter
local Jobs = Cook | Maintanance | Clerk | Caddy

local Job = Jobs->>Name
local Score = Name->>I[70..85]
local Lastname = Surname->>Name

pred RoundOfGolf(name::Lastname,job::Job,score::Score) iff
{1} job(Maintanance) <> Bill & 
    score(Bill) < score(Jack) & score(Bill) < score(Paul) & score(Bill) < score(Frank) &
{2} name(Clubb) <> Paul & score(name(Clubb)) = score(job(Clerk)) + 10 &
{3} score_Sands = score(name(Sands)) &
    (
    (score(Frank) = score(name(Sands)) + 4 & score(job(Caddy)) = score(name(Sands)) + 7) |
    (score(Frank) = score(name(Sands)) + 7 & score(job(Caddy)) = score(name(Sands)) + 4)
    ) &
{4} score(name(Carter)) = 78 & score(Frank) < 78 &
{5} ~81 in score








This page was created by F1toHTML