|
| En gaade... Fra : Frank Ronnie Hansen |
Dato : 24-08-01 20:46 |
|
Hej gruppe
Jeg er ikke den store programmør, men jeg sidder nu og da og hygger
mig med at løse gåder ved hjælp af Pascal 7.0.
Jeg læste for nylig nedenstående gåde, og jeg har da også løst den ved
hjælp af papir og blyant, (og ikke mindst vidskelæder).
Men det er ikke lykkedes mig at løse den med Pascal 7.0 - er der nogen
her i gruppen som kan fortælle mig hvorledes det kan gøres?
Her er gåden:
5 mænd bor i 5 forskellige huse i 5 forskellige farver, de ryger 5
forskellige cigaretmærker og drikker 5 forskellige drikke. De holder 5
forskellige slags husdyr.
1. Nordmanden bor i det første hus
2. Englænderen bor i det røde hus
3. Det grønne hus ligger til venstre for det hvide hus
4. Danskeren drikker the
5. Ham som ryger Rothmans bor ved siden af ham som har katte
6. Ham som bor i det gule hus ryger Dunhill
7. Tyskeren ryger Marlboro
8. Ham som bor i huset i midten drikker mælk
9. Ham som ryger Rothmans har en nabo, der drikker vand
10. Ham som ryger PallMall holder fugle
11. Svenskeren opdrætter hunde
12. Normanden bor ved siden af det blå hus
13. Ham som har heste bor ved siden af det gule hus
14. Ham som ryger Philip Morris drikker øl
15. I det grønne hus drikkes der kaffe
Hvilken landsmand har en fisk?
-Venlig hilsen
Frank
| |
Rasmus Klitgaard-Nie~ (25-08-2001)
| Kommentar Fra : Rasmus Klitgaard-Nie~ |
Dato : 25-08-01 10:28 |
|
Frank Ronnie Hansen wrote:
>
> Hej gruppe
>
> Jeg er ikke den store programmør, men jeg sidder nu og da og hygger
> mig med at løse gåder ved hjælp af Pascal 7.0.
>
> Jeg læste for nylig nedenstående gåde, og jeg har da også løst den ved
> hjælp af papir og blyant, (og ikke mindst vidskelæder).
>
> Men det er ikke lykkedes mig at løse den med Pascal 7.0 - er der nogen
> her i gruppen som kan fortælle mig hvorledes det kan gøres?
Jeps.. Du bruger Prolog istedet for :) (logisk programmering er skabt
til sådanne gåder)
>
--
>o ********* PINKY! aka. Rasmus Klitgaard-Nielsen *********
<()> **** Mad Programmer - Commodore Freak - ABP regular ****
^^ "Can't sing. Can't dance. Can handle a sword a little."
-- Victor's resume (Terry Pratchett, Moving Pictures)
| |
Thomas Riedel (25-08-2001)
| Kommentar Fra : Thomas Riedel |
Dato : 25-08-01 10:35 |
|
Hej Frank
Ja det var ikke helt enkelt, men her er hovedprogrammet:
type
tperson = (nor, eng, dan, sve, tys);
tfarve = (rod, hvid, gul, blaa, gron);
tcigaret = (roth, dunh,marl,pall,phil);
tdrik= (the, vand, maelk,ol, kaffe);
tdyr = (kat, fugl, hund,hest, fisk);
const
person : array [1..5] of tperson = (nor, eng, dan, sve, tys);
farve : array [1..5] of tfarve= (rod, hvid, gul, blaa, gron);
cigaret : array [1..5] of tcigaret = (roth, dunh,marl,pall,phil);
drik : array [1..5] of tdrik= (the, maelk, vand,ol, kaffe);
dyr : array [1..5] of tdyr = (kat, fugl, hund,hest, fisk);
function pos(item : variant; var arr) : integer;
var i : integer;
begin
result := 0;
for i := 1 to 5 do
if tarr(arr)[i] = integer(item) then
begin
result := i;
exit;
end;
write('Ikke fundet');
writeln;
halt;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
repeat
//1. Nordmanden bor i det første hus
if (pos(nor, person) = 1) and
//2. Englænderen bor i det røde hus
(pos(eng, person ) = pos(rod, farve)) and
//3. Det grønne hus ligger til venstre for det hvide hus
(pos(gron, farve) < pos(hvid, farve)) and
//4. Danskeren drikker the
(pos(the, drik) = pos(dan, person)) and
//5. Ham som ryger Rothmans bor ved siden af ham som har katte
(abs(pos(roth, cigaret)-pos(kat, dyr)) = 1) and
//6. Ham som bor i det gule hus ryger Dunhill
(pos(gul, farve) = pos(dunh, cigaret)) and
//7. Tyskeren ryger Marlboro
(pos(tys, person) = pos(marl, cigaret)) and
//8. Ham som bor i huset i midten drikker mælk
(pos(maelk, drik) = 3) and
//9. Ham som ryger Rothmans har en nabo, der drikker vand
(abs(pos(roth, cigaret) - pos(vand, drik)) = 1) and
//10. Ham som ryger PallMall holder fugle
(pos(pall, cigaret) = pos(fugl, dyr)) and
//11. Svenskeren opdrætter hunde
(pos(sve, person) = pos(hund, dyr)) and
//12. Normanden bor ved siden af det blå hus
(abs(pos(nor, person)-pos(blaa, farve)) = 1) and
//13. Ham som har heste bor ved siden af det gule hus
(abs(pos(hest, dyr)-pos(gul,farve)) =1) and
//14. Ham som ryger Philip Morris drikker øl
(pos(phil, cigaret) = pos(ol, drik)) and
//15. I det grønne hus drikkes der kaffe}
(pos(gron, farve) = pos(kaffe, drik)) then
exit
else
nextp;
until false;
end;
proceduren NextP danner en ny permutation, og er lidt kryptisk.
Du kan få hele programmet hvis mailer mig direkte.
jeg får en løsning der ser således ud:
1 2 3 4 5
nor dan eng tys sve
gul blå rød gro hvi
dun rot pal mar phil
van the mæl kaf øl
kat hest fugl fisk hund
Jeg har ikke tjekket om der er flere løsninger
--
Thomas Riedel, LogiHouse
"Frank Ronnie Hansen" <fever@hansen.mail.dk> skrev i en meddelelse
news:3b86b227$0$255$edfadb0f@dspool01.news.tele.dk...
> Hej gruppe
>
> Jeg er ikke den store programmør, men jeg sidder nu og da og hygger
> mig med at løse gåder ved hjælp af Pascal 7.0.
>
> Jeg læste for nylig nedenstående gåde, og jeg har da også løst den ved
> hjælp af papir og blyant, (og ikke mindst vidskelæder).
>
> Men det er ikke lykkedes mig at løse den med Pascal 7.0 - er der nogen
> her i gruppen som kan fortælle mig hvorledes det kan gøres?
>
> Her er gåden:
>
> 5 mænd bor i 5 forskellige huse i 5 forskellige farver, de ryger 5
> forskellige cigaretmærker og drikker 5 forskellige drikke. De holder 5
> forskellige slags husdyr.
>
> 1. Nordmanden bor i det første hus
> 2. Englænderen bor i det røde hus
> 3. Det grønne hus ligger til venstre for det hvide hus
> 4. Danskeren drikker the
> 5. Ham som ryger Rothmans bor ved siden af ham som har katte
>
> 6. Ham som bor i det gule hus ryger Dunhill
> 7. Tyskeren ryger Marlboro
> 8. Ham som bor i huset i midten drikker mælk
> 9. Ham som ryger Rothmans har en nabo, der drikker vand
> 10. Ham som ryger PallMall holder fugle
>
> 11. Svenskeren opdrætter hunde
> 12. Normanden bor ved siden af det blå hus
> 13. Ham som har heste bor ved siden af det gule hus
> 14. Ham som ryger Philip Morris drikker øl
> 15. I det grønne hus drikkes der kaffe
>
> Hvilken landsmand har en fisk?
>
> -Venlig hilsen
> Frank
>
>
| |
Uffe Kousgaard (25-08-2001)
| Kommentar Fra : Uffe Kousgaard |
Dato : 25-08-01 10:41 |
|
Hej
Hvad er regnetiden på dit program ?
Den kan under alle omstændigheder forbedres ved at du foretager de enkelte
validitetscheck på et så tidligt tidspunkt som muligtm dvs ikke nødvendigvis
inderst i permutationsløkken, men undervejs.
Hilsen
Uffe
"Thomas Riedel" <thr@image.danmark> wrote in message
news:LiKh7.12822$3q.452527@news010.worldonline.dk...
> Hej Frank
>
> Ja det var ikke helt enkelt, men her er hovedprogrammet:
>
> type
>
> tperson = (nor, eng, dan, sve, tys);
> tfarve = (rod, hvid, gul, blaa, gron);
> tcigaret = (roth, dunh,marl,pall,phil);
> tdrik= (the, vand, maelk,ol, kaffe);
> tdyr = (kat, fugl, hund,hest, fisk);
>
> const
> person : array [1..5] of tperson = (nor, eng, dan, sve, tys);
> farve : array [1..5] of tfarve= (rod, hvid, gul, blaa, gron);
> cigaret : array [1..5] of tcigaret = (roth, dunh,marl,pall,phil);
> drik : array [1..5] of tdrik= (the, maelk, vand,ol, kaffe);
> dyr : array [1..5] of tdyr = (kat, fugl, hund,hest, fisk);
>
> function pos(item : variant; var arr) : integer;
> var i : integer;
> begin
> result := 0;
> for i := 1 to 5 do
> if tarr(arr)[i] = integer(item) then
> begin
> result := i;
> exit;
> end;
> write('Ikke fundet');
> writeln;
> halt;
> end;
>
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> repeat
> //1. Nordmanden bor i det første hus
> if (pos(nor, person) = 1) and
> //2. Englænderen bor i det røde hus
> (pos(eng, person ) = pos(rod, farve)) and
> //3. Det grønne hus ligger til venstre for det hvide hus
> (pos(gron, farve) < pos(hvid, farve)) and
> //4. Danskeren drikker the
> (pos(the, drik) = pos(dan, person)) and
> //5. Ham som ryger Rothmans bor ved siden af ham som har katte
> (abs(pos(roth, cigaret)-pos(kat, dyr)) = 1) and
> //6. Ham som bor i det gule hus ryger Dunhill
> (pos(gul, farve) = pos(dunh, cigaret)) and
> //7. Tyskeren ryger Marlboro
> (pos(tys, person) = pos(marl, cigaret)) and
> //8. Ham som bor i huset i midten drikker mælk
> (pos(maelk, drik) = 3) and
> //9. Ham som ryger Rothmans har en nabo, der drikker vand
> (abs(pos(roth, cigaret) - pos(vand, drik)) = 1) and
> //10. Ham som ryger PallMall holder fugle
> (pos(pall, cigaret) = pos(fugl, dyr)) and
> //11. Svenskeren opdrætter hunde
> (pos(sve, person) = pos(hund, dyr)) and
> //12. Normanden bor ved siden af det blå hus
> (abs(pos(nor, person)-pos(blaa, farve)) = 1) and
> //13. Ham som har heste bor ved siden af det gule hus
> (abs(pos(hest, dyr)-pos(gul,farve)) =1) and
> //14. Ham som ryger Philip Morris drikker øl
> (pos(phil, cigaret) = pos(ol, drik)) and
> //15. I det grønne hus drikkes der kaffe}
> (pos(gron, farve) = pos(kaffe, drik)) then
> exit
> else
> nextp;
> until false;
> end;
>
>
>
> proceduren NextP danner en ny permutation, og er lidt kryptisk.
> Du kan få hele programmet hvis mailer mig direkte.
>
> jeg får en løsning der ser således ud:
>
>
> 1 2 3 4 5
> nor dan eng tys sve
> gul blå rød gro hvi
> dun rot pal mar phil
> van the mæl kaf øl
> kat hest fugl fisk hund
>
> Jeg har ikke tjekket om der er flere løsninger
>
> --
> Thomas Riedel, LogiHouse
> "Frank Ronnie Hansen" <fever@hansen.mail.dk> skrev i en meddelelse
> news:3b86b227$0$255$edfadb0f@dspool01.news.tele.dk...
> > Hej gruppe
> >
> > Jeg er ikke den store programmør, men jeg sidder nu og da og hygger
> > mig med at løse gåder ved hjælp af Pascal 7.0.
> >
> > Jeg læste for nylig nedenstående gåde, og jeg har da også løst den ved
> > hjælp af papir og blyant, (og ikke mindst vidskelæder).
> >
> > Men det er ikke lykkedes mig at løse den med Pascal 7.0 - er der nogen
> > her i gruppen som kan fortælle mig hvorledes det kan gøres?
> >
> > Her er gåden:
> >
> > 5 mænd bor i 5 forskellige huse i 5 forskellige farver, de ryger 5
> > forskellige cigaretmærker og drikker 5 forskellige drikke. De holder 5
> > forskellige slags husdyr.
> >
> > 1. Nordmanden bor i det første hus
> > 2. Englænderen bor i det røde hus
> > 3. Det grønne hus ligger til venstre for det hvide hus
> > 4. Danskeren drikker the
> > 5. Ham som ryger Rothmans bor ved siden af ham som har katte
> >
> > 6. Ham som bor i det gule hus ryger Dunhill
> > 7. Tyskeren ryger Marlboro
> > 8. Ham som bor i huset i midten drikker mælk
> > 9. Ham som ryger Rothmans har en nabo, der drikker vand
> > 10. Ham som ryger PallMall holder fugle
> >
> > 11. Svenskeren opdrætter hunde
> > 12. Normanden bor ved siden af det blå hus
> > 13. Ham som har heste bor ved siden af det gule hus
> > 14. Ham som ryger Philip Morris drikker øl
> > 15. I det grønne hus drikkes der kaffe
> >
> > Hvilken landsmand har en fisk?
> >
> > -Venlig hilsen
> > Frank
> >
> >
>
>
| |
Thomas Riedel (25-08-2001)
| Kommentar Fra : Thomas Riedel |
Dato : 25-08-01 17:03 |
|
Hej Uffe
Du har helt ret, der kan laves talrige optimeringer.
Det tog også flere minutter for den at finde den rigtige løsning
Hilsen
Thomas Riedel
LogiHouse
--
Thomas Riedel, LogiHouse
"Uffe Kousgaard" <uffe@routeware.dk> skrev i en meddelelse
news:3b877295$0$339$edfadb0f@dspool01.news.tele.dk...
> Hej
>
> Hvad er regnetiden på dit program ?
> Den kan under alle omstændigheder forbedres ved at du foretager de enkelte
> validitetscheck på et så tidligt tidspunkt som muligtm dvs ikke
nødvendigvis
> inderst i permutationsløkken, men undervejs.
>
> Hilsen
> Uffe
>
> "Thomas Riedel" <thr@image.danmark> wrote in message
> news:LiKh7.12822$3q.452527@news010.worldonline.dk...
> > Hej Frank
> >
> > Ja det var ikke helt enkelt, men her er hovedprogrammet:
> >
> > type
> >
> > tperson = (nor, eng, dan, sve, tys);
> > tfarve = (rod, hvid, gul, blaa, gron);
> > tcigaret = (roth, dunh,marl,pall,phil);
> > tdrik= (the, vand, maelk,ol, kaffe);
> > tdyr = (kat, fugl, hund,hest, fisk);
> >
> > const
> > person : array [1..5] of tperson = (nor, eng, dan, sve, tys);
> > farve : array [1..5] of tfarve= (rod, hvid, gul, blaa, gron);
> > cigaret : array [1..5] of tcigaret = (roth, dunh,marl,pall,phil);
> > drik : array [1..5] of tdrik= (the, maelk, vand,ol, kaffe);
> > dyr : array [1..5] of tdyr = (kat, fugl, hund,hest, fisk);
> >
> > function pos(item : variant; var arr) : integer;
> > var i : integer;
> > begin
> > result := 0;
> > for i := 1 to 5 do
> > if tarr(arr)[i] = integer(item) then
> > begin
> > result := i;
> > exit;
> > end;
> > write('Ikke fundet');
> > writeln;
> > halt;
> > end;
> >
> > procedure TForm1.FormCreate(Sender: TObject);
> > begin
> > repeat
> > file://1. Nordmanden bor i det første hus
> > if (pos(nor, person) = 1) and
> > file://2. Englænderen bor i det røde hus
> > (pos(eng, person ) = pos(rod, farve)) and
> > file://3. Det grønne hus ligger til venstre for det hvide hus
> > (pos(gron, farve) < pos(hvid, farve)) and
> > file://4. Danskeren drikker the
> > (pos(the, drik) = pos(dan, person)) and
> > file://5. Ham som ryger Rothmans bor ved siden af ham som har katte
> > (abs(pos(roth, cigaret)-pos(kat, dyr)) = 1) and
> > file://6. Ham som bor i det gule hus ryger Dunhill
> > (pos(gul, farve) = pos(dunh, cigaret)) and
> > file://7. Tyskeren ryger Marlboro
> > (pos(tys, person) = pos(marl, cigaret)) and
> > file://8. Ham som bor i huset i midten drikker mælk
> > (pos(maelk, drik) = 3) and
> > file://9. Ham som ryger Rothmans har en nabo, der drikker vand
> > (abs(pos(roth, cigaret) - pos(vand, drik)) = 1) and
> > file://10. Ham som ryger PallMall holder fugle
> > (pos(pall, cigaret) = pos(fugl, dyr)) and
> > file://11. Svenskeren opdrætter hunde
> > (pos(sve, person) = pos(hund, dyr)) and
> > file://12. Normanden bor ved siden af det blå hus
> > (abs(pos(nor, person)-pos(blaa, farve)) = 1) and
> > file://13. Ham som har heste bor ved siden af det gule hus
> > (abs(pos(hest, dyr)-pos(gul,farve)) =1) and
> > file://14. Ham som ryger Philip Morris drikker øl
> > (pos(phil, cigaret) = pos(ol, drik)) and
> > file://15. I det grønne hus drikkes der kaffe}
> > (pos(gron, farve) = pos(kaffe, drik)) then
> > exit
> > else
> > nextp;
> > until false;
> > end;
> >
> >
> >
> > proceduren NextP danner en ny permutation, og er lidt kryptisk.
> > Du kan få hele programmet hvis mailer mig direkte.
> >
> > jeg får en løsning der ser således ud:
> >
> >
> > 1 2 3 4 5
> > nor dan eng tys sve
> > gul blå rød gro hvi
> > dun rot pal mar phil
> > van the mæl kaf øl
> > kat hest fugl fisk hund
> >
> > Jeg har ikke tjekket om der er flere løsninger
> >
> > --
> > Thomas Riedel, LogiHouse
> > "Frank Ronnie Hansen" <fever@hansen.mail.dk> skrev i en meddelelse
> > news:3b86b227$0$255$edfadb0f@dspool01.news.tele.dk...
> > > Hej gruppe
> > >
> > > Jeg er ikke den store programmør, men jeg sidder nu og da og hygger
> > > mig med at løse gåder ved hjælp af Pascal 7.0.
> > >
> > > Jeg læste for nylig nedenstående gåde, og jeg har da også løst den ved
> > > hjælp af papir og blyant, (og ikke mindst vidskelæder).
> > >
> > > Men det er ikke lykkedes mig at løse den med Pascal 7.0 - er der nogen
> > > her i gruppen som kan fortælle mig hvorledes det kan gøres?
> > >
> > > Her er gåden:
> > >
> > > 5 mænd bor i 5 forskellige huse i 5 forskellige farver, de ryger 5
> > > forskellige cigaretmærker og drikker 5 forskellige drikke. De holder 5
> > > forskellige slags husdyr.
> > >
> > > 1. Nordmanden bor i det første hus
> > > 2. Englænderen bor i det røde hus
> > > 3. Det grønne hus ligger til venstre for det hvide hus
> > > 4. Danskeren drikker the
> > > 5. Ham som ryger Rothmans bor ved siden af ham som har katte
> > >
> > > 6. Ham som bor i det gule hus ryger Dunhill
> > > 7. Tyskeren ryger Marlboro
> > > 8. Ham som bor i huset i midten drikker mælk
> > > 9. Ham som ryger Rothmans har en nabo, der drikker vand
> > > 10. Ham som ryger PallMall holder fugle
> > >
> > > 11. Svenskeren opdrætter hunde
> > > 12. Normanden bor ved siden af det blå hus
> > > 13. Ham som har heste bor ved siden af det gule hus
> > > 14. Ham som ryger Philip Morris drikker øl
> > > 15. I det grønne hus drikkes der kaffe
> > >
> > > Hvilken landsmand har en fisk?
> > >
> > > -Venlig hilsen
> > > Frank
> > >
> > >
> >
> >
>
>
| |
Frank Ronnie Hansen (27-08-2001)
| Kommentar Fra : Frank Ronnie Hansen |
Dato : 27-08-01 14:36 |
|
Thomas Riedel skrev
[snip]
>Ja det var ikke helt enkelt, men her er hovedprogrammet:
Mange tak for hjælpen - det var en gåde som overskrider mine
beskedne programmeringsevner.
Venlig hilsen
Frank
| |
|
|