Лодка+Весло=Катер
Привет всем.
Обнаружил у себя в модульных тестах одно забавное применение генератора перестановок — structure::t_transposition_iterator. Решаем задачу из далекого детства 🙂
TTracer tracer(pLog,"test_003"); typedef t_transposition_iterator<int> t_iterator; t_iterator it; for(int i=0;i<=9;++i) it.add(i); // 0 1 2 3 4 5 6 7 8 9 // л о д к а в е с т р // l o d k a v e s t r // лодка+весло=катер int num=0; do { ++num; const int lodka=10000*it[0]+ 1000*it[1]+ 100*it[2]+ 10*it[3]+ it[4]; const int veslo=10000*it[5]+ 1000*it[6]+ 100*it[7]+ 10*it[0]+ it[1]; const int kater=10000*it[3]+ 1000*it[4]+ 100*it[8]+ 10*it[6]+ it[9]; if(lodka+veslo==kater) { tracer<<"pass:"<<num<<send; tracer<<lodka<<"+"<<veslo<<"="<<kater<<send; break; } if((num%100000)==0) tracer<<"pass:"<<num<<send; } while(++it);
Вывод
[test_003] pass:100000
[test_003] pass:200000
[test_003] pass:300000
[test_003] pass:400000
[test_003] pass:428354
[test_003] 12693+80712=93405