Portál AbcLinuxu, 13. května 2025 19:04

Dotaz: Algebrogram

19.12.2012 11:09 kohlad
Algebrogram
Přečteno: 2193×
Odpovědět | Admin
Potřeboval bych pomoci s naprogramováním programu na řešení algebrogramu: ABACDE - FGHI * JCD = ABACD

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.12.2012 12:45 NN
Rozbalit Rozbalit vše Re: Algebrogram
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkus to znova. Zacal bych tim ze uvedu jazyk a nastinim kam az jsem se dostal..
Řešení 1× (kohlad (tazatel))
19.12.2012 12:52 Marek
Rozbalit Rozbalit vše Re: Algebrogram
Odpovědět | | Sbalit | Link | Blokovat | Admin
a:7, b:8, c:3, d:5, e:0, f:1, g:6, h:2, i:9, j:4,

Ma to aj druhe riesenie, ktore nevyhovuje matematickym zvyklostiam JCD nebude trojciferne.

a:1, b:9, c:6, d:8, e:4, f:2, g:5, h:3, i:7, j:0,

// C++
#include <iostream>
using namespace std;

void solve_recursive(int level, int values[10], bool set[10]) {

	if (level == 10) {
		// test podmienky
		if (values[0]*100000 + values[1]*10000 + values[0]*1000 + values[2]*100 + values[3]*10 + values[4] - (values[5]*1000 + values[6]*100 + values[7]*10 + values[8]) * (100 * values[9] + 10 *values[2] + values[3]) == values[0]*10000 + values[1]*1000 + values[0]*100 + values[2]*10 + values[3]) {

			for (int i = 0; i < 10; i++)
				cout << (char) ('a' + i) << ":" << values[i] << ", ";
			cout << endl;
		}	
	} else {
		for (int i = 0; i < 10; i++)
			if (!set[i]) {
				set[i] = true;
				values[level] = i;
				solve_recursive(level + 1, values, set);
				set[i] = false;
			}
	}
}



int main() {

	int values[10];
	
        // mozno pouzit aj cyklus ;)
        bool set[10]={false, false, false, false, false, false, false, false, false, false};
        solve_recursive(0, values, set);
	return 0;
}
19.12.2012 13:35 kohlad
Rozbalit Rozbalit vše Re: Algebrogram
díky
19.12.2012 13:37 ::: | skóre: 14 | blog: e_lama
Rozbalit Rozbalit vše Re: Algebrogram
Odpovědět | | Sbalit | Link | Blokovat | Admin
jaky jsou tam presne pravidla? muze tam byt 0? a muzou mit 2 pismena stejny cislo?

jedno reseni je treba: ;-)

000000 - 0000 * 000 = 00000
19.12.2012 13:38 kohlad
Rozbalit Rozbalit vše Re: Algebrogram
musí tam být obsažena všechny číslice 0-9 a čílo nesmí začínat na 0
19.12.2012 13:57 ::: | skóre: 14 | blog: e_lama
Rozbalit Rozbalit vše Re: Algebrogram
aha, v tom pripade se nabizi vyuziti std::next_permutation:
#include <iostream>
#include <algorithm>

int main() {
	int ints[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
	int &A = ints[0];
	int &B = ints[1];
	int &C = ints[2];
	int &D = ints[3];
	int &E = ints[4];
	int &F = ints[5];
	int &G = ints[6];
	int &H = ints[7];
	int &I = ints[8];
	int &J = ints[9];
	do {
		if ((100000*A+10000*B+1000*A+100*C+10*D+E) -
		    (1000*F+100*G+10*H+I) *
		    (100*J+10*C+D) ==
		    (10000*A+1000*B+100*A+10*C+D))
		{
			std::cout << A << B << A << C << D << E << " - "
			          << F << G << H << I << " * "
			          << J << C << D << " = "
			          << A << B << A << C << D << "\n";
		}
	} while (std::next_permutation (ints, ints+10));
}

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.