Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Vietnam pähkinä.

18 views
Skip to first unread message

Matti Lehtiniemi

unread,
May 21, 2015, 7:46:36 AM5/21/15
to
http://www.tekniikkatalous.fi/innovaatiot/tiede/tama+8vuotiaiden+matikan+tehtava+hammentaa+maailmalla+ei+ratkaisua+taloustieteen+tohtorilta+osaisitko+sina/a1063986

Aloin ratkomaan tuota tarkoituksena koodaustaitojen ylläpitö.
Allaolevaan koodinpätkään meni 30 minuuttia koodaukseen .Joku bugi sinne
jäi.Löytääkö kukaan ?
(4 bugia löysin ja korjasin mutta vielä on joku jäljellä)
Toi antaa useamman kuin yhden vastauksen.Heti vastaus 1 2 3 4 5 6 7 8 9 pitäisi
olla oikea ???
(pitää lähteä kävelylle nauttimaan auringosta, en jaksa juuri nyt etsiä)

#include "stdafx.h"
#include <iostream>
using namespace std;

void vietnam(int kohta)
{
static int l[10];
if (kohta > 9)
{
if ((l[1]+13*l[2]/l[3]+l[4]+12*l[5]-l[6]-11+l[7]*l[8]/l[9]-10) == 66)
cout <<"loytyi" << endl;
return;
}
for (int i=kohta;i <= 9;i++)
{
l[kohta] = i;
vietnam(kohta+1);
}
}

int _tmain(int argc, _TCHAR* argv[])
{
cout << "haa" <<endl;
vietnam(1);
char c;
cin >> c;
return 0;
}


Matti Lehtiniemi

unread,
May 21, 2015, 3:20:06 PM5/21/15
to
Jaa, kaksi bugia löytyi.Tuli tossa kävelyreissun päälle parin kaljan juonti ja
ratkaisu hidastui.Löysin bugit tosin kävelyreissun aikana.

16 oikeaa vastausta.
Eka niistä 5 9 3 6 2 1 7 8 4
En jaksa tarkistaa onko tuo oikein.Joku innokas voisi tarkistaa mun puolesta.
Mielenkiintoista katso Guardian -lehdestä viikon kuluttua onko ne löytäneet
kaikki ratkaisut.

// namtest.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
using namespace std;

bool p[10];

void vietnam(int kohta)
{
static int l[10];
if (kohta > 9)
{
// kokonaislukujakolaskuilla ei saa olla jakojäännöstä.
if ((13*l[2]%l[3]) != 0)
return;
if ((l[7]*l[8]%l[9]) != 0)
return;

if ((l[1]+13*l[2]/l[3]+l[4]+12*l[5]-l[6]-11+l[7]*l[8]/l[9]-10) == 66)
{
cout <<"loytyi" << endl;
for (int i =1;i <= 9;i++)
cout << l[i] << " ";
cout << endl;
}
return;
}
for (int i=1;i <= 9;i++)
{
if (p[i] == false)
{
p[i] = true;
l[kohta] = i;
vietnam(kohta+1);
p[i] = false;
}
}
}

int _tmain(int argc, _TCHAR* argv[])
{
cout << "haa" <<endl;
for (int i =0 ;i < 10;i++)
p[i] = false;
0 new messages